Skip to main content
Tw Twintrinsic
  • Getting Started
  • Components
  • Theming
  • Completion
Examples
Data Dashboard Game Map
Core
App
Layout
Accordion AccordionItem Card Container Panel Separator Sidebar Splitter
Navigation
AppHeader BottomBar Breadcrumb BreadcrumbItem Menu MenuItem Tabs Tab TabList TabPanel TreeMenu
Data Display
Avatar AvatarGroup Badge Carousel CarouselItem Chip ChipGroup CodeBlock CodeBlockSpeed CodeEditor DataTable Map Progress Skeleton Table TableBody TableCell TableHead TableHeader TableRow Tag TagGroup Timeline TimelineItem Tooltip Tree TreeNode
Metrics
DonutChart PieChart LineChart BarChart HorizontalBarChart AreaChart StatsCard MetricGrid KPICard GaugeChart ProgressMetric MetricTrend
Form
AutoComplete Button ButtonGroup Calendar Checkbox ColorPicker Combobox Dropdown FileUpload FloatLabel Form FormField Input InputSwitch InvalidState Knob ListInput Listbox NumberInput Radio RadioGroup Rating Select SelectGroup Slider Switch TextInput Textarea
Feedback
Modal Stepper StepperStep Toast
Utility
Icon Lazy LazyPanel Masonry ThemeToggle

PieChart

A traditional pie chart for displaying proportional data. Each slice represents a portion of the whole, making it ideal for showing composition and distribution.

Features

  • Clean, traditional pie chart design
  • Optional legend display
  • Hover effects on slices
  • Click events for slice interaction
  • Responsive sizing
  • Custom colors support
  • Accessible with ARIA labels

Examples

Basic PieChart

Chrome (35.0%)
Firefox (25.0%)
Safari (20.0%)
Edge (20.0%)
<script>
  import { PieChart } from '$lib';

  const data = [35, 25, 20, 20];
  const labels = ['Chrome', 'Firefox', 'Safari', 'Edge'];
</script>

<PieChart {data} {labels} size={300} />

With Title and Legend

Browser Market Share

Chrome (35.0%)
Firefox (25.0%)
Safari (20.0%)
Edge (20.0%)
<PieChart
  data={[35, 25, 20, 20]}
  labels={['Chrome', 'Firefox', 'Safari', 'Edge']}
  title="Browser Market Share"
  showLegend={true}
  size={300}
/>

Props

PropTypeDefaultDescription
datanumber[]RequiredArray of numeric values for each slice
labelsstring[]RequiredArray of labels for each slice
colorsstring[]Default paletteArray of colors (hex or Tailwind class names)
titlestringundefinedChart title
showLegendbooleantrueShow legend below chart
sizenumber300Size of the chart in pixels

Events

EventDetailDescription
onsliceclick{ index: number; label: string; value: number }Fired when a slice is clicked

Accessibility

  • SVG has proper ARIA role and label
  • Each slice is keyboard accessible
  • Color contrast meets WCAG AA standards
  • Legend provides text alternative to colors

Best Practices

  • Use for showing composition or parts of a whole
  • Limit to 5-7 slices for clarity
  • Use distinct colors for better differentiation
  • Include a legend for accessibility
  • Provide meaningful labels