2828 import '@vaadin/grid/all-imports' ;
2929 import { html } from 'lit' ;
3030 import { Notification } from '@vaadin/notification' ;
31+ import { Button } from '@vaadin/button' ;
3132
3233 const notification = Notification . show (
3334 html `< vaadin-card theme ="horizontal footer-end no-frame ">
34- < vaadin-icon icon ="uui :chat " slot ="media "> </ vaadin-icon >
35+ < vaadin-icon icon ="lucide :chat " slot ="media "> </ vaadin-icon >
3536 < div slot ="title "> New Message from Olivia</ div >
3637 < div > The AI chat UI is evolving with the integration of components…</ div >
3738 < vaadin-button slot ="footer "> Show</ vaadin-button >
8687 }
8788 return parts ;
8889 } ;
90+
91+ customElements . define ( 'mdl-back-button' , class extends Button {
92+ connectedCallback ( ) {
93+ super . connectedCallback ( ) ;
94+ this . setAttribute ( 'theme' , 'tertiary' ) ;
95+ const icon = document . createElement ( 'vaadin-icon' ) ;
96+ icon . setAttribute ( 'icon' , 'lucide:arrow-back' ) ;
97+ this . append ( icon ) ;
98+ this . addEventListener ( 'click' , ( ) => {
99+ // TODO how to find the correct layout?
100+ this . closest ( 'vaadin-master-detail-layout' ) . parentNode . closest ( 'vaadin-master-detail-layout' ) ?. _setDetail ( null ) ;
101+ } ) ;
102+ }
103+ } ) ;
104+
105+ // Fake navigation: prevent actual navigation, update 'current' item manually
106+ document . querySelectorAll ( 'vaadin-side-nav' ) . forEach ( ( nav ) => nav . addEventListener ( 'click' , ( e ) => {
107+ const link = e . composedPath ( ) . find ( ( el ) => el . localName === 'a' ) ;
108+ if ( link ) {
109+ e . preventDefault ( ) ;
110+ if ( link . href ) {
111+ link . getRootNode ( ) . host . closest ( 'vaadin-side-nav' ) . querySelectorAll ( 'vaadin-side-nav-item' ) . forEach ( ( item ) => item . removeAttribute ( 'current' ) ) ;
112+ const navItem = e . composedPath ( ) . find ( ( el ) => el . localName === 'vaadin-side-nav-item' ) ;
113+ navItem . setAttribute ( 'current' , '' ) ;
114+ }
115+ }
116+ } ) ) ;
89117 </ script >
90118 </ head >
91119 < body >
97125 </ header >
98126 < vaadin-scroller slot ="drawer " theme ="overflow-indicators ">
99127 < vaadin-side-nav collapsible >
100- < span slot ="label "> Main menu </ span >
128+ < span slot ="label "> General </ span >
101129
102- < vaadin-side-nav-item path ="/dev/aura.html ">
103- Home
104- < span theme ="badge " slot ="suffix " aria-label ="(2 new items) "> 1</ span >
130+ < vaadin-side-nav-item path ="">
131+ < vaadin-icon icon ="lucide:chart-column " slot ="prefix "> </ vaadin-icon >
132+ Dashboard
133+ < span theme ="badge " slot ="suffix " aria-label ="(2 new items) "> 2</ span >
105134 </ vaadin-side-nav-item >
106135
107- < vaadin-side-nav-item path ="/dev " expanded >
108- Dev pages
109- < span theme ="badge " slot ="suffix " aria-label ="(2 new items) "> 99+</ span >
110-
111- < vaadin-side-nav-item path ="/dev/grid.html " slot ="children "> Grid</ vaadin-side-nav-item >
112- < vaadin-side-nav-item path ="/dev/select.html " slot ="children "> Select</ vaadin-side-nav-item >
113- < vaadin-side-nav-item path ="/dev/button.html " slot ="children "> Button</ vaadin-side-nav-item >
114-
115- < vaadin-side-nav-item slot ="children " expanded >
116- Layouts
117-
118- < vaadin-side-nav-item path ="/dev/app-layout.html " slot ="children "> App Layout </ vaadin-side-nav-item >
119- < vaadin-side-nav-item path ="/dev/form-layout.html " slot ="children "> Form Layout </ vaadin-side-nav-item >
120- < vaadin-side-nav-item path ="/dev/master-detail-layout.html " slot ="children ">
121- Master-Detail Layout
122- < span theme ="badge " slot ="suffix " aria-label ="(2 new items) "> 2</ span >
123- </ vaadin-side-nav-item >
124- < vaadin-side-nav-item path ="/dev/split-layout.html " slot ="children "> Split Layout </ vaadin-side-nav-item >
125- < vaadin-side-nav-item path ="/dev/horizontal-layout.html " slot ="children ">
126- Horizontal Layout
127- </ vaadin-side-nav-item >
128- < vaadin-side-nav-item path ="/dev/vertical-layout.html " slot ="children ">
129- Vertical Layout
130- </ vaadin-side-nav-item >
131- </ vaadin-side-nav-item >
136+ < vaadin-side-nav-item path ="projects ">
137+ < vaadin-icon icon ="lucide:layers " slot ="prefix "> </ vaadin-icon >
138+ Projects
139+ </ vaadin-side-nav-item >
132140
133- < vaadin-side-nav-item slot ="children " disabled data-disabled expanded >
134- Form Fields
141+ < vaadin-side-nav-item path ="documents ">
142+ < vaadin-icon icon ="lucide:file-text " slot ="prefix "> </ vaadin-icon >
143+ Documents
144+ </ vaadin-side-nav-item >
135145
136- < vaadin-side-nav-item path ="/dev/combo-box.html " slot ="children "> Combo Box </ vaadin-side-nav-item >
137- < vaadin-side-nav-item path ="/dev/date-picker.html " slot ="children "> Date Picker </ vaadin-side-nav-item >
138- < vaadin-side-nav-item path ="/dev/checkbox.html " slot ="children "> Checkbox </ vaadin-side-nav-item >
139- < vaadin-side-nav-item path ="/dev/text-field.html " slot ="children "> Text Field </ vaadin-side-nav-item >
140- </ vaadin-side-nav-item >
146+ < vaadin-side-nav-item path ="calendar ">
147+ < vaadin-icon icon ="lucide:calendar " slot ="prefix "> </ vaadin-icon >
148+ Calendar
149+ </ vaadin-side-nav-item >
150+ </ vaadin-side-nav >
151+
152+ < vaadin-side-nav collapsible >
153+ < span slot ="label "> Organization</ span >
154+
155+ < vaadin-side-nav-item path ="">
156+ < vaadin-icon icon ="lucide:chart-pie " slot ="prefix "> </ vaadin-icon >
157+ Reporting
141158 </ vaadin-side-nav-item >
142159
143- < vaadin-side-nav-item > Label only (no path) </ vaadin-side-nav-item >
160+ < vaadin-side-nav-item path ="projects ">
161+ < vaadin-icon icon ="lucide:list-todo " slot ="prefix "> </ vaadin-icon >
162+ Tasks
163+ </ vaadin-side-nav-item >
164+
165+ < vaadin-side-nav-item path ="documents ">
166+ < vaadin-icon icon ="lucide:users " slot ="prefix "> </ vaadin-icon >
167+ Users
168+ </ vaadin-side-nav-item >
144169 </ vaadin-side-nav >
145170 </ vaadin-scroller >
146171 < footer slot ="drawer ">
147172 < a href =""> Sign in</ a >
148173 </ footer >
149174
150- < vaadin-master-detail-layout theme master-min-size ="14em " master -size ="25 % " detail-min-size ="30em ">
175+ < vaadin-master-detail-layout theme master-min-size ="14em " detail -size ="75 % " detail-min-size ="20em ">
151176 < div class ="aura-view ">
152177 < header >
153178 < vaadin-drawer-toggle > </ vaadin-drawer-toggle >
154179 < h1 > Aura</ h1 >
155180 </ header >
156181 < vaadin-side-nav >
157- < vaadin-side-nav-item path ="/ ">
158- < vaadin-icon icon ="uui :home " slot ="prefix "> </ vaadin-icon >
182+ < vaadin-side-nav-item path ="">
183+ < vaadin-icon icon ="lucide :home " slot ="prefix "> </ vaadin-icon >
159184 < span > Home</ span >
160185 </ vaadin-side-nav-item >
161186 < vaadin-side-nav-item path ="/ ">
162- < vaadin-icon icon ="uui :chart-bar " slot ="prefix "> </ vaadin-icon >
187+ < vaadin-icon icon ="lucide :chart-column " slot ="prefix "> </ vaadin-icon >
163188 < span > Dashboard</ span >
164189 </ vaadin-side-nav-item >
165190 < vaadin-side-nav-item path ="/ ">
166- < vaadin-icon icon ="uui:layout-vertical " slot ="prefix "> </ vaadin-icon >
191+ < vaadin-icon icon ="lucide:folder " slot ="prefix "> </ vaadin-icon >
167192 < span > Projects</ span >
168193 </ vaadin-side-nav-item >
169194 < vaadin-side-nav-item path ="/ ">
170- < vaadin-icon icon ="uui :chart-pie " slot ="prefix "> </ vaadin-icon >
195+ < vaadin-icon icon ="lucide :chart-pie " slot ="prefix "> </ vaadin-icon >
171196 < span > Reporting</ span >
172197 </ vaadin-side-nav-item >
173198 < vaadin-side-nav-item path ="/ ">
174- < vaadin-icon icon ="uui:cog " slot ="prefix "> </ vaadin-icon >
199+ < vaadin-icon icon ="lucide:gear " slot ="prefix "> </ vaadin-icon >
175200 < span > Settings</ span >
176201 </ vaadin-side-nav-item > < vaadin-side-nav-item path ="/ ">
177- < vaadin-icon icon ="uui :chat " slot ="prefix "> </ vaadin-icon >
202+ < vaadin-icon icon ="lucide :chat " slot ="prefix "> </ vaadin-icon >
178203 < span > Support</ span >
179204 < span theme ="badge positive "> Online</ span >
180205 </ vaadin-side-nav-item >
@@ -184,6 +209,7 @@ <h1>Aura</h1>
184209 < vaadin-master-detail-layout slot ="detail " containment ="viewport " theme ="inset-drawer " force-overlay >
185210 < div class ="aura-view ">
186211 < header >
212+ < mdl-back-button > </ mdl-back-button >
187213 < h1 > Contacts</ h1 >
188214 </ header >
189215 < vaadin-grid multi-sort column-reordering-allowed theme ="no-border ">
0 commit comments