UNPKG

@restnfeel/agentc-starter-kit

Version:

한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템

570 lines (441 loc) 17.7 kB
# API Reference Complete API documentation for all AgentC Starter Kit components. ## UI Components ### Button A versatile button component with multiple variants and states. #### Props | Prop | Type | Default | Description | | ----------- | -------------------------------------------------- | ----------- | ---------------------- | | `variant` | `'primary' \| 'secondary' \| 'outline' \| 'ghost'` | `'primary'` | Button style variant | | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Button size | | `loading` | `boolean` | `false` | Show loading spinner | | `disabled` | `boolean` | `false` | Disable button | | `fullWidth` | `boolean` | `false` | Make button full width | | `children` | `ReactNode` | - | Button content | | `onClick` | `() => void` | - | Click handler | | `className` | `string` | - | Additional CSS classes | #### Example ```tsx <Button variant="primary" size="lg" loading={isLoading} onClick={() => handleClick()} > Submit </Button> ``` ### Input Form input component with validation support. #### Props | Prop | Type | Default | Description | | ------------- | --------------------------------------------- | -------- | ---------------------- | | `type` | `'text' \| 'email' \| 'password' \| 'number'` | `'text'` | Input type | | `placeholder` | `string` | - | Placeholder text | | `value` | `string` | - | Input value | | `onChange` | `(value: string) => void` | - | Change handler | | `onBlur` | `() => void` | - | Blur handler | | `error` | `string` | - | Error message | | `disabled` | `boolean` | `false` | Disable input | | `required` | `boolean` | `false` | Mark as required | | `label` | `string` | - | Input label | | `className` | `string` | - | Additional CSS classes | #### Example ```tsx <Input type="email" label="Email Address" placeholder="Enter your email" value={email} onChange={setEmail} error={emailError} required /> ``` ### Card Container component with optional header, content, and footer sections. #### Props | Prop | Type | Default | Description | | ----------- | ------------------------- | ----------- | ---------------------- | | `variant` | `'default' \| 'elevated'` | `'default'` | Card style variant | | `children` | `ReactNode` | - | Card content | | `className` | `string` | - | Additional CSS classes | #### Example ```tsx <Card variant="elevated"> <CardHeader> <CardTitle>Card Title</CardTitle> </CardHeader> <CardContent> <p>Card content goes here</p> </CardContent> </Card> ``` ### Modal Overlay dialog component for displaying content above the page. #### Props | Prop | Type | Default | Description | | ---------- | ------------------------------ | ------- | ----------------------- | | `isOpen` | `boolean` | `false` | Modal visibility | | `onClose` | `() => void` | - | Close handler | | `title` | `string` | - | Modal title | | `children` | `ReactNode` | - | Modal content | | `size` | `'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Modal size | | `closable` | `boolean` | `true` | Show close button | | `backdrop` | `boolean` | `true` | Click backdrop to close | #### Example ```tsx <Modal isOpen={isModalOpen} onClose={() => setIsModalOpen(false)} title="Confirm Action" size="md" > <p>Are you sure you want to continue?</p> <div className="flex gap-2 mt-4"> <Button onClick={handleConfirm}>Confirm</Button> <Button variant="outline" onClick={() => setIsModalOpen(false)}> Cancel </Button> </div> </Modal> ``` ### Loading Loading spinner component with customizable size and color. #### Props | Prop | Type | Default | Description | | ----------- | ---------------------- | ----------- | ---------------------- | | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Spinner size | | `color` | `string` | `'primary'` | Spinner color | | `text` | `string` | - | Loading text | | `className` | `string` | - | Additional CSS classes | #### Example ```tsx <Loading size="lg" text="Loading..." /> ``` ## Section Components ### HeroSection Hero banner component for landing pages. #### Props | Prop | Type | Default | Description | | --------------------- | ------------------------------------ | ----------- | ------------------------- | | `title` | `string` | - | Main heading | | `subtitle` | `string` | - | Subheading text | | `ctaText` | `string` | - | Primary CTA button text | | `secondaryCtaText` | `string` | - | Secondary CTA button text | | `onCtaClick` | `() => void` | - | Primary CTA handler | | `onSecondaryCtaClick` | `() => void` | - | Secondary CTA handler | | `backgroundImage` | `string` | - | Background image URL | | `variant` | `'default' \| 'centered' \| 'split'` | `'default'` | Layout variant | | `className` | `string` | - | Additional CSS classes | #### Example ```tsx <HeroSection title="Build Amazing Apps Fast" subtitle="The complete starter kit for your Next.js applications" ctaText="Get Started" secondaryCtaText="Learn More" onCtaClick={() => navigate("/signup")} onSecondaryCtaClick={() => navigate("/docs")} variant="centered" /> ``` ### FeaturesSection Feature showcase component with grid or list layout. #### Props | Prop | Type | Default | Description | | ----------- | ------------------ | -------- | ------------------------ | | `title` | `string` | - | Section title | | `subtitle` | `string` | - | Section subtitle | | `features` | `Feature[]` | - | Array of feature objects | | `variant` | `'grid' \| 'list'` | `'grid'` | Layout variant | | `className` | `string` | - | Additional CSS classes | #### Feature Object ```typescript interface Feature { title: string; description: string; icon?: string | ReactNode; image?: string; } ``` #### Example ```tsx <FeaturesSection title="Why Choose Our Platform" subtitle="Everything you need to succeed" features={[ { title: "Fast Development", description: "Build apps in record time", icon: "⚡", }, // ... more features ]} variant="grid" /> ``` ### PricingSection Pricing table component with plan comparison. #### Props | Prop | Type | Default | Description | | -------------- | -------------------------- | ------- | ---------------------- | | `title` | `string` | - | Section title | | `subtitle` | `string` | - | Section subtitle | | `plans` | `PricingPlan[]` | - | Array of pricing plans | | `onSelectPlan` | `(planId: string) => void` | - | Plan selection handler | | `className` | `string` | - | Additional CSS classes | #### PricingPlan Object ```typescript interface PricingPlan { id: string; name: string; price: string; period: string; description: string; features: string[]; highlighted?: boolean; ctaText: string; } ``` ## Dashboard Components ### StatsCard Statistics display card with trend indicators. #### Props | Prop | Type | Default | Description | | ----------- | ------------------------------------------------- | ----------- | ---------------------- | | `title` | `string` | - | Card title | | `value` | `string \| number` | - | Main value | | `subtitle` | `string` | - | Additional context | | `trend` | `TrendData` | - | Trend information | | `variant` | `'default' \| 'success' \| 'warning' \| 'danger'` | `'default'` | Color variant | | `loading` | `boolean` | `false` | Show loading state | | `className` | `string` | - | Additional CSS classes | #### TrendData Object ```typescript interface TrendData { value: number; isPositive: boolean; label: string; } ``` #### Example ```tsx <StatsCard title="Total Revenue" value="$45,678" subtitle="This month" trend={{ value: 12, isPositive: true, label: "vs last month", }} variant="success" /> ``` ### DataTable Feature-rich data table with sorting, search, and pagination. #### Props | Prop | Type | Default | Description | | ------------ | ------------------ | ----------- | ---------------------- | | `data` | `T[]` | - | Table data array | | `columns` | `Column<T>[]` | - | Column definitions | | `searchable` | `boolean` | `false` | Enable search | | `sortable` | `boolean` | `true` | Enable sorting | | `pagination` | `PaginationConfig` | - | Pagination settings | | `loading` | `boolean` | `false` | Show loading state | | `emptyText` | `string` | `'No data'` | Empty state text | | `className` | `string` | - | Additional CSS classes | #### Column Object ```typescript interface Column<T> { key: keyof T; label: string; sortable?: boolean; render?: (value: any, row: T) => ReactNode; } ``` ### UserProfile User profile management component with editable fields. #### Props | Prop | Type | Default | Description | | ----------- | ---------------------- | ------- | ---------------------- | | `user` | `User` | - | User data object | | `editable` | `boolean` | `false` | Enable editing | | `fields` | `ProfileField[]` | - | Field configuration | | `onSave` | `(user: User) => void` | - | Save handler | | `className` | `string` | - | Additional CSS classes | #### ProfileField Object ```typescript interface ProfileField { key: string; label: string; editable: boolean; type?: "text" | "email" | "date"; } ``` ### NotificationSettings Notification preference management component. #### Props | Prop | Type | Default | Description | | ------------ | ------------------------------------------ | ------- | ----------------------- | | `categories` | `NotificationCategory[]` | - | Notification categories | | `onSave` | `(settings: NotificationSettings) => void` | - | Save handler | | `className` | `string` | - | Additional CSS classes | #### NotificationCategory Object ```typescript interface NotificationCategory { id: string; title: string; description: string; settings: NotificationSetting[]; } interface NotificationSetting { id: string; label: string; description: string; type: "email" | "push" | "sms" | "in-app"; enabled: boolean; required: boolean; } ``` ## Auth Components ### AuthProvider Authentication context provider using NextAuth. #### Props | Prop | Type | Default | Description | | ----------- | ------------- | ------- | ----------------- | | `children` | `ReactNode` | - | Child components | | `providers` | `Provider[]` | - | OAuth providers | | `pages` | `PagesConfig` | - | Custom auth pages | #### Example ```tsx <AuthProvider providers={[GoogleProvider, KakaoProvider]} pages={{ signIn: "/auth/signin", signUp: "/auth/signup", }} > <App /> </AuthProvider> ``` ### useAuth Hook Authentication hook for accessing user state and auth methods. #### Returns ```typescript interface AuthState { user: User | null; isLoading: boolean; isAuthenticated: boolean; signIn: (provider?: string) => Promise<void>; signOut: () => Promise<void>; updateUser: (data: Partial<User>) => Promise<void>; } ``` #### Example ```tsx function Profile() { const { user, isAuthenticated, signOut } = useAuth(); if (!isAuthenticated) { return <div>Please sign in</div>; } return ( <div> <h1>Welcome, {user.name}</h1> <button onClick={signOut}>Sign Out</button> </div> ); } ``` ## Legal Components ### PrivacyPolicy Customizable privacy policy component. #### Props | Prop | Type | Default | Description | | --------------------- | ----------------- | ------- | --------------------- | | `companyName` | `string` | - | Company name | | `contactEmail` | `string` | - | Contact email | | `effectiveDate` | `string` | - | Policy effective date | | `sections` | `PolicySection[]` | - | Custom sections | | `showTableOfContents` | `boolean` | `true` | Show TOC | | `printable` | `boolean` | `true` | Enable print function | ### TermsOfService Terms of service component with similar structure to PrivacyPolicy. ### ConsentManager GDPR-compliant cookie consent management. #### Props | Prop | Type | Default | Description | | ------------------ | --------------------------------- | ------- | ---------------------- | | `privacyPolicyUrl` | `string` | - | Privacy policy URL | | `termsUrl` | `string` | - | Terms of service URL | | `onConsentUpdate` | `(consents: ConsentData) => void` | - | Consent change handler | | `defaultConsents` | `ConsentData` | - | Default consent state | #### ConsentData Object ```typescript interface ConsentData { necessary: boolean; analytics: boolean; marketing: boolean; preferences: boolean; } ``` ## Layout Components ### Navbar Navigation component with responsive design. #### Props | Prop | Type | Default | Description | | --------- | ----------- | ------- | ----------------- | | `logo` | `ReactNode` | - | Logo element | | `items` | `NavItem[]` | - | Navigation items | | `actions` | `ReactNode` | - | Action buttons | | `sticky` | `boolean` | `false` | Sticky navigation | ### Footer Footer component with links and social media. #### Props | Prop | Type | Default | Description | | ------------- | -------------- | ------- | ------------------ | | `companyName` | `string` | - | Company name | | `links` | `FooterLink[]` | - | Footer links | | `socialLinks` | `SocialLink[]` | - | Social media links | | `copyright` | `string` | - | Copyright text | ## TypeScript Types All components are fully typed with TypeScript. Import types for better development experience: ```tsx import type { ButtonProps, CardProps, HeroSectionProps, StatsCardProps, User, AuthState, } from "agentc-starter-kit"; ``` ## Theme Customization ### CSS Custom Properties Override default theme values: ```css :root { --primary-50: #eff6ff; --primary-500: #3b82f6; --primary-600: #2563eb; /* ... other color variables */ } ``` ### Tailwind Configuration Extend Tailwind theme in your config: ```js module.exports = { theme: { extend: { colors: { primary: { 50: "var(--primary-50)", 500: "var(--primary-500)", 600: "var(--primary-600)", }, }, }, }, }; ```