Packages
flag_icons
0.1.0
Phoenix Component library providing ISO 3166-1-alpha-2 flag icons in 1x1 and 4x3 size variants. It allows easy integration and dynamic rendering of flag icons with customizable attributes in Phoenix projects.
Current section
Files
Jump to
Current section
Files
flag_icons
README.md
README.md
# Phoenix Flag Icons
A collection of Phoenix Components for all SVG [Flag Icons](https://flagicons.lipis.dev/). The icons are ISO 3166-1-alpha-2 flags available in two sizes: 1x1 and 4x3.
## Installation
To install the `flag_icons` library, add it to your `deps` in `mix.exs`:
```elixir
def deps do
[
{:flag_icons, "~> 0.1.0"}
]
end
```
## Usage
### Basic usage
Render a flag icon with the `1x1` variant:
```html
<FlagIcons.us_1x1 class="size-8" />
```
Render a flag icon with the `4x3` variant:
```html
<FlagIcons.us_4x3 class="h-8" />
```
### Dynamic Rendering:
Use the `render` function to dynamically select a flag based on a variable:
```html
<FlagIcons.render flag="us" variant="4x3" class="h-8" />
```
### Passing Additional Attributes
Any attributes passed will be forwarded to the SVG element:
```html
<FlagIcons.us_4x3 id="us-flag" class="inline-block h-8 w-12" />
```
## Creating Your Own Component
For further customization, consider wrapping `FlagIcons` within your own components:
```elixir
# core_components.ex
attr :flag, :string, required: true
attr :variant, :string, required: true, default: "1x1"
attr :class, :string, required: false, default: "icon"
attr :rest, :global
def flag_icon(assigns) do
~H"""
<FlagIcons.render flag={@flag} variant={@variant} class={@class} {@rest} />
"""
end
```
This approach allows you to define and use custom attributes for your flag icon components.
### Usage in .html.heex Files
Use your custom component in your HTML (`html.heex`) files:
```html
<.flag_icon flag="us" variant="4x3" class="size-8" />
```
## License
Source code is licensed under the [MIT License](LICENSE.md).