Component Library

Comprehensive UI component documentation for Clodo Framework

Buttons

Buttons are the primary call-to-action elements. They support multiple variants, sizes, and states. All buttons follow the Web Content Accessibility Guidelines (WCAG) 2.1 Level AA standard.

♿ Accessibility: All buttons have focus states, appropriate ARIA labels, and minimum 44px height for touch targets.

Variants

Sizes

States

Full Width

HTML Usage

<button class="btn btn--primary">Click Me</button> <button class="btn btn--secondary">Secondary</button> <button class="btn btn--outline">Outline</button> <!-- Sizes --> <button class="btn btn--primary btn--sm">Small</button> <button class="btn btn--primary btn--lg">Large</button> <!-- States --> <button class="btn btn--primary" disabled>Disabled</button> <button class="btn btn--primary btn--full">Full Width</button>
Class Purpose Usage
.btn Base button styles Required on all buttons
.btn--primary Primary action button Main CTAs and actions
.btn--secondary Secondary action button Alternative actions
.btn--outline Outline button Tertiary actions
.btn--lg Large button size Prominent CTAs
.btn--sm Small button size Compact layouts
.btn--full Full width button Form submissions

Cards

Cards are container components for grouping related content. They support headers, bodies, and footers with consistent spacing and hover effects.

Card Title

This is a basic card with header, body, and content.

Simple Card

Card without header or footer sections.

Full Card

This card has all three sections.

HTML Usage

<div class="card"> <div class="card__header"> <h3 class="card__title">Card Title</h3> </div> <div class="card__body"> <p class="card__subtitle">Card content</p> </div> <div class="card__footer"> <button class="btn btn--primary">Action</button> </div> </div>

Forms

Form components include text inputs, labels, error messages, and textarea fields. All form elements are fully accessible with proper ARIA attributes.

♿ Accessibility: All form inputs include focus states, error messages, and are associated with labels.

HTML Usage

<form> <div class="form-group"> <label class="form-label" for="input-id">Label</label> <input type="text" id="input-id" class="form-input" placeholder="Placeholder"> </div> <div class="form-group"> <label class="form-label" for="textarea-id">Message</label> <textarea id="textarea-id" class="form-input form-textarea"></textarea> </div> <div class="form-error">This field is required</div> </form>

Badges

Badges are small inline labels for status, categories, or priority indicators. They come in different colors and should be used sparingly.

Primary Success Warning

HTML Usage

<span class="badge badge--primary">Primary</span> <span class="badge badge--success">Success</span> <span class="badge badge--warning">Warning</span>

Alerts

Alerts communicate messages to users. They come in four variants: success, warning, error, and info. Use them to provide feedback about actions or inform users about important information.

Success! Your changes have been saved successfully.
Warning: Please review your information before proceeding.
Error: Something went wrong. Please try again.
Info: This is an informational message for your attention.

HTML Usage

<div class="alert alert--success"> <strong>Success!</strong> Message content </div> <div class="alert alert--warning"> <strong>Warning:</strong> Message content </div> <div class="alert alert--error"> <strong>Error:</strong> Message content </div> <div class="alert alert--info"> <strong>Info:</strong> Message content </div>

Loading States

Loading indicators provide visual feedback when content is being processed or fetched. They come in different sizes and colors.

Spinners

Spinner Variants

HTML Usage

<!-- Basic spinner --> <div class="spinner"></div> <!-- Size variants --> <div class="spinner spinner--sm"></div> <div class="spinner spinner--lg"></div> <!-- Color variants --> <div class="spinner spinner--primary"></div> <div class="spinner spinner--white"></div>

Design Tokens

Clodo Framework uses CSS custom properties (variables) for consistent styling across all components. These tokens ensure visual consistency and make theming easier.

Color Tokens

Primary
--primary-color
Primary Dark
--primary-dark
Success
--success-color
Warning
--warning-color
Error
--error-color
Info
--info-color

Spacing Tokens

Token Value Usage
--spacing-xs 0.25rem (4px) Minimal spacing
--spacing-sm 0.5rem (8px) Small gaps
--spacing-md 1rem (16px) Default spacing
--spacing-lg 1.5rem (24px) Large gaps
--spacing-xl 2rem (32px) Extra large gaps

Border Radius Tokens

Token Value Usage
--radius-sm 0.25rem (4px) Subtle curves
--radius-md 0.5rem (8px) Standard radius
--radius-lg 1rem (16px) Prominent radius
--radius-full 9999px Circular elements

Typography Tokens

  • Font Family: var(--font-sans) = -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu...
  • Font Size Base: 1rem (16px)
  • Line Height Base: 1.5
  • Heading Font Size: Fluid scaling with clamp()
  • Letter Spacing: -0.02em for headings, normal for body

Using Design Tokens in CSS

.my-component { /* Color tokens */ color: var(--text-primary); background: var(--primary-color); /* Spacing tokens */ padding: var(--spacing-lg); margin-bottom: var(--spacing-md); gap: var(--spacing-sm); /* Border radius tokens */ border-radius: var(--radius-md); /* Shadow tokens */ box-shadow: var(--shadow-md); /* Transition tokens */ transition: all var(--transition-fast); }

Design System Best Practices

💡 Tip: Always use design tokens instead of hardcoded values to maintain consistency.