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/stacked_cards.vue

42 lines
2.2 KiB
Vue
Raw Normal View History

2024-01-24 19:02:44 +08:00
<template>
<RadioGroup v-model="selected">
<RadioGroupLabel class="sr-only">Server size</RadioGroupLabel>
<div class="space-y-4">
<RadioGroupOption as="template" v-for="plan in plans" :key="plan.name" :value="plan" v-slot="{ checked, active }">
<div :class="[checked ? 'border-transparent' : 'border-gray-300', active ? 'border-indigo-600 ring-2 ring-indigo-600' : '', 'relative block cursor-pointer rounded-lg border bg-white px-6 py-4 shadow-sm focus:outline-none sm:flex sm:justify-between']">
<span class="flex items-center">
<span class="flex flex-col text-sm">
<RadioGroupLabel as="span" class="font-medium text-gray-900">{{ plan.name }}</RadioGroupLabel>
<RadioGroupDescription as="span" class="text-gray-500">
<span class="block sm:inline">{{ plan.ram }} / {{ plan.cpus }}</span>
{{ ' ' }}
<span class="hidden sm:mx-1 sm:inline" aria-hidden="true">&middot;</span>
{{ ' ' }}
<span class="block sm:inline">{{ plan.disk }}</span>
</RadioGroupDescription>
</span>
</span>
<RadioGroupDescription as="span" class="mt-2 flex text-sm sm:ml-4 sm:mt-0 sm:flex-col sm:text-right">
<span class="font-medium text-gray-900">{{ plan.price }}</span>
<span class="ml-1 text-gray-500 sm:ml-0">/mo</span>
</RadioGroupDescription>
<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'
const plans = [
{ name: 'Hobby', ram: '8GB', cpus: '4 CPUs', disk: '160 GB SSD disk', price: '$40' },
{ name: 'Startup', ram: '12GB', cpus: '6 CPUs', disk: '256 GB SSD disk', price: '$80' },
{ name: 'Business', ram: '16GB', cpus: '8 CPUs', disk: '512 GB SSD disk', price: '$160' },
{ name: 'Enterprise', ram: '32GB', cpus: '12 CPUs', disk: '1024 GB SSD disk', price: '$240' },
]
const selected = ref(plans[0])
</script>