This repository has been archived on 2024-04-04. You can view files and clone it, but cannot push or open issues or pull requests.
tailwindui/vue/components/application-ui/forms/radio-groups/cards.vue

35 lines
2.1 KiB
Vue
Raw Normal View History

2024-01-24 19:02:44 +08:00
<template>
<RadioGroup v-model="selectedMailingLists">
<RadioGroupLabel class="text-base font-semibold leading-6 text-gray-900">Select a mailing list</RadioGroupLabel>
<div class="mt-4 grid grid-cols-1 gap-y-6 sm:grid-cols-3 sm:gap-x-4">
<RadioGroupOption as="template" v-for="mailingList in mailingLists" :key="mailingList.id" :value="mailingList" v-slot="{ checked, active }">
<div :class="[checked ? 'border-transparent' : 'border-gray-300', active ? 'border-indigo-600 ring-2 ring-indigo-600' : '', 'relative flex cursor-pointer rounded-lg border bg-white p-4 shadow-sm focus:outline-none']">
<span class="flex flex-1">
<span class="flex flex-col">
<RadioGroupLabel as="span" class="block text-sm font-medium text-gray-900">{{ mailingList.title }}</RadioGroupLabel>
<RadioGroupDescription as="span" class="mt-1 flex items-center text-sm text-gray-500">{{ mailingList.description }}</RadioGroupDescription>
<RadioGroupDescription as="span" class="mt-6 text-sm font-medium text-gray-900">{{ mailingList.users }}</RadioGroupDescription>
</span>
</span>
<CheckCircleIcon :class="[!checked ? 'invisible' : '', 'h-5 w-5 text-indigo-600']" aria-hidden="true" />
<span :class="[active ? 'border' : 'border-2', checked ? 'border-indigo-600' : 'border-transparent', 'pointer-events-none absolute -inset-px rounded-lg']" aria-hidden="true" />
</div>
</RadioGroupOption>
</div>
</RadioGroup>
</template>
<script setup>
import { ref } from 'vue'
import { RadioGroup, RadioGroupDescription, RadioGroupLabel, RadioGroupOption } from '@headlessui/vue'
import { CheckCircleIcon } from '@heroicons/vue/20/solid'
const mailingLists = [
{ id: 1, title: 'Newsletter', description: 'Last message sent an hour ago', users: '621 users' },
{ id: 2, title: 'Existing Customers', description: 'Last message sent 2 weeks ago', users: '1200 users' },
{ id: 3, title: 'Trial Users', description: 'Last message sent 4 days ago', users: '2740 users' },
]
const selectedMailingLists = ref(mailingLists[0])
</script>