beez-ui 0.4.2 → 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 -27
  2. package/README.md +22 -2
  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 +4 -1
package/CHANGELOG.md CHANGED
@@ -1,34 +1,38 @@
1
1
  # Cambios
2
2
 
3
- ## 0.4.2 - 2026-09-08
3
+ ## 0.5.0 - 2026-09-08
4
4
 
5
- - Actualiza el paquete a la versión 0.4.2.
5
+ - Actualiza el paquete a la versión 0.5.0.
6
6
 
7
- ## 0.4.1 - 2026-09-08
8
-
9
- - Actualiza el paquete a la versión 0.4.1.
10
-
11
- ## 0.4.0 - 2026-09-08
12
-
13
- - Distribuye los providers nativo, Next y TanStack con tema compartido, navegación e imágenes adaptadas al framework.
14
- - Incluye CSS precompilado, tema y fuentes; los consumidores sólo importan `beez-ui/styles.css`, sin configurar Tailwind.
15
- - Valida el tarball sin compiladores CSS y las integraciones en Chromium y WebKit.
16
-
17
- ## 0.3.1 - 2026-09-08
18
-
19
- - Publica CSS precompilado para que los estilos funcionen sin Tailwind ni detección de clases en el consumidor.
20
- - Conserva el tema, las fuentes y las utilidades compartidas mediante `beez-ui/styles.css`.
21
- - Verifica estilos computados del tarball servido por HTTP sin procesadores CSS en Chromium y WebKit.
22
-
23
- ## 0.2.0 - 2026-09-08
24
-
25
- - Unifica el nombre `BeezUIProvider` en los entrypoints nativo, Next y TanStack; reemplaza `NextBeezUIProvider`.
26
- - Comparte el tema mediante `next-themes`, `themeOptions` y `useTheme` en todos los providers.
27
- - Restaura `Link` desde la raíz con navegación por adaptadores y prefetch desactivado por defecto.
28
- - Integra Unpic para imágenes nativas y de TanStack, y conserva Next Image en el provider de Next.
29
- - Separa los tipos de tests y valida navegación, imágenes y tema en Chromium y WebKit.
30
-
31
- ## 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
32
36
 
33
37
  - Publica JavaScript ESM y declaraciones TypeScript en `dist`.
34
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,7 +99,7 @@ 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
 
@@ -100,7 +120,7 @@ Acepta `patch`, `minor`, `major` o una versión estable explícita mayor que la
100
120
  El comando ejecuta el flujo completo:
101
121
 
102
122
  1. Actualiza `package.json` y agrega la entrada del changelog con fecha UTC, conservando el historial.
103
- 2. Prepara la release: instalación congelada, build de JavaScript, tipos y CSS, lint, typechecks, tests unitarios y pruebas de navegador.
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.
104
124
  3. Genera el tarball en `releases/<version>-<sha256>/beez-ui-<version>.tgz` y valida su contenido, exports e integridad.
105
125
  4. Publica ese mismo artefacto en npm con acceso público y etiqueta `latest`.
106
126
 
@@ -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
  }