|
| 1 | +'use client'; |
| 2 | +import { Check } from '@primeicons/react'; |
| 3 | +import { Chip, ChipLabel, ChipStart } from '@/components/ui/chip'; |
| 4 | +import * as React from 'react'; |
| 5 | + |
| 6 | +export default function BasicDemo() { |
| 7 | + const [selectedIndex, setSelectedIndex] = React.useState([0, 4, 7, 10, 15]); |
| 8 | + |
| 9 | + const onSelect = (index: number) => { |
| 10 | + if (selectedIndex.includes(index)) { |
| 11 | + setSelectedIndex((prev) => prev.filter((i) => i !== index)); |
| 12 | + } else { |
| 13 | + setSelectedIndex((prev) => [...prev, index]); |
| 14 | + } |
| 15 | + }; |
| 16 | + |
| 17 | + return ( |
| 18 | + <div className="max-w-xs mx-auto bg-surface-50/25 dark:bg-surface-900/25 p-4 rounded-lg border border-surface"> |
| 19 | + <h2 className="font-bold mb-0.5">What are you interested in?</h2> |
| 20 | + <p className="text-surface-500 mb-3 text-sm">You can select multiple answers.</p> |
| 21 | + <div className="flex items-center justify-start flex-wrap gap-2.5"> |
| 22 | + {chips.map((chip) => { |
| 23 | + const isSelected = selectedIndex.includes(chips.indexOf(chip)); |
| 24 | + |
| 25 | + return ( |
| 26 | + <Chip |
| 27 | + key={chip.label} |
| 28 | + onClick={() => onSelect(chips.indexOf(chip))} |
| 29 | + variant={isSelected ? undefined : 'outlined'} |
| 30 | + className="cursor-pointer" |
| 31 | + > |
| 32 | + <ChipStart> |
| 33 | + {isSelected ? ( |
| 34 | + <span className="size-4.5 inline-flex items-center justify-center bg-surface-900 dark:bg-surface-50 text-surface-0 dark:text-surface-900 rounded-full"> |
| 35 | + <Check className="size-2.5!" />{' '} |
| 36 | + </span> |
| 37 | + ) : ( |
| 38 | + chip.emoji |
| 39 | + )} |
| 40 | + </ChipStart> |
| 41 | + <ChipLabel>{chip.label}</ChipLabel> |
| 42 | + </Chip> |
| 43 | + ); |
| 44 | + })} |
| 45 | + </div> |
| 46 | + </div> |
| 47 | + ); |
| 48 | +} |
| 49 | + |
| 50 | +const chips = [ |
| 51 | + { label: 'Music', emoji: '🎵' }, |
| 52 | + { label: 'Movies', emoji: '🎬' }, |
| 53 | + { label: 'Travel', emoji: '✈️' }, |
| 54 | + { label: 'Food', emoji: '🍔' }, |
| 55 | + { label: 'Sports', emoji: '⚽' }, |
| 56 | + { label: 'Gaming', emoji: '🎮' }, |
| 57 | + { label: 'Reading', emoji: '📚' }, |
| 58 | + { label: 'Photography', emoji: '📸' }, |
| 59 | + { label: 'Fitness', emoji: '💪' }, |
| 60 | + { label: 'Technology', emoji: '💻' }, |
| 61 | + { label: 'Art', emoji: '🎨' }, |
| 62 | + { label: 'Nature', emoji: '🌿' }, |
| 63 | + { label: 'Shopping', emoji: '🛍️' }, |
| 64 | + { label: 'Cooking', emoji: '👨🍳' }, |
| 65 | + { label: 'Pets', emoji: '🐶' }, |
| 66 | + { label: 'Cars', emoji: '🚗' }, |
| 67 | + { label: 'Fashion', emoji: '👕' }, |
| 68 | + { label: 'Science', emoji: '🔬' } |
| 69 | +]; |
0 commit comments