|
16 | 16 | } from '@lucide/svelte'; |
17 | 17 | import { page } from '$app/state'; |
18 | 18 | import { RoleType } from '$lib/api/internal/v1'; |
19 | | - import * as Sidebar from '$lib/components/ui/sidebar'; |
| 19 | + import { |
| 20 | + Content, |
| 21 | + Footer, |
| 22 | + Group, |
| 23 | + GroupContent, |
| 24 | + GroupLabel, |
| 25 | + Header, |
| 26 | + Menu, |
| 27 | + MenuButton, |
| 28 | + MenuItem, |
| 29 | + MenuSub, |
| 30 | + MenuSubButton, |
| 31 | + Root, |
| 32 | + useSidebar, |
| 33 | + } from '$lib/components/ui/sidebar'; |
20 | 34 | import { UserStore } from '$lib/stores/UserStore'; |
21 | 35 | import type { AnyComponent } from '$lib/types/AnyComponent'; |
22 | 36 | import { Collapsible } from 'bits-ui'; |
23 | 37 |
|
24 | 38 | let currentUser = $derived($UserStore.self); |
25 | 39 |
|
26 | | - let sidebarContext = Sidebar.useSidebar(); |
| 40 | + let sidebarContext = useSidebar(); |
27 | 41 | let path = $derived(page.url.pathname); |
28 | 42 |
|
29 | 43 | interface Entry { |
|
174 | 188 | </script> |
175 | 189 |
|
176 | 190 | {#snippet menuSubItemSection(subItem: Item)} |
177 | | - <Sidebar.MenuSubButton |
| 191 | + <MenuSubButton |
178 | 192 | class={subItem.class} |
179 | 193 | isActive={isPathMatch(path, subItem.href)} |
180 | 194 | href={subItem.href} |
181 | 195 | > |
182 | 196 | {subItem.title} |
183 | | - </Sidebar.MenuSubButton> |
| 197 | + </MenuSubButton> |
184 | 198 | {/snippet} |
185 | 199 |
|
186 | 200 | {#snippet menuSection(menu: Menu)} |
187 | | - <Sidebar.MenuItem> |
188 | | - <Sidebar.MenuButton class={menu.class} isActive={isPathMatch(path, menu.href)}> |
| 201 | + <MenuItem> |
| 202 | + <MenuButton class={menu.class} isActive={isPathMatch(path, menu.href)}> |
189 | 203 | {#snippet child({ props })} |
190 | 204 | <a href={menu.href} {...props}> |
191 | 205 | <menu.Icon /> |
|
195 | 209 | {#snippet tooltipContent()} |
196 | 210 | {menu.title} |
197 | 211 | {/snippet} |
198 | | - </Sidebar.MenuButton> |
| 212 | + </MenuButton> |
199 | 213 | <!-- |
200 | | - <Sidebar.MenuAction> |
201 | | - </Sidebar.MenuAction> |
| 214 | + <MenuAction> |
| 215 | + </MenuAction> |
202 | 216 | --> |
203 | | - </Sidebar.MenuItem> |
| 217 | + </MenuItem> |
204 | 218 | {#if menu.subItems} |
205 | | - <Sidebar.MenuSub> |
| 219 | + <MenuSub> |
206 | 220 | {#each menu.subItems as subItem (subItem.title)} |
207 | 221 | {@render menuSubItemSection(subItem)} |
208 | 222 | {/each} |
209 | | - </Sidebar.MenuSub> |
| 223 | + </MenuSub> |
210 | 224 | {/if} |
211 | 225 | {/snippet} |
212 | 226 |
|
213 | 227 | {#snippet groupContentSection(group: Group)} |
214 | | - <Sidebar.GroupContent> |
215 | | - <Sidebar.Menu> |
| 228 | + <GroupContent> |
| 229 | + <Menu> |
216 | 230 | {#each group.menus as menu (menu.title)} |
217 | 231 | {@render menuSection(menu)} |
218 | 232 | {/each} |
219 | | - </Sidebar.Menu> |
220 | | - </Sidebar.GroupContent> |
| 233 | + </Menu> |
| 234 | + </GroupContent> |
221 | 235 | {/snippet} |
222 | 236 |
|
223 | 237 | {#snippet groupsSection(groups: Group[])} |
224 | 238 | {#each groups as group (group.title)} |
225 | 239 | {#if group.collapsible === undefined} |
226 | | - <Sidebar.Group> |
227 | | - <Sidebar.GroupLabel>{group.title}</Sidebar.GroupLabel> |
| 240 | + <Group> |
| 241 | + <GroupLabel>{group.title}</GroupLabel> |
228 | 242 | {@render groupContentSection(group)} |
229 | | - </Sidebar.Group> |
| 243 | + </Group> |
230 | 244 | {:else} |
231 | 245 | <Collapsible.Root |
232 | 246 | open={group.collapsible.open || |
233 | 247 | (sidebarContext.state === 'collapsed' && !sidebarContext.isMobile)} |
234 | 248 | class="group/collapsible" |
235 | 249 | > |
236 | | - <Sidebar.Group> |
237 | | - <Sidebar.GroupLabel> |
| 250 | + <Group> |
| 251 | + <GroupLabel> |
238 | 252 | {#snippet child({ props })} |
239 | 253 | <Collapsible.Trigger {...props}> |
240 | 254 | {group.title} |
|
243 | 257 | /> |
244 | 258 | </Collapsible.Trigger> |
245 | 259 | {/snippet} |
246 | | - </Sidebar.GroupLabel> |
| 260 | + </GroupLabel> |
247 | 261 | <Collapsible.Content> |
248 | 262 | {@render groupContentSection(group)} |
249 | 263 | </Collapsible.Content> |
250 | | - </Sidebar.Group> |
| 264 | + </Group> |
251 | 265 | </Collapsible.Root> |
252 | 266 | {/if} |
253 | 267 | {/each} |
254 | 268 | {/snippet} |
255 | 269 | <!-- group-data-[collapsible=icon]:opacity-0 --> |
256 | | -<Sidebar.Root collapsible="icon"> |
257 | | - <Sidebar.Header> |
| 270 | +<Root collapsible="icon"> |
| 271 | + <Header> |
258 | 272 | <a href={currentUser ? '/home' : '/'}> |
259 | 273 | <span class="pointer-events-none flex"> |
260 | 274 | <img class="ml-[0.667px] h-7.5" src="/IconSpinning.svg" alt="OpenShock Logo" /> |
|
267 | 281 | </span> |
268 | 282 | </span> |
269 | 283 | </a> |
270 | | - </Sidebar.Header> |
271 | | - <Sidebar.Content> |
| 284 | + </Header> |
| 285 | + <Content> |
272 | 286 | {@render groupsSection(headerGroups)} |
273 | 287 | <div class="grow-1"></div> |
274 | 288 | {@render groupsSection(footerGroups)} |
275 | | - </Sidebar.Content> |
276 | | - <Sidebar.Footer></Sidebar.Footer> |
277 | | -</Sidebar.Root> |
| 289 | + </Content> |
| 290 | + <Footer></Footer> |
| 291 | +</Root> |
0 commit comments