Component Overview
QwickApps React Framework provides a comprehensive set of React components designed for modern web applications. All components are fully responsive, accessible, and support both light and dark themes.
Component Categories
- 🎯 Core Components - Essential components for application structure and navigation
- 🛡️ Built-in Error Handling & Accessibility - Automatic error boundaries and accessibility features
- 🧩 Layout Components - Flexible layout blocks for organizing content and creating responsive designs
- 📝 Form Components - Complete form controls with validation, accessibility, and data binding
- 🎨 UI Components - Interactive elements like buttons, cards, and media displays
- 📊 Data Components - Components specifically designed for displaying dynamic content
Core Components
QwickApp
The root component that provides theming, layout, and global configuration.
<QwickApp
appId="my-app"
appName="My Application"
showThemeSwitcher={true}
showPaletteSwitcher={true}
enableScaffolding={true}
>
{/* Your app content */}
</QwickApp>
Key Features:
- Global theme and palette management
- Responsive navigation scaffolding
- SEO optimization and meta tags
- Accessibility defaults
ThemeSwitcher
Theme switcher is a convenience button that can be used in your UI to allow user to swtich the theme. If you are using scaffolding support, then we recommend that you set enableThemeSwitcher={true} argument in the <QwickApp> component instead.
<ThemeSwitcher
position="top-right"
showLabels={true}
/>
PaletteSwitcher
Palette switcher is a convenience button that can be used in your UI to allow user to swtich the palette. If you are using scaffolding support, then we recommend that you set enablePaletteSwitcher={true} argument in the <QwickApp> component instead.
<PaletteSwitcher
availablePalettes={['ocean', 'forest', 'cosmic']}
showPreview={true}
/>
Built-in Error Handling & Accessibility
QwickApps automatically includes robust error handling and accessibility features in every application. These components are automatically integrated into QwickApp and require zero configuration.
ErrorBoundary
Automatic error catching and recovery for your React applications.
// Automatically included in QwickApp - no setup required!
<QwickApp appName="My App">
<MyComponent /> {/* Protected by ErrorBoundary */}
</QwickApp>
// Or use standalone
<ErrorBoundary onError={(error) => logError(error)}>
<MyComponent />
</ErrorBoundary>
Key Features:
- Catches JavaScript errors anywhere in component tree
- User-friendly fallback UI with retry functionality
- Development mode error details
- Custom error handling callbacks
📖 Full ErrorBoundary Documentation →
AccessibilityProvider
WCAG 2.1 AA compliant accessibility features with zero configuration.
// Automatically included in QwickApp
<QwickApp appName="My App">
<MyComponent /> {/* Has accessibility features */}
</QwickApp>
// Access accessibility features
function MyComponent() {
const { announce, highContrast, isKeyboardUser } = useAccessibility();
return (
<button onClick={() => announce('Action completed')}>
Complete Action
</button>
);
}
Key Features:
- System preference detection (high contrast, reduced motion)
- Keyboard navigation with enhanced focus indicators
- Screen reader support with ARIA live announcements
- Development-time accessibility auditing
📖 Full AccessibilityProvider Documentation →
Breadcrumbs
Accessible navigation hierarchy component.
import { Breadcrumbs, useBreadcrumbs } from '@qwickapps/react-framework';
const items = [
{ label: 'Home', href: '/', icon: <HomeIcon /> },
{ label: 'Products', href: '/products' },
{ label: 'Laptop', href: '/products/laptop', current: true },
];
<Breadcrumbs items={items} separator="→" />
Key Features:
- Full keyboard navigation support
- Smart truncation for long paths
- Customizable icons and separators
- Built-in state management hook
📖 Full Breadcrumbs Documentation →
Layout Components
CollapsibleLayout
Advanced expandable/collapsible container with comprehensive features.
<CollapsibleLayout
title="User Settings"
subtitle="Configure your preferences"
defaultCollapsed={false}
variant="outlined"
animationStyle="slide"
persistState={true}
>
<div>Your settings content here...</div>
</CollapsibleLayout>
Key Features:
- Controlled and uncontrolled state management
- Multiple animation styles (fade, slide, scale)
- localStorage persistence and custom trigger areas
- Rich content support with header actions and footers
- Complete accessibility and keyboard navigation
📖 Full CollapsibleLayout Documentation →
Section
Container component for organizing content with consistent spacing.
<Section
backgroundColor="primary"
padding="large"
maxWidth="container"
>
<HeroBlock title="Welcome" />
</Section>
HeroBlock
Eye-catching header sections with call-to-action buttons.
<HeroBlock
title="Build Faster"
subtitle="Modern apps with QwickApps React Framework"
backgroundImage="/hero.jpg"
ctaButtons={[
{ label: "Get Started", href: "/start", variant: "primary" },
{ label: "Learn More", href: "/docs", variant: "outlined" }
]}
/>
FeatureGrid
Display features in a responsive grid layout.
<FeatureGrid
columns={3}
features={[
{
icon: "⚡",
title: "Lightning Fast",
description: "Optimized for performance"
},
{
icon: "🔒",
title: "Secure by Default",
description: "Built-in security best practices"
}
]}
/>
FeatureCard
Individual feature cards with icons and content.
<FeatureCard
icon="🎨"
title="Beautiful Design"
description="Modern, accessible interfaces"
link={{ href: "/design", label: "Learn More" }}
/>
CardListGrid
Responsive grid for displaying card-based content.
<CardListGrid
columns={{ mobile: 1, tablet: 2, desktop: 3 }}
gap="medium"
items={cardData}
renderCard={(item) => (
<ProductCard {...item} />
)}
/>
Form Components
FormBlock
Complete form container with validation and submission handling.
<FormBlock
title="Contact Us"
onSubmit={handleSubmit}
submitLabel="Send Message"
fields={[
{ type: 'text', name: 'name', label: 'Name', required: true },
{ type: 'email', name: 'email', label: 'Email', required: true },
{ type: 'textarea', name: 'message', label: 'Message' }
]}
/>
TextInputField
Versatile text input with validation.
<TextInputField
label="Full Name"
name="fullName"
placeholder="Enter your full name"
required={true}
validation={{
minLength: 2,
pattern: /^[a-zA-Z\s]+$/
}}
/>
SelectInputField
Dropdown selection with search and multi-select support.
<SelectInputField
label="Country"
name="country"
options={[
{ value: 'us', label: 'United States' },
{ value: 'ca', label: 'Canada' },
{ value: 'uk', label: 'United Kingdom' }
]}
searchable={true}
/>
ChoiceInputField
Radio buttons and checkboxes with flexible layouts.
<ChoiceInputField
label="Preferred Contact Method"
name="contactMethod"
type="radio"
layout="horizontal"
options={[
{ value: 'email', label: 'Email' },
{ value: 'phone', label: 'Phone' },
{ value: 'text', label: 'Text Message' }
]}
/>
HtmlInputField
Rich text editor for formatted content.
<HtmlInputField
label="Description"
name="description"
toolbar={['bold', 'italic', 'link', 'list']}
placeholder="Enter detailed description..."
/>
UI Components
Button
Versatile button component with multiple variants and states.
<Button
label="Get Started"
variant="primary"
size="large"
startIcon="🚀"
href="/signup"
loading={isSubmitting}
/>
Variants: primary, secondary, outlined, text, contained
Sizes: small, medium, large, responsive
Article
Rich content display with typography and media support.
<Article
title="Getting Started Guide"
content="<p>Welcome to QwickApps...</p>"
author={{
name: "QwickApps Team",
avatar: "/team.jpg"
}}
publishedAt="2025-01-15"
readingTime={5}
/>
Code
Syntax-highlighted code blocks with copy functionality.
<Code
language="tsx"
showLineNumbers={true}
copyButton={true}
>
{`function App() {
return <QwickApp appId="demo">Hello World</QwickApp>;
}`}
</Code>
ProductCard
Product display with features and call-to-action buttons.
<ProductCard
title="QwickApps Pro"
description="Advanced features for teams"
image="/product.jpg"
features={['Advanced Analytics', 'Priority Support', 'Custom Themes']}
ctaButton={{ label: "Start Trial", href: "/trial" }}
/>
Content Components
Content
Generic content block for mixed media and text.
<Content
blocks={[
{ type: 'heading', content: 'About Us', level: 2 },
{ type: 'paragraph', content: 'We build amazing software...' },
{ type: 'image', src: '/about.jpg', alt: 'Our team' },
{ type: 'button', label: 'Contact', href: '/contact' }
]}
/>
Footer
Application footer with links and branding.
<Footer
logo="/logo.svg"
brandText="© 2025 QwickApps"
sections={[
{
title: 'Product',
links: [
{ label: 'Framework', href: '/framework' },
{ label: 'Builder', href: '/builder' }
]
},
{
title: 'Company',
links: [
{ label: 'About', href: '/about' },
{ label: 'Contact', href: '/contact' }
]
}
]}
socialLinks={[
{ platform: 'github', url: 'https://github.com/qwickapps' },
{ platform: 'twitter', url: 'https://twitter.com/qwickapps' }
]}
/>
Header Components
PageBannerHeader
Simple page header with breadcrumbs.
<PageBannerHeader
title="Documentation"
subtitle="Comprehensive guides and examples"
breadcrumbs={[
{ label: 'Home', href: '/' },
{ label: 'Docs', href: '/docs' },
{ label: 'Components', href: '/docs/components' }
]}
/>
CoverImageHeader
Hero-style header with background image.
<CoverImageHeader
title="Welcome to QwickApps"
subtitle="Build modern applications faster"
backgroundImage="/cover.jpg"
overlay={0.6}
textAlign="center"
/>
Data Binding Support
All components support data binding through the dataSource prop:
<Button
dataSource="buttons.primary"
label="{{label}}"
href="{{url}}"
variant="{{variant}}"
/>
<Article
dataSource="articles.featured"
title="{{title}}"
content="{{content}}"
author="{{author}}"
/>
<FeatureGrid
dataSource="features"
itemTemplate={{
title: "{{title}}",
description: "{{description}}",
icon: "{{icon}}"
}}
/>
Accessibility Features
All components include:
✅ Built-in ARIA Support
- Proper labels and descriptions
- Keyboard navigation
- Screen reader compatibility
✅ Focus Management
- Logical tab order
- Visible focus indicators
- Skip links where appropriate
✅ Color Contrast
- WCAG AA compliance
- High contrast mode support
- Color-blind friendly palettes
Responsive Design
Breakpoint System
Components use a mobile-first breakpoint system:
<FeatureGrid
columns={{
mobile: 1, // < 768px
tablet: 2, // 768px - 1024px
desktop: 3, // 1024px - 1440px
large: 4 // > 1440px
}}
/>
Responsive Properties
Many components accept responsive values:
<Section
padding={{
mobile: 'medium',
desktop: 'large'
}}
textAlign={{
mobile: 'center',
desktop: 'left'
}}
/>
Performance Optimization
🚀 Lazy Loading
Large components load on demand:
<Article
title="Long Article"
lazyLoad={true}
threshold={0.1}
/>
📦 Tree Shaking
Import only what you need:
// Import specific components
import { Button, Article } from '@qwickapps/react-framework';
// Or use selective imports
import Button from '@qwickapps/react-framework/Button';
🔄 Caching
Built-in caching for data-bound components:
<DataProvider
source="/api/content"
cacheTime={300}
>
<Article dataSource="featured" />
</DataProvider>
Customization
CSS Custom Properties
Override component styling:
.qwickapps-button {
--button-border-radius: 12px;
--button-font-weight: 600;
}
Style Override
Use the sx prop for component-specific styling:
<Button
label="Custom Button"
sx={{
backgroundColor: 'purple',
borderRadius: '20px',
'&:hover': {
backgroundColor: 'darkpurple'
}
}}
/>
Custom Components
Extend existing components:
import { Button } from '@qwickapps/react-framework';
function BrandButton({ children, ...props }) {
return (
<Button
{...props}
sx={{
backgroundColor: 'var(--brand-primary)',
fontFamily: 'var(--brand-font)',
...props.sx
}}
>
{children}
</Button>
);
}
What's Next?
- 🔴 Live Component Demos - Interact with all components
- 📝 Data Binding Guide - Connect components to your APIs
- 🎨 Theming System - Customize appearance and branding
- 🏗️ Layout Patterns - Common layout compositions