beez-ui 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +31 -19
  2. package/README.md +49 -11
  3. package/dist/adapters/unpic-image.js +92 -14
  4. package/dist/components/alert-dialog.js +444 -26
  5. package/dist/components/alert.js +153 -18
  6. package/dist/components/animated-theme-toggler.js +215 -76
  7. package/dist/components/avatar.js +247 -15
  8. package/dist/components/badge.js +18 -16
  9. package/dist/components/button.js +85 -28
  10. package/dist/components/calendar.js +327 -68
  11. package/dist/components/card.js +39 -9
  12. package/dist/components/carousel.js +454 -84
  13. package/dist/components/checkbox.js +50 -3
  14. package/dist/components/data-table.js +827 -583
  15. package/dist/components/dialog.js +363 -22
  16. package/dist/components/dropdown-menu.js +543 -32
  17. package/dist/components/filter-query-bar.js +809 -468
  18. package/dist/components/filter-query-grammar.js +781 -736
  19. package/dist/components/form.js +305 -43
  20. package/dist/components/highlighter.js +142 -87
  21. package/dist/components/hover-card.js +97 -7
  22. package/dist/components/input-group.js +261 -41
  23. package/dist/components/input.js +8 -2
  24. package/dist/components/label.js +38 -3
  25. package/dist/components/link.js +45 -7
  26. package/dist/components/pagination.js +332 -16
  27. package/dist/components/popover.js +222 -16
  28. package/dist/components/radio-group.js +85 -5
  29. package/dist/components/select.js +451 -22
  30. package/dist/components/separator.js +43 -3
  31. package/dist/components/sheet.js +345 -22
  32. package/dist/components/sidebar.js +1385 -193
  33. package/dist/components/skeleton.js +6 -2
  34. package/dist/components/svgs/whatsappIcon.js +11 -1
  35. package/dist/components/switch.js +55 -3
  36. package/dist/components/table.js +288 -18
  37. package/dist/components/tabs.js +161 -18
  38. package/dist/components/textarea.js +7 -2
  39. package/dist/components/themed-toaster.js +63 -20
  40. package/dist/components/tooltip.js +128 -9
  41. package/dist/components/typing-animation.js +335 -150
  42. package/dist/constants/sidebar.js +1 -4
  43. package/dist/hooks/use-mobile.js +8 -8
  44. package/dist/hooks/use-sidebar-persistence.js +27 -27
  45. package/dist/lib/image-dimensions.js +2 -2
  46. package/dist/lib/year-month-filter.js +38 -40
  47. package/dist/next.js +69 -17
  48. package/dist/providers/beez-ui-provider.js +48 -7
  49. package/dist/providers/native-provider.js +40 -6
  50. package/dist/tanstack.js +35 -23
  51. package/package.json +7 -1
package/CHANGELOG.md CHANGED
@@ -1,26 +1,38 @@
1
1
  # Cambios
2
2
 
3
- ## 0.4.0 - 2026-09-08
3
+ ## 0.5.0 - 2026-09-08
4
4
 
5
- - Distribuye los providers nativo, Next y TanStack con tema compartido, navegación e imágenes adaptadas al framework.
6
- - Incluye CSS precompilado, tema y fuentes; los consumidores sólo importan `beez-ui/styles.css`, sin configurar Tailwind.
7
- - Valida el tarball sin compiladores CSS y las integraciones en Chromium y WebKit.
5
+ - Actualiza el paquete a la versión 0.5.0.
8
6
 
9
- ## 0.3.1 - 2026-09-08
10
-
11
- - Publica CSS precompilado para que los estilos funcionen sin Tailwind ni detección de clases en el consumidor.
12
- - Conserva el tema, las fuentes y las utilidades compartidas mediante `beez-ui/styles.css`.
13
- - Verifica estilos computados del tarball servido por HTTP sin procesadores CSS en Chromium y WebKit.
14
-
15
- ## 0.2.0 - 2026-09-08
16
-
17
- - Unifica el nombre `BeezUIProvider` en los entrypoints nativo, Next y TanStack; reemplaza `NextBeezUIProvider`.
18
- - Comparte el tema mediante `next-themes`, `themeOptions` y `useTheme` en todos los providers.
19
- - Restaura `Link` desde la raíz con navegación por adaptadores y prefetch desactivado por defecto.
20
- - Integra Unpic para imágenes nativas y de TanStack, y conserva Next Image en el provider de Next.
21
- - Separa los tipos de tests y valida navegación, imágenes y tema en Chromium y WebKit.
22
-
23
- ## 0.1.1 - 2026-09-08
7
+ ## 0.4.2 - 2026-09-08
8
+
9
+ - Actualiza el paquete a la versión 0.4.2.
10
+
11
+ ## 0.4.1 - 2026-09-08
12
+
13
+ - Actualiza el paquete a la versión 0.4.1.
14
+
15
+ ## 0.4.0 - 2026-09-08
16
+
17
+ - Distribuye los providers nativo, Next y TanStack con tema compartido, navegación e imágenes adaptadas al framework.
18
+ - Incluye CSS precompilado, tema y fuentes; los consumidores sólo importan `beez-ui/styles.css`, sin configurar Tailwind.
19
+ - Valida el tarball sin compiladores CSS y las integraciones en Chromium y WebKit.
20
+
21
+ ## 0.3.1 - 2026-09-08
22
+
23
+ - Publica CSS precompilado para que los estilos funcionen sin Tailwind ni detección de clases en el consumidor.
24
+ - Conserva el tema, las fuentes y las utilidades compartidas mediante `beez-ui/styles.css`.
25
+ - Verifica estilos computados del tarball servido por HTTP sin procesadores CSS en Chromium y WebKit.
26
+
27
+ ## 0.2.0 - 2026-09-08
28
+
29
+ - Unifica el nombre `BeezUIProvider` en los entrypoints nativo, Next y TanStack; reemplaza `NextBeezUIProvider`.
30
+ - Comparte el tema mediante `next-themes`, `themeOptions` y `useTheme` en todos los providers.
31
+ - Restaura `Link` desde la raíz con navegación por adaptadores y prefetch desactivado por defecto.
32
+ - Integra Unpic para imágenes nativas y de TanStack, y conserva Next Image en el provider de Next.
33
+ - Separa los tipos de tests y valida navegación, imágenes y tema en Chromium y WebKit.
34
+
35
+ ## 0.1.1 - 2026-09-08
24
36
 
25
37
  - Publica JavaScript ESM y declaraciones TypeScript en `dist`.
26
38
  - Conserva los componentes agrupados y el tema de LaTribu.
package/README.md CHANGED
@@ -66,6 +66,26 @@ La tabla conserva agrupación estable, columnas configurables, memoización, exc
66
66
 
67
67
  Los componentes compartidos conservan el tema de LaTribu. Se incorporaron atributos `data-variant`/`data-size` del botón, scroll para paneles largos y persistencia opcional del sidebar. Se mantienen `Button.asChild`, estados deshabilitados y skeletons deterministas. `AvatarImage` delega carga y fallback a Base UI; conserva carga diferida y recuperación al cambiar `src`. El export original `Toaster` permanece disponible; `ThemedToaster` agrega los estilos e iconos compartidos.
68
68
 
69
+ ## React Compiler
70
+
71
+ El build usa el port de React Compiler en Rust de [Oxc](https://oxc.rs/blog/2026-08-18-react-compiler-support), mediante `oxc-transform-react`. Esta integración sigue marcada como experimental por Oxc.
72
+
73
+ Las optimizaciones se incluyen en el JavaScript publicado: el consumidor no necesita habilitar React Compiler en Vite, Next ni otro bundler. El target es React 19 y utiliza `react/compiler-runtime`, incluido en el peer React 19.2; no se añade un runtime independiente.
74
+
75
+ TypeScript 7 valida los tipos y genera las declaraciones. Oxc recibe los fuentes originales y ejecuta React Compiler antes de eliminar TypeScript y transformar JSX. Conserva ESM, los exports y las directivas de cliente. Sólo los módulos cuyo prólogo declara `"use client"` reciben memoización automática; los módulos compatibles con Server Components se emiten sin cachés de cliente. Esto evita introducir hooks del runtime de cliente en el render servidor de Next.
76
+
77
+ La cobertura depende de las heurísticas del compilador y de las reglas de React: algunas funciones conservan su implementación sin optimizar. Las memoizaciones y comentarios del código fuente permanecen intactos. El build informa cuántos módulos incluyen memoización automática y falla ante errores fatales de transformación.
78
+
79
+ ```sh
80
+ # Comparar el comportamiento sin memoización automática.
81
+ pnpm test:uncompiled
82
+
83
+ # Volver a generar la distribución optimizada.
84
+ pnpm build
85
+ ```
86
+
87
+ `test:uncompiled` usa `pnpm build --no-react-compiler` y ejecuta Vitest. CI y `release:prepare` ejecutan esa comparación antes del check normal, que restaura el build optimizado. Los consumidores de prueba no habilitan un segundo compilador: ejercen el paquete generado, incluido un componente de servidor real en Next.
88
+
69
89
  ## Desarrollo y validación
70
90
 
71
91
  Usar pnpm **12.3.4**. Las dependencias tienen rangos `^` y el lockfile fija las versiones verificadas.
@@ -79,32 +99,50 @@ pnpm build
79
99
  pnpm release:prepare
80
100
  ```
81
101
 
82
- `pnpm build` compila JavaScript, declaraciones y CSS con el CLI de Tailwind. `pnpm check` ejecuta ESLint 10, los typechecks separados de código y tests con TypeScript 7, y Vitest 5. `tests/tsconfig.json` incorpora los matchers de Testing Library y los tipos de Vite sin incluirlos en el código de producción. `test:browser` verifica una app React/Vite nativa y una app Next real en Chromium y WebKit, tanto en desktop como en móvil. Los tests unitarios importan los archivos compilados. Los consumidores de navegador no instalan plugins de Tailwind, y una prueba adicional sirve el tarball por HTTP sin procesadores CSS para verificar estilos computados y carga de fuentes. Una prueba adicional instala el tarball en un consumidor aislado sin Next y verifica render, filtrado y declaraciones públicas.
102
+ `pnpm build` genera las declaraciones con TypeScript 7, JavaScript con Oxc/React Compiler y CSS con el CLI de Tailwind. `pnpm check` ejecuta ESLint 10, los typechecks separados de código y tests con TypeScript 7, y Vitest 5. `tests/tsconfig.json` incorpora los matchers de Testing Library y los tipos de Vite sin incluirlos en el código de producción. `test:browser` verifica una app React/Vite nativa y una app Next real en Chromium y WebKit, tanto en desktop como en móvil. Los tests unitarios importan los archivos compilados. Los consumidores de navegador no instalan plugins de Tailwind, y una prueba adicional sirve el tarball por HTTP sin procesadores CSS para verificar estilos computados y carga de fuentes. Una prueba adicional instala el tarball en un consumidor aislado sin Next y verifica render, filtrado y declaraciones públicas.
83
103
 
84
104
  Los tests resuelven `beez-ui`, `beez-ui/next` y `beez-ui/tanstack` mediante rutas explícitas a las declaraciones compiladas en `tests/tsconfig.json`. Ejecutar `pnpm build` después de clonar o si falta `dist`; los comandos de validación completos ya lo hacen. Si el editor conserva diagnósticos anteriores después del build, reiniciar su servidor de TypeScript.
85
105
 
86
106
  El compilador `tsc` es TypeScript 7. Para `typescript-eslint`, se mantiene la [API de compatibilidad oficial de TypeScript 6](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/#running-side-by-side-with-typescript-6.0) mediante un alias; no reemplaza el compilador de los typechecks.
87
107
 
88
- ## Preparar y publicar una versión
108
+ ## Crear y publicar una versión
89
109
 
90
- El flujo sigue el utilizado en `eslint-plugin-no-magic`: build reproducible, checks, validación del contenido del tarball y publicación explícita.
110
+ Desde el repositorio de beez-ui, configurar `NPM_TOKEN` con permiso de publicación en el entorno o en `.env`, tomando `.env.example` como referencia. Mantener el archivo local existente si ya está configurado. Después ejecutar:
91
111
 
92
- 1. Actualizar `package.json` y la primera entrada de `CHANGELOG.md` con la misma versión.
93
- 2. Ejecutar `pnpm release:prepare`. Instala desde el lockfile congelado, compila JavaScript y tipos, ejecuta lint, typechecks, tests unitarios, prueba del tarball y tests de navegador.
94
- 3. El comando deja un archivo en `releases/<version>-<sha256>/beez-ui-<version>.tgz`, verifica sus exports y excluye fuentes privadas, tests, scripts, `.env` y `.npmrc`. Las fuentes, estilos y licencias públicas sí forman parte del paquete. Conserva releases anteriores.
95
- 4. Revisar y commitear la versión y sus notas. La preparación no crea commits ni tags y no publica.
96
- 5. Configurar `NPM_TOKEN` con permiso de publicación en el entorno o en `.env`, tomando `.env.example` como referencia. Mantener el archivo local existente si ya está configurado.
97
- 6. Publicar el artefacto exacto que imprimió la preparación:
112
+ ```sh
113
+ pnpm run create-version patch
114
+ pnpm run create-version minor --notes "Agrega un componente" --notes "Amplía sus opciones"
115
+ pnpm run create-version 0.5.0 --notes "Describe los cambios de esta versión"
116
+ ```
117
+
118
+ Acepta `patch`, `minor`, `major` o una versión estable explícita mayor que la actual. Las notas son opcionales y pueden repetirse. Sin `--notes`, se agrega una entrada básica que indica la nueva versión; las notas explícitas no pueden estar vacías. `pnpm run create-version --help` muestra la sintaxis.
119
+
120
+ El comando ejecuta el flujo completo:
121
+
122
+ 1. Actualiza `package.json` y agrega la entrada del changelog con fecha UTC, conservando el historial.
123
+ 2. Prepara la release: instalación congelada, tests sin React Compiler, build optimizado de JavaScript, tipos y CSS, lint, typechecks, tests unitarios y pruebas de navegador.
124
+ 3. Genera el tarball en `releases/<version>-<sha256>/beez-ui-<version>.tgz` y valida su contenido, exports e integridad.
125
+ 4. Publica ese mismo artefacto en npm con acceso público y etiqueta `latest`.
126
+
127
+ La publicación usa el cliente oficial de npm para admitir su flujo interactivo de verificación en el navegador/2FA. Instalación, build y checks siguen usando pnpm 12. Ejecutar desde una terminal interactiva cuando la cuenta requiera autenticación adicional. El token se carga sólo al publicar, no se imprime y se referencia mediante `${NPM_TOKEN}` en `.npmrc`.
128
+
129
+ El comando no crea commits ni tags ni modifica ramas Git. Si falla una validación, no publica. Los metadatos de la nueva versión quedan disponibles: corregir el error, ejecutar `pnpm release:prepare` y publicar el artefacto resultante. Si falla la publicación, comprobar primero si npm recibió la versión y reintentar sólo la publicación del mismo tarball. No ejecutar nuevamente `create-version` para reintentar la misma release.
130
+
131
+ Los pasos individuales siguen disponibles:
98
132
 
99
133
  ```sh
134
+ # Sólo validar y empaquetar la versión actual, sin publicarla.
135
+ pnpm release:prepare
136
+
137
+ # Publicar un artefacto ya preparado.
100
138
  pnpm release:publish releases/<version>-<sha256>/beez-ui-<version>.tgz
101
139
  ```
102
140
 
103
- El comando valida nuevamente nombre, versión, contenido y checksum antes de invocar `pnpm publish --access public`. Carga `.env` sólo si el token no existe en el entorno y no imprime su contenido. La autenticación se configura mediante `.npmrc` con la referencia `${NPM_TOKEN}`. Los controles de Git de pnpm permanecen activos.
141
+ `release:publish` vuelve a verificar nombre, versión, contenido y checksum antes de invocar `npm publish`. El paquete excluye fuentes privadas, tests, scripts, `.env` y `.npmrc`; incluye JavaScript, declaraciones, CSS, fuentes tipográficas y licencias. Conserva releases anteriores.
104
142
 
105
143
  `prepack` ejecuta el build para los empaquetados manuales. `dist` y `releases` son generados e ignorados por Git. La CI verifica los checks y los tres providers en ambos motores de navegador en Linux y Windows; no publica automáticamente.
106
144
 
107
- Tras publicar, los consumidores pueden instalar `pnpm add beez-ui`. También pueden instalar directamente el `.tgz` validado antes de una publicación. LaTribu mantiene un artefacto versionado en `vendor` y su lockfile para instalaciones reproducibles.
145
+ Tras publicar, los consumidores pueden instalar `pnpm add beez-ui`. También pueden instalar directamente el `.tgz` validado antes de una publicación. LaTribu consume la versión publicada en npm y fija la resolución e integridad mediante su lockfile, sin guardar tarballs locales.
108
146
 
109
147
  Los componentes nuevos de shadcn/ui se agregan mediante su CLI en esta biblioteca y se exportan desde la raíz. No editar las copias instaladas en los consumidores.
110
148
 
@@ -1,20 +1,98 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { c as _c } from "react/compiler-runtime";
3
3
  /** Uses Unpic for responsive images without coupling the native adapter to a framework. */
4
4
  import { Image } from "@unpic/react";
5
5
  import { imageDimension } from "../lib/image-dimensions.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
6
7
  /** Preserves browser events and consumer styles while deriving responsive image sources. */
7
- export function UnpicImageAdapter({ src, width, height, style, ...props }) {
8
- if (!src)
9
- return _jsx("img", { ...props, width: width, height: height, style: style });
10
- // Unpic merges style overrides at runtime; its 1.x React declarations omit that field.
11
- const imageProps = {
12
- ...props,
13
- src,
14
- width: imageDimension(width),
15
- height: imageDimension(height),
16
- layout: "constrained",
17
- style: { maxWidth: "100%", maxHeight: "100%", ...style },
18
- };
19
- return _jsx(Image, { ...imageProps });
8
+ export function UnpicImageAdapter(t0) {
9
+ const $ = _c(23);
10
+ let height;
11
+ let props;
12
+ let src;
13
+ let style;
14
+ let width;
15
+ if ($[0] !== t0) {
16
+ ({src, width, height, style, ...props} = t0);
17
+ $[0] = t0;
18
+ $[1] = height;
19
+ $[2] = props;
20
+ $[3] = src;
21
+ $[4] = style;
22
+ $[5] = width;
23
+ } else {
24
+ height = $[1];
25
+ props = $[2];
26
+ src = $[3];
27
+ style = $[4];
28
+ width = $[5];
29
+ }
30
+ if (!src) {
31
+ let t1;
32
+ if ($[6] !== height || $[7] !== props || $[8] !== style || $[9] !== width) {
33
+ t1 = /* @__PURE__ */ _jsx("img", {
34
+ ...props,
35
+ width,
36
+ height,
37
+ style
38
+ });
39
+ $[6] = height;
40
+ $[7] = props;
41
+ $[8] = style;
42
+ $[9] = width;
43
+ $[10] = t1;
44
+ } else {
45
+ t1 = $[10];
46
+ }
47
+ return t1;
48
+ }
49
+ let t1;
50
+ if ($[11] !== width) {
51
+ t1 = imageDimension(width);
52
+ $[11] = width;
53
+ $[12] = t1;
54
+ } else {
55
+ t1 = $[12];
56
+ }
57
+ let t2;
58
+ if ($[13] !== height) {
59
+ t2 = imageDimension(height);
60
+ $[13] = height;
61
+ $[14] = t2;
62
+ } else {
63
+ t2 = $[14];
64
+ }
65
+ let t3;
66
+ if ($[15] !== style) {
67
+ t3 = {
68
+ maxWidth: "100%",
69
+ maxHeight: "100%",
70
+ ...style
71
+ };
72
+ $[15] = style;
73
+ $[16] = t3;
74
+ } else {
75
+ t3 = $[16];
76
+ }
77
+ let t4;
78
+ if ($[17] !== props || $[18] !== src || $[19] !== t1 || $[20] !== t2 || $[21] !== t3) {
79
+ const imageProps = {
80
+ ...props,
81
+ src,
82
+ width: t1,
83
+ height: t2,
84
+ layout: "constrained",
85
+ style: t3
86
+ };
87
+ t4 = /* @__PURE__ */ _jsx(Image, { ...imageProps });
88
+ $[17] = props;
89
+ $[18] = src;
90
+ $[19] = t1;
91
+ $[20] = t2;
92
+ $[21] = t3;
93
+ $[22] = t4;
94
+ } else {
95
+ t4 = $[22];
96
+ }
97
+ return t4;
20
98
  }