@dexcode-packages/ui 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # @dexcode-packages/ui
2
+
3
+ Componentes React (TypeScript + Tailwind CSS) para projetos Next.js, sem
4
+ dependências de terceiros. Os componentes só usam classes utilitárias do
5
+ Tailwind — o CSS não é enviado pelo pacote, quem gera o CSS final é o
6
+ Tailwind do projeto que consome a lib.
7
+
8
+ ## Instalação
9
+
10
+ ```bash
11
+ npm install @dexcode-packages/ui
12
+ ```
13
+
14
+ Requer `react` e `react-dom` >= 18 (peerDependencies) e Tailwind CSS
15
+ configurado no projeto consumidor.
16
+
17
+ ## Configurar o Tailwind para enxergar os componentes
18
+
19
+ O Tailwind v4 ignora `node_modules` por padrão. Adicione a diretiva
20
+ `@source` no seu CSS global apontando para o pacote publicado:
21
+
22
+ ```css
23
+ @import "tailwindcss";
24
+ @source "../node_modules/@dexcode-packages/ui";
25
+ ```
26
+
27
+ (No Tailwind v3, adicione o mesmo caminho no array `content` do
28
+ `tailwind.config.js`.)
29
+
30
+ ## Uso
31
+
32
+ ```tsx
33
+ import { Button } from '@dexcode-packages/ui'
34
+
35
+ export function Example() {
36
+ return (
37
+ <Button variant="primary" size="md" onClick={() => console.log('clicou')}>
38
+ Salvar
39
+ </Button>
40
+ )
41
+ }
42
+ ```
43
+
44
+ ### `Button`
45
+
46
+ | Prop | Tipo | Padrão |
47
+ | --------- | -------------------------------------------------- | ----------- |
48
+ | `variant` | `'primary' \| 'secondary' \| 'outline' \| 'ghost'` | `'primary'` |
49
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` |
50
+
51
+ Aceita todas as demais props de `<button>` (`onClick`, `disabled`, etc).
52
+
53
+ Documentação completa com exemplos ao vivo: ver o app `docs` deste monorepo.
package/dist/index.cjs ADDED
@@ -0,0 +1,42 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ var react = require('react');
5
+ var helper = require('@dexcode-packages/helper');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ // src/components/button/button.tsx
9
+ var variantClasses = {
10
+ primary: "bg-slate-900 text-white hover:bg-slate-700 focus-visible:outline-slate-900",
11
+ secondary: "bg-slate-100 text-slate-900 hover:bg-slate-200 focus-visible:outline-slate-400",
12
+ outline: "border border-slate-300 text-slate-900 hover:bg-slate-50 focus-visible:outline-slate-400",
13
+ ghost: "text-slate-900 hover:bg-slate-100 focus-visible:outline-slate-400"
14
+ };
15
+ var sizeClasses = {
16
+ sm: "h-8 px-3 text-sm",
17
+ md: "h-10 px-4 text-sm",
18
+ lg: "h-12 px-6 text-base"
19
+ };
20
+ var Button = react.forwardRef(
21
+ ({ className, variant = "primary", size = "md", type = "button", ...props }, ref) => {
22
+ return /* @__PURE__ */ jsxRuntime.jsx(
23
+ "button",
24
+ {
25
+ ref,
26
+ type,
27
+ className: helper.cn(
28
+ "inline-flex items-center justify-center rounded-md font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",
29
+ variantClasses[variant],
30
+ sizeClasses[size],
31
+ className
32
+ ),
33
+ ...props
34
+ }
35
+ );
36
+ }
37
+ );
38
+ Button.displayName = "Button";
39
+
40
+ exports.Button = Button;
41
+ //# sourceMappingURL=index.cjs.map
42
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/button/button.tsx"],"names":["forwardRef","jsx","cn"],"mappings":";;;;;;;AAcA,IAAM,cAAA,GAAgD;AAAA,EACpD,OAAA,EAAS,4EAAA;AAAA,EACT,SAAA,EAAW,gFAAA;AAAA,EACX,OAAA,EAAS,0FAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,WAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,kBAAA;AAAA,EACJ,EAAA,EAAI,mBAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,MAAA,GAASA,gBAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,IAAA,EAAM,IAAA,GAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACnF,IAAA,uBACEC,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA,EAAWC,SAAA;AAAA,UACT,gNAAA;AAAA,UACA,eAAe,OAAO,CAAA;AAAA,UACtB,YAAY,IAAI,CAAA;AAAA,UAChB;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"index.cjs","sourcesContent":["'use client'\n\nimport { forwardRef } from 'react'\nimport type { ButtonHTMLAttributes } from 'react'\nimport { cn } from '@dexcode-packages/helper'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n}\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'bg-slate-900 text-white hover:bg-slate-700 focus-visible:outline-slate-900',\n secondary: 'bg-slate-100 text-slate-900 hover:bg-slate-200 focus-visible:outline-slate-400',\n outline: 'border border-slate-300 text-slate-900 hover:bg-slate-50 focus-visible:outline-slate-400',\n ghost: 'text-slate-900 hover:bg-slate-100 focus-visible:outline-slate-400'\n}\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base'\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = 'primary', size = 'md', type = 'button', ...props }, ref) => {\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n 'inline-flex items-center justify-center rounded-md font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n />\n )\n }\n)\n\nButton.displayName = 'Button'\n"]}
@@ -0,0 +1,12 @@
1
+ import * as react from 'react';
2
+ import { ButtonHTMLAttributes } from 'react';
3
+
4
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost';
5
+ type ButtonSize = 'sm' | 'md' | 'lg';
6
+ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
7
+ variant?: ButtonVariant;
8
+ size?: ButtonSize;
9
+ }
10
+ declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
11
+
12
+ export { Button, type ButtonProps, type ButtonSize, type ButtonVariant };
@@ -0,0 +1,12 @@
1
+ import * as react from 'react';
2
+ import { ButtonHTMLAttributes } from 'react';
3
+
4
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost';
5
+ type ButtonSize = 'sm' | 'md' | 'lg';
6
+ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
7
+ variant?: ButtonVariant;
8
+ size?: ButtonSize;
9
+ }
10
+ declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
11
+
12
+ export { Button, type ButtonProps, type ButtonSize, type ButtonVariant };
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ 'use client'
2
+ import { forwardRef } from 'react';
3
+ import { cn } from '@dexcode-packages/helper';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ // src/components/button/button.tsx
7
+ var variantClasses = {
8
+ primary: "bg-slate-900 text-white hover:bg-slate-700 focus-visible:outline-slate-900",
9
+ secondary: "bg-slate-100 text-slate-900 hover:bg-slate-200 focus-visible:outline-slate-400",
10
+ outline: "border border-slate-300 text-slate-900 hover:bg-slate-50 focus-visible:outline-slate-400",
11
+ ghost: "text-slate-900 hover:bg-slate-100 focus-visible:outline-slate-400"
12
+ };
13
+ var sizeClasses = {
14
+ sm: "h-8 px-3 text-sm",
15
+ md: "h-10 px-4 text-sm",
16
+ lg: "h-12 px-6 text-base"
17
+ };
18
+ var Button = forwardRef(
19
+ ({ className, variant = "primary", size = "md", type = "button", ...props }, ref) => {
20
+ return /* @__PURE__ */ jsx(
21
+ "button",
22
+ {
23
+ ref,
24
+ type,
25
+ className: cn(
26
+ "inline-flex items-center justify-center rounded-md font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",
27
+ variantClasses[variant],
28
+ sizeClasses[size],
29
+ className
30
+ ),
31
+ ...props
32
+ }
33
+ );
34
+ }
35
+ );
36
+ Button.displayName = "Button";
37
+
38
+ export { Button };
39
+ //# sourceMappingURL=index.js.map
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/button/button.tsx"],"names":[],"mappings":";;;;;AAcA,IAAM,cAAA,GAAgD;AAAA,EACpD,OAAA,EAAS,4EAAA;AAAA,EACT,SAAA,EAAW,gFAAA;AAAA,EACX,OAAA,EAAS,0FAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,WAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,kBAAA;AAAA,EACJ,EAAA,EAAI,mBAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,IAAA,EAAM,IAAA,GAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACnF,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,gNAAA;AAAA,UACA,eAAe,OAAO,CAAA;AAAA,UACtB,YAAY,IAAI,CAAA;AAAA,UAChB;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"index.js","sourcesContent":["'use client'\n\nimport { forwardRef } from 'react'\nimport type { ButtonHTMLAttributes } from 'react'\nimport { cn } from '@dexcode-packages/helper'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n}\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'bg-slate-900 text-white hover:bg-slate-700 focus-visible:outline-slate-900',\n secondary: 'bg-slate-100 text-slate-900 hover:bg-slate-200 focus-visible:outline-slate-400',\n outline: 'border border-slate-300 text-slate-900 hover:bg-slate-50 focus-visible:outline-slate-400',\n ghost: 'text-slate-900 hover:bg-slate-100 focus-visible:outline-slate-400'\n}\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base'\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = 'primary', size = 'md', type = 'button', ...props }, ref) => {\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n 'inline-flex items-center justify-center rounded-md font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n />\n )\n }\n)\n\nButton.displayName = 'Button'\n"]}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@dexcode-packages/ui",
3
+ "version": "0.1.1",
4
+ "description": "Componentes React (TypeScript + Tailwind CSS) para projetos Next.js, sem dependencias de terceiros.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "main": "./dist/index.cjs",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": {
14
+ "import": "./dist/index.d.ts",
15
+ "require": "./dist/index.d.cts"
16
+ },
17
+ "import": "./dist/index.js",
18
+ "require": "./dist/index.cjs"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "scripts": {
28
+ "build": "tsup",
29
+ "dev": "tsup --watch"
30
+ },
31
+ "peerDependencies": {
32
+ "react": ">=18",
33
+ "react-dom": ">=18"
34
+ },
35
+ "dependencies": {
36
+ "@dexcode-packages/helper": "^0.2.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/react": "^19.2.0",
40
+ "@types/react-dom": "^19.2.0",
41
+ "react": "^19.2.7",
42
+ "react-dom": "^19.2.7"
43
+ }
44
+ }