The Axiom01 Philosophy
Semantic Purity. Minimal Classes. Developer Delight.
Axiom01 is more than a UI framework—it's a philosophy that champions semantic HTML, minimal markup, and accessibility-first design. Our approach stands in stark contrast to the utility-heavy, class-bloated frameworks that dominate today's landscape.
1. Semantic First
Axiom01 is an HTML-centric framework. Your primary focus should always be on writing clean, semantic, and accessible HTML. The CSS is designed to style this semantic structure with minimal class-based intervention.
The Semantic Approach
If you find yourself adding classes to every element, you are not following the Axiom01 philosophy.
✅ Axiom01 Way
<article class="card">
<header>
<h3>Card Title</h3>
</header>
<p>Card content here</p>
<footer>
<button class="primary">Action</button>
</footer>
</article>
❌ Other Frameworks
<div class="card p-4 bg-white shadow-lg">
<div class="card-header border-b">
<h3 class="text-lg font-bold">Title</h3>
</div>
<div class="card-body p-4">
<p class="text-gray-600">Content</p>
</div>
<div class="card-footer">
<button class="btn btn-primary">Action</button>
</div>
</div>
2. No BEM, No Utility Stacking
This is a foundational principle of Axiom01. We explicitly forbid complex, multi-part class names and utility stacking.
Component-Level Classes
Assign a single, descriptive class to the root element of a component:
.card
- not.card-container
.hero
- not.hero-section
.navbar
- not.nav-bar-wrapper
Descendant Styling
Style child elements using descendant selectors:
.card header
- not.card-header
.card p
- not.card-text
.navbar ul
- not.navbar-list
Variant Classes
Use single, adjective-like classes for variations:
.primary
- for primary buttons.elevated
- for elevated cards.compact
- for compact layouts
Absolutely No BEM
These patterns are strictly prohibited:
.card__header--large
❌.button--primary--disabled
❌.nav__item--active
❌
3. Accessible by Default
Accessibility is not an afterthought; it's a core requirement. By using semantic HTML and providing accessible components out of the box, we make it easier to build applications that can be used by everyone.
Semantic HTML Foundation
Proper HTML elements provide built-in accessibility:
- Screen readers understand structure
- Keyboard navigation works correctly
- ARIA attributes are minimal but meaningful
WCAG 2.1 AA Compliance
Every component meets accessibility standards:
- Color contrast ratios of 4.5:1 minimum
- Focus indicators on interactive elements
- Proper heading hierarchy
4. Themeable and Flexible
Axiom01 uses CSS custom properties (variables) to provide powerful theming capabilities while maintaining simplicity.
CSS Variables Power
Change one variable, update your entire application:
:root {
--a-color-primary: #your-brand-color;
--a-space-unit: 1.2rem;
--a-border-radius-medium: 8px;
}
5. Developer Delight
Axiom01 is designed to make developers happy by reducing cognitive load and promoting maintainable code practices.
Less Mental Overhead
- No need to memorize utility class names
- Natural CSS cascade works as expected
- Semantic HTML guides your decisions
Maintainable Code
- Changes in CSS affect structure logically
- Components remain readable months later
- New team members understand code quickly
Philosophy in Action
Here's how Axiom01's philosophy translates into practical benefits:
Real-World Example: Contact Form
✅ Axiom01: 8 lines, semantic
<form class="contact">
<div class="form-group">
<label for="email">Email</label>
<input type="email" id="email">
</div>
<button type="submit" class="primary">Send</button>
</form>
❌ Utility Framework: 14 lines
<form class="max-w-md mx-auto bg-white p-6">
<div class="mb-4">
<label class="block text-gray-700 text-sm font-bold mb-2" for="email">
Email
</label>
<input class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" type="email" id="email">
</div>
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline" type="submit">
Send
</button>
</form>
Ready to Embrace the Philosophy?
Start building with Axiom01's semantic-first approach: