@sehgaltech/psui 1.0.2 → 1.0.4

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 CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  A scalable and customizable UI library built with Tailwind CSS v4, TypeScript, and React.
4
4
 
5
+ 📚 **[Documentation](https://psui.sehgaltech.com/)** | 📝 **[Changelog](https://psui.sehgaltech.com/docs/changelog)**
6
+
5
7
  ## Features
6
8
 
7
9
  - 🎨 **Tailwind CSS v4** - Modern CSS-first configuration with `@theme` blocks
@@ -33,7 +35,7 @@ pnpm add @sehgaltech/psui
33
35
  @import '@sehgaltech/psui/styles';
34
36
  ```
35
37
 
36
- Or in your JavaScript/TypeScript entry file:
38
+ OR in your JavaScript/TypeScript entry file:
37
39
 
38
40
  ```tsx
39
41
  // In your main entry file (e.g., main.tsx or index.tsx)
@@ -65,7 +67,7 @@ import { Button } from '@sehgaltech/psui';
65
67
  function App() {
66
68
  return (
67
69
  <div>
68
- <Button variant="primary" size="md">
70
+ <Button variant="solid" type="primary" size="md">
69
71
  Click me
70
72
  </Button>
71
73
  </div>
@@ -75,28 +77,38 @@ function App() {
75
77
 
76
78
  ### Button Component
77
79
 
78
- The Button component supports multiple variants, sizes, and states:
80
+ The Button component supports multiple types, variants, sizes, and states:
79
81
 
80
82
  ```tsx
81
83
  import { Button } from '@sehgaltech/psui';
82
84
 
83
- // Variants
84
- <Button variant="primary">Primary</Button>
85
- <Button variant="secondary">Secondary</Button>
86
- <Button variant="success">Success</Button>
87
- <Button variant="danger">Danger</Button>
88
- <Button variant="warning">Warning</Button>
89
- <Button variant="ghost">Ghost</Button>
85
+ // Types (colors)
86
+ <Button type="primary">Primary</Button>
87
+ <Button type="secondary">Secondary</Button>
88
+ <Button type="success">Success</Button>
89
+ <Button type="danger">Danger</Button>
90
+ <Button type="warning">Warning</Button>
91
+ <Button type="info">Info</Button>
92
+ <Button type="ghost">Ghost</Button>
93
+
94
+ // Variants (styles)
95
+ <Button variant="solid">Solid (default)</Button>
96
+ <Button variant="outlined">Outlined</Button>
97
+ <Button variant="dashed">Dashed</Button>
98
+ <Button variant="text">Text</Button>
99
+ <Button variant="link">Link</Button>
90
100
 
91
101
  // Sizes
92
102
  <Button size="sm">Small</Button>
93
103
  <Button size="md">Medium</Button>
94
104
  <Button size="lg">Large</Button>
95
105
 
96
- // States
106
+ // States & Features
97
107
  <Button loading>Loading...</Button>
98
108
  <Button disabled>Disabled</Button>
99
109
  <Button fullWidth>Full Width</Button>
110
+ <Button success>Success State</Button>
111
+ <Button startIcon={<YourIcon />}>With Icon</Button>
100
112
  ```
101
113
 
102
114
  ## Themes
package/dist/index.cjs CHANGED
@@ -377,7 +377,7 @@ var Icon = React__default.default.forwardRef(
377
377
  size: sizeValue,
378
378
  color: customColor,
379
379
  style: { color: customColor, ...props.style },
380
- className: `${colorClass} ${className || ""}`,
380
+ className: `transition-all duration-200 ${colorClass} ${className || ""}`,
381
381
  ...props
382
382
  }
383
383
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Icon/Icon.tsx"],"names":["twMerge","clsx","jsx","forwardRef","useState","useEffect","jsxs","useRef","useId","React","LucideIcons"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AACxC,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC/B;ACuHA,IAAM,WAAA,GAAc;AAAA,EAClB,EAAA,EAAI,qBAAA;AAAA,EACJ,EAAA,EAAI,qBAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,cAAA,GAAoE;AAAA,EACxE,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,kDAAA;AAAA,IACT,SAAA,EAAW,sDAAA;AAAA,IACX,OAAA,EAAS,kDAAA;AAAA,IACT,MAAA,EAAQ,8CAAA;AAAA,IACR,OAAA,EAAS,kDAAA;AAAA,IACT,IAAA,EAAM,4CAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,uEAAA;AAAA,IACT,SAAA,EAAW,6EAAA;AAAA,IACX,OAAA,EAAS,uEAAA;AAAA,IACT,MAAA,EAAQ,iEAAA;AAAA,IACR,OAAA,EAAS,uEAAA;AAAA,IACT,IAAA,EAAM,8DAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,qFAAA;AAAA,IACT,SAAA,EAAW,2FAAA;AAAA,IACX,OAAA,EAAS,qFAAA;AAAA,IACT,MAAA,EAAQ,+EAAA;AAAA,IACR,OAAA,EAAS,qFAAA;AAAA,IACT,IAAA,EAAM,4EAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,iDAAA;AAAA,IACT,SAAA,EAAW,qDAAA;AAAA,IACX,OAAA,EAAS,iDAAA;AAAA,IACT,MAAA,EAAQ,6CAAA;AAAA,IACR,OAAA,EAAS,iDAAA;AAAA,IACT,IAAA,EAAM,2CAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,6DAAA;AAAA,IACT,SAAA,EAAW,iEAAA;AAAA,IACX,OAAA,EAAS,6DAAA;AAAA,IACT,MAAA,EAAQ,yDAAA;AAAA,IACR,OAAA,EAAS,6DAAA;AAAA,IACT,IAAA,EAAM,uDAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,OAAA,EAAwB,IAAA,KAAqB;AACrE,EAAA,OAAO,eAAe,OAAO,CAAA,CAAE,IAAI,CAAA,IAAK,eAAe,KAAA,CAAM,OAAA;AAC/D,CAAA;AAEA,IAAM,cAAc,sBAClBC,cAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAU,SAAA;AAAA,IACV,KAAA,EAAM,4BAAA;AAAA,IACN,IAAA,EAAK,MAAA;AAAA,IACL,OAAA,EAAQ,WAAA;AAAA,IACR,aAAA,EAAY,MAAA;AAAA,IAEZ,QAAA,kBAAAA,cAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAO,cAAA;AAAA,QACP,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,WAAA,EAAY,KAAA;AAAA,QACZ,CAAA,EAAE;AAAA;AAAA;AACJ;AACF,CAAA;AAWK,IAAM,MAAA,GAASC,gBAAA;AAAA,EACpB,CACE;AAAA,IACE,OAAA,GAAU,OAAA;AAAA,IACV,IAAA,GAAO,SAAA;AAAA,IACP,IAAA,GAAO,IAAA;AAAA,IACP,SAAA,GAAY,KAAA;AAAA,IACZ,OAAA,GAAU,KAAA;AAAA,IACV,WAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,WAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA,GAAkB,IAAA;AAAA,IAClB,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIC,eAAS,KAAK,CAAA;AAE9D,IAAAC,eAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACvB,QAAA;AAAA,MACF;AAEA,MAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,UAAA,CAAW,MAAM;AACpC,QAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,MAC3B,GAAG,eAAe,CAAA;AAElB,MAAA,OAAO,MAAM,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA;AAAA,IACxC,CAAA,EAAG,CAAC,OAAA,EAAS,OAAA,EAAS,eAAe,CAAC,CAAA;AAEtC,IAAA,MAAM,WAAA,GAAc,2MAAA;AACpB,IAAA,MAAM,YAAA,GAAe,gBAAA,CAAiB,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,MAAM,SAAA,GAAY,YAAY,IAAI,CAAA;AAClC,IAAA,MAAM,UAAA,GAAa,YAAY,QAAA,GAAW,EAAA;AAC1C,IAAA,MAAM,YAAA,GAAe,UAAU,aAAA,GAAgB,EAAA;AAE/C,IAAA,MAAM,eAAA,GAAkB,EAAA;AAAA,MACtB,WAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAmC,EAAE,GAAG,KAAA,CAAM,KAAA,EAAM;AAC1D,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,WAAA,CAAY,eAAA,GAAkB,KAAA;AAC9B,QAAA,WAAA,CAAY,WAAA,GAAc,KAAA;AAAA,MAC5B,CAAA,MAAA,IAAW,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,QAAA,EAAU;AACzD,QAAA,WAAA,CAAY,WAAA,GAAc,KAAA;AAC1B,QAAA,WAAA,CAAY,KAAA,GAAQ,KAAA;AAAA,MACtB,CAAA,MAAA,IAAW,OAAA,KAAY,MAAA,IAAU,OAAA,KAAY,MAAA,EAAQ;AACnD,QAAA,WAAA,CAAY,KAAA,GAAQ,KAAA;AAAA,MACtB;AAAA,IACF;AAEA,IAAA,MAAM,UAAU,OAAA,GACZ,WAAA,IAAe,QAAA,GACf,gBAAA,GACE,eAAe,QAAA,GACf,QAAA;AAEN,IAAA,uBACEC,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,eAAA;AAAA,QACX,KAAA,EAAO,WAAA;AAAA,QACP,UAAU,QAAA,IAAY,OAAA;AAAA,QACtB,aAAW,OAAA,IAAW,MAAA;AAAA,QACrB,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,oBACCA,eAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,4BAAA;AAAA,cACV,KAAA,EAAM,4BAAA;AAAA,cACN,IAAA,EAAK,MAAA;AAAA,cACL,OAAA,EAAQ,WAAA;AAAA,cACR,aAAA,EAAY,MAAA;AAAA,cAEZ,QAAA,EAAA;AAAA,gCAAAJ,cAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,YAAA;AAAA,oBACV,EAAA,EAAG,IAAA;AAAA,oBACH,EAAA,EAAG,IAAA;AAAA,oBACH,CAAA,EAAE,IAAA;AAAA,oBACF,MAAA,EAAO,cAAA;AAAA,oBACP,WAAA,EAAY;AAAA;AAAA,iBACd;AAAA,gCACAA,cAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,YAAA;AAAA,oBACV,IAAA,EAAK,cAAA;AAAA,oBACL,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AAAA,WACF;AAAA,UAED,CAAC,OAAA,IAAW,gBAAA,oBAAoBA,cAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EAAwB,QAAA,EAAA,WAAA,oBAAeA,cAAA,CAAC,WAAA,EAAA,EAAY,CAAA,EAAG,CAAA;AAAA,UACvG,CAAC,WAAW,CAAC,gBAAA,IAAoB,6BAAaA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,UAChG,OAAA;AAAA,UACA,CAAC,WAAW,CAAC,gBAAA,IAAoB,2BAAWA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,OAAA,EAAQ;AAAA;AAAA;AAAA,KAC/F;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AAEd,IAAM,WAAA,GAAcC,gBAAA;AAAA,EACzB,CACE;AAAA,IACE,KAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA,GAAY,cAAA;AAAA,IACZ,KAAA,GAAQ,OAAA;AAAA,IACR,OAAA,GAAU,OAAA;AAAA,IACV,IAAA,GAAO,SAAA;AAAA,IACP,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,OAAA,GAAU,KAAA;AAAA,IACV,SAAA;AAAA,IACA,aAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,eAAS,KAAK,CAAA;AACtC,IAAA,MAAM,OAAA,GAAUG,aAAuB,IAAI,CAAA;AAC3C,IAAA,MAAM,SAASC,WAAA,EAAM;AAErB,IAAAH,eAAA,CAAU,MAAM;AACd,MAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAyB;AAC7C,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,YAAY,CAAA;AAEjD,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,YAAY,CAAA;AAAA,MACtD,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAA0B;AAClD,MAAA,IAAI,KAAK,QAAA,EAAU;AACjB,QAAA;AAAA,MACF;AAEA,MAAA,IAAA,CAAK,OAAA,IAAU;AACf,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,GAAS,CAAA;AAEhC,IAAA,uBACEC,eAAA,CAAC,SAAI,GAAA,EAAK,OAAA,EAAS,WAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA,EAChE,QAAA,EAAA;AAAA,sBAAAJ,cAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,OAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,OAAA,KAAY,UAAU,YAAY,CAAA;AAAA,UACjE,GAAG,WAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBAEAA,cAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA,EAAU,QAAA,IAAY,OAAA,IAAW,CAAC,QAAA;AAAA,UAClC,YAAA,EAAY,SAAA;AAAA,UACZ,eAAA,EAAc,MAAA;AAAA,UACd,eAAA,EAAe,IAAA;AAAA,UACf,eAAA,EAAe,MAAA;AAAA,UACf,SAAS,MAAM,OAAA,CAAQ,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAAA,UACtC,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,OAAA,KAAY,UAAU,UAAU,CAAA;AAAA,UAErE,QAAA,kBAAAA,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,4BAAA;AAAA,cACN,OAAA,EAAQ,WAAA;AAAA,cACR,IAAA,EAAK,cAAA;AAAA,cACL,SAAA,EAAW,EAAA,CAAG,2CAAA,EAA6C,IAAA,IAAQ,YAAY,CAAA;AAAA,cAC/E,aAAA,EAAY,MAAA;AAAA,cAEZ,QAAA,kBAAAA,cAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,QAAA,EAAS,SAAA;AAAA,kBACT,CAAA,EAAE,qIAAA;AAAA,kBACF,QAAA,EAAS;AAAA;AAAA;AACX;AAAA;AACF;AAAA,OACF;AAAA,MAEC,QAAQ,QAAA,oBACPA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,MAAA;AAAA,UACJ,IAAA,EAAK,MAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,YACT,kHAAA;AAAA,YACA,KAAA,KAAU,UAAU,SAAA,GAAY,QAAA;AAAA,YAChC;AAAA,WACF;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAChBA,cAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,UAAA;AAAA,cACL,UAAU,IAAA,CAAK,QAAA;AAAA,cACf,OAAA,EAAS,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,cACpC,SAAA,EAAW,EAAA;AAAA,gBACT,iEAAA;AAAA,gBACA,IAAA,CAAK,QAAA,GACD,+BAAA,GACA,IAAA,CAAK,cACH,8BAAA,GACA;AAAA,eACR;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA,aAAA;AAAA,YAdD,IAAA,CAAK,GAAA,IAAO,CAAA,WAAA,EAAc,KAAK,CAAA;AAAA,WAgBvC;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;ACza1B,IAAM,OAAA,GAAoC;AAAA,EACtC,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,KAAA,EAAO;AACX,CAAA;AAEA,IAAM,QAAA,GAAsC;AAAA,EACxC,OAAA,EAAS,cAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAA;AAAA,EACT,IAAA,EAAM,WAAA;AAAA,EACN,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,cAAA;AAAA,EACT,KAAA,EAAO,YAAA;AAAA,EACP,OAAA,EAAS;AACb,CAAA;AAEO,IAAM,OAAOO,sBAAA,CAAM,UAAA;AAAA,EACtB,CAAC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,GAAO,IAAA,EAAM,KAAA,GAAQ,SAAA,EAAW,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxF,IAAA,MAAM,SAAA,GAAY,QAAQ,IAAI,CAAA;AAE9B,IAAA,MAAM,eAAe,KAAA,IAAS,MAAA,CAAO,KAAK,QAAQ,CAAA,CAAE,SAAS,KAAe,CAAA;AAC5E,IAAA,MAAM,UAAA,GAAa,YAAA,GAAe,QAAA,CAAS,KAAkB,CAAA,GAAI,EAAA;AACjE,IAAA,MAAM,WAAA,GAAc,CAAC,YAAA,GAAe,KAAA,GAAQ,MAAA;AAG5C,IAAA,MAAM,aAAA,GAAgB,YAAA,KAAiB,IAAA,GAAQC,sBAAA,CAAY,IAAI,CAAA,GAA0B,IAAA,CAAA;AAEzF,IAAA,IAAI,CAAC,aAAA,EAAe;AAChB,MAAA,OAAA,CAAQ,KAAK,CAAA,sEAAA,CAAwE,CAAA;AACrF,MAAA,OAAO,IAAA;AAAA,IACX;AAKA,IAAA,uBACIR,cAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACG,GAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,MAAA,EAAQ,SAAA;AAAA,QAER,IAAA,EAAM,SAAA;AAAA,QAEN,KAAA,EAAO,WAAA;AAAA,QACP,OAAO,EAAE,KAAA,EAAO,WAAA,EAAa,GAAG,MAAM,KAAA,EAAM;AAAA,QAC5C,SAAA,EAAW,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,aAAa,EAAE,CAAA,CAAA;AAAA,QAC1C,GAAG;AAAA;AAAA,KACR;AAAA,EAER;AACJ;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"index.cjs","sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps } from '../../types';\nimport { cn } from '../../utils/cn';\n\nexport type ButtonVariant = 'solid' | 'outlined' | 'dashed' | 'text' | 'link';\nexport type ButtonType = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';\n\nexport interface ButtonProps extends Omit<ComponentProps<'button'>, 'type'> {\n /**\n * The visual style variant of the button\n * @default 'solid'\n */\n variant?: ButtonVariant;\n /**\n * The type theme of the button\n * @default 'primary'\n */\n type?: ButtonType;\n /**\n * Custom hex, rgb, or css color string that overrides the type colors\n */\n color?: string;\n /**\n * The size of the button\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Whether the button should take full width of its container\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Whether the button is in a loading state\n * @default false\n */\n loading?: boolean;\n /**\n * Optional text shown while loading.\n */\n loadingText?: React.ReactNode;\n /**\n * Whether the button should show temporary success feedback.\n */\n success?: boolean;\n /**\n * Optional text shown in success state.\n */\n successText?: React.ReactNode;\n /**\n * Optional icon shown in success state.\n */\n successIcon?: React.ReactNode;\n /**\n * Duration in milliseconds before success state resets.\n * @default 1500\n */\n successDuration?: number;\n /**\n * Element to place before the children.\n */\n startIcon?: React.ReactNode;\n /**\n * Element to place after the children.\n */\n endIcon?: React.ReactNode;\n}\n\nexport interface SplitButtonItem {\n /**\n * Stable key for rendering list items\n */\n key?: string;\n /**\n * Rendered menu item label\n */\n label: React.ReactNode;\n /**\n * Item click handler\n */\n onClick?: () => void;\n /**\n * Whether the item is disabled\n */\n disabled?: boolean;\n /**\n * Marks a destructive menu item with error color\n */\n destructive?: boolean;\n}\n\nexport interface SplitButtonProps extends Omit<ButtonProps, 'children' | 'onClick' | 'fullWidth'> {\n /**\n * Main action label/content\n */\n label: React.ReactNode;\n /**\n * Main action handler\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * Dropdown menu items\n */\n items: SplitButtonItem[];\n /**\n * Accessible label for toggle button\n * @default 'More actions'\n */\n menuLabel?: string;\n /**\n * Menu alignment relative to trigger\n * @default 'right'\n */\n align?: 'left' | 'right';\n /**\n * Optional wrapper classes for split group container\n */\n className?: string;\n /**\n * Optional menu panel classes\n */\n menuClassName?: string;\n}\n\nconst sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n};\n\nconst variantClasses: Record<ButtonVariant, Record<ButtonType, string>> = {\n solid: {\n primary: 'bg-primary text-primary-content hover:opacity-90',\n secondary: 'bg-secondary text-secondary-content hover:opacity-90',\n success: 'bg-success text-success-content hover:opacity-90',\n danger: 'bg-error text-error-content hover:opacity-90',\n warning: 'bg-warning text-warning-content hover:opacity-90',\n info: 'bg-info text-info-content hover:opacity-90',\n ghost: 'bg-base-200 text-base-content hover:bg-base-300',\n },\n outlined: {\n primary: 'border border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n dashed: {\n primary: 'border border-dashed border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-dashed border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-dashed border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-dashed border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-dashed border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-dashed border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-dashed border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n text: {\n primary: 'text-primary bg-transparent hover:bg-primary/10',\n secondary: 'text-secondary bg-transparent hover:bg-secondary/10',\n success: 'text-success bg-transparent hover:bg-success/10',\n danger: 'text-error bg-transparent hover:bg-error/10',\n warning: 'text-warning bg-transparent hover:bg-warning/10',\n info: 'text-info bg-transparent hover:bg-info/10',\n ghost: 'text-base-content bg-transparent hover:bg-base-200/10',\n },\n link: {\n primary: 'text-primary underline bg-transparent hover:text-primary/80',\n secondary: 'text-secondary underline bg-transparent hover:text-secondary/80',\n success: 'text-success underline bg-transparent hover:text-success/80',\n danger: 'text-error underline bg-transparent hover:text-error/80',\n warning: 'text-warning underline bg-transparent hover:text-warning/80',\n info: 'text-info underline bg-transparent hover:text-info/80',\n ghost: 'text-base-content underline bg-transparent hover:text-base-content/80',\n },\n};\n\nconst getButtonClasses = (variant: ButtonVariant, type: ButtonType) => {\n return variantClasses[variant][type] || variantClasses.solid.primary;\n};\n\nconst SuccessIcon = () => (\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2.5\"\n d=\"M5 12.5l4.5 4.5L19 7.5\"\n />\n </svg>\n);\n\n/**\n * Primary UI component for user interaction\n *\n * Supports all standard HTML button attributes including `style` and `className`.\n * - Use `type` and `variant` for standard theming.\n * - Use `className` with Tailwind classes for one-off overrides (merged intelligently).\n * - Use `style` for inline dynamic styles.\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n type = 'primary',\n size = 'md',\n fullWidth = false,\n loading = false,\n loadingText,\n success = false,\n successText,\n successIcon,\n successDuration = 1500,\n disabled = false,\n startIcon,\n endIcon,\n color,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const [isShowingSuccess, setIsShowingSuccess] = useState(false);\n\n useEffect(() => {\n if (!success || loading) {\n return;\n }\n\n setIsShowingSuccess(true);\n const timer = window.setTimeout(() => {\n setIsShowingSuccess(false);\n }, successDuration);\n\n return () => window.clearTimeout(timer);\n }, [success, loading, successDuration]);\n\n const baseClasses = 'inline-flex items-center justify-center font-medium rounded-[var(--radius-selector)] transition-all duration-200 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-95 gap-2';\n const variantClass = getButtonClasses(variant, type);\n const sizeClass = sizeClasses[size];\n const widthClass = fullWidth ? 'w-full' : '';\n const loadingClass = loading ? 'cursor-wait' : '';\n\n const combinedClasses = cn(\n baseClasses,\n variantClass,\n sizeClass,\n widthClass,\n loadingClass,\n className\n );\n\n const customStyle: React.CSSProperties = { ...props.style };\n if (color) {\n if (variant === 'solid') {\n customStyle.backgroundColor = color;\n customStyle.borderColor = color;\n } else if (variant === 'outlined' || variant === 'dashed') {\n customStyle.borderColor = color;\n customStyle.color = color;\n } else if (variant === 'text' || variant === 'link') {\n customStyle.color = color;\n }\n }\n\n const content = loading\n ? loadingText ?? children\n : isShowingSuccess\n ? successText ?? children\n : children;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={combinedClasses}\n style={customStyle}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin -ml-1 h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\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\"\n />\n </svg>\n )}\n {!loading && isShowingSuccess && <span className=\"inline-flex shrink-0\">{successIcon ?? <SuccessIcon />}</span>}\n {!loading && !isShowingSuccess && startIcon && <span className=\"inline-flex shrink-0\">{startIcon}</span>}\n {content}\n {!loading && !isShowingSuccess && endIcon && <span className=\"inline-flex shrink-0\">{endIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport const SplitButton = forwardRef<HTMLButtonElement, SplitButtonProps>(\n (\n {\n label,\n onClick,\n items,\n menuLabel = 'More actions',\n align = 'right',\n variant = 'solid',\n type = 'primary',\n size = 'md',\n color,\n disabled = false,\n loading = false,\n className,\n menuClassName,\n ...buttonProps\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const menuId = useId();\n\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, []);\n\n const handleItemSelect = (item: SplitButtonItem) => {\n if (item.disabled) {\n return;\n }\n\n item.onClick?.();\n setOpen(false);\n };\n\n const hasItems = items.length > 0;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', className)}>\n <Button\n ref={ref}\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled}\n loading={loading}\n onClick={onClick}\n className={cn('rounded-r-none', variant !== 'link' && 'border-r-0')}\n {...buttonProps}\n >\n {label}\n </Button>\n\n <Button\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled || loading || !hasItems}\n aria-label={menuLabel}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={menuId}\n onClick={() => setOpen((prev) => !prev)}\n className={cn('rounded-l-none px-3', variant !== 'link' && 'border-l')}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={cn('h-4 w-4 transition-transform duration-150', open && 'rotate-180')}\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n\n {open && hasItems && (\n <div\n id={menuId}\n role=\"menu\"\n className={cn(\n 'absolute z-20 top-full mt-2 min-w-44 overflow-hidden rounded-lg border border-base-300 bg-base-100 p-1 shadow-lg',\n align === 'right' ? 'right-0' : 'left-0',\n menuClassName\n )}\n >\n {items.map((item, index) => (\n <button\n key={item.key ?? `split-item-${index}`}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n onClick={() => handleItemSelect(item)}\n className={cn(\n 'w-full rounded-md px-3 py-2 text-left text-sm transition-colors',\n item.disabled\n ? 'cursor-not-allowed opacity-50'\n : item.destructive\n ? 'text-error hover:bg-error/10'\n : 'text-base-content hover:bg-base-200'\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nSplitButton.displayName = 'SplitButton';\n","import * as LucideIcons from 'lucide-react';\nimport React from 'react';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport type IconColor =\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'current';\n\nexport type IconName = keyof typeof LucideIcons;\n\nexport interface IconProps extends Omit<React.SVGProps<SVGSVGElement>, 'color'> {\n /** The icon component to render (e.g., from Phosphor, Heroicons, Radix, etc.) */\n icon?: React.ElementType;\n /** The name of the Lucide icon to render (backward compatibility) */\n name?: IconName;\n /** Size of the icon */\n size?: IconSize;\n /** Color of the icon. Can be a theme color (e.g., 'primary') or any valid CSS color string. */\n color?: IconColor | string;\n}\n\nconst sizeMap: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n '2xl': 64,\n};\n\nconst colorMap: Record<IconColor, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n accent: 'text-accent',\n neutral: 'text-neutral',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n error: 'text-error',\n current: 'text-current',\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ icon: ExplicitIcon, name, size = 'md', color = 'current', className, ...props }, ref) => {\n const sizeValue = sizeMap[size];\n\n const isThemeColor = color && Object.keys(colorMap).includes(color as string);\n const colorClass = isThemeColor ? colorMap[color as IconColor] : '';\n const customColor = !isThemeColor ? color : undefined;\n\n // Resolve the component to render: explicitly passed icon takes precedence over named lucide icon.\n const IconComponent = ExplicitIcon || (name ? (LucideIcons[name] as React.ElementType) : null);\n\n if (!IconComponent) {\n console.warn(`Icon: No icon provided. Pass either 'icon' component or 'name' string.`);\n return null;\n }\n\n // We pass standard SVG width/height and color styles. \n // This makes it compatible with almost ALL external icon libraries out of the box\n // because components generally forward standard SVG props to their root <svg>.\n return (\n <IconComponent\n ref={ref}\n width={sizeValue}\n height={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `size` prop\n size={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `color` prop\n color={customColor}\n style={{ color: customColor, ...props.style }}\n className={`${colorClass} ${className || ''}`}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = 'Icon';\n"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Icon/Icon.tsx"],"names":["twMerge","clsx","jsx","forwardRef","useState","useEffect","jsxs","useRef","useId","React","LucideIcons"],"mappings":"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","file":"index.cjs","sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps } from '../../types';\nimport { cn } from '../../utils/cn';\n\nexport type ButtonVariant = 'solid' | 'outlined' | 'dashed' | 'text' | 'link';\nexport type ButtonType = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';\n\nexport interface ButtonProps extends Omit<ComponentProps<'button'>, 'type'> {\n /**\n * The visual style variant of the button\n * @default 'solid'\n */\n variant?: ButtonVariant;\n /**\n * The type theme of the button\n * @default 'primary'\n */\n type?: ButtonType;\n /**\n * Custom hex, rgb, or css color string that overrides the type colors\n */\n color?: string;\n /**\n * The size of the button\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Whether the button should take full width of its container\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Whether the button is in a loading state\n * @default false\n */\n loading?: boolean;\n /**\n * Optional text shown while loading.\n */\n loadingText?: React.ReactNode;\n /**\n * Whether the button should show temporary success feedback.\n */\n success?: boolean;\n /**\n * Optional text shown in success state.\n */\n successText?: React.ReactNode;\n /**\n * Optional icon shown in success state.\n */\n successIcon?: React.ReactNode;\n /**\n * Duration in milliseconds before success state resets.\n * @default 1500\n */\n successDuration?: number;\n /**\n * Element to place before the children.\n */\n startIcon?: React.ReactNode;\n /**\n * Element to place after the children.\n */\n endIcon?: React.ReactNode;\n}\n\nexport interface SplitButtonItem {\n /**\n * Stable key for rendering list items\n */\n key?: string;\n /**\n * Rendered menu item label\n */\n label: React.ReactNode;\n /**\n * Item click handler\n */\n onClick?: () => void;\n /**\n * Whether the item is disabled\n */\n disabled?: boolean;\n /**\n * Marks a destructive menu item with error color\n */\n destructive?: boolean;\n}\n\nexport interface SplitButtonProps extends Omit<ButtonProps, 'children' | 'onClick' | 'fullWidth'> {\n /**\n * Main action label/content\n */\n label: React.ReactNode;\n /**\n * Main action handler\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * Dropdown menu items\n */\n items: SplitButtonItem[];\n /**\n * Accessible label for toggle button\n * @default 'More actions'\n */\n menuLabel?: string;\n /**\n * Menu alignment relative to trigger\n * @default 'right'\n */\n align?: 'left' | 'right';\n /**\n * Optional wrapper classes for split group container\n */\n className?: string;\n /**\n * Optional menu panel classes\n */\n menuClassName?: string;\n}\n\nconst sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n};\n\nconst variantClasses: Record<ButtonVariant, Record<ButtonType, string>> = {\n solid: {\n primary: 'bg-primary text-primary-content hover:opacity-90',\n secondary: 'bg-secondary text-secondary-content hover:opacity-90',\n success: 'bg-success text-success-content hover:opacity-90',\n danger: 'bg-error text-error-content hover:opacity-90',\n warning: 'bg-warning text-warning-content hover:opacity-90',\n info: 'bg-info text-info-content hover:opacity-90',\n ghost: 'bg-base-200 text-base-content hover:bg-base-300',\n },\n outlined: {\n primary: 'border border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n dashed: {\n primary: 'border border-dashed border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-dashed border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-dashed border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-dashed border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-dashed border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-dashed border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-dashed border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n text: {\n primary: 'text-primary bg-transparent hover:bg-primary/10',\n secondary: 'text-secondary bg-transparent hover:bg-secondary/10',\n success: 'text-success bg-transparent hover:bg-success/10',\n danger: 'text-error bg-transparent hover:bg-error/10',\n warning: 'text-warning bg-transparent hover:bg-warning/10',\n info: 'text-info bg-transparent hover:bg-info/10',\n ghost: 'text-base-content bg-transparent hover:bg-base-200/10',\n },\n link: {\n primary: 'text-primary underline bg-transparent hover:text-primary/80',\n secondary: 'text-secondary underline bg-transparent hover:text-secondary/80',\n success: 'text-success underline bg-transparent hover:text-success/80',\n danger: 'text-error underline bg-transparent hover:text-error/80',\n warning: 'text-warning underline bg-transparent hover:text-warning/80',\n info: 'text-info underline bg-transparent hover:text-info/80',\n ghost: 'text-base-content underline bg-transparent hover:text-base-content/80',\n },\n};\n\nconst getButtonClasses = (variant: ButtonVariant, type: ButtonType) => {\n return variantClasses[variant][type] || variantClasses.solid.primary;\n};\n\nconst SuccessIcon = () => (\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2.5\"\n d=\"M5 12.5l4.5 4.5L19 7.5\"\n />\n </svg>\n);\n\n/**\n * Primary UI component for user interaction\n *\n * Supports all standard HTML button attributes including `style` and `className`.\n * - Use `type` and `variant` for standard theming.\n * - Use `className` with Tailwind classes for one-off overrides (merged intelligently).\n * - Use `style` for inline dynamic styles.\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n type = 'primary',\n size = 'md',\n fullWidth = false,\n loading = false,\n loadingText,\n success = false,\n successText,\n successIcon,\n successDuration = 1500,\n disabled = false,\n startIcon,\n endIcon,\n color,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const [isShowingSuccess, setIsShowingSuccess] = useState(false);\n\n useEffect(() => {\n if (!success || loading) {\n return;\n }\n\n setIsShowingSuccess(true);\n const timer = window.setTimeout(() => {\n setIsShowingSuccess(false);\n }, successDuration);\n\n return () => window.clearTimeout(timer);\n }, [success, loading, successDuration]);\n\n const baseClasses = 'inline-flex items-center justify-center font-medium rounded-[var(--radius-selector)] transition-all duration-200 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-95 gap-2';\n const variantClass = getButtonClasses(variant, type);\n const sizeClass = sizeClasses[size];\n const widthClass = fullWidth ? 'w-full' : '';\n const loadingClass = loading ? 'cursor-wait' : '';\n\n const combinedClasses = cn(\n baseClasses,\n variantClass,\n sizeClass,\n widthClass,\n loadingClass,\n className\n );\n\n const customStyle: React.CSSProperties = { ...props.style };\n if (color) {\n if (variant === 'solid') {\n customStyle.backgroundColor = color;\n customStyle.borderColor = color;\n } else if (variant === 'outlined' || variant === 'dashed') {\n customStyle.borderColor = color;\n customStyle.color = color;\n } else if (variant === 'text' || variant === 'link') {\n customStyle.color = color;\n }\n }\n\n const content = loading\n ? loadingText ?? children\n : isShowingSuccess\n ? successText ?? children\n : children;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={combinedClasses}\n style={customStyle}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin -ml-1 h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\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\"\n />\n </svg>\n )}\n {!loading && isShowingSuccess && <span className=\"inline-flex shrink-0\">{successIcon ?? <SuccessIcon />}</span>}\n {!loading && !isShowingSuccess && startIcon && <span className=\"inline-flex shrink-0\">{startIcon}</span>}\n {content}\n {!loading && !isShowingSuccess && endIcon && <span className=\"inline-flex shrink-0\">{endIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport const SplitButton = forwardRef<HTMLButtonElement, SplitButtonProps>(\n (\n {\n label,\n onClick,\n items,\n menuLabel = 'More actions',\n align = 'right',\n variant = 'solid',\n type = 'primary',\n size = 'md',\n color,\n disabled = false,\n loading = false,\n className,\n menuClassName,\n ...buttonProps\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const menuId = useId();\n\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, []);\n\n const handleItemSelect = (item: SplitButtonItem) => {\n if (item.disabled) {\n return;\n }\n\n item.onClick?.();\n setOpen(false);\n };\n\n const hasItems = items.length > 0;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', className)}>\n <Button\n ref={ref}\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled}\n loading={loading}\n onClick={onClick}\n className={cn('rounded-r-none', variant !== 'link' && 'border-r-0')}\n {...buttonProps}\n >\n {label}\n </Button>\n\n <Button\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled || loading || !hasItems}\n aria-label={menuLabel}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={menuId}\n onClick={() => setOpen((prev) => !prev)}\n className={cn('rounded-l-none px-3', variant !== 'link' && 'border-l')}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={cn('h-4 w-4 transition-transform duration-150', open && 'rotate-180')}\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n\n {open && hasItems && (\n <div\n id={menuId}\n role=\"menu\"\n className={cn(\n 'absolute z-20 top-full mt-2 min-w-44 overflow-hidden rounded-lg border border-base-300 bg-base-100 p-1 shadow-lg',\n align === 'right' ? 'right-0' : 'left-0',\n menuClassName\n )}\n >\n {items.map((item, index) => (\n <button\n key={item.key ?? `split-item-${index}`}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n onClick={() => handleItemSelect(item)}\n className={cn(\n 'w-full rounded-md px-3 py-2 text-left text-sm transition-colors',\n item.disabled\n ? 'cursor-not-allowed opacity-50'\n : item.destructive\n ? 'text-error hover:bg-error/10'\n : 'text-base-content hover:bg-base-200'\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nSplitButton.displayName = 'SplitButton';\n","import * as LucideIcons from 'lucide-react';\nimport React from 'react';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport type IconColor =\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'current';\n\nexport type IconName = keyof typeof LucideIcons;\n\nexport interface IconProps extends Omit<React.SVGProps<SVGSVGElement>, 'color'> {\n /** The icon component to render (e.g., from Phosphor, Heroicons, Radix, etc.) */\n icon?: React.ElementType;\n /** The name of the Lucide icon to render (backward compatibility) */\n name?: IconName;\n /** Size of the icon */\n size?: IconSize;\n /** Color of the icon. Can be a theme color (e.g., 'primary') or any valid CSS color string. */\n color?: IconColor | string;\n}\n\nconst sizeMap: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n '2xl': 64,\n};\n\nconst colorMap: Record<IconColor, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n accent: 'text-accent',\n neutral: 'text-neutral',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n error: 'text-error',\n current: 'text-current',\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ icon: ExplicitIcon, name, size = 'md', color = 'current', className, ...props }, ref) => {\n const sizeValue = sizeMap[size];\n\n const isThemeColor = color && Object.keys(colorMap).includes(color as string);\n const colorClass = isThemeColor ? colorMap[color as IconColor] : '';\n const customColor = !isThemeColor ? color : undefined;\n\n // Resolve the component to render: explicitly passed icon takes precedence over named lucide icon.\n const IconComponent = ExplicitIcon || (name ? (LucideIcons[name] as React.ElementType) : null);\n\n if (!IconComponent) {\n console.warn(`Icon: No icon provided. Pass either 'icon' component or 'name' string.`);\n return null;\n }\n\n // We pass standard SVG width/height and color styles. \n // This makes it compatible with almost ALL external icon libraries out of the box\n // because components generally forward standard SVG props to their root <svg>.\n return (\n <IconComponent\n ref={ref}\n width={sizeValue}\n height={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `size` prop\n size={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `color` prop\n color={customColor}\n style={{ color: customColor, ...props.style }}\n className={`transition-all duration-200 ${colorClass} ${className || ''}`}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = 'Icon';\n"]}
package/dist/index.js CHANGED
@@ -352,7 +352,7 @@ var Icon = React.forwardRef(
352
352
  size: sizeValue,
353
353
  color: customColor,
354
354
  style: { color: customColor, ...props.style },
355
- className: `${colorClass} ${className || ""}`,
355
+ className: `transition-all duration-200 ${colorClass} ${className || ""}`,
356
356
  ...props
357
357
  }
358
358
  );
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Icon/Icon.tsx"],"names":["jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps } from '../../types';\nimport { cn } from '../../utils/cn';\n\nexport type ButtonVariant = 'solid' | 'outlined' | 'dashed' | 'text' | 'link';\nexport type ButtonType = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';\n\nexport interface ButtonProps extends Omit<ComponentProps<'button'>, 'type'> {\n /**\n * The visual style variant of the button\n * @default 'solid'\n */\n variant?: ButtonVariant;\n /**\n * The type theme of the button\n * @default 'primary'\n */\n type?: ButtonType;\n /**\n * Custom hex, rgb, or css color string that overrides the type colors\n */\n color?: string;\n /**\n * The size of the button\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Whether the button should take full width of its container\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Whether the button is in a loading state\n * @default false\n */\n loading?: boolean;\n /**\n * Optional text shown while loading.\n */\n loadingText?: React.ReactNode;\n /**\n * Whether the button should show temporary success feedback.\n */\n success?: boolean;\n /**\n * Optional text shown in success state.\n */\n successText?: React.ReactNode;\n /**\n * Optional icon shown in success state.\n */\n successIcon?: React.ReactNode;\n /**\n * Duration in milliseconds before success state resets.\n * @default 1500\n */\n successDuration?: number;\n /**\n * Element to place before the children.\n */\n startIcon?: React.ReactNode;\n /**\n * Element to place after the children.\n */\n endIcon?: React.ReactNode;\n}\n\nexport interface SplitButtonItem {\n /**\n * Stable key for rendering list items\n */\n key?: string;\n /**\n * Rendered menu item label\n */\n label: React.ReactNode;\n /**\n * Item click handler\n */\n onClick?: () => void;\n /**\n * Whether the item is disabled\n */\n disabled?: boolean;\n /**\n * Marks a destructive menu item with error color\n */\n destructive?: boolean;\n}\n\nexport interface SplitButtonProps extends Omit<ButtonProps, 'children' | 'onClick' | 'fullWidth'> {\n /**\n * Main action label/content\n */\n label: React.ReactNode;\n /**\n * Main action handler\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * Dropdown menu items\n */\n items: SplitButtonItem[];\n /**\n * Accessible label for toggle button\n * @default 'More actions'\n */\n menuLabel?: string;\n /**\n * Menu alignment relative to trigger\n * @default 'right'\n */\n align?: 'left' | 'right';\n /**\n * Optional wrapper classes for split group container\n */\n className?: string;\n /**\n * Optional menu panel classes\n */\n menuClassName?: string;\n}\n\nconst sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n};\n\nconst variantClasses: Record<ButtonVariant, Record<ButtonType, string>> = {\n solid: {\n primary: 'bg-primary text-primary-content hover:opacity-90',\n secondary: 'bg-secondary text-secondary-content hover:opacity-90',\n success: 'bg-success text-success-content hover:opacity-90',\n danger: 'bg-error text-error-content hover:opacity-90',\n warning: 'bg-warning text-warning-content hover:opacity-90',\n info: 'bg-info text-info-content hover:opacity-90',\n ghost: 'bg-base-200 text-base-content hover:bg-base-300',\n },\n outlined: {\n primary: 'border border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n dashed: {\n primary: 'border border-dashed border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-dashed border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-dashed border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-dashed border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-dashed border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-dashed border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-dashed border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n text: {\n primary: 'text-primary bg-transparent hover:bg-primary/10',\n secondary: 'text-secondary bg-transparent hover:bg-secondary/10',\n success: 'text-success bg-transparent hover:bg-success/10',\n danger: 'text-error bg-transparent hover:bg-error/10',\n warning: 'text-warning bg-transparent hover:bg-warning/10',\n info: 'text-info bg-transparent hover:bg-info/10',\n ghost: 'text-base-content bg-transparent hover:bg-base-200/10',\n },\n link: {\n primary: 'text-primary underline bg-transparent hover:text-primary/80',\n secondary: 'text-secondary underline bg-transparent hover:text-secondary/80',\n success: 'text-success underline bg-transparent hover:text-success/80',\n danger: 'text-error underline bg-transparent hover:text-error/80',\n warning: 'text-warning underline bg-transparent hover:text-warning/80',\n info: 'text-info underline bg-transparent hover:text-info/80',\n ghost: 'text-base-content underline bg-transparent hover:text-base-content/80',\n },\n};\n\nconst getButtonClasses = (variant: ButtonVariant, type: ButtonType) => {\n return variantClasses[variant][type] || variantClasses.solid.primary;\n};\n\nconst SuccessIcon = () => (\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2.5\"\n d=\"M5 12.5l4.5 4.5L19 7.5\"\n />\n </svg>\n);\n\n/**\n * Primary UI component for user interaction\n *\n * Supports all standard HTML button attributes including `style` and `className`.\n * - Use `type` and `variant` for standard theming.\n * - Use `className` with Tailwind classes for one-off overrides (merged intelligently).\n * - Use `style` for inline dynamic styles.\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n type = 'primary',\n size = 'md',\n fullWidth = false,\n loading = false,\n loadingText,\n success = false,\n successText,\n successIcon,\n successDuration = 1500,\n disabled = false,\n startIcon,\n endIcon,\n color,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const [isShowingSuccess, setIsShowingSuccess] = useState(false);\n\n useEffect(() => {\n if (!success || loading) {\n return;\n }\n\n setIsShowingSuccess(true);\n const timer = window.setTimeout(() => {\n setIsShowingSuccess(false);\n }, successDuration);\n\n return () => window.clearTimeout(timer);\n }, [success, loading, successDuration]);\n\n const baseClasses = 'inline-flex items-center justify-center font-medium rounded-[var(--radius-selector)] transition-all duration-200 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-95 gap-2';\n const variantClass = getButtonClasses(variant, type);\n const sizeClass = sizeClasses[size];\n const widthClass = fullWidth ? 'w-full' : '';\n const loadingClass = loading ? 'cursor-wait' : '';\n\n const combinedClasses = cn(\n baseClasses,\n variantClass,\n sizeClass,\n widthClass,\n loadingClass,\n className\n );\n\n const customStyle: React.CSSProperties = { ...props.style };\n if (color) {\n if (variant === 'solid') {\n customStyle.backgroundColor = color;\n customStyle.borderColor = color;\n } else if (variant === 'outlined' || variant === 'dashed') {\n customStyle.borderColor = color;\n customStyle.color = color;\n } else if (variant === 'text' || variant === 'link') {\n customStyle.color = color;\n }\n }\n\n const content = loading\n ? loadingText ?? children\n : isShowingSuccess\n ? successText ?? children\n : children;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={combinedClasses}\n style={customStyle}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin -ml-1 h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\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\"\n />\n </svg>\n )}\n {!loading && isShowingSuccess && <span className=\"inline-flex shrink-0\">{successIcon ?? <SuccessIcon />}</span>}\n {!loading && !isShowingSuccess && startIcon && <span className=\"inline-flex shrink-0\">{startIcon}</span>}\n {content}\n {!loading && !isShowingSuccess && endIcon && <span className=\"inline-flex shrink-0\">{endIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport const SplitButton = forwardRef<HTMLButtonElement, SplitButtonProps>(\n (\n {\n label,\n onClick,\n items,\n menuLabel = 'More actions',\n align = 'right',\n variant = 'solid',\n type = 'primary',\n size = 'md',\n color,\n disabled = false,\n loading = false,\n className,\n menuClassName,\n ...buttonProps\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const menuId = useId();\n\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, []);\n\n const handleItemSelect = (item: SplitButtonItem) => {\n if (item.disabled) {\n return;\n }\n\n item.onClick?.();\n setOpen(false);\n };\n\n const hasItems = items.length > 0;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', className)}>\n <Button\n ref={ref}\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled}\n loading={loading}\n onClick={onClick}\n className={cn('rounded-r-none', variant !== 'link' && 'border-r-0')}\n {...buttonProps}\n >\n {label}\n </Button>\n\n <Button\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled || loading || !hasItems}\n aria-label={menuLabel}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={menuId}\n onClick={() => setOpen((prev) => !prev)}\n className={cn('rounded-l-none px-3', variant !== 'link' && 'border-l')}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={cn('h-4 w-4 transition-transform duration-150', open && 'rotate-180')}\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n\n {open && hasItems && (\n <div\n id={menuId}\n role=\"menu\"\n className={cn(\n 'absolute z-20 top-full mt-2 min-w-44 overflow-hidden rounded-lg border border-base-300 bg-base-100 p-1 shadow-lg',\n align === 'right' ? 'right-0' : 'left-0',\n menuClassName\n )}\n >\n {items.map((item, index) => (\n <button\n key={item.key ?? `split-item-${index}`}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n onClick={() => handleItemSelect(item)}\n className={cn(\n 'w-full rounded-md px-3 py-2 text-left text-sm transition-colors',\n item.disabled\n ? 'cursor-not-allowed opacity-50'\n : item.destructive\n ? 'text-error hover:bg-error/10'\n : 'text-base-content hover:bg-base-200'\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nSplitButton.displayName = 'SplitButton';\n","import * as LucideIcons from 'lucide-react';\nimport React from 'react';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport type IconColor =\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'current';\n\nexport type IconName = keyof typeof LucideIcons;\n\nexport interface IconProps extends Omit<React.SVGProps<SVGSVGElement>, 'color'> {\n /** The icon component to render (e.g., from Phosphor, Heroicons, Radix, etc.) */\n icon?: React.ElementType;\n /** The name of the Lucide icon to render (backward compatibility) */\n name?: IconName;\n /** Size of the icon */\n size?: IconSize;\n /** Color of the icon. Can be a theme color (e.g., 'primary') or any valid CSS color string. */\n color?: IconColor | string;\n}\n\nconst sizeMap: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n '2xl': 64,\n};\n\nconst colorMap: Record<IconColor, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n accent: 'text-accent',\n neutral: 'text-neutral',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n error: 'text-error',\n current: 'text-current',\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ icon: ExplicitIcon, name, size = 'md', color = 'current', className, ...props }, ref) => {\n const sizeValue = sizeMap[size];\n\n const isThemeColor = color && Object.keys(colorMap).includes(color as string);\n const colorClass = isThemeColor ? colorMap[color as IconColor] : '';\n const customColor = !isThemeColor ? color : undefined;\n\n // Resolve the component to render: explicitly passed icon takes precedence over named lucide icon.\n const IconComponent = ExplicitIcon || (name ? (LucideIcons[name] as React.ElementType) : null);\n\n if (!IconComponent) {\n console.warn(`Icon: No icon provided. Pass either 'icon' component or 'name' string.`);\n return null;\n }\n\n // We pass standard SVG width/height and color styles. \n // This makes it compatible with almost ALL external icon libraries out of the box\n // because components generally forward standard SVG props to their root <svg>.\n return (\n <IconComponent\n ref={ref}\n width={sizeValue}\n height={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `size` prop\n size={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `color` prop\n color={customColor}\n style={{ color: customColor, ...props.style }}\n className={`${colorClass} ${className || ''}`}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = 'Icon';\n"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Icon/Icon.tsx"],"names":["jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps } from '../../types';\nimport { cn } from '../../utils/cn';\n\nexport type ButtonVariant = 'solid' | 'outlined' | 'dashed' | 'text' | 'link';\nexport type ButtonType = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'ghost';\n\nexport interface ButtonProps extends Omit<ComponentProps<'button'>, 'type'> {\n /**\n * The visual style variant of the button\n * @default 'solid'\n */\n variant?: ButtonVariant;\n /**\n * The type theme of the button\n * @default 'primary'\n */\n type?: ButtonType;\n /**\n * Custom hex, rgb, or css color string that overrides the type colors\n */\n color?: string;\n /**\n * The size of the button\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Whether the button should take full width of its container\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Whether the button is in a loading state\n * @default false\n */\n loading?: boolean;\n /**\n * Optional text shown while loading.\n */\n loadingText?: React.ReactNode;\n /**\n * Whether the button should show temporary success feedback.\n */\n success?: boolean;\n /**\n * Optional text shown in success state.\n */\n successText?: React.ReactNode;\n /**\n * Optional icon shown in success state.\n */\n successIcon?: React.ReactNode;\n /**\n * Duration in milliseconds before success state resets.\n * @default 1500\n */\n successDuration?: number;\n /**\n * Element to place before the children.\n */\n startIcon?: React.ReactNode;\n /**\n * Element to place after the children.\n */\n endIcon?: React.ReactNode;\n}\n\nexport interface SplitButtonItem {\n /**\n * Stable key for rendering list items\n */\n key?: string;\n /**\n * Rendered menu item label\n */\n label: React.ReactNode;\n /**\n * Item click handler\n */\n onClick?: () => void;\n /**\n * Whether the item is disabled\n */\n disabled?: boolean;\n /**\n * Marks a destructive menu item with error color\n */\n destructive?: boolean;\n}\n\nexport interface SplitButtonProps extends Omit<ButtonProps, 'children' | 'onClick' | 'fullWidth'> {\n /**\n * Main action label/content\n */\n label: React.ReactNode;\n /**\n * Main action handler\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * Dropdown menu items\n */\n items: SplitButtonItem[];\n /**\n * Accessible label for toggle button\n * @default 'More actions'\n */\n menuLabel?: string;\n /**\n * Menu alignment relative to trigger\n * @default 'right'\n */\n align?: 'left' | 'right';\n /**\n * Optional wrapper classes for split group container\n */\n className?: string;\n /**\n * Optional menu panel classes\n */\n menuClassName?: string;\n}\n\nconst sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n};\n\nconst variantClasses: Record<ButtonVariant, Record<ButtonType, string>> = {\n solid: {\n primary: 'bg-primary text-primary-content hover:opacity-90',\n secondary: 'bg-secondary text-secondary-content hover:opacity-90',\n success: 'bg-success text-success-content hover:opacity-90',\n danger: 'bg-error text-error-content hover:opacity-90',\n warning: 'bg-warning text-warning-content hover:opacity-90',\n info: 'bg-info text-info-content hover:opacity-90',\n ghost: 'bg-base-200 text-base-content hover:bg-base-300',\n },\n outlined: {\n primary: 'border border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n dashed: {\n primary: 'border border-dashed border-primary text-primary bg-transparent hover:bg-primary/10',\n secondary: 'border border-dashed border-secondary text-secondary bg-transparent hover:bg-secondary/10',\n success: 'border border-dashed border-success text-success bg-transparent hover:bg-success/10',\n danger: 'border border-dashed border-error text-error bg-transparent hover:bg-error/10',\n warning: 'border border-dashed border-warning text-warning bg-transparent hover:bg-warning/10',\n info: 'border border-dashed border-info text-info bg-transparent hover:bg-info/10',\n ghost: 'border border-dashed border-base-200 text-base-content bg-transparent hover:bg-base-200/10',\n },\n text: {\n primary: 'text-primary bg-transparent hover:bg-primary/10',\n secondary: 'text-secondary bg-transparent hover:bg-secondary/10',\n success: 'text-success bg-transparent hover:bg-success/10',\n danger: 'text-error bg-transparent hover:bg-error/10',\n warning: 'text-warning bg-transparent hover:bg-warning/10',\n info: 'text-info bg-transparent hover:bg-info/10',\n ghost: 'text-base-content bg-transparent hover:bg-base-200/10',\n },\n link: {\n primary: 'text-primary underline bg-transparent hover:text-primary/80',\n secondary: 'text-secondary underline bg-transparent hover:text-secondary/80',\n success: 'text-success underline bg-transparent hover:text-success/80',\n danger: 'text-error underline bg-transparent hover:text-error/80',\n warning: 'text-warning underline bg-transparent hover:text-warning/80',\n info: 'text-info underline bg-transparent hover:text-info/80',\n ghost: 'text-base-content underline bg-transparent hover:text-base-content/80',\n },\n};\n\nconst getButtonClasses = (variant: ButtonVariant, type: ButtonType) => {\n return variantClasses[variant][type] || variantClasses.solid.primary;\n};\n\nconst SuccessIcon = () => (\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2.5\"\n d=\"M5 12.5l4.5 4.5L19 7.5\"\n />\n </svg>\n);\n\n/**\n * Primary UI component for user interaction\n *\n * Supports all standard HTML button attributes including `style` and `className`.\n * - Use `type` and `variant` for standard theming.\n * - Use `className` with Tailwind classes for one-off overrides (merged intelligently).\n * - Use `style` for inline dynamic styles.\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n type = 'primary',\n size = 'md',\n fullWidth = false,\n loading = false,\n loadingText,\n success = false,\n successText,\n successIcon,\n successDuration = 1500,\n disabled = false,\n startIcon,\n endIcon,\n color,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const [isShowingSuccess, setIsShowingSuccess] = useState(false);\n\n useEffect(() => {\n if (!success || loading) {\n return;\n }\n\n setIsShowingSuccess(true);\n const timer = window.setTimeout(() => {\n setIsShowingSuccess(false);\n }, successDuration);\n\n return () => window.clearTimeout(timer);\n }, [success, loading, successDuration]);\n\n const baseClasses = 'inline-flex items-center justify-center font-medium rounded-[var(--radius-selector)] transition-all duration-200 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-95 gap-2';\n const variantClass = getButtonClasses(variant, type);\n const sizeClass = sizeClasses[size];\n const widthClass = fullWidth ? 'w-full' : '';\n const loadingClass = loading ? 'cursor-wait' : '';\n\n const combinedClasses = cn(\n baseClasses,\n variantClass,\n sizeClass,\n widthClass,\n loadingClass,\n className\n );\n\n const customStyle: React.CSSProperties = { ...props.style };\n if (color) {\n if (variant === 'solid') {\n customStyle.backgroundColor = color;\n customStyle.borderColor = color;\n } else if (variant === 'outlined' || variant === 'dashed') {\n customStyle.borderColor = color;\n customStyle.color = color;\n } else if (variant === 'text' || variant === 'link') {\n customStyle.color = color;\n }\n }\n\n const content = loading\n ? loadingText ?? children\n : isShowingSuccess\n ? successText ?? children\n : children;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={combinedClasses}\n style={customStyle}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && (\n <svg\n className=\"animate-spin -ml-1 h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\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\"\n />\n </svg>\n )}\n {!loading && isShowingSuccess && <span className=\"inline-flex shrink-0\">{successIcon ?? <SuccessIcon />}</span>}\n {!loading && !isShowingSuccess && startIcon && <span className=\"inline-flex shrink-0\">{startIcon}</span>}\n {content}\n {!loading && !isShowingSuccess && endIcon && <span className=\"inline-flex shrink-0\">{endIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport const SplitButton = forwardRef<HTMLButtonElement, SplitButtonProps>(\n (\n {\n label,\n onClick,\n items,\n menuLabel = 'More actions',\n align = 'right',\n variant = 'solid',\n type = 'primary',\n size = 'md',\n color,\n disabled = false,\n loading = false,\n className,\n menuClassName,\n ...buttonProps\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const menuId = useId();\n\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, []);\n\n const handleItemSelect = (item: SplitButtonItem) => {\n if (item.disabled) {\n return;\n }\n\n item.onClick?.();\n setOpen(false);\n };\n\n const hasItems = items.length > 0;\n\n return (\n <div ref={rootRef} className={cn('relative inline-flex', className)}>\n <Button\n ref={ref}\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled}\n loading={loading}\n onClick={onClick}\n className={cn('rounded-r-none', variant !== 'link' && 'border-r-0')}\n {...buttonProps}\n >\n {label}\n </Button>\n\n <Button\n variant={variant}\n type={type}\n size={size}\n color={color}\n disabled={disabled || loading || !hasItems}\n aria-label={menuLabel}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={menuId}\n onClick={() => setOpen((prev) => !prev)}\n className={cn('rounded-l-none px-3', variant !== 'link' && 'border-l')}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={cn('h-4 w-4 transition-transform duration-150', open && 'rotate-180')}\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n\n {open && hasItems && (\n <div\n id={menuId}\n role=\"menu\"\n className={cn(\n 'absolute z-20 top-full mt-2 min-w-44 overflow-hidden rounded-lg border border-base-300 bg-base-100 p-1 shadow-lg',\n align === 'right' ? 'right-0' : 'left-0',\n menuClassName\n )}\n >\n {items.map((item, index) => (\n <button\n key={item.key ?? `split-item-${index}`}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n onClick={() => handleItemSelect(item)}\n className={cn(\n 'w-full rounded-md px-3 py-2 text-left text-sm transition-colors',\n item.disabled\n ? 'cursor-not-allowed opacity-50'\n : item.destructive\n ? 'text-error hover:bg-error/10'\n : 'text-base-content hover:bg-base-200'\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nSplitButton.displayName = 'SplitButton';\n","import * as LucideIcons from 'lucide-react';\nimport React from 'react';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport type IconColor =\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'neutral'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'current';\n\nexport type IconName = keyof typeof LucideIcons;\n\nexport interface IconProps extends Omit<React.SVGProps<SVGSVGElement>, 'color'> {\n /** The icon component to render (e.g., from Phosphor, Heroicons, Radix, etc.) */\n icon?: React.ElementType;\n /** The name of the Lucide icon to render (backward compatibility) */\n name?: IconName;\n /** Size of the icon */\n size?: IconSize;\n /** Color of the icon. Can be a theme color (e.g., 'primary') or any valid CSS color string. */\n color?: IconColor | string;\n}\n\nconst sizeMap: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n '2xl': 64,\n};\n\nconst colorMap: Record<IconColor, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n accent: 'text-accent',\n neutral: 'text-neutral',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n error: 'text-error',\n current: 'text-current',\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ icon: ExplicitIcon, name, size = 'md', color = 'current', className, ...props }, ref) => {\n const sizeValue = sizeMap[size];\n\n const isThemeColor = color && Object.keys(colorMap).includes(color as string);\n const colorClass = isThemeColor ? colorMap[color as IconColor] : '';\n const customColor = !isThemeColor ? color : undefined;\n\n // Resolve the component to render: explicitly passed icon takes precedence over named lucide icon.\n const IconComponent = ExplicitIcon || (name ? (LucideIcons[name] as React.ElementType) : null);\n\n if (!IconComponent) {\n console.warn(`Icon: No icon provided. Pass either 'icon' component or 'name' string.`);\n return null;\n }\n\n // We pass standard SVG width/height and color styles. \n // This makes it compatible with almost ALL external icon libraries out of the box\n // because components generally forward standard SVG props to their root <svg>.\n return (\n <IconComponent\n ref={ref}\n width={sizeValue}\n height={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `size` prop\n size={sizeValue}\n // Fallback for libraries like Lucide or Phosphor that use a custom `color` prop\n color={customColor}\n style={{ color: customColor, ...props.style }}\n className={`transition-all duration-200 ${colorClass} ${className || ''}`}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = 'Icon';\n"]}
package/dist/styles.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-400:oklch(82.8% .189 84.429);--color-green-400:oklch(79.2% .209 151.711);--color-emerald-400:oklch(76.5% .177 163.223);--color-slate-900:oklch(20.8% .042 265.755);--color-white:#fff;--spacing:.25rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:var(--theme-base-100);--color-base-200:var(--theme-base-200);--color-base-300:var(--theme-base-300);--color-base-content:var(--theme-base-content);--color-primary:var(--theme-primary);--color-primary-content:var(--theme-primary-content);--color-secondary:var(--theme-secondary);--color-secondary-content:var(--theme-secondary-content);--color-accent:var(--theme-accent);--color-neutral:var(--theme-neutral);--color-info:var(--theme-info);--color-info-content:var(--theme-info-content);--color-success:var(--theme-success);--color-success-content:var(--theme-success-content);--color-warning:var(--theme-warning);--color-warning-content:var(--theme-warning-content);--color-error:var(--theme-error);--color-error-content:var(--theme-error-content);--radius-selector:var(--theme-radius-selector);--radius-field:var(--theme-radius-field);--radius-box:var(--theme-radius-box);--size-selector:var(--theme-size-selector);--size-field:var(--theme-size-field);--border-width:var(--theme-border)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;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");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.-top-\[20\%\]{top:-20%}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-\[20\%\]{top:20%}.top-full{top:100%}.-right-\[10\%\]{right:-10%}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.-bottom-\[20\%\]{bottom:-20%}.-left-\[10\%\]{left:-10%}.left-0{left:calc(var(--spacing) * 0)}.left-3{left:calc(var(--spacing) * 3)}.left-\[20\%\]{left:20%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.col-span-1{grid-column:span 1/span 1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-\[40\%\]{height:40%}.h-\[50\%\]{height:50%}.h-\[60\%\]{height:60%}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[200px\]{min-height:200px}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[40\%\]{width:40%}.w-\[50\%\]{width:50%}.w-\[60\%\]{width:60%}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[85vw\]{max-width:85vw}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[580px\]{min-width:580px}.min-w-\[620px\]{min-width:620px}.min-w-\[700px\]{min-width:700px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.animate-ping{animation:var(--animate-ping)}.animate-spin{animation:var(--animate-spin)}.cursor-copy{cursor:copy}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[var\(--radius-selector\)\]{border-radius:var(--radius-selector)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-base-200{border-color:var(--color-base-200)}.border-base-300,.border-base-300\/50{border-color:var(--color-base-300)}@supports (color:color-mix(in lab, red, red)){.border-base-300\/50{border-color:color-mix(in oklab, var(--color-base-300) 50%, transparent)}}.border-base-300\/70{border-color:var(--color-base-300)}@supports (color:color-mix(in lab, red, red)){.border-base-300\/70{border-color:color-mix(in oklab, var(--color-base-300) 70%, transparent)}}.border-base-content,.border-base-content\/10{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/10{border-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.border-error,.border-error\/30{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.border-error\/30{border-color:color-mix(in oklab, var(--color-error) 30%, transparent)}}.border-info{border-color:var(--color-info)}.border-primary,.border-primary\/20{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-secondary{border-color:var(--color-secondary)}.border-success,.border-success\/30{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-warning{border-color:var(--color-warning)}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/70{border-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.border-white\/70{border-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-amber-400{background-color:var(--color-amber-400)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\/95{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/95{background-color:color-mix(in oklab, var(--color-base-200) 95%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-base-content,.bg-base-content\/5{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/5{background-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.bg-base-content\/10{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/10{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.bg-base-content\/20{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/20{background-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.bg-base-content\/30{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/30{background-color:color-mix(in oklab, var(--color-base-content) 30%, transparent)}}.bg-error,.bg-error\/5{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/5{background-color:color-mix(in oklab, var(--color-error) 5%, transparent)}}.bg-green-400{background-color:var(--color-green-400)}.bg-info,.bg-info\/20{background-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/20{background-color:color-mix(in oklab, var(--color-info) 20%, transparent)}}.bg-primary,.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-primary\/70{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/70{background-color:color-mix(in oklab, var(--color-primary) 70%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary,.bg-secondary\/20{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/20{background-color:color-mix(in oklab, var(--color-secondary) 20%, transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-success,.bg-success\/5{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/5{background-color:color-mix(in oklab, var(--color-success) 5%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-white\/40{background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-base-content{--tw-gradient-from:var(--color-base-content);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary\/10{--tw-gradient-from:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.from-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-secondary{--tw-gradient-via:var(--color-secondary);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-base-content\/70{--tw-gradient-to:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.to-base-content\/70{--tw-gradient-to:color-mix(in oklab, var(--color-base-content) 70%, transparent)}}.to-base-content\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary{--tw-gradient-to:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary\/10{--tw-gradient-to:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.to-secondary\/10{--tw-gradient-to:color-mix(in oklab, var(--color-secondary) 10%, transparent)}}.to-secondary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.\!font-mono{font-family:var(--font-mono)!important}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-base-100{color:var(--color-base-100)}.text-base-content,.text-base-content\/50{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/50{color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/65{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/65{color:color-mix(in oklab, var(--color-base-content) 65%, transparent)}}.text-base-content\/70{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/70{color:color-mix(in oklab, var(--color-base-content) 70%, transparent)}}.text-base-content\/75{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/75{color:color-mix(in oklab, var(--color-base-content) 75%, transparent)}}.text-base-content\/80{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/80{color:color-mix(in oklab, var(--color-base-content) 80%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-current{color:currentColor}.text-emerald-400{color:var(--color-emerald-400)}.text-error{color:var(--color-error)}.text-error-content{color:var(--color-error-content)}.text-info{color:var(--color-info)}.text-info-content{color:var(--color-info-content)}.text-neutral{color:var(--color-neutral)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-primary\/80{color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.text-primary\/80{color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.text-red-500{color:var(--color-red-500)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-success-content{color:var(--color-success-content)}.text-transparent{color:#0000}.text-warning{color:var(--color-warning)}.text-warning-content{color:var(--color-warning-content)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.opacity-100{opacity:1}.mix-blend-screen{mix-blend-mode:screen}.shadow-\[0_0_40px_-5px_rgba\(var\(--color-base-content\)\,0\.3\)\]{--tw-shadow:0 0 40px -5px var(--tw-shadow-color,rgba(var(--color-base-content),.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-primary\/20{--tw-shadow-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.shadow-primary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-primary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-base-100{--tw-ring-offset-color:var(--color-base-100)}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.selection\:bg-primary\/30 ::selection{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/30 ::selection{background-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.selection\:bg-primary\/30::selection{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/30::selection{background-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.placeholder\:text-base-content\/40::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-base-content\/40::placeholder{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-error\/50:hover{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\:border-error\/50:hover{border-color:color-mix(in oklab, var(--color-error) 50%, transparent)}}.hover\:border-info\/50:hover{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.hover\:border-info\/50:hover{border-color:color-mix(in oklab, var(--color-info) 50%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/50:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/50:hover{border-color:color-mix(in oklab, var(--color-secondary) 50%, transparent)}}.hover\:border-success\/50:hover{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:border-success\/50:hover{border-color:color-mix(in oklab, var(--color-success) 50%, transparent)}}.hover\:border-warning\/50:hover{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:border-warning\/50:hover{border-color:color-mix(in oklab, var(--color-warning) 50%, transparent)}}.hover\:bg-base-200:hover,.hover\:bg-base-200\/10:hover{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-200\/10:hover{background-color:color-mix(in oklab, var(--color-base-200) 10%, transparent)}}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:bg-base-content\/10:hover{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-content\/10:hover{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.hover\:bg-base-content\/15:hover{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-content\/15:hover{background-color:color-mix(in oklab, var(--color-base-content) 15%, transparent)}}.hover\:bg-error\/10:hover{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/10:hover{background-color:color-mix(in oklab, var(--color-error) 10%, transparent)}}.hover\:bg-info\/10:hover{background-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/10:hover{background-color:color-mix(in oklab, var(--color-info) 10%, transparent)}}.hover\:bg-primary\/10:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.hover\:bg-secondary\/10:hover{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/10:hover{background-color:color-mix(in oklab, var(--color-secondary) 10%, transparent)}}.hover\:bg-success\/10:hover{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.hover\:bg-warning\/10:hover{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/10:hover{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.hover\:text-base-content:hover,.hover\:text-base-content\/80:hover{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:text-base-content\/80:hover{color:color-mix(in oklab, var(--color-base-content) 80%, transparent)}}.hover\:text-error\/80:hover{color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\:text-error\/80:hover{color:color-mix(in oklab, var(--color-error) 80%, transparent)}}.hover\:text-info\/80:hover{color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.hover\:text-info\/80:hover{color:color-mix(in oklab, var(--color-info) 80%, transparent)}}.hover\:text-primary\/80:hover{color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:text-primary\/80:hover{color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.hover\:text-secondary\/80:hover{color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:text-secondary\/80:hover{color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\:text-success\/80:hover{color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:text-success\/80:hover{color:color-mix(in oklab, var(--color-success) 80%, transparent)}}.hover\:text-warning\/80:hover{color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:text-warning\/80:hover{color:color-mix(in oklab, var(--color-warning) 80%, transparent)}}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-\[0_0_60px_-5px_rgba\(var\(--color-base-content\)\,0\.5\)\]:hover{--tw-shadow:0 0 60px -5px var(--tw-shadow-color,rgba(var(--color-base-content),.5));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media (min-width:64rem){.lg\:col-span-3{grid-column:span 3/span 3}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:py-14{padding-block:calc(var(--spacing) * 14)}.lg\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.lg\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}}}:root,[data-theme=winter]{color-scheme:light;--theme-base-100:oklch(97% .013 236.62);--theme-base-200:oklch(95% .026 236.824);--theme-base-300:oklch(90% .058 230.902);--theme-base-content:oklch(39% .09 240.876);--theme-primary:oklch(80% .105 251.813);--theme-primary-content:oklch(28% .091 267.935);--theme-secondary:oklch(82% .111 230.318);--theme-secondary-content:oklch(29% .066 243.157);--theme-accent:oklch(0% 0 0);--theme-accent-content:oklch(100% 0 0);--theme-neutral:oklch(44% .11 240.79);--theme-neutral-content:oklch(97% .013 236.62);--theme-info:oklch(58% .158 241.966);--theme-info-content:oklch(97% .013 236.62);--theme-success:oklch(60% .118 184.704);--theme-success-content:oklch(98% .014 180.72);--theme-warning:oklch(66% .179 58.318);--theme-warning-content:oklch(98% .022 95.277);--theme-error:oklch(58% .253 17.585);--theme-error-content:oklch(96% .015 12.422);--theme-radius-selector:.5rem;--theme-radius-field:0rem;--theme-radius-box:1rem;--theme-size-selector:.25rem;--theme-size-field:.25rem;--theme-border:1px;--theme-depth:1;--theme-noise:0}[data-theme=starlight]{color-scheme:dark;--theme-base-100:oklch(27% .041 260.031);--theme-base-200:oklch(20% .042 265.755);--theme-base-300:oklch(35% .041 260.031);--theme-base-content:oklch(96% .007 247.896);--theme-primary:oklch(80% .105 251.813);--theme-primary-content:oklch(28% .091 267.935);--theme-secondary:oklch(82% .111 230.318);--theme-secondary-content:oklch(29% .066 243.157);--theme-accent:oklch(89% .057 293.283);--theme-accent-content:oklch(28% .091 267.935);--theme-neutral:oklch(70% .041 260.031);--theme-neutral-content:oklch(98% .003 247.858);--theme-info:oklch(70% .165 254.624);--theme-info-content:oklch(28% .091 267.935);--theme-success:oklch(84% .238 128.85);--theme-success-content:oklch(27% .072 132.109);--theme-warning:oklch(85% .199 91.936);--theme-warning-content:oklch(28% .066 53.813);--theme-error:oklch(70% .191 22.216);--theme-error-content:oklch(25% .092 26.042);--theme-radius-selector:.5rem;--theme-radius-field:2rem;--theme-radius-box:.5rem;--theme-size-selector:.25rem;--theme-size-field:.25rem;--theme-border:1px;--theme-depth:0;--theme-noise:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-amber-400:oklch(82.8% .189 84.429);--color-green-400:oklch(79.2% .209 151.711);--color-emerald-400:oklch(76.5% .177 163.223);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-300:oklch(87.2% .01 258.338);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-lg:0 4px 4px #00000026;--drop-shadow-xl:0 9px 7px #0000001a;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:var(--theme-base-100);--color-base-200:var(--theme-base-200);--color-base-300:var(--theme-base-300);--color-base-content:var(--theme-base-content);--color-primary:var(--theme-primary);--color-primary-content:var(--theme-primary-content);--color-secondary:var(--theme-secondary);--color-secondary-content:var(--theme-secondary-content);--color-accent:var(--theme-accent);--color-neutral:var(--theme-neutral);--color-info:var(--theme-info);--color-info-content:var(--theme-info-content);--color-success:var(--theme-success);--color-success-content:var(--theme-success-content);--color-warning:var(--theme-warning);--color-warning-content:var(--theme-warning-content);--color-error:var(--theme-error);--color-error-content:var(--theme-error-content);--radius-selector:var(--theme-radius-selector);--radius-field:var(--theme-radius-field);--radius-box:var(--theme-radius-box);--size-selector:var(--theme-size-selector);--size-field:var(--theme-size-field);--border-width:var(--theme-border)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;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");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-\[20\%\]{top:-20%}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-\[20\%\]{top:20%}.top-full{top:100%}.-right-\[10\%\]{right:-10%}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-8{right:calc(var(--spacing) * 8)}.-bottom-\[20\%\]{bottom:-20%}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-\[-3rem\]{bottom:-3rem}.-left-\[10\%\]{left:-10%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-\[20\%\]{left:20%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.col-span-1{grid-column:span 1/span 1}.col-span-4{grid-column:span 4/span 4}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-\[40\%\]{height:40%}.h-\[50\%\]{height:50%}.h-\[60\%\]{height:60%}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[160px\]{min-height:160px}.min-h-\[200px\]{min-height:200px}.min-h-screen{min-height:100vh}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[40\%\]{width:40%}.w-\[50\%\]{width:50%}.w-\[60\%\]{width:60%}.w-full{width:100%}.w-px{width:1px}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[85vw\]{max-width:85vw}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[580px\]{min-width:580px}.min-w-\[620px\]{min-width:620px}.min-w-\[700px\]{min-width:700px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\.5{--tw-translate-x:calc(var(--spacing) * -1.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[5px\]{--tw-translate-x:5px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-10{--tw-translate-y:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-copy{cursor:copy}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-items-center{justify-items:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-12{gap:calc(var(--spacing) * 12)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-x-12{column-gap:calc(var(--spacing) * 12)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.-space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -4) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-10{row-gap:calc(var(--spacing) * 10)}.gap-y-12{row-gap:calc(var(--spacing) * 12)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-base-300>:not(:last-child)){border-color:var(--color-base-300)}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[var\(--radius-selector\)\]{border-radius:var(--radius-selector)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-3{border-style:var(--tw-border-style);border-width:3px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-accent{border-color:var(--color-accent)}.border-base-100{border-color:var(--color-base-100)}.border-base-200{border-color:var(--color-base-200)}.border-base-300,.border-base-300\/50{border-color:var(--color-base-300)}@supports (color:color-mix(in lab, red, red)){.border-base-300\/50{border-color:color-mix(in oklab, var(--color-base-300) 50%, transparent)}}.border-base-300\/70{border-color:var(--color-base-300)}@supports (color:color-mix(in lab, red, red)){.border-base-300\/70{border-color:color-mix(in oklab, var(--color-base-300) 70%, transparent)}}.border-base-content,.border-base-content\/10{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/10{border-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.border-current{border-color:currentColor}.border-error,.border-error\/20{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.border-error\/20{border-color:color-mix(in oklab, var(--color-error) 20%, transparent)}}.border-error\/30{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.border-error\/30{border-color:color-mix(in oklab, var(--color-error) 30%, transparent)}}.border-info,.border-info\/20{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.border-info\/20{border-color:color-mix(in oklab, var(--color-info) 20%, transparent)}}.border-primary,.border-primary\/10{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/10{border-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.border-primary\/20{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-secondary,.border-secondary\/20{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.border-secondary\/20{border-color:color-mix(in oklab, var(--color-secondary) 20%, transparent)}}.border-success,.border-success\/20{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\/20{border-color:color-mix(in oklab, var(--color-success) 20%, transparent)}}.border-success\/30{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-success\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-warning,.border-warning\/20{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/20{border-color:color-mix(in oklab, var(--color-warning) 20%, transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/70{border-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.border-white\/70{border-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.border-t-transparent{border-top-color:#0000}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-accent{background-color:var(--color-accent)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-base-100,.bg-base-100\/40{background-color:var(--color-base-100)}@supports (color:color-mix(in lab, red, red)){.bg-base-100\/40{background-color:color-mix(in oklab, var(--color-base-100) 40%, transparent)}}.bg-base-100\/50{background-color:var(--color-base-100)}@supports (color:color-mix(in lab, red, red)){.bg-base-100\/50{background-color:color-mix(in oklab, var(--color-base-100) 50%, transparent)}}.bg-base-100\/80{background-color:var(--color-base-100)}@supports (color:color-mix(in lab, red, red)){.bg-base-100\/80{background-color:color-mix(in oklab, var(--color-base-100) 80%, transparent)}}.bg-base-200,.bg-base-200\/50{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/50{background-color:color-mix(in oklab, var(--color-base-200) 50%, transparent)}}.bg-base-200\/95{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/95{background-color:color-mix(in oklab, var(--color-base-200) 95%, transparent)}}.bg-base-300,.bg-base-300\/50{background-color:var(--color-base-300)}@supports (color:color-mix(in lab, red, red)){.bg-base-300\/50{background-color:color-mix(in oklab, var(--color-base-300) 50%, transparent)}}.bg-base-content,.bg-base-content\/5{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/5{background-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.bg-base-content\/10{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/10{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.bg-base-content\/20{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/20{background-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.bg-base-content\/30{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.bg-base-content\/30{background-color:color-mix(in oklab, var(--color-base-content) 30%, transparent)}}.bg-current{background-color:currentColor}.bg-error,.bg-error\/5{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/5{background-color:color-mix(in oklab, var(--color-error) 5%, transparent)}}.bg-error\/10{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--color-error) 10%, transparent)}}.bg-error\/15{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/15{background-color:color-mix(in oklab, var(--color-error) 15%, transparent)}}.bg-error\/20{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/20{background-color:color-mix(in oklab, var(--color-error) 20%, transparent)}}.bg-green-400{background-color:var(--color-green-400)}.bg-info,.bg-info\/10{background-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/10{background-color:color-mix(in oklab, var(--color-info) 10%, transparent)}}.bg-info\/15{background-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/15{background-color:color-mix(in oklab, var(--color-info) 15%, transparent)}}.bg-info\/20{background-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/20{background-color:color-mix(in oklab, var(--color-info) 20%, transparent)}}.bg-primary,.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/15{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/15{background-color:color-mix(in oklab, var(--color-primary) 15%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary,.bg-secondary\/10{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/10{background-color:color-mix(in oklab, var(--color-secondary) 10%, transparent)}}.bg-secondary\/15{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/15{background-color:color-mix(in oklab, var(--color-secondary) 15%, transparent)}}.bg-secondary\/20{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\/20{background-color:color-mix(in oklab, var(--color-secondary) 20%, transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-success,.bg-success\/5{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/5{background-color:color-mix(in oklab, var(--color-success) 5%, transparent)}}.bg-success\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-success\/15{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/15{background-color:color-mix(in oklab, var(--color-success) 15%, transparent)}}.bg-success\/20{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/20{background-color:color-mix(in oklab, var(--color-success) 20%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning,.bg-warning\/10{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.bg-warning\/15{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/15{background-color:color-mix(in oklab, var(--color-warning) 15%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-white\/40{background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-base-300\/50{--tw-gradient-from:var(--color-base-300)}@supports (color:color-mix(in lab, red, red)){.from-base-300\/50{--tw-gradient-from:color-mix(in oklab, var(--color-base-300) 50%, transparent)}}.from-base-300\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-base-content{--tw-gradient-from:var(--color-base-content);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-error{--tw-gradient-from:var(--color-error);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-info{--tw-gradient-from:var(--color-info);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary\/10{--tw-gradient-from:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.from-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-secondary{--tw-gradient-from:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-success{--tw-gradient-from:var(--color-success);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-warning{--tw-gradient-from:var(--color-warning);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-secondary{--tw-gradient-via:var(--color-secondary);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent{--tw-gradient-to:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-100{--tw-gradient-to:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-base-content\/70{--tw-gradient-to:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.to-base-content\/70{--tw-gradient-to:color-mix(in oklab, var(--color-base-content) 70%, transparent)}}.to-base-content\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-error\/70{--tw-gradient-to:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.to-error\/70{--tw-gradient-to:color-mix(in oklab, var(--color-error) 70%, transparent)}}.to-error\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-info\/70{--tw-gradient-to:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.to-info\/70{--tw-gradient-to:color-mix(in oklab, var(--color-info) 70%, transparent)}}.to-info\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary\/70{--tw-gradient-to:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.to-primary\/70{--tw-gradient-to:color-mix(in oklab, var(--color-primary) 70%, transparent)}}.to-primary\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary{--tw-gradient-to:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary\/10{--tw-gradient-to:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.to-secondary\/10{--tw-gradient-to:color-mix(in oklab, var(--color-secondary) 10%, transparent)}}.to-secondary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary\/70{--tw-gradient-to:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.to-secondary\/70{--tw-gradient-to:color-mix(in oklab, var(--color-secondary) 70%, transparent)}}.to-secondary\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-success\/70{--tw-gradient-to:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.to-success\/70{--tw-gradient-to:color-mix(in oklab, var(--color-success) 70%, transparent)}}.to-success\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-warning\/70{--tw-gradient-to:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.to-warning\/70{--tw-gradient-to:color-mix(in oklab, var(--color-warning) 70%, transparent)}}.to-warning\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.\!font-mono{font-family:var(--font-mono)!important}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[10px\]{font-size:10px}.leading-\[1\.1\]{--tw-leading:1.1;line-height:1.1}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-base-100{color:var(--color-base-100)}.text-base-content,.text-base-content\/40{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/40{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}.text-base-content\/50{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/50{color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/65{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/65{color:color-mix(in oklab, var(--color-base-content) 65%, transparent)}}.text-base-content\/70{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/70{color:color-mix(in oklab, var(--color-base-content) 70%, transparent)}}.text-base-content\/75{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/75{color:color-mix(in oklab, var(--color-base-content) 75%, transparent)}}.text-base-content\/80{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/80{color:color-mix(in oklab, var(--color-base-content) 80%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-current{color:currentColor}.text-emerald-400{color:var(--color-emerald-400)}.text-error{color:var(--color-error)}.text-error-content{color:var(--color-error-content)}.text-gray-300{color:var(--color-gray-300)}.text-info{color:var(--color-info)}.text-info-content{color:var(--color-info-content)}.text-neutral{color:var(--color-neutral)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-primary\/80{color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.text-primary\/80{color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.text-red-500{color:var(--color-red-500)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-success-content{color:var(--color-success-content)}.text-transparent{color:#0000}.text-warning{color:var(--color-warning)}.text-warning-content{color:var(--color-warning-content)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.opacity-100{opacity:1}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-screen{mix-blend-mode:screen}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_40px_-5px_rgba\(var\(--color-base-content\)\,0\.3\)\]{--tw-shadow:0 0 40px -5px var(--tw-shadow-color,rgba(var(--color-base-content),.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_100px_rgba\(var\(--color-base-100\)\,0\.8\)\]{--tw-shadow:0 0 100px var(--tw-shadow-color,rgba(var(--color-base-100),.8));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-primary\/30{--tw-shadow-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.shadow-primary\/30{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-primary) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-base-100{--tw-ring-color:var(--color-base-100)}.ring-base-content\/20{--tw-ring-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.ring-base-content\/20{--tw-ring-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-base-100{--tw-ring-offset-color:var(--color-base-100)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-xl{--tw-drop-shadow-size:drop-shadow(0 9px 7px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:drop-shadow(var(--drop-shadow-xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:animate-bounce:is(:where(.group):hover *){animation:var(--animate-bounce)}.group-hover\:text-error:is(:where(.group):hover *){color:var(--color-error)}.group-hover\:text-info:is(:where(.group):hover *){color:var(--color-info)}.group-hover\:text-warning:is(:where(.group):hover *){color:var(--color-warning)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.selection\:bg-primary\/30 ::selection{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/30 ::selection{background-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.selection\:bg-primary\/30::selection{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/30::selection{background-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.placeholder\:text-base-content\/40::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-base-content\/40::placeholder{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-error\/30:hover{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\:border-error\/30:hover{border-color:color-mix(in oklab, var(--color-error) 30%, transparent)}}.hover\:border-error\/50:hover{border-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\:border-error\/50:hover{border-color:color-mix(in oklab, var(--color-error) 50%, transparent)}}.hover\:border-info\/30:hover{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.hover\:border-info\/30:hover{border-color:color-mix(in oklab, var(--color-info) 30%, transparent)}}.hover\:border-info\/50:hover{border-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.hover\:border-info\/50:hover{border-color:color-mix(in oklab, var(--color-info) 50%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/50:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/50:hover{border-color:color-mix(in oklab, var(--color-secondary) 50%, transparent)}}.hover\:border-success\/50:hover{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:border-success\/50:hover{border-color:color-mix(in oklab, var(--color-success) 50%, transparent)}}.hover\:border-warning\/30:hover{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:border-warning\/30:hover{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.hover\:border-warning\/50:hover{border-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:border-warning\/50:hover{border-color:color-mix(in oklab, var(--color-warning) 50%, transparent)}}.hover\:bg-base-200:hover,.hover\:bg-base-200\/10:hover{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-200\/10:hover{background-color:color-mix(in oklab, var(--color-base-200) 10%, transparent)}}.hover\:bg-base-200\/80:hover{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-200\/80:hover{background-color:color-mix(in oklab, var(--color-base-200) 80%, transparent)}}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:bg-base-content\/10:hover{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-content\/10:hover{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.hover\:bg-base-content\/15:hover{background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-base-content\/15:hover{background-color:color-mix(in oklab, var(--color-base-content) 15%, transparent)}}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.hover\:bg-error\/10:hover{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/10:hover{background-color:color-mix(in oklab, var(--color-error) 10%, transparent)}}.hover\:bg-info\/10:hover{background-color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/10:hover{background-color:color-mix(in oklab, var(--color-info) 10%, transparent)}}.hover\:bg-primary\/10:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.hover\:bg-secondary\/10:hover{background-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/10:hover{background-color:color-mix(in oklab, var(--color-secondary) 10%, transparent)}}.hover\:bg-success\/10:hover{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.hover\:bg-warning\/10:hover{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/10:hover{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.hover\:text-base-content:hover,.hover\:text-base-content\/80:hover{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:text-base-content\/80:hover{color:color-mix(in oklab, var(--color-base-content) 80%, transparent)}}.hover\:text-error\/80:hover{color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.hover\:text-error\/80:hover{color:color-mix(in oklab, var(--color-error) 80%, transparent)}}.hover\:text-info\/80:hover{color:var(--color-info)}@supports (color:color-mix(in lab, red, red)){.hover\:text-info\/80:hover{color:color-mix(in oklab, var(--color-info) 80%, transparent)}}.hover\:text-primary\/80:hover{color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:text-primary\/80:hover{color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.hover\:text-secondary\/80:hover{color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:text-secondary\/80:hover{color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\:text-success\/80:hover{color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:text-success\/80:hover{color:color-mix(in oklab, var(--color-success) 80%, transparent)}}.hover\:text-warning\/80:hover{color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.hover\:text-warning\/80:hover{color:color-mix(in oklab, var(--color-warning) 80%, transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-\[0_0_60px_-5px_rgba\(var\(--color-base-content\)\,0\.5\)\]:hover{--tw-shadow:0 0 60px -5px var(--tw-shadow-color,rgba(var(--color-base-content),.5));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-error\/20:focus{--tw-ring-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-error\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-error) 20%, transparent)}}.focus\:ring-primary:focus,.focus\:ring-primary\/20:focus{--tw-ring-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-primary\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media (min-width:48rem){.md\:col-span-3{grid-column:span 3/span 3}.md\:block{display:block}.md\:grid{display:grid}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:pt-10{padding-top:calc(var(--spacing) * 10)}.md\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.md\:pb-24{padding-bottom:calc(var(--spacing) * 24)}.md\:pl-0{padding-left:calc(var(--spacing) * 0)}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}@media (min-width:64rem){.lg\:col-span-3{grid-column:span 3/span 3}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:pt-6{padding-top:calc(var(--spacing) * 6)}.lg\:pb-14{padding-bottom:calc(var(--spacing) * 14)}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-\[5rem\]{font-size:5rem}}}:root,[data-theme=winter]{color-scheme:light;--theme-base-100:oklch(97% .013 236.62);--theme-base-200:oklch(95% .026 236.824);--theme-base-300:oklch(90% .058 230.902);--theme-base-content:oklch(39% .09 240.876);--theme-primary:oklch(80% .105 251.813);--theme-primary-content:oklch(28% .091 267.935);--theme-secondary:oklch(82% .111 230.318);--theme-secondary-content:oklch(29% .066 243.157);--theme-accent:oklch(0% 0 0);--theme-accent-content:oklch(100% 0 0);--theme-neutral:oklch(44% .11 240.79);--theme-neutral-content:oklch(97% .013 236.62);--theme-info:oklch(58% .158 241.966);--theme-info-content:oklch(97% .013 236.62);--theme-success:oklch(60% .118 184.704);--theme-success-content:oklch(98% .014 180.72);--theme-warning:oklch(66% .179 58.318);--theme-warning-content:oklch(98% .022 95.277);--theme-error:oklch(58% .253 17.585);--theme-error-content:oklch(96% .015 12.422);--theme-radius-selector:.5rem;--theme-radius-field:0rem;--theme-radius-box:1rem;--theme-size-selector:.25rem;--theme-size-field:.25rem;--theme-border:1px;--theme-depth:1;--theme-noise:0}[data-theme=starlight]{color-scheme:dark;--theme-base-100:oklch(27% .041 260.031);--theme-base-200:oklch(20% .042 265.755);--theme-base-300:oklch(35% .041 260.031);--theme-base-content:oklch(96% .007 247.896);--theme-primary:oklch(80% .105 251.813);--theme-primary-content:oklch(28% .091 267.935);--theme-secondary:oklch(82% .111 230.318);--theme-secondary-content:oklch(29% .066 243.157);--theme-accent:oklch(89% .057 293.283);--theme-accent-content:oklch(28% .091 267.935);--theme-neutral:oklch(70% .041 260.031);--theme-neutral-content:oklch(98% .003 247.858);--theme-info:oklch(70% .165 254.624);--theme-info-content:oklch(28% .091 267.935);--theme-success:oklch(84% .238 128.85);--theme-success-content:oklch(27% .072 132.109);--theme-warning:oklch(85% .199 91.936);--theme-warning-content:oklch(28% .066 53.813);--theme-error:oklch(70% .191 22.216);--theme-error-content:oklch(25% .092 26.042);--theme-radius-selector:.5rem;--theme-radius-field:2rem;--theme-radius-box:.5rem;--theme-size-selector:.25rem;--theme-size-field:.25rem;--theme-border:1px;--theme-depth:0;--theme-noise:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sehgaltech/psui",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "A scalable and customizable UI library built with Tailwind CSS v4, TypeScript, and React",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -30,7 +30,8 @@
30
30
  "dev": "tsup && npx @tailwindcss/cli -i src/styles/base.css -o dist/styles.css --watch",
31
31
  "test": "vitest",
32
32
  "test:ui": "vitest --ui",
33
- "type-check": "tsc --noEmit"
33
+ "type-check": "tsc --noEmit",
34
+ "check": "npm run type-check && cd docs && npm run type-check"
34
35
  },
35
36
  "keywords": [
36
37
  "ui-library",