@pipelinesolucoes/menu 1.0.3-beta.2 → 1.0.3-beta.3

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/README.md CHANGED
@@ -29,6 +29,9 @@ A biblioteca inclui os seguintes componentes:
29
29
  Componente de menu vertical que renderiza uma lista de itens de menu empilhados em coluna utilizando `flexbox`.
30
30
 
31
31
  - **SideNav**
32
+ Componente de navegação lateral com área de conteúdo associada.
33
+ Permite alternar entre diferentes seções de conteúdo através de um menu vertical.
34
+ Cada item do menu pode possuir um conteúdo associado que será exibido na área principal ao ser selecionado.
32
35
 
33
36
  - **DrawerResponsive**
34
37
  DrawerResponsive é um layout de navegação responsivo que:
@@ -3,6 +3,7 @@ import { TypographyVariant } from "@mui/material";
3
3
  import { NavItem } from "../types/NavItem";
4
4
  interface SideNavProps {
5
5
  items: NavItem[];
6
+ indexItemSelecionado?: number;
6
7
  menuWidth?: number;
7
8
  itemMenuBackgroundColorSemContent?: string;
8
9
  itemMenuColorSemContent?: string;
@@ -14,31 +15,209 @@ interface SideNavProps {
14
15
  itemMenuColor?: string;
15
16
  itemMenuColorSelected?: string;
16
17
  itemMenuVariant?: TypographyVariant;
17
- borderRadius?: string;
18
- itemMenuBorderRadius?: string;
18
+ borderRadius?: string | number;
19
+ itemMenuBorderRadius?: string | number;
19
20
  contentBackground?: string;
20
21
  height?: string | number;
21
22
  renderTopMenu?: ReactNode;
22
23
  renderBottomMenu?: ReactNode;
23
- contentGap?: number;
24
- }
25
- export declare const SideNavContent: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
26
24
  contentGap?: number | string;
27
- contentBackground?: string;
28
- borderRadius?: number | string;
29
- height?: number | string;
30
- }, {}, {}>;
25
+ }
31
26
  /**
32
- * Componente SideNav
27
+ * Componente de navegação lateral com área de conteúdo associada.
28
+ *
29
+ * Permite alternar entre diferentes seções de conteúdo através de um menu
30
+ * vertical. Cada item do menu pode possuir um conteúdo associado que será
31
+ * exibido na área principal ao ser selecionado.
32
+ *
33
+ * O componente também suporta:
34
+ * - Itens estáticos sem conteúdo
35
+ * - Divisores visuais no menu
36
+ * - Conteúdo customizado no topo e na base do menu
37
+ * - Animação de transição entre conteúdos com `framer-motion`
38
+ *
39
+ * ---
40
+ *
41
+ * Funcionalidades principais
42
+ *
43
+ * - Navegação lateral baseada em lista de itens (`items`)
44
+ * - Controle interno de item ativo
45
+ * - Suporte a itens sem conteúdo
46
+ * - Suporte a divisores no menu (`label === "DIVIDER"`)
47
+ * - Área de conteúdo com transição animada
48
+ * - Customização completa de cores, tipografia e layout
49
+ * - Suporte a conteúdo customizado no topo e rodapé do menu
50
+ *
51
+ * ---
52
+ *
53
+ * Tokens de estilo (ordem de prioridade)
54
+ *
55
+ * Menu lateral:
56
+ * `prop` → `theme.pipelinesolucoes.forms.field` → fallback interno
57
+ *
58
+ * - menuWidth → 180
59
+ * - menuBackground → transparent
60
+ * - borderRadius → 0
61
+ * - height → 500px
62
+ *
63
+ * Itens com conteúdo:
64
+ *
65
+ * - itemMenuBackgroundColor → transparent
66
+ * - itemMenuBackgroundColorHover → grey.300
67
+ * - itemMenuBackgroundColorSelected → primary.main
68
+ * - itemMenuColor → black
69
+ * - itemMenuColorSelected → black
70
+ * - itemMenuBorderRadius → 16px
71
+ *
72
+ * Itens sem conteúdo:
73
+ *
74
+ * - itemMenuBackgroundColorSemContent → transparent
75
+ * - itemMenuColorSemContent → black
76
+ *
77
+ * Área de conteúdo:
78
+ *
79
+ * - contentBackground → grey.50
80
+ * - contentGap → 2
81
+ * - borderRadius → 0
82
+ * - height → 500px
83
+ *
84
+ * ---
85
+ *
86
+ * Tipografia
87
+ *
88
+ * O componente utiliza variantes tipográficas do Material UI através das props:
89
+ *
90
+ * - `itemMenuVariant`
91
+ * - `itemMenuVariantSemContent`
92
+ *
93
+ * Ordem de prioridade:
94
+ *
95
+ * `prop` → `theme.typography[variant]` → `theme.typography.body1`
96
+ *
97
+ * Quando informada, a variante é aplicada diretamente utilizando os estilos
98
+ * definidos em `theme.typography`.
99
+ *
100
+ * ---
101
+ *
102
+ * @param {import("../types/NavItem").NavItem[]} items
103
+ * Lista de itens exibidos no menu lateral.
104
+ *
105
+ * Cada item pode conter:
106
+ *
107
+ * - `label` → texto exibido no menu
108
+ * - `content` → conteúdo renderizado na área principal
109
+ *
110
+ * Regras especiais:
111
+ *
112
+ * - Itens sem `content` são renderizados como rótulos estáticos
113
+ * - Quando `label === "DIVIDER"` será renderizado um divisor visual
114
+ *
115
+ * ---
116
+ *
117
+ * @param {number} [indexItemSelecionado=0]
118
+ * Índice do item inicialmente selecionado.
119
+ *
120
+ * Caso o valor informado esteja fora do intervalo válido da lista de `items`,
121
+ * o componente utiliza automaticamente o índice `0`.
122
+ *
123
+ * @param {number} [menuWidth=180]
124
+ * Largura do menu lateral.
125
+ *
126
+ * @param {string} [itemMenuBackgroundColorSemContent="transparent"]
127
+ * Cor de fundo aplicada aos itens do menu que não possuem conteúdo.
128
+ *
129
+ * @param {string} [itemMenuColorSemContent="black"]
130
+ * Cor de texto aplicada aos itens do menu que não possuem conteúdo.
131
+ *
132
+ * @param {import("@mui/material").TypographyVariant} [itemMenuVariantSemContent="body1"]
133
+ * Variante tipográfica aplicada aos itens do menu sem conteúdo.
134
+ *
135
+ * @param {string} [menuBackground="transparent"]
136
+ * Cor de fundo do container do menu lateral.
137
+ *
138
+ * @param {string} [itemMenuBackgroundColor="transparent"]
139
+ * Cor de fundo padrão dos itens do menu que possuem conteúdo.
140
+ *
141
+ * @param {string} [itemMenuBackgroundColorSelected="primary.main"]
142
+ * Cor de fundo aplicada ao item atualmente selecionado.
143
+ *
144
+ * @param {string} [itemMenuBackgroundColorHover="grey.300"]
145
+ * Cor de fundo aplicada ao passar o cursor sobre itens não selecionados.
146
+ *
147
+ * @param {string} [itemMenuColor="black"]
148
+ * Cor de texto padrão dos itens selecionáveis.
149
+ *
150
+ * @param {string} [itemMenuColorSelected="black"]
151
+ * Cor de texto aplicada ao item atualmente selecionado.
152
+ *
153
+ * @param {import("@mui/material").TypographyVariant} [itemMenuVariant="body1"]
154
+ * Variante tipográfica aplicada aos itens selecionáveis do menu.
155
+ *
156
+ * @param {string | number} [borderRadius="0"]
157
+ * Raio de borda aplicado ao menu lateral e à área de conteúdo.
158
+ *
159
+ * @param {string | number} [itemMenuBorderRadius="16px"]
160
+ * Raio de borda aplicado individualmente aos itens do menu.
161
+ *
162
+ * @param {string} [contentBackground="grey.50"]
163
+ * Cor de fundo da área onde o conteúdo do item selecionado é exibido.
164
+ *
165
+ * @param {string | number} [height="500px"]
166
+ * Altura do componente aplicada tanto ao menu quanto à área de conteúdo.
167
+ *
168
+ * @param {React.ReactNode} [renderTopMenu]
169
+ * Conteúdo opcional renderizado no topo do menu lateral.
170
+ *
171
+ * Pode ser utilizado para:
172
+ *
173
+ * - Títulos
174
+ * - Botões
175
+ * - Filtros
176
+ * - Informações adicionais
177
+ *
178
+ * @param {React.ReactNode} [renderBottomMenu]
179
+ * Conteúdo opcional renderizado no rodapé do menu lateral.
180
+ *
181
+ * Útil para:
182
+ *
183
+ * - Ações secundárias
184
+ * - Informações complementares
185
+ * - Links auxiliares
186
+ *
187
+ * @param {number | string} [contentGap=2]
188
+ * Espaçamento horizontal entre o menu lateral e a área de conteúdo.
189
+ *
190
+ * @example
191
+ * Uso básico
192
+ *
193
+ * ```tsx
194
+ * const items = [
195
+ * { label: "Visão geral", content: <div>Conteúdo da visão geral</div> },
196
+ * { label: "Configurações", content: <div>Conteúdo de configurações</div> },
197
+ * { label: "DIVIDER" },
198
+ * { label: "Informações" },
199
+ * { label: "Usuários", content: <div>Conteúdo de usuários</div> }
200
+ * ]
201
+ *
202
+ * <SideNav
203
+ * items={items}
204
+ * menuWidth={220}
205
+ * contentBackground="white"
206
+ * itemMenuBackgroundColorSelected="primary.main"
207
+ * />
33
208
  *
34
- * Um menu lateral com itens clicáveis que alteram o conteúdo exibido em um container ao lado.
35
- * Cada item possui um `label` e `content` que será renderizado no container.
209
+ * @example
210
+ * Uso com conteúdo customizado no menu
36
211
  *
37
- * Agora suporta:
38
- * - conteúdo no topo do menu (`renderTopMenu`)
39
- * - conteúdo fixado na base do menu (`renderBottomMenu`)
212
+ * ```tsx
213
+ * <SideNav
214
+ * items={items}
215
+ * renderTopMenu={<Box p={2}>Menu</Box>}
216
+ * renderBottomMenu={<Box p={2}>Rodapé</Box>}
217
+ * />
218
+ * ```
40
219
  */
41
- declare function SideNav({ items, menuWidth, itemMenuBackgroundColorSemContent, itemMenuColorSemContent, itemMenuVariantSemContent, menuBackground, borderRadius, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorHover, itemMenuBackgroundColorSelected, itemMenuColor, itemMenuColorSelected, itemMenuVariant, contentBackground, renderTopMenu, renderBottomMenu, height, contentGap, }: SideNavProps): import("react/jsx-runtime").JSX.Element | null;
220
+ declare function SideNav({ items, indexItemSelecionado, menuWidth, itemMenuBackgroundColorSemContent, itemMenuColorSemContent, itemMenuVariantSemContent, menuBackground, borderRadius, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorHover, itemMenuBackgroundColorSelected, itemMenuColor, itemMenuColorSelected, itemMenuVariant, contentBackground, renderTopMenu, renderBottomMenu, height, contentGap, }: SideNavProps): import("react/jsx-runtime").JSX.Element | null;
42
221
  declare namespace SideNav {
43
222
  var displayName: string;
44
223
  }
@@ -33,16 +33,16 @@ const MenuItemBox = styled(Box, {
33
33
  "itemMenuColorSelected",
34
34
  "typographyVariant",
35
35
  ].includes(prop),
36
- })(({ theme, active, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorSelected, itemMenuBackgroundColorHover, itemMenuColor, itemMenuColorSelected, typographyVariant }) => (Object.assign(Object.assign({ cursor: "pointer", padding: "8px 16px", borderRadius: itemMenuBorderRadius, backgroundColor: active
36
+ })(({ theme, active, itemMenuBorderRadius, itemMenuBackgroundColor, itemMenuBackgroundColorSelected, itemMenuBackgroundColorHover, itemMenuColor, itemMenuColorSelected, typographyVariant, }) => (Object.assign(Object.assign({ cursor: "pointer", padding: "8px 16px", borderRadius: itemMenuBorderRadius, backgroundColor: active
37
37
  ? itemMenuBackgroundColorSelected
38
38
  : itemMenuBackgroundColor, color: active ? itemMenuColorSelected : itemMenuColor, width: "100%", transition: "all 0.2s ease", userSelect: "none" }, (typographyVariant && theme.typography[typographyVariant])), { "&:hover": {
39
39
  backgroundColor: active
40
40
  ? itemMenuBackgroundColorSelected
41
41
  : itemMenuBackgroundColorHover,
42
42
  } })));
43
- export const SideNavContent = styled(Box, {
43
+ const SideNavContent = styled(Box, {
44
44
  shouldForwardProp: (prop) => !["contentGap", "contentBackground", "borderRadius", "height"].includes(prop),
45
- })(({ contentGap = 2, contentBackground = "transparent", borderRadius = 2, height = "100%", }) => ({
45
+ })(({ contentGap = 2, contentBackground = "transparent", borderRadius = 2, height = "100%" }) => ({
46
46
  width: "auto",
47
47
  flex: 1,
48
48
  marginLeft: contentGap,
@@ -55,31 +55,218 @@ export const SideNavContent = styled(Box, {
55
55
  overflowY: "auto",
56
56
  }));
57
57
  /**
58
- * Componente SideNav
58
+ * Componente de navegação lateral com área de conteúdo associada.
59
59
  *
60
- * Um menu lateral com itens clicáveis que alteram o conteúdo exibido em um container ao lado.
61
- * Cada item possui um `label` e `content` que será renderizado no container.
60
+ * Permite alternar entre diferentes seções de conteúdo através de um menu
61
+ * vertical. Cada item do menu pode possuir um conteúdo associado que será
62
+ * exibido na área principal ao ser selecionado.
62
63
  *
63
- * Agora suporta:
64
- * - conteúdo no topo do menu (`renderTopMenu`)
65
- * - conteúdo fixado na base do menu (`renderBottomMenu`)
64
+ * O componente também suporta:
65
+ * - Itens estáticos sem conteúdo
66
+ * - Divisores visuais no menu
67
+ * - Conteúdo customizado no topo e na base do menu
68
+ * - Animação de transição entre conteúdos com `framer-motion`
69
+ *
70
+ * ---
71
+ *
72
+ * Funcionalidades principais
73
+ *
74
+ * - Navegação lateral baseada em lista de itens (`items`)
75
+ * - Controle interno de item ativo
76
+ * - Suporte a itens sem conteúdo
77
+ * - Suporte a divisores no menu (`label === "DIVIDER"`)
78
+ * - Área de conteúdo com transição animada
79
+ * - Customização completa de cores, tipografia e layout
80
+ * - Suporte a conteúdo customizado no topo e rodapé do menu
81
+ *
82
+ * ---
83
+ *
84
+ * Tokens de estilo (ordem de prioridade)
85
+ *
86
+ * Menu lateral:
87
+ * `prop` → `theme.pipelinesolucoes.forms.field` → fallback interno
88
+ *
89
+ * - menuWidth → 180
90
+ * - menuBackground → transparent
91
+ * - borderRadius → 0
92
+ * - height → 500px
93
+ *
94
+ * Itens com conteúdo:
95
+ *
96
+ * - itemMenuBackgroundColor → transparent
97
+ * - itemMenuBackgroundColorHover → grey.300
98
+ * - itemMenuBackgroundColorSelected → primary.main
99
+ * - itemMenuColor → black
100
+ * - itemMenuColorSelected → black
101
+ * - itemMenuBorderRadius → 16px
102
+ *
103
+ * Itens sem conteúdo:
104
+ *
105
+ * - itemMenuBackgroundColorSemContent → transparent
106
+ * - itemMenuColorSemContent → black
107
+ *
108
+ * Área de conteúdo:
109
+ *
110
+ * - contentBackground → grey.50
111
+ * - contentGap → 2
112
+ * - borderRadius → 0
113
+ * - height → 500px
114
+ *
115
+ * ---
116
+ *
117
+ * Tipografia
118
+ *
119
+ * O componente utiliza variantes tipográficas do Material UI através das props:
120
+ *
121
+ * - `itemMenuVariant`
122
+ * - `itemMenuVariantSemContent`
123
+ *
124
+ * Ordem de prioridade:
125
+ *
126
+ * `prop` → `theme.typography[variant]` → `theme.typography.body1`
127
+ *
128
+ * Quando informada, a variante é aplicada diretamente utilizando os estilos
129
+ * definidos em `theme.typography`.
130
+ *
131
+ * ---
132
+ *
133
+ * @param {import("../types/NavItem").NavItem[]} items
134
+ * Lista de itens exibidos no menu lateral.
135
+ *
136
+ * Cada item pode conter:
137
+ *
138
+ * - `label` → texto exibido no menu
139
+ * - `content` → conteúdo renderizado na área principal
140
+ *
141
+ * Regras especiais:
142
+ *
143
+ * - Itens sem `content` são renderizados como rótulos estáticos
144
+ * - Quando `label === "DIVIDER"` será renderizado um divisor visual
145
+ *
146
+ * ---
147
+ *
148
+ * @param {number} [indexItemSelecionado=0]
149
+ * Índice do item inicialmente selecionado.
150
+ *
151
+ * Caso o valor informado esteja fora do intervalo válido da lista de `items`,
152
+ * o componente utiliza automaticamente o índice `0`.
153
+ *
154
+ * @param {number} [menuWidth=180]
155
+ * Largura do menu lateral.
156
+ *
157
+ * @param {string} [itemMenuBackgroundColorSemContent="transparent"]
158
+ * Cor de fundo aplicada aos itens do menu que não possuem conteúdo.
159
+ *
160
+ * @param {string} [itemMenuColorSemContent="black"]
161
+ * Cor de texto aplicada aos itens do menu que não possuem conteúdo.
162
+ *
163
+ * @param {import("@mui/material").TypographyVariant} [itemMenuVariantSemContent="body1"]
164
+ * Variante tipográfica aplicada aos itens do menu sem conteúdo.
165
+ *
166
+ * @param {string} [menuBackground="transparent"]
167
+ * Cor de fundo do container do menu lateral.
168
+ *
169
+ * @param {string} [itemMenuBackgroundColor="transparent"]
170
+ * Cor de fundo padrão dos itens do menu que possuem conteúdo.
171
+ *
172
+ * @param {string} [itemMenuBackgroundColorSelected="primary.main"]
173
+ * Cor de fundo aplicada ao item atualmente selecionado.
174
+ *
175
+ * @param {string} [itemMenuBackgroundColorHover="grey.300"]
176
+ * Cor de fundo aplicada ao passar o cursor sobre itens não selecionados.
177
+ *
178
+ * @param {string} [itemMenuColor="black"]
179
+ * Cor de texto padrão dos itens selecionáveis.
180
+ *
181
+ * @param {string} [itemMenuColorSelected="black"]
182
+ * Cor de texto aplicada ao item atualmente selecionado.
183
+ *
184
+ * @param {import("@mui/material").TypographyVariant} [itemMenuVariant="body1"]
185
+ * Variante tipográfica aplicada aos itens selecionáveis do menu.
186
+ *
187
+ * @param {string | number} [borderRadius="0"]
188
+ * Raio de borda aplicado ao menu lateral e à área de conteúdo.
189
+ *
190
+ * @param {string | number} [itemMenuBorderRadius="16px"]
191
+ * Raio de borda aplicado individualmente aos itens do menu.
192
+ *
193
+ * @param {string} [contentBackground="grey.50"]
194
+ * Cor de fundo da área onde o conteúdo do item selecionado é exibido.
195
+ *
196
+ * @param {string | number} [height="500px"]
197
+ * Altura do componente aplicada tanto ao menu quanto à área de conteúdo.
198
+ *
199
+ * @param {React.ReactNode} [renderTopMenu]
200
+ * Conteúdo opcional renderizado no topo do menu lateral.
201
+ *
202
+ * Pode ser utilizado para:
203
+ *
204
+ * - Títulos
205
+ * - Botões
206
+ * - Filtros
207
+ * - Informações adicionais
208
+ *
209
+ * @param {React.ReactNode} [renderBottomMenu]
210
+ * Conteúdo opcional renderizado no rodapé do menu lateral.
211
+ *
212
+ * Útil para:
213
+ *
214
+ * - Ações secundárias
215
+ * - Informações complementares
216
+ * - Links auxiliares
217
+ *
218
+ * @param {number | string} [contentGap=2]
219
+ * Espaçamento horizontal entre o menu lateral e a área de conteúdo.
220
+ *
221
+ * @example
222
+ * Uso básico
223
+ *
224
+ * ```tsx
225
+ * const items = [
226
+ * { label: "Visão geral", content: <div>Conteúdo da visão geral</div> },
227
+ * { label: "Configurações", content: <div>Conteúdo de configurações</div> },
228
+ * { label: "DIVIDER" },
229
+ * { label: "Informações" },
230
+ * { label: "Usuários", content: <div>Conteúdo de usuários</div> }
231
+ * ]
232
+ *
233
+ * <SideNav
234
+ * items={items}
235
+ * menuWidth={220}
236
+ * contentBackground="white"
237
+ * itemMenuBackgroundColorSelected="primary.main"
238
+ * />
239
+ *
240
+ * @example
241
+ * Uso com conteúdo customizado no menu
242
+ *
243
+ * ```tsx
244
+ * <SideNav
245
+ * items={items}
246
+ * renderTopMenu={<Box p={2}>Menu</Box>}
247
+ * renderBottomMenu={<Box p={2}>Rodapé</Box>}
248
+ * />
249
+ * ```
66
250
  */
67
- export default function SideNav({ items, menuWidth = 180, itemMenuBackgroundColorSemContent = "transparent", itemMenuColorSemContent = "black", itemMenuVariantSemContent = "body1", menuBackground = "transparent", borderRadius = "0", itemMenuBorderRadius = "16px", itemMenuBackgroundColor = "transparent", itemMenuBackgroundColorHover = "grey.300", itemMenuBackgroundColorSelected = "primary.main", itemMenuColor = "black", itemMenuColorSelected = "black", itemMenuVariant = "body1", contentBackground = "grey.50", renderTopMenu, renderBottomMenu, height = "500px", contentGap = 2, }) {
251
+ export default function SideNav({ items, indexItemSelecionado = 0, menuWidth = 180, itemMenuBackgroundColorSemContent = "transparent", itemMenuColorSemContent = "black", itemMenuVariantSemContent = "body1", menuBackground = "transparent", borderRadius = "0", itemMenuBorderRadius = "16px", itemMenuBackgroundColor = "transparent", itemMenuBackgroundColorHover = "grey.300", itemMenuBackgroundColorSelected = "primary.main", itemMenuColor = "black", itemMenuColorSelected = "black", itemMenuVariant = "body1", contentBackground = "grey.50", renderTopMenu, renderBottomMenu, height = "500px", contentGap = 2, }) {
68
252
  var _a;
69
- const [activeIndex, setActiveIndex] = useState(0);
70
253
  if (!items || items.length === 0) {
71
254
  return null;
72
255
  }
73
- return (_jsxs(Container, { children: [_jsxs(SideNavContainer, { height: height, menuWidth: menuWidth, menuBackground: menuBackground, borderRadius: borderRadius, children: [renderTopMenu && _jsx(Box, { children: renderTopMenu }), _jsx(Box, { sx: { display: "flex", flexDirection: "column", gap: 1, }, children: items.map((item, idx) => {
74
- var _a;
75
- if (!item.content) {
76
- if (((_a = item.label) === null || _a === void 0 ? void 0 : _a.toUpperCase()) == "DIVIDER") {
77
- return (_jsx(Divider, {}));
78
- }
79
- return (_jsx(MenuItemBox, { typographyVariant: itemMenuVariantSemContent, itemMenuBorderRadius: itemMenuBorderRadius, itemMenuBackgroundColor: itemMenuBackgroundColorSemContent, itemMenuColor: itemMenuColorSemContent, sx: { cursor: "default" }, children: item.label }, `${item.label}-${idx}`));
80
- }
81
- return (_jsx(MenuItemBox, { active: activeIndex === idx, typographyVariant: itemMenuVariant, itemMenuBorderRadius: itemMenuBorderRadius, itemMenuBackgroundColor: itemMenuBackgroundColor, itemMenuBackgroundColorHover: itemMenuBackgroundColorHover, itemMenuBackgroundColorSelected: itemMenuBackgroundColorSelected, itemMenuColor: itemMenuColor, itemMenuColorSelected: itemMenuColorSelected, onClick: () => setActiveIndex(idx), children: item.label }, `${item.label}-${idx}`));
82
- }) }), renderBottomMenu && (_jsx(Box, { sx: { mt: 2, pt: 2, flexShrink: 0, }, children: renderBottomMenu }))] }), _jsx(SideNavContent, { contentBackground: contentBackground, contentGap: contentGap, height: height, borderRadius: borderRadius, children: _jsx(AnimatePresence, { mode: "wait", children: _jsx(motion.div, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, style: { width: "100%" }, children: (_a = items[activeIndex]) === null || _a === void 0 ? void 0 : _a.content }, activeIndex) }) })] }));
256
+ const initialIndex = indexItemSelecionado >= 0 && indexItemSelecionado < items.length
257
+ ? indexItemSelecionado
258
+ : 0;
259
+ const [activeIndex, setActiveIndex] = useState(initialIndex);
260
+ return (_jsxs(Container, { children: [_jsxs(SideNavContainer, { height: height, menuWidth: menuWidth, menuBackground: menuBackground, borderRadius: borderRadius, children: [_jsxs(Box, { children: [renderTopMenu && _jsx(Box, { children: renderTopMenu }), _jsx(Box, { sx: { display: "flex", flexDirection: "column", gap: 1 }, children: items.map((item, idx) => {
261
+ var _a;
262
+ if (!item.content) {
263
+ if (((_a = item.label) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === "DIVIDER") {
264
+ return _jsx(Divider, {}, `divider-${idx}`);
265
+ }
266
+ return (_jsx(MenuItemBox, { typographyVariant: itemMenuVariantSemContent, itemMenuBorderRadius: itemMenuBorderRadius, itemMenuBackgroundColor: itemMenuBackgroundColorSemContent, itemMenuColor: itemMenuColorSemContent, sx: { cursor: "default" }, children: item.label }, `${item.label}-${idx}`));
267
+ }
268
+ return (_jsx(MenuItemBox, { active: activeIndex === idx, typographyVariant: itemMenuVariant, itemMenuBorderRadius: itemMenuBorderRadius, itemMenuBackgroundColor: itemMenuBackgroundColor, itemMenuBackgroundColorHover: itemMenuBackgroundColorHover, itemMenuBackgroundColorSelected: itemMenuBackgroundColorSelected, itemMenuColor: itemMenuColor, itemMenuColorSelected: itemMenuColorSelected, onClick: () => setActiveIndex(idx), children: item.label }, `${item.label}-${idx}`));
269
+ }) })] }), renderBottomMenu && (_jsx(Box, { sx: { mt: 2, pt: 2, flexShrink: 0 }, children: renderBottomMenu }))] }), _jsx(SideNavContent, { contentBackground: contentBackground, contentGap: contentGap, height: height, borderRadius: borderRadius, children: _jsx(AnimatePresence, { mode: "wait", children: _jsx(motion.div, { initial: { opacity: 0, y: 10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, style: { width: "100%" }, children: (_a = items[activeIndex]) === null || _a === void 0 ? void 0 : _a.content }, activeIndex) }) })] }));
83
270
  }
84
271
  SideNav.displayName = "SideNav";
85
272
  //# sourceMappingURL=SideNav.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SideNav.js","sourceRoot":"","sources":["../../src/components/SideNav.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SideNav.js","sourceRoot":"","sources":["../../src/components/SideNav.tsx"],"names":[],"mappings":"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"}