nocturna-ui 0.0.1 → 0.0.2

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,53 @@
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
+ ## 🌑 Novidades da v0.0.2
12
+
13
+ - **Acessibilidade**: Implementação de _Focus Trap_ em modais, navegação por teclado em selects e atributos ARIA completos.
14
+ - **Utilitário `cn`**: Integração de `tailwind-merge` e `clsx` para garantir que seus estilos customizados nunca conflitem com os da lib.
15
+ - **React Portals**: Diálogos e Modais agora são renderizados fora da árvore principal para evitar problemas de z-index.
16
+ - **Expansão do Grimório**: Adição de Accordion, Tabs, Badges, Separators e Checkboxes.
17
+
18
+ ## 🕸️ Componentes Disponíveis
19
+
20
+ | Primitivo | Descrição |
21
+ | :-------------------- | :------------------------------------------------------------ |
22
+ | **VoidButton** | Botão brutalista com suporte a tamanhos sm/md/lg. |
23
+ | **CryptModal** | Modal com portal e trava de foco para acessibilidade. |
24
+ | **RitualSelect** | Select customizado com suporte total a navegação via teclado. |
25
+ | **GrimoireAccordion** | Acordeão com animação de altura dinâmica via Framer Motion. |
26
+ | **SoulTabs** | Sistema de abas para organização de conteúdos densos. |
27
+ | **VeinInput** | Input de texto com estados de erro e animação de pulso. |
28
+ | **HexCheckbox** | Checkbox temático com animação de escala. |
29
+ | **AbyssSeparator** | Divisor de seção com suporte a labels e sigilos. |
30
+ | **SigilBadge** | Emblemas para status e tags em versões Solid ou Outline. |
31
+ | **NocturnaCard** | Container clássico com sombras rígidas (hard shadows). |
32
+
33
+ ## 🩸 Instalação e Uso
34
+
35
+ ```bash
36
+ npm install nocturna-ui
37
+
38
+ ```
39
+
40
+ ```tsx
41
+ import "nocturna-ui/dist/style.css";
42
+ import { VoidButton, CryptModal } from "nocturna-ui";
43
+
44
+ export const Ritual = () => (
45
+ <VoidButton variant="blood" size="lg">
46
+ Iniciar Invocação
47
+ </VoidButton>
48
+ );
49
+ ```
50
+
51
+ ---
52
+
53
+ 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 {};