# IGNY8 Frontend Component System **Last Updated:** January 20, 2026 **Version:** 1.8.4 > **🔒 ENFORCED BY ESLINT** - Violations will trigger warnings/errors during build. > This document is the single source of truth for all UI components. --- ## Quick Reference Card | Element | Component | Import Path | |---------|-----------|-------------| | Button | `Button` | `components/ui/button/Button` | | Icon Button | `IconButton` | `components/ui/button/IconButton` | | Button Group | `ButtonGroup` | `components/ui/button-group/ButtonGroup` | | Text Input | `InputField` | `components/form/input/InputField` | | Checkbox | `Checkbox` | `components/form/input/Checkbox` | | Radio | `Radio` | `components/form/input/Radio` | | File Upload | `FileInput` | `components/form/input/FileInput` | | Textarea | `TextArea` | `components/form/input/TextArea` | | Dropdown | `Select` | `components/form/Select` | | Searchable Dropdown | `SelectDropdown` | `components/form/SelectDropdown` | | Multi-Select | `MultiSelect` | `components/form/MultiSelect` | | Toggle Switch | `Switch` | `components/form/switch/Switch` | | Badge | `Badge` | `components/ui/badge/Badge` | | Card | `Card` | `components/ui/card/Card` | | Modal | `Modal` | `components/ui/modal` | | Alert | `Alert` | `components/ui/alert/Alert` | | Spinner | `Spinner` | `components/ui/spinner/Spinner` | | Tabs | `Tabs` | `components/ui/tabs/Tabs` | | Tooltip | `Tooltip` | `components/ui/tooltip/Tooltip` | | Calendar Tooltip | `CalendarItemTooltip` | `components/ui/tooltip/CalendarItemTooltip` | | Toast | `useToast` | `components/ui/toast/ToastContainer` | | Icons | `*Icon` | `icons` (e.g., `../../icons`) | --- ## 1. BUTTONS ### Button (Standard) ```tsx import Button from '../../components/ui/button/Button'; ``` **Common Patterns:** ```tsx // Primary action // Success/confirm // Danger/destructive // Secondary/cancel // With icon ``` ### IconButton (Icon-only) ```tsx import IconButton from '../../components/ui/button/IconButton'; } // Required: Icon component variant="ghost" // solid | outline | ghost tone="neutral" // brand | success | warning | danger | neutral size="sm" // xs | sm | md | lg shape="rounded" // rounded | circle onClick={handler} disabled={false} title="Close" // Required: Accessibility label aria-label="Close" // Optional: Override aria-label /> ``` **Common Patterns:** ```tsx // Close button } variant="ghost" tone="neutral" title="Close" /> // Delete button } variant="ghost" tone="danger" title="Delete" /> // Edit button } variant="ghost" tone="brand" title="Edit" /> // Add button (circular) } variant="solid" tone="brand" shape="circle" title="Add" /> ``` --- ## 2. FORM INPUTS ### InputField (Text/Number/Email/Password) ```tsx import InputField from '../../components/form/input/InputField'; setValue(e.target.value)} id="field-id" name="field-name" disabled={false} error={false} // Shows error styling success={false} // Shows success styling hint="Helper text" // Text below input min="0" // For number inputs max="100" // For number inputs step={1} // For number inputs /> ``` ### TextArea (Multi-line) ```tsx import TextArea from '../../components/form/input/TextArea';