Current section

Files

Jump to
moon lib moon_web pages components button_page.ex
Raw

lib/moon_web/pages/components/button_page.ex

defmodule MoonWeb.Pages.Components.ButtonPage do
@moduledoc false
use MoonWeb, :live_view
alias Moon.Components.Button
alias MoonWeb.Components.ExampleAndCode
alias MoonWeb.Components.Page
alias MoonWeb.Components.ComponentPageDescription
alias MoonWeb.Components.PropsTable
alias MoonWeb.Components.Facing.DeprecationWarning
data(breadcrumbs, :any,
default: [
%{
to: "#",
name: "Components v1"
},
%{
to: "/components/button",
name: "Button"
}
]
)
data(props_info_array, :list,
default: [
%{
:name => ~c"animation",
:type => ~c"progress | success | error | pulse",
:required => ~c"No",
:default => ~c"-",
:description => ~c"Animation of button"
},
%{
:name => ~c"disabled",
:type => ~c"boolean",
:required => ~c"No",
:default => ~c"false",
:description => ~c"Disabled Button"
},
%{
:name => ~c"full_width",
:type => ~c"boolean",
:required => ~c"No",
:default => ~c"false",
:description => ~c"Full width Button"
},
%{
:name => ~c"left_icon",
:type => ~c"string",
:required => ~c"No",
:default => ~c"-",
:description => ~c"Asset name for the left icon"
},
%{
:name => ~c"right_icon",
:type => ~c"string",
:required => ~c"No",
:default => ~c"-",
:description => ~c"Asset name for the right icon"
},
%{
:name => ~c"size",
:type => ~c"xs | sm | md | lg | xl",
:required => ~c"No",
:default => ~c"md",
:description => ~c"Size of button"
},
%{
:name => ~c"variant",
:type =>
~c"primary | secondary | tertiary | ghost | link (deprecated) | none (deprecated)",
:required => ~c"No",
:default => ~c"primary",
:description => ~c"Visual/Logical variant of button"
}
]
)
def handle_params(_params, uri, socket) do
{:noreply, assign(socket, uri: uri)}
end
def render(assigns) do
~F"""
<Page {=@theme_name} {=@active_page} {=@breadcrumbs} {=@direction}>
<ComponentPageDescription title="Button">
<DeprecationWarning
name="Button"
href={live_path(MoonWeb.Endpoint, MoonWeb.Pages.Design.Button.ButtonPage)}
/>
</ComponentPageDescription>
<ExampleAndCode title="Default" id="button0">
<:example>
<Button>Default</Button>
</:example>
<:code>{button_0_code()}</:code>
</ExampleAndCode>
<ExampleAndCode title="Variants" id="button1">
<:example>
<Button>Primary is default</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="tertiary">Tertiary</Button>
<Button variant="ghost">Ghost</Button>
</:example>
<:code>{button_1_code()}</:code>
</ExampleAndCode>
<ExampleAndCode title="Sizes" id="button2">
<:example>
<Button variant="primary" size="xs">xSmall</Button>
<Button variant="primary" size="sm">Small</Button>
<Button variant="primary" size="md">Medium (Default)</Button>
<Button variant="primary" size="lg">Large</Button>
<Button variant="primary" size="xl">xLarge</Button>
</:example>
<:code>{button_2_code()}</:code>
</ExampleAndCode>
<ExampleAndCode title="Icons" id="button3">
<:example>
<Button left_icon="arrows_left" variant="primary">Left Icon</Button>
<Button right_icon="arrows_right" variant="primary">Right Icon</Button>
<Button variant="primary" left_icon="arrows_left" size="sm">Left Icon</Button>
<Button variant="primary" right_icon="arrows_right" size="sm">Right Icon</Button>
<Button variant="primary" icon_only="generic_settings" size="lg" />
</:example>
<:code>{button_3_code()}</:code>
</ExampleAndCode>
<ExampleAndCode title="Full width" id="button4">
<:example>
<Button variant="primary" full_width="true">
Full Width
</Button>
</:example>
<:code>{button_4_code()}</:code>
</ExampleAndCode>
<ExampleAndCode title="Disabled" id="button5">
<:example>
<Button variant="primary" disabled="true">
Disabled
</Button>
</:example>
<:code>{button_5_code()}</:code>
</ExampleAndCode>
<ExampleAndCode title="Animation" id="button6">
<:example>
<Button animation="progress">Progress</Button>
<Button animation="success">Success</Button>
<Button animation="error">Error</Button>
<Button animation="pulse">Pulse</Button>
</:example>
<:code>{button_6_code()}</:code>
</ExampleAndCode>
<PropsTable title="Button props" data={@props_info_array} />
</Page>
"""
end
def button_0_code do
"""
<Button>Default</Button>
"""
end
def button_1_code do
"""
<Button>Primary (default)</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="tertiary">Tertiary</Button>
<Button variant="ghost">Ghost</Button>
"""
end
def button_2_code do
"""
<Button variant="primary" size="xs">xSmall</Button>
<Button variant="primary" size="sm">Small</Button>
<Button variant="primary" size="md">Medium (Default)</Button>
<Button variant="primary" size="lg">Large</Button>
<Button variant="primary" size="xl">xLarge</Button>
"""
end
def button_3_code do
"""
<Button left_icon="arrows_left" variant="primary">Left Icon</Button>
<Button right_icon="arrows_right" variant="primary">Right Icon</Button>
<Button variant="primary" left_icon="arrows_left" size="sm">Left Icon</Button>
<Button variant="primary" right_icon="arrows_right" size="sm">Right Icon</Button>
<Button variant="primary" icon_only="generic_settings" size="lg" />
"""
end
def button_4_code do
"""
<Button variant="primary" full_width="true">
Full Width
</Button>
"""
end
def button_5_code do
"""
<Button variant="primary" disabled="true">
Disabled
</Button>
"""
end
def button_6_code do
"""
<Button animation="progress">Progress</Button>
<Button animation="success">Success</Button>
<Button animation="error">Error</Button>
<Button animation="pulse">Pulse</Button>
"""
end
end