{
  "schemaVersion": "2.0.0",
  "components": [
    {
      "name": "Button",
      "displayName": "Button",
      "slug": "button",
      "status": "pre-release",
      "description": "Button component for interface actions. Renders as a regular link when href is provided. Buttons should primarily be used to trigger events or actions.",
      "path": "button/button.js",
      "docs": "https://kesko.design/components/button/",
      "props": [
        {
          "name": "variant",
          "type": "\"primary\" | \"secondary\" | \"neutral\" | \"success\" | \"error\"",
          "description": "The style variant of the button.",
          "default": "\"primary\""
        },
        {
          "name": "appearance",
          "type": "\"filled\" | \"outline\" | \"plain\" | \"text\"",
          "description": "The appearance of the button. Defaults to `filled`, or `outline` when `variant` is `error`. Plain HTML has no such default: write `appearance=\"outline\"` on an error button yourself."
        },
        {
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "description": "The size of the button.",
          "default": "\"md\""
        },
        {
          "name": "expand",
          "type": "boolean",
          "description": "Makes the button fit its container.",
          "default": "false"
        },
        {
          "name": "disabled",
          "type": "boolean",
          "description": "Disables the component. Native `disabled` on buttons, `aria-disabled` on links.",
          "default": "false"
        },
        {
          "name": "loading",
          "type": "boolean",
          "description": "Shows a spinner and blocks activation with `aria-disabled`. The button stays focusable so keyboard and screen reader users keep their place. Pass a boolean whenever the button can load, `loading={isSaving}`: the status region that announces the wait is rendered as soon as the prop is set, so it exists before loading starts."
        },
        {
          "name": "loadingLabel",
          "type": "string",
          "description": "Text announced by screen readers when `loading` turns on. Localize it or name what is loading, for example \"Saving order\". Pass an empty string to keep a button silent, for rows that load together while one message is announced elsewhere."
        },
        {
          "name": "square",
          "type": "boolean",
          "description": "Forces a 1:1 aspect ratio at the size's height, for icon-only buttons and single characters such as page numbers. An icon-only button needs an accessible name: set `aria-label` on the button, or give the icon a `label`.",
          "default": "false"
        },
        {
          "name": "aria-label",
          "type": "string",
          "description": "Accessible name. Icon-only (`square`) buttons need one: set it here, or give the icon a `label` instead."
        },
        {
          "name": "aria-labelledby",
          "type": "string",
          "description": "`id` of an element that labels this button. Use instead of `aria-label` when the label is already visible elsewhere on the page."
        },
        {
          "name": "aria-describedby",
          "type": "string",
          "description": "`id` of an element that describes this button (typically helper text)."
        },
        {
          "name": "type",
          "type": "\"submit\" | \"reset\" | \"button\"",
          "description": "The type of the button.",
          "default": "\"button\""
        },
        {
          "name": "aria-controls",
          "type": "string",
          "description": "`id` of the element(s) controlled by this button."
        },
        {
          "name": "aria-expanded",
          "type": "boolean | \"true\" | \"false\"",
          "description": "Whether a grouping controlled by this button is expanded."
        },
        {
          "name": "aria-haspopup",
          "type": "boolean | \"menu\" | \"listbox\" | \"tree\" | \"grid\" | \"dialog\" | \"true\" | \"false\"",
          "description": "Availability and type of popup this button opens."
        },
        {
          "name": "href",
          "type": "string",
          "description": "Renders as an anchor element."
        },
        {
          "name": "target",
          "type": "\"_self\" | \"_blank\" | \"_parent\" | \"_top\"",
          "description": "Where to open the linked URL."
        },
        {
          "name": "download",
          "type": "boolean | string",
          "description": "Triggers a file download. Pass `true` to use the server filename or a string to override it."
        }
      ],
      "events": [
        {
          "name": "onClick",
          "type": "(event: MouseEvent<ButtonTarget>) => void",
          "description": "Handler called on click (mouse, touch, or keyboard activation)."
        },
        {
          "name": "onFocus",
          "type": "(event: FocusEvent<ButtonTarget>) => void",
          "description": "Handler called when the element receives focus."
        },
        {
          "name": "onBlur",
          "type": "(event: FocusEvent<ButtonTarget>) => void",
          "description": "Handler called when the element loses focus."
        }
      ],
      "cssProperties": [
        {
          "name": "--k-button-bg",
          "description": "Overrides the background color.",
          "default": "var(--k-color-theme-primary)"
        },
        {
          "name": "--k-button-text",
          "description": "Overrides the text color.",
          "default": "var(--k-color-text-on-primary)"
        },
        {
          "name": "--k-button-border",
          "description": "Overrides the border color.",
          "default": "transparent"
        },
        {
          "name": "--k-button-bg-hover",
          "description": "Overrides the hover and pressed background color.",
          "default": "var(--k-color-highlight-primary)"
        },
        {
          "name": "--k-button-text-hover",
          "description": "Overrides the hover and pressed text color.",
          "default": "var(--k-button-text)"
        },
        {
          "name": "--k-button-border-hover",
          "description": "Overrides the hover and pressed border color.",
          "default": "transparent"
        },
        {
          "name": "--k-button-radius",
          "description": "Overrides the border radius.",
          "default": "var(--k-radius-button)"
        },
        {
          "name": "--k-button-focus",
          "description": "Overrides the focus ring color.",
          "default": "var(--k-color-border-focus)"
        },
        {
          "name": "--k-button-height",
          "description": "Overrides the button height.",
          "default": "calc(line-height + 2 * padding)"
        }
      ],
      "guidelines": "## Accessibility\n\nUnder the hood this is a native `<button>`, or an `<a>` when you pass a `href`, so it behaves as people and assistive technologies expect.\n\n- **Use `href` for navigation.** Screen readers announce a link as going somewhere and a button as doing something. Do not navigate from `onClick`. In Next.js or React Router, wrap your app once in `KeskoProvider` with the router's navigate function, and links change pages without a full reload.\n- **Give icon-only buttons a label.** Pass `aria-label`, or set `label` on the icon. That text is what a screen reader reads out.\n- **Do not give screen readers a different label.** An `aria-label` on a button with visible text replaces that text as the accessible name. Someone using voice control activates a button by saying its visible text, for example “click Tallenna”, and that fails unless the accessible name contains the visible text. If the label needs to say more, change the visible text for everyone.\n- **Keep the meaning in the label.** The error variant marks a risky action for people who see red. The label has to mark it for everyone, for example “Poista tilaus” rather than “Vahvista”.\n- **Say what happens.** Screen reader users often jump from button to button and hear only the labels, so “Lue lisää” or “Klikkaa tästä” mean nothing on their own. Name the outcome, for example “Näytä tilaushistoria”.\n- **Avoid `disabled`.** A disabled button leaves the tab order and cannot explain itself. Keep it enabled and validate on click. If you must disable it, use the provided prop, not CSS: it sets `disabled` or `aria-disabled` for you.\n- **Use `loading` for short waits.** It blocks the button, keeps its size and renders a status spinner that screen readers announce. Show longer progress elsewhere.\n- **Announce bulk waits once.** When many buttons load together, for example one per table row, every region would speak. Pass `loadingLabel=\"\"` to those buttons and announce the wait once in a status region of your own.\n- **Check contrast when you override colors.** Text needs 4.5:1 against `--k-button-bg`, and `--k-button-focus` needs 3:1 against the surface the button sits on. Do not override the sizes: the small size is already the minimum target.\n\nSee the [accessibility guidelines](/accessibility/) and the [A11Y checklist](/a11y-checklist/) for more details.",
      "examples": [
        {
          "name": "default",
          "label": "Default",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\nimport { IconBasketAddTo, IconArrowRight, IconExternalLink } from \"@kesko/iconography/react\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n    <Button>\n      <IconBasketAddTo />\n      Primary\n    </Button>\n    <Button square>\n      <IconBasketAddTo label=\"Shopping basket\" />\n    </Button>\n    <Button variant=\"secondary\">\n      Secondary\n      <IconArrowRight />\n    </Button>\n    <Button variant=\"secondary\" appearance=\"outline\">Outline</Button>\n    <Button variant=\"secondary\" appearance=\"plain\" href=\"https://kesko.design\" target=\"_blank\">\n      Plain <IconExternalLink label=\"(Opens in a new window)\" />\n    </Button>\n    <Button variant=\"secondary\" appearance=\"text\">Text</Button>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"2xs\" align=\"center\">\n  <button class=\"k-button\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Primary\n  </button>\n  <button class=\"k-button\" square>\n    <svg role=\"img\" aria-label=\"Shopping basket\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n  </button>\n  <button class=\"k-button\" variant=\"secondary\" appearance=\"filled\">\n    Secondary\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.777 12.293l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.566L17.2 12.75H5.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h11.78l-4.928-4.928a.401.401 0 0 1 0-.565l.495-.495a.401.401 0 0 1 .565 0l6.465 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n  </button>\n  <button class=\"k-button\" variant=\"secondary\" appearance=\"outline\">Outline</button>\n  <a class=\"k-button\" href=\"https://kesko.design\" target=\"_blank\" variant=\"secondary\" appearance=\"plain\">\n    Plain\n    <svg role=\"img\" aria-label=\"(Opens in a new window)\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M21 13.15v5.1c0 .968-.782 1.75-1.75 1.75H4.75C3.782 20 3 19.218 3 18.25V7.75C3 6.782 3.782 6 4.75 6h5.1c.22 0 .4.18.4.4v.7c0 .22-.18.4-.4.4h-5.1a.25.25 0 0 0-.25.25v10.5c0 .138.113.25.25.25h14.5a.25.25 0 0 0 .25-.25v-5.1c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4zm1.278-6.933l-3.465-3.464a.401.401 0 0 0-.565 0l-.496.495a.401.401 0 0 0 0 .565L19.69 5.75H18a6.75 6.75 0 0 0-6.75 6.75v.1c0 .22.18.4.4.4h.7c.22 0 .4-.18.4-.4v-.1c0-2.9 2.35-5.25 5.25-5.25h1.69l-1.938 1.938a.401.401 0 0 0 0 .564l.495.495c.155.155.41.155.565 0l3.465-3.465a.401.401 0 0 0 0-.565z\" fill=\"currentColor\" /></svg>\n  </a>\n  <button class=\"k-button\" variant=\"secondary\" appearance=\"text\">Text</button>\n</k-stack>"
        },
        {
          "name": "accept-decline",
          "label": "Accept and decline",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\nimport { IconClear, IconTick } from \"@kesko/iconography/react\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n    <Button variant=\"success\">\n      <IconTick /> Accept\n    </Button>\n    <Button variant=\"error\">\n      <IconClear /> Decline\n    </Button>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"2xs\" align=\"center\">\n  <button class=\"k-button\" variant=\"success\" appearance=\"filled\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11 16a.745.745 0 0 1-.545-.235L6.73 11.807a.4.4 0 0 1 .018-.564l.51-.48a.4.4 0 0 1 .565.017l3.142 3.34 5.202-6.288a.398.398 0 0 1 .563-.052l.54.447c.17.14.195.393.052.563l-5.745 6.943a.759.759 0 0 1-.555.272h-.025z\" fill=\"currentColor\" /></svg>\n    Accept\n  </button>\n  <button class=\"k-button\" variant=\"error\" appearance=\"outline\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.247 16.188a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0L12 13.06l-4.188 4.188a.401.401 0 0 1-.565 0l-.495-.495a.401.401 0 0 1 0-.565L10.94 12 6.752 7.812a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0L12 10.94l4.187-4.187a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L13.06 12z\" fill=\"currentColor\" /></svg>\n    Decline\n  </button>\n</k-stack>"
        },
        {
          "name": "as-link",
          "label": "As link",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\nimport { IconExternalLink, IconDownload } from \"@kesko/iconography/react\";\n\nexport default () => (\n  <Stack direction=\"row\" align=\"center\">\n    <Button variant=\"secondary\" appearance=\"outline\" href=\"https://kesko.design\" target=\"_blank\">\n      External link <IconExternalLink label=\"(Opens in a new window)\" />\n    </Button>\n    <Button variant=\"secondary\" appearance=\"text\" href=\"/file.pdf\" download>\n      Download PDF <IconDownload />\n    </Button>\n  </Stack>\n);",
          "html": "<k-stack direction=\"row\" align=\"center\">\n  <a class=\"k-button\" href=\"https://kesko.design\" target=\"_blank\" variant=\"secondary\" appearance=\"outline\">\n    External link\n    <svg role=\"img\" aria-label=\"(Opens in a new window)\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M21 13.15v5.1c0 .968-.782 1.75-1.75 1.75H4.75C3.782 20 3 19.218 3 18.25V7.75C3 6.782 3.782 6 4.75 6h5.1c.22 0 .4.18.4.4v.7c0 .22-.18.4-.4.4h-5.1a.25.25 0 0 0-.25.25v10.5c0 .138.113.25.25.25h14.5a.25.25 0 0 0 .25-.25v-5.1c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4zm1.278-6.933l-3.465-3.464a.401.401 0 0 0-.565 0l-.496.495a.401.401 0 0 0 0 .565L19.69 5.75H18a6.75 6.75 0 0 0-6.75 6.75v.1c0 .22.18.4.4.4h.7c.22 0 .4-.18.4-.4v-.1c0-2.9 2.35-5.25 5.25-5.25h1.69l-1.938 1.938a.401.401 0 0 0 0 .564l.495.495c.155.155.41.155.565 0l3.465-3.465a.401.401 0 0 0 0-.565z\" fill=\"currentColor\" /></svg>\n  </a>\n  <a class=\"k-button\" href=\"/file.pdf\" download variant=\"secondary\" appearance=\"text\">\n    Download PDF\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22.962 15.235C22.637 17.978 20.23 20 17.467 20H15.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.077c2.015 0 3.78-1.477 3.998-3.48a3.906 3.906 0 0 0-2.32-4.01.767.767 0 0 1-.47-.757c.007-.105.018-.213.018-.32a3.914 3.914 0 0 0-3.91-3.91c-1.39 0-2.688.752-3.386 1.962a.754.754 0 0 1-1.048.26 2.208 2.208 0 0 0-.814-.33 2.047 2.047 0 0 0-2.388 1.99.801.801 0 0 1-.772.778 3.913 3.913 0 0 0-3.875 4.21c.15 1.99 2 3.61 3.995 3.61H8.6c.22 0 .4.18.4.4v.7c0 .22-.18.4-.4.4H6.537c-2.942 0-5.442-2.298-5.535-5.24A5.419 5.419 0 0 1 5.73 9.224a3.553 3.553 0 0 1 4.782-2.588 5.427 5.427 0 0 1 4.283-2.112 5.413 5.413 0 0 1 5.407 5.332 5.41 5.41 0 0 1 2.758 5.38zm-7.715-1.738l-.495-.495a.401.401 0 0 0-.565 0L12.75 14.44V10.4c0-.22-.18-.4-.4-.4h-.7c-.22 0-.4.18-.4.4v4.04l-1.438-1.438a.401.401 0 0 0-.564 0l-.495.495a.401.401 0 0 0 0 .565l2.965 2.965c.155.155.41.155.565 0l2.965-2.965a.401.401 0 0 0 0-.565z\" fill=\"currentColor\" /></svg>\n  </a>\n</k-stack>"
        },
        {
          "name": "custom-style",
          "label": "Custom style",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Button, Stack } from \"@kesko/components\";\n\nconst info = {\n  \"--k-button-bg\": \"var(--k-color-status-info)\",\n  \"--k-button-text\": \"var(--k-color-text-on-info)\",\n  \"--k-button-bg-hover\": \"var(--k-color-highlight-info)\",\n} as CSSProperties;\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n    <Button style={info}>Info</Button>\n    <Button appearance=\"outline\" style={{ \"--k-button-radius\": \"var(--k-radius-md)\" } as CSSProperties}>\n      Rounded corners\n    </Button>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"2xs\" align=\"center\">\n  <button class=\"k-button\" style=\"--k-button-bg: var(--k-color-status-info); --k-button-text: var(--k-color-text-on-info); --k-button-bg-hover: var(--k-color-highlight-info);\">Info</button>\n  <button class=\"k-button\" style=\"--k-button-radius: var(--k-radius-md);\" appearance=\"outline\">Rounded corners</button>\n</k-stack>"
        },
        {
          "name": "disabled",
          "label": "Disabled",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n    <Button disabled>Filled</Button>\n    <Button appearance=\"outline\" disabled>Outline</Button>\n    <Button appearance=\"plain\" disabled>Plain</Button>\n    <Button appearance=\"text\" disabled>Text</Button>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"2xs\" align=\"center\">\n  <button class=\"k-button\" disabled>Filled</button>\n  <button class=\"k-button\" appearance=\"outline\" disabled>Outline</button>\n  <button class=\"k-button\" appearance=\"plain\" disabled>Plain</button>\n  <button class=\"k-button\" appearance=\"text\" disabled>Text</button>\n</k-stack>"
        },
        {
          "name": "events",
          "label": "Events",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button } from \"@kesko/components\";\n\nexport default () => (\n  <Button onClick={() => alert(\"Clicked!\")}>Click me</Button>\n);",
          "html": "<button class=\"k-button\" onclick=\"alert('Clicked!')\">\n  Click me\n</button>"
        },
        {
          "name": "expand",
          "label": "Expand (full width)",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\nimport { IconArrowUp } from \"@kesko/iconography/react\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n    <Button expand>Full width</Button>\n    <Button expand>\n      Back to top <IconArrowUp />\n    </Button>\n  </Stack>\n);",
          "html": "<k-stack direction=\"row\" gap=\"2xs\" align=\"center\">\n  <button class=\"k-button\" expand>Full width</button>\n  <button class=\"k-button\" expand>\n    Back to top\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18.758 12.252l-.495.495a.401.401 0 0 1-.566 0L12.75 7.8v11.8c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4V7.82l-4.928 4.928a.401.401 0 0 1-.565 0l-.495-.495a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l6.465 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n  </button>\n</k-stack>"
        },
        {
          "name": "form",
          "label": "Form",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <form onSubmit={event => event.preventDefault()}>\n    <Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n      <Button type=\"submit\">Save</Button>\n      <Button type=\"reset\" variant=\"secondary\" appearance=\"outline\">\n        Reset\n      </Button>\n      <Button type=\"submit\" loading>\n        Saving\n      </Button>\n    </Stack>\n  </form>\n);\n",
          "html": "<form onsubmit=\"event.preventDefault()\">\n  <k-stack direction=\"row\" gap=\"2xs\" align=\"center\">\n    <button class=\"k-button\" type=\"submit\">Save</button>\n    <button class=\"k-button\" variant=\"secondary\" appearance=\"outline\" type=\"reset\">Reset</button>\n    <button class=\"k-button\" type=\"submit\" loading aria-disabled=\"true\" onclick=\"event.preventDefault()\">\n      <k-spinner aria-hidden=\"true\"></k-spinner>\n      Saving\n      <k-visually-hidden role=\"status\">Loading</k-visually-hidden>\n    </button>\n  </k-stack>\n</form>"
        },
        {
          "name": "loading",
          "label": "Loading",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n    <Button size=\"lg\" loading>Loading</Button>\n    <Button size=\"md\" loading>Loading</Button>\n    <Button size=\"sm\" loading>Loading</Button>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"2xs\" align=\"center\">\n  <button class=\"k-button k-button-lg\" loading aria-disabled=\"true\" onclick=\"event.preventDefault()\">\n    <k-spinner aria-hidden=\"true\" size=\"lg\"></k-spinner>\n    Loading\n    <k-visually-hidden role=\"status\">Loading</k-visually-hidden>\n  </button>\n  <button class=\"k-button\" loading aria-disabled=\"true\" onclick=\"event.preventDefault()\">\n    <k-spinner aria-hidden=\"true\"></k-spinner>\n    Loading\n    <k-visually-hidden role=\"status\">Loading</k-visually-hidden>\n  </button>\n  <button class=\"k-button k-button-sm\" loading aria-disabled=\"true\" onclick=\"event.preventDefault()\">\n    <k-spinner aria-hidden=\"true\" size=\"sm\"></k-spinner>\n    Loading\n    <k-visually-hidden role=\"status\">Loading</k-visually-hidden>\n  </button>\n</k-stack>"
        },
        {
          "name": "sizes",
          "label": "Sizes",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button } from \"@kesko/components\";\nimport { IconBasketAddTo } from \"@kesko/iconography/react\";\n\nexport default () => (\n  <div\n    style={{ display: \"grid\",\n      gridTemplateColumns: \"max-content repeat(4, max-content)\",\n      gap: \"var(--k-space-2xs) var(--k-space-sm)\",\n      alignItems: \"center\",\n      justifyItems: \"start\",\n    }}\n  >\n    <span className=\"k-text-sm\">Large</span>\n    <Button appearance=\"filled\" size=\"lg\">\n      <IconBasketAddTo /> Filled\n    </Button>\n    <Button appearance=\"outline\" size=\"lg\">\n      <IconBasketAddTo /> Outline\n    </Button>\n    <Button appearance=\"plain\" size=\"lg\">\n      <IconBasketAddTo /> Plain\n    </Button>\n    <Button size=\"lg\" square>\n      <IconBasketAddTo label=\"Add to basket\" />\n    </Button>\n    <span className=\"k-text-sm\">Medium</span>\n    <Button appearance=\"filled\">\n      <IconBasketAddTo /> Filled\n    </Button>\n    <Button appearance=\"outline\">\n      <IconBasketAddTo /> Outline\n    </Button>\n    <Button appearance=\"plain\">\n      <IconBasketAddTo /> Plain\n    </Button>\n    <Button square>\n      <IconBasketAddTo label=\"Add to basket\" />\n    </Button>\n    <span className=\"k-text-sm\">Small</span>\n    <Button appearance=\"filled\" size=\"sm\">\n      <IconBasketAddTo /> Filled\n    </Button>\n    <Button appearance=\"outline\" size=\"sm\">\n      <IconBasketAddTo /> Outline\n    </Button>\n    <Button appearance=\"plain\" size=\"sm\">\n      <IconBasketAddTo /> Plain\n    </Button>\n    <Button size=\"sm\" square>\n      <IconBasketAddTo label=\"Add to basket\" />\n    </Button>\n  </div>\n);\n",
          "html": "<div style=\"display: grid; grid-template-columns: max-content repeat(4, max-content); gap: var(--k-space-2xs) var(--k-space-sm); align-items: center; justify-items: start;\">\n  <span class=\"k-text-sm\">Large</span>\n  <button class=\"k-button\" size=\"lg\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Filled\n  </button>\n  <button class=\"k-button\" size=\"lg\" appearance=\"outline\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Outline\n  </button>\n  <button class=\"k-button\" size=\"lg\" appearance=\"plain\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Plain\n  </button>\n  <button class=\"k-button\" size=\"lg\" square>\n    <svg role=\"img\" aria-label=\"Add to basket\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n  </button>\n  <span class=\"k-text-sm\">Medium</span>\n  <button class=\"k-button\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Filled\n  </button>\n  <button class=\"k-button\" appearance=\"outline\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Outline\n  </button>\n  <button class=\"k-button\" appearance=\"plain\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Plain\n  </button>\n  <button class=\"k-button\" square>\n    <svg role=\"img\" aria-label=\"Add to basket\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n  </button>\n  <span class=\"k-text-sm\">Small</span>\n  <button class=\"k-button\" size=\"sm\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Filled\n  </button>\n  <button class=\"k-button\" size=\"sm\" appearance=\"outline\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Outline\n  </button>\n  <button class=\"k-button\" size=\"sm\" appearance=\"plain\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Plain\n  </button>\n  <button class=\"k-button\" size=\"sm\" square>\n    <svg role=\"img\" aria-label=\"Add to basket\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n  </button>\n</div>"
        },
        {
          "name": "variants",
          "label": "Variants",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button } from \"@kesko/components\";\nimport { IconBasketAddTo } from \"@kesko/iconography/react\";\n\nexport default () => (\n  <div style={{\n      display: \"grid\",\n      gridTemplateColumns: \"max-content repeat(4, max-content)\",\n      gap: \"var(--k-space-2xs) var(--k-space-sm)\",\n      alignItems: \"center\",\n      justifyItems: \"start\",\n    }}\n  >\n    <span className=\"k-text-sm\">Primary</span>\n    <Button>\n      <IconBasketAddTo /> Filled\n    </Button>\n    <Button appearance=\"outline\">\n      <IconBasketAddTo /> Outline\n    </Button>\n    <Button appearance=\"plain\">\n      <IconBasketAddTo /> Plain\n    </Button>\n    <Button appearance=\"text\">\n      <IconBasketAddTo /> Text\n    </Button>\n    <span className=\"k-text-sm\">Secondary</span>\n    <Button variant=\"secondary\">\n      <IconBasketAddTo /> Filled\n    </Button>\n    <Button variant=\"secondary\" appearance=\"outline\">\n      <IconBasketAddTo /> Outline\n    </Button>\n    <Button variant=\"secondary\" appearance=\"plain\">\n      <IconBasketAddTo /> Plain\n    </Button>\n    <Button variant=\"secondary\" appearance=\"text\">\n      <IconBasketAddTo /> Text\n    </Button>\n    <div\n      style={{\n        gridColumn: \"1 / -1\",\n        display: \"grid\",\n        gridTemplateColumns: \"subgrid\",\n        alignItems: \"center\",\n        padding: \"var(--k-space-sm)\",\n        marginInline: \"calc(-1 * var(--k-space-sm))\",\n        borderRadius: \"var(--k-radius-md)\",\n        background: \"var(--k-color-bg-inverted)\",\n        color: \"var(--k-color-text-inverted)\",\n      }}\n    >\n      <span className=\"k-text-sm\">Neutral</span>\n      <Button variant=\"neutral\">\n        <IconBasketAddTo /> Filled\n      </Button>\n      <Button variant=\"neutral\" appearance=\"outline\">\n        <IconBasketAddTo /> Outline\n      </Button>\n      <Button variant=\"neutral\" appearance=\"plain\">\n        <IconBasketAddTo /> Plain\n      </Button>\n      <Button variant=\"neutral\" appearance=\"text\">\n        <IconBasketAddTo /> Text\n      </Button>\n    </div>\n  </div>\n);\n",
          "html": "<div style=\"display: grid; grid-template-columns: max-content repeat(4, max-content); gap: var(--k-space-2xs) var(--k-space-sm); align-items: center; justify-items: start;\">\n  <span class=\"k-text-sm\">Primary</span>\n  <button class=\"k-button\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Filled\n  </button>\n  <button class=\"k-button\" appearance=\"outline\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Outline\n  </button>\n  <button class=\"k-button\" appearance=\"plain\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Plain\n  </button>\n  <button class=\"k-button\" appearance=\"text\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Text\n  </button>\n  <span class=\"k-text-sm\">Secondary</span>\n  <button class=\"k-button\" variant=\"secondary\" appearance=\"filled\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Filled\n  </button>\n  <button class=\"k-button\" variant=\"secondary\" appearance=\"outline\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Outline\n  </button>\n  <button class=\"k-button\" variant=\"secondary\" appearance=\"plain\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Plain\n  </button>\n  <button class=\"k-button\" variant=\"secondary\" appearance=\"text\">\n    <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n    Text\n  </button>\n  <div style=\"grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; align-items: center; padding: var(--k-space-sm); margin-inline: calc(-1 * var(--k-space-sm)); border-radius: var(--k-radius-md); background: var(--k-color-bg-inverted); color: var(--k-color-text-inverted);\">\n    <span class=\"k-text-sm\">Neutral</span>\n    <button class=\"k-button\" variant=\"neutral\" appearance=\"filled\">\n      <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n      Filled\n    </button>\n    <button class=\"k-button\" variant=\"neutral\" appearance=\"outline\">\n      <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n      Outline\n    </button>\n    <button class=\"k-button\" variant=\"neutral\" appearance=\"plain\">\n      <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n      Plain\n    </button>\n    <button class=\"k-button\" variant=\"neutral\" appearance=\"text\">\n      <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22 18.65v.7c0 .22-.18.4-.4.4h-2.85v2.85c0 .22-.18.4-.4.4h-.7c-.22 0-.4-.18-.4-.4v-2.85H14.4c-.22 0-.4-.18-.4-.4v-.7c0-.22.18-.4.4-.4h2.85V15.4c0-.22.18-.4.4-.4h.7c.22 0 .4.18.4.4v2.85h2.85c.22 0 .4.18.4.4zM12 19.9v.7c0 .22-.18.4-.4.4H5.787c-.81 0-1.512-.555-1.702-1.343L1.27 7.925A.757.757 0 0 1 2 7h5c.061-2.716 2.347-5.047 5.092-5 2.705.05 4.905 2.292 4.905 5v.75c0 .415-.335.75-.75.75H2.952l2.595 10.807a.25.25 0 0 0 .243.193h5.812c.22 0 .4.18.4.4zM8.502 7H15.5a3.516 3.516 0 0 0-3.433-3.5c-1.914-.037-3.509 1.612-3.565 3.497zM22 7h-2.6c-.22 0-.4.18-.4.4v.7c0 .22.18.4.4.4h1.647l-1.185 4.935a.4.4 0 0 0 .295.482l.68.163a.4.4 0 0 0 .483-.295l1.407-5.86A.752.752 0 0 0 22 7z\" fill=\"currentColor\" /></svg>\n      Text\n    </button>\n  </div>\n</div>"
        }
      ],
      "preview": "<svg viewBox=\"0 0 240 140\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n  <rect x=\"75\" y=\"58\" width=\"90\" height=\"24\" rx=\"6\" fill=\"currentColor\" fill-opacity=\"0.18\"/>\n  <rect x=\"96\" y=\"68\" width=\"48\" height=\"4\" rx=\"2\" fill=\"currentColor\" fill-opacity=\"0.55\"/>\n</svg>"
    },
    {
      "name": "Divider",
      "displayName": "Divider",
      "slug": "divider",
      "status": "pre-release",
      "description": "Divider component is used to visually separate and group elements horizontally or vertically.",
      "path": "divider/divider.js",
      "docs": "https://kesko.design/components/divider/",
      "props": [
        {
          "name": "orientation",
          "type": "\"horizontal\" | \"vertical\"",
          "description": "The orientation of the divider.",
          "default": "\"horizontal\""
        }
      ],
      "events": [],
      "cssProperties": [
        {
          "name": "--k-divider-color",
          "description": "Overrides the divider color.",
          "default": "var(--k-color-border-divider)"
        },
        {
          "name": "--k-divider-size",
          "description": "Overrides the divider size.",
          "default": "1px"
        }
      ],
      "guidelines": "## Accessibility\n\nThe divider is a `role=\"separator\"` with the matching `aria-orientation`, so screen readers can announce it as a break between content. It is not focusable and carries no text content.\n\n- **Separate sections, not sentences.** Place it between blocks of content or list groups, where a screen reader announcing “separator” adds meaning. Inside running text or a single label it only interrupts.\n- **Give vertical dividers a height.** A vertical divider only shows a line as tall as its container, with one line of text as the minimum.\n- **Keep it empty.** The component drops any children. A heading or a label that belongs to the next section goes after the divider, not inside it.\n- **Pick a stronger color when the line carries meaning.** The default `--k-color-border-divider` is a subtle neutral, about 2:1 against the page background, which is fine for a line that only tidies the layout. When people need to see the line to understand the page, use a color with 3:1 against the surface it sits on.\n\nSee the [accessibility guidelines](/accessibility/) and the [A11Y checklist](/a11y-checklist/) for more details.",
      "examples": [
        {
          "name": "default",
          "label": "Default",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Divider, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <Stack>\n    Item\n    <Divider />\n    Item\n    <Divider />\n    Item\n  </Stack>\n);",
          "html": "<k-stack>\n  Item\n  <k-divider></k-divider>\n  Item\n  <k-divider></k-divider>\n  Item\n</k-stack>"
        },
        {
          "name": "color",
          "label": "Color",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\"\nimport { Divider } from \"@kesko/components\";\n\nexport default () => (\n  <Divider style={{\"--k-divider-color\": \"var(--k-color-theme)\"} as CSSProperties} />\n);",
          "html": "<k-divider style=\"--k-divider-color: var(--k-color-theme)\"></k-divider>"
        },
        {
          "name": "orientation",
          "label": "Orientation",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Divider, Stack } from \"@kesko/components\";\n\nexport default () => (\n  \n  <Stack direction=\"row\">\n    Item\n    <Divider orientation=\"vertical\" />\n    Item\n    <Divider orientation=\"vertical\" />\n    Item\n  </Stack>\n);",
          "html": "<k-stack direction=\"row\">\n  Item\n  <k-divider orientation=\"vertical\"></k-divider>\n  Item\n  <k-divider orientation=\"vertical\"></k-divider>\n  Item\n</k-stack>"
        },
        {
          "name": "size",
          "label": "Size",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\"\nimport { Divider } from \"@kesko/components\";\n\nexport default () => (\n  <Divider style={{\"--k-divider-size\": \"var(--k-size-border-button)\"} as CSSProperties} />\n);",
          "html": "<k-divider style=\"--k-divider-size: var(--k-size-border-button)\"></k-divider>"
        }
      ],
      "preview": "<svg viewBox=\"0 0 240 140\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n  <rect x=\"80\" y=\"56\" width=\"80\" height=\"12\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.15\"/>\n  <rect x=\"60\" y=\"75\" width=\"120\" height=\"2\" fill=\"currentColor\" fill-opacity=\"0.55\"/>\n  <rect x=\"80\" y=\"84\" width=\"80\" height=\"12\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.15\"/>\n</svg>"
    },
    {
      "name": "Pagination",
      "displayName": "Pagination",
      "slug": "pagination",
      "status": "pre-release",
      "description": "The Pagination component enables the user to select a specific page from a range of pages with previous and next controls, collapsing long ranges with ellipses.",
      "path": "pagination/pagination.js",
      "docs": "https://kesko.design/components/pagination/",
      "props": [
        {
          "name": "count",
          "type": "number",
          "description": "Total number of pages."
        },
        {
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\"",
          "description": "Size of the page and control buttons.",
          "default": "\"md\""
        },
        {
          "name": "siblingCount",
          "type": "number",
          "description": "Number of always-visible page buttons on each side of the active page.",
          "default": "1"
        },
        {
          "name": "boundaryCount",
          "type": "number",
          "description": "Number of always-visible page buttons at the start and end of the range.",
          "default": "1"
        },
        {
          "name": "pageLabel",
          "type": "(page: number) => string",
          "description": "Overrides the translated accessible name of a numbered page button, “Sivu 3” by default. Previous and next are named by their visible labels."
        },
        {
          "name": "previousLabel",
          "type": "string",
          "description": "Label for the previous-page button: visible text, or the accessible name when `hideLabels` is set."
        },
        {
          "name": "nextLabel",
          "type": "string",
          "description": "Label for the next-page button: visible text, or the accessible name when `hideLabels` is set."
        },
        {
          "name": "hideLabels",
          "type": "boolean",
          "description": "Shows the previous and next controls as icon-only square buttons, named by `previousLabel` and `nextLabel`.",
          "default": "false"
        },
        {
          "name": "hidePrevious",
          "type": "boolean",
          "description": "Hides the previous-page button.",
          "default": "false"
        },
        {
          "name": "hideNext",
          "type": "boolean",
          "description": "Hides the next-page button.",
          "default": "false"
        },
        {
          "name": "page",
          "type": "number",
          "description": "The currently active page (1-based)."
        },
        {
          "name": "aria-label",
          "type": "string",
          "description": "Accessible label for the navigation landmark."
        },
        {
          "name": "href",
          "type": "(paginationItem: PaginationItem) => string",
          "description": "Returns the href for a page item as well as next and prev buttons, rendering the items as links."
        }
      ],
      "events": [
        {
          "name": "onChange",
          "type": "(page: number, event: MouseEvent<ButtonTarget>) => void",
          "description": "Called with the newly selected page and the originating click event."
        }
      ],
      "cssProperties": [
        {
          "name": "--k-pagination-column-gap",
          "description": "Overrides the horizontal gap between items.",
          "default": "var(--k-space-3xs)"
        },
        {
          "name": "--k-pagination-row-gap",
          "description": "Overrides the vertical gap between the page list and the controls.",
          "default": "var(--k-space-2xs)"
        },
        {
          "name": "--k-pagination-color",
          "description": "Overrides the current page background. Also colors the text of the other items unless `--k-pagination-color-item` is set.",
          "default": "var(--k-color-theme-primary)"
        },
        {
          "name": "--k-pagination-color-hover",
          "description": "Overrides the hover and pressed background of the current page. Also colors the hover text of the other items unless `--k-pagination-color-item` or `--k-pagination-color-item-hover` is set.",
          "default": "var(--k-color-highlight-primary)"
        },
        {
          "name": "--k-pagination-color-text",
          "description": "Overrides the text color on the current page.",
          "default": "var(--k-color-text-on-primary)"
        },
        {
          "name": "--k-pagination-color-item",
          "description": "Overrides the text of the other pages, the controls and the ellipsis. Set it when the accent is a fill that is not readable as text, as the secondary color is in dark mode.",
          "default": "var(--k-color-text-primary)"
        },
        {
          "name": "--k-pagination-color-item-hover",
          "description": "Overrides the hover and pressed text of the other pages and controls.",
          "default": "var(--k-pagination-color-item)"
        },
        {
          "name": "--k-pagination-color-tint",
          "description": "Overrides the hover and pressed background of the other pages and controls.",
          "default": "var(--k-color-bg-primary)"
        }
      ],
      "guidelines": "## Accessibility\n\nUnder the hood this is a `<nav>` landmark holding native buttons, or links when you pass `href`, so people can jump to it, step through it and hear which page is current.\n\n- **Name it when there are several.** Every pagination is a `navigation` landmark called “Sivutus” by default. When a page has more than one, for example search results and comments, pass a distinct `aria-label` to each, such as “Hakutulosten sivutus”, so a landmark list tells them apart.\n- **Prefer `href` when pages are URLs.** Links give people a real address: the back button works, the page can be opened in a new tab and screen readers announce a link to a page rather than a button that does something.\n- **Decide what the page buttons say.** A page button is named “Page {page}” by default and follows the language like the other built-in text. The name keeps the visible number, so saying “click 3” still works with voice control. Pass `pageLabel` to override it per instance.\n- **Previous and next are named by their visible text.** Screen readers read the “Edellinen” and “Seuraava” text as it is shown, and the component has no prop for a different hidden name. This is on purpose: someone using voice control activates a button by saying its visible text, for example “click Edellinen”, and that only works when the accessible name contains the visible text.\n- **Keep the controls where they are.** Previous and next stay focusable when there is nowhere to go; they are marked `aria-disabled` instead of removed or disabled, so focus is never lost when someone reaches the first or last page.\n- **Keep it on one row on small screens.** The page list never wraps, so a wide range overflows a narrow viewport. Lower `siblingCount` or `boundaryCount`, or pass `size=\"sm\"`, where the component has less than about 360px to work with.\n- **Check contrast when you override the item color.** `--k-pagination-color-item` paints the other pages, the controls and the ellipsis, and needs 4.5:1 against the page background and against `--k-pagination-color-tint`.\n\nSee the [accessibility guidelines](/accessibility/) and the [A11Y checklist](/a11y-checklist/) for more details.",
      "examples": [
        {
          "name": "default",
          "label": "Default",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useState } from \"react\";\nimport { Pagination } from \"@kesko/components\";\n\nexport default () => {\n  const [page, setPage] = useState(1);\n\n  return <Pagination count={10} page={page} onChange={setPage} />;\n};\n",
          "html": "<nav class=\"k-pagination\" aria-label=\"Pagination\">\n  <div class=\"k-pagination-content\">\n    <div class=\"k-pagination-prev\">\n      <button class=\"k-button\" appearance=\"plain\" aria-disabled=\"true\" onclick=\"event.preventDefault()\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n        Previous\n      </button>\n    </div>\n\n    <div class=\"k-pagination-pages\">\n      <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 1\">1</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 3\">3</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 5\">5</button>\n      <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 10\">10</button>\n    </div>\n\n    <div class=\"k-pagination-next\">\n      <button class=\"k-button\" appearance=\"plain\">\n        Next\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n      </button>\n    </div>\n  </div>\n</nav>"
        },
        {
          "name": "custom-style",
          "label": "Custom style",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { useState } from \"react\";\nimport { Pagination } from \"@kesko/components\";\n\nconst secondary = {\n  \"--k-pagination-color\": \"var(--k-color-theme-secondary)\",\n  \"--k-pagination-color-hover\": \"var(--k-color-highlight-secondary)\",\n  \"--k-pagination-color-text\": \"var(--k-color-text-on-secondary)\",\n  \"--k-pagination-color-item\": \"var(--k-color-text-secondary)\",\n  \"--k-pagination-color-tint\": \"var(--k-color-bg-secondary)\",\n  \"--k-button-radius\": \"var(--k-radius-sm)\",\n} as CSSProperties;\n\nexport default () => {\n  const [page, setPage] = useState(5);\n\n  return <Pagination count={20} page={page} onChange={setPage} style={secondary} />;\n};\n",
          "html": "<nav class=\"k-pagination\" aria-label=\"Pagination\" style=\"--k-pagination-color: var(--k-color-theme-secondary); --k-pagination-color-hover: var(--k-color-highlight-secondary); --k-pagination-color-text: var(--k-color-text-on-secondary); --k-pagination-color-item: var(--k-color-text-secondary); --k-pagination-color-tint: var(--k-color-bg-secondary); --k-button-radius: var(--k-radius-sm)\">\n  <div class=\"k-pagination-content\">\n    <div class=\"k-pagination-prev\">\n      <button class=\"k-button\" appearance=\"plain\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n        Previous\n      </button>\n    </div>\n\n    <div class=\"k-pagination-pages\">\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 1\">1</button>\n      <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n      <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 5\">5</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 6\">6</button>\n      <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 20\">20</button>\n    </div>\n\n    <div class=\"k-pagination-next\">\n      <button class=\"k-button\" appearance=\"plain\">\n        Next\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n      </button>\n    </div>\n  </div>\n</nav>"
        },
        {
          "name": "hidden-controls",
          "label": "Hidden controls",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useState } from \"react\";\nimport { Pagination } from \"@kesko/components\";\n\nexport default () => {\n  const [page, setPage] = useState(1);\n\n  return <Pagination count={5} page={page} onChange={setPage} hidePrevious hideNext />;\n};\n",
          "html": "<nav class=\"k-pagination\" aria-label=\"Pagination\">\n  <div class=\"k-pagination-content\">\n    <div class=\"k-pagination-pages\">\n      <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 1\">1</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 3\">3</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 5\">5</button>\n    </div>\n  </div>\n</nav>"
        },
        {
          "name": "icon-only",
          "label": "Icon only",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useState } from \"react\";\nimport { Pagination } from \"@kesko/components\";\n\nexport default () => {\n  const [page, setPage] = useState(1);\n\n  return <Pagination count={5} page={page} onChange={setPage} hideLabels />;\n};\n",
          "html": "<nav class=\"k-pagination\" aria-label=\"Pagination\">\n  <div class=\"k-pagination-content\">\n    <div class=\"k-pagination-prev\">\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Previous\" aria-disabled=\"true\" onclick=\"event.preventDefault()\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n      </button>\n    </div>\n\n    <div class=\"k-pagination-pages\">\n      <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 1\">1</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 3\">3</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 5\">5</button>\n    </div>\n\n    <div class=\"k-pagination-next\">\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Next\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n      </button>\n    </div>\n  </div>\n</nav>"
        },
        {
          "name": "labels",
          "label": "Labels",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useState } from \"react\";\nimport { Pagination } from \"@kesko/components\";\n\nexport default () => {\n  const [page, setPage] = useState(3);\n\n  return (\n    <Pagination\n      count={10}\n      page={page}\n      onChange={setPage}\n      previousLabel=\"Newer posts\"\n      nextLabel=\"Older posts\"\n      pageLabel={page => `Page ${page}`}\n    />\n  );\n};\n",
          "html": "<nav class=\"k-pagination\" aria-label=\"Pagination\">\n  <div class=\"k-pagination-content\">\n    <div class=\"k-pagination-prev\">\n      <button class=\"k-button\" appearance=\"plain\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n        Newer posts\n      </button>\n    </div>\n\n    <div class=\"k-pagination-pages\">\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 1\">1</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n      <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 3\">3</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 5\">5</button>\n      <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 10\">10</button>\n    </div>\n\n    <div class=\"k-pagination-next\">\n      <button class=\"k-button\" appearance=\"plain\">\n        Older posts\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n      </button>\n    </div>\n  </div>\n</nav>"
        },
        {
          "name": "links",
          "label": "Links",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useEffect, useState } from \"react\";\nimport { Pagination } from \"@kesko/components\";\n\nconst count = 10;\nconst pageFromHash = () => Number(window.location.hash.replace(\"#page-\", \"\")) || 1;\n\nexport default () => {\n  const [page, setPage] = useState(1);\n  const target = (item: number | \"previous\" | \"next\") =>\n    item === \"previous\" ? Math.max(page - 1, 1) : item === \"next\" ? Math.min(page + 1, count) : item;\n\n  useEffect(() => {\n    const sync = () => setPage(pageFromHash());\n    sync();\n    window.addEventListener(\"hashchange\", sync);\n    return () => window.removeEventListener(\"hashchange\", sync);\n  }, []);\n\n  return <Pagination count={count} page={page} href={item => `#page-${target(item)}`} />;\n};\n",
          "html": "<nav class=\"k-pagination\" aria-label=\"Pagination\">\n  <div class=\"k-pagination-content\">\n    <div class=\"k-pagination-prev\">\n      <a class=\"k-button\" appearance=\"plain\" aria-disabled=\"true\" href=\"#page-1\" onclick=\"event.preventDefault()\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n        Previous\n      </a>\n    </div>\n\n    <div class=\"k-pagination-pages\">\n      <a class=\"k-button\" square aria-current=\"page\" href=\"#page-1\" aria-label=\"Page 1\">1</a>\n      <a class=\"k-button\" appearance=\"plain\" square href=\"#page-2\" aria-label=\"Page 2\">2</a>\n      <a class=\"k-button\" appearance=\"plain\" square href=\"#page-3\" aria-label=\"Page 3\">3</a>\n      <a class=\"k-button\" appearance=\"plain\" square href=\"#page-4\" aria-label=\"Page 4\">4</a>\n      <a class=\"k-button\" appearance=\"plain\" square href=\"#page-5\" aria-label=\"Page 5\">5</a>\n      <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n      <a class=\"k-button\" appearance=\"plain\" square href=\"#page-10\" aria-label=\"Page 10\">10</a>\n    </div>\n\n    <div class=\"k-pagination-next\">\n      <a class=\"k-button\" appearance=\"plain\" href=\"#page-2\">\n        Next\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n      </a>\n    </div>\n  </div>\n</nav>"
        },
        {
          "name": "search-results",
          "label": "Search results",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useState } from \"react\";\nimport { Pagination, Stack } from \"@kesko/components\";\n\nconst PER_PAGE = 3;\nconst PRODUCTS = Array.from({ length: 12 }, (_, i) => `Product ${i + 1}`);\n\nexport default () => {\n  const [page, setPage] = useState(1);\n  const count = Math.ceil(PRODUCTS.length / PER_PAGE);\n  const visible = PRODUCTS.slice((page - 1) * PER_PAGE, page * PER_PAGE);\n\n  return (\n    <Stack gap=\"md\" align=\"stretch\">\n      <ul>\n        {visible.map(name => (\n          <li key={name}>{name}</li>\n        ))}\n      </ul>\n      <Pagination count={count} page={page} onChange={setPage} aria-label=\"Search results pages\" />\n    </Stack>\n  );\n};\n",
          "html": "<k-stack gap=\"md\" align=\"stretch\">\n  <ul>\n    <li>Product 1</li>\n    <li>Product 2</li>\n    <li>Product 3</li>\n  </ul>\n  <nav class=\"k-pagination\" aria-label=\"Search results pages\">\n    <div class=\"k-pagination-content\">\n      <div class=\"k-pagination-prev\">\n        <button class=\"k-button\" appearance=\"plain\" aria-disabled=\"true\" onclick=\"event.preventDefault()\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n          Previous\n        </button>\n      </div>\n\n      <div class=\"k-pagination-pages\">\n        <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 1\">1</button>\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 3\">3</button>\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n      </div>\n\n      <div class=\"k-pagination-next\">\n        <button class=\"k-button\" appearance=\"plain\">\n          Next\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n        </button>\n      </div>\n    </div>\n  </nav>\n</k-stack>"
        },
        {
          "name": "sizes",
          "label": "Sizes",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useState } from \"react\";\nimport { Pagination, Stack } from \"@kesko/components\";\n\nexport default () => {\n  const [page, setPage] = useState(3);\n\n  return (\n    <Stack gap=\"lg\" align=\"stretch\">\n      <Pagination count={10} page={page} onChange={setPage} size=\"sm\" aria-label=\"Small\" />\n      <Pagination count={10} page={page} onChange={setPage} aria-label=\"Medium\" />\n      <Pagination count={10} page={page} onChange={setPage} size=\"lg\" aria-label=\"Large\" />\n    </Stack>\n  );\n};\n",
          "html": "<k-stack gap=\"lg\" align=\"stretch\">\n  <nav class=\"k-pagination k-pagination-sm\" aria-label=\"Small\">\n    <div class=\"k-pagination-content\">\n      <div class=\"k-pagination-prev\">\n        <button class=\"k-button k-button-sm\" appearance=\"plain\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n          Previous\n        </button>\n      </div>\n\n      <div class=\"k-pagination-pages\">\n        <button class=\"k-button k-button-sm\" appearance=\"plain\" square aria-label=\"Page 1\">1</button>\n        <button class=\"k-button k-button-sm\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n        <button class=\"k-button k-button-sm\" square aria-current=\"page\" aria-label=\"Page 3\">3</button>\n        <button class=\"k-button k-button-sm\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n        <button class=\"k-button k-button-sm\" appearance=\"plain\" square aria-label=\"Page 5\">5</button>\n        <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n        <button class=\"k-button k-button-sm\" appearance=\"plain\" square aria-label=\"Page 10\">10</button>\n      </div>\n\n      <div class=\"k-pagination-next\">\n        <button class=\"k-button k-button-sm\" appearance=\"plain\">\n          Next\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n        </button>\n      </div>\n    </div>\n  </nav>\n  <nav class=\"k-pagination\" aria-label=\"Medium\">\n    <div class=\"k-pagination-content\">\n      <div class=\"k-pagination-prev\">\n        <button class=\"k-button\" appearance=\"plain\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n          Previous\n        </button>\n      </div>\n\n      <div class=\"k-pagination-pages\">\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 1\">1</button>\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n        <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 3\">3</button>\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 5\">5</button>\n        <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n        <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 10\">10</button>\n      </div>\n\n      <div class=\"k-pagination-next\">\n        <button class=\"k-button\" appearance=\"plain\">\n          Next\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n        </button>\n      </div>\n    </div>\n  </nav>\n  <nav class=\"k-pagination k-pagination-lg\" aria-label=\"Large\">\n    <div class=\"k-pagination-content\">\n      <div class=\"k-pagination-prev\">\n        <button class=\"k-button k-button-lg\" appearance=\"plain\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n          Previous\n        </button>\n      </div>\n\n      <div class=\"k-pagination-pages\">\n        <button class=\"k-button k-button-lg\" appearance=\"plain\" square aria-label=\"Page 1\">1</button>\n        <button class=\"k-button k-button-lg\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n        <button class=\"k-button k-button-lg\" square aria-current=\"page\" aria-label=\"Page 3\">3</button>\n        <button class=\"k-button k-button-lg\" appearance=\"plain\" square aria-label=\"Page 4\">4</button>\n        <button class=\"k-button k-button-lg\" appearance=\"plain\" square aria-label=\"Page 5\">5</button>\n        <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n        <button class=\"k-button k-button-lg\" appearance=\"plain\" square aria-label=\"Page 10\">10</button>\n      </div>\n\n      <div class=\"k-pagination-next\">\n        <button class=\"k-button k-button-lg\" appearance=\"plain\">\n          Next\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n        </button>\n      </div>\n    </div>\n  </nav>\n</k-stack>"
        },
        {
          "name": "windowed",
          "label": "Windowed",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { useState } from \"react\";\nimport { Pagination } from \"@kesko/components\";\n\nexport default () => {\n  const [page, setPage] = useState(10);\n\n  return <Pagination count={20} page={page} siblingCount={2} boundaryCount={2} onChange={setPage} />;\n};\n",
          "html": "<nav class=\"k-pagination\" aria-label=\"Pagination\">\n  <div class=\"k-pagination-content\">\n    <div class=\"k-pagination-prev\">\n      <button class=\"k-button\" appearance=\"plain\">\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.748 17.688a.401.401 0 0 1 0 .565l-.495.495a.401.401 0 0 1-.565 0l-6.465-6.465a.401.401 0 0 1 0-.565l6.465-6.465a.401.401 0 0 1 .565 0l.495.495a.401.401 0 0 1 0 .565L9.06 12z\" fill=\"currentColor\" /></svg>\n        Previous\n      </button>\n    </div>\n\n    <div class=\"k-pagination-pages\">\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 1\">1</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 2\">2</button>\n      <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 8\">8</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 9\">9</button>\n      <button class=\"k-button\" square aria-current=\"page\" aria-label=\"Page 10\">10</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 11\">11</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 12\">12</button>\n      <span class=\"k-pagination-ellipsis\" aria-hidden=\"true\">…</span>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 19\">19</button>\n      <button class=\"k-button\" appearance=\"plain\" square aria-label=\"Page 20\">20</button>\n    </div>\n\n    <div class=\"k-pagination-next\">\n      <button class=\"k-button\" appearance=\"plain\">\n        Next\n        <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.777 12.283l-6.465 6.465a.401.401 0 0 1-.564 0l-.495-.495a.401.401 0 0 1 0-.565L14.94 12 9.253 6.312a.401.401 0 0 1 0-.565l.495-.494a.401.401 0 0 1 .565 0l6.464 6.465a.401.401 0 0 1 0 .565z\" fill=\"currentColor\" /></svg>\n      </button>\n    </div>\n  </div>\n</nav>"
        }
      ],
      "preview": "<svg viewBox=\"0 0 240 140\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n  <rect x=\"73\" y=\"60\" width=\"20\" height=\"20\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.22\"/>\n  <rect x=\"99\" y=\"60\" width=\"20\" height=\"20\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.55\"/>\n  <rect x=\"125\" y=\"60\" width=\"20\" height=\"20\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.22\"/>\n  <rect x=\"151\" y=\"60\" width=\"20\" height=\"20\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.22\"/>\n</svg>"
    },
    {
      "name": "Spinner",
      "displayName": "Spinner",
      "slug": "spinner",
      "status": "pre-release",
      "description": "Spinner component is an animated icon that lets users know content or result of an action is being loaded.",
      "path": "spinner/spinner.js",
      "docs": "https://kesko.design/components/spinner/",
      "props": [
        {
          "name": "size",
          "type": "\"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\"",
          "description": "The size of the spinner.",
          "default": "\"md\""
        },
        {
          "name": "label",
          "type": "string",
          "description": "Accessible label for the spinner."
        },
        {
          "name": "aria-hidden",
          "type": "boolean | \"true\" | \"false\"",
          "description": "Hides the spinner from assistive technology and drops its role and label. Use it when the wait is announced elsewhere, as Button does with `loadingLabel`."
        }
      ],
      "events": [],
      "cssProperties": [
        {
          "name": "--k-spinner-color",
          "description": "Overrides the spinner color.",
          "default": "var(--k-color-theme-primary)"
        },
        {
          "name": "--k-spinner-size",
          "description": "Overrides the spinner size.",
          "default": "var(--k-size-spinner-md)"
        }
      ],
      "guidelines": "## Accessibility\n\nThe spinner is a named `role=\"status\"` region. Screen readers announce its label when the user moves to it, but not reliably when it first appears.\n\n- **Say what is loading.** The default label is “Loading”. When the page has more than one thing that can load, pass a `label` that names it, for example “Ladataan tilaushistoriaa”, so the announcement makes sense out of context.\n- **Show one spinner per wait.** Every spinner announces itself. A list of placeholder rows that each carry a spinner reads as a wall of “Loading” to a screen reader. Put one spinner on the container instead.\n- **Use the button’s own loading state.** For a wait triggered by a button, pass `loading` to the [Button](/components/button/) rather than placing a spinner next to it. The button keeps its size, blocks repeat clicks and renders the spinner for you; set its `loadingLabel` the same way you would set `label` here.\n- **Keep it for short waits.** A spinner tells people something is happening, not how long it takes. For anything longer than a few seconds, show progress or a message that explains the wait.\n- **Remove it when the wait ends.** Leaving a spinner in the DOM after content has arrived leaves a stale status region. Render the content in its place, or move focus to the result when the user triggered the load.\n- **Check contrast when you override the color.** The spinner uses the primary theme color, which passes 3:1 on the page and panel backgrounds of every brand. If you set `--k-spinner-color` yourself, the dots need 3:1 against the background they sit on.\n\nReduced motion and forced colors are handled for you: the bounce becomes a gentle pulse under `prefers-reduced-motion`, and the dots stay visible in Windows high-contrast mode. See the [accessibility guidelines](/accessibility/) and the [A11Y checklist](/a11y-checklist/) for more details.",
      "examples": [
        {
          "name": "default",
          "label": "Default",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Spinner } from \"@kesko/components\";\n\nexport default () => <Spinner />;\n",
          "html": "<k-spinner role=\"status\" aria-label=\"Loading\"></k-spinner>"
        },
        {
          "name": "color",
          "label": "Color",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Spinner, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"lg\" align=\"center\">\n    <Spinner label=\"Primary\" />\n    <Spinner label=\"Secondary\" style={{ \"--k-spinner-color\": \"var(--k-color-theme-secondary)\" } as CSSProperties} />\n    <Spinner label=\"Decorative\" style={{ \"--k-spinner-color\": \"var(--k-color-theme-decorative)\" } as CSSProperties} />\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"lg\" align=\"center\">\n  <k-spinner role=\"status\" aria-label=\"Primary\"></k-spinner>\n  <k-spinner role=\"status\" aria-label=\"Secondary\" style=\"--k-spinner-color: var(--k-color-theme-secondary)\"></k-spinner>\n  <k-spinner role=\"status\" aria-label=\"Decorative\" style=\"--k-spinner-color: var(--k-color-theme-decorative)\"></k-spinner>\n</k-stack>"
        },
        {
          "name": "custom-size",
          "label": "Custom size",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Spinner } from \"@kesko/components\";\n\nexport default () => <Spinner style={{ \"--k-spinner-size\": \"2rem\" } as CSSProperties} />;\n",
          "html": "<k-spinner role=\"status\" aria-label=\"Loading\" style=\"--k-spinner-size: 2rem\"></k-spinner>"
        },
        {
          "name": "label",
          "label": "Label",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Spinner } from \"@kesko/components\";\n\nexport default () => <Spinner label=\"Loading order history\" />;\n",
          "html": "<k-spinner role=\"status\" aria-label=\"Loading order history\"></k-spinner>"
        },
        {
          "name": "loading-panel",
          "label": "Loading panel",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Spinner, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <Stack align=\"center\" justify=\"center\" className=\"k-bg-panel k-rounded-md k-p-xl\" style={{ minBlockSize: \"12rem\" }}>\n    <Spinner size=\"lg\" style={{ \"--k-spinner-color\": \"var(--k-color-border-divider)\" } as CSSProperties} label=\"Loading order history\" />\n  </Stack>\n);\n",
          "html": "<k-stack align=\"center\" justify=\"center\" class=\"k-bg-panel k-rounded-md k-p-xl\" style=\"min-block-size: 12rem\">\n  <k-spinner role=\"status\" aria-label=\"Loading order history\" size=\"lg\" style=\"--k-spinner-color: var(--k-color-border-divider)\"></k-spinner>\n</k-stack>"
        },
        {
          "name": "sizes",
          "label": "Sizes",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Spinner, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"lg\" align=\"center\">\n    <Spinner size=\"sm\" />\n    <Spinner />\n    <Spinner size=\"lg\" />\n    <Spinner size=\"xl\" />\n    <Spinner size=\"2xl\" />\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"lg\" align=\"center\">\n  <k-spinner role=\"status\" aria-label=\"Loading\" size=\"sm\"></k-spinner>\n  <k-spinner role=\"status\" aria-label=\"Loading\"></k-spinner>\n  <k-spinner role=\"status\" aria-label=\"Loading\" size=\"lg\"></k-spinner>\n  <k-spinner role=\"status\" aria-label=\"Loading\" size=\"xl\"></k-spinner>\n  <k-spinner role=\"status\" aria-label=\"Loading\" size=\"2xl\"></k-spinner>\n</k-stack>"
        }
      ],
      "preview": "<svg viewBox=\"0 0 240 140\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n  <circle cx=\"102\" cy=\"74\" r=\"6\" fill=\"currentColor\" fill-opacity=\"0.35\"/>\n  <circle cx=\"118\" cy=\"74\" r=\"6\" fill=\"currentColor\" fill-opacity=\"0.45\"/>\n  <circle cx=\"134\" cy=\"74\" r=\"6\" fill=\"currentColor\" fill-opacity=\"0.55\"/>\n</svg>"
    },
    {
      "name": "Stack",
      "displayName": "Stack",
      "slug": "stack",
      "status": "pre-release",
      "description": "Stack component manages the vertical or horizontal layout of direct children using flexbox and adjustable spacing.",
      "path": "stack/stack.js",
      "docs": "https://kesko.design/components/stack/",
      "props": [
        {
          "name": "direction",
          "type": "\"column\" | \"row\"",
          "description": "Layout direction. Defaults to \"column\".",
          "default": "\"column\""
        },
        {
          "name": "gap",
          "type": "\"3xs\" | \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\"",
          "description": "Gap between children, mapped to the `--k-space- ` scale. Defaults to \"md\".",
          "default": "\"md\""
        },
        {
          "name": "align",
          "type": "\"start\" | \"center\" | \"end\" | \"stretch\"",
          "description": "Cross-axis alignment. Defaults to \"start\".",
          "default": "\"start\""
        },
        {
          "name": "justify",
          "type": "\"start\" | \"center\" | \"end\" | \"between\"",
          "description": "Main-axis distribution. Defaults to \"start\".",
          "default": "\"start\""
        },
        {
          "name": "nowrap",
          "type": "boolean",
          "description": "Keep a row on one line. Rows wrap by default so they reflow on small screens; set this only when the container scrolls on purpose.",
          "default": "false"
        }
      ],
      "events": [],
      "cssProperties": [
        {
          "name": "--k-stack-gap",
          "description": "Overrides the gap between children.",
          "default": "var(--k-space-md)"
        }
      ],
      "guidelines": "## Accessibility\n\nStack is layout only. It renders a `<k-stack>` element with no role, no name and no focus stop, so assistive technologies see only its children.\n\n- **Use a list when the items are a list.** Stack adds no semantics. Three related links or products are still a list: render `<ul>` or `<ol>` with the items inside, and style that with `@kesko/css` utilities.\n- **Let rows wrap.** Rows wrap by default so the content reflows at 320px and when text is zoomed to 200%. Set `nowrap` only when the container scrolls on purpose, such as a strip of chips with `overflow: auto`, and give that Stack `tabindex=\"0\"`, `role=\"region\"` and an `aria-label` so keyboard users can scroll it.\n- **Size the children, not the stack.** Stack does not resize what it holds. When you stack buttons, links or inputs, pick their own sizes so each stays at least 24×24 pixels, the minimum touch target size.\n\nSee the [accessibility guidelines](/accessibility/) and the [A11Y checklist](/a11y-checklist/) for more details.",
      "examples": [
        {
          "name": "default",
          "label": "Default",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"sm\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>First</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Second</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Third</div>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"sm\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">First</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Second</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Third</div>\n</k-stack>"
        },
        {
          "name": "align",
          "label": "Align",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack gap=\"sm\">\n    <Stack direction=\"row\" gap=\"sm\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style={box}>Start</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style={box}>Start</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style={box}>Start</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"sm\" align=\"center\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style={box}>Center</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style={box}>Center</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style={box}>Center</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"sm\" align=\"end\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style={box}>End</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style={box}>End</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style={box}>End</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"sm\" align=\"stretch\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style={box}>Stretch</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style={box}>Stretch</div>\n      <div className=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style={box}>Stretch</div>\n    </Stack>\n  </Stack>\n);\n",
          "html": "<k-stack gap=\"sm\">\n  <k-stack direction=\"row\" gap=\"sm\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style=\"border: 1px dashed var(--k-color-border-primary)\">Start</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style=\"border: 1px dashed var(--k-color-border-primary)\">Start</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style=\"border: 1px dashed var(--k-color-border-primary)\">Start</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"sm\" align=\"center\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style=\"border: 1px dashed var(--k-color-border-primary)\">Center</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style=\"border: 1px dashed var(--k-color-border-primary)\">Center</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style=\"border: 1px dashed var(--k-color-border-primary)\">Center</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"sm\" align=\"end\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style=\"border: 1px dashed var(--k-color-border-primary)\">End</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style=\"border: 1px dashed var(--k-color-border-primary)\">End</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style=\"border: 1px dashed var(--k-color-border-primary)\">End</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"sm\" align=\"stretch\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xs\" style=\"border: 1px dashed var(--k-color-border-primary)\">Stretch</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-md\" style=\"border: 1px dashed var(--k-color-border-primary)\">Stretch</div>\n    <div class=\"k-bg-base k-px-sm k-text-sm k-font-code k-py-xl\" style=\"border: 1px dashed var(--k-color-border-primary)\">Stretch</div>\n  </k-stack>\n</k-stack>"
        },
        {
          "name": "column",
          "label": "Column",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack direction=\"column\" gap=\"sm\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>First</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Second</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Third</div>\n  </Stack>\n);\n",
          "html": "<k-stack gap=\"sm\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">First</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Second</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Third</div>\n</k-stack>"
        },
        {
          "name": "custom-gap",
          "label": "Custom gap",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack direction=\"row\" style={{ \"--k-stack-gap\": \"3rem\" } as CSSProperties} className=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>First</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Second</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Third</div>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" style=\"--k-stack-gap: 3rem\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">First</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Second</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Third</div>\n</k-stack>"
        },
        {
          "name": "form-actions",
          "label": "Form actions",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { Button, Stack } from \"@kesko/components\";\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"xs\" align=\"center\" justify=\"end\">\n    <Button type=\"reset\" appearance=\"outline\">Reset</Button>\n    <Button type=\"submit\">Submit</Button>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"xs\" align=\"center\" justify=\"end\">\n  <button class=\"k-button\" type=\"reset\" appearance=\"outline\">Reset</button>\n  <button class=\"k-button\" type=\"submit\">Submit</button>\n</k-stack>"
        },
        {
          "name": "gap",
          "label": "Gap",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack gap=\"sm\">\n    <Stack direction=\"row\" gap=\"3xs\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>3xs</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>3xs</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>3xs</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"2xs\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>2xs</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>2xs</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>2xs</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"xs\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>xs</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>xs</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>xs</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"sm\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>sm</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>sm</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>sm</div>\n    </Stack>\n    <Stack direction=\"row\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>md</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>md</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>md</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"lg\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>lg</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>lg</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>lg</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"xl\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>xl</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>xl</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>xl</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"2xl\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>2xl</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>2xl</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>2xl</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"3xl\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>3xl</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>3xl</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>3xl</div>\n    </Stack>\n  </Stack>\n);\n",
          "html": "<k-stack gap=\"sm\">\n  <k-stack direction=\"row\" gap=\"3xs\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">3xs</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">3xs</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">3xs</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"2xs\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">2xs</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">2xs</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">2xs</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"xs\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">xs</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">xs</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">xs</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"sm\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">sm</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">sm</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">sm</div>\n  </k-stack>\n  <k-stack direction=\"row\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">md</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">md</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">md</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"lg\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">lg</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">lg</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">lg</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"xl\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">xl</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">xl</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">xl</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"2xl\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">2xl</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">2xl</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">2xl</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"3xl\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">3xl</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">3xl</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">3xl</div>\n  </k-stack>\n</k-stack>"
        },
        {
          "name": "justify",
          "label": "Justify",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack gap=\"sm\" align=\"stretch\">\n    <Stack direction=\"row\" gap=\"sm\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Start</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Start</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Start</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"sm\" justify=\"center\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Center</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Center</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Center</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"sm\" justify=\"end\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>End</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>End</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>End</div>\n    </Stack>\n    <Stack direction=\"row\" gap=\"sm\" justify=\"between\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Between</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Between</div>\n      <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Between</div>\n    </Stack>\n  </Stack>\n);\n",
          "html": "<k-stack gap=\"sm\" align=\"stretch\">\n  <k-stack direction=\"row\" gap=\"sm\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Start</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Start</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Start</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"sm\" justify=\"center\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Center</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Center</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Center</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"sm\" justify=\"end\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">End</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">End</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">End</div>\n  </k-stack>\n  <k-stack direction=\"row\" gap=\"sm\" justify=\"between\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Between</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Between</div>\n    <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Between</div>\n  </k-stack>\n</k-stack>"
        },
        {
          "name": "nowrap",
          "label": "Nowrap",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack\n    direction=\"row\"\n    gap=\"sm\"\n    nowrap\n    role=\"region\"\n    aria-label=\"Categories\"\n    tabIndex={0}\n    className=\"k-bg-primary k-rounded-xs k-p-sm\"\n    style={{ overflowX: \"auto\" }}\n  >\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Groceries</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Hardware</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Building supplies</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Cars</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Foodservice</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Business</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Tools</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Electrical</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Furniture</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Sports</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Home and garden</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Pets</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Beauty and health</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Toys</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Books</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Electronics</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Kitchen</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Clothing</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Office supplies</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Travel</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Seasonal</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Outdoor</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Baby</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Cleaning</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Beverages</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Frozen foods</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Bakery</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Lighting</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Plumbing</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style={box}>Paint</div>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"sm\" nowrap role=\"region\" aria-label=\"Categories\" tabindex=\"0\" class=\"k-bg-primary k-rounded-xs k-p-sm\" style=\"overflow-x: auto\">\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Groceries</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Hardware</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Building supplies</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Cars</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Foodservice</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Business</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Tools</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Electrical</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Furniture</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Sports</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Home and garden</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Pets</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Beauty and health</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Toys</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Books</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Electronics</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Kitchen</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Clothing</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Office supplies</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Travel</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Seasonal</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Outdoor</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Baby</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Cleaning</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Beverages</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Frozen foods</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Bakery</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Lighting</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Plumbing</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code k-text-nowrap\" style=\"border: 1px dashed var(--k-color-border-primary)\">Paint</div>\n</k-stack>"
        },
        {
          "name": "wrap",
          "label": "Wrap",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import type { CSSProperties } from \"react\";\nimport { Stack } from \"@kesko/components\";\n\nconst box = { border: \"1px dashed var(--k-color-border-primary)\" } as CSSProperties;\n\nexport default () => (\n  <Stack direction=\"row\" gap=\"sm\" className=\"k-bg-primary k-rounded-xs k-p-sm\">\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Groceries</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Hardware</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Building supplies</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Cars</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Foodservice</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Business</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Tools</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Electrical</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Furniture</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Sports</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Home and garden</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Pets</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Beauty and health</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Toys</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Books</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Electronics</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Kitchen</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Clothing</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Office supplies</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Travel</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Seasonal</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Outdoor</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Baby</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Cleaning</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Beverages</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Frozen foods</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Bakery</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Lighting</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Plumbing</div>\n    <div className=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style={box}>Paint</div>\n  </Stack>\n);\n",
          "html": "<k-stack direction=\"row\" gap=\"sm\" class=\"k-bg-primary k-rounded-xs k-p-sm\">\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Groceries</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Hardware</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Building supplies</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Cars</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Foodservice</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Business</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Tools</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Electrical</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Furniture</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Sports</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Home and garden</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Pets</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Beauty and health</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Toys</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Books</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Electronics</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Kitchen</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Clothing</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Office supplies</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Travel</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Seasonal</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Outdoor</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Baby</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Cleaning</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Beverages</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Frozen foods</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Bakery</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Lighting</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Plumbing</div>\n  <div class=\"k-bg-base k-px-sm k-py-xs k-text-sm k-font-code\" style=\"border: 1px dashed var(--k-color-border-primary)\">Paint</div>\n</k-stack>"
        }
      ],
      "preview": "<svg viewBox=\"0 0 240 140\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n  <rect x=\"80\" y=\"34\" width=\"80\" height=\"20\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.22\"/>\n  <rect x=\"80\" y=\"60\" width=\"80\" height=\"20\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.22\"/>\n  <rect x=\"80\" y=\"86\" width=\"80\" height=\"20\" rx=\"4\" fill=\"currentColor\" fill-opacity=\"0.22\"/>\n</svg>"
    },
    {
      "name": "VisuallyHidden",
      "displayName": "VisuallyHidden",
      "slug": "visually-hidden",
      "status": "pre-release",
      "description": "Visually hidden component hides content visually while retaining readability by screen readers for accessibility.",
      "path": "visually-hidden/visually-hidden.js",
      "docs": "https://kesko.design/components/visually-hidden/",
      "props": [],
      "events": [],
      "cssProperties": [],
      "guidelines": "## Accessibility\n\nVisually hidden text stays in the accessibility tree while taking no space on screen, so screen readers and other assistive technology read it as if it were visible.\n\n- **Hide text sighted users already get from context.** A link that opens in a new tab shows an external link icon; a screen reader user needs the words “opens in a new tab” instead. Add them as visually hidden text inside the link, and keep the visible design unchanged.\n- **Do not hide focusable content.** A link or button inside the component can still receive keyboard focus, but a sighted keyboard user sees nothing move. Keep interactive elements visible; the component has no focusable variant on purpose.\n- **Do not use it to hide content from everyone.** It hides text visually only. To remove content for every user, use the `hidden` attribute or do not render it.\n- **Keep it short.** Hidden text cannot be skimmed, and it is set to a single line so that screen readers read it as one phrase. Write a few words, not a paragraph.\n- **Prefer `aria-label` on controls.** For an icon-only button, set `aria-label` on the [Button](/components/button/) instead of nesting hidden text. Hidden text is the better choice when the words should also be translatable, selectable or searchable.\n- **Keep status regions in place.** With `role=\"status\"` the component becomes a live region. Render it before the message is needed and change its text, as the Button does with `loadingLabel`; a live region inserted together with its text often goes unannounced.\n\nSee the [accessibility guidelines](/accessibility/) and the [A11Y checklist](/a11y-checklist/) for more details.",
      "examples": [
        {
          "name": "default",
          "label": "Default",
          "tracks": [
            "html",
            "react"
          ],
          "react": "import { VisuallyHidden } from \"@kesko/components\";\n\nexport default () => (\n  <p>\n    The text below is visually hidden but accessible to screen readers:\n    <VisuallyHidden>This text is only visible to assistive technology.</VisuallyHidden>\n  </p>\n);",
          "html": "<p>\n  The text below is visually hidden but accessible to screen readers:\n  <k-visually-hidden>This text is only visible to assistive technology.</k-visually-hidden>\n</p>"
        }
      ],
      "preview": "<svg viewBox=\"0 0 240 140\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n  <rect x=\"65\" y=\"48\" width=\"110\" height=\"44\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.25\" stroke-opacity=\"0.55\" stroke-dasharray=\"4 3\"/>\n  <rect x=\"86\" y=\"63\" width=\"68\" height=\"4\" rx=\"2\" fill=\"currentColor\" fill-opacity=\"0.3\"/>\n  <rect x=\"86\" y=\"73\" width=\"44\" height=\"4\" rx=\"2\" fill=\"currentColor\" fill-opacity=\"0.2\"/>\n</svg>"
    }
  ]
}
