2025-12-08 16:16:25 +00:00
import { html } from '@design.estate/dees-element' ;
import type * as interfaces from '../../interfaces/index.js' ;
export const demoFunc = ( ) = > html `
< style >
. demo - secondarymenu - container {
display : flex ;
height : 100 % ;
background : # 1 a1a1a ;
border - radius : 8px ;
}
. demo - secondarymenu - container . spacer {
flex : 1 ;
background : # 0 f0f0f ;
2026-01-03 01:24:36 +00:00
padding : 20px ;
color : # a3a3a3 ;
font - family : 'Geist Sans' , sans - serif ;
}
. demo - secondarymenu - container . spacer h3 {
color : # fafafa ;
margin - top : 0 ;
}
. demo - secondarymenu - container . spacer code {
background : # 27272 a ;
padding : 2px 6 px ;
border - radius : 4px ;
font - size : 12px ;
}
. demo - secondarymenu - container . spacer ul {
line - height : 1.8 ;
2025-12-08 16:16:25 +00:00
}
< / style >
< div class = "demo-secondarymenu-container" >
< dees - appui - secondarymenu
. heading = $ { 'Projects' }
. groups = $ { [
2026-01-03 01:24:36 +00:00
// Group 1: Tab items (default behavior)
2025-12-08 16:16:25 +00:00
{
2026-01-03 01:24:36 +00:00
name : 'Navigation' ,
iconName : 'lucide:compass' ,
2025-12-08 16:16:25 +00:00
items : [
2026-01-03 01:24:36 +00:00
{ key : 'Dashboard' , iconName : 'lucide:layoutDashboard' , action : ( ) = > console . log ( 'Dashboard clicked' ) , badge : 3 , badgeVariant : 'warning' } ,
{ key : 'Projects' , iconName : 'lucide:folder' , action : ( ) = > console . log ( 'Projects clicked' ) , badge : 'new' , badgeVariant : 'success' } ,
{ key : 'Analytics' , iconName : 'lucide:barChart2' , action : ( ) = > console . log ( 'Analytics clicked' ) } ,
] as interfaces . ISecondaryMenuItemTab [ ]
2025-12-08 16:16:25 +00:00
} ,
2026-01-03 01:24:36 +00:00
// Group 2: Actions
2025-12-08 16:16:25 +00:00
{
2026-01-03 01:24:36 +00:00
name : 'Actions' ,
iconName : 'lucide:zap' ,
2025-12-08 16:16:25 +00:00
items : [
2026-01-03 01:24:36 +00:00
{ type : 'action' , key : 'Create New' , iconName : 'lucide:plus' , action : ( ) = > alert ( 'Create New clicked!' ) } ,
{ type : 'action' , key : 'Import Data' , iconName : 'lucide:upload' , action : ( ) = > alert ( 'Import Data clicked!' ) } ,
{ type : 'divider' } ,
{ type : 'action' , key : 'Delete All' , iconName : 'lucide:trash2' , variant : 'danger' , confirmMessage : 'Are you sure you want to delete all items?' , action : ( ) = > alert ( 'Deleted!' ) } ,
] as interfaces . ISecondaryMenuItem [ ]
2025-12-08 16:16:25 +00:00
} ,
2026-01-03 01:24:36 +00:00
// Group 3: Filters
2025-12-08 16:16:25 +00:00
{
2026-01-03 01:24:36 +00:00
name : 'Filters' ,
iconName : 'lucide:filter' ,
items : [
{ type : 'header' , label : 'Status' } ,
{ type : 'filter' , key : 'Show Active' , iconName : 'lucide:checkCircle' , active : true , onToggle : ( active ) = > console . log ( 'Show Active:' , active ) } ,
{ type : 'filter' , key : 'Show Archived' , iconName : 'lucide:archive' , active : false , onToggle : ( active ) = > console . log ( 'Show Archived:' , active ) } ,
{ type : 'divider' } ,
{ type : 'multiFilter' , key : 'Categories' , iconName : 'lucide:tag' , collapsed : false , options : [
{ key : 'frontend' , label : 'Frontend' , checked : true , iconName : 'lucide:monitor' } ,
{ key : 'backend' , label : 'Backend' , checked : true , iconName : 'lucide:server' } ,
{ key : 'devops' , label : 'DevOps' , checked : false , iconName : 'lucide:cloud' } ,
{ key : 'design' , label : 'Design' , checked : false , iconName : 'lucide:palette' } ,
] , onChange : ( keys ) = > console . log ( 'Selected categories:' , keys ) } ,
] as interfaces . ISecondaryMenuItem [ ]
} ,
// Group 4: Links and misc
{
name : 'Resources' ,
iconName : 'lucide:bookOpen' ,
collapsed : true ,
2025-12-08 16:16:25 +00:00
items : [
2026-01-03 01:24:36 +00:00
{ type : 'header' , label : 'Documentation' } ,
{ type : 'link' , key : 'API Reference' , iconName : 'lucide:fileText' , href : 'https://api.example.com/docs' } ,
{ type : 'link' , key : 'User Guide' , iconName : 'lucide:book' , href : 'https://docs.example.com/guide' } ,
{ type : 'divider' } ,
{ type : 'header' , label : 'Support' } ,
{ type : 'link' , key : 'Help Center' , iconName : 'lucide:helpCircle' , href : '/help' , external : false } ,
{ type : 'link' , key : 'GitHub Issues' , iconName : 'lucide:github' , href : 'https://github.com/example/issues' } ,
] as interfaces . ISecondaryMenuItem [ ]
2025-12-08 16:16:25 +00:00
}
2026-01-03 01:24:36 +00:00
] as interfaces . ISecondaryMenuGroup [ ] }
@item - select = $ { ( e : CustomEvent ) = > console . log ( 'Tab selected:' , e . detail ) }
@action - click = $ { ( e : CustomEvent ) = > console . log ( 'Action clicked:' , e . detail ) }
@filter - toggle = $ { ( e : CustomEvent ) = > console . log ( 'Filter toggled:' , e . detail ) }
@multifilter - change = $ { ( e : CustomEvent ) = > console . log ( 'Multi-filter changed:' , e . detail ) }
@link - click = $ { ( e : CustomEvent ) = > console . log ( 'Link clicked:' , e . detail ) }
2025-12-08 16:16:25 +00:00
> < / d e e s - a p p u i - s e c o n d a r y m e n u >
2026-01-03 01:24:36 +00:00
< div class = "spacer" >
< h3 > Secondary Menu Demo < / h3 >
< p > This demo showcases all 8 item types : < / p >
< ul >
< li > < code > tab < / code > - Selectable items ( Navigation group ) < / li >
< li > < code > action < / code > - Blue actions ( Actions group ) < / li >
< li > < code > action < / code > with < code > variant : 'danger' < / code > - Red danger action < / li >
< li > < code > filter < / code > - Checkbox toggles ( Filters group ) < / li >
< li > < code > multiFilter < / code > - Collapsible multi - select ( Categories ) < / li >
< li > < code > divider < / code > - Visual separators < / li >
< li > < code > header < / code > - Section labels < / li >
< li > < code > link < / code > - External / internal links ( Resources group ) < / li >
< / ul >
< p > Try the collapse toggle on the left edge ! < / p >
< / div >
2025-12-08 16:16:25 +00:00
< / div >
` ;