Skip to content

Commit f7c0ca2

Browse files
committed
Update docs
1 parent 2047e6a commit f7c0ca2

File tree

6 files changed

+908
-183
lines changed

6 files changed

+908
-183
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ tarpaulin-report.html
1616
tarpaulin-report.json
1717
*storybook.log
1818
storybook-static
19+
.claude

README.md

Lines changed: 118 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
</div>
44

55
<h3 align="center">
6-
Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor
6+
The Future of CSS-in-JS — Zero Runtime, Full Power
77
</h3>
88

9+
<p align="center">
10+
<strong>Zero Config · Zero FOUC · Zero Runtime · Complete CSS-in-JS Syntax Coverage</strong>
11+
</p>
12+
913
---
1014

1115
<div>
@@ -31,6 +35,18 @@
3135

3236
English | [한국어](README_ko.md)
3337

38+
## Why Devup UI?
39+
40+
**Devup UI isn't just another CSS-in-JS library — it's the next evolution.**
41+
42+
Traditional CSS-in-JS solutions force you to choose between developer experience and performance. Devup UI eliminates this trade-off entirely by processing all styles at build time using a Rust-powered preprocessor.
43+
44+
- **Complete Syntax Coverage**: Every CSS-in-JS pattern you know — variables, conditionals, responsive arrays, pseudo-selectors — all fully supported
45+
- **Familiar API**: `styled()` API compatible with styled-components and Emotion patterns
46+
- **True Zero Runtime**: No JavaScript execution for styling at runtime. Period.
47+
- **Smallest Bundle Size**: Optimized class names (`a`, `b`, ... `aa`, `ab`) minimize CSS output
48+
- **Fastest Build Times**: Rust + WebAssembly delivers unmatched preprocessing speed
49+
3450
## Install
3551

3652
```sh
@@ -51,25 +67,15 @@ npm install @devup-ui/webpack-plugin
5167

5268
## Features
5369

54-
- Preprocessor
55-
- Zero Config
56-
- Zero FOUC
57-
- Zero Runtime
58-
- RSC Support
59-
- Must not use JavaScript, client-side logic, or hybrid solutions
60-
- Support Library mode
61-
- Zero Cost Dynamic Theme Support based on CSS Variables
62-
- Theme with Typing
63-
- Smallest size, fastest speed
64-
65-
## Inspirations
66-
67-
- Styled System
68-
- Chakra UI
69-
- Theme UI
70-
- Vanilla Extract
71-
- Rainbow Sprinkles
72-
- Kuma UI
70+
- **Preprocessor** — All CSS extraction happens at build time
71+
- **Zero Config** — Works out of the box with sensible defaults
72+
- **Zero FOUC** — No flash of unstyled content, no Provider required
73+
- **Zero Runtime** — No client-side JavaScript for styling
74+
- **RSC Support** — Full React Server Components compatibility
75+
- **Library Mode** — Build component libraries with extracted styles
76+
- **Dynamic Themes** — Zero-cost theme switching via CSS variables
77+
- **Type-Safe Themes** — Full TypeScript support for theme tokens
78+
- **Smallest & Fastest** — Proven by benchmarks
7379

7480
## Comparison Benchmarks
7581

@@ -84,54 +90,59 @@ Next.js Build Time and Build Size (github action - ubuntu-latest)
8490
| panda-css | 1.3.1 | 20.64s | 64,573,260 bytes |
8591
| chakra-ui | 3.27.0 | 28.81s | 222,435,802 bytes |
8692
| mui | 7.3.2 | 20.86s | 97,964,458 bytes |
87-
| devup-ui(per-file css) | 1.0.18 | 16.90s | 59,540,459 bytes |
88-
| devup-ui(single css) | 1.0.18 | 17.05s | 59,520,196 bytes |
93+
| **devup-ui(per-file css)** | 1.0.18 | **16.90s** | 59,540,459 bytes |
94+
| **devup-ui(single css)** | 1.0.18 | **17.05s** | **59,520,196 bytes** |
8995
| tailwindcss(turbopack) | 4.1.13 | 6.72s | 5,355,082 bytes |
90-
| devup-ui(single css+turbopack) | 1.0.18 | 10.34s | 4,772,050 bytes |
96+
| **devup-ui(single css+turbopack)** | 1.0.18 | 10.34s | **4,772,050 bytes** |
9197

9298
## How it works
9399

94-
Devup UI is a CSS in JS preprocessor that does not require runtime.
95-
Devup UI eliminates the performance degradation of the browser through the CSS in JS preprocessor.
96-
We develop a preprocessor that considers all grammatical cases.
100+
Devup UI transforms your components at build time. Class names are generated using a compact base-37 encoding for minimal CSS size.
101+
102+
**Basic transformation:**
97103

98104
```tsx
99-
const before = <Box bg="red" />
105+
// You write:
106+
<Box bg="red" p={4} _hover={{ bg: "blue" }} />
107+
108+
// Devup UI generates:
109+
<div className="a b c" />
100110

101-
const after = <div className="d0" />
111+
// With CSS:
112+
// .a { background-color: red; }
113+
// .b { padding: 1rem; }
114+
// .c:hover { background-color: blue; }
102115
```
103116

104-
Variables are fully supported.
117+
**Dynamic values become CSS variables:**
105118

106119
```tsx
107-
const before = <Box bg={colorVariable} />
108-
109-
const after = (
110-
<div
111-
className="d0"
112-
style={{
113-
'--d0': colorVariable,
114-
}}
115-
/>
116-
)
120+
// You write:
121+
<Box bg={colorVariable} />
122+
123+
// Devup UI generates:
124+
<div className="a" style={{ '--a': colorVariable }} />
125+
126+
// With CSS:
127+
// .a { background-color: var(--a); }
117128
```
118129

119-
Various expressions and responsiveness are also fully supported.
130+
**Complex expressions and responsive arrays — fully supported:**
120131

121132
```tsx
122-
const before = <Box bg={['red', 'blue', a > b ? 'yellow' : variable]} />
123-
124-
const after = (
125-
<div
126-
className={`d0 d1 ${a > b ? 'd2' : 'd3'}`}
127-
style={{
128-
'--d2': variable,
129-
}}
130-
/>
131-
)
133+
// You write:
134+
<Box bg={['red', 'blue', isActive ? 'green' : dynamicColor]} />
135+
136+
// Devup UI generates:
137+
<div
138+
className={`a b ${isActive ? 'c' : 'd'}`}
139+
style={{ '--d': dynamicColor }}
140+
/>
141+
142+
// With responsive CSS for each breakpoint
132143
```
133144

134-
Support Theme with Typing
145+
**Type-safe theming:**
135146

136147
`devup.json`
137148

@@ -140,33 +151,79 @@ Support Theme with Typing
140151
"theme": {
141152
"colors": {
142153
"default": {
154+
"primary": "#0070f3",
143155
"text": "#000"
144156
},
145157
"dark": {
146-
"text": "white"
158+
"primary": "#3291ff",
159+
"text": "#fff"
160+
}
161+
},
162+
"typography": {
163+
"heading": {
164+
"fontFamily": "Pretendard",
165+
"fontSize": "24px",
166+
"fontWeight": 700,
167+
"lineHeight": 1.3
147168
}
148169
}
149170
}
150171
}
151172
```
152173

153174
```tsx
154-
// Type Safe
155-
<Text color="$text" />
175+
// Type-safe theme tokens
176+
<Text color="$primary" />
177+
<Box typography="$heading" />
156178
```
157179

158-
Support Responsive And Pseudo Selector
159-
160-
You can use responsive and pseudo selector.
180+
**Responsive + Pseudo selectors together:**
161181

162182
```tsx
163-
// Responsive with Selector
164-
const box = <Box _hover={{ bg: ['red', 'blue'] }} />
183+
// Responsive with pseudo selector
184+
<Box _hover={{ bg: ['red', 'blue'] }} />
165185

166-
// Same
167-
const box = <Box _hover={[{ bg: 'red' }, { bg: 'blue' }]} />
186+
// Equivalent syntax
187+
<Box _hover={[{ bg: 'red' }, { bg: 'blue' }]} />
168188
```
169189

190+
**styled-components / Emotion compatible `styled()` API:**
191+
192+
```tsx
193+
import { styled } from '@devup-ui/react'
194+
195+
// Familiar syntax for styled-components and Emotion users
196+
const Card = styled('div', {
197+
bg: 'white',
198+
p: 4, // 4 * 4 = 16px
199+
borderRadius: '8px',
200+
boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
201+
_hover: {
202+
boxShadow: '0 10px 15px rgba(0, 0, 0, 0.1)',
203+
},
204+
})
205+
206+
const Button = styled('button', {
207+
px: 4, // 4 * 4 = 16px
208+
py: 2, // 2 * 4 = 8px
209+
borderRadius: '4px',
210+
cursor: 'pointer',
211+
})
212+
213+
// Usage
214+
<Card>Content</Card>
215+
<Button>Click me</Button>
216+
```
217+
218+
## Inspirations
219+
220+
- Styled System
221+
- Chakra UI
222+
- Theme UI
223+
- Vanilla Extract
224+
- Rainbow Sprinkles
225+
- Kuma UI
226+
170227
## How to Contribute
171228

172229
### Requirements

0 commit comments

Comments
 (0)