@mks2508/sidebar-headless 0.2.0 → 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.
Files changed (130) hide show
  1. package/CHANGELOG.md +53 -53
  2. package/LICENSE +21 -21
  3. package/README.md +165 -165
  4. package/dist/components/BottomNavBar/MobileBottomNav.d.ts +65 -0
  5. package/dist/components/BottomNavBar/MobileBottomNav.d.ts.map +1 -0
  6. package/dist/components/BottomNavBar/MobileBottomNav.styles.d.ts +94 -0
  7. package/dist/components/BottomNavBar/MobileBottomNav.styles.d.ts.map +1 -0
  8. package/dist/components/BottomNavBar/index.d.ts +10 -0
  9. package/dist/components/BottomNavBar/index.d.ts.map +1 -0
  10. package/dist/components/BottomNavBar/types.d.ts +363 -0
  11. package/dist/components/BottomNavBar/types.d.ts.map +1 -0
  12. package/dist/components/BottomNavBar/useIOSSafariFix.d.ts +74 -0
  13. package/dist/components/BottomNavBar/useIOSSafariFix.d.ts.map +1 -0
  14. package/dist/components/Sidebar/Sidebar.constants.d.ts +285 -0
  15. package/dist/components/Sidebar/Sidebar.constants.d.ts.map +1 -0
  16. package/dist/components/Sidebar/Sidebar.d.ts +80 -0
  17. package/dist/components/Sidebar/Sidebar.d.ts.map +1 -0
  18. package/dist/components/Sidebar/Sidebar.styles.d.ts +77 -0
  19. package/dist/components/Sidebar/Sidebar.styles.d.ts.map +1 -0
  20. package/dist/components/Sidebar/Sidebar.types.d.ts +638 -0
  21. package/dist/components/Sidebar/Sidebar.types.d.ts.map +1 -0
  22. package/dist/components/Sidebar/SidebarContent.d.ts +46 -0
  23. package/dist/components/Sidebar/SidebarContent.d.ts.map +1 -0
  24. package/dist/components/Sidebar/SidebarContext.d.ts +87 -0
  25. package/dist/components/Sidebar/SidebarContext.d.ts.map +1 -0
  26. package/dist/components/Sidebar/SidebarFluidIndicator.d.ts +37 -0
  27. package/dist/components/Sidebar/SidebarFluidIndicator.d.ts.map +1 -0
  28. package/dist/components/Sidebar/SidebarIndicator.d.ts +59 -0
  29. package/dist/components/Sidebar/SidebarIndicator.d.ts.map +1 -0
  30. package/dist/components/Sidebar/SidebarItem.d.ts +82 -0
  31. package/dist/components/Sidebar/SidebarItem.d.ts.map +1 -0
  32. package/dist/components/Sidebar/SidebarNav.d.ts +48 -0
  33. package/dist/components/Sidebar/SidebarNav.d.ts.map +1 -0
  34. package/dist/components/Sidebar/SidebarSafeArea.d.ts +56 -0
  35. package/dist/components/Sidebar/SidebarSafeArea.d.ts.map +1 -0
  36. package/dist/components/Sidebar/SidebarSubContent.d.ts +10 -0
  37. package/dist/components/Sidebar/SidebarSubContent.d.ts.map +1 -0
  38. package/dist/components/Sidebar/SidebarSubLink.d.ts +18 -0
  39. package/dist/components/Sidebar/SidebarSubLink.d.ts.map +1 -0
  40. package/dist/components/Sidebar/SidebarToggle.d.ts +52 -0
  41. package/dist/components/Sidebar/SidebarToggle.d.ts.map +1 -0
  42. package/dist/components/Sidebar/SidebarTooltip.d.ts +26 -0
  43. package/dist/components/Sidebar/SidebarTooltip.d.ts.map +1 -0
  44. package/dist/components/Sidebar/TooltipTitle3D.d.ts +42 -0
  45. package/dist/components/Sidebar/TooltipTitle3D.d.ts.map +1 -0
  46. package/dist/components/Sidebar/TooltipTitle3DCrossfade.d.ts +46 -0
  47. package/dist/components/Sidebar/TooltipTitle3DCrossfade.d.ts.map +1 -0
  48. package/dist/components/Sidebar/TooltipTitleCylinder.d.ts +9 -0
  49. package/dist/components/Sidebar/TooltipTitleCylinder.d.ts.map +1 -0
  50. package/dist/components/Sidebar/hooks/useSidebarContext.d.ts +48 -0
  51. package/dist/components/Sidebar/hooks/useSidebarContext.d.ts.map +1 -0
  52. package/dist/components/Sidebar/hooks/useSidebarIndicator.d.ts +72 -0
  53. package/dist/components/Sidebar/hooks/useSidebarIndicator.d.ts.map +1 -0
  54. package/dist/components/Sidebar/hooks/useSidebarKeyboard.d.ts +51 -0
  55. package/dist/components/Sidebar/hooks/useSidebarKeyboard.d.ts.map +1 -0
  56. package/dist/components/Sidebar/hooks/useSubContent.d.ts +7 -0
  57. package/dist/components/Sidebar/hooks/useSubContent.d.ts.map +1 -0
  58. package/dist/components/Sidebar/hooks/useTitleHistory.d.ts +41 -0
  59. package/dist/components/Sidebar/hooks/useTitleHistory.d.ts.map +1 -0
  60. package/dist/components/Sidebar/hooks/useTooltipDirection.d.ts +29 -0
  61. package/dist/components/Sidebar/hooks/useTooltipDirection.d.ts.map +1 -0
  62. package/dist/components/Sidebar/hooks/useTooltipTransition.d.ts +60 -0
  63. package/dist/components/Sidebar/hooks/useTooltipTransition.d.ts.map +1 -0
  64. package/dist/components/Sidebar/index.d.ts +163 -0
  65. package/dist/components/Sidebar/index.d.ts.map +1 -0
  66. package/dist/components/Sidebar/sidebar-defaults.d.ts +54 -0
  67. package/dist/components/Sidebar/sidebar-defaults.d.ts.map +1 -0
  68. package/dist/components/animate-ui/components/base/switch.d.ts +11 -0
  69. package/dist/components/animate-ui/components/base/switch.d.ts.map +1 -0
  70. package/dist/components/animate-ui/primitives/base/switch.d.ts +23 -0
  71. package/dist/components/animate-ui/primitives/base/switch.d.ts.map +1 -0
  72. package/dist/components/fluid-hover-indicator-v2.d.ts +46 -0
  73. package/dist/components/fluid-hover-indicator-v2.d.ts.map +1 -0
  74. package/dist/components/fluid-hover-indicator.d.ts +28 -0
  75. package/dist/components/fluid-hover-indicator.d.ts.map +1 -0
  76. package/dist/components/ui/TextCylinder.d.ts +21 -0
  77. package/dist/components/ui/TextCylinder.d.ts.map +1 -0
  78. package/dist/components/ui/button.d.ts +11 -0
  79. package/dist/components/ui/button.d.ts.map +1 -0
  80. package/dist/components/ui/card.d.ts +10 -0
  81. package/dist/components/ui/card.d.ts.map +1 -0
  82. package/dist/components/ui/custom-icon.d.ts +45 -0
  83. package/dist/components/ui/custom-icon.d.ts.map +1 -0
  84. package/dist/components/ui/dotted-glow-background.d.ts +42 -0
  85. package/dist/components/ui/dotted-glow-background.d.ts.map +1 -0
  86. package/dist/components/ui/input.d.ts +4 -0
  87. package/dist/components/ui/input.d.ts.map +1 -0
  88. package/dist/components/ui/label.d.ts +5 -0
  89. package/dist/components/ui/label.d.ts.map +1 -0
  90. package/dist/components/ui/optimized-image.d.ts +12 -0
  91. package/dist/components/ui/optimized-image.d.ts.map +1 -0
  92. package/dist/components/ui/select.d.ts +16 -0
  93. package/dist/components/ui/select.d.ts.map +1 -0
  94. package/dist/components/ui/slider.d.ts +5 -0
  95. package/dist/components/ui/slider.d.ts.map +1 -0
  96. package/dist/components/ui/textarea.d.ts +4 -0
  97. package/dist/components/ui/textarea.d.ts.map +1 -0
  98. package/dist/{index.css → dist/index.css} +945 -908
  99. package/dist/dist/index.css.map +1 -0
  100. package/dist/hooks/use-controlled-state.d.ts +9 -0
  101. package/dist/hooks/use-controlled-state.d.ts.map +1 -0
  102. package/dist/hooks/use-fluid-animation.d.ts +18 -0
  103. package/dist/hooks/use-fluid-animation.d.ts.map +1 -0
  104. package/dist/hooks/use-liquid-glass.d.ts +40 -0
  105. package/dist/hooks/use-liquid-glass.d.ts.map +1 -0
  106. package/dist/hooks/use-sidebar-liquid-glass.d.ts +48 -0
  107. package/dist/hooks/use-sidebar-liquid-glass.d.ts.map +1 -0
  108. package/dist/hooks/use-text-cylinder.d.ts +67 -0
  109. package/dist/hooks/use-text-cylinder.d.ts.map +1 -0
  110. package/dist/index.cjs +14087 -0
  111. package/dist/index.cjs.map +1 -0
  112. package/dist/index.d.ts +10 -2231
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +13132 -52336
  115. package/dist/index.js.map +1 -1
  116. package/dist/lib/get-strict-context.d.ts +10 -0
  117. package/dist/lib/get-strict-context.d.ts.map +1 -0
  118. package/dist/lib/liquid-glass-presets.d.ts +43 -0
  119. package/dist/lib/liquid-glass-presets.d.ts.map +1 -0
  120. package/dist/lib/utils.d.ts +3 -0
  121. package/dist/lib/utils.d.ts.map +1 -0
  122. package/dist/types/sidebar-minimal.d.ts +21 -0
  123. package/dist/types/sidebar-minimal.d.ts.map +1 -0
  124. package/dist/utils/TooltipAnimationController.d.ts +122 -0
  125. package/dist/utils/TooltipAnimationController.d.ts.map +1 -0
  126. package/package.json +12 -6
  127. package/dist/MobileOptimizations.css +0 -570
  128. package/dist/index.css.map +0 -1
  129. package/dist/index.d.cts +0 -2235
  130. 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":"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"}
@@ -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"}