@mks2508/sidebar-headless 0.2.1 → 0.3.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 +53 -53
- package/LICENSE +21 -21
- package/README.md +165 -165
- package/dist/components/BottomNavBar/MobileBottomNav.d.ts +65 -0
- package/dist/components/BottomNavBar/MobileBottomNav.d.ts.map +1 -0
- package/dist/components/BottomNavBar/MobileBottomNav.styles.d.ts +94 -0
- package/dist/components/BottomNavBar/MobileBottomNav.styles.d.ts.map +1 -0
- package/dist/components/BottomNavBar/index.d.ts +10 -0
- package/dist/components/BottomNavBar/index.d.ts.map +1 -0
- package/dist/components/BottomNavBar/types.d.ts +363 -0
- package/dist/components/BottomNavBar/types.d.ts.map +1 -0
- package/dist/components/BottomNavBar/useIOSSafariFix.d.ts +74 -0
- package/dist/components/BottomNavBar/useIOSSafariFix.d.ts.map +1 -0
- package/dist/components/Sidebar/Sidebar.constants.d.ts +285 -0
- package/dist/components/Sidebar/Sidebar.constants.d.ts.map +1 -0
- package/dist/components/Sidebar/Sidebar.d.ts +80 -0
- package/dist/components/Sidebar/Sidebar.d.ts.map +1 -0
- package/dist/components/Sidebar/Sidebar.styles.d.ts +77 -0
- package/dist/components/Sidebar/Sidebar.styles.d.ts.map +1 -0
- package/dist/components/Sidebar/Sidebar.types.d.ts +638 -0
- package/dist/components/Sidebar/Sidebar.types.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarContent.d.ts +46 -0
- package/dist/components/Sidebar/SidebarContent.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarContext.d.ts +87 -0
- package/dist/components/Sidebar/SidebarContext.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarFluidIndicator.d.ts +37 -0
- package/dist/components/Sidebar/SidebarFluidIndicator.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarIndicator.d.ts +59 -0
- package/dist/components/Sidebar/SidebarIndicator.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarItem.d.ts +82 -0
- package/dist/components/Sidebar/SidebarItem.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarNav.d.ts +48 -0
- package/dist/components/Sidebar/SidebarNav.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarSafeArea.d.ts +56 -0
- package/dist/components/Sidebar/SidebarSafeArea.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarSubContent.d.ts +10 -0
- package/dist/components/Sidebar/SidebarSubContent.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarSubLink.d.ts +18 -0
- package/dist/components/Sidebar/SidebarSubLink.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarToggle.d.ts +52 -0
- package/dist/components/Sidebar/SidebarToggle.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarTooltip.d.ts +26 -0
- package/dist/components/Sidebar/SidebarTooltip.d.ts.map +1 -0
- package/dist/components/Sidebar/TooltipTitle3D.d.ts +42 -0
- package/dist/components/Sidebar/TooltipTitle3D.d.ts.map +1 -0
- package/dist/components/Sidebar/TooltipTitle3DCrossfade.d.ts +46 -0
- package/dist/components/Sidebar/TooltipTitle3DCrossfade.d.ts.map +1 -0
- package/dist/components/Sidebar/TooltipTitleCylinder.d.ts +9 -0
- package/dist/components/Sidebar/TooltipTitleCylinder.d.ts.map +1 -0
- package/dist/components/Sidebar/hooks/useSidebarContext.d.ts +48 -0
- package/dist/components/Sidebar/hooks/useSidebarContext.d.ts.map +1 -0
- package/dist/components/Sidebar/hooks/useSidebarIndicator.d.ts +72 -0
- package/dist/components/Sidebar/hooks/useSidebarIndicator.d.ts.map +1 -0
- package/dist/components/Sidebar/hooks/useSidebarKeyboard.d.ts +51 -0
- package/dist/components/Sidebar/hooks/useSidebarKeyboard.d.ts.map +1 -0
- package/dist/components/Sidebar/hooks/useSubContent.d.ts +7 -0
- package/dist/components/Sidebar/hooks/useSubContent.d.ts.map +1 -0
- package/dist/components/Sidebar/hooks/useTitleHistory.d.ts +41 -0
- package/dist/components/Sidebar/hooks/useTitleHistory.d.ts.map +1 -0
- package/dist/components/Sidebar/hooks/useTooltipDirection.d.ts +29 -0
- package/dist/components/Sidebar/hooks/useTooltipDirection.d.ts.map +1 -0
- package/dist/components/Sidebar/hooks/useTooltipTransition.d.ts +60 -0
- package/dist/components/Sidebar/hooks/useTooltipTransition.d.ts.map +1 -0
- package/dist/components/Sidebar/index.d.ts +163 -0
- package/dist/components/Sidebar/index.d.ts.map +1 -0
- package/dist/components/Sidebar/sidebar-defaults.d.ts +54 -0
- package/dist/components/Sidebar/sidebar-defaults.d.ts.map +1 -0
- package/dist/components/animate-ui/components/base/switch.d.ts +11 -0
- package/dist/components/animate-ui/components/base/switch.d.ts.map +1 -0
- package/dist/components/animate-ui/primitives/base/switch.d.ts +23 -0
- package/dist/components/animate-ui/primitives/base/switch.d.ts.map +1 -0
- package/dist/components/fluid-hover-indicator-v2.d.ts +46 -0
- package/dist/components/fluid-hover-indicator-v2.d.ts.map +1 -0
- package/dist/components/fluid-hover-indicator.d.ts +28 -0
- package/dist/components/fluid-hover-indicator.d.ts.map +1 -0
- package/dist/components/ui/TextCylinder.d.ts +21 -0
- package/dist/components/ui/TextCylinder.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/card.d.ts +10 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/custom-icon.d.ts +45 -0
- package/dist/components/ui/custom-icon.d.ts.map +1 -0
- package/dist/components/ui/dotted-glow-background.d.ts +42 -0
- package/dist/components/ui/dotted-glow-background.d.ts.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/optimized-image.d.ts +12 -0
- package/dist/components/ui/optimized-image.d.ts.map +1 -0
- package/dist/components/ui/select.d.ts +16 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/slider.d.ts +5 -0
- package/dist/components/ui/slider.d.ts.map +1 -0
- package/dist/components/ui/textarea.d.ts +4 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/{index.css → dist/index.css} +945 -908
- package/dist/dist/index.css.map +1 -0
- package/dist/hooks/use-controlled-state.d.ts +9 -0
- package/dist/hooks/use-controlled-state.d.ts.map +1 -0
- package/dist/hooks/use-fluid-animation.d.ts +18 -0
- package/dist/hooks/use-fluid-animation.d.ts.map +1 -0
- package/dist/hooks/use-liquid-glass.d.ts +40 -0
- package/dist/hooks/use-liquid-glass.d.ts.map +1 -0
- package/dist/hooks/use-sidebar-liquid-glass.d.ts +48 -0
- package/dist/hooks/use-sidebar-liquid-glass.d.ts.map +1 -0
- package/dist/hooks/use-text-cylinder.d.ts +67 -0
- package/dist/hooks/use-text-cylinder.d.ts.map +1 -0
- package/dist/index.cjs +13192 -52272
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -2231
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13131 -52248
- package/dist/index.js.map +1 -1
- package/dist/lib/get-strict-context.d.ts +10 -0
- package/dist/lib/get-strict-context.d.ts.map +1 -0
- package/dist/lib/liquid-glass-presets.d.ts +43 -0
- package/dist/lib/liquid-glass-presets.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/types/sidebar-minimal.d.ts +21 -0
- package/dist/types/sidebar-minimal.d.ts.map +1 -0
- package/dist/utils/TooltipAnimationController.d.ts +122 -0
- package/dist/utils/TooltipAnimationController.d.ts.map +1 -0
- package/package.json +112 -106
- package/dist/MobileOptimizations.css +0 -570
- package/dist/index.css.map +0 -1
- package/dist/index.d.cts +0 -2235
- package/dist/tooltip-keyframes.css +0 -329
|
@@ -0,0 +1,638 @@
|
|
|
1
|
+
import type { ComponentType, ReactNode, CSSProperties, ElementType, RefObject } from "react";
|
|
2
|
+
import type { SidebarLiquidConfig } from "@/lib/liquid-glass-presets";
|
|
3
|
+
/**
|
|
4
|
+
* Modo de colapso del sidebar
|
|
5
|
+
* @enum {string}
|
|
6
|
+
*/
|
|
7
|
+
export declare enum SidebarCollapseMode {
|
|
8
|
+
/** Colapsa el sidebar a un ancho mínimo mostrando solo iconos */
|
|
9
|
+
COLLAPSE = "collapse",
|
|
10
|
+
/** Oculta completamente el sidebar */
|
|
11
|
+
HIDE = "hide"
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Comportamiento del sidebar cuando está en modo hide
|
|
15
|
+
* @enum {string}
|
|
16
|
+
*/
|
|
17
|
+
export declare enum SidebarHideBehaviour {
|
|
18
|
+
/** Muestra un botón indicador para reabrir el sidebar */
|
|
19
|
+
SHOW_INDICATOR = "showIndicator",
|
|
20
|
+
/** El sidebar es completamente controlado externamente sin indicador */
|
|
21
|
+
CONTROLLED = "controlled"
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Comportamiento al abrir desde el estado hide
|
|
25
|
+
* @enum {string}
|
|
26
|
+
*/
|
|
27
|
+
export declare enum SidebarHideOpensBehavior {
|
|
28
|
+
/** Abre al tamaño colapsado (solo iconos) */
|
|
29
|
+
COLLAPSED = "collapsed",
|
|
30
|
+
/** Abre al tamaño expandido completo */
|
|
31
|
+
EXPANDED = "expanded"
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Comportamiento de layout del sidebar
|
|
35
|
+
* @enum {string}
|
|
36
|
+
*/
|
|
37
|
+
export declare enum SidebarLayoutBehaviour {
|
|
38
|
+
/** Sidebar flotante con z-index que NO desplaza el contenido (default) */
|
|
39
|
+
FLOATING = "floating",
|
|
40
|
+
/** Sidebar como parte del layout que SÍ desplaza el contenido */
|
|
41
|
+
INLINE = "inline"
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Anchos predefinidos del sidebar
|
|
45
|
+
* @enum {string}
|
|
46
|
+
*/
|
|
47
|
+
export declare enum SidebarWidth {
|
|
48
|
+
/** Ancho en estado colapsado (solo iconos) */
|
|
49
|
+
COLLAPSED = "5rem",
|
|
50
|
+
/** Ancho expandido completo */
|
|
51
|
+
EXPANDED = "16rem",
|
|
52
|
+
/** Ancho mínimo absoluto */
|
|
53
|
+
MIN = "3rem",
|
|
54
|
+
/** Ancho máximo absoluto */
|
|
55
|
+
MAX = "20rem"
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Duraciones de transición en milisegundos
|
|
59
|
+
* @enum {number}
|
|
60
|
+
*/
|
|
61
|
+
export declare enum SidebarTransitionDuration {
|
|
62
|
+
/** Transición rápida para cambios de opacidad */
|
|
63
|
+
FAST = 200,
|
|
64
|
+
/** Transición normal para width y transforms */
|
|
65
|
+
NORMAL = 300,
|
|
66
|
+
/** Transición lenta para animaciones complejas */
|
|
67
|
+
SLOW = 500
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Índices Z para capas del sidebar
|
|
71
|
+
* @enum {number}
|
|
72
|
+
*/
|
|
73
|
+
export declare enum SidebarZIndex {
|
|
74
|
+
/** Base del contenedor wrapper */
|
|
75
|
+
BASE = 0,
|
|
76
|
+
/** Indicador visual */
|
|
77
|
+
INDICATOR = 5,
|
|
78
|
+
/** Contenido interno del sidebar */
|
|
79
|
+
CONTENT = 10,
|
|
80
|
+
/** Botón de toggle */
|
|
81
|
+
TOGGLE = 30
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Radios de borde predefinidos
|
|
85
|
+
* @enum {string}
|
|
86
|
+
*/
|
|
87
|
+
export declare enum SidebarBorderRadius {
|
|
88
|
+
/** Sin radio de borde */
|
|
89
|
+
NONE = "0",
|
|
90
|
+
/** Radio pequeño */
|
|
91
|
+
SM = "0.25rem",
|
|
92
|
+
/** Radio medio */
|
|
93
|
+
MD = "0.5rem",
|
|
94
|
+
/** Radio grande */
|
|
95
|
+
LG = "1rem",
|
|
96
|
+
/** Radio completo (circular) */
|
|
97
|
+
FULL = "9999px"
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Posiciones para SidebarSafeArea
|
|
101
|
+
* @enum {string}
|
|
102
|
+
*/
|
|
103
|
+
export declare enum SidebarSafeAreaPosition {
|
|
104
|
+
/** Área segura superior */
|
|
105
|
+
TOP = "top",
|
|
106
|
+
/** Área segura inferior */
|
|
107
|
+
BOTTOM = "bottom"
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Timing functions para transiciones CSS
|
|
111
|
+
* @enum {string}
|
|
112
|
+
*/
|
|
113
|
+
export declare enum SidebarTimingFunction {
|
|
114
|
+
/** Ease estándar */
|
|
115
|
+
EASE = "ease",
|
|
116
|
+
/** Linear (velocidad constante) */
|
|
117
|
+
LINEAR = "linear",
|
|
118
|
+
/** Ease in (aceleración) */
|
|
119
|
+
EASE_IN = "ease-in",
|
|
120
|
+
/** Ease out (desaceleración) */
|
|
121
|
+
EASE_OUT = "ease-out",
|
|
122
|
+
/** Ease in out (aceleración y desaceleración) */
|
|
123
|
+
EASE_IN_OUT = "ease-in-out",
|
|
124
|
+
/** Cubic bezier personalizado */
|
|
125
|
+
CUSTOM = "cubic-bezier(0.4, 0, 0.2, 1)"
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Configuración de estilo visual del sidebar
|
|
129
|
+
* @interface
|
|
130
|
+
*/
|
|
131
|
+
export interface SidebarVisualStyle {
|
|
132
|
+
/** Margen superior (separación del borde superior) */
|
|
133
|
+
marginTop?: string;
|
|
134
|
+
/** Margen inferior (separación del borde inferior) */
|
|
135
|
+
marginBottom?: string;
|
|
136
|
+
/** Margen izquierdo (separación del borde izquierdo) */
|
|
137
|
+
marginLeft?: string;
|
|
138
|
+
/** Margen derecho (generalmente 0 en modo inline) */
|
|
139
|
+
marginRight?: string;
|
|
140
|
+
/** Altura del sidebar (default: "100vh") */
|
|
141
|
+
height?: string;
|
|
142
|
+
/** Radio de borde redondeado */
|
|
143
|
+
borderRadius?: string;
|
|
144
|
+
/** Sombra del sidebar */
|
|
145
|
+
boxShadow?: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Configuración de dimensiones del sidebar
|
|
149
|
+
* @interface
|
|
150
|
+
*/
|
|
151
|
+
export interface SidebarDimensions {
|
|
152
|
+
/** Ancho cuando está colapsado */
|
|
153
|
+
collapsedWidth: string;
|
|
154
|
+
/** Ancho cuando está expandido */
|
|
155
|
+
expandedWidth: string;
|
|
156
|
+
/** Altura del indicador visual */
|
|
157
|
+
indicatorHeight: string;
|
|
158
|
+
/** Distancia del tooltip al borde del sidebar (CSS-first con Anchor API) */
|
|
159
|
+
tooltipDistance?: string;
|
|
160
|
+
/** Configuración de estilo visual */
|
|
161
|
+
visualStyle?: SidebarVisualStyle;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Configuración de áreas seguras (safe areas)
|
|
165
|
+
* @interface
|
|
166
|
+
*/
|
|
167
|
+
export interface SidebarSafeAreas {
|
|
168
|
+
/** Porcentaje de altura para área segura superior */
|
|
169
|
+
topPercent: number;
|
|
170
|
+
/** Porcentaje de altura para área segura inferior */
|
|
171
|
+
bottomPercent: number;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Configuración de animaciones
|
|
175
|
+
* @interface
|
|
176
|
+
*/
|
|
177
|
+
export interface SidebarAnimations {
|
|
178
|
+
/** Duración de transición de width en ms */
|
|
179
|
+
widthTransitionDuration: number;
|
|
180
|
+
/** Duración de transición de opacidad en ms */
|
|
181
|
+
opacityTransitionDuration: number;
|
|
182
|
+
/** Función de timing para animaciones */
|
|
183
|
+
timingFunction: string;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Configuración experimental de Liquid Glass V2
|
|
187
|
+
*
|
|
188
|
+
* @description
|
|
189
|
+
* Feature flags para habilitar efectos avanzados de liquid glass basados en:
|
|
190
|
+
* - SVG Displacement Mapping (Snell's Law refraction)
|
|
191
|
+
* - Chromatic Aberration (RGB channel separation)
|
|
192
|
+
* - Edge Glass 3D (dual backdrop layers)
|
|
193
|
+
* - Backdrop Extension (Josh Comeau technique)
|
|
194
|
+
*
|
|
195
|
+
* @interface
|
|
196
|
+
* @experimental
|
|
197
|
+
*/
|
|
198
|
+
export interface SidebarLiquidGlassConfig {
|
|
199
|
+
/**
|
|
200
|
+
* Habilitar Liquid Glass V2 (master flag)
|
|
201
|
+
*
|
|
202
|
+
* @description
|
|
203
|
+
* Activa el uso de FluidHoverIndicatorV2 y SidebarTooltipV2 con SVG displacement mapping
|
|
204
|
+
* en lugar de las versiones básicas con backdrop-blur CSS.
|
|
205
|
+
*
|
|
206
|
+
* @default false
|
|
207
|
+
*/
|
|
208
|
+
enableLiquidGlassV2?: boolean;
|
|
209
|
+
/**
|
|
210
|
+
* Habilitar Chromatic Aberration (Phase 2)
|
|
211
|
+
*
|
|
212
|
+
* @description
|
|
213
|
+
* Activa la separación real de canales RGB usando feColorMatrix + feOffset
|
|
214
|
+
* en lugar del método legacy basado en diferentes escalas de displacement.
|
|
215
|
+
* Proporciona +15% de realismo visual según benchmarks.
|
|
216
|
+
*
|
|
217
|
+
* **Requiere**: enableLiquidGlassV2 = true
|
|
218
|
+
*
|
|
219
|
+
* @default false
|
|
220
|
+
*/
|
|
221
|
+
enableChromaticAberration?: boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Habilitar Edge Glass 3D (tooltips)
|
|
224
|
+
*
|
|
225
|
+
* @description
|
|
226
|
+
* Activa dual backdrop layers con blur diferenciado para crear ilusión de profundidad:
|
|
227
|
+
* - Depth layer: blur alto (16px) con brightness 1.15
|
|
228
|
+
* - Surface layer: blur moderado (8px) con brightness 1.25
|
|
229
|
+
*
|
|
230
|
+
* **Solo aplica a**: SidebarTooltipV2
|
|
231
|
+
* **Requiere**: enableLiquidGlassV2 = true
|
|
232
|
+
*
|
|
233
|
+
* @default true
|
|
234
|
+
*/
|
|
235
|
+
enableEdgeGlass3D?: boolean;
|
|
236
|
+
/**
|
|
237
|
+
* Habilitar Backdrop Extension (Josh Comeau)
|
|
238
|
+
*
|
|
239
|
+
* @description
|
|
240
|
+
* Extiende el área de backdrop-filter al 200% de altura con mask
|
|
241
|
+
* para capturar elementos cercanos y mejorar el realismo de la refracción.
|
|
242
|
+
*
|
|
243
|
+
* **Solo aplica a**: SidebarTooltipV2
|
|
244
|
+
* **Requiere**: enableLiquidGlassV2 = true
|
|
245
|
+
*
|
|
246
|
+
* @default true
|
|
247
|
+
*/
|
|
248
|
+
enableBackdropExtension?: boolean;
|
|
249
|
+
/**
|
|
250
|
+
* Habilitar animaciones staggered de items en tooltips
|
|
251
|
+
*
|
|
252
|
+
* @description
|
|
253
|
+
* Activa entrada/salida escalonada de items del tooltip usando CSS custom properties.
|
|
254
|
+
* Incluye grid trick para height auto transitions y direction-aware animations.
|
|
255
|
+
*
|
|
256
|
+
* **Solo aplica a**: SidebarTooltipV2
|
|
257
|
+
*
|
|
258
|
+
* @default true
|
|
259
|
+
* @experimental
|
|
260
|
+
*/
|
|
261
|
+
enableTooltipItemAnimations?: boolean;
|
|
262
|
+
/**
|
|
263
|
+
* Habilitar animación 3D de cilindro para títulos de tooltips
|
|
264
|
+
*
|
|
265
|
+
* @description
|
|
266
|
+
* Activa efecto de cilindro rotatorio 3D para el título del tooltip usando Web Animations API.
|
|
267
|
+
* Mantiene historial circular de últimos 10 títulos y rota según dirección de navegación.
|
|
268
|
+
*
|
|
269
|
+
* **Features**:
|
|
270
|
+
* - Rotación 3D con rotateX
|
|
271
|
+
* - Direction-aware (up/down navigation)
|
|
272
|
+
* - Historial circular de títulos
|
|
273
|
+
* - Duración: 400ms, easing cubic-bezier
|
|
274
|
+
*
|
|
275
|
+
* **Solo aplica a**: SidebarTooltip
|
|
276
|
+
*
|
|
277
|
+
* @default false
|
|
278
|
+
* @experimental
|
|
279
|
+
*/
|
|
280
|
+
enableCylinderTitle?: boolean;
|
|
281
|
+
/**
|
|
282
|
+
* Overrides de preset para configuración avanzada de Liquid Glass
|
|
283
|
+
*
|
|
284
|
+
* @description
|
|
285
|
+
* Permite sobrescribir valores del preset 'sidebar' para debugging y ajuste fino.
|
|
286
|
+
* Incluye parámetros visuales como frost, blur, scale, chromatic aberration RGB, etc.
|
|
287
|
+
*
|
|
288
|
+
* **Ejemplo**:
|
|
289
|
+
* ```tsx
|
|
290
|
+
* presetOverrides: {
|
|
291
|
+
* frost: 0.08,
|
|
292
|
+
* blur: 12,
|
|
293
|
+
* blurBackground: 10,
|
|
294
|
+
* scale: -200,
|
|
295
|
+
* r: 5,
|
|
296
|
+
* g: 15,
|
|
297
|
+
* b: 25
|
|
298
|
+
* }
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* **Requiere**: enableLiquidGlassV2 = true
|
|
302
|
+
*
|
|
303
|
+
* @default undefined
|
|
304
|
+
* @experimental
|
|
305
|
+
*/
|
|
306
|
+
presetOverrides?: Partial<SidebarLiquidConfig>;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Librería de iconos a utilizar
|
|
310
|
+
* @enum {string}
|
|
311
|
+
*/
|
|
312
|
+
export declare enum SidebarIconLibrary {
|
|
313
|
+
/** Iconos de lucide-react */
|
|
314
|
+
LUCIDE = "lucide",
|
|
315
|
+
/** Iconos custom proporcionados por el usuario */
|
|
316
|
+
CUSTOM = "custom"
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Estado compartido del sidebar
|
|
320
|
+
* @interface
|
|
321
|
+
*/
|
|
322
|
+
export interface SidebarState {
|
|
323
|
+
/** Indica si el sidebar está abierto */
|
|
324
|
+
open: boolean;
|
|
325
|
+
/** Indica si el sidebar está colapsado (solo en modo COLLAPSE) */
|
|
326
|
+
collapsed: boolean;
|
|
327
|
+
/** Modo de colapso actual */
|
|
328
|
+
collapseMode: SidebarCollapseMode;
|
|
329
|
+
/** Comportamiento de layout actual */
|
|
330
|
+
layoutBehaviour: SidebarLayoutBehaviour;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Estado del botón toggle
|
|
334
|
+
* @interface
|
|
335
|
+
*/
|
|
336
|
+
export interface SidebarToggleState {
|
|
337
|
+
/** Indica si el toggle está activo/presionado */
|
|
338
|
+
active: boolean;
|
|
339
|
+
/** Indica si el sidebar está abierto */
|
|
340
|
+
open: boolean;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Estado de un item del sidebar
|
|
344
|
+
* @interface
|
|
345
|
+
*/
|
|
346
|
+
export interface SidebarItemState {
|
|
347
|
+
/** Indica si el item está enfocado por teclado */
|
|
348
|
+
focused: boolean;
|
|
349
|
+
/** Indica si el mouse está sobre el item */
|
|
350
|
+
hovered: boolean;
|
|
351
|
+
/** Indica si el item está deshabilitado */
|
|
352
|
+
disabled: boolean;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Estado del indicador visual
|
|
356
|
+
* @interface
|
|
357
|
+
*/
|
|
358
|
+
export interface SidebarIndicatorState {
|
|
359
|
+
/** Indica si el indicador está visible */
|
|
360
|
+
visible: boolean;
|
|
361
|
+
/** Posición Y del indicador en píxeles */
|
|
362
|
+
position: number;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Tipo para render prop de Sidebar
|
|
366
|
+
*/
|
|
367
|
+
export type SidebarRenderProp = (state: SidebarState) => ReactNode;
|
|
368
|
+
/**
|
|
369
|
+
* Tipo para render prop de SidebarToggle
|
|
370
|
+
*/
|
|
371
|
+
export type SidebarToggleRenderProp = (state: SidebarToggleState) => ReactNode;
|
|
372
|
+
/**
|
|
373
|
+
* Tipo para render prop de SidebarItem
|
|
374
|
+
*/
|
|
375
|
+
export type SidebarItemRenderProp = (state: SidebarItemState) => ReactNode;
|
|
376
|
+
/**
|
|
377
|
+
* Tipo para render prop de SidebarIndicator
|
|
378
|
+
*/
|
|
379
|
+
export type SidebarIndicatorRenderProp = (state: SidebarIndicatorState) => ReactNode;
|
|
380
|
+
/**
|
|
381
|
+
* Valor del contexto compartido del Sidebar
|
|
382
|
+
* @interface
|
|
383
|
+
*/
|
|
384
|
+
export interface SidebarContextValue {
|
|
385
|
+
/** Estado inicial del sidebar (solo lectura) */
|
|
386
|
+
defaultOpen: boolean;
|
|
387
|
+
/** Estado actual open/closed del sidebar */
|
|
388
|
+
open: boolean;
|
|
389
|
+
/** Función para actualizar el estado open */
|
|
390
|
+
setOpen: (open: boolean) => void;
|
|
391
|
+
/** Modo de colapso actual */
|
|
392
|
+
collapseMode: SidebarCollapseMode;
|
|
393
|
+
/** Comportamiento en modo hide */
|
|
394
|
+
hideBehaviour: SidebarHideBehaviour;
|
|
395
|
+
/** Comportamiento al abrir desde hide */
|
|
396
|
+
hideOpensBehavior: SidebarHideOpensBehavior;
|
|
397
|
+
/** Comportamiento de layout del sidebar */
|
|
398
|
+
layoutBehaviour: SidebarLayoutBehaviour;
|
|
399
|
+
/** Configuración de dimensiones */
|
|
400
|
+
dimensions: SidebarDimensions;
|
|
401
|
+
/** Configuración de safe areas */
|
|
402
|
+
safeAreas: SidebarSafeAreas;
|
|
403
|
+
/** Configuración de animaciones */
|
|
404
|
+
animations: SidebarAnimations;
|
|
405
|
+
/** ID del toggle input */
|
|
406
|
+
toggleId: string;
|
|
407
|
+
/** Modo debug para visualizar safe areas */
|
|
408
|
+
debug: boolean;
|
|
409
|
+
/** Ref al contenedor de navegación */
|
|
410
|
+
navRef: RefObject<HTMLElement | null>;
|
|
411
|
+
/** Ref al contenedor de items */
|
|
412
|
+
contentRef: RefObject<HTMLDivElement | null>;
|
|
413
|
+
/** Ref al indicador visual */
|
|
414
|
+
indicatorRef: RefObject<HTMLDivElement | null>;
|
|
415
|
+
/** Registrar un item para navegación por teclado */
|
|
416
|
+
registerItem: (element: HTMLElement) => void;
|
|
417
|
+
/** Des-registrar un item */
|
|
418
|
+
unregisterItem: (element: HTMLElement) => void;
|
|
419
|
+
/** Items registrados actualmente */
|
|
420
|
+
items: HTMLElement[];
|
|
421
|
+
/** Indica si el indicador debe mostrarse por navegación de teclado */
|
|
422
|
+
showIndicatorForKeyboard: boolean;
|
|
423
|
+
/** Función para activar/desactivar el indicador por teclado */
|
|
424
|
+
setShowIndicatorForKeyboard: (show: boolean) => void;
|
|
425
|
+
/** Indica si el cursor/focus está sobre el área de items */
|
|
426
|
+
isOverItems: boolean;
|
|
427
|
+
/** Función para actualizar el estado de isOverItems */
|
|
428
|
+
setIsOverItems: (isOver: boolean) => void;
|
|
429
|
+
/** Habilitar FluidHoverIndicator (glassmorphism + spring physics) */
|
|
430
|
+
enableFluidIndicator: boolean;
|
|
431
|
+
/** Habilitar tooltip en hover (muestra label o subcategorías) */
|
|
432
|
+
enableTooltip: boolean;
|
|
433
|
+
/** Elemento del item actualmente hovered/focused (para FluidIndicator) */
|
|
434
|
+
currentItemElement: HTMLElement | null;
|
|
435
|
+
/** Función para actualizar el currentItemElement */
|
|
436
|
+
setCurrentItemElement: (element: HTMLElement | null) => void;
|
|
437
|
+
/** Configuración experimental de Liquid Glass V2 */
|
|
438
|
+
liquidGlass: SidebarLiquidGlassConfig;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Props polimórficas base con soporte para prop 'as'
|
|
442
|
+
*/
|
|
443
|
+
export type PolymorphicProps<E extends ElementType = ElementType> = {
|
|
444
|
+
/** Elemento o componente a renderizar */
|
|
445
|
+
as?: E;
|
|
446
|
+
} & Omit<React.ComponentPropsWithRef<E>, "as">;
|
|
447
|
+
/**
|
|
448
|
+
* Props del componente Sidebar (root container)
|
|
449
|
+
* @interface
|
|
450
|
+
*/
|
|
451
|
+
export interface SidebarProps {
|
|
452
|
+
/** Contenido del sidebar (puede ser ReactNode o render prop) */
|
|
453
|
+
children: ReactNode | SidebarRenderProp;
|
|
454
|
+
/** Clase CSS adicional para el wrapper */
|
|
455
|
+
className?: string;
|
|
456
|
+
/** Estilos inline para el wrapper */
|
|
457
|
+
style?: CSSProperties;
|
|
458
|
+
/** Estado inicial abierto (modo uncontrolled) */
|
|
459
|
+
defaultOpen?: boolean;
|
|
460
|
+
/** Estado abierto (modo controlled) */
|
|
461
|
+
open?: boolean;
|
|
462
|
+
/** Callback cuando cambia el estado open */
|
|
463
|
+
onOpenChange?: (open: boolean) => void;
|
|
464
|
+
/** Modo de colapso del sidebar */
|
|
465
|
+
collapseMode?: SidebarCollapseMode;
|
|
466
|
+
/** Comportamiento en modo hide */
|
|
467
|
+
hideBehaviour?: SidebarHideBehaviour;
|
|
468
|
+
/** Comportamiento al abrir desde hide */
|
|
469
|
+
hideOpensBehavior?: SidebarHideOpensBehavior;
|
|
470
|
+
/** Comportamiento de layout del sidebar */
|
|
471
|
+
layoutBehaviour?: SidebarLayoutBehaviour;
|
|
472
|
+
/** Configuración de dimensiones (partial override) */
|
|
473
|
+
dimensions?: Partial<SidebarDimensions>;
|
|
474
|
+
/** Configuración de áreas seguras (partial override) */
|
|
475
|
+
safeAreas?: Partial<SidebarSafeAreas>;
|
|
476
|
+
/** Configuración de animaciones (partial override) */
|
|
477
|
+
animations?: Partial<SidebarAnimations>;
|
|
478
|
+
/** ID personalizado para el toggle input */
|
|
479
|
+
toggleId?: string;
|
|
480
|
+
/** Modo debug (muestra bordes y labels) */
|
|
481
|
+
debug?: boolean;
|
|
482
|
+
/** Habilitar FluidHoverIndicator (glassmorphism + spring physics) */
|
|
483
|
+
enableFluidIndicator?: boolean;
|
|
484
|
+
/** Habilitar tooltip en hover (muestra label o subcategorías) */
|
|
485
|
+
enableTooltip?: boolean;
|
|
486
|
+
/**
|
|
487
|
+
* Configuración experimental de Liquid Glass V2 (partial override)
|
|
488
|
+
*
|
|
489
|
+
* @description
|
|
490
|
+
* Permite activar/desactivar features experimentales de liquid glass mediante flags:
|
|
491
|
+
*
|
|
492
|
+
* @example
|
|
493
|
+
* ```tsx
|
|
494
|
+
* <Sidebar
|
|
495
|
+
* liquidGlass={{
|
|
496
|
+
* enableLiquidGlassV2: true,
|
|
497
|
+
* enableChromaticAberration: true,
|
|
498
|
+
* enableEdgeGlass3D: true,
|
|
499
|
+
* enableBackdropExtension: true
|
|
500
|
+
* }}
|
|
501
|
+
* >
|
|
502
|
+
* ...
|
|
503
|
+
* </Sidebar>
|
|
504
|
+
* ```
|
|
505
|
+
*
|
|
506
|
+
* @experimental
|
|
507
|
+
*/
|
|
508
|
+
liquidGlass?: Partial<SidebarLiquidGlassConfig>;
|
|
509
|
+
/** Elemento o componente a renderizar */
|
|
510
|
+
as?: ElementType;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Props del componente SidebarNav
|
|
514
|
+
* @interface
|
|
515
|
+
*/
|
|
516
|
+
export interface SidebarNavProps {
|
|
517
|
+
/** Contenido del nav */
|
|
518
|
+
children: ReactNode;
|
|
519
|
+
/** Clase CSS adicional */
|
|
520
|
+
className?: string;
|
|
521
|
+
/** Estilos inline */
|
|
522
|
+
style?: CSSProperties;
|
|
523
|
+
/** Label ARIA para el nav */
|
|
524
|
+
"aria-label"?: string;
|
|
525
|
+
/** Elemento o componente a renderizar */
|
|
526
|
+
as?: ElementType;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Props del componente SidebarToggle
|
|
530
|
+
* @interface
|
|
531
|
+
*/
|
|
532
|
+
export interface SidebarToggleProps {
|
|
533
|
+
/** Contenido del botón (puede ser ReactNode o render prop) */
|
|
534
|
+
children?: ReactNode | SidebarToggleRenderProp;
|
|
535
|
+
/** Librería de iconos a utilizar (Lucide o custom) */
|
|
536
|
+
iconLibrary?: SidebarIconLibrary;
|
|
537
|
+
/** Clase CSS adicional */
|
|
538
|
+
className?: string;
|
|
539
|
+
/** Estilos inline */
|
|
540
|
+
style?: CSSProperties;
|
|
541
|
+
/** Label ARIA para el botón */
|
|
542
|
+
"aria-label"?: string;
|
|
543
|
+
/** Elemento o componente a renderizar */
|
|
544
|
+
as?: ElementType;
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Props del componente SidebarContent
|
|
548
|
+
* @interface
|
|
549
|
+
*/
|
|
550
|
+
export interface SidebarContentProps {
|
|
551
|
+
/** Contenido (items del sidebar) */
|
|
552
|
+
children: ReactNode;
|
|
553
|
+
/** Clase CSS adicional */
|
|
554
|
+
className?: string;
|
|
555
|
+
/** Estilos inline */
|
|
556
|
+
style?: CSSProperties;
|
|
557
|
+
/** Elemento o componente a renderizar */
|
|
558
|
+
as?: ElementType;
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* Props del componente SidebarIndicator
|
|
562
|
+
* @interface
|
|
563
|
+
*/
|
|
564
|
+
export interface SidebarIndicatorProps {
|
|
565
|
+
/** Contenido personalizado del indicador (opcional) */
|
|
566
|
+
children?: ReactNode | SidebarIndicatorRenderProp;
|
|
567
|
+
/** Clase CSS adicional */
|
|
568
|
+
className?: string;
|
|
569
|
+
/** Estilos inline */
|
|
570
|
+
style?: CSSProperties;
|
|
571
|
+
/** Elemento o componente a renderizar */
|
|
572
|
+
as?: ElementType;
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Props del componente SidebarSafeArea
|
|
576
|
+
* @interface
|
|
577
|
+
*/
|
|
578
|
+
export interface SidebarSafeAreaProps {
|
|
579
|
+
/** Contenido del área segura */
|
|
580
|
+
children?: ReactNode;
|
|
581
|
+
/** Posición del área segura (top o bottom) */
|
|
582
|
+
position: SidebarSafeAreaPosition;
|
|
583
|
+
/** Porcentaje de altura del sidebar (override del config) */
|
|
584
|
+
percent?: number;
|
|
585
|
+
/** Clase CSS adicional */
|
|
586
|
+
className?: string;
|
|
587
|
+
/** Estilos inline */
|
|
588
|
+
style?: CSSProperties;
|
|
589
|
+
/** Elemento o componente a renderizar */
|
|
590
|
+
as?: ElementType;
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* Props del componente SidebarItem
|
|
594
|
+
* @interface
|
|
595
|
+
*/
|
|
596
|
+
export interface SidebarItemProps {
|
|
597
|
+
/** URL de destino */
|
|
598
|
+
href?: string;
|
|
599
|
+
/** Icono del item */
|
|
600
|
+
icon?: ReactNode;
|
|
601
|
+
/** Label/texto del item */
|
|
602
|
+
label?: string;
|
|
603
|
+
/** Contenido del item (puede ser ReactNode o render prop) */
|
|
604
|
+
children?: ReactNode | SidebarItemRenderProp;
|
|
605
|
+
/** Componente Link personalizado (ej: React Router Link, Next Link) */
|
|
606
|
+
LinkComponent?: ComponentType<any>;
|
|
607
|
+
/** Props adicionales para el LinkComponent */
|
|
608
|
+
linkProps?: Record<string, any>;
|
|
609
|
+
/** Clase CSS adicional */
|
|
610
|
+
className?: string;
|
|
611
|
+
/** Estilos inline */
|
|
612
|
+
style?: CSSProperties;
|
|
613
|
+
/** Callback al hacer hover */
|
|
614
|
+
onHover?: () => void;
|
|
615
|
+
/** Callback al hacer click */
|
|
616
|
+
onClick?: () => void;
|
|
617
|
+
/** Item deshabilitado */
|
|
618
|
+
disabled?: boolean;
|
|
619
|
+
/** Elemento o componente a renderizar */
|
|
620
|
+
as?: ElementType;
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Configuración completa del sidebar (sin partials)
|
|
624
|
+
*/
|
|
625
|
+
export interface SidebarConfig {
|
|
626
|
+
defaultOpen: boolean;
|
|
627
|
+
collapseMode: SidebarCollapseMode;
|
|
628
|
+
hideBehaviour: SidebarHideBehaviour;
|
|
629
|
+
hideOpensBehavior: SidebarHideOpensBehavior;
|
|
630
|
+
layoutBehaviour: SidebarLayoutBehaviour;
|
|
631
|
+
dimensions: SidebarDimensions;
|
|
632
|
+
safeAreas: SidebarSafeAreas;
|
|
633
|
+
animations: SidebarAnimations;
|
|
634
|
+
toggleId: string;
|
|
635
|
+
debug: boolean;
|
|
636
|
+
liquidGlass: SidebarLiquidGlassConfig;
|
|
637
|
+
}
|
|
638
|
+
//# sourceMappingURL=Sidebar.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.types.d.ts","sourceRoot":"","sources":["../../../src/components/Sidebar/Sidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAMrE;;;GAGG;AACH,oBAAY,mBAAmB;IAC7B,kEAAiE;IACjE,QAAQ,aAAa;IACrB,sCAAsC;IACtC,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,oBAAY,oBAAoB;IAC9B,0DAAyD;IACzD,cAAc,kBAAkB;IAChC,wEAAwE;IACxE,UAAU,eAAe;CAC1B;AAED;;;GAGG;AACH,oBAAY,wBAAwB;IAClC,8CAA6C;IAC7C,SAAS,cAAc;IACvB,yCAAwC;IACxC,QAAQ,aAAa;CACtB;AAED;;;GAGG;AACH,oBAAY,sBAAsB;IAChC,0EAA0E;IAC1E,QAAQ,aAAa;IACrB,kEAAiE;IACjE,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,oBAAY,YAAY;IACtB,8CAA8C;IAC9C,SAAS,SAAS;IAClB,+BAA+B;IAC/B,QAAQ,UAAU;IAClB,6BAA4B;IAC5B,GAAG,SAAS;IACZ,6BAA4B;IAC5B,GAAG,UAAU;CACd;AAED;;;GAGG;AACH,oBAAY,yBAAyB;IACnC,mDAAiD;IACjD,IAAI,MAAM;IACV,iDAAgD;IAChD,MAAM,MAAM;IACZ,mDAAkD;IAClD,IAAI,MAAM;CACX;AAED;;;GAGG;AACH,oBAAY,aAAa;IACvB,kCAAkC;IAClC,IAAI,IAAI;IACR,uBAAuB;IACvB,SAAS,IAAI;IACb,oCAAoC;IACpC,OAAO,KAAK;IACZ,uBAAsB;IACtB,MAAM,KAAK;CACZ;AAED;;;GAGG;AACH,oBAAY,mBAAmB;IAC7B,yBAAyB;IACzB,IAAI,MAAM;IACV,qBAAoB;IACpB,EAAE,YAAY;IACd,kBAAkB;IAClB,EAAE,WAAW;IACb,mBAAmB;IACnB,EAAE,SAAS;IACX,gCAAgC;IAChC,IAAI,WAAW;CAChB;AAED;;;GAGG;AACH,oBAAY,uBAAuB;IACjC,4BAA2B;IAC3B,GAAG,QAAQ;IACX,4BAA2B;IAC3B,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,oBAAY,qBAAqB;IAC/B,qBAAoB;IACpB,IAAI,SAAS;IACb,mCAAmC;IACnC,MAAM,WAAW;IACjB,6BAA4B;IAC5B,OAAO,YAAY;IACnB,iCAAgC;IAChC,QAAQ,aAAa;IACrB,mDAAiD;IACjD,WAAW,gBAAgB;IAC3B,iCAAiC;IACjC,MAAM,iCAAiC;CACxC;AAMD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAkC;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,mCAAkC;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sCAAqC;IACrC,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAqD;IACrD,UAAU,EAAE,MAAM,CAAA;IAClB,sDAAqD;IACrD,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA4C;IAC5C,uBAAuB,EAAE,MAAM,CAAA;IAC/B,iDAA+C;IAC/C,yBAAyB,EAAE,MAAM,CAAA;IACjC,0CAAyC;IACzC,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;;;;;;;;;OAWG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAEnC;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;;;;;;;;;OAWG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IAEjC;;;;;;;;;;;OAWG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;IAErC;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;CAC/C;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,6BAA6B;IAC7B,MAAM,WAAW;IACjB,kDAAkD;IAClD,MAAM,WAAW;CAClB;AAMD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAwC;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,mEAAkE;IAClE,SAAS,EAAE,OAAO,CAAA;IAClB,6BAA6B;IAC7B,YAAY,EAAE,mBAAmB,CAAA;IACjC,sCAAsC;IACtC,eAAe,EAAE,sBAAsB,CAAA;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,kDAAiD;IACjD,MAAM,EAAE,OAAO,CAAA;IACf,yCAAwC;IACxC,IAAI,EAAE,OAAO,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAkD;IAClD,OAAO,EAAE,OAAO,CAAA;IAChB,6CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAA;IAChB,4CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAA;IAChB,4CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;CACjB;AAMD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,SAAS,CAAA;AAElE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,SAAS,CAAA;AAE1E;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,SAAS,CAAA;AAMpF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,WAAW,EAAE,OAAO,CAAA;IACpB,4CAA4C;IAC5C,IAAI,EAAE,OAAO,CAAA;IACb,8CAA6C;IAC7C,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,6BAA6B;IAC7B,YAAY,EAAE,mBAAmB,CAAA;IACjC,kCAAkC;IAClC,aAAa,EAAE,oBAAoB,CAAA;IACnC,yCAAyC;IACzC,iBAAiB,EAAE,wBAAwB,CAAA;IAC3C,2CAA2C;IAC3C,eAAe,EAAE,sBAAsB,CAAA;IACvC,oCAAmC;IACnC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,mCAAkC;IAClC,SAAS,EAAE,gBAAgB,CAAA;IAC3B,oCAAmC;IACnC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAA;IACd,uCAAsC;IACtC,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACrC,iCAAiC;IACjC,UAAU,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC5C,8BAA8B;IAC9B,YAAY,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC9C,qDAAoD;IACpD,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAC5C,4BAA4B;IAC5B,cAAc,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAC9C,oCAAoC;IACpC,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,uEAAsE;IACtE,wBAAwB,EAAE,OAAO,CAAA;IACjC,gEAA+D;IAC/D,2BAA2B,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,8DAA4D;IAC5D,WAAW,EAAE,OAAO,CAAA;IACpB,wDAAuD;IACvD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACzC,qEAAqE;IACrE,oBAAoB,EAAE,OAAO,CAAA;IAC7B,kEAAiE;IACjE,aAAa,EAAE,OAAO,CAAA;IACtB,0EAA0E;IAC1E,kBAAkB,EAAE,WAAW,GAAG,IAAI,CAAA;IACtC,qDAAoD;IACpD,qBAAqB,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5D,qDAAoD;IACpD,WAAW,EAAE,wBAAwB,CAAA;CACtC;AAMD;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IAClE,yCAAyC;IACzC,EAAE,CAAC,EAAE,CAAC,CAAA;CACP,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAE9C;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,QAAQ,EAAE,SAAS,GAAG,iBAAiB,CAAA;IACvC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qCAAqC;IACrC,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,uCAAuC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,kCAAkC;IAClC,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,kCAAkC;IAClC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IACpC,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,wBAAwB,CAAA;IAC5C,2CAA2C;IAC3C,eAAe,CAAC,EAAE,sBAAsB,CAAA;IACxC,uDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACvC,0DAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACrC,uDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACvC,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,kEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAA;IAC/C,yCAAyC;IACzC,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,QAAQ,EAAE,SAAS,CAAA;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yCAAyC;IACzC,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,GAAG,uBAAuB,CAAA;IAC9C,uDAAsD;IACtD,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,gCAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yCAAyC;IACzC,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,QAAQ,EAAE,SAAS,CAAA;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,yCAAyC;IACzC,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,SAAS,GAAG,0BAA0B,CAAA;IACjD,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,yCAAyC;IACzC,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,iCAAgC;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,gDAA8C;IAC9C,QAAQ,EAAE,uBAAuB,CAAA;IACjC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,yCAAyC;IACzC,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,SAAS,GAAG,qBAAqB,CAAA;IAC5C,uEAAuE;IACvE,aAAa,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,mBAAmB,CAAA;IACjC,aAAa,EAAE,oBAAoB,CAAA;IACnC,iBAAiB,EAAE,wBAAwB,CAAA;IAC3C,eAAe,EAAE,sBAAsB,CAAA;IACvC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,SAAS,EAAE,gBAAgB,CAAA;IAC3B,UAAU,EAAE,iBAAiB,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,wBAAwB,CAAA;CACtC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SidebarContentProps } from "./Sidebar.types";
|
|
2
|
+
/**
|
|
3
|
+
* Componente de contenido del Sidebar (contenedor de items)
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* Contenedor que agrupa los items de navegación (SidebarItem).
|
|
7
|
+
* Renderiza un `<div>` por defecto y aplica estilos de layout flex.
|
|
8
|
+
*
|
|
9
|
+
* Este componente:
|
|
10
|
+
* - Registra su ref en el contexto para cálculos del indicador
|
|
11
|
+
* - Aplica rol ARIA "list" para accesibilidad
|
|
12
|
+
* - Centra y distribuye items verticalmente
|
|
13
|
+
* - Permite customización completa con className y style
|
|
14
|
+
*
|
|
15
|
+
* Los items dentro de este contenedor son utilizados por:
|
|
16
|
+
* - useSidebarIndicator: Para calcular posición del indicador
|
|
17
|
+
* - useSidebarKeyboard: Para navegación por teclado
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <SidebarNav>
|
|
22
|
+
* <SidebarContent>
|
|
23
|
+
* <SidebarItem href="/" icon={<HomeIcon />} />
|
|
24
|
+
* <SidebarItem href="/settings" icon={<SettingsIcon />} />
|
|
25
|
+
* </SidebarContent>
|
|
26
|
+
* </SidebarNav>
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* // Con estilos custom
|
|
32
|
+
* <SidebarContent className="gap-2 py-4">
|
|
33
|
+
* <SidebarItem href="/" />
|
|
34
|
+
* </SidebarContent>
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* // Como lista semántica
|
|
40
|
+
* <SidebarContent as="ul">
|
|
41
|
+
* <SidebarItem as="li" href="/" />
|
|
42
|
+
* </SidebarContent>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare const SidebarContent: import("react").ForwardRefExoticComponent<SidebarContentProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
46
|
+
//# sourceMappingURL=SidebarContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarContent.d.ts","sourceRoot":"","sources":["../../../src/components/Sidebar/SidebarContent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,cAAc,gHAuDzB,CAAA"}
|