All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Note: You may need to force-compile your application when upgrading Doggo.

Unreleased

0.15.0 - 2026-09-11

Added

  • Publish the JavaScript hooks as ES modules, on npm as @woylie/doggo and in the Hex package under assets/js. See the README for both install routes.
  • Add hooks and keyboard support for the accordion, combobox, menu, menu_bar, menu_button, modal, alert_dialog, split_pane, tabs, toolbar, action_bar, tooltip, tree and tree_item components.
  • Add a labelledby attribute to all components that take a label.

Alert component

  • Add a :close slot for the content of the close button.
  • Add an :action slot.

Callout component

  • Add an :action slot.

Carousel component

  • Add a loop attribute, default true. With loop={false}, the first and last slide don't wrap around.
  • Add a rotation_interval_ms attribute, default 5000.
  • Add Home and End key handlers to the pagination, which move to the first and last slide.

Combobox component

  • Support options written as keyword lists and maps, with description and disabled keys, and support option groups and :hr separators.
  • Add a display_value attribute to set the text shown for the selected value.
  • Add an on_search attribute to filter the options on the server instead of in the browser.
  • Add free_text and free_text_label attributes, which let the user submit what they typed when it is not among the options.
  • Add a clearable attribute, which renders a button that unselects, and a clear_label attribute for its accessible name.
  • Add :clear and :toggle slots for the content of the two buttons.
  • Add an example stylesheet.

Field component

  • Add an :extra_types builder option for rendering a type with your own component.
  • Add a hidden_input attribute to omit the hidden input that submits false for an unchecked checkbox.
  • Support nested options in the checkbox-group and radio-group types.
  • Support options written as keyword lists, and support option descriptions.

Split pane component

  • Make the panes resizable by dragging the separator or by moving it with the keyboard.

Tabs component

  • Add an orientation attribute.

Tree item component

  • Add expanded and selected attributes.

Changed

  • Require a label or a labelledby on the bottom_navigation, breadcrumb, steps, tab_navigation and vertical_nav components, and remove the default labels of breadcrumb, steps and tab_navigation.
  • Reject a blank label or labelledby.
  • Require the id attribute of the vertical_nav, menu, menu_bar, toolbar, action_bar and tree components.
  • Raise the maturity level of sixteen components from experimental to developing, most of them because they gained their hook and keyboard support in this release: action_bar, combobox, drawer, menu, menu_bar, menu_button, menu_group, menu_item, menu_item_checkbox, menu_item_radio_group, radio_group, split_pane, switch, toolbar, tree and tree_item.

Alert component

  • Change the type of the close_label attribute to :string.
  • Remove the click handler from the root element.

Alert dialog and modal components

  • Use showModal() to open dialogs to provide proper modal semantics. This adds support for the CSS ::backdrop pseudo element and ensures scroll locking without relying on CSS or JS.
  • Close dialogs with the closedby attribute.
  • Support the Invoker Commands API.
  • Remove the modal-container and alert-dialog-container element.

App bar component

  • Require the label attribute of the :navigation and :action slots.
  • Set aria-label on the :navigation and :action links.

Bottom navigation component

  • Require the label attribute of the :item slot.

Button and toggle button components

  • Default the disabled attribute to false instead of nil.

Button link component

  • Prevent activation of a disabled button_link. The link is now rendered without a destination and with role="link" and aria-disabled="true".
  • Remove the data-disabled attribute. The state is expressed with aria-disabled instead.

Callout component

  • Rename the default variant modifier to level.

Card component

  • Rename the :main slot to :body.

Carousel component

  • Replace the auto_rotation attribute with a :pause slot, which renders the button that stops and restarts the rotation. The rotation is enabled by the presence of the slot, so a rotating carousel always has a button to stop it, as WCAG 2.2.2 requires.
  • Complete the tablist of the pagination: role="tablist" is set on the carousel-pagination element instead of a nested div, each button has an id, aria-selected and tabindex, and the slides are the tab panels the buttons select. The button contains a single span instead of two nested ones.
  • Label the pagination buttons with the label of the slide they select. pagination_slide_label is only used for slides without a label.
  • Set aria-live to off while the carousel rotates and to polite while it is stopped.
  • Move the carousel by setting scrollLeft on the scroll container, so that the scroll-behavior property decides whether the movement is animated.
  • Render no controls and no pagination if the carousel only has a single item. The item is a group instead of a tab panel then.
  • Mark the component as developing.

Combobox component

  • Render the listbox as a div with role="listbox" and each option as a div with role="option", instead of a ul with li elements.

Page header component

  • Render the title and the subtitle in an hgroup instead of a div with the page-header-title class.

Property list component

  • Require the :prop slot.

Tabs component

  • Require the label attribute of the :panel slot.

Toolbar component

  • Add an orientation attribute.

Vertical nav, vertical nav nested and navbar items components

  • Change class attribute of the item slots to :any, so that a list of classes can be passed.

Removed

Combobox component

  • Remove support for options written as {label, value, description} tuples. Write the option as a keyword list with a description key instead.

Fixed

Card component

  • Render the main content as a div instead of a main element. A document may hold only one main, so a page of cards was invalid and exposed one main landmark per card.

Carousel component

  • Scroll to the right slide if the slides have different widths, or if scroll-snap-align is not start. The scroll position was calculated from the width of the first slide.
  • Render the pause button first and the pagination between the previous and next buttons, so that the tab order matches the visual order.
  • Keep the carousel working after a LiveView patch that adds or removes slides. Buttons rendered by the patch did nothing, and the active slide could point at a slide that had been removed.
  • Stop the rotation timer when the element is removed. It kept running against a detached element and held it from being collected.

Cluster component

  • Remove the role="group" attribute from the cluster component.

Combobox component

  • Mark the option holding the value as selected when the option values are not strings.
  • Mark only the first option when several options hold the same value.
  • Render an option with an empty value for nil and for an empty label, so that a blank option can be selected.

Field component

  • Describe an errored field by its error text through aria-describedby in addition to aria-errormessage.
  • Always render the error list as an aria-live="polite" region, so that an error that appears after load is announced.
  • Render a field built without field assign from just a name and value.
  • Render options given as keyword lists.

Frame component

  • Default to a 1:1 ratio instead of raising when no ratio is given.

Image component

  • Fix the storybook module passing an invalid ratio.

Page header component

  • Add the missing on_click attribute to the :navigation slot.

Split pane component

  • Clamp the aria-valuenow of the separator between min_size and max_size.

Tree item component

  • Fix the expanded and collapsed state.

How to upgrade

  • Replace [data-disabled] with [aria-disabled] in any styles you wrote for disabled button_link components.
  • A disabled button_link no longer renders an href. Revisit any style or test that selects a.button[href].
  • Add a :prop slot to any property_list that has none, or remove the component from that call site.
  • Rename the :main slot of the card component to :body, and replace main with .card-body in any styles you wrote for it.
  • Ensure to pass a label or labelledby attribute to every component that expects them.
  • Set an id on every vertical_nav, menu, menu_bar, toolbar, action_bar and tree.
  • Rename variant to level on the callout component if you use the defaults, and change [data-variant] to [data-level] in your CSS.
  • Register the hooks of the components you build. See the README.
  • Rewrite any styles that select the combobox listbox or its options as ul and li. They are div elements with role="listbox" and role="option" now.
  • Rewrite combobox options given as {label, value, description} tuples as keyword lists with a description key.
  • Remove the backdrop and scroll locking for the modal and alert_dialog components and style ::backdrop instead.
  • Move any styles on .modal-container and .alert-dialog-container to the dialog element itself. The element is gone, and the dialog is the box now that it opens in the top layer.
  • An empty .field-errors element is now part of the layout. See the Field error announcements section of the README for the CSS that removes it from the flow without removing it from the accessibility tree.
  • Replace the auto_rotation attribute of the carousel component with a :pause slot.
  • In carousel pagination styles, [role="tablist"] is now the carousel-pagination element itself rather than a child of it, and the dot is button > span rather than button > span > span.
  • Set label on every :item of a carousel with pagination, since the pickers take their names from it. pagination_slide_label now applies only to slides without a label.
  • A carousel with a single item renders no carousel-controls element anymore. Update your styles to account for its absence if necessary.

0.14.9 - 2026-08-27

Changed

  • Document that the row_click attribute of the table component is available to pointer users only, and that every action reachable through it needs a focusable equivalent in the row.
  • Document that omitting the text attribute of the icon component leaves the icon without an accessible name, and correct the examples that omitted it. The toolbar examples passed a label attribute, which the icon component does not have.
  • Document the CSS rule the data-visually-hidden attribute needs, and why display: none is the wrong one.
  • Document that the modal and alert_dialog components are not modal in the browser's sense, so the caller has to supply a backdrop and lock scrolling.

Fixed

  • Set aria-label on the buttons of the action_bar component, taken from the required label of the item. The name previously came from title alone.
  • Set role="img" on the placeholder of the fallback component and role="group" on a titled vertical_nav_section. Both put an accessible name on an element whose implicit role prohibits one, so the name was dropped.
  • Focus the container of the modal and alert_dialog components rather than their content, so that a dialog whose body holds nothing focusable still moves focus into the dialog.
  • Set type="button" on the buttons generated by the action_bar, alert, alert_dialog, combobox and modal components. Without it they defaulted to submit and submitted any form they sat in.
  • Remove the href attribute from the close button of the modal and alert_dialog components, which is not valid on a button element.
  • Omit the data-addon attribute of the field component when neither addon slot is filled. It was tested with &&, and an empty slot is truthy, so every field rendered data-addon="left right".
  • Resolve the :module option of use Doggo.Storybook in the caller's environment, so that a story module can refer to its components module through an alias.
  • Remove the builder options documented by the steps component. None of :current_class, :completed_class, :upcoming_class and :visually_hidden_class exists, so following the documentation raised an ArgumentError at compile time.

0.14.8 - 2026-08-27

Security

  • Fix HTML injection in the date input of the field component, which marked the field value as already escaped. A value taken from user params could break out of the value attribute. Present since 0.1.0.
  • Remove date field values that are not a valid ISO 8601 date instead of truncating them to ten characters.

0.14.7 - 2026-07-24

Changed

  • Change hook name for carousel component to Doggo.Components.Carousel.Hook.
  • Support scrolling and swiping in carousel component on mobile devices.
  • Add auto rotation to carousel component.
  • Add carousel items container for more flexible styling.

0.14.6 - 2026-06-11

Changed

  • Loosen phoenix_live_view version requirement to ~> 1.1.
  • Add example CSS styles for carousel component.
  • Add colocated JS hook for carousel pagination.

0.14.5 - 2026-05-15

Fixed

  • Type warning in Elixir 1.20.0-rc.5.

0.14.4 - 2026-04-09

Fixed

  • Fix an issue where the icon function name atoms don't exist yet when the icon component is rendered.

0.14.3 - 2026-04-08

Changed

  • Simplify example styles for icon component.

Fixed

  • Remove extraneous whitespace from icon component.
  • Handle modifiers without values and boolean modifiers in stories.

0.14.2 - 2026-04-07

Fixed

  • Icon story: Render all configured icons instead of only the first one.

0.14.1 - 2026-04-07

Fixed

  • Toggle hidden attribute in toggle button story properly.
  • Set class name as string in the container function of some stories.

0.14.0 - 2026-03-16

Changed

  • Move data-numerator and data-denominator attributes in image component to inner image-frame element.

Fixed

  • Add modifier data attributes to image component.

HTML diff

Before:

<figure class="image" data-numerator="16" data-denominator="9">
  <div class="image-frame">
    <img src="" alt="" loading="" />
  </div>
  <figcaption></figcaption>
</figure>

After:

<figure class="image">
  <div class="image-frame" data-numerator="16" data-denominator="9">
    <img src="" alt="" loading="" />
  </div>
  <figcaption></figcaption>
</figure>

0.13.3 - 2026-03-14

Changed

  • Allow popovertarget attribute on button component.

0.13.2 - 2026-03-04

Changed

  • Require phoenix_storybook ~> 1.0.

0.13.1 - 2026-02-16

Changed

  • Add @doc type: {type} tags to compiled components for ExDoc grouping.

0.13.0 - 2026-02-05

This release contains significant breaking changes. Check your component styles carefully when upgrading.

Added

  • Add :type option to modifiers, so that any attribute type can be used instead of only strings.

Changed

Button link component

  • Remove disabled_class option.
  • Use data-disabled attribute instead of the disabled_class (selector: [data-disabled]).

Field component

  • Remove addon_left_class, addon_right_class, and visually_hidden_class options.
  • Use data-addon attribute instead of addon_left_class and addon_right_class (selectors: [data-addon~="left"], [data-addon~="right"]).
  • Use data-visually-hidden attribute instead of visually_hidden_class (selector: [data-visually-hidden]).
  • Use data-invalid attribute instead of has-errors class (selector: [data-invalid]).
  • Use data-state attribute instead of {base_class}-switch-state-{on|off} classes (selectors: [data-state="on"], [data-state="off"]).

Frame and image component

  • Make ratio required for frame component.
  • Change format of ratio attribute (before: 16-by-9, after: 16:9).
  • Use data-numerator and data-denominator attributes instead of adding a class for the ratio (before: class="is-16-by-9", after: data-numerator="16" data-denominator="9").

Icon and icon sprite component

  • Remove text_position_after_class, text_position_before_class, text_position_hidden_class, and visually_hidden_class options.
  • Use data-text-position class instead of text_position_* classes (selectors: [data-text-position="before"], [data-text-position="after"], [data-text-position="hidden"]).
  • Use data-visually-hidden attribute instead of visually_hidden_class (selector: [data-visually-hidden]).

Stack component

  • Remove recursive_class option.
  • Use data-recursive attribute instead of recursive_class (selector: [data-recursive]).

Steps component

  • Remove current_class, completed_class, upcoming_class, and visually_hidden_class options.
  • Use data-visually-hidden attribute instead of visually_hidden_class (selector: [data-visually-hidden]).
  • Use data-state attribute instead of current_class, completed_class, and upcoming_class (selectors: [data-state="current"], [data-state="completed"], [data-state="upcoming"]).

Removed

  • Remove class_name_fun option.
  • Remove Doggo.modifier_class_name/2.

Upgrade Guide

In previous versions, modifier attribute values would be reflected with CSS classes in the HTML output.

For example, if you had a tag component with a size modifier like this:

build_tag(
  modifiers: [
    size: [values: ["small", "medium", "large"], default: "medium"]
  ]
)

And you used it like:

<.tag size="small">Hello</.tag>

This would result in the addition of an is-small class.

<span class="tag is-small">Hello</span>

The implementation was changed to use separate data attributes for each modifier instead. Now, the generated HTML will look like this:

<span class="tag" data-size="small">Hello</span>

In your CSS styles, you will need to change the selectors accordingly.

Before:

.tag.is-small {
}

After:

.tag[data-size="small"] {
}

0.12.0 - 2026-01-15

Changed

  • Breaking: The icon component renders the inner SVG with a referenced icon module now instead of using an inner block.
  • Add navigation slot to page_header component.

0.11.0 - 2025-12-16

Added

  • Add --check switch to mix dog.classes.

Changed

  • Require phoenix_live_view ~> 1.1.0 and phoenix_storybook ~> 0.9.

0.10.8 - 2025-09-15

Changed

  • Support gettext ~> 1.0.

0.10.7 - 2025-07-31

Changed

  • Require phoenix_live_view ~> 1.0.6 or ~> 1.1.0.

0.10.6 - 2025-07-08

Changed

  • Loosen version requirement for phoenix_storybook.

0.10.5 - 2025-06-10

Fixed

  • Add required attribute to radio inputs.

0.10.4 - 2025-02-22

Fixed

  • Escape select option values in field component.

0.10.3 - 2025-02-11

Changed

0.10.2 - 2025-01-08

Changed

  • Require Phoenix LiveView ~> 1.0.0.
  • Support Phoenix Storybook 0.8.

0.10.1 - 2024-11-20

Changed

  • Support Phoenix Storybook 0.7.x.

0.10.0 - 2024-11-19

Changed

  • field component:
    • Remove required_text attribute in favor of a compile-time option passed to build_field/1.
    • Remove required_title attribute; remove title from span element.
    • Change default for required_text from * to (required).
    • Translate required_text with Gettext module, if set.
    • Add optional_text option to build_field/1 to mark optional fields with a label suffix. Defaults to nil.
    • Prefix checkbox, checkbox-group, radio-group, required-mark, select, switch, switch-label, switch-state, switch-state-off, and switch-state-on classes with base class for consistency.

0.9.1 - 2024-10-18

Changed

  • Add header to file output of mix dog.classes.

Fixed

  • Fix deprecation warning in Phoenix LiveView 1.0.7-rc.7.

0.9.0 - 2024-09-25

Changed

  • Rename Doggo.modifier_classes/1 to Doggo.classes/1 and mix dog.modifiers to mix dog.classes. The function and mix task return all base classes, nested classes, and additional customizable classes in addition to the modifier classes now.
  • Wrap inner block of box component into div.
  • Add example styles for box and tag components.

Removed

  • The fab component was removed. It might have made sense to have it as a separate component before components could be customized, but since the semantics are the same as a regular button, you can just make one with build_button(name: :fab, base_class: "fab") if you need it.

0.8.2 - 2024-07-28

Fixed

  • Ensure storybook module and components module are loaded before checking whether module exports function.
  • Fix menu stories not compiling under certain circumstances.

0.8.1 - 2024-07-28

Fixed

  • Declare phoenix_storybook as required dependency.

0.8.0 - 2024-07-28

Added

  • Set up design tokens and CSS for demo application based on Barker. Styles for all components will be added in the future.

Changed

General

  • Add documentation for the compile-time options of the builder macros.

Property list, stack, cluster, button, and button link component

  • Add styles to demo application.
  • Improve story and documentation.
  • Mark components as stable.

Tab navigation and disclosure button component

  • Add styles to demo application.
  • Improve story and documentation.
  • Mark component as refining.

Icon and icon sprite component

  • Add styles to demo application.
  • Add story for icon sprite.
  • Rename label attribute to text.
  • Rename label_placement attribute to text_position.
  • Change type of label_placement attribute from atom to string for consistency.
  • Use before and after as values for text_position instead of left and right to better apply to right-to-left languages. Rename default classes to has-text-before and has-text-after accordingly.
  • Make text_position classes configurable.
  • Add right-to-left variation group to icon story.
  • Set sprite_url as a compile time option.
  • Mark both components as refining.

Date, datetime, and time component

  • Improve story and documentation.
  • Mark components as refining.

Fixed

  • attributes for modifier variations weren't set correctly when map was lacking key.

0.7.0 - 2024-07-24

Changed

  • Use private field_description, field_errors, and label components in field component. Apply base class to field_description and field_errors components.
  • Use plain div with {base_class}-frame class instead of nested frame component in image component. This div does not receive the ratio attribute anymore. Apply the ratio with a CSS selector on the root div instead (e.g. .image.is-4-by-3 > .image-frame).

Removed

  • field_description component.
  • field_errors component.
  • label component.

0.6.0 - 2024-07-23

Added

  • Add Doggo.Storybook and mix dog.gen.stories for generating Phoenix.Storybook stories for the configured components. The generated stories automatically render variation groups for all configured modifiers.
  • Add Doggo.modifier_classes/1.
  • Add Doggo.modifier_class_name/2.

Changed

  • Replace all function components defined in Doggo with build macros in Doggo.Components. This allows you to customize the modifier attributes, component names, base classes, and some other options at compile time.
  • Make modifier class name builder configurable.
  • Rename build macro for former input component to field.
  • Configure Gettext module for field component (formerly input) via compile-time option instead of global attribute.
  • Allow to set required text and required title attributes for input and label.
  • Add module argument to mix dog.modifiers that points to the module in which the Doggo components are configured.
  • Replace placeholder attribute with placeholder_src and placeholder_content attributes in avatar component.
  • Replace phx-feedback-for attribute in favor of Phoenix.Component.used_input?/1.
  • Don't use h2 for Doggo.page_header/1 sub title.
  • Nest vertical_nav_nested component into <div>.
  • Rename drawer-nav-title class in vertical_nav_nested component to be based on configured component name (default: vertical-nav-nested-title).
  • Better consistency, various improvements and optimizations in all components.
  • Revise The component type classification.
  • Add maturity levels for all components (experimental, developing, refining, stable).
  • Require live_view ~> 1.0.0-rc.6.

Removed

Upgrade Guide

  1. For all Doggo components you were using, call the corresponding build macros in Doggo.Components in one of your modules and update your HEEx templates to call the generated functions instead of the ones from the Doggo module. See readme for installation details.
  2. The previous Doggo version instructed you to configure a separate Storybook that reads the stories from the priv folder of the dependency. Remove that second Storybook and run mix dog.gen.stories -m [component-module] -o [storybook-folder] -a to generate stories for the configured Doggo components in the primary Storybook.
  3. If you use mix dog.modifiers in a script, add the --module argument.
  4. If you were setting the gettext attribute on the input component, pass the gettext_module option to Doggo.Components.build_field/1 instead.

0.5.0 - 2024-02-12

Added

  • New component: Doggo.alert_dialog/1.
  • New component: Doggo.carousel/1.
  • New component: Doggo.combobox/1.
  • New component: Doggo.disclosure_button/1.
  • New component: Doggo.menu/1.
  • New component: Doggo.menu_bar/1.
  • New component: Doggo.menu_button/1.
  • New component: Doggo.menu_group/1.
  • New component: Doggo.menu_item/1.
  • New component: Doggo.menu_item_checkbox/1.
  • New component: Doggo.menu_item_radio_group/1.
  • New component: Doggo.radio_group/1.
  • New component: Doggo.split_pane/1.
  • New component: Doggo.tabs/1.
  • New component: Doggo.toolbar/1.
  • New component: Doggo.tree/1.
  • Storybook page about modifier classes.
  • Mix task mix dog.modifiers to list all modifier classes.

Changed

  • Set aria-invalid and aria-errormessage attributes in Doggo.input/1 component.
  • Use buttons instead of links in Doggo.action_bar/1.
  • Add toolbar role to Doggo.action_bar/1.
  • Use section instead of article in Doggo.modal/1.
  • Use button for close button in Doggo.modal/1.
  • Add dismissable attribute to Doggo.modal/1.
  • Remove role from button_link/1, add class.
  • Rename Doggo.drawer/1 slots to header, main, and footer.
  • Rename Doggo.drawer_nav/1, Doggo.drawer_nav_nested/1 and Doggo.drawer_nav_section to Doggo.vertical_nav/1, Doggo.vertical_nav_nested/1 and Doggo.vertical_nav_section/1.
  • Depend on phoenix_storybook ~> 0.6.0.

0.4.0 - 2023-12-31

Added

  • New component: Doggo.cluster/1.
  • New component: Doggo.toggle_button/1.

Changed

  • Significant changes to Doggo.alert/1 and Doggo.flash_group/1.
  • Require id attribute for Doggo.callout/1.
  • Add :normal as size for Doggo.icon_sprite/1.
  • Remove :error variant in favor of :danger.
  • Add <span> around text placeholder for Doggo.avatar/1.
  • Add base class to Doggo.image/1, add class attribute.
  • Rename Doggo.frame/1 ratio classes from x-to-x to x-by-x.
  • Add required label attribute to Doggo.navbar/1.
  • Add class attribute to :item slot of Doggo.navbar_items/1.
  • Add required_title attribute to Doggo.label/1.
  • Change description attribute of Doggo.field_description/1 to inner block.
  • Require id attribute for Doggo.drawer_section/1.
  • Add aria-labelledby attribute to Doggo.drawer_section/1.
  • Require id and label attributes for Doggo.drawer_nav/1.
  • Add class attribute to Doggo.drawer_nav item slot.
  • Require id attribute for Doggo.drawer_nested_nav/1.
  • Add class attribute to Doggo.drawer_nested_nav item slot.
  • Add close_label attribute to Doggo.modal/1.

Fixed

  • Box header not rendered if only action slot is used without banner or title.
  • Aria label of breadcrumb component not overridable.
  • Radio groups and checkbox groups always marked as required.
  • Missing datalist option text.

0.3.1 - 2023-12-28

Changed

  • Allow event name as string in on_click attributes of app bar and steps.

Fixed

  • Faulty application of the on_click attribute in Doggo.steps/1.

0.3.0 - 2023-12-27

Added

  • New component: Doggo.avatar/1.
  • New component: Doggo.badge/1.
  • New component: Doggo.bottom_navigation/1.
  • New component: Doggo.box/1.
  • New component: Doggo.callout/1.
  • New component: Doggo.fab/1.
  • New component: Doggo.field_group/1.
  • New component: Doggo.page_header/1.
  • New component: Doggo.skeleton/1.
  • New component: Doggo.steps/1.
  • New component: Doggo.tag/1.
  • New component: Doggo.tooltip/1.
  • Allow to visually hide labels.
  • Support autocomplete via <datalist> in input/1 component.
  • addon_left and addon_right slots on the input/1 component.
  • gettext attribute on Doggo.input/1, giving you the choice to set the Gettext module locally.

0.2.1 - 2023-12-19

Changed

  • Ensure compatibility with Phoenix.HTML 4.0.

0.2.0 - 2023-12-17

Added

  • New tab_navigation/1 component.
  • New frame/1 component.
  • New image/1 component.

0.1.5 - 2023-12-16

Fixed

  • Remove default value for errors attribute on input component.

0.1.4 - 2023-12-16

Added

  • Added storybook stories for the remaining components.

Fixed

  • Errors passed as an attribute to the input/1 component were overridden.
  • The field_description/1 component had a stray <li> tag.

0.1.3 - 2023-12-15

Fixed

  • Added priv/storybook folder to package configuration.

0.1.2 - 2023-12-14

Changed

  • Added more storybook stories.

Fixed

  • Fixed attribute name for table rows.

0.1.1 - 2023-12-13

Changed

  • Storybook stories for more components and documentation improvements.

0.1.0 - 2023-12-13

Initial release.