Current section

Files

Jump to
moon lib moon_web pages design tabs_page.ex
Raw

lib/moon_web/pages/design/tabs_page.ex

defmodule MoonWeb.Pages.Design.TabsPage do
@moduledoc false
require Logger
use MoonWeb, :live_view
alias MoonWeb.Components.Anatomy
alias MoonWeb.Components.Page
alias MoonWeb.Components.ComponentPageDescription
alias MoonWeb.Components.PropsTable
alias MoonWeb.Components.ExamplesList
alias MoonWeb.Examples.Design.TabsExample
alias Moon.Design.Tabs
data(breadcrumbs, :any,
default: [
%{
to: "/components",
name: "Components"
},
%{
to: "/components/v2/tabs",
name: "Tabs"
}
]
)
data(tab_id, :integer, default: 1)
def render(assigns) do
~F"""
<Page {=@theme_name} {=@active_page} {=@breadcrumbs} {=@direction}>
<ComponentPageDescription
title="Tabs"
is_aria_support
is_rtl_support
image="facing/components/tabs.png"
>
<p>Tabs to allow users to navigate easily between views within the same context.</p>
<p>
Each tab should contain content that is distinct from other tabs in a
set for example, tabs can present different sections of news,
different genres of music, or different themes of documents.
</p>
</ComponentPageDescription>
<Tabs id="anatomy-tabs" class="justify-between gap-6">
<h2 class="text-moon-24 font-medium">Anatomy</h2>
<Tabs.List tab_titles={["Long syntax", "Short syntax"]} class="w-auto" />
<Tabs.Panels>
<Tabs.Panel><Anatomy title={false}>{component_anatomy(:long)}</Anatomy></Tabs.Panel>
<Tabs.Panel><Anatomy title={false}>{component_anatomy(:short)}</Anatomy></Tabs.Panel>
</Tabs.Panels>
</Tabs>
<ExamplesList examples={[
TabsExample.Default,
TabsExample.WithPills,
TabsExample.WithSegments,
TabsExample.Sizes,
TabsExample.CustomSelected,
TabsExample.Wizard
]} />
<PropsTable module={Moon.Design.Tabs} />
<PropsTable module={Moon.Design.Tabs.List} />
<PropsTable module={Moon.Design.Tabs.Link} />
<PropsTable module={Moon.Design.Tabs.Pill} />
<PropsTable module={Moon.Design.Tabs.Segment} />
<PropsTable module={Moon.Parts.Wizard.Step} />
<PropsTable module={Moon.Design.Tabs.Tab} />
<PropsTable module={Moon.Design.Tabs.Panels} />
<PropsTable module={Moon.Design.Tabs.Panel} />
</Page>
"""
end
def component_anatomy(:long) do
"""
<Tabs>
<Tabs.List>
<Tabs.Tab>...</Tabs.Tab>
<Tabs.Tab>...</Tabs.Tab>
<Tabs.Tab>...</Tabs.Tab>
</Tabs.List>
<Tabs.Panels>
<Tabs.Panel>...</Tabs.Panel>
<Tabs.Panel>...</Tabs.Panel>
<Tabs.Panel>...</Tabs.Panel>
</Tabs.Panels>
</Tabs>
"""
end
def component_anatomy(:short) do
"""
<Tabs>
<Tabs.List tab_titles={...}/>
<Tabs.Panels>
<Tabs.Panel>...</Tabs.Panel>
<Tabs.Panel>...</Tabs.Panel>
<Tabs.Panel>...</Tabs.Panel>
</Tabs.Panels>
</Tabs>
"""
end
end