@sula-tech/webcomponents 0.25.0 → 0.27.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 (143) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/sula-avatar_32.cjs.entry.js +83 -67
  3. package/dist/cjs/sula-avatar_32.cjs.entry.js.map +1 -1
  4. package/dist/cjs/sula-profile-menu.cjs.entry.js +1 -1
  5. package/dist/cjs/sula-profile-menu.cjs.entry.js.map +1 -1
  6. package/dist/cjs/sula-profile-menu.entry.cjs.js.map +1 -1
  7. package/dist/cjs/sula-toast-stack.cjs.entry.js +4 -4
  8. package/dist/cjs/sula-toast.cjs.entry.js +2 -2
  9. package/dist/cjs/sula-workbench-menu.cjs.entry.js +98 -59
  10. package/dist/cjs/sula-workbench-menu.cjs.entry.js.map +1 -1
  11. package/dist/cjs/sula-workbench-menu.entry.cjs.js.map +1 -1
  12. package/dist/cjs/webcomponents.cjs.js +1 -1
  13. package/dist/collection/components/sula-chip/sula-chip.css +1 -1
  14. package/dist/collection/components/sula-chip/sula-chip.js +50 -10
  15. package/dist/collection/components/sula-chip/sula-chip.js.map +1 -1
  16. package/dist/collection/components/sula-chip/sula-chip.stories.js +39 -0
  17. package/dist/collection/components/sula-chip/sula-chip.stories.js.map +1 -1
  18. package/dist/collection/components/sula-dropdown/sula-dropdown.js +3 -3
  19. package/dist/collection/components/sula-icon/sula-icon.css +1 -1
  20. package/dist/collection/components/sula-icon/sula-icon.js +1 -1
  21. package/dist/collection/components/sula-icon-picker/sula-icon-picker.js +2 -2
  22. package/dist/collection/components/sula-loader/sula-loader.css +1 -1
  23. package/dist/collection/components/sula-loader/sula-loader.js +1 -1
  24. package/dist/collection/components/sula-menu/sula-menu.js +8 -8
  25. package/dist/collection/components/sula-menu-select-list/sula-menu-select-list.css +1 -1
  26. package/dist/collection/components/sula-menu-select-list/sula-menu-select-list.js +1 -1
  27. package/dist/collection/components/sula-profile-menu/sula-profile-menu.css +1 -1
  28. package/dist/collection/components/sula-progress-bar/sula-progress-bar.js +2 -2
  29. package/dist/collection/components/sula-radio-button/sula-radio-button.js +2 -2
  30. package/dist/collection/components/sula-search-bar/sula-search-bar.js +2 -2
  31. package/dist/collection/components/sula-segmented-control/sula-segmented-control.js +1 -1
  32. package/dist/collection/components/sula-switch/sula-switch.css +1 -1
  33. package/dist/collection/components/sula-switch/sula-switch.js +4 -4
  34. package/dist/collection/components/sula-table/sula-table.js +3 -3
  35. package/dist/collection/components/sula-table-body/sula-table-body.js +1 -1
  36. package/dist/collection/components/sula-table-cell/sula-table-cell.js +2 -2
  37. package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.js +2 -2
  38. package/dist/collection/components/sula-table-header/sula-table-header.js +1 -1
  39. package/dist/collection/components/sula-table-row/sula-table-row.js +1 -1
  40. package/dist/collection/components/sula-tag/sula-tag.js +3 -3
  41. package/dist/collection/components/sula-textarea/sula-textarea.js +6 -6
  42. package/dist/collection/components/sula-textfield/sula-textfield.js +2 -2
  43. package/dist/collection/components/sula-tiles/sula-tiles.js +1 -1
  44. package/dist/collection/components/sula-timeline-list/sula-timeline-list.js +1 -1
  45. package/dist/collection/components/sula-toast/sula-toast.js +2 -2
  46. package/dist/collection/components/sula-toast-stack/sula-toast-stack.js +4 -4
  47. package/dist/collection/components/sula-toggle/sula-toggle.js +1 -1
  48. package/dist/collection/components/sula-tooltip/sula-tooltip.js +1 -1
  49. package/dist/collection/components/sula-workbench-menu/sula-workbench-menu.css +1 -1
  50. package/dist/collection/components/sula-workbench-menu/sula-workbench-menu.js +104 -84
  51. package/dist/collection/components/sula-workbench-menu/sula-workbench-menu.js.map +1 -1
  52. package/dist/collection/components/sula-workbench-menu/sula-workbench-menu.stories.js +182 -103
  53. package/dist/collection/components/sula-workbench-menu/sula-workbench-menu.stories.js.map +1 -1
  54. package/dist/components/{p-Ckrg2kct.js → p-BNxL-ZjI.js} +5 -5
  55. package/dist/components/{p-Ckrg2kct.js.map → p-BNxL-ZjI.js.map} +1 -1
  56. package/dist/components/{p-BlRYoc3b.js → p-ByuiM_SX.js} +4 -4
  57. package/dist/components/{p-BlRYoc3b.js.map → p-ByuiM_SX.js.map} +1 -1
  58. package/dist/components/{p-DOhCUb27.js → p-CQQX0ZEo.js} +5 -5
  59. package/dist/components/{p-DOhCUb27.js.map → p-CQQX0ZEo.js.map} +1 -1
  60. package/dist/components/{p-DEhN6ZhJ.js → p-CTY6E4Qo.js} +7 -7
  61. package/dist/components/{p-DEhN6ZhJ.js.map → p-CTY6E4Qo.js.map} +1 -1
  62. package/dist/components/{p-CkBDMANF.js → p-CiJSp-1r.js} +5 -5
  63. package/dist/components/{p-CkBDMANF.js.map → p-CiJSp-1r.js.map} +1 -1
  64. package/dist/components/{p-ej3XWtzq.js → p-DImZWpEm.js} +4 -4
  65. package/dist/components/{p-ej3XWtzq.js.map → p-DImZWpEm.js.map} +1 -1
  66. package/dist/components/{p-CNJmyTBM.js → p-DQYdk1Hu.js} +4 -4
  67. package/dist/components/{p-CNJmyTBM.js.map → p-DQYdk1Hu.js.map} +1 -1
  68. package/dist/components/{p-Chv1iPo7.js → p-DcFem7BV.js} +7 -7
  69. package/dist/components/{p-Chv1iPo7.js.map → p-DcFem7BV.js.map} +1 -1
  70. package/dist/components/{p-BSlKsiiN.js → p-DotZeO3E.js} +5 -5
  71. package/dist/components/{p-BSlKsiiN.js.map → p-DotZeO3E.js.map} +1 -1
  72. package/dist/components/{p-CqrWuXvX.js → p-L_u-y6EK.js} +5 -5
  73. package/dist/components/{p-CqrWuXvX.js.map → p-L_u-y6EK.js.map} +1 -1
  74. package/dist/components/sula-avatar.js +1 -1
  75. package/dist/components/sula-badge.js +1 -1
  76. package/dist/components/sula-breadcrumb.js +1 -1
  77. package/dist/components/sula-button.js +1 -1
  78. package/dist/components/sula-calendar.js +2 -2
  79. package/dist/components/sula-checkbox.js +1 -1
  80. package/dist/components/sula-chip.js +40 -15
  81. package/dist/components/sula-chip.js.map +1 -1
  82. package/dist/components/sula-dropdown.js +1 -1
  83. package/dist/components/sula-icon-picker.js +6 -6
  84. package/dist/components/sula-icon.js +1 -1
  85. package/dist/components/sula-loader.js +1 -1
  86. package/dist/components/sula-menu-select-list.js +1 -1
  87. package/dist/components/sula-menu.js +9 -9
  88. package/dist/components/sula-modal.js +3 -3
  89. package/dist/components/sula-profile-menu.js +1 -1
  90. package/dist/components/sula-progress-bar.js +3 -3
  91. package/dist/components/sula-radio-button.js +2 -2
  92. package/dist/components/sula-search-bar.js +1 -1
  93. package/dist/components/sula-segmented-control.js +2 -2
  94. package/dist/components/sula-switch.js +1 -1
  95. package/dist/components/sula-table-body.js +1 -1
  96. package/dist/components/sula-table-cell.js +2 -2
  97. package/dist/components/sula-table-head-cell.js +2 -2
  98. package/dist/components/sula-table-header.js +1 -1
  99. package/dist/components/sula-table-row.js +1 -1
  100. package/dist/components/sula-table.js +3 -3
  101. package/dist/components/sula-tag.js +4 -4
  102. package/dist/components/sula-textarea.js +6 -6
  103. package/dist/components/sula-textfield.js +1 -1
  104. package/dist/components/sula-tiles.js +2 -2
  105. package/dist/components/sula-timeline-list.js +2 -2
  106. package/dist/components/sula-toast-stack.js +6 -6
  107. package/dist/components/sula-toast.js +1 -1
  108. package/dist/components/sula-toggle.js +2 -2
  109. package/dist/components/sula-tooltip.js +2 -2
  110. package/dist/components/sula-workbench-menu.js +102 -63
  111. package/dist/components/sula-workbench-menu.js.map +1 -1
  112. package/dist/esm/loader.js +1 -1
  113. package/dist/esm/sula-avatar_32.entry.js +83 -67
  114. package/dist/esm/sula-avatar_32.entry.js.map +1 -1
  115. package/dist/esm/sula-profile-menu.entry.js +1 -1
  116. package/dist/esm/sula-profile-menu.entry.js.map +1 -1
  117. package/dist/esm/sula-toast-stack.entry.js +4 -4
  118. package/dist/esm/sula-toast.entry.js +2 -2
  119. package/dist/esm/sula-workbench-menu.entry.js +98 -59
  120. package/dist/esm/sula-workbench-menu.entry.js.map +1 -1
  121. package/dist/esm/webcomponents.js +1 -1
  122. package/dist/types/components/sula-chip/sula-chip.d.ts +5 -0
  123. package/dist/types/components/sula-chip/sula-chip.stories.d.ts +11 -0
  124. package/dist/types/components/sula-workbench-menu/sula-workbench-menu.d.ts +15 -13
  125. package/dist/types/components/sula-workbench-menu/sula-workbench-menu.stories.d.ts +14 -30
  126. package/dist/types/components.d.ts +29 -29
  127. package/dist/webcomponents/{p-18c84807.entry.js → p-4fa0213d.entry.js} +6 -6
  128. package/dist/webcomponents/{p-705e2424.entry.js → p-76884b75.entry.js} +16 -16
  129. package/dist/webcomponents/{p-88e5171a.entry.js → p-7e31b463.entry.js} +2 -2
  130. package/dist/webcomponents/p-86448fcf.entry.js +880 -0
  131. package/dist/webcomponents/p-86448fcf.entry.js.map +1 -0
  132. package/dist/webcomponents/{p-28e25fac.entry.js → p-d8d9b8e6.entry.js} +168 -143
  133. package/dist/webcomponents/p-d8d9b8e6.entry.js.map +1 -0
  134. package/dist/webcomponents/sula-profile-menu.entry.esm.js.map +1 -1
  135. package/dist/webcomponents/sula-workbench-menu.entry.esm.js.map +1 -1
  136. package/dist/webcomponents/webcomponents.esm.js +23 -20
  137. package/package.json +1 -1
  138. package/dist/webcomponents/p-28e25fac.entry.js.map +0 -1
  139. package/dist/webcomponents/p-50ad82d0.entry.js +0 -827
  140. package/dist/webcomponents/p-50ad82d0.entry.js.map +0 -1
  141. /package/dist/webcomponents/{p-18c84807.entry.js.map → p-4fa0213d.entry.js.map} +0 -0
  142. /package/dist/webcomponents/{p-705e2424.entry.js.map → p-76884b75.entry.js.map} +0 -0
  143. /package/dist/webcomponents/{p-88e5171a.entry.js.map → p-7e31b463.entry.js.map} +0 -0
@@ -73,7 +73,7 @@ const BRAND_IMAGE = `data:image/svg+xml;utf8,${encodeURIComponent(`
73
73
  <path d="M52 24H35.5C31.3579 24 28 27.3579 28 31.5C28 35.6421 31.3579 39 35.5 39H44.5C48.6421 39 52 42.3579 52 46.5C52 50.6421 48.6421 54 44.5 54H28" stroke="white" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
74
74
  </svg>
75
75
  `)}`;
76
- // Same items as the menu in production today, to compare both components with identical content.
76
+ // Same items as the menu in production today.
77
77
  const currentMenuItems = [
78
78
  { id: 'dashboard', label: 'Dashboard', icon: 'ph ph-house', selected: true },
79
79
  { id: 'exemplo', label: 'Exemplo menu', icon: 'ph ph-archive', children: [{ id: 'exemplo-usuarios', label: 'Usuários', icon: 'ph ph-user' }] },
@@ -189,7 +189,7 @@ const createStoryShell = () => {
189
189
  contentPanel.style.borderRadius = '0 24px 24px 0';
190
190
  contentPanel.style.color = '#6c6e6e';
191
191
  contentPanel.style.fontSize = '14px';
192
- contentPanel.textContent = 'Área de conteúdo. Níveis 1 a 2 expandem em linha; a partir do nível 3 com filhos, o menu entra em drill-down com breadcrumb.';
192
+ contentPanel.textContent = 'Área de conteúdo. Até 3 níveis o menu expande em linha; se algum item chega ao 4º nível, toda a navegação vira drill-down com breadcrumb.';
193
193
  shell.appendChild(contentPanel);
194
194
  container.appendChild(shell);
195
195
  return { container, shell };
@@ -199,6 +199,7 @@ export default {
199
199
  tags: ['autodocs'],
200
200
  argTypes: {
201
201
  menuTitle: { control: 'text', defaultValue: 'Sula Hub', description: 'Título do menu.' },
202
+ image: { control: 'text', description: 'Imagem da marca no cabeçalho da raiz (URL ou data URI).' },
202
203
  density: {
203
204
  control: { type: 'select' },
204
205
  options: Object.values(SulaMenuDensity),
@@ -209,13 +210,9 @@ export default {
209
210
  options: Object.values(SulaMenuLabelOverflow),
210
211
  description: 'Quebra ou ellipsis dos labels.',
211
212
  },
212
- drilldownLevel: {
213
- control: { type: 'number', min: 1 },
214
- description: 'Nível (1-based) a partir do qual itens com filhos abrem drill-down em vez de expandir em linha.',
215
- },
216
213
  drillPath: {
217
214
  control: 'object',
218
- description: 'Controla o drill-down pelo host: ids da raiz até o item cujos filhos aparecem. Array vazio volta à árvore; undefined deixa só os cliques navegarem.',
215
+ description: 'Controla a navegação pelo host: ids da raiz até o item cujos filhos aparecem. No drill-down, array vazio volta à raiz; no modo em linha, os itens do caminho são expandidos. undefined deixa só os cliques navegarem.',
219
216
  },
220
217
  items: { control: 'object', description: 'Árvore de itens, recursiva.' },
221
218
  itemSelected: { action: 'itemSelected', description: 'Emitido ao selecionar um item folha.' },
@@ -231,23 +228,23 @@ export default {
231
228
  parameters: {
232
229
  docs: {
233
230
  description: {
234
- component: 'Menu que combina a navegação em árvore do sula-menu (níveis 1 e 2 expandem em linha) com o drill-down: a partir do nível configurado em drilldownLevel (padrão 3), itens com filhos abrem um painel de um nível com breadcrumb e botão de voltar.',
231
+ component: 'Menu de navegação com dois modos, escolhidos pela profundidade dos items: com até 3 níveis, tudo expande em linha como no sula-menu; se algum item visível chega ao 4º nível, toda a navegação vira drill-down, e itens com filhos abrem um painel de um nível com breadcrumb e botão de voltar.',
235
232
  },
236
233
  },
237
234
  },
238
235
  };
239
236
  const Template = (args) => {
240
- var _a;
237
+ var _a, _b;
241
238
  const { container, shell } = createStoryShell();
242
239
  const el = document.createElement('sula-workbench-menu');
243
240
  el.menuTitle = args.menuTitle;
241
+ el.image = (_a = args.image) !== null && _a !== void 0 ? _a : '';
244
242
  el.density = args.density;
245
243
  el.labelOverflow = args.labelOverflow;
246
- el.drilldownLevel = args.drilldownLevel;
247
244
  el.drillPath = args.drillPath;
248
245
  el.items = cloneItems(args.items);
249
246
  el.user = args.user;
250
- el.profileItems = ((_a = args.profileItems) !== null && _a !== void 0 ? _a : hubProfileItems).map(item => (Object.assign({}, item)));
247
+ el.profileItems = ((_b = args.profileItems) !== null && _b !== void 0 ? _b : hubProfileItems).map(item => (Object.assign({}, item)));
251
248
  el.addEventListener('itemSelected', args.itemSelected);
252
249
  el.addEventListener('itemClicked', args.itemClicked);
253
250
  el.addEventListener('levelChanged', args.levelChanged);
@@ -263,14 +260,13 @@ Default.args = {
263
260
  menuTitle: 'Sula Hub',
264
261
  density: SulaMenuDensity.Default,
265
262
  labelOverflow: SulaMenuLabelOverflow.Wrap,
266
- drilldownLevel: 3,
267
263
  items: workbenchItems,
268
264
  user: sampleUser,
269
265
  };
270
266
  Default.parameters = {
271
267
  docs: {
272
268
  description: {
273
- story: 'Exemplo com 6 níveis reais. Sinistros e Auto já vêm expandidos; em Cobertura (nível 3) o item Terceiros abre o drill-down. "Apólices" e "Veículos" usam um SVG no lugar do ícone de fonte (propriedade image do item). O rodapé mostra o usuário logado; clicar nele emite profileClicked.',
269
+ story: 'Exemplo com 6 níveis reais: como passa de 3 níveis, toda a navegação é drill-down, a partir da raiz. "Apólices" e "Veículos" usam um SVG no lugar do ícone de fonte (propriedade image do item). O rodapé mostra o usuário logado; clicar nele emite profileClicked.',
274
270
  },
275
271
  },
276
272
  };
@@ -279,7 +275,6 @@ WithoutPhotoOrEmail.args = {
279
275
  menuTitle: 'Sula Hub',
280
276
  density: SulaMenuDensity.Default,
281
277
  labelOverflow: SulaMenuLabelOverflow.Wrap,
282
- drilldownLevel: 3,
283
278
  items: workbenchItems,
284
279
  user: { name: 'Carlos Mendes' },
285
280
  };
@@ -304,7 +299,6 @@ WithProfileMenu.args = {
304
299
  menuTitle: 'Sula Hub',
305
300
  density: SulaMenuDensity.Default,
306
301
  labelOverflow: SulaMenuLabelOverflow.Wrap,
307
- drilldownLevel: 3,
308
302
  items: currentMenuItems,
309
303
  user: { name: 'Lucas Reichert', email: 'lucas.reichert@sulamerica.com.br' },
310
304
  profileItems: hubProfileItems,
@@ -321,7 +315,6 @@ CustomProfileItems.args = {
321
315
  menuTitle: 'Sula Hub',
322
316
  density: SulaMenuDensity.Default,
323
317
  labelOverflow: SulaMenuLabelOverflow.Wrap,
324
- drilldownLevel: 3,
325
318
  items: workbenchItems,
326
319
  user: sampleUser,
327
320
  profileItems: [
@@ -347,6 +340,7 @@ export const ControlledDrillPath = (args) => {
347
340
  const menu = container.querySelector('sula-workbench-menu');
348
341
  const paths = {
349
342
  Tree: [],
343
+ Sinistros: ['claims'],
350
344
  'Cobertura': ['claims', 'claims-auto', 'claims-auto-coverage'],
351
345
  'Terceiros': ['claims', 'claims-auto', 'claims-auto-coverage', 'claims-auto-third'],
352
346
  };
@@ -366,14 +360,13 @@ ControlledDrillPath.args = {
366
360
  menuTitle: 'Sula Hub',
367
361
  density: SulaMenuDensity.Default,
368
362
  labelOverflow: SulaMenuLabelOverflow.Wrap,
369
- drilldownLevel: 3,
370
363
  items: workbenchItems,
371
364
  user: sampleUser,
372
365
  };
373
366
  ControlledDrillPath.parameters = {
374
367
  docs: {
375
368
  description: {
376
- story: 'O host controla o drill-down pela propriedade drillPath: os botões acima entram em Cobertura, em Terceiros ou voltam para a árvore. Ids desconhecidos interrompem o caminho no último nível válido.',
369
+ story: 'O host controla o drill-down pela propriedade drillPath: os botões acima entram em Sinistros, em Cobertura, em Terceiros ou voltam para a raiz. Ids desconhecidos interrompem o caminho no último nível válido.',
377
370
  },
378
371
  },
379
372
  };
@@ -382,108 +375,194 @@ InlineOnly.args = {
382
375
  menuTitle: 'Sula Hub',
383
376
  density: SulaMenuDensity.Default,
384
377
  labelOverflow: SulaMenuLabelOverflow.Wrap,
385
- drilldownLevel: 99,
386
- items: workbenchItems,
378
+ items: currentMenuItems,
387
379
  user: sampleUser,
388
380
  };
389
381
  InlineOnly.parameters = {
390
382
  docs: {
391
383
  description: {
392
- story: 'Com drilldownLevel acima da profundidade da árvore, o componente se comporta como o sula-menu, expandindo tudo em linha.',
384
+ story: 'Com no máximo 3 níveis, não há drill-down: o componente se comporta como o sula-menu, expandindo tudo em linha.',
393
385
  },
394
386
  },
395
387
  };
396
- const createComparisonShell = () => {
397
- const container = document.createElement('div');
398
- container.style.margin = '20px';
399
- container.style.padding = '24px';
400
- container.style.background = '#eef2f2';
401
- container.style.borderRadius = '24px';
402
- container.style.boxSizing = 'border-box';
403
- container.style.display = 'flex';
404
- container.style.gap = '32px';
405
- container.style.alignItems = 'flex-start';
406
- return container;
388
+ export const InlineWithExpandedPath = Template.bind({});
389
+ InlineWithExpandedPath.args = {
390
+ menuTitle: 'Sula Hub',
391
+ density: SulaMenuDensity.Default,
392
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
393
+ items: currentMenuItems,
394
+ drillPath: ['tech-portal', 'tech-cadastros'],
395
+ user: sampleUser,
407
396
  };
408
- const createComparisonColumn = (title) => {
409
- const column = document.createElement('div');
410
- const caption = document.createElement('div');
411
- caption.textContent = title;
412
- caption.style.font = '600 13px sans-serif';
413
- caption.style.color = '#6c6e6e';
414
- caption.style.marginBottom = '12px';
415
- const box = document.createElement('div');
416
- box.style.height = '720px';
417
- box.style.width = '350px';
418
- box.style.display = 'flex';
419
- box.style.background = '#ffffff';
420
- box.style.border = '1px solid #e5e6e6';
421
- box.style.borderRadius = '16px';
422
- box.style.overflow = 'hidden';
423
- column.appendChild(caption);
424
- column.appendChild(box);
425
- return { column, box };
426
- };
427
- // Fourth level under Tech Portal > Cadastros > Tribos. The current sula-menu stops at the third level,
428
- // so in it "Tribos" stays a leaf; in the new menu it opens the drill-down.
429
- const withFourthLevel = (items) => cloneItems(items).map(item => {
430
- if (item.id !== 'tech-portal')
431
- return item;
432
- return Object.assign(Object.assign({}, item), { expanded: true, children: item.children.map(child => {
433
- if (child.id !== 'tech-cadastros')
434
- return child;
435
- return Object.assign(Object.assign({}, child), { expanded: true, children: child.children.map(grandchild => grandchild.id === 'tech-tribos'
436
- ? Object.assign(Object.assign({}, grandchild), { children: [
437
- { id: 'tribo-saude', label: 'Tribo Saúde', icon: 'ph ph-heartbeat', selected: true },
438
- { id: 'tribo-odonto', label: 'Tribo Odonto', icon: 'ph ph-tooth' },
439
- { id: 'tribo-auto', label: 'Tribo Auto e Massificados', icon: 'ph ph-car' },
440
- { id: 'tribo-dados', label: 'Tribo Dados e Analytics', icon: 'ph ph-chart-line-up' },
441
- ] }) : grandchild) });
442
- }) });
443
- });
444
- const withoutSelection = (items) => items.map(item => (Object.assign(Object.assign({}, item), { selected: false, children: item.children ? withoutSelection(item.children) : undefined })));
445
- const clickMenuRow = (menu, label) => {
446
- const row = Array.from(menu.shadowRoot.querySelectorAll('.menu-item, .submenu-item')).find(el => { var _a; return ((_a = el.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === label; });
447
- row === null || row === void 0 ? void 0 : row.click();
448
- };
449
- const renderComparison = (items, drillTo) => {
450
- const container = createComparisonShell();
451
- const current = createComparisonColumn('sula-menu (atual)');
452
- const currentMenu = document.createElement('sula-menu');
453
- currentMenu.menuTitle = 'Sula Hub';
454
- currentMenu.image = BRAND_IMAGE;
455
- currentMenu.items = cloneItems(items);
456
- current.box.appendChild(currentMenu);
457
- const workbench = createComparisonColumn('sula-workbench-menu (novo)');
458
- const workbenchMenu = document.createElement('sula-workbench-menu');
459
- workbenchMenu.menuTitle = 'Sula Hub';
460
- workbenchMenu.image = BRAND_IMAGE;
461
- workbenchMenu.user = sampleUser;
462
- workbenchMenu.items = cloneItems(items);
463
- workbench.box.appendChild(workbenchMenu);
464
- if (drillTo) {
465
- customElements
466
- .whenDefined('sula-workbench-menu')
467
- .then(() => workbenchMenu.componentOnReady())
468
- .then(() => clickMenuRow(workbenchMenu, drillTo));
469
- }
470
- container.appendChild(current.column);
471
- container.appendChild(workbench.column);
472
- return container;
397
+ InlineWithExpandedPath.parameters = {
398
+ docs: {
399
+ description: {
400
+ story: 'Sem drill-down, drillPath expande em linha os itens do caminho (Tech Portal e Cadastros) uma única vez; o usuário pode recolhê-los depois.',
401
+ },
402
+ },
473
403
  };
474
- export const ComparisonWithCurrentSulaMenu = () => renderComparison(currentMenuItems);
475
- ComparisonWithCurrentSulaMenu.parameters = {
404
+ export const FourthLevelBreadcrumb = Template.bind({});
405
+ FourthLevelBreadcrumb.args = {
406
+ menuTitle: 'Sula Hub',
407
+ density: SulaMenuDensity.Default,
408
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
409
+ items: workbenchItems,
410
+ drillPath: ['claims', 'claims-auto', 'claims-auto-coverage', 'claims-auto-third'],
411
+ user: sampleUser,
412
+ };
413
+ FourthLevelBreadcrumb.parameters = {
476
414
  docs: {
477
415
  description: {
478
- story: 'Os mesmos itens do menu atual de produção, renderizados no sula-menu (atual) e no sula-workbench-menu (novo), lado a lado, para comparar espaçamento, ícones e hierarquia. O menu novo mostra o perfil do usuário no rodapé, que substitui o "Ocultar menu" (o recolher fica no topo).',
416
+ story: 'Drill-down no quarto nível: duas faixas de camadas na borda esquerda, breadcrumb com o nome do menu, reticências (o dropdown lista os níveis ocultos) e os dois últimos ancestrais, e o título do nível atual.',
479
417
  },
480
418
  },
481
419
  };
482
- export const ComparisonDrilldownFourthLevel = () => renderComparison(withFourthLevel(withoutSelection(currentMenuItems)), 'Tribos');
483
- ComparisonDrilldownFourthLevel.parameters = {
420
+ export const WithBrandImage = Template.bind({});
421
+ WithBrandImage.args = {
422
+ menuTitle: 'Sula Hub',
423
+ image: BRAND_IMAGE,
424
+ density: SulaMenuDensity.Default,
425
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
426
+ items: currentMenuItems,
427
+ user: sampleUser,
428
+ };
429
+ WithBrandImage.parameters = {
430
+ docs: {
431
+ description: {
432
+ story: 'Imagem da marca ao lado do título no cabeçalho da raiz. No drill-down o cabeçalho segue o protótipo e não mostra a imagem.',
433
+ },
434
+ },
435
+ };
436
+ const longLabelItems = [
437
+ { id: 'inicio', label: 'Início', icon: 'ph ph-house' },
438
+ {
439
+ id: 'long-root',
440
+ label: 'Plataforma de Gestão Integrada de Sinistros e Apólices',
441
+ icon: 'ph ph-buildings',
442
+ children: [
443
+ {
444
+ id: 'long-contracts',
445
+ label: 'Administração de Contratos Corporativos de Longa Duração',
446
+ icon: 'ph ph-briefcase',
447
+ children: [
448
+ {
449
+ id: 'long-coverage',
450
+ label: 'Coberturas Adicionais para Terceiros e Beneficiários',
451
+ icon: 'ph ph-shield-check',
452
+ children: [
453
+ {
454
+ id: 'long-docs',
455
+ label: 'Documentação Complementar Exigida pela Seguradora',
456
+ icon: 'ph ph-folder-open',
457
+ children: [
458
+ { id: 'long-address', label: 'Comprovante de residência atualizado nos últimos noventa dias', icon: 'ph ph-map-pin' },
459
+ { id: 'long-short', label: 'Curto', icon: 'ph ph-file' },
460
+ ],
461
+ },
462
+ ],
463
+ },
464
+ ],
465
+ },
466
+ ],
467
+ },
468
+ ];
469
+ const longLabelPath = ['long-root', 'long-contracts', 'long-coverage', 'long-docs'];
470
+ export const LongLabels = Template.bind({});
471
+ LongLabels.args = {
472
+ menuTitle: 'Sula Hub',
473
+ density: SulaMenuDensity.Default,
474
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
475
+ items: longLabelItems,
476
+ drillPath: longLabelPath,
477
+ user: { name: 'Maria Fernanda Albuquerque de Souza', email: 'maria.fernanda.albuquerque.de.souza@sulamerica.com.br' },
478
+ };
479
+ LongLabels.parameters = {
480
+ docs: {
481
+ description: {
482
+ story: 'Textos longos no drill-down: o título do nível quebra em até duas linhas, os itens quebram em até duas linhas (a seta fica na primeira), o breadcrumb encolhe com reticências e o rodapé corta nome e e-mail.',
483
+ },
484
+ },
485
+ };
486
+ export const LongLabelsTruncate = Template.bind({});
487
+ LongLabelsTruncate.args = Object.assign(Object.assign({}, LongLabels.args), { labelOverflow: SulaMenuLabelOverflow.Truncate });
488
+ LongLabelsTruncate.parameters = {
489
+ docs: {
490
+ description: {
491
+ story: 'Os mesmos textos longos com labelOverflow="truncate": os itens ficam em uma linha, com reticências.',
492
+ },
493
+ },
494
+ };
495
+ export const CompactDensity = Template.bind({});
496
+ CompactDensity.args = {
497
+ menuTitle: 'Sula Hub',
498
+ density: SulaMenuDensity.Compact,
499
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
500
+ items: currentMenuItems,
501
+ user: sampleUser,
502
+ };
503
+ CompactDensity.parameters = {
504
+ docs: {
505
+ description: {
506
+ story: 'Densidade compacta: itens da raiz com menos espaço vertical.',
507
+ },
508
+ },
509
+ };
510
+ export const ComfortableDensity = Template.bind({});
511
+ ComfortableDensity.args = {
512
+ menuTitle: 'Sula Hub',
513
+ density: SulaMenuDensity.Comfortable,
514
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
515
+ items: currentMenuItems,
516
+ user: sampleUser,
517
+ };
518
+ ComfortableDensity.parameters = {
519
+ docs: {
520
+ description: {
521
+ story: 'Densidade confortável: itens da raiz maiores e com mais espaço.',
522
+ },
523
+ },
524
+ };
525
+ export const HiddenAndDisabledItems = Template.bind({});
526
+ HiddenAndDisabledItems.args = {
527
+ menuTitle: 'Sula Hub',
528
+ density: SulaMenuDensity.Default,
529
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
530
+ items: [
531
+ { id: 'home', label: 'Início', icon: 'ph ph-house', selected: true },
532
+ { id: 'reports', label: 'Relatórios', icon: 'ph ph-chart-bar', disabled: true },
533
+ { id: 'secret', label: 'Oculto', icon: 'ph ph-eye-slash', hidden: true },
534
+ {
535
+ id: 'admin',
536
+ label: 'Administração',
537
+ icon: 'ph ph-gear',
538
+ children: [
539
+ { id: 'admin-users', label: 'Usuários', icon: 'ph ph-users' },
540
+ { id: 'admin-audit', label: 'Auditoria', icon: 'ph ph-clipboard-text', disabled: true },
541
+ { id: 'admin-hidden', label: 'Oculto', icon: 'ph ph-eye-slash', hidden: true },
542
+ ],
543
+ },
544
+ ],
545
+ user: sampleUser,
546
+ };
547
+ HiddenAndDisabledItems.parameters = {
548
+ docs: {
549
+ description: {
550
+ story: 'Itens hidden não aparecem (nem contam para a profundidade) e itens disabled ficam esmaecidos e não respondem a cliques.',
551
+ },
552
+ },
553
+ };
554
+ export const WithoutUser = Template.bind({});
555
+ WithoutUser.args = {
556
+ menuTitle: 'Sula Hub',
557
+ density: SulaMenuDensity.Default,
558
+ labelOverflow: SulaMenuLabelOverflow.Wrap,
559
+ items: workbenchItems,
560
+ user: undefined,
561
+ };
562
+ WithoutUser.parameters = {
484
563
  docs: {
485
564
  description: {
486
- story: 'Mesmos itens do menu atual com um quarto nível em Tech Portal > Cadastros > Tribos. No sula-menu (atual) a árvore para no terceiro nível e Tribos fica sem os filhos. No sula-workbench-menu (novo), Tribos abre o drill-down: breadcrumb com o caminho, botão de voltar e os itens do quarto nível em tela cheia.',
565
+ story: 'Sem a propriedade user o rodapé e o menu de perfil não são renderizados.',
487
566
  },
488
567
  },
489
568
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sula-workbench-menu.stories.js","sourceRoot":"","sources":["../../../src/components/sula-workbench-menu/sula-workbench-menu.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { SulaMenuDensity, SulaMenuLabelOverflow } from '../sula-menu/model/sula-menu.model';\nimport { SulaMenuMainItem } from '../sula-menu/model/sula-menu.model';\nimport { SulaProfileMenuItem, SulaProfileMenuSwitchChange } from '../sula-profile-menu/model/sula-profile-menu.model';\nimport { SulaWorkbenchMenuItem, SulaWorkbenchMenuUser } from './model/sula-workbench-menu.model';\n\ntype StoryArgs = {\n\tmenuTitle: string;\n\tdensity: SulaMenuDensity;\n\tlabelOverflow: SulaMenuLabelOverflow;\n\tdrilldownLevel: number;\n\tdrillPath?: string[];\n\titems: SulaWorkbenchMenuItem[];\n\tuser: SulaWorkbenchMenuUser;\n\tprofileItems?: SulaProfileMenuItem[];\n\tprofileClicked: EventListener;\n\tprofileItemClicked: EventListener;\n\tprofileSwitchChanged: EventListener;\n\titemSelected: EventListener;\n\titemClicked: EventListener;\n\tlevelChanged: EventListener;\n\tmenuToggled: EventListener;\n};\n\nconst SHIELD_SVG = `data:image/svg+xml;utf8,${encodeURIComponent(`\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#6c6e6e\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t<path d=\"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3z\"/>\n\t\t<path d=\"M9 12l2 2 4-4\"/>\n\t</svg>\n`)}`;\n\nconst CAR_SVG = `data:image/svg+xml;utf8,${encodeURIComponent(`\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#6c6e6e\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t<path d=\"M4 16v-3.2L6 8h12l2 4.8V16\"/>\n\t\t<path d=\"M4 16h16v2.4a.8.8 0 0 1-.8.8h-1.4a.8.8 0 0 1-.8-.8V17H7v1.4a.8.8 0 0 1-.8.8H4.8a.8.8 0 0 1-.8-.8Z\"/>\n\t</svg>\n`)}`;\n\nconst workbenchItems: SulaWorkbenchMenuItem[] = [\n\t{ id: 'overview', label: 'Visão Geral', icon: 'ph ph-house-line' },\n\t{\n\t\tid: 'claims',\n\t\tlabel: 'Sinistros',\n\t\ticon: 'ph ph-warning-circle',\n\t\texpanded: true,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tid: 'claims-auto',\n\t\t\t\tlabel: 'Auto',\n\t\t\t\ticon: 'ph ph-car',\n\t\t\t\texpanded: true,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'claims-auto-coverage',\n\t\t\t\t\t\tlabel: 'Cobertura',\n\t\t\t\t\t\ticon: 'ph ph-shield-check',\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'claims-auto-third',\n\t\t\t\t\t\t\t\tlabel: 'Terceiros',\n\t\t\t\t\t\t\t\ticon: 'ph ph-users-three',\n\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'claims-auto-third-docs',\n\t\t\t\t\t\t\t\t\t\tlabel: 'Documentação',\n\t\t\t\t\t\t\t\t\t\ticon: 'ph ph-folder-open',\n\t\t\t\t\t\t\t\t\t\tchildren: [{ id: 'claims-auto-third-address', label: 'Comprovante de residência', icon: 'ph ph-map-pin', selected: true }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ id: 'claims-auto-own', label: 'Próprio', icon: 'ph ph-car-profile' },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ id: 'claims-auto-glass', label: 'Vidros', icon: 'ph ph-wrench' },\n\t\t\t\t\t{ id: 'claims-auto-other', label: 'Outros (ícone padrão)' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{ id: 'claims-home', label: 'Residencial', icon: 'ph ph-house', children: [{ id: 'claims-home-fire', label: 'Incêndio', icon: 'ph ph-fire' }] },\n\t\t\t{ id: 'claims-vehicle', label: 'Veículos', icon: 'ph ph-car', image: CAR_SVG },\n\t\t\t{ id: 'claims-life', label: 'Vida', icon: 'ph ph-heartbeat' },\n\t\t],\n\t},\n\t{\n\t\tid: 'policies',\n\t\tlabel: 'Apólices',\n\t\ticon: 'ph ph-files',\n\t\timage: SHIELD_SVG,\n\t\tchildren: [\n\t\t\t{ id: 'policies-issued', label: 'Emitidas', icon: 'ph ph-file-text' },\n\t\t\t{ id: 'policies-review', label: 'Em análise', icon: 'ph ph-clipboard-text' },\n\t\t],\n\t},\n\t{ id: 'settings', label: 'Configurações', icon: 'ph ph-gear-six', children: [{ id: 'settings-users', label: 'Usuários', icon: 'ph ph-users-three' }] },\n];\n\nconst BRAND_IMAGE = `data:image/svg+xml;utf8,${encodeURIComponent(`\n\t<svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<rect width=\"80\" height=\"80\" rx=\"20\" fill=\"#E5231B\"/>\n\t\t<path d=\"M52 24H35.5C31.3579 24 28 27.3579 28 31.5C28 35.6421 31.3579 39 35.5 39H44.5C48.6421 39 52 42.3579 52 46.5C52 50.6421 48.6421 54 44.5 54H28\" stroke=\"white\" stroke-width=\"8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t</svg>\n`)}`;\n\n// Same items as the menu in production today, to compare both components with identical content.\nconst currentMenuItems: SulaWorkbenchMenuItem[] = [\n\t{ id: 'dashboard', label: 'Dashboard', icon: 'ph ph-house', selected: true },\n\t{ id: 'exemplo', label: 'Exemplo menu', icon: 'ph ph-archive', children: [{ id: 'exemplo-usuarios', label: 'Usuários', icon: 'ph ph-user' }] },\n\t{ id: 'contas', label: 'Contas Médicas', icon: 'ph ph-align-right', children: [{ id: 'guias', label: 'Guias', icon: 'ph ph-align-center-horizontal-simple' }] },\n\t{\n\t\tid: 'ppa',\n\t\tlabel: 'PPA (Portal Plataforma Antifraude)',\n\t\ticon: 'ph ph-air-traffic-control',\n\t\tchildren: [\n\t\t\t{ id: 'ppa-prestadores', label: 'Prestadores', icon: 'ph ph-ambulance' },\n\t\t\t{ id: 'ppa-usuarios', label: 'Usuários', icon: 'ph ph-user' },\n\t\t\t{ id: 'ppa-prestadores-local', label: 'Prestadores-LOCAL', icon: 'ph ph-' },\n\t\t\t{ id: 'ppa-usuarios-local', label: 'Usuarios-LOCAL', icon: 'ph ph-' },\n\t\t\t{ id: 'ppa-prestadores-lilian', label: 'Prestadores Lilian', icon: 'ph ph-address-book' },\n\t\t],\n\t},\n\t{\n\t\tid: 'sula-audit',\n\t\tlabel: 'Sula Audit',\n\t\ticon: 'ph ph-airplane-in-flight',\n\t\tchildren: [\n\t\t\t{ id: 'audit-home', label: 'Home', icon: 'ph ph-house' },\n\t\t\t{ id: 'audit-prestadores', label: 'Prestadores auditados', icon: 'ph ph-airplay' },\n\t\t],\n\t},\n\t{\n\t\tid: 'dev-portal',\n\t\tlabel: 'Dev Portal',\n\t\ticon: 'ph ph-code-simple',\n\t\tchildren: [\n\t\t\t{ id: 'dev-devsecops', label: 'DevSecOps', icon: 'ph ph-chart-line' },\n\t\t\t{ id: 'dev-tech-radar', label: 'Tech Radar', icon: 'ph ph-target' },\n\t\t\t{ id: 'dev-portal-eda', label: 'Portal EDA', icon: 'ph ph-' },\n\t\t],\n\t},\n\t{\n\t\tid: 'sula-os',\n\t\tlabel: 'Sula OS',\n\t\ticon: 'ph ph-browsers',\n\t\tchildren: [\n\t\t\t{ id: 'os-dashboard', label: 'Dashboard', icon: 'ph ph-gauge' },\n\t\t\t{ id: 'os-canvas', label: 'Canvas', icon: 'ph ph-frame-corners' },\n\t\t],\n\t},\n\t{\n\t\tid: 'tech-portal',\n\t\tlabel: 'Tech Portal',\n\t\ticon: 'ph ph-address-book',\n\t\tchildren: [\n\t\t\t{ id: 'tech-home', label: 'Home', icon: 'ph ph-users-four' },\n\t\t\t{ id: 'tech-busca', label: 'Busca', icon: 'ph ph-user-circle-gear' },\n\t\t\t{ id: 'tech-perfil', label: 'Meu perfil', icon: 'ph ph-user-circle' },\n\t\t\t{\n\t\t\t\tid: 'tech-cadastros',\n\t\t\t\tlabel: 'Cadastros',\n\t\t\t\ticon: 'ph ph-table',\n\t\t\t\tchildren: [\n\t\t\t\t\t{ id: 'tech-empresas', label: 'Empresas terceiras', icon: 'ph ph-' },\n\t\t\t\t\t{ id: 'tech-tribos', label: 'Tribos', icon: 'ph ph-' },\n\t\t\t\t\t{ id: 'tech-capitulos', label: 'Capítulos/Jornadas', icon: 'ph ph-' },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'configuracoes',\n\t\tlabel: 'Configurações',\n\t\ticon: 'ph ph-gear',\n\t\tchildren: [\n\t\t\t{ id: 'conf-menus', label: 'Menus', icon: 'ph ph-layout' },\n\t\t\t{ id: 'conf-usuarios', label: 'Usuários', icon: 'ph ph-users' },\n\t\t\t{ id: 'conf-tenant', label: 'Tenant', icon: 'ph ph-building' },\n\t\t\t{ id: 'conf-chaves', label: 'Chaves de APIs', icon: 'ph ph-key' },\n\t\t\t{\n\t\t\t\tid: 'conf-permissoes',\n\t\t\t\tlabel: 'Permissões',\n\t\t\t\ticon: 'ph ph-lock',\n\t\t\t\tchildren: [\n\t\t\t\t\t{ id: 'perm-papeis', label: 'Papéis', icon: 'ph ph-' },\n\t\t\t\t\t{ id: 'perm-recursos', label: 'Recursos', icon: 'ph ph-' },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst sampleUser: SulaWorkbenchMenuUser = { name: 'Ana Ribeiro', email: 'ana.ribeiro@sula.com.br' };\n\nconst hubProfileItems: SulaProfileMenuItem[] = [\n\t{ id: 'account', label: 'Minha conta', icon: 'ph ph-user-circle' },\n\t{ id: 'dark-mode', label: 'Modo escuro', icon: 'ph ph-moon', hasSwitch: true, active: false },\n\t{ id: 'divider-logout', divider: true },\n\t{ id: 'logout', label: 'Sair', icon: 'ph ph-sign-out' },\n];\n\nconst cloneItems = (items: SulaWorkbenchMenuItem[]): SulaWorkbenchMenuItem[] =>\n\titems.map(item => ({ ...item, children: item.children ? cloneItems(item.children) : undefined }));\n\nconst createStoryShell = () => {\n\tconst container = document.createElement('div');\n\tcontainer.style.margin = '20px';\n\tcontainer.style.padding = '24px';\n\tcontainer.style.background = 'linear-gradient(180deg, #f8f9f9 0%, #eef2f2 100%)';\n\tcontainer.style.borderRadius = '24px';\n\tcontainer.style.boxSizing = 'border-box';\n\n\tconst shell = document.createElement('div');\n\tshell.style.display = 'flex';\n\tshell.style.width = '960px';\n\tshell.style.maxWidth = '100%';\n\tshell.style.height = '720px';\n\tshell.style.borderRadius = '24px';\n\tshell.style.background = '#ffffff';\n\tshell.style.border = '1px solid #dfe5e5';\n\tshell.style.boxShadow = '0 20px 48px rgba(15, 23, 42, 0.08)';\n\n\tconst contentPanel = document.createElement('div');\n\tcontentPanel.style.flex = '1';\n\tcontentPanel.style.padding = '40px';\n\tcontentPanel.style.borderRadius = '0 24px 24px 0';\n\tcontentPanel.style.color = '#6c6e6e';\n\tcontentPanel.style.fontSize = '14px';\n\tcontentPanel.textContent = 'Área de conteúdo. Níveis 1 a 2 expandem em linha; a partir do nível 3 com filhos, o menu entra em drill-down com breadcrumb.';\n\n\tshell.appendChild(contentPanel);\n\tcontainer.appendChild(shell);\n\treturn { container, shell };\n};\n\nexport default {\n\ttitle: 'Components/sula-workbench-menu',\n\ttags: ['autodocs'],\n\targTypes: {\n\t\tmenuTitle: { control: 'text', defaultValue: 'Sula Hub', description: 'Título do menu.' },\n\t\tdensity: {\n\t\t\tcontrol: { type: 'select' },\n\t\t\toptions: Object.values(SulaMenuDensity),\n\t\t\tdescription: 'Densidade visual dos itens.',\n\t\t},\n\t\tlabelOverflow: {\n\t\t\tcontrol: { type: 'select' },\n\t\t\toptions: Object.values(SulaMenuLabelOverflow),\n\t\t\tdescription: 'Quebra ou ellipsis dos labels.',\n\t\t},\n\t\tdrilldownLevel: {\n\t\t\tcontrol: { type: 'number', min: 1 },\n\t\t\tdescription: 'Nível (1-based) a partir do qual itens com filhos abrem drill-down em vez de expandir em linha.',\n\t\t},\n\t\tdrillPath: {\n\t\t\tcontrol: 'object',\n\t\t\tdescription: 'Controla o drill-down pelo host: ids da raiz até o item cujos filhos aparecem. Array vazio volta à árvore; undefined deixa só os cliques navegarem.',\n\t\t},\n\t\titems: { control: 'object', description: 'Árvore de itens, recursiva.' },\n\t\titemSelected: { action: 'itemSelected', description: 'Emitido ao selecionar um item folha.' },\n\t\titemClicked: { action: 'itemClicked', description: 'Emitido a cada clique em um item.' },\n\t\tlevelChanged: { action: 'levelChanged', description: 'Emitido ao entrar ou voltar de nível no drill-down.' },\n\t\tuser: { control: 'object', description: 'Usuário logado exibido no rodapé: name (obrigatório), email e photo (URL ou data URI). Sem photo, mostra as iniciais.' },\n\t\tprofileClicked: { action: 'profileClicked', description: 'Emitido ao clicar na área do usuário. Abre o menu de perfil, a menos que o evento seja cancelado com preventDefault().' },\n\t\tprofileItems: { control: 'object', description: 'Opções do menu de perfil: id, label, icon, hasSwitch + active, divider, disabled, hidden.' },\n\t\tprofileItemClicked: { action: 'profileItemClicked', description: 'Emitido ao clicar em uma opção sem switch do menu de perfil. O popover fecha.' },\n\t\tprofileSwitchChanged: { action: 'profileSwitchChanged', description: 'Emitido ao alternar o switch de uma opção, com { item, active }. O popover continua aberto.' },\n\t\tmenuToggled: { action: 'menuToggled', description: 'Emitido ao colapsar ou expandir o menu.' },\n\t},\n\tparameters: {\n\t\tdocs: {\n\t\t\tdescription: {\n\t\t\t\tcomponent:\n\t\t\t\t\t'Menu que combina a navegação em árvore do sula-menu (níveis 1 e 2 expandem em linha) com o drill-down: a partir do nível configurado em drilldownLevel (padrão 3), itens com filhos abrem um painel de um nível com breadcrumb e botão de voltar.',\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst Template: any = (args: StoryArgs) => {\n\tconst { container, shell } = createStoryShell();\n\tconst el = document.createElement('sula-workbench-menu');\n\n\tel.menuTitle = args.menuTitle;\n\tel.density = args.density;\n\tel.labelOverflow = args.labelOverflow;\n\tel.drilldownLevel = args.drilldownLevel;\n\tel.drillPath = args.drillPath;\n\tel.items = cloneItems(args.items);\n\tel.user = args.user;\n\tel.profileItems = (args.profileItems ?? hubProfileItems).map(item => ({ ...item }));\n\n\tel.addEventListener('itemSelected', args.itemSelected);\n\tel.addEventListener('itemClicked', args.itemClicked);\n\tel.addEventListener('levelChanged', args.levelChanged);\n\tel.addEventListener('menuToggled', args.menuToggled);\n\tel.addEventListener('profileClicked', args.profileClicked);\n\tel.addEventListener('profileItemClicked', args.profileItemClicked);\n\tel.addEventListener('profileSwitchChanged', args.profileSwitchChanged);\n\n\tshell.prepend(el);\n\treturn container;\n};\n\nexport const Default = Template.bind({});\nDefault.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\tdrilldownLevel: 3,\n\titems: workbenchItems,\n\tuser: sampleUser,\n};\nDefault.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Exemplo com 6 níveis reais. Sinistros e Auto já vêm expandidos; em Cobertura (nível 3) o item Terceiros abre o drill-down. \"Apólices\" e \"Veículos\" usam um SVG no lugar do ícone de fonte (propriedade image do item). O rodapé mostra o usuário logado; clicar nele emite profileClicked.',\n\t\t},\n\t},\n};\n\nexport const WithoutPhotoOrEmail = Template.bind({});\nWithoutPhotoOrEmail.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\tdrilldownLevel: 3,\n\titems: workbenchItems,\n\tuser: { name: 'Carlos Mendes' },\n};\nWithoutPhotoOrEmail.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Usuário sem foto nem e-mail: o avatar mostra as iniciais e o nome aparece sozinho.',\n\t\t},\n\t},\n};\n\nexport const WithProfileMenu = (args: StoryArgs) => {\n\tconst container = Template(args);\n\tconst menu = container.querySelector('sula-workbench-menu');\n\t// Example of the host application applying the theme chosen in the profile popover.\n\tmenu.addEventListener('profileSwitchChanged', (event: CustomEvent<SulaProfileMenuSwitchChange>) => {\n\t\tif (event.detail.item.id === 'dark-mode') document.documentElement.classList.toggle('dark', event.detail.active);\n\t});\n\treturn container;\n};\nWithProfileMenu.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\tdrilldownLevel: 3,\n\titems: currentMenuItems,\n\tuser: { name: 'Lucas Reichert', email: 'lucas.reichert@sulamerica.com.br' },\n\tprofileItems: hubProfileItems,\n};\nWithProfileMenu.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Clique no usuário do rodapé para abrir o menu de perfil, que substitui o header da aplicação. Com o menu expandido, o popover abre acima do usuário, na largura do menu; recolhido, abre ao lado do rail. Fecha com clique fora, Esc ou novo clique no usuário. As opções vêm de profileItems (label, icon, hasSwitch, divider...): cliques emitem profileItemClicked e switches emitem profileSwitchChanged. Aqui a story aplica a classe .dark no documentElement quando o switch dark-mode muda. Para não abrir o popover e tratar o clique por conta própria, chame preventDefault() em profileClicked. Conteúdo extra pode ser passado com slot=\"profile-content\".',\n\t\t},\n\t},\n};\n\nexport const CustomProfileItems = Template.bind({});\nCustomProfileItems.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\tdrilldownLevel: 3,\n\titems: workbenchItems,\n\tuser: sampleUser,\n\tprofileItems: [\n\t\t{ id: 'profile', label: 'Meu perfil', icon: 'ph ph-identification-card' },\n\t\t{ id: 'notifications', label: 'Notificações', icon: 'ph ph-bell', hasSwitch: true, active: true },\n\t\t{ id: 'compact', label: 'Modo compacto', icon: 'ph ph-rows', hasSwitch: true, active: false },\n\t\t{ id: 'divider-help', divider: true },\n\t\t{ id: 'help', label: 'Central de ajuda', icon: 'ph ph-question' },\n\t\t{ id: 'billing', label: 'Faturamento', icon: 'ph ph-credit-card', disabled: true },\n\t\t{ id: 'divider-logout', divider: true },\n\t\t{ id: 'logout', label: 'Sair', icon: 'ph ph-sign-out' },\n\t],\n};\nCustomProfileItems.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Outra aplicação com opções próprias: dois switches, item desabilitado e dois divisores. Basta trocar profileItems.',\n\t\t},\n\t},\n};\n\nexport const ControlledDrillPath = (args: StoryArgs) => {\n\tconst container = Template(args);\n\tconst menu = container.querySelector('sula-workbench-menu');\n\tconst paths: Record<string, string[]> = {\n\t\tTree: [],\n\t\t'Cobertura': ['claims', 'claims-auto', 'claims-auto-coverage'],\n\t\t'Terceiros': ['claims', 'claims-auto', 'claims-auto-coverage', 'claims-auto-third'],\n\t};\n\n\tconst toolbar = document.createElement('div');\n\ttoolbar.style.cssText = 'display:flex;gap:8px;margin:20px 20px 0';\n\tObject.entries(paths).forEach(([label, path]) => {\n\t\tconst button = document.createElement('sula-button');\n\t\tbutton.text = label;\n\t\tbutton.addEventListener('click', () => (menu.drillPath = path));\n\t\ttoolbar.appendChild(button);\n\t});\n\n\tconst wrapper = document.createElement('div');\n\twrapper.append(toolbar, container);\n\treturn wrapper;\n};\nControlledDrillPath.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\tdrilldownLevel: 3,\n\titems: workbenchItems,\n\tuser: sampleUser,\n};\nControlledDrillPath.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'O host controla o drill-down pela propriedade drillPath: os botões acima entram em Cobertura, em Terceiros ou voltam para a árvore. Ids desconhecidos interrompem o caminho no último nível válido.',\n\t\t},\n\t},\n};\n\nexport const InlineOnly = Template.bind({});\nInlineOnly.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\tdrilldownLevel: 99,\n\titems: workbenchItems,\n\tuser: sampleUser,\n};\nInlineOnly.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Com drilldownLevel acima da profundidade da árvore, o componente se comporta como o sula-menu, expandindo tudo em linha.',\n\t\t},\n\t},\n};\n\nconst createComparisonShell = () => {\n\tconst container = document.createElement('div');\n\tcontainer.style.margin = '20px';\n\tcontainer.style.padding = '24px';\n\tcontainer.style.background = '#eef2f2';\n\tcontainer.style.borderRadius = '24px';\n\tcontainer.style.boxSizing = 'border-box';\n\tcontainer.style.display = 'flex';\n\tcontainer.style.gap = '32px';\n\tcontainer.style.alignItems = 'flex-start';\n\treturn container;\n};\n\nconst createComparisonColumn = (title: string) => {\n\tconst column = document.createElement('div');\n\tconst caption = document.createElement('div');\n\tcaption.textContent = title;\n\tcaption.style.font = '600 13px sans-serif';\n\tcaption.style.color = '#6c6e6e';\n\tcaption.style.marginBottom = '12px';\n\tconst box = document.createElement('div');\n\tbox.style.height = '720px';\n\tbox.style.width = '350px';\n\tbox.style.display = 'flex';\n\tbox.style.background = '#ffffff';\n\tbox.style.border = '1px solid #e5e6e6';\n\tbox.style.borderRadius = '16px';\n\tbox.style.overflow = 'hidden';\n\tcolumn.appendChild(caption);\n\tcolumn.appendChild(box);\n\treturn { column, box };\n};\n\n// Fourth level under Tech Portal > Cadastros > Tribos. The current sula-menu stops at the third level,\n// so in it \"Tribos\" stays a leaf; in the new menu it opens the drill-down.\nconst withFourthLevel = (items: SulaWorkbenchMenuItem[]): SulaWorkbenchMenuItem[] =>\n\tcloneItems(items).map(item => {\n\t\tif (item.id !== 'tech-portal') return item;\n\t\treturn {\n\t\t\t...item,\n\t\t\texpanded: true,\n\t\t\tchildren: item.children!.map(child => {\n\t\t\t\tif (child.id !== 'tech-cadastros') return child;\n\t\t\t\treturn {\n\t\t\t\t\t...child,\n\t\t\t\t\texpanded: true,\n\t\t\t\t\tchildren: child.children!.map(grandchild =>\n\t\t\t\t\t\tgrandchild.id === 'tech-tribos'\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...grandchild,\n\t\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t\t{ id: 'tribo-saude', label: 'Tribo Saúde', icon: 'ph ph-heartbeat', selected: true },\n\t\t\t\t\t\t\t\t\t\t{ id: 'tribo-odonto', label: 'Tribo Odonto', icon: 'ph ph-tooth' },\n\t\t\t\t\t\t\t\t\t\t{ id: 'tribo-auto', label: 'Tribo Auto e Massificados', icon: 'ph ph-car' },\n\t\t\t\t\t\t\t\t\t\t{ id: 'tribo-dados', label: 'Tribo Dados e Analytics', icon: 'ph ph-chart-line-up' },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: grandchild,\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t});\n\nconst withoutSelection = (items: SulaWorkbenchMenuItem[]): SulaWorkbenchMenuItem[] =>\n\titems.map(item => ({ ...item, selected: false, children: item.children ? withoutSelection(item.children) : undefined }));\n\nconst clickMenuRow = (menu: HTMLElement, label: string) => {\n\tconst row = Array.from(menu.shadowRoot!.querySelectorAll<HTMLElement>('.menu-item, .submenu-item')).find(el => el.textContent?.trim() === label);\n\trow?.click();\n};\n\nconst renderComparison = (items: SulaWorkbenchMenuItem[], drillTo?: string) => {\n\tconst container = createComparisonShell();\n\n\tconst current = createComparisonColumn('sula-menu (atual)');\n\tconst currentMenu = document.createElement('sula-menu');\n\tcurrentMenu.menuTitle = 'Sula Hub';\n\tcurrentMenu.image = BRAND_IMAGE;\n\tcurrentMenu.items = cloneItems(items) as unknown as SulaMenuMainItem[];\n\tcurrent.box.appendChild(currentMenu);\n\n\tconst workbench = createComparisonColumn('sula-workbench-menu (novo)');\n\tconst workbenchMenu = document.createElement('sula-workbench-menu');\n\tworkbenchMenu.menuTitle = 'Sula Hub';\n\tworkbenchMenu.image = BRAND_IMAGE;\n\tworkbenchMenu.user = sampleUser;\n\tworkbenchMenu.items = cloneItems(items);\n\tworkbench.box.appendChild(workbenchMenu);\n\n\tif (drillTo) {\n\t\tcustomElements\n\t\t\t.whenDefined('sula-workbench-menu')\n\t\t\t.then(() => workbenchMenu.componentOnReady())\n\t\t\t.then(() => clickMenuRow(workbenchMenu, drillTo));\n\t}\n\n\tcontainer.appendChild(current.column);\n\tcontainer.appendChild(workbench.column);\n\treturn container;\n};\n\nexport const ComparisonWithCurrentSulaMenu = () => renderComparison(currentMenuItems);\nComparisonWithCurrentSulaMenu.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Os mesmos itens do menu atual de produção, renderizados no sula-menu (atual) e no sula-workbench-menu (novo), lado a lado, para comparar espaçamento, ícones e hierarquia. O menu novo mostra o perfil do usuário no rodapé, que substitui o \"Ocultar menu\" (o recolher fica no topo).',\n\t\t},\n\t},\n};\n\nexport const ComparisonDrilldownFourthLevel = () => renderComparison(withFourthLevel(withoutSelection(currentMenuItems)), 'Tribos');\nComparisonDrilldownFourthLevel.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Mesmos itens do menu atual com um quarto nível em Tech Portal > Cadastros > Tribos. No sula-menu (atual) a árvore para no terceiro nível e Tribos fica sem os filhos. No sula-workbench-menu (novo), Tribos abre o drill-down: breadcrumb com o caminho, botão de voltar e os itens do quarto nível em tela cheia.',\n\t\t},\n\t},\n};\n"]}
1
+ {"version":3,"file":"sula-workbench-menu.stories.js","sourceRoot":"","sources":["../../../src/components/sula-workbench-menu/sula-workbench-menu.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { SulaMenuDensity, SulaMenuLabelOverflow } from '../sula-menu/model/sula-menu.model';\nimport { SulaProfileMenuItem, SulaProfileMenuSwitchChange } from '../sula-profile-menu/model/sula-profile-menu.model';\nimport { SulaWorkbenchMenuItem, SulaWorkbenchMenuUser } from './model/sula-workbench-menu.model';\n\ntype StoryArgs = {\n\tmenuTitle: string;\n\timage?: string;\n\tdensity: SulaMenuDensity;\n\tlabelOverflow: SulaMenuLabelOverflow;\n\tdrillPath?: string[];\n\titems: SulaWorkbenchMenuItem[];\n\tuser: SulaWorkbenchMenuUser;\n\tprofileItems?: SulaProfileMenuItem[];\n\tprofileClicked: EventListener;\n\tprofileItemClicked: EventListener;\n\tprofileSwitchChanged: EventListener;\n\titemSelected: EventListener;\n\titemClicked: EventListener;\n\tlevelChanged: EventListener;\n\tmenuToggled: EventListener;\n};\n\nconst SHIELD_SVG = `data:image/svg+xml;utf8,${encodeURIComponent(`\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#6c6e6e\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t<path d=\"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3z\"/>\n\t\t<path d=\"M9 12l2 2 4-4\"/>\n\t</svg>\n`)}`;\n\nconst CAR_SVG = `data:image/svg+xml;utf8,${encodeURIComponent(`\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#6c6e6e\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n\t\t<path d=\"M4 16v-3.2L6 8h12l2 4.8V16\"/>\n\t\t<path d=\"M4 16h16v2.4a.8.8 0 0 1-.8.8h-1.4a.8.8 0 0 1-.8-.8V17H7v1.4a.8.8 0 0 1-.8.8H4.8a.8.8 0 0 1-.8-.8Z\"/>\n\t</svg>\n`)}`;\n\nconst workbenchItems: SulaWorkbenchMenuItem[] = [\n\t{ id: 'overview', label: 'Visão Geral', icon: 'ph ph-house-line' },\n\t{\n\t\tid: 'claims',\n\t\tlabel: 'Sinistros',\n\t\ticon: 'ph ph-warning-circle',\n\t\texpanded: true,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tid: 'claims-auto',\n\t\t\t\tlabel: 'Auto',\n\t\t\t\ticon: 'ph ph-car',\n\t\t\t\texpanded: true,\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'claims-auto-coverage',\n\t\t\t\t\t\tlabel: 'Cobertura',\n\t\t\t\t\t\ticon: 'ph ph-shield-check',\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'claims-auto-third',\n\t\t\t\t\t\t\t\tlabel: 'Terceiros',\n\t\t\t\t\t\t\t\ticon: 'ph ph-users-three',\n\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'claims-auto-third-docs',\n\t\t\t\t\t\t\t\t\t\tlabel: 'Documentação',\n\t\t\t\t\t\t\t\t\t\ticon: 'ph ph-folder-open',\n\t\t\t\t\t\t\t\t\t\tchildren: [{ id: 'claims-auto-third-address', label: 'Comprovante de residência', icon: 'ph ph-map-pin', selected: true }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ id: 'claims-auto-own', label: 'Próprio', icon: 'ph ph-car-profile' },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{ id: 'claims-auto-glass', label: 'Vidros', icon: 'ph ph-wrench' },\n\t\t\t\t\t{ id: 'claims-auto-other', label: 'Outros (ícone padrão)' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{ id: 'claims-home', label: 'Residencial', icon: 'ph ph-house', children: [{ id: 'claims-home-fire', label: 'Incêndio', icon: 'ph ph-fire' }] },\n\t\t\t{ id: 'claims-vehicle', label: 'Veículos', icon: 'ph ph-car', image: CAR_SVG },\n\t\t\t{ id: 'claims-life', label: 'Vida', icon: 'ph ph-heartbeat' },\n\t\t],\n\t},\n\t{\n\t\tid: 'policies',\n\t\tlabel: 'Apólices',\n\t\ticon: 'ph ph-files',\n\t\timage: SHIELD_SVG,\n\t\tchildren: [\n\t\t\t{ id: 'policies-issued', label: 'Emitidas', icon: 'ph ph-file-text' },\n\t\t\t{ id: 'policies-review', label: 'Em análise', icon: 'ph ph-clipboard-text' },\n\t\t],\n\t},\n\t{ id: 'settings', label: 'Configurações', icon: 'ph ph-gear-six', children: [{ id: 'settings-users', label: 'Usuários', icon: 'ph ph-users-three' }] },\n];\n\nconst BRAND_IMAGE = `data:image/svg+xml;utf8,${encodeURIComponent(`\n\t<svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<rect width=\"80\" height=\"80\" rx=\"20\" fill=\"#E5231B\"/>\n\t\t<path d=\"M52 24H35.5C31.3579 24 28 27.3579 28 31.5C28 35.6421 31.3579 39 35.5 39H44.5C48.6421 39 52 42.3579 52 46.5C52 50.6421 48.6421 54 44.5 54H28\" stroke=\"white\" stroke-width=\"8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t</svg>\n`)}`;\n\n// Same items as the menu in production today.\nconst currentMenuItems: SulaWorkbenchMenuItem[] = [\n\t{ id: 'dashboard', label: 'Dashboard', icon: 'ph ph-house', selected: true },\n\t{ id: 'exemplo', label: 'Exemplo menu', icon: 'ph ph-archive', children: [{ id: 'exemplo-usuarios', label: 'Usuários', icon: 'ph ph-user' }] },\n\t{ id: 'contas', label: 'Contas Médicas', icon: 'ph ph-align-right', children: [{ id: 'guias', label: 'Guias', icon: 'ph ph-align-center-horizontal-simple' }] },\n\t{\n\t\tid: 'ppa',\n\t\tlabel: 'PPA (Portal Plataforma Antifraude)',\n\t\ticon: 'ph ph-air-traffic-control',\n\t\tchildren: [\n\t\t\t{ id: 'ppa-prestadores', label: 'Prestadores', icon: 'ph ph-ambulance' },\n\t\t\t{ id: 'ppa-usuarios', label: 'Usuários', icon: 'ph ph-user' },\n\t\t\t{ id: 'ppa-prestadores-local', label: 'Prestadores-LOCAL', icon: 'ph ph-' },\n\t\t\t{ id: 'ppa-usuarios-local', label: 'Usuarios-LOCAL', icon: 'ph ph-' },\n\t\t\t{ id: 'ppa-prestadores-lilian', label: 'Prestadores Lilian', icon: 'ph ph-address-book' },\n\t\t],\n\t},\n\t{\n\t\tid: 'sula-audit',\n\t\tlabel: 'Sula Audit',\n\t\ticon: 'ph ph-airplane-in-flight',\n\t\tchildren: [\n\t\t\t{ id: 'audit-home', label: 'Home', icon: 'ph ph-house' },\n\t\t\t{ id: 'audit-prestadores', label: 'Prestadores auditados', icon: 'ph ph-airplay' },\n\t\t],\n\t},\n\t{\n\t\tid: 'dev-portal',\n\t\tlabel: 'Dev Portal',\n\t\ticon: 'ph ph-code-simple',\n\t\tchildren: [\n\t\t\t{ id: 'dev-devsecops', label: 'DevSecOps', icon: 'ph ph-chart-line' },\n\t\t\t{ id: 'dev-tech-radar', label: 'Tech Radar', icon: 'ph ph-target' },\n\t\t\t{ id: 'dev-portal-eda', label: 'Portal EDA', icon: 'ph ph-' },\n\t\t],\n\t},\n\t{\n\t\tid: 'sula-os',\n\t\tlabel: 'Sula OS',\n\t\ticon: 'ph ph-browsers',\n\t\tchildren: [\n\t\t\t{ id: 'os-dashboard', label: 'Dashboard', icon: 'ph ph-gauge' },\n\t\t\t{ id: 'os-canvas', label: 'Canvas', icon: 'ph ph-frame-corners' },\n\t\t],\n\t},\n\t{\n\t\tid: 'tech-portal',\n\t\tlabel: 'Tech Portal',\n\t\ticon: 'ph ph-address-book',\n\t\tchildren: [\n\t\t\t{ id: 'tech-home', label: 'Home', icon: 'ph ph-users-four' },\n\t\t\t{ id: 'tech-busca', label: 'Busca', icon: 'ph ph-user-circle-gear' },\n\t\t\t{ id: 'tech-perfil', label: 'Meu perfil', icon: 'ph ph-user-circle' },\n\t\t\t{\n\t\t\t\tid: 'tech-cadastros',\n\t\t\t\tlabel: 'Cadastros',\n\t\t\t\ticon: 'ph ph-table',\n\t\t\t\tchildren: [\n\t\t\t\t\t{ id: 'tech-empresas', label: 'Empresas terceiras', icon: 'ph ph-' },\n\t\t\t\t\t{ id: 'tech-tribos', label: 'Tribos', icon: 'ph ph-' },\n\t\t\t\t\t{ id: 'tech-capitulos', label: 'Capítulos/Jornadas', icon: 'ph ph-' },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: 'configuracoes',\n\t\tlabel: 'Configurações',\n\t\ticon: 'ph ph-gear',\n\t\tchildren: [\n\t\t\t{ id: 'conf-menus', label: 'Menus', icon: 'ph ph-layout' },\n\t\t\t{ id: 'conf-usuarios', label: 'Usuários', icon: 'ph ph-users' },\n\t\t\t{ id: 'conf-tenant', label: 'Tenant', icon: 'ph ph-building' },\n\t\t\t{ id: 'conf-chaves', label: 'Chaves de APIs', icon: 'ph ph-key' },\n\t\t\t{\n\t\t\t\tid: 'conf-permissoes',\n\t\t\t\tlabel: 'Permissões',\n\t\t\t\ticon: 'ph ph-lock',\n\t\t\t\tchildren: [\n\t\t\t\t\t{ id: 'perm-papeis', label: 'Papéis', icon: 'ph ph-' },\n\t\t\t\t\t{ id: 'perm-recursos', label: 'Recursos', icon: 'ph ph-' },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst sampleUser: SulaWorkbenchMenuUser = { name: 'Ana Ribeiro', email: 'ana.ribeiro@sula.com.br' };\n\nconst hubProfileItems: SulaProfileMenuItem[] = [\n\t{ id: 'account', label: 'Minha conta', icon: 'ph ph-user-circle' },\n\t{ id: 'dark-mode', label: 'Modo escuro', icon: 'ph ph-moon', hasSwitch: true, active: false },\n\t{ id: 'divider-logout', divider: true },\n\t{ id: 'logout', label: 'Sair', icon: 'ph ph-sign-out' },\n];\n\nconst cloneItems = (items: SulaWorkbenchMenuItem[]): SulaWorkbenchMenuItem[] =>\n\titems.map(item => ({ ...item, children: item.children ? cloneItems(item.children) : undefined }));\n\nconst createStoryShell = () => {\n\tconst container = document.createElement('div');\n\tcontainer.style.margin = '20px';\n\tcontainer.style.padding = '24px';\n\tcontainer.style.background = 'linear-gradient(180deg, #f8f9f9 0%, #eef2f2 100%)';\n\tcontainer.style.borderRadius = '24px';\n\tcontainer.style.boxSizing = 'border-box';\n\n\tconst shell = document.createElement('div');\n\tshell.style.display = 'flex';\n\tshell.style.width = '960px';\n\tshell.style.maxWidth = '100%';\n\tshell.style.height = '720px';\n\tshell.style.borderRadius = '24px';\n\tshell.style.background = '#ffffff';\n\tshell.style.border = '1px solid #dfe5e5';\n\tshell.style.boxShadow = '0 20px 48px rgba(15, 23, 42, 0.08)';\n\n\tconst contentPanel = document.createElement('div');\n\tcontentPanel.style.flex = '1';\n\tcontentPanel.style.padding = '40px';\n\tcontentPanel.style.borderRadius = '0 24px 24px 0';\n\tcontentPanel.style.color = '#6c6e6e';\n\tcontentPanel.style.fontSize = '14px';\n\tcontentPanel.textContent = 'Área de conteúdo. Até 3 níveis o menu expande em linha; se algum item chega ao 4º nível, toda a navegação vira drill-down com breadcrumb.';\n\n\tshell.appendChild(contentPanel);\n\tcontainer.appendChild(shell);\n\treturn { container, shell };\n};\n\nexport default {\n\ttitle: 'Components/sula-workbench-menu',\n\ttags: ['autodocs'],\n\targTypes: {\n\t\tmenuTitle: { control: 'text', defaultValue: 'Sula Hub', description: 'Título do menu.' },\n\t\timage: { control: 'text', description: 'Imagem da marca no cabeçalho da raiz (URL ou data URI).' },\n\t\tdensity: {\n\t\t\tcontrol: { type: 'select' },\n\t\t\toptions: Object.values(SulaMenuDensity),\n\t\t\tdescription: 'Densidade visual dos itens.',\n\t\t},\n\t\tlabelOverflow: {\n\t\t\tcontrol: { type: 'select' },\n\t\t\toptions: Object.values(SulaMenuLabelOverflow),\n\t\t\tdescription: 'Quebra ou ellipsis dos labels.',\n\t\t},\n\t\tdrillPath: {\n\t\t\tcontrol: 'object',\n\t\t\tdescription: 'Controla a navegação pelo host: ids da raiz até o item cujos filhos aparecem. No drill-down, array vazio volta à raiz; no modo em linha, os itens do caminho são expandidos. undefined deixa só os cliques navegarem.',\n\t\t},\n\t\titems: { control: 'object', description: 'Árvore de itens, recursiva.' },\n\t\titemSelected: { action: 'itemSelected', description: 'Emitido ao selecionar um item folha.' },\n\t\titemClicked: { action: 'itemClicked', description: 'Emitido a cada clique em um item.' },\n\t\tlevelChanged: { action: 'levelChanged', description: 'Emitido ao entrar ou voltar de nível no drill-down.' },\n\t\tuser: { control: 'object', description: 'Usuário logado exibido no rodapé: name (obrigatório), email e photo (URL ou data URI). Sem photo, mostra as iniciais.' },\n\t\tprofileClicked: { action: 'profileClicked', description: 'Emitido ao clicar na área do usuário. Abre o menu de perfil, a menos que o evento seja cancelado com preventDefault().' },\n\t\tprofileItems: { control: 'object', description: 'Opções do menu de perfil: id, label, icon, hasSwitch + active, divider, disabled, hidden.' },\n\t\tprofileItemClicked: { action: 'profileItemClicked', description: 'Emitido ao clicar em uma opção sem switch do menu de perfil. O popover fecha.' },\n\t\tprofileSwitchChanged: { action: 'profileSwitchChanged', description: 'Emitido ao alternar o switch de uma opção, com { item, active }. O popover continua aberto.' },\n\t\tmenuToggled: { action: 'menuToggled', description: 'Emitido ao colapsar ou expandir o menu.' },\n\t},\n\tparameters: {\n\t\tdocs: {\n\t\t\tdescription: {\n\t\t\t\tcomponent:\n\t\t\t\t\t'Menu de navegação com dois modos, escolhidos pela profundidade dos items: com até 3 níveis, tudo expande em linha como no sula-menu; se algum item visível chega ao 4º nível, toda a navegação vira drill-down, e itens com filhos abrem um painel de um nível com breadcrumb e botão de voltar.',\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst Template: any = (args: StoryArgs) => {\n\tconst { container, shell } = createStoryShell();\n\tconst el = document.createElement('sula-workbench-menu');\n\n\tel.menuTitle = args.menuTitle;\n\tel.image = args.image ?? '';\n\tel.density = args.density;\n\tel.labelOverflow = args.labelOverflow;\n\tel.drillPath = args.drillPath;\n\tel.items = cloneItems(args.items);\n\tel.user = args.user;\n\tel.profileItems = (args.profileItems ?? hubProfileItems).map(item => ({ ...item }));\n\n\tel.addEventListener('itemSelected', args.itemSelected);\n\tel.addEventListener('itemClicked', args.itemClicked);\n\tel.addEventListener('levelChanged', args.levelChanged);\n\tel.addEventListener('menuToggled', args.menuToggled);\n\tel.addEventListener('profileClicked', args.profileClicked);\n\tel.addEventListener('profileItemClicked', args.profileItemClicked);\n\tel.addEventListener('profileSwitchChanged', args.profileSwitchChanged);\n\n\tshell.prepend(el);\n\treturn container;\n};\n\nexport const Default = Template.bind({});\nDefault.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: workbenchItems,\n\tuser: sampleUser,\n};\nDefault.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Exemplo com 6 níveis reais: como passa de 3 níveis, toda a navegação é drill-down, a partir da raiz. \"Apólices\" e \"Veículos\" usam um SVG no lugar do ícone de fonte (propriedade image do item). O rodapé mostra o usuário logado; clicar nele emite profileClicked.',\n\t\t},\n\t},\n};\n\nexport const WithoutPhotoOrEmail = Template.bind({});\nWithoutPhotoOrEmail.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: workbenchItems,\n\tuser: { name: 'Carlos Mendes' },\n};\nWithoutPhotoOrEmail.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Usuário sem foto nem e-mail: o avatar mostra as iniciais e o nome aparece sozinho.',\n\t\t},\n\t},\n};\n\nexport const WithProfileMenu = (args: StoryArgs) => {\n\tconst container = Template(args);\n\tconst menu = container.querySelector('sula-workbench-menu');\n\t// Example of the host application applying the theme chosen in the profile popover.\n\tmenu.addEventListener('profileSwitchChanged', (event: CustomEvent<SulaProfileMenuSwitchChange>) => {\n\t\tif (event.detail.item.id === 'dark-mode') document.documentElement.classList.toggle('dark', event.detail.active);\n\t});\n\treturn container;\n};\nWithProfileMenu.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: currentMenuItems,\n\tuser: { name: 'Lucas Reichert', email: 'lucas.reichert@sulamerica.com.br' },\n\tprofileItems: hubProfileItems,\n};\nWithProfileMenu.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Clique no usuário do rodapé para abrir o menu de perfil, que substitui o header da aplicação. Com o menu expandido, o popover abre acima do usuário, na largura do menu; recolhido, abre ao lado do rail. Fecha com clique fora, Esc ou novo clique no usuário. As opções vêm de profileItems (label, icon, hasSwitch, divider...): cliques emitem profileItemClicked e switches emitem profileSwitchChanged. Aqui a story aplica a classe .dark no documentElement quando o switch dark-mode muda. Para não abrir o popover e tratar o clique por conta própria, chame preventDefault() em profileClicked. Conteúdo extra pode ser passado com slot=\"profile-content\".',\n\t\t},\n\t},\n};\n\nexport const CustomProfileItems = Template.bind({});\nCustomProfileItems.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: workbenchItems,\n\tuser: sampleUser,\n\tprofileItems: [\n\t\t{ id: 'profile', label: 'Meu perfil', icon: 'ph ph-identification-card' },\n\t\t{ id: 'notifications', label: 'Notificações', icon: 'ph ph-bell', hasSwitch: true, active: true },\n\t\t{ id: 'compact', label: 'Modo compacto', icon: 'ph ph-rows', hasSwitch: true, active: false },\n\t\t{ id: 'divider-help', divider: true },\n\t\t{ id: 'help', label: 'Central de ajuda', icon: 'ph ph-question' },\n\t\t{ id: 'billing', label: 'Faturamento', icon: 'ph ph-credit-card', disabled: true },\n\t\t{ id: 'divider-logout', divider: true },\n\t\t{ id: 'logout', label: 'Sair', icon: 'ph ph-sign-out' },\n\t],\n};\nCustomProfileItems.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Outra aplicação com opções próprias: dois switches, item desabilitado e dois divisores. Basta trocar profileItems.',\n\t\t},\n\t},\n};\n\nexport const ControlledDrillPath = (args: StoryArgs) => {\n\tconst container = Template(args);\n\tconst menu = container.querySelector('sula-workbench-menu');\n\tconst paths: Record<string, string[]> = {\n\t\tTree: [],\n\t\tSinistros: ['claims'],\n\t\t'Cobertura': ['claims', 'claims-auto', 'claims-auto-coverage'],\n\t\t'Terceiros': ['claims', 'claims-auto', 'claims-auto-coverage', 'claims-auto-third'],\n\t};\n\n\tconst toolbar = document.createElement('div');\n\ttoolbar.style.cssText = 'display:flex;gap:8px;margin:20px 20px 0';\n\tObject.entries(paths).forEach(([label, path]) => {\n\t\tconst button = document.createElement('sula-button');\n\t\tbutton.text = label;\n\t\tbutton.addEventListener('click', () => (menu.drillPath = path));\n\t\ttoolbar.appendChild(button);\n\t});\n\n\tconst wrapper = document.createElement('div');\n\twrapper.append(toolbar, container);\n\treturn wrapper;\n};\nControlledDrillPath.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: workbenchItems,\n\tuser: sampleUser,\n};\nControlledDrillPath.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'O host controla o drill-down pela propriedade drillPath: os botões acima entram em Sinistros, em Cobertura, em Terceiros ou voltam para a raiz. Ids desconhecidos interrompem o caminho no último nível válido.',\n\t\t},\n\t},\n};\n\nexport const InlineOnly = Template.bind({});\nInlineOnly.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: currentMenuItems,\n\tuser: sampleUser,\n};\nInlineOnly.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Com no máximo 3 níveis, não há drill-down: o componente se comporta como o sula-menu, expandindo tudo em linha.',\n\t\t},\n\t},\n};\n\nexport const InlineWithExpandedPath = Template.bind({});\nInlineWithExpandedPath.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: currentMenuItems,\n\tdrillPath: ['tech-portal', 'tech-cadastros'],\n\tuser: sampleUser,\n};\nInlineWithExpandedPath.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Sem drill-down, drillPath expande em linha os itens do caminho (Tech Portal e Cadastros) uma única vez; o usuário pode recolhê-los depois.',\n\t\t},\n\t},\n};\n\nexport const FourthLevelBreadcrumb = Template.bind({});\nFourthLevelBreadcrumb.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: workbenchItems,\n\tdrillPath: ['claims', 'claims-auto', 'claims-auto-coverage', 'claims-auto-third'],\n\tuser: sampleUser,\n};\nFourthLevelBreadcrumb.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Drill-down no quarto nível: duas faixas de camadas na borda esquerda, breadcrumb com o nome do menu, reticências (o dropdown lista os níveis ocultos) e os dois últimos ancestrais, e o título do nível atual.',\n\t\t},\n\t},\n};\n\nexport const WithBrandImage = Template.bind({});\nWithBrandImage.args = {\n\tmenuTitle: 'Sula Hub',\n\timage: BRAND_IMAGE,\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: currentMenuItems,\n\tuser: sampleUser,\n};\nWithBrandImage.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Imagem da marca ao lado do título no cabeçalho da raiz. No drill-down o cabeçalho segue o protótipo e não mostra a imagem.',\n\t\t},\n\t},\n};\n\nconst longLabelItems: SulaWorkbenchMenuItem[] = [\n\t{ id: 'inicio', label: 'Início', icon: 'ph ph-house' },\n\t{\n\t\tid: 'long-root',\n\t\tlabel: 'Plataforma de Gestão Integrada de Sinistros e Apólices',\n\t\ticon: 'ph ph-buildings',\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tid: 'long-contracts',\n\t\t\t\tlabel: 'Administração de Contratos Corporativos de Longa Duração',\n\t\t\t\ticon: 'ph ph-briefcase',\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'long-coverage',\n\t\t\t\t\t\tlabel: 'Coberturas Adicionais para Terceiros e Beneficiários',\n\t\t\t\t\t\ticon: 'ph ph-shield-check',\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'long-docs',\n\t\t\t\t\t\t\t\tlabel: 'Documentação Complementar Exigida pela Seguradora',\n\t\t\t\t\t\t\t\ticon: 'ph ph-folder-open',\n\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t{ id: 'long-address', label: 'Comprovante de residência atualizado nos últimos noventa dias', icon: 'ph ph-map-pin' },\n\t\t\t\t\t\t\t\t\t{ id: 'long-short', label: 'Curto', icon: 'ph ph-file' },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst longLabelPath = ['long-root', 'long-contracts', 'long-coverage', 'long-docs'];\n\nexport const LongLabels = Template.bind({});\nLongLabels.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: longLabelItems,\n\tdrillPath: longLabelPath,\n\tuser: { name: 'Maria Fernanda Albuquerque de Souza', email: 'maria.fernanda.albuquerque.de.souza@sulamerica.com.br' },\n};\nLongLabels.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory:\n\t\t\t\t'Textos longos no drill-down: o título do nível quebra em até duas linhas, os itens quebram em até duas linhas (a seta fica na primeira), o breadcrumb encolhe com reticências e o rodapé corta nome e e-mail.',\n\t\t},\n\t},\n};\n\nexport const LongLabelsTruncate = Template.bind({});\nLongLabelsTruncate.args = {\n\t...LongLabels.args,\n\tlabelOverflow: SulaMenuLabelOverflow.Truncate,\n};\nLongLabelsTruncate.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Os mesmos textos longos com labelOverflow=\"truncate\": os itens ficam em uma linha, com reticências.',\n\t\t},\n\t},\n};\n\nexport const CompactDensity = Template.bind({});\nCompactDensity.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Compact,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: currentMenuItems,\n\tuser: sampleUser,\n};\nCompactDensity.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Densidade compacta: itens da raiz com menos espaço vertical.',\n\t\t},\n\t},\n};\n\nexport const ComfortableDensity = Template.bind({});\nComfortableDensity.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Comfortable,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: currentMenuItems,\n\tuser: sampleUser,\n};\nComfortableDensity.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Densidade confortável: itens da raiz maiores e com mais espaço.',\n\t\t},\n\t},\n};\n\nexport const HiddenAndDisabledItems = Template.bind({});\nHiddenAndDisabledItems.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: [\n\t\t{ id: 'home', label: 'Início', icon: 'ph ph-house', selected: true },\n\t\t{ id: 'reports', label: 'Relatórios', icon: 'ph ph-chart-bar', disabled: true },\n\t\t{ id: 'secret', label: 'Oculto', icon: 'ph ph-eye-slash', hidden: true },\n\t\t{\n\t\t\tid: 'admin',\n\t\t\tlabel: 'Administração',\n\t\t\ticon: 'ph ph-gear',\n\t\t\tchildren: [\n\t\t\t\t{ id: 'admin-users', label: 'Usuários', icon: 'ph ph-users' },\n\t\t\t\t{ id: 'admin-audit', label: 'Auditoria', icon: 'ph ph-clipboard-text', disabled: true },\n\t\t\t\t{ id: 'admin-hidden', label: 'Oculto', icon: 'ph ph-eye-slash', hidden: true },\n\t\t\t],\n\t\t},\n\t],\n\tuser: sampleUser,\n};\nHiddenAndDisabledItems.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Itens hidden não aparecem (nem contam para a profundidade) e itens disabled ficam esmaecidos e não respondem a cliques.',\n\t\t},\n\t},\n};\n\nexport const WithoutUser = Template.bind({});\nWithoutUser.args = {\n\tmenuTitle: 'Sula Hub',\n\tdensity: SulaMenuDensity.Default,\n\tlabelOverflow: SulaMenuLabelOverflow.Wrap,\n\titems: workbenchItems,\n\tuser: undefined,\n};\nWithoutUser.parameters = {\n\tdocs: {\n\t\tdescription: {\n\t\t\tstory: 'Sem a propriedade user o rodapé e o menu de perfil não são renderizados.',\n\t\t},\n\t},\n};\n\n"]}