nocturna-ui 0.0.1 → 0.0.3

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
@@ -1,64 +1,70 @@
1
- # 🦇 Nocturna UI
2
-
3
- > **Primitivos góticos e brutalistas para a web que não teme a escuridão.**
4
-
5
- A **Nocturna UI** é uma biblioteca de componentes React focada em interfaces de alto contraste, tipografia serifada e estética minimalista/gótica. Desenvolvida para ser leve, acessível e agnóstica de configuração.
6
-
7
- [Showcase (DEMO)](https://gothd.github.io/nocturna-ui/) | [NPM](https://www.npmjs.com/) | [UNPKG](https://unpkg.com/nocturna-ui/)
8
-
9
- ---
10
-
11
- ## 🌑 Destaques Técnicos
12
-
13
- - **React + TypeScript**: Tipagem estrita para uma experiência de desenvolvimento segura.
14
- - **Tailwind CSS**: Estilização performática via utilitários.
15
- - **Multi-distribuição**: Suporte nativo para ESM, CJS e UMD (CDN).
16
- - **Zero Runtime CSS**: O usuário não precisa ter Tailwind instalado para usar a lib.
17
- - **CI/CD**: Deploy automatizado para GitHub Pages e versionamento via Tags.
18
-
19
- ## 🕸️ Instalação
20
-
21
- ### Via NPM
22
-
23
- ```bash
24
- npm install nocturna-ui
25
- ```
26
-
27
- No seu arquivo principal:
28
-
29
- ```tsx
30
- import "nocturna-ui/style.css";
31
- import { VoidButton, NocturnaCard } from "nocturna-ui";
32
- ```
33
-
34
- ### Via CDN (UNPKG)
35
-
36
- Ideal para prototipagem rápida ou uso sem build tools.
37
-
38
- ```html
39
- <link
40
- rel="stylesheet"
41
- href="[https://unpkg.com/nocturna-ui/dist/style.css](https://unpkg.com/nocturna-ui/dist/style.css)"
42
- />
43
- <script src="[https://unpkg.com/nocturna-ui/dist/index.umd.js](https://unpkg.com/nocturna-ui/dist/index.umd.js)"></script>
44
- ```
45
-
46
- ## 🩸 Componentes Atuais
47
-
48
- - [x] **VoidButton**: Botão brutalista com variantes Ghost e Blood.
49
- - [x] **NocturnaCard**: Container com sombras rígidas e foco tipográfico.
50
- - [ ] **NocturnaInput**: (Em breve)
51
- - [ ] **ShadowOverlay**: (Em breve)
52
-
53
- ---
54
-
55
- ## 🛠️ Desenvolvimento local
56
-
57
- 1. Clone o repositório.
58
- 2. `npm install` na raiz para a biblioteca.
59
- 3. `cd playground && npm install` para o showcase.
60
- 4. `npm run dev` na raiz para buildar em tempo real.
61
-
62
- ---
63
-
64
- Desevolvido com 🖤 por **gothd**.
1
+ # 🦇 Nocturna UI
2
+
3
+ > **Primitivos góticos e brutalistas forjados para a web que não teme a escuridão.**
4
+
5
+ A **Nocturna UI** é uma biblioteca de componentes React focada em interfaces de alto contraste, tipografia serifada e estética minimalista/gótica. Na v0.0.2, expandimos nosso arsenal com componentes complexos e foco total em acessibilidade.
6
+
7
+ [Showcase (DEMO)](https://gothd.github.io/nocturna-ui/) | [NPM](https://www.npmjs.com/package/nocturna-ui) | [UNPKG](https://unpkg.com/nocturna-ui/)
8
+
9
+ ---
10
+
11
+ ## 🕸️ Componentes Disponíveis
12
+
13
+ | Primitivo | Descrição |
14
+ | :-------------------- | :------------------------------------------------------------ |
15
+ | **VoidButton** | Botão brutalista com suporte a tamanhos sm/md/lg. |
16
+ | **CryptModal** | Modal com portal e trava de foco para acessibilidade. |
17
+ | **RitualSelect** | Select customizado com suporte total a navegação via teclado. |
18
+ | **GrimoireAccordion** | Acordeão com animação de altura dinâmica via Framer Motion. |
19
+ | **SoulTabs** | Sistema de abas para organização de conteúdos densos. |
20
+ | **VeinInput** | Input de texto com estados de erro e animação de pulso. |
21
+ | **HexCheckbox** | Checkbox temático com animação de escala. |
22
+ | **AbyssSeparator** | Divisor de seção com suporte a labels e sigilos. |
23
+ | **SigilBadge** | Emblemas para status e tags em versões Solid ou Outline. |
24
+ | **NocturnaCard** | Container clássico com sombras rígidas (hard shadows). |
25
+
26
+ ## 🌑 Requisitos de Instalação (Peer Dependencies)
27
+
28
+ Para evitar conflitos de instâncias do React (como o erro de `useState` nulo), a **Nocturna UI** utiliza `peerDependencies`. Certifique-se de que seu projeto possua:
29
+
30
+ - **React** (^18.0.0)
31
+ - **React-DOM** (^18.0.0)
32
+ - **Framer Motion** (^11.0.0)
33
+
34
+ ```bash
35
+ npm install react react-dom framer-motion
36
+ ```
37
+
38
+ ## 📜 Uso via CDN (UMD)
39
+
40
+ Para utilizar a biblioteca diretamente no navegador, a ordem dos scripts é fundamental para que as globais sejam injetadas corretamente:
41
+
42
+ ```html
43
+ <script src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
44
+ <script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
45
+
46
+ <script src="https://unpkg.com/framer-motion@11/dist/framer-motion.js"></script>
47
+
48
+ <script src="https://unpkg.com/nocturna-ui@0.0.3/dist/index.umd.js"></script>
49
+ ```
50
+
51
+ ## 🩸 Instalação e Uso
52
+
53
+ ```bash
54
+ npm install nocturna-ui
55
+ ```
56
+
57
+ ```tsx
58
+ import "nocturna-ui/dist/style.css";
59
+ import { VoidButton, CryptModal } from "nocturna-ui";
60
+
61
+ export const Ritual = () => (
62
+ <VoidButton variant="blood" size="lg">
63
+ Iniciar Invocação
64
+ </VoidButton>
65
+ );
66
+ ```
67
+
68
+ ---
69
+
70
+ Desenvolvido com 🖤 por **gothd**. ☕️
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ interface GrimoireAccordionItem {
3
+ id: string;
4
+ title: string;
5
+ content: React.ReactNode;
6
+ }
7
+ interface GrimoireAccordionProps extends React.HTMLAttributes<HTMLDivElement> {
8
+ items: GrimoireAccordionItem[];
9
+ variant?: "void" | "blood";
10
+ }
11
+ export declare const GrimoireAccordion: ({ items, variant, className, ...props }: GrimoireAccordionProps) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ interface SigilBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
3
+ children: React.ReactNode;
4
+ variant?: "void" | "blood";
5
+ size?: "sm" | "md";
6
+ styleType?: "outline" | "solid";
7
+ }
8
+ export declare const SigilBadge: ({ children, variant, size, styleType, className, ...props }: SigilBadgeProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -1,6 +1,7 @@
1
1
  import { default as React } from 'react';
2
- interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
- variant?: "ghost" | "blood";
2
+ interface VoidButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
+ variant?: "void" | "blood";
4
+ size?: "sm" | "md" | "lg";
4
5
  }
5
- export declare const VoidButton: ({ variant, children, ...props }: ButtonProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const VoidButton: ({ variant, size, className, ...props }: VoidButtonProps) => import("react/jsx-runtime").JSX.Element;
6
7
  export {};
@@ -1,9 +1,8 @@
1
1
  import { default as React } from 'react';
2
- interface CardProps {
2
+ interface NocturnaCardProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ variant?: "void" | "blood";
3
4
  title: string;
4
5
  description?: string;
5
- children?: React.ReactNode;
6
- variant?: "void" | "blood";
7
6
  }
8
- export declare const NocturnaCard: ({ title, description, children, variant, }: CardProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const NocturnaCard: ({ title, description, variant, className, children, ...props }: NocturnaCardProps) => import("react/jsx-runtime").JSX.Element;
9
8
  export {};
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ interface HexCheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type"> {
3
+ label?: string;
4
+ variant?: "void" | "blood";
5
+ }
6
+ export declare const HexCheckbox: ({ label, variant, checked, className, ...props }: HexCheckboxProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ interface VeinInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> {
3
+ variant?: "void" | "blood";
4
+ size?: "sm" | "md";
5
+ label?: string;
6
+ error?: string;
7
+ inputSize?: React.InputHTMLAttributes<HTMLInputElement>["size"];
8
+ }
9
+ export declare const VeinInput: ({ variant, size, label, error, className, inputSize, ...props }: VeinInputProps) => import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,11 @@
1
+ import { default as React } from 'react';
2
+ interface CryptModalProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ title: string;
6
+ description?: string;
7
+ children?: React.ReactNode;
8
+ variant?: "void" | "blood";
9
+ }
10
+ export declare const CryptModal: ({ isOpen, onClose, title, description, children, variant, className, ...props }: CryptModalProps) => React.ReactPortal | null;
11
+ export {};
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ interface RitualSelectOption {
3
+ value: string;
4
+ label: string;
5
+ }
6
+ interface RitualSelectProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onChange"> {
7
+ options: RitualSelectOption[];
8
+ value?: string;
9
+ onChange?: (value: string) => void;
10
+ placeholder?: string;
11
+ label?: string;
12
+ variant?: "void" | "blood";
13
+ size?: "sm" | "md" | "lg";
14
+ }
15
+ export declare const RitualSelect: ({ options, value, onChange, placeholder, label, variant, size, className, }: RitualSelectProps) => import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ interface AbyssSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ variant?: "void" | "blood";
4
+ label?: string;
5
+ }
6
+ export declare const AbyssSeparator: ({ variant, label, className, ...props }: AbyssSeparatorProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ interface Tab {
3
+ id: string;
4
+ label: string;
5
+ content: React.ReactNode;
6
+ }
7
+ interface SoulTabsProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
8
+ tabs: Tab[];
9
+ variant?: "void" | "blood";
10
+ }
11
+ export declare const SoulTabs: ({ tabs, variant, className, ...props }: SoulTabsProps) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),d=({variant:o="ghost",children:t,...a})=>{const r=o==="ghost"?"border-2 border-white text-white hover:bg-white hover:text-black":"border-2 border-red-900 text-red-600 hover:bg-red-900 hover:text-white";return e.createElement("button",{className:`px-6 py-2 transition-all duration-300 font-serif uppercase tracking-widest ${r}`,...a},t)},i=({title:o,description:t,children:a,variant:r="void"})=>{const s=r==="void"?"border-white":"border-red-900",n=r==="void"?"hover:shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]":"hover:shadow-[8px_8px_0px_0px_rgba(136,8,8,0.3)]";return e.createElement("div",{className:`bg-nocturna-void border-2 ${s} p-6 transition-all duration-300 ${n} max-w-sm`},e.createElement("h3",{className:"font-serif text-2xl uppercase tracking-tighter text-white mb-2"},o),t&&e.createElement("p",{className:"text-zinc-500 text-sm mb-4 font-sans leading-relaxed"},t),e.createElement("div",{className:"mt-4"},a))};exports.NocturnaCard=i;exports.VoidButton=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react"),je=require("framer-motion"),Oe=require("react-dom");const $e=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ve=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,r,o)=>o?o.toUpperCase():r.toLowerCase()),ge=e=>{const t=Ve(e);return t.charAt(0).toUpperCase()+t.slice(1)},ve=(...e)=>e.filter((t,r,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===r).join(" ").trim(),De=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};var Fe={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const We=i.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:o,className:n="",children:a,iconNode:s,...m},d)=>i.createElement("svg",{ref:d,...Fe,width:t,height:t,stroke:e,strokeWidth:o?Number(r)*24/Number(t):r,className:ve("lucide",n),...!a&&!De(m)&&{"aria-hidden":"true"},...m},[...s.map(([f,x])=>i.createElement(f,x)),...Array.isArray(a)?a:[a]]));const ae=(e,t)=>{const r=i.forwardRef(({className:o,...n},a)=>i.createElement(We,{ref:a,iconNode:t,className:ve(`lucide-${$e(ge(e))}`,`lucide-${e}`,o),...n}));return r.displayName=ge(e),r};const Be=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Ue=ae("check",Be);const qe=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],Ee=ae("chevron-down",qe);const He=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Ke=ae("x",He);function _e(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t<n;t++)e[t]&&(r=_e(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Ye(){for(var e,t,r=0,o="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=_e(e))&&(o&&(o+=" "),o+=t);return o}const Xe=(e,t)=>{const r=new Array(e.length+t.length);for(let o=0;o<e.length;o++)r[o]=e[o];for(let o=0;o<t.length;o++)r[e.length+o]=t[o];return r},Ze=(e,t)=>({classGroupId:e,validator:t}),Ce=(e=new Map,t=null,r)=>({nextPart:e,validators:t,classGroupId:r}),Q="-",he=[],Je="arbitrary..",Qe=e=>{const t=tt(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return et(s);const m=s.split(Q),d=m[0]===""&&m.length>1?1:0;return ze(m,d,t)},getConflictingClassGroupIds:(s,m)=>{if(m){const d=o[s],f=r[s];return d?f?Xe(f,d):d:f||he}return r[s]||he}}},ze=(e,t,r)=>{if(e.length-t===0)return r.classGroupId;const n=e[t],a=r.nextPart.get(n);if(a){const f=ze(e,t+1,a);if(f)return f}const s=r.validators;if(s===null)return;const m=t===0?e.join(Q):e.slice(t).join(Q),d=s.length;for(let f=0;f<d;f++){const x=s[f];if(x.validator(m))return x.classGroupId}},et=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),r=t.indexOf(":"),o=t.slice(0,r);return o?Je+o:void 0})(),tt=e=>{const{theme:t,classGroups:r}=e;return rt(r,t)},rt=(e,t)=>{const r=Ce();for(const o in e){const n=e[o];ie(n,r,o,t)}return r},ie=(e,t,r,o)=>{const n=e.length;for(let a=0;a<n;a++){const s=e[a];ot(s,t,r,o)}},ot=(e,t,r,o)=>{if(typeof e=="string"){st(e,t,r);return}if(typeof e=="function"){nt(e,t,r,o);return}at(e,t,r,o)},st=(e,t,r)=>{const o=e===""?t:Ne(t,e);o.classGroupId=r},nt=(e,t,r,o)=>{if(it(e)){ie(e(o),t,r,o);return}t.validators===null&&(t.validators=[]),t.validators.push(Ze(r,e))},at=(e,t,r,o)=>{const n=Object.entries(e),a=n.length;for(let s=0;s<a;s++){const[m,d]=n[s];ie(d,Ne(t,m),r,o)}},Ne=(e,t)=>{let r=e;const o=t.split(Q),n=o.length;for(let a=0;a<n;a++){const s=o[a];let m=r.nextPart.get(s);m||(m=Ce(),r.nextPart.set(s,m)),r=m}return r},it=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,lt=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=Object.create(null),o=Object.create(null);const n=(a,s)=>{r[a]=s,t++,t>e&&(t=0,o=r,r=Object.create(null))};return{get(a){let s=r[a];if(s!==void 0)return s;if((s=o[a])!==void 0)return n(a,s),s},set(a,s){a in r?r[a]=s:n(a,s)}}},ne="!",xe=":",ct=[],we=(e,t,r,o,n)=>({modifiers:e,hasImportantModifier:t,baseClassName:r,maybePostfixModifierPosition:o,isExternal:n}),dt=e=>{const{prefix:t,experimentalParseClassName:r}=e;let o=n=>{const a=[];let s=0,m=0,d=0,f;const x=n.length;for(let p=0;p<x;p++){const h=n[p];if(s===0&&m===0){if(h===xe){a.push(n.slice(d,p)),d=p+1;continue}if(h==="/"){f=p;continue}}h==="["?s++:h==="]"?s--:h==="("?m++:h===")"&&m--}const w=a.length===0?n:n.slice(d);let E=w,_=!1;w.endsWith(ne)?(E=w.slice(0,-1),_=!0):w.startsWith(ne)&&(E=w.slice(1),_=!0);const z=f&&f>d?f-d:void 0;return we(a,_,E,z)};if(t){const n=t+xe,a=o;o=s=>s.startsWith(n)?a(s.slice(n.length)):we(ct,!1,s,void 0,!0)}if(r){const n=o;o=a=>r({className:a,parseClassName:n})}return o},mt=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((r,o)=>{t.set(r,1e6+o)}),r=>{const o=[];let n=[];for(let a=0;a<r.length;a++){const s=r[a],m=s[0]==="[",d=t.has(s);m||d?(n.length>0&&(n.sort(),o.push(...n),n=[]),o.push(s)):n.push(s)}return n.length>0&&(n.sort(),o.push(...n)),o}},ut=e=>({cache:lt(e.cacheSize),parseClassName:dt(e),sortModifiers:mt(e),...Qe(e)}),pt=/\s+/,ft=(e,t)=>{const{parseClassName:r,getClassGroupId:o,getConflictingClassGroupIds:n,sortModifiers:a}=t,s=[],m=e.trim().split(pt);let d="";for(let f=m.length-1;f>=0;f-=1){const x=m[f],{isExternal:w,modifiers:E,hasImportantModifier:_,baseClassName:z,maybePostfixModifierPosition:p}=r(x);if(w){d=x+(d.length>0?" "+d:d);continue}let h=!!p,A=o(h?z.substring(0,p):z);if(!A){if(!h){d=x+(d.length>0?" "+d:d);continue}if(A=o(z),!A){d=x+(d.length>0?" "+d:d);continue}h=!1}const T=E.length===0?"":E.length===1?E[0]:a(E).join(":"),W=_?T+ne:T,j=W+A;if(s.indexOf(j)>-1)continue;s.push(j);const O=n(A,h);for(let P=0;P<O.length;++P){const B=O[P];s.push(W+B)}d=x+(d.length>0?" "+d:d)}return d},bt=(...e)=>{let t=0,r,o,n="";for(;t<e.length;)(r=e[t++])&&(o=Ae(r))&&(n&&(n+=" "),n+=o);return n},Ae=e=>{if(typeof e=="string")return e;let t,r="";for(let o=0;o<e.length;o++)e[o]&&(t=Ae(e[o]))&&(r&&(r+=" "),r+=t);return r},gt=(e,...t)=>{let r,o,n,a;const s=d=>{const f=t.reduce((x,w)=>w(x),e());return r=ut(f),o=r.cache.get,n=r.cache.set,a=m,m(d)},m=d=>{const f=o(d);if(f)return f;const x=ft(d,r);return n(d,x),x};return a=s,(...d)=>a(bt(...d))},ht=[],y=e=>{const t=r=>r[e]||ht;return t.isThemeGetter=!0,t},Se=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Re=/^\((?:(\w[\w-]*):)?(.+)\)$/i,xt=/^\d+\/\d+$/,wt=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,kt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,yt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,vt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Et=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,V=e=>xt.test(e),g=e=>!!e&&!Number.isNaN(Number(e)),M=e=>!!e&&Number.isInteger(Number(e)),oe=e=>e.endsWith("%")&&g(e.slice(0,-1)),I=e=>wt.test(e),_t=()=>!0,Ct=e=>kt.test(e)&&!yt.test(e),Ie=()=>!1,zt=e=>vt.test(e),Nt=e=>Et.test(e),At=e=>!l(e)&&!c(e),St=e=>D(e,Pe,Ie),l=e=>Se.test(e),G=e=>D(e,Le,Ct),se=e=>D(e,Pt,g),ke=e=>D(e,Me,Ie),Rt=e=>D(e,Te,Nt),Z=e=>D(e,Ge,zt),c=e=>Re.test(e),U=e=>F(e,Le),It=e=>F(e,Lt),ye=e=>F(e,Me),Mt=e=>F(e,Pe),Tt=e=>F(e,Te),J=e=>F(e,Ge,!0),D=(e,t,r)=>{const o=Se.exec(e);return o?o[1]?t(o[1]):r(o[2]):!1},F=(e,t,r=!1)=>{const o=Re.exec(e);return o?o[1]?t(o[1]):r:!1},Me=e=>e==="position"||e==="percentage",Te=e=>e==="image"||e==="url",Pe=e=>e==="length"||e==="size"||e==="bg-size",Le=e=>e==="length",Pt=e=>e==="number",Lt=e=>e==="family-name",Ge=e=>e==="shadow",Gt=()=>{const e=y("color"),t=y("font"),r=y("text"),o=y("font-weight"),n=y("tracking"),a=y("leading"),s=y("breakpoint"),m=y("container"),d=y("spacing"),f=y("radius"),x=y("shadow"),w=y("inset-shadow"),E=y("text-shadow"),_=y("drop-shadow"),z=y("blur"),p=y("perspective"),h=y("aspect"),A=y("ease"),T=y("animate"),W=()=>["auto","avoid","all","avoid-page","page","left","right","column"],j=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],O=()=>[...j(),c,l],P=()=>["auto","hidden","clip","visible","scroll"],B=()=>["auto","contain","none"],b=()=>[c,l,d],S=()=>[V,"full","auto",...b()],le=()=>[M,"none","subgrid",c,l],ce=()=>["auto",{span:["full",M,c,l]},M,c,l],q=()=>[M,"auto",c,l],de=()=>["auto","min","max","fr",c,l],ee=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],$=()=>["start","end","center","stretch","center-safe","end-safe"],R=()=>["auto",...b()],L=()=>[V,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...b()],u=()=>[e,c,l],me=()=>[...j(),ye,ke,{position:[c,l]}],ue=()=>["no-repeat",{repeat:["","x","y","space","round"]}],pe=()=>["auto","cover","contain",Mt,St,{size:[c,l]}],te=()=>[oe,U,G],C=()=>["","none","full",f,c,l],N=()=>["",g,U,G],H=()=>["solid","dashed","dotted","double"],fe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],v=()=>[g,oe,ye,ke],be=()=>["","none",z,c,l],K=()=>["none",g,c,l],Y=()=>["none",g,c,l],re=()=>[g,c,l],X=()=>[V,"full",...b()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[I],breakpoint:[I],color:[_t],container:[I],"drop-shadow":[I],ease:["in","out","in-out"],font:[At],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[I],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[I],shadow:[I],spacing:["px",g],text:[I],"text-shadow":[I],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",V,l,c,h]}],container:["container"],columns:[{columns:[g,l,c,m]}],"break-after":[{"break-after":W()}],"break-before":[{"break-before":W()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:O()}],overflow:[{overflow:P()}],"overflow-x":[{"overflow-x":P()}],"overflow-y":[{"overflow-y":P()}],overscroll:[{overscroll:B()}],"overscroll-x":[{"overscroll-x":B()}],"overscroll-y":[{"overscroll-y":B()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:S()}],"inset-x":[{"inset-x":S()}],"inset-y":[{"inset-y":S()}],start:[{start:S()}],end:[{end:S()}],top:[{top:S()}],right:[{right:S()}],bottom:[{bottom:S()}],left:[{left:S()}],visibility:["visible","invisible","collapse"],z:[{z:[M,"auto",c,l]}],basis:[{basis:[V,"full","auto",m,...b()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[g,V,"auto","initial","none",l]}],grow:[{grow:["",g,c,l]}],shrink:[{shrink:["",g,c,l]}],order:[{order:[M,"first","last","none",c,l]}],"grid-cols":[{"grid-cols":le()}],"col-start-end":[{col:ce()}],"col-start":[{"col-start":q()}],"col-end":[{"col-end":q()}],"grid-rows":[{"grid-rows":le()}],"row-start-end":[{row:ce()}],"row-start":[{"row-start":q()}],"row-end":[{"row-end":q()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":de()}],"auto-rows":[{"auto-rows":de()}],gap:[{gap:b()}],"gap-x":[{"gap-x":b()}],"gap-y":[{"gap-y":b()}],"justify-content":[{justify:[...ee(),"normal"]}],"justify-items":[{"justify-items":[...$(),"normal"]}],"justify-self":[{"justify-self":["auto",...$()]}],"align-content":[{content:["normal",...ee()]}],"align-items":[{items:[...$(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...$(),{baseline:["","last"]}]}],"place-content":[{"place-content":ee()}],"place-items":[{"place-items":[...$(),"baseline"]}],"place-self":[{"place-self":["auto",...$()]}],p:[{p:b()}],px:[{px:b()}],py:[{py:b()}],ps:[{ps:b()}],pe:[{pe:b()}],pt:[{pt:b()}],pr:[{pr:b()}],pb:[{pb:b()}],pl:[{pl:b()}],m:[{m:R()}],mx:[{mx:R()}],my:[{my:R()}],ms:[{ms:R()}],me:[{me:R()}],mt:[{mt:R()}],mr:[{mr:R()}],mb:[{mb:R()}],ml:[{ml:R()}],"space-x":[{"space-x":b()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":b()}],"space-y-reverse":["space-y-reverse"],size:[{size:L()}],w:[{w:[m,"screen",...L()]}],"min-w":[{"min-w":[m,"screen","none",...L()]}],"max-w":[{"max-w":[m,"screen","none","prose",{screen:[s]},...L()]}],h:[{h:["screen","lh",...L()]}],"min-h":[{"min-h":["screen","lh","none",...L()]}],"max-h":[{"max-h":["screen","lh",...L()]}],"font-size":[{text:["base",r,U,G]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,c,se]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",oe,l]}],"font-family":[{font:[It,l,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,c,l]}],"line-clamp":[{"line-clamp":[g,"none",c,se]}],leading:[{leading:[a,...b()]}],"list-image":[{"list-image":["none",c,l]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",c,l]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:u()}],"text-color":[{text:u()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...H(),"wavy"]}],"text-decoration-thickness":[{decoration:[g,"from-font","auto",c,G]}],"text-decoration-color":[{decoration:u()}],"underline-offset":[{"underline-offset":[g,"auto",c,l]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:b()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",c,l]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",c,l]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:me()}],"bg-repeat":[{bg:ue()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},M,c,l],radial:["",c,l],conic:[M,c,l]},Tt,Rt]}],"bg-color":[{bg:u()}],"gradient-from-pos":[{from:te()}],"gradient-via-pos":[{via:te()}],"gradient-to-pos":[{to:te()}],"gradient-from":[{from:u()}],"gradient-via":[{via:u()}],"gradient-to":[{to:u()}],rounded:[{rounded:C()}],"rounded-s":[{"rounded-s":C()}],"rounded-e":[{"rounded-e":C()}],"rounded-t":[{"rounded-t":C()}],"rounded-r":[{"rounded-r":C()}],"rounded-b":[{"rounded-b":C()}],"rounded-l":[{"rounded-l":C()}],"rounded-ss":[{"rounded-ss":C()}],"rounded-se":[{"rounded-se":C()}],"rounded-ee":[{"rounded-ee":C()}],"rounded-es":[{"rounded-es":C()}],"rounded-tl":[{"rounded-tl":C()}],"rounded-tr":[{"rounded-tr":C()}],"rounded-br":[{"rounded-br":C()}],"rounded-bl":[{"rounded-bl":C()}],"border-w":[{border:N()}],"border-w-x":[{"border-x":N()}],"border-w-y":[{"border-y":N()}],"border-w-s":[{"border-s":N()}],"border-w-e":[{"border-e":N()}],"border-w-t":[{"border-t":N()}],"border-w-r":[{"border-r":N()}],"border-w-b":[{"border-b":N()}],"border-w-l":[{"border-l":N()}],"divide-x":[{"divide-x":N()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":N()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...H(),"hidden","none"]}],"divide-style":[{divide:[...H(),"hidden","none"]}],"border-color":[{border:u()}],"border-color-x":[{"border-x":u()}],"border-color-y":[{"border-y":u()}],"border-color-s":[{"border-s":u()}],"border-color-e":[{"border-e":u()}],"border-color-t":[{"border-t":u()}],"border-color-r":[{"border-r":u()}],"border-color-b":[{"border-b":u()}],"border-color-l":[{"border-l":u()}],"divide-color":[{divide:u()}],"outline-style":[{outline:[...H(),"none","hidden"]}],"outline-offset":[{"outline-offset":[g,c,l]}],"outline-w":[{outline:["",g,U,G]}],"outline-color":[{outline:u()}],shadow:[{shadow:["","none",x,J,Z]}],"shadow-color":[{shadow:u()}],"inset-shadow":[{"inset-shadow":["none",w,J,Z]}],"inset-shadow-color":[{"inset-shadow":u()}],"ring-w":[{ring:N()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:u()}],"ring-offset-w":[{"ring-offset":[g,G]}],"ring-offset-color":[{"ring-offset":u()}],"inset-ring-w":[{"inset-ring":N()}],"inset-ring-color":[{"inset-ring":u()}],"text-shadow":[{"text-shadow":["none",E,J,Z]}],"text-shadow-color":[{"text-shadow":u()}],opacity:[{opacity:[g,c,l]}],"mix-blend":[{"mix-blend":[...fe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":fe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[g]}],"mask-image-linear-from-pos":[{"mask-linear-from":v()}],"mask-image-linear-to-pos":[{"mask-linear-to":v()}],"mask-image-linear-from-color":[{"mask-linear-from":u()}],"mask-image-linear-to-color":[{"mask-linear-to":u()}],"mask-image-t-from-pos":[{"mask-t-from":v()}],"mask-image-t-to-pos":[{"mask-t-to":v()}],"mask-image-t-from-color":[{"mask-t-from":u()}],"mask-image-t-to-color":[{"mask-t-to":u()}],"mask-image-r-from-pos":[{"mask-r-from":v()}],"mask-image-r-to-pos":[{"mask-r-to":v()}],"mask-image-r-from-color":[{"mask-r-from":u()}],"mask-image-r-to-color":[{"mask-r-to":u()}],"mask-image-b-from-pos":[{"mask-b-from":v()}],"mask-image-b-to-pos":[{"mask-b-to":v()}],"mask-image-b-from-color":[{"mask-b-from":u()}],"mask-image-b-to-color":[{"mask-b-to":u()}],"mask-image-l-from-pos":[{"mask-l-from":v()}],"mask-image-l-to-pos":[{"mask-l-to":v()}],"mask-image-l-from-color":[{"mask-l-from":u()}],"mask-image-l-to-color":[{"mask-l-to":u()}],"mask-image-x-from-pos":[{"mask-x-from":v()}],"mask-image-x-to-pos":[{"mask-x-to":v()}],"mask-image-x-from-color":[{"mask-x-from":u()}],"mask-image-x-to-color":[{"mask-x-to":u()}],"mask-image-y-from-pos":[{"mask-y-from":v()}],"mask-image-y-to-pos":[{"mask-y-to":v()}],"mask-image-y-from-color":[{"mask-y-from":u()}],"mask-image-y-to-color":[{"mask-y-to":u()}],"mask-image-radial":[{"mask-radial":[c,l]}],"mask-image-radial-from-pos":[{"mask-radial-from":v()}],"mask-image-radial-to-pos":[{"mask-radial-to":v()}],"mask-image-radial-from-color":[{"mask-radial-from":u()}],"mask-image-radial-to-color":[{"mask-radial-to":u()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":j()}],"mask-image-conic-pos":[{"mask-conic":[g]}],"mask-image-conic-from-pos":[{"mask-conic-from":v()}],"mask-image-conic-to-pos":[{"mask-conic-to":v()}],"mask-image-conic-from-color":[{"mask-conic-from":u()}],"mask-image-conic-to-color":[{"mask-conic-to":u()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:me()}],"mask-repeat":[{mask:ue()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",c,l]}],filter:[{filter:["","none",c,l]}],blur:[{blur:be()}],brightness:[{brightness:[g,c,l]}],contrast:[{contrast:[g,c,l]}],"drop-shadow":[{"drop-shadow":["","none",_,J,Z]}],"drop-shadow-color":[{"drop-shadow":u()}],grayscale:[{grayscale:["",g,c,l]}],"hue-rotate":[{"hue-rotate":[g,c,l]}],invert:[{invert:["",g,c,l]}],saturate:[{saturate:[g,c,l]}],sepia:[{sepia:["",g,c,l]}],"backdrop-filter":[{"backdrop-filter":["","none",c,l]}],"backdrop-blur":[{"backdrop-blur":be()}],"backdrop-brightness":[{"backdrop-brightness":[g,c,l]}],"backdrop-contrast":[{"backdrop-contrast":[g,c,l]}],"backdrop-grayscale":[{"backdrop-grayscale":["",g,c,l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[g,c,l]}],"backdrop-invert":[{"backdrop-invert":["",g,c,l]}],"backdrop-opacity":[{"backdrop-opacity":[g,c,l]}],"backdrop-saturate":[{"backdrop-saturate":[g,c,l]}],"backdrop-sepia":[{"backdrop-sepia":["",g,c,l]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":b()}],"border-spacing-x":[{"border-spacing-x":b()}],"border-spacing-y":[{"border-spacing-y":b()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",c,l]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[g,"initial",c,l]}],ease:[{ease:["linear","initial",A,c,l]}],delay:[{delay:[g,c,l]}],animate:[{animate:["none",T,c,l]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,c,l]}],"perspective-origin":[{"perspective-origin":O()}],rotate:[{rotate:K()}],"rotate-x":[{"rotate-x":K()}],"rotate-y":[{"rotate-y":K()}],"rotate-z":[{"rotate-z":K()}],scale:[{scale:Y()}],"scale-x":[{"scale-x":Y()}],"scale-y":[{"scale-y":Y()}],"scale-z":[{"scale-z":Y()}],"scale-3d":["scale-3d"],skew:[{skew:re()}],"skew-x":[{"skew-x":re()}],"skew-y":[{"skew-y":re()}],transform:[{transform:[c,l,"","none","gpu","cpu"]}],"transform-origin":[{origin:O()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:X()}],"translate-x":[{"translate-x":X()}],"translate-y":[{"translate-y":X()}],"translate-z":[{"translate-z":X()}],"translate-none":["translate-none"],accent:[{accent:u()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:u()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",c,l]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":b()}],"scroll-mx":[{"scroll-mx":b()}],"scroll-my":[{"scroll-my":b()}],"scroll-ms":[{"scroll-ms":b()}],"scroll-me":[{"scroll-me":b()}],"scroll-mt":[{"scroll-mt":b()}],"scroll-mr":[{"scroll-mr":b()}],"scroll-mb":[{"scroll-mb":b()}],"scroll-ml":[{"scroll-ml":b()}],"scroll-p":[{"scroll-p":b()}],"scroll-px":[{"scroll-px":b()}],"scroll-py":[{"scroll-py":b()}],"scroll-ps":[{"scroll-ps":b()}],"scroll-pe":[{"scroll-pe":b()}],"scroll-pt":[{"scroll-pt":b()}],"scroll-pr":[{"scroll-pr":b()}],"scroll-pb":[{"scroll-pb":b()}],"scroll-pl":[{"scroll-pl":b()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",c,l]}],fill:[{fill:["none",...u()]}],"stroke-w":[{stroke:[g,U,G,se]}],stroke:[{stroke:["none",...u()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},jt=gt(Gt);function k(...e){return jt(Ye(e))}const Ot=({items:e,variant:t="void",className:r,...o})=>{const[n,a]=i.useState(null),s=m=>{a(n===m?null:m)};return i.createElement("div",{className:"flex flex-col"},e.map((m,d)=>{const f=`accordion-content-${m.id}`,x=`accordion-title-${m.id}`,w=n===m.id,E=d===0,_=i.useRef(null),[z,p]=i.useState(0);return i.useLayoutEffect(()=>{_.current&&p(_.current.scrollHeight)},[w]),i.createElement("div",{key:m.id,className:k("bg-black border-2",t==="void"?"border-white":"border-red-900",!E&&"-mt-0.5","hover:shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]",r),...o},i.createElement("button",{"aria-expanded":w,"aria-controls":f,onClick:()=>s(m.id),className:"w-full flex items-center justify-between p-4 text-left"},i.createElement("span",{id:x,className:"font-serif text-lg uppercase tracking-tighter text-white"},m.title),i.createElement(Ee,{size:20,strokeWidth:1.5,className:k(t==="void"?"text-white":"text-red-600","transition-transform duration-300",w&&"rotate-180")})),i.createElement(je.motion.div,{key:`motion-content-${m.id}`,role:"region",id:f,"aria-labelledby":x,className:"overflow-hidden w-full",initial:{maxHeight:0},animate:{maxHeight:w?z:0},transition:{duration:.3,ease:"easeInOut"}},i.createElement("div",{ref:_,className:"px-4 pb-4 text-zinc-500 text-sm font-sans leading-relaxed"},m.content)))}))},$t=({children:e,variant:t="void",size:r="md",styleType:o="outline",className:n,...a})=>i.createElement("span",{className:k("inline-block border-2 font-serif uppercase tracking-widest transition-all duration-300",r==="sm"?"px-2 py-0.5 text-xs":"px-3 py-1 text-sm",o==="solid"?t==="void"?"bg-white text-black":"bg-red-900 text-white":`bg-black ${t==="void"?"border-white":"border-red-900"} ${t==="void"?"text-white":"text-red-600"}`,"hover:shadow-[4px_4px_0px_0px_rgba(255,255,255,0.1)]",n),...a},e),Vt=({variant:e="void",size:t="md",className:r,...o})=>i.createElement("button",{className:k("border-2 font-serif uppercase tracking-widest transition-all duration-300",t==="sm"&&"px-3 py-1 text-xs",t==="md"&&"px-6 py-2 text-sm",t==="lg"&&"px-10 py-4 text-base",e==="void"?"border-white text-white hover:bg-white hover:text-black":"border-red-900 text-red-600 hover:bg-red-900 hover:text-white",r),...o}),Dt=({title:e,description:t,variant:r="void",className:o,children:n,...a})=>i.createElement("div",{className:k("bg-black border-2",r==="void"?"border-white":"border-red-900","p-6 transition-all duration-300",r==="void"?"hover:shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]":"hover:shadow-[8px_8px_0px_0px_rgba(136,8,8,0.3)]",o),...a},i.createElement("h3",{className:"font-serif text-2xl uppercase tracking-tighter text-white mb-2"},e),t&&i.createElement("p",{className:"text-zinc-500 text-sm mb-4 font-sans leading-relaxed"},t),i.createElement("div",{className:"mt-4"},n)),Ft=({label:e,variant:t="void",checked:r,className:o,...n})=>i.createElement("label",{className:"inline-flex items-center gap-3 cursor-pointer group"},i.createElement("div",{className:"relative"},i.createElement("input",{type:"checkbox",className:"sr-only peer",checked:r,...n}),i.createElement("div",{className:k("w-5 h-5 border-2",t==="void"?"border-white":"border-red-900","bg-black transition-all duration-300",t==="void"?"peer-checked:bg-white":"peer-checked:bg-red-900","group-hover:shadow-[4px_4px_0px_0px_rgba(255,255,255,0.1)] flex items-center justify-center",r&&t==="void"?"bg-white":"bg-red-900",o)},r&&i.createElement(Ue,{size:14,strokeWidth:1.5,className:k(t==="void"?"text-black":"text-white","transform scale-0 opacity-0 transition-all duration-300 ease-out",r&&"scale-100 opacity-100")}))),e&&i.createElement("span",{className:k("font-sans text-sm",t==="void"?"text-white":"text-red-600","uppercase tracking-wider")},e)),Wt=({variant:e="void",size:t="md",label:r,error:o,className:n,inputSize:a,...s})=>i.createElement("div",{className:"flex flex-col gap-2"},r&&i.createElement("label",{className:k("font-serif",t==="sm"?"text-xs":"text-sm","uppercase tracking-widest",e==="void"?"text-white":"text-red-600")},r),i.createElement("input",{className:k("bg-black border-2",o?"border-red-600 animate-pulse":e==="void"?"border-white":"border-red-900",t==="sm"?"px-2 py-1.5 text-xs":"px-4 py-3 text-sm",e==="void"?"text-white":"text-red-600","placeholder:text-zinc-600 font-sans text-sm transition-all duration-300",e==="void"?"focus:shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]":"focus:shadow-[8px_8px_0px_0px_rgba(136,8,8,0.3)]","focus:outline-none",n),size:a,...s}),o&&i.createElement("span",{className:"text-red-600 font-sans text-xs mt-1"},o)),Bt=({isOpen:e,onClose:t,title:r,description:o,children:n,variant:a="void",className:s="",...m})=>{const d=i.useRef(null),f=i.useRef(null);return i.useEffect(()=>{e&&(f.current=document.activeElement)},[e]),i.useEffect(()=>{if(!e||!d.current)return;const x=d.current,w=()=>{const p=x.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');return Array.from(p).filter(h=>!h.hasAttribute("disabled"))};(()=>{if(x){x.focus();return}w()[0]?.focus()})();const _=p=>{if(p.key==="Escape"){p.preventDefault(),t();return}if(p.key!=="Tab")return;const h=w();if(h.length===0){p.preventDefault(),x.focus();return}const A=h[0],T=h[h.length-1];p.shiftKey?(document.activeElement===A||document.activeElement===x)&&(p.preventDefault(),T.focus()):document.activeElement===T&&(p.preventDefault(),A.focus())},z=p=>{if(!d.current)return;const h=d.current;p.relatedTarget&&!h.contains(p.relatedTarget)&&(w()[0]||h).focus()};return document.addEventListener("keydown",_),x.addEventListener("focusout",z),()=>{document.removeEventListener("keydown",_),x.removeEventListener("focusout",z)}},[e,t]),i.useEffect(()=>{!e&&f.current instanceof HTMLElement&&f.current.focus()},[e]),i.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="unset",()=>{document.body.style.overflow="unset"}),[e]),e?Oe.createPortal(i.createElement("div",{className:"fixed inset-0 z-[100] flex items-center justify-center",role:"dialog","aria-modal":"true","aria-labelledby":"crypt-modal-title","aria-describedby":"crypt-modal-description"},i.createElement("div",{className:"absolute inset-0 bg-black/95 backdrop-blur-none",onClick:t}),i.createElement("div",{className:k("relative bg-black border-2",a==="void"?"border-white":"border-red-900","p-8 transition-all duration-300",a==="void"?"shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]":"shadow-[8px_8px_0px_0px_rgba(136,8,8,0.3)]","max-w-lg w-full mx-4",s),...m},i.createElement("button",{onClick:t,"aria-label":"Fechar modal",className:k("absolute top-4 right-4",a==="void"?"text-white":"text-red-600","hover:opacity-70 transition-opacity duration-300")},i.createElement(Ke,{size:24,strokeWidth:1.5})),i.createElement("h2",{id:"crypt-modal-title",className:"font-serif text-2xl uppercase tracking-tighter text-white mb-2"},r),o&&i.createElement("p",{id:"crypt-modal-description",className:"text-zinc-500 text-sm mb-6 font-sans leading-relaxed"},o),i.createElement("div",{className:"mt-4"},n))),document.body):null},Ut=({options:e,value:t,onChange:r,placeholder:o="Select...",label:n,variant:a="void",size:s="md",className:m=""})=>{const[d,f]=i.useState(!1),[x,w]=i.useState(-1),E=i.useRef(null),_=e.find(p=>p.value===t);i.useEffect(()=>{const p=h=>{E.current&&!E.current.contains(h.target)&&(f(!1),w(-1))};return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[]);const z=p=>{if(!d){(p.key==="Enter"||p.key==="ArrowDown")&&(f(!0),w(0));return}switch(p.key){case"Escape":f(!1),w(-1);break;case"ArrowDown":p.preventDefault(),w(h=>h<e.length-1?h+1:0);break;case"ArrowUp":p.preventDefault(),w(h=>h>0?h-1:e.length-1);break;case"Enter":if(p.preventDefault(),x>=0){const h=e[x];r?.(h.value),f(!1),w(-1)}break}};return i.createElement("div",{className:"flex flex-col gap-2",ref:E,onKeyDown:z},n&&i.createElement("label",{id:"ritual-select-label",className:k("font-serif text-sm uppercase tracking-widest",a==="void"?"text-white":"text-red-600")},n),i.createElement("div",{className:"relative"},i.createElement("button",{type:"button","aria-haspopup":"listbox","aria-expanded":d,"aria-labelledby":n?"ritual-select-label":void 0,onClick:()=>f(!d),className:k("w-full bg-black border-2",a==="void"?"border-white":"border-red-900",s==="sm"&&"px-2 py-1.5",s==="md"&&"px-4 py-3",s==="lg"&&"px-7 py-6","flex items-center justify-between transition-all duration-300",d?a==="void"?"shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]":"shadow-[8px_8px_0px_0px_rgba(136,8,8,0.3)]":a==="void"?"hover:shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]":"hover:shadow-[8px_8px_0px_0px_rgba(136,8,8,0.3)]",m)},i.createElement("span",{className:k("font-sans text-sm",_?a==="void"?"text-white":"text-red-600":"text-zinc-600")},_?.label||o),i.createElement(Ee,{size:18,strokeWidth:1.5,className:k(a==="void"?"text-white":"text-red-600","transition-transform duration-300",d&&"rotate-180")})),d&&i.createElement("div",{className:k("absolute z-50 w-full mt-1 bg-black border-2",a==="void"?"border-white":"border-red-900",a==="void"?"shadow-[8px_8px_0px_0px_rgba(255,255,255,0.1)]":"shadow-[8px_8px_0px_0px_rgba(136,8,8,0.3)]"),role:"listbox",tabIndex:-1},e.map((p,h)=>i.createElement("button",{key:p.value,type:"button",role:"option","aria-selected":p.value===t,onClick:()=>{r?.(p.value),f(!1),w(-1)},className:k("w-full px-4 py-3 text-left font-sans text-sm",a==="void"?"text-white":"text-red-600","transition-colors duration-300",p.value===t&&"bg-zinc-900",x===h?"bg-zinc-800":"hover:bg-zinc-900")},p.label)))))},qt=({variant:e="void",label:t,className:r="",...o})=>i.createElement("div",{className:"relative flex items-center py-8 w-full",role:"separator"},i.createElement("div",{className:k("flex-grow border-t-2",e==="void"?"border-white":"border-red-900")}),i.createElement("div",{className:k("flex-none px-4 font-serif text-xl uppercase tracking-tighter",e==="void"?"text-white":"text-red-600",r),...o},t||"✦"),i.createElement("div",{className:k("flex-grow border-t-2",e==="void"?"border-white":"border-red-900")})),Ht=({tabs:e,variant:t="void",className:r="",...o})=>{const[n,a]=i.useState(e[0].id);return i.createElement("div",{className:"w-full"},i.createElement("div",{className:"flex border-b-2 border-zinc-900",role:"tablist","aria-label":"Soul Tabs"},e.map(s=>i.createElement("button",{key:s.id,role:"tab","aria-selected":n===s.id,"aria-controls":`panel-${s.id}`,id:`tab-${s.id}`,onClick:()=>a(s.id),className:k("px-6 py-2 font-serif uppercase tracking-widest border-2 border-b-0",t==="void"?"border-white":"border-red-900","transition-all duration-300",n===s.id?t==="void"?"bg-white text-black":"bg-red-900 text-white":"bg-black text-zinc-500 hover:text-white","-mr-0.5",r),...o},s.label))),i.createElement("div",{className:"py-6"},e.map(s=>i.createElement("div",{key:s.id,id:`panel-${s.id}`,role:"tabpanel","aria-labelledby":`tab-${s.id}`,hidden:n!==s.id,className:"text-zinc-500 font-sans leading-relaxed animate-in fade-in duration-500"},s.content))))};exports.AbyssSeparator=qt;exports.CryptModal=Bt;exports.GrimoireAccordion=Ot;exports.HexCheckbox=Ft;exports.NocturnaCard=Dt;exports.RitualSelect=Ut;exports.SigilBadge=$t;exports.SoulTabs=Ht;exports.VeinInput=Wt;exports.VoidButton=Vt;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,10 @@
1
+ export { GrimoireAccordion } from './components/Accordion';
2
+ export { SigilBadge } from './components/Badge';
1
3
  export { VoidButton } from './components/Button';
2
4
  export { NocturnaCard } from './components/Card';
5
+ export { HexCheckbox } from './components/Checkbox';
6
+ export { VeinInput } from './components/Input';
7
+ export { CryptModal } from './components/Modal';
8
+ export { RitualSelect } from './components/Select';
9
+ export { AbyssSeparator } from './components/Separator';
10
+ export { SoulTabs } from './components/Tabs';