defmodule ExampleWeb.Layouts do
use ExampleWeb, :html
embed_templates "layouts/*"
# Single source of truth for main nav (sidebar + desktop). Layout has route helpers (~p).
def nav_groups do
[
%{
label: "Basics",
links: [
%{label: "Hello World", to: ~p"/hello-world"},
%{label: "Lodash", to: ~p"/lodash"},
%{label: "Struct Props", to: ~p"/live-struct"}
]
},
%{
label: "Interactive",
links: [
%{label: "Counter", to: ~p"/live-simple-counter"},
%{label: "Lights", to: ~p"/live-lights"},
%{label: "Sigil", to: ~p"/live-sigil"},
%{label: "Plus/Minus (Static)", to: ~p"/plus-minus-svelte"},
%{label: "Plus/Minus (Live)", to: ~p"/live-plus-minus"},
%{label: "Hybrid Counter", to: ~p"/live-plus-minus-hybrid"},
%{label: "Drag & Drop", to: ~p"/live-drag-drop"},
%{label: "Static + List", to: ~p"/live-static-color"}
]
},
%{
label: "Data",
links: [
%{label: "Log List", to: ~p"/live-log-list"},
%{label: "Breaking News", to: ~p"/live-breaking-news"},
%{label: "Chat", to: ~p"/live-chat"},
%{label: "Props Diff", to: ~p"/live-props-diff"},
%{label: "ID List Diff", to: ~p"/live-id-list-diff"}
]
},
%{
label: "Slots",
links: [
%{label: "Simple Slots", to: ~p"/live-slots-simple"},
%{label: "Dynamic Slots", to: ~p"/live-slots-dynamic"}
]
},
%{
label: "Advanced",
links: [
%{label: "Client Loading", to: ~p"/live-client-side-loading"},
%{label: "Rich Editor (@attach)", to: ~p"/live-editor"},
%{label: "Runed Utilities", to: ~p"/live-runed"},
%{label: "Svelte Stores", to: ~p"/live-stores"},
%{label: "SSR Demo", to: ~p"/live-ssr"}
]
},
%{
label: "Ecto",
links: [
%{label: "Notes (OTP)", to: ~p"/live-notes-otp"}
]
},
%{
label: "Composables",
links: [
%{label: "Form (useLiveForm)", to: ~p"/live-form"},
%{label: "Navigation (useLiveNavigation)", to: ~p"/live-navigation"},
%{label: "Composition (useLiveSvelte)", to: ~p"/live-composition"},
%{label: "File Upload (useLiveUpload)", to: ~p"/live-upload"},
%{label: "Event Reply (useEventReply)", to: ~p"/live-event-reply"}
]
}
]
end
def nav_sidebar_items(assigns) do
assigns = assign(assigns, :nav_groups, nav_groups())
~H"""
"""
end
def nav_desktop_dropdowns(assigns) do
assigns = assign(assigns, :nav_groups, nav_groups())
~H"""
"""
end
end