Skip to content
ongale / ui
COMPONENT LIBRARY
Foundations08Components19
  1. 01Button
  2. 02Link
  3. 03FormField
  4. 04Input
  5. 05In context
  6. 06Motion components
  7. 07Image picker
  8. 08Sidebar
  9. 09Data table
  10. 10Checkbox
  11. 11Inbox
  12. 12SQL & ERD

Small parts. One system.

Astro · Tailwind · Petite Vue

Ongale UI/Components
View in context
THE EVERYDAY ESSENTIALS Component set · 01

Components

Familiar controls, built on our foundations.
Clear hierarchy. Useful feedback. Native behavior.

Shopify-inspired patterns19 reusable componentsLucide + shared motion
01

Button

An action, with a clear hierarchy

Hierarchy

Primary, secondary, tertiary.

Critical tone

Destructive actions deserve clarity.

Size & icons

Compact to comfortable.

Async states

Default, loading, completed, fail.

Unavailable

You need edit permission.

Pill buttons & groups

Softer surfaces. Compact, without shrinking the hit area.

Everyday actions

Destructive action

With an icon action

Connected group

Compact · 11px / 28px

Rounded alternative

Compact action menu

8–14px comparison

Each sample keeps the same 32px control height. Font sizes scale with text zoom.

8px
Comparison
9px
Comparison
10px
Comparison
11px
Compact
12px
Default
13px
More emphasis
14px
Comparison
Examples only. Choose an enabled button to try its feedback.Workspace settings activated. This example does not change data.

Examples only. Choose an enabled button to try its feedback.

<Button variant="primary" icon="save">Save changes</Button> <Button variant="primary" tone="critical">Delete workspace</Button>

Primary for the main action. Secondary for supporting actions. Tertiary for quieter actions. Focus, press feedback, and the Lucide sprite are shared.

02

Link

A destination, clearly described

In context

Standard anchor behavior.

Manage your workspace settings from one place.

Neutral & critical

Color follows the meaning.

Field guidanceDeletion policy

External reference

Announce the new browsing context.

Shopify web components (opens in a new tab)

Examples navigate to their destination. The deletion-policy link points here and performs no destructive action.

<Link href="/settings">Workspace settings</Link> <Link href="https://example.com" target="_blank">Documentation</Link>
03

FormField

Label, help, and recovery

A clear name helps your team find the right workspace.

Use an address your team can access.

Enter a complete email address, like [email protected].

Native selection with a consistently placed caret.

Rounded options with icons and a checkmark for the current choice.

Search with a visually hidden label

The label remains available to screen readers.

<Input id="workspace-name" label="Workspace name" details="Visible to your team." required />

Input composes FormField automatically. Standalone FormField supports other controls through an explicit ID and description contract.

04

Input

Useful without enhancement

Text input · default size

Enter the subdomain between https:// and .example.com.

A decorative icon adds context.

Use the eye button to show or hide the password.

Read-only values remain selectable and copyable.

Your organization manages this value.

Native values, constraints, autocomplete, form submission, and input/change events are preserved. Prefixes and suffixes are decorative; describe their meaning in the label or help text.

05

In context

A small settings workflow

Workspace details

The essentials, in one place.

Local preview

The name your team sees across the workspace.

A contact address for your team.

Demo only. No changes are sent or stored.Correct the highlighted fields before saving.Unsaved changes. Ready to save.These values match the saved example. No data was sent or stored.Saving this example…The example request failed. Your values are kept. Try again or switch off simulated failure.Example saved. No data was sent or stored.Preview reset. No changes are sent or stored.

Demo only. No changes are sent or stored.

Interactive saving requires JavaScript. You can still edit and reset these fields.Interactive saving requires JavaScript. You can still edit and reset these fields.
Try another instance

Workspace details

The essentials, in one place.

Local preview

The name your team sees across the workspace.

A contact address for your team.

Demo only. No changes are sent or stored.Correct the highlighted fields before saving.Unsaved changes. Ready to save.These values match the saved example. No data was sent or stored.Saving this example…The example request failed. Your values are kept. Try again or switch off simulated failure.Example saved. No data was sent or stored.Preview reset. No changes are sent or stored.

Demo only. No changes are sent or stored.

Interactive saving requires JavaScript. You can still edit and reset these fields.Interactive saving requires JavaScript. You can still edit and reset these fields.

This preview simulates a save. Try empty fields, an invalid email, or a request failure. Values and focus survive request failure; repeated submissions are blocked while loading.

06

Motion components

Adapted from Transitions.dev

Accordion

Native disclosure. Smooth expansion.

Who can manage this workspace?

Workspace owners can manage settings in this example. Keep instructions beside the action they explain.

Where can I find export settings?

Open the workspace settings to review the example configuration.

View workspace settings

Can I keep more than one section open at a time?

Yes. Each section is an independent native disclosure, so you can compare its contents.

Tabs

One moving indicator. Stationary labels.

OverviewActivitySettingsUnavailable

A place for the essentials

Use tabs to switch between related views. This is sample content.

Recent activity

No recent activity in this example.

Review the settings preview

Workspace settings

Arrow keys move between tabs. Home and End jump to the first and last available tab.

This tab is unavailable in the interactive example.

Popover

Anchored to its trigger. Dismiss with Escape.

Workspace actions

A focused surface for a few related controls.

View workspace settings

Example actions only. No data changes.

Dialog

A native modal with deliberate focus and recovery.

Opening this dialog requires JavaScript.

Edit example workspace

This preview keeps all changes on this page.

Escape closes the dialog and returns focus.

Tooltip

Hover, focus, or dismiss. Help stays optional.

Tip: use a descriptive workspace name.Tab moves between controls. Escape dismisses this hint.

Skeleton · Skullet

Measured from the content. Shimmer, then reveal.

Ongale workspace

Team workspace · Example content

A shared place for your projects, workspace settings, and team activity.

Projects
12 active
Members
8 people
View workspace settings
Loading workspace preview

Loading appearance preview. No data is requested.

Reusable components with native semantics, our tokens, and reduced motion. The examples do not send requests or change stored data.

07

Image picker

Drop a file. Browse your library.

Choose an image

Drop a local file, or select an image from the library.

Opening this dialog requires JavaScript.

Select image

Choose an image from your library, or add a new file.

Drag and drop an image hereOne image at a time · JPEG, PNG, WebP, GIF, AVIF
Image added for this session. Nothing has been uploaded.Image added to the library.Loading image library…

Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Loading image library

JPEG, PNG, WebP, GIF or AVIF. Up to 10 MB.Image selected.Image removed.Reading image…Uploading image…Image added to the library.Image added for this session. Nothing has been uploaded.Choose one image at a time.Choose a JPEG, PNG, WebP, GIF or AVIF image.This file is empty. Choose another image.This image could not be read. Choose another file.The image could not be added. Try again or choose another file.Choose an image of 10 MB or smaller.

JPEG, PNG, WebP, GIF or AVIF. Up to 10 MB.

With a selection

Replace or remove an image. Cancel keeps your selection.

Opening this dialog requires JavaScript.

Select image

Choose an image from your library, or add a new file.

Drag and drop an image hereOne image at a time · JPEG, PNG, WebP, GIF, AVIF
Image added for this session. Nothing has been uploaded.Image added to the library.Loading image library…

Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Image filename.jpgJPEG · 128 KB
Loading image library

JPEG, PNG, WebP, GIF or AVIF. Up to 10 MB.Image selected.Image removed.Reading image…Uploading image…Image added to the library.Image added for this session. Nothing has been uploaded.Choose one image at a time.Choose a JPEG, PNG, WebP, GIF or AVIF image.This file is empty. Choose another image.This image could not be read. Choose another file.The image could not be added. Try again or choose another file.Choose an image of 10 MB or smaller.

JPEG, PNG, WebP, GIF or AVIF. Up to 10 MB.

<ImagePicker id="cover" label="Image" name="coverImage" images={mediaLibrary} value={selectedImage} />

Sample library only. Added files stay in this browser session; nothing is uploaded. Connect your media source and upload handler through the component adapter.

08

Sidebar

Rail, flyout, and branches

Room for your workspace.

A compact icon rail, hover navigation, expanded tree branches, and a small-screen drawer.

Open the interactive sidebar preview
09

Data table

Files, selection and sorting

A compact native table with filtering, page selection, bulk actions and loading/error examples.

Open the file-table preview
10

Checkbox

Small control, clear selection

Selection

Unchecked, checked and mixed.

Unavailable

Selected values stay recognizable.

Labels & recovery

Wrapped labels and native validation.

Accept the terms before continuing.

Reset

Native form values and defaults.

16px visual, larger click target. Space toggles the native input; mixed state belongs to the selection owner. Motion never delays the selected state.

11

Inbox

Folders, conversations and replies

A three-pane mailbox with search, unread filtering, per-thread drafts and native scrolling.

Open the inbox preview
Loading and empty states
Mail
Mail
  • Inbox0
  • Drafts0
  • Sent0
  • Junk0
  • Trash0
  • Archive0
Categories
  • Social0
  • Updates0
  • Forums0
  • Shopping0
  • Promotions0
AKAlicia Koch

Inbox

0 messages
All mailUnread

We couldn’t update your mailbox.

    No messages here

    Try another folder or search.

    Conversation senderNov 9

    A message about your next project

    A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

    workimportant
    Loading conversation
    Conversation senderNov 9

    A message about your next project

    A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

    workimportant
    Loading conversation
    Conversation senderNov 9

    A message about your next project

    A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

    workimportant
    Loading conversation
    Conversation senderNov 9

    A message about your next project

    A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

    workimportant
    Loading conversation
    Conversation senderNov 9

    A message about your next project

    A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

    workimportant
    Loading conversation
    AB
    Conversation sender

    Message subject

    Reply to: [email protected]

    Nov 9, 2026, 9:00 AM UTC

    Hello there,

    Thanks for sharing your thoughts on the project. Here are a few notes for our next conversation.

    We can work through the details together and agree on the next steps. Let me know if you have any questions.

    Best regards,
    Your teammate

    Loading message

    Select a message

    Your conversations, all in one place.

    Loading messages…

    Mail
    Mail
    • Inbox0
    • Drafts0
    • Sent0
    • Junk0
    • Trash0
    • Archive0
    Categories
    • Social0
    • Updates0
    • Forums0
    • Shopping0
    • Promotions0
    AKAlicia Koch

    Inbox

    0 messages
    All mailUnread

    We couldn’t update your mailbox.

      No messages here

      Try another folder or search.

      Conversation senderNov 9

      A message about your next project

      A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

      workimportant
      Loading conversation
      Conversation senderNov 9

      A message about your next project

      A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

      workimportant
      Loading conversation
      Conversation senderNov 9

      A message about your next project

      A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

      workimportant
      Loading conversation
      Conversation senderNov 9

      A message about your next project

      A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

      workimportant
      Loading conversation
      Conversation senderNov 9

      A message about your next project

      A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

      workimportant
      Loading conversation
      AB
      Conversation sender

      Message subject

      Reply to: [email protected]

      Nov 9, 2026, 9:00 AM UTC

      Hello there,

      Thanks for sharing your thoughts on the project. Here are a few notes for our next conversation.

      We can work through the details together and agree on the next steps. Let me know if you have any questions.

      Best regards,
      Your teammate

      Loading message

      Select a message

      Your conversations, all in one place.

      Mail
      Mail
      • Inbox0
      • Drafts0
      • Sent0
      • Junk0
      • Trash0
      • Archive0
      Categories
      • Social0
      • Updates0
      • Forums0
      • Shopping0
      • Promotions0
      AKAlicia Koch

      Inbox

      0 messages
      All mailUnread

      We couldn’t update your mailbox.

        No messages here

        Try another folder or search.

        Conversation senderNov 9

        A message about your next project

        A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

        workimportant
        Loading conversation
        Conversation senderNov 9

        A message about your next project

        A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

        workimportant
        Loading conversation
        Conversation senderNov 9

        A message about your next project

        A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

        workimportant
        Loading conversation
        Conversation senderNov 9

        A message about your next project

        A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

        workimportant
        Loading conversation
        Conversation senderNov 9

        A message about your next project

        A short preview of the conversation appears here. The sender has shared a few thoughts and next steps for the team.

        workimportant
        Loading conversation
        AB
        Conversation sender

        Message subject

        Reply to: [email protected]

        Nov 9, 2026, 9:00 AM UTC

        Hello there,

        Thanks for sharing your thoughts on the project. Here are a few notes for our next conversation.

        We can work through the details together and agree on the next steps. Let me know if you have any questions.

        Best regards,
        Your teammate

        Loading message

        Select a message

        Your conversations, all in one place.

        12

        SQL editor & ERD

        Queries, schema and relationships

        A local database workspace composed from our sidebar, motion tabs, fields and data table. CodeMirror handles editing; an isolated SQLite worker runs the sample queries.

        Open the SQL & ERD preview

        Small parts. Shared foundations.

        Import the components from src/components/ui. Use the client helpers when changing asynchronous feedback or field errors.

        src/components/ui/docs/components.md
        Ongale UIComponent set · 01