Components
vue
Button

Button

Sizes

---
import Button from "@technologyadvice/components/ui/button/Button.vue"
---

<Button size="sm" client:load>Small</Button>
<Button size="md" client:load>Medium</Button>
<Button size="lg" client:load>Large</Button>
<Button size="xl" client:load>XLarge</Button>
<Button size="xxl" client:load>XXLarge</Button>

Variants











---
import Button from "@technologyadvice/components/ui/button/Button.vue"
---

<Button client:load>Brand</Button>
<Button disabled client:load>Brand</Button>

<br class="mb-4" />

<Button variant="secondaryGray" client:load>Secondary Gray</Button>
<Button variant="secondaryGray" disabled client:load>Secondary Gray</Button>

<br class="mb-4" />

<Button variant="secondaryColor" client:load>Secondary Color</Button>
<Button variant="secondaryColor" disabled client:load>Secondary Color</Button>

<br class="mb-4" />

<Button variant="tertiaryGray" client:load>Tertiary Gray</Button>
<Button variant="tertiaryGray" disabled client:load>Tertiary Gray</Button>

<br class="mb-4" />

<Button variant="tertiaryColor" client:load>Tertiary Color</Button>
<Button variant="tertiaryColor" disabled client:load>Tertiary Color</Button>

<br class="mb-4" />

<Button variant="linkGray" client:load>Link Gray</Button>
<Button variant="linkGray" disabled client:load>Link Gray</Button>

<br class="mb-4" />

<Button variant="linkColor" client:load>Link Color</Button>
<Button variant="linkColor" disabled client:load>Link Color</Button>

<br class="mb-4" />

<Button variant="danger" client:load>Danger</Button>
<Button variant="danger" disabled client:load>Danger</Button>

<br class="mb-4" />

<Button variant="warning" client:load>Warning</Button>
<Button variant="warning" disabled client:load>Warning</Button>

<br class="mb-4" />

<Button variant="info" client:load>Info</Button>
<Button variant="info" disabled client:load>Info</Button>

<br class="mb-4" />

<Button variant="success" client:load>Success</Button>
<Button variant="success" disabled client:load>Success</Button>

States


---
import Button from "@technologyadvice/components/ui/button/Button.vue"
import { Download } from "lucide-vue-next"
---

<Button disabled client:load>Disabled</Button>

<br class="mb-4" />

<Button loading={true} client:load />

Interactivity

---
import Button from "@technologyadvice/components/ui/button/Button.vue"
---

<script>
  const buttons = document.querySelectorAll("#interactive")

  buttons.forEach((button) => {
    button.addEventListener("click", test)
  })

  function test() {
    alert("Button is interactive")
  }
</script>

<Button id="interactive" @click="test" client:load>Click me</Button>

Icons



---
import Button from "@technologyadvice/components/ui/button/Button.vue"
import { Download } from "lucide-vue-next"
---

<Button size="lg" client:load>
  <Download />
  Download
</Button>

<br class="mb-4" />

<Button size="lg" client:load>
  Download
  <Download />
</Button>

<br class="mb-4" />

<Button size="sm" shape="icon" aria-label="Download icon" client:load>
  <Download />
</Button>

<Button size="md" shape="icon" aria-label="Download icon" client:load>
  <Download />
</Button>

<Button size="lg" shape="icon" aria-label="Download icon" client:load>
  <Download />
</Button>

<Button size="xl" shape="icon" aria-label="Download icon" client:load>
  <Download />
</Button>

<Button size="xxl" shape="icon" aria-label="Download icon" client:load>
  <Download />
</Button>

Overrides

---
import Button from "@technologyadvice/components/ui/button/Button.vue"
---

<Button style="color: #f7ff00;" client:load>Inline</Button>
<Button
  class="bg-red-500 border-red-300 text-[#00006e] hover:enabled:bg-red-700 focus:enabled:ring-red-300"
  client:load>Class</Button
>