beez-ui 0.6.1 → 0.7.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.
- package/CHANGELOG.md +134 -82
- package/README.md +25 -11
- package/dist/components/alert.js +1 -1
- package/dist/components/avatar.d.ts +2 -1
- package/dist/components/avatar.js +4 -3
- package/dist/components/calendar.js +102 -0
- package/dist/components/carousel.js +61 -48
- package/dist/components/checkbox.js +1 -1
- package/dist/components/data-table.js +34 -4
- package/dist/components/dropdown-menu.js +5 -2
- package/dist/components/filter-query-bar.js +11 -6
- package/dist/components/form.d.ts +5 -0
- package/dist/components/form.js +11 -9
- package/dist/components/input-group.js +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/pagination.d.ts +1 -0
- package/dist/components/pagination.js +9 -4
- package/dist/components/radio-group.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sheet.js +12 -9
- package/dist/components/sidebar.js +9 -5
- package/dist/components/skeleton.d.ts +6 -0
- package/dist/components/skeleton.js +7 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/typing-animation.js +42 -15
- package/dist/lib/column-filter-value.d.ts +12 -0
- package/dist/lib/column-filter-value.js +52 -0
- package/dist/motion/glide-indicator.d.ts +37 -3
- package/dist/motion/glide-indicator.js +37 -3
- package/dist/motion/motion-slot.js +47 -18
- package/dist/motion/surface-keyframes.js +18 -6
- package/dist/motion/tokens.d.ts +24 -1
- package/dist/motion/tokens.js +23 -0
- package/dist/providers/beez-ui-provider.js +49 -17
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,82 +1,134 @@
|
|
|
1
|
-
# Cambios
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
## 0.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
## 0.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
## 0.
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
## 0.
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
1
|
+
# Cambios
|
|
2
|
+
|
|
3
|
+
Todos los cambios relevantes de beez-ui se documentan en este archivo con el formato de [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/) y versionado [SemVer](https://semver.org/lang/es/). Cada cambio agrega sus entradas en `[Unreleased]`; `pnpm create-version` las pasa a la versión publicada con su fecha.
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- `BeezUIProvider` ya no provoca el aviso de React «Encountered a script tag» en apps renderizadas solo en el cliente; con SSR conserva el script que aplica el tema antes de hidratar, sin parpadeo.
|
|
10
|
+
|
|
11
|
+
## [0.7.0] - 2026-09-26
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- `PaginationContent` desliza el resaltado de la página actual hacia la página elegida cuando la lista permanece montada (paginación en el cliente).
|
|
16
|
+
- `Calendar` desliza el mes entrante desde el lado de la navegación (también en RTL) y se mantiene estático con movimiento reducido.
|
|
17
|
+
- `AvatarImage` revela la imagen con un desenfoque y un zoom breves al terminar de cargar, en lugar de aparecer de golpe sobre el fallback.
|
|
18
|
+
- Las sugerencias de `FilterQueryBar` deslizan el resaltado entre opciones con teclado, como los menús y `Select`.
|
|
19
|
+
- `AvatarGroup` eleva levemente el avatar bajo el puntero en dispositivos con hover real.
|
|
20
|
+
- El chevron de `DropdownMenuSubTrigger` se desplaza hacia el submenú abierto.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- `Skeleton` muestra un brillo que recorre el placeholder en lugar del pulso de opacidad; con movimiento reducido queda como un bloque liso.
|
|
25
|
+
- `Sheet` se cierra con una curva de cajón breve en lugar de un spring, y su botón de cierre aparece con un pop demorado como el de `Dialog`.
|
|
26
|
+
- `Alert` entra con un leve desplazamiento y desenfoque.
|
|
27
|
+
- Los anillos de foco y bordes de `Input`, `Textarea`, `InputGroup`, `SelectTrigger`, `Checkbox` y `RadioGroupItem` aparecen con una transición en lugar de saltar.
|
|
28
|
+
- En menús, `Select` y sugerencias, el resaltado sigue al puntero al instante y solo se desliza al navegar con teclado, con un spring más rápido.
|
|
29
|
+
- El sidebar colapsa y expande con una curva de cajón de 300 ms en lugar de una transición lineal.
|
|
30
|
+
- El thumb de `Switch` tiene una sombra sutil que lo separa del track.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- El cursor de `TypingAnimation` vuelve a parpadear: queda fijo mientras escribe o borra, parpadea en reposo y los lectores de pantalla lo ignoran.
|
|
35
|
+
- `Carousel` vertical responde a las flechas arriba y abajo; antes solo reaccionaba a izquierda y derecha.
|
|
36
|
+
- `SidebarMenuButton` con `variant="outline"` vuelve a pintar su borde con los tokens `oklch` del tema.
|
|
37
|
+
- `FormLabel`, `FormControl`, `FormDescription` y `FormMessage` fuera de un `FormField` lanzan un error claro en lugar de fallar en silencio.
|
|
38
|
+
- Los bordes sin color explícito (footers de `Card`, `Dialog` y `AlertDialog`, `Alert`, filas de `Table`, bordes de `Sheet` y del sidebar) usan el token `--border` del tema en lugar del color del texto cuando se consume `beez-ui/styles.css` sin Tailwind.
|
|
39
|
+
- `DropdownMenu`, sus submenús, `Popover`, `HoverCard` y `Select` muestran su borde y su sombra desde el primer frame al abrirse; antes el revelado los recortaba durante ~650 ms.
|
|
40
|
+
- `DataTable` filtra las columnas apuntadas por `queryFilterConfig` que no declaran `filterFn` (rangos numéricos, enums y año-mes); antes un rango sobre una columna numérica lanzaba `TypeError: val is not iterable` y un enum ocultaba todas las filas. Un `filterFn` propio de la columna sigue teniendo prioridad.
|
|
41
|
+
- Las `Card` interactivas conservan su contorno mientras muestran la sombra de hover; antes la sombra reemplazaba el anillo del borde.
|
|
42
|
+
|
|
43
|
+
## [0.6.2] - 2026-09-26
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
- El comando de release (`pnpm create-version`, alias `pnpm cv`) toma las notas del bloque `[Unreleased]` del CHANGELOG, les asigna la versión y la fecha, y pide a Codex que lo complete cuando está vacío.
|
|
48
|
+
- Las cajas del comando de release ajustan el texto largo en varias líneas en lugar de cortarlo.
|
|
49
|
+
- Un release interrumpido reusa automáticamente el artefacto ya preparado cuando es posterior al último cambio de código.
|
|
50
|
+
|
|
51
|
+
### Removed
|
|
52
|
+
|
|
53
|
+
- La opción `--notes` y las preguntas sobre las notas del CHANGELOG y sobre reusar el artefacto preparado.
|
|
54
|
+
|
|
55
|
+
## 0.6.1 - 2026-09-26
|
|
56
|
+
|
|
57
|
+
- Actualiza pnpm a 12.6.0 y next a 16.3.6
|
|
58
|
+
- Add terminal UI for interactive prompts and spinners
|
|
59
|
+
- Update release banner and icons for improved visibility
|
|
60
|
+
- Remove create-version script
|
|
61
|
+
- Update release command to create-version and improve documentation
|
|
62
|
+
|
|
63
|
+
## 0.6.0 - 2026-09-23
|
|
64
|
+
|
|
65
|
+
- Actualiza el paquete a la versión 0.6.0.
|
|
66
|
+
|
|
67
|
+
## 0.5.6 - 2026-09-09
|
|
68
|
+
|
|
69
|
+
- Actualiza el paquete a la versión 0.5.6.
|
|
70
|
+
|
|
71
|
+
## 0.5.5 - 2026-09-09
|
|
72
|
+
|
|
73
|
+
- Actualiza el paquete a la versión 0.5.5.
|
|
74
|
+
|
|
75
|
+
## 0.5.4 - 2026-09-09
|
|
76
|
+
|
|
77
|
+
- Actualiza el paquete a la versión 0.5.4.
|
|
78
|
+
|
|
79
|
+
## 0.5.3 - 2026-09-09
|
|
80
|
+
|
|
81
|
+
- Actualiza el paquete a la versión 0.5.3.
|
|
82
|
+
|
|
83
|
+
## 0.5.2 - 2026-09-09
|
|
84
|
+
|
|
85
|
+
- Actualiza el paquete a la versión 0.5.2.
|
|
86
|
+
|
|
87
|
+
## 0.5.1 - 2026-09-08
|
|
88
|
+
|
|
89
|
+
- Actualiza el paquete a la versión 0.5.1.
|
|
90
|
+
|
|
91
|
+
## 0.5.0 - 2026-09-08
|
|
92
|
+
|
|
93
|
+
- Actualiza el paquete a la versión 0.5.0.
|
|
94
|
+
|
|
95
|
+
## 0.4.2 - 2026-09-08
|
|
96
|
+
|
|
97
|
+
- Actualiza el paquete a la versión 0.4.2.
|
|
98
|
+
|
|
99
|
+
## 0.4.1 - 2026-09-08
|
|
100
|
+
|
|
101
|
+
- Actualiza el paquete a la versión 0.4.1.
|
|
102
|
+
|
|
103
|
+
## 0.4.0 - 2026-09-08
|
|
104
|
+
|
|
105
|
+
- Distribuye los providers nativo, Next y TanStack con tema compartido, navegación e imágenes adaptadas al framework.
|
|
106
|
+
- Incluye CSS precompilado, tema y fuentes; los consumidores sólo importan `beez-ui/styles.css`, sin configurar Tailwind.
|
|
107
|
+
- Valida el tarball sin compiladores CSS y las integraciones en Chromium y WebKit.
|
|
108
|
+
|
|
109
|
+
## 0.3.1 - 2026-09-08
|
|
110
|
+
|
|
111
|
+
- Publica CSS precompilado para que los estilos funcionen sin Tailwind ni detección de clases en el consumidor.
|
|
112
|
+
- Conserva el tema, las fuentes y las utilidades compartidas mediante `beez-ui/styles.css`.
|
|
113
|
+
- Verifica estilos computados del tarball servido por HTTP sin procesadores CSS en Chromium y WebKit.
|
|
114
|
+
|
|
115
|
+
## 0.2.0 - 2026-09-08
|
|
116
|
+
|
|
117
|
+
- Unifica el nombre `BeezUIProvider` en los entrypoints nativo, Next y TanStack; reemplaza `NextBeezUIProvider`.
|
|
118
|
+
- Comparte el tema mediante `next-themes`, `themeOptions` y `useTheme` en todos los providers.
|
|
119
|
+
- Restaura `Link` desde la raíz con navegación por adaptadores y prefetch desactivado por defecto.
|
|
120
|
+
- Integra Unpic para imágenes nativas y de TanStack, y conserva Next Image en el provider de Next.
|
|
121
|
+
- Separa los tipos de tests y valida navegación, imágenes y tema en Chromium y WebKit.
|
|
122
|
+
|
|
123
|
+
## 0.1.1 - 2026-09-08
|
|
124
|
+
|
|
125
|
+
- Publica JavaScript ESM y declaraciones TypeScript en `dist`.
|
|
126
|
+
- Conserva los componentes agrupados y el tema de LaTribu.
|
|
127
|
+
- Mantiene visible el área del avatar durante la carga diferida para permitir que el navegador solicite la imagen.
|
|
128
|
+
- Agrega `BeezUIProvider` para adaptadores nativos o propios y `NextBeezUIProvider` como integración opcional.
|
|
129
|
+
- Incorpora preparación de releases con checks, control del contenido del paquete y checksum SHA-256.
|
|
130
|
+
- Documenta la autenticación con `NPM_TOKEN` y la publicación del artefacto validado.
|
|
131
|
+
|
|
132
|
+
## 0.1.0 - 2026-09-08
|
|
133
|
+
|
|
134
|
+
- Centraliza los componentes de LaTribu y agenda-mensual con su tema, fuentes y pruebas.
|
package/README.md
CHANGED
|
@@ -77,10 +77,15 @@ siguen los tokens de [beui motion](https://beui.dev/components/motion):
|
|
|
77
77
|
- `Tooltip` entra con blur, escala y desplazamiento desde el trigger.
|
|
78
78
|
`Popover`, `HoverCard`, `DropdownMenu` y `Select` escalan desde 0.96 y se revelan
|
|
79
79
|
con un clip desde la esquina más cercana al trigger.
|
|
80
|
-
- `Dialog` y `AlertDialog` suben con spring; `Sheet` entra desde su borde con spring
|
|
80
|
+
- `Dialog` y `AlertDialog` suben con spring; `Sheet` entra desde su borde con spring
|
|
81
|
+
y sale con la curva de cajón (0.24 s), sin demorar la siguiente interacción.
|
|
81
82
|
- `GlideSlot` desliza el indicador activo entre ítems como un `layoutId` compartido:
|
|
82
|
-
la pestaña activa de `Tabs` (fondo o subrayado), el ítem activo de `SidebarMenu
|
|
83
|
-
|
|
83
|
+
la pestaña activa de `Tabs` (fondo o subrayado), el ítem activo de `SidebarMenu`, la
|
|
84
|
+
página actual de `PaginationContent`, y al navegar con teclado el ítem resaltado de
|
|
85
|
+
`DropdownMenu` y `Select` y la sugerencia activa de `FilterQueryBar`. Con el puntero,
|
|
86
|
+
esos resaltados lo siguen al instante: el propio puntero ya marca la posición.
|
|
87
|
+
- Las superficies flotantes se revelan con un clip que deja 24 px libres fuera de la
|
|
88
|
+
caja, así su borde (`ring`) y su sombra se ven desde el primer frame. Una copia
|
|
84
89
|
transitoria viaja entre ítems y se elimina al llegar, devolviendo el estilo al ítem.
|
|
85
90
|
- El chevron de `SelectTrigger` gira 180° al abrir y los chevrons de `DataTable`
|
|
86
91
|
(grupos y columnas) giran en lugar de cambiar de ícono; CSS define el ángulo final.
|
|
@@ -88,8 +93,14 @@ siguen los tokens de [beui motion](https://beui.dev/components/motion):
|
|
|
88
93
|
solo se desvanece) y los checks de ítems de `Select` y `DropdownMenu` aparecen con pop.
|
|
89
94
|
- El ícono de `AnimatedThemeToggler` cambia con blur y escala; el botón de cierre de
|
|
90
95
|
`Dialog` aparece con un pop demorado.
|
|
91
|
-
- El contenido de `Tabs` entra con un desplazamiento de 4 px
|
|
92
|
-
responden al hover
|
|
96
|
+
- El contenido de `Tabs` entra con un desplazamiento de 4 px y `Alert` entra con blur.
|
|
97
|
+
Cards y enlaces responden al hover; el avatar bajo el puntero de un `AvatarGroup` se
|
|
98
|
+
eleva. Un brillo recorre el `Skeleton` desde su `::after` con reproducción nativa,
|
|
99
|
+
sin trabajo por frame en JavaScript.
|
|
100
|
+
- `Calendar` desliza el mes entrante desde el lado de la navegación (invertido en RTL).
|
|
101
|
+
- `AvatarImage` se revela con blur y un zoom de 1.06 al terminar de cargar; las imágenes
|
|
102
|
+
ya cargadas al montar no se animan.
|
|
103
|
+
- El cursor de `TypingAnimation` queda fijo mientras escribe y parpadea en reposo. Las animaciones especializadas
|
|
93
104
|
existentes de Embla, Sonner y rough-notation se conservan.
|
|
94
105
|
|
|
95
106
|
El contenido que está saliendo deja de ser interactivo y accesible de inmediato.
|
|
@@ -209,24 +220,27 @@ Desde el repositorio de beez-ui, configurar `NPM_TOKEN` con permiso de publicaci
|
|
|
209
220
|
pnpm create-version # diagnóstico, plan y release interactivo
|
|
210
221
|
pnpm create-version --bump minor # patch | minor | major sin preguntar
|
|
211
222
|
pnpm create-version --set-version 0.7.0 # versión exacta
|
|
212
|
-
pnpm create-version --notes "Agrega glide" # notas del CHANGELOG; se puede repetir
|
|
213
223
|
pnpm create-version --dry-run # solo muestra el diagnóstico y el plan
|
|
214
224
|
pnpm cv # alias de pnpm create-version
|
|
215
225
|
```
|
|
216
226
|
|
|
217
227
|
El comando hace `git fetch`, consulta npm y muestra un panel con la rama, el upstream, el working tree, `main` frente a origin, la versión local, la última versión publicada, los commits posteriores al último cambio de versión y el artefacto ya preparado. Después decide qué falta:
|
|
218
228
|
|
|
219
|
-
- **Release nuevo**: si hay commits sin publicar, sugiere `patch`, `minor` o `major` según los commits (breaking change, funcionalidades o solo arreglos) y pregunta con las flechas
|
|
220
|
-
- **Release a medio terminar**: si `package.json` tiene una versión que npm todavía no tiene, completa solo lo que falta:
|
|
229
|
+
- **Release nuevo**: si hay commits sin publicar, sugiere `patch`, `minor` o `major` según los commits (breaking change, funcionalidades o solo arreglos) y pregunta con las flechas. Las notas salen del bloque `## [Unreleased]` de `CHANGELOG.md` (ver la sección CHANGELOG más abajo); si está vacío, invoca a Codex (`codex exec`) para completarlo desde los commits sin publicar y muestra el resultado, y si Codex no está o no escribe nada válido, el release se corta. Tras confirmar ejecuta el flujo validado completo (ver abajo).
|
|
230
|
+
- **Release a medio terminar**: si `package.json` tiene una versión que npm todavía no tiene, completa solo lo que falta: si `package.json` y `CHANGELOG.md` quedaron sin commitear los commitea primero; después prepara el artefacto (reusa automáticamente el ya preparado cuando es posterior al último cambio de código, y `release:publish` lo vuelve a verificar), pushea el commit de release si todavía no está en origin y publica (la confirmación del inicio cubre la publicación). Nunca vuelve a subir la versión.
|
|
221
231
|
- **Todo al día**: si la versión está publicada y no hay commits nuevos, no hace nada.
|
|
222
232
|
|
|
223
|
-
`--set-version` sólo acepta el siguiente patch, minor o major de la versión actual (desde `0.6.0`: `0.6.1`, `0.7.0` o `1.0.0`); rechaza versiones menores, iguales, prerelease o que salteen versiones. Los releases salen sólo desde `main` con upstream configurado. Se detiene y explica qué hacer ante otra rama, `HEAD` desacoplado, cambios sin commitear (salvo `package.json` y `CHANGELOG.md` de un release a medio terminar), `main` divergida o npm sin respuesta; un bloqueo termina con código 0 porque ya está explicado en pantalla, y un paso fallido termina con código 1. Si `main` está atrás, la actualiza con fast-forward antes de versionar. Si algo falla, basta con volver a ejecutar `pnpm create-version`: retoma desde el primer paso pendiente. Sin terminal interactiva cada pregunta toma su opción por defecto.
|
|
233
|
+
`--set-version` sólo acepta el siguiente patch, minor o major de la versión actual (desde `0.6.0`: `0.6.1`, `0.7.0` o `1.0.0`); rechaza versiones menores, iguales, prerelease o que salteen versiones. Los releases salen sólo desde `main` con upstream configurado. Se detiene y explica qué hacer ante otra rama, `HEAD` desacoplado, cambios sin commitear (salvo `CHANGELOG.md` en un release nuevo, que viaja en el commit de release, o `package.json` y `CHANGELOG.md` de un release a medio terminar), secciones de `[Unreleased]` fuera de las de Keep a Changelog, `main` divergida o npm sin respuesta; un bloqueo termina con código 0 porque ya está explicado en pantalla, y un paso fallido termina con código 1. Si `main` está atrás, la actualiza con fast-forward antes de versionar. Si algo falla, basta con volver a ejecutar `pnpm create-version`: retoma desde el primer paso pendiente. Las opciones de cada pregunta están numeradas: se eligen apretando su número, o con las flechas y Enter; cada versión muestra debajo qué significa patch, minor o major. Sin terminal interactiva cada pregunta toma su opción por defecto. El tiempo total que muestra al final no cuenta el tiempo que espera tus respuestas.
|
|
224
234
|
|
|
225
|
-
La lógica pura vive en `scripts/release-plan.js`, la lectura de Git y npm en `scripts/release-state.js`, la UI de terminal (cajas, colores, íconos Nerd Font, spinner y selector) en `scripts/terminal-ui.js` y el orquestador en `scripts/release.js`, sin dependencias nuevas. Los íconos requieren una Nerd Font en la terminal.
|
|
235
|
+
La lógica pura vive en `scripts/release-plan.js` y `scripts/changelog.js` (lectura y release de `[Unreleased]`), la invocación de Codex en `scripts/changelog-ai.js`, la lectura de Git y npm en `scripts/release-state.js`, la UI de terminal (cajas, colores, íconos Nerd Font, spinner y selector) en `scripts/terminal-ui.js` y el orquestador en `scripts/release.js`, sin dependencias nuevas. Los íconos requieren una Nerd Font en la terminal.
|
|
236
|
+
|
|
237
|
+
### CHANGELOG
|
|
238
|
+
|
|
239
|
+
`CHANGELOG.md` sigue [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/). Cada cambio agrega sus entradas en el bloque `## [Unreleased]`, agrupadas en `### Added`, `### Changed`, `### Deprecated`, `### Removed`, `### Fixed` y `### Security` (solo las que apliquen). Nunca se escriben la versión ni la fecha a mano: `pnpm create-version` las agrega al publicar. Las versiones anteriores a este formato (`## 0.6.1 - 2026-09-26`) siguen siendo válidas. La regla completa está en `AGENTS.md`.
|
|
226
240
|
|
|
227
241
|
### Flujo validado de un release nuevo
|
|
228
242
|
|
|
229
|
-
1. Actualiza `package.json` y
|
|
243
|
+
1. Actualiza `package.json` y renombra `## [Unreleased]` a `## [X.Y.Z] - AAAA-MM-DD` (fecha UTC), dejando un `[Unreleased]` vacío arriba y conservando el historial (`scripts/release-version.js`). Si `[Unreleased]` no tiene cambios o usa secciones no válidas, no toca nada.
|
|
230
244
|
2. Commitea en el momento `package.json` y `CHANGELOG.md` (sólo esos dos archivos, conservando otros archivos staged), antes de las validaciones largas: si algo se corta después, queda un commit local y nunca metadata suelta.
|
|
231
245
|
3. 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.
|
|
232
246
|
4. Genera el tarball en `releases/<version>-<sha256>/beez-ui-<version>.tgz` y valida su contenido, exports e integridad.
|
package/dist/components/alert.js
CHANGED
|
@@ -7,10 +7,11 @@ export type AvatarImageProps = Omit<React.ComponentProps<"img">, "src"> & {
|
|
|
7
7
|
declare function Avatar({ className, size, ...props }: AvatarPrimitive.Root.Props & {
|
|
8
8
|
size?: "default" | "sm" | "lg";
|
|
9
9
|
}): React.JSX.Element;
|
|
10
|
-
/** Delegates loading, failure and fallback synchronization to the avatar primitive. */
|
|
10
|
+
/** Delegates loading, failure and fallback synchronization to the avatar primitive; loaded images develop in place. */
|
|
11
11
|
declare function AvatarImage({ alt, className, src, ...props }: AvatarImageProps): React.JSX.Element;
|
|
12
12
|
declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): React.JSX.Element;
|
|
13
13
|
declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
14
|
+
/** Overlaps avatars; the hovered one lifts slightly above its neighbours. */
|
|
14
15
|
declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
15
16
|
declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
16
17
|
export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
|
|
@@ -51,7 +51,7 @@ function Avatar(t0) {
|
|
|
51
51
|
}
|
|
52
52
|
return t3;
|
|
53
53
|
}
|
|
54
|
-
/** Delegates loading, failure and fallback synchronization to the avatar primitive. */
|
|
54
|
+
/** Delegates loading, failure and fallback synchronization to the avatar primitive; loaded images develop in place. */
|
|
55
55
|
function AvatarImage(t0) {
|
|
56
56
|
const $ = _c(15);
|
|
57
57
|
let className;
|
|
@@ -94,7 +94,7 @@ function AvatarImage(t0) {
|
|
|
94
94
|
let t6;
|
|
95
95
|
if ($[9] !== alt || $[10] !== props || $[11] !== t3 || $[12] !== t4 || $[13] !== t5) {
|
|
96
96
|
t6 = /* @__PURE__ */ _jsx(MotionSlot, {
|
|
97
|
-
kind: "
|
|
97
|
+
kind: "reveal",
|
|
98
98
|
children: /* @__PURE__ */ _jsx(AvatarPrimitive.Image, {
|
|
99
99
|
render: t3,
|
|
100
100
|
keepMounted: true,
|
|
@@ -190,6 +190,7 @@ function AvatarBadge(t0) {
|
|
|
190
190
|
}
|
|
191
191
|
return t2;
|
|
192
192
|
}
|
|
193
|
+
/** Overlaps avatars; the hovered one lifts slightly above its neighbours. */
|
|
193
194
|
function AvatarGroup(t0) {
|
|
194
195
|
const $ = _c(8);
|
|
195
196
|
let className;
|
|
@@ -205,7 +206,7 @@ function AvatarGroup(t0) {
|
|
|
205
206
|
}
|
|
206
207
|
let t1;
|
|
207
208
|
if ($[3] !== className) {
|
|
208
|
-
t1 = cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className);
|
|
209
|
+
t1 = cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background *:data-[slot=avatar]:transition-[translate] *:data-[slot=avatar]:duration-200 *:data-[slot=avatar]:ease-out *:data-[slot=avatar]:hover:z-10 *:data-[slot=avatar]:hover:-translate-y-0.5", className);
|
|
209
210
|
$[3] = className;
|
|
210
211
|
$[4] = t1;
|
|
211
212
|
} else {
|
|
@@ -3,6 +3,9 @@ import { c as _c } from "react/compiler-runtime";
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { es } from "react-day-picker/locale";
|
|
5
5
|
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
6
|
+
import { animate, frame } from "motion/react";
|
|
7
|
+
import { usePrefersReducedMotion } from "../hooks/use-prefers-reduced-motion.js";
|
|
8
|
+
import { MOTION_EASE, MOTION_MONTH_DISTANCE, MOTION_TIMING } from "../motion/tokens.js";
|
|
6
9
|
import { cn } from "../lib/utils.js";
|
|
7
10
|
import { Button, buttonVariants } from "./button.js";
|
|
8
11
|
import { ChevronLeft, ChevronRight, ChevronDown } from "lucide-react";
|
|
@@ -173,6 +176,7 @@ function Calendar(t0) {
|
|
|
173
176
|
Root: _temp,
|
|
174
177
|
Chevron: _temp2,
|
|
175
178
|
DayButton: t34,
|
|
179
|
+
Month: CalendarMonth,
|
|
176
180
|
WeekNumber: _temp3,
|
|
177
181
|
...components
|
|
178
182
|
};
|
|
@@ -247,6 +251,104 @@ function _temp(t0) {
|
|
|
247
251
|
...props_0
|
|
248
252
|
});
|
|
249
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Renders one displayed month and slides it in from the side the user navigated from.
|
|
256
|
+
* DayPicker keys months by display position, so this instance survives navigation and can
|
|
257
|
+
* compare the new month with the previous one. The first render and reduced motion stay static.
|
|
258
|
+
* @param props - DayPicker month properties, including the month being displayed.
|
|
259
|
+
* @returns The month container with its caption and grid.
|
|
260
|
+
*/
|
|
261
|
+
function CalendarMonth(t0) {
|
|
262
|
+
const $ = _c(13);
|
|
263
|
+
let calendarMonth;
|
|
264
|
+
let children;
|
|
265
|
+
let displayIndex;
|
|
266
|
+
let props;
|
|
267
|
+
if ($[0] !== t0) {
|
|
268
|
+
({calendarMonth, displayIndex, children, ...props} = t0);
|
|
269
|
+
$[0] = t0;
|
|
270
|
+
$[1] = calendarMonth;
|
|
271
|
+
$[2] = children;
|
|
272
|
+
$[3] = displayIndex;
|
|
273
|
+
$[4] = props;
|
|
274
|
+
} else {
|
|
275
|
+
calendarMonth = $[1];
|
|
276
|
+
children = $[2];
|
|
277
|
+
displayIndex = $[3];
|
|
278
|
+
props = $[4];
|
|
279
|
+
}
|
|
280
|
+
const monthRef = React.useRef(null);
|
|
281
|
+
const monthTime = calendarMonth.date.getTime();
|
|
282
|
+
const previousMonthTimeRef = React.useRef(monthTime);
|
|
283
|
+
const reduceMotion = usePrefersReducedMotion();
|
|
284
|
+
let t1;
|
|
285
|
+
let t2;
|
|
286
|
+
if ($[5] !== monthTime || $[6] !== reduceMotion) {
|
|
287
|
+
t1 = () => {
|
|
288
|
+
const previousMonthTime = previousMonthTimeRef.current;
|
|
289
|
+
previousMonthTimeRef.current = monthTime;
|
|
290
|
+
const element = monthRef.current;
|
|
291
|
+
if (!element || reduceMotion || previousMonthTime === monthTime) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
const isForward = monthTime > previousMonthTime;
|
|
295
|
+
const isRightToLeft = getComputedStyle(element).direction === "rtl";
|
|
296
|
+
const direction = isForward !== isRightToLeft ? 1 : -1;
|
|
297
|
+
const original = {
|
|
298
|
+
opacity: element.style.opacity,
|
|
299
|
+
transform: element.style.transform
|
|
300
|
+
};
|
|
301
|
+
const restore = () => {
|
|
302
|
+
element.style.opacity = original.opacity;
|
|
303
|
+
element.style.transform = original.transform;
|
|
304
|
+
};
|
|
305
|
+
const animation = animate(element, {
|
|
306
|
+
opacity: [0, 1],
|
|
307
|
+
transform: [`translateX(${direction * MOTION_MONTH_DISTANCE}px)`, "translateX(0px)"]
|
|
308
|
+
}, {
|
|
309
|
+
duration: MOTION_TIMING.monthSwap,
|
|
310
|
+
ease: [...MOTION_EASE]
|
|
311
|
+
});
|
|
312
|
+
let isActive = true;
|
|
313
|
+
animation.then(() => frame.postRender(() => {
|
|
314
|
+
if (isActive) {
|
|
315
|
+
restore();
|
|
316
|
+
}
|
|
317
|
+
}));
|
|
318
|
+
return () => {
|
|
319
|
+
isActive = false;
|
|
320
|
+
animation.cancel();
|
|
321
|
+
restore();
|
|
322
|
+
};
|
|
323
|
+
};
|
|
324
|
+
t2 = [monthTime, reduceMotion];
|
|
325
|
+
$[5] = monthTime;
|
|
326
|
+
$[6] = reduceMotion;
|
|
327
|
+
$[7] = t1;
|
|
328
|
+
$[8] = t2;
|
|
329
|
+
} else {
|
|
330
|
+
t1 = $[7];
|
|
331
|
+
t2 = $[8];
|
|
332
|
+
}
|
|
333
|
+
React.useLayoutEffect(t1, t2);
|
|
334
|
+
let t3;
|
|
335
|
+
if ($[9] !== children || $[10] !== displayIndex || $[11] !== props) {
|
|
336
|
+
t3 = /* @__PURE__ */ _jsx("div", {
|
|
337
|
+
ref: monthRef,
|
|
338
|
+
"data-slot": "calendar-month",
|
|
339
|
+
"data-display-index": displayIndex,
|
|
340
|
+
...props,
|
|
341
|
+
children
|
|
342
|
+
});
|
|
343
|
+
$[9] = children;
|
|
344
|
+
$[10] = displayIndex;
|
|
345
|
+
$[11] = props;
|
|
346
|
+
$[12] = t3;
|
|
347
|
+
} else {
|
|
348
|
+
t3 = $[12];
|
|
349
|
+
}
|
|
350
|
+
return t3;
|
|
351
|
+
}
|
|
250
352
|
function CalendarDayButton(t0) {
|
|
251
353
|
const $ = _c(21);
|
|
252
354
|
let className;
|