icon

When including the icon, set the size to be its mobile size (mobile first). Different sizes for larger screens will be set in the css file of the including component.

Information

Folder
src/components/elements/icon

Files

Schema
// src/components/elements/icon/schema.yaml

$schema: http://json-schema.org/draft-07/schema#
$id: /elements/icon
additionalProperties: false
type: object
properties:
  name:
    type: string
  sprite_sheet:
    type: string
    default: icon
  classes:
    type: array
    items:
      type: string
  label:
    type: string
  size:
    type: string
    enum:
      - small
      - medium
      - large
required:
  - name
Mocks
// src/components/elements/icon/mocks.yaml

$variants:
  - $name: Admin
    name: admin
  - $name: Arrow back
    name: arrow_back
  - $name: Arrow forward
    name: arrow_forward
  - $name: Arrow up
    name: arrow_up
  - $name: Audio
    name: audio
  - $name: Bulletpoint
    name: bulletpoint
  - $name: Check
    name: check
  - $name: Check circle
    name: check_circle
  - $name: Check circle filled
    name: check_circle_filled
  - $name: Chevron down
    name: chevron_down
  - $name: Chevron left
    name: chevron_left
  - $name: Chevron right
    name: chevron_right
  - $name: Chevron up
    name: chevron_up
  - $name: Circle
    name: circle
  - $name: Circle filled
    name: circle_filled
  - $name: Close
    name: close
  - $name: Cloud
    name: cloud
  - $name: Delete
    name: delete
  - $name: Delete filled
    name: delete_filled
  - $name: Divider
    name: divider
  - $name: Edit
    name: edit
  - $name: Email
    name: email
  - $name: Error circle
    name: error_circle
  - $name: Error circle filled
    name: error_circle_filled
  - $name: Facebook
    name: facebook
  - $name: Handbook
    name: handbook
  - $name: Info
    name: info
  - $name: Instagram
    name: instagram
  - $name: Job
    name: job
  - $name: LinkedIn
    name: linkedin
  - $name: Login
    name: login
  - $name: Menu
    name: menu
  - $name: Muted
    name: muted
  - $name: Note
    name: note
  - $name: Notes
    name: notes
  - $name: Pause
    name: pause
  - $name: Phone
    name: phone
  - $name: Pin
    name: pin
  - $name: Pinterest
    name: pinterest
  - $name: Play
    name: play
  - $name: Replay
    name: replay
  - $name: Search
    name: search
  - $name: Settings
    name: settings
  - $name: Switch off
    name: switch_off
  - $name: Switch on
    name: switch_on
  - $name: Switch pending
    name: switch_pending
  - $name: Upload
    name: upload
  - $name: User
    name: user
  - $name: User create
    name: user_create
  - $name: X
    name: x
  - $name: YouTube
    name: youtube
Template
// src/components/elements/icon/icon.twig

{%- if label is defined -%}
	{%- set random = random() -%}
{%- endif -%}
<svg
	xmlns="http://www.w3.org/2000/svg"
	class="Icon Icon--{{ name }} {{ classes|join(" ") }} Icon--{{ size|default("medium") }}"
	focusable="false"
	role="img"
	{%- if not label %} aria-hidden="true"{% else %} aria-labelledby="Icon--{{ name }}-{{ random }}"{% endif -%}>
	{%- if label is defined -%}<title id="Icon--{{ name }}-{{ random }}">{{ label }}</title>{% endif -%}
	<use
		xmlns:xlink="http://www.w3.org/1999/xlink"
		xlink:href="{{ asset_path() }}/svg/{{ sprite_sheet|default("icons") }}.sprite.svg#{{ name }}"
	>
	</use>
</svg>

Variants

Admin
Open
Arrow back
Open
Arrow forward
Open
Arrow up
Open
Audio
Open
Bulletpoint
Open
Check
Open
Check circle
Open
Check circle filled
Open
Chevron down
Open
Chevron left
Open
Chevron right
Open
Chevron up
Open
Circle
Open
Circle filled
Open
Close
Open
Cloud
Open
Delete
Open
Delete filled
Open
Divider
Open
Edit
Open
Email
Open
Error circle
Open
Error circle filled
Open
Facebook
Open
Handbook
Open
Info
Open
Instagram
Open
Job
Open
LinkedIn
Open
Login
Open
Menu
Open
Muted
Open
Note
Open
Notes
Open
Pause
Open
Phone
Open
Pin
Open
Pinterest
Open
Play
Open
Replay
Open
Search
Open
Settings
Open
Switch off
Open
Switch on
Open
Switch pending
Open
Upload
Open
User
Open
User create
Open
X
Open
YouTube
Open