frutjam 2.2.2 โ 2.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.github.md +330 -0
- package/README.md +66 -128
- package/README.npm.md +110 -0
- package/dist/base/reboot/object.js +1 -1
- package/dist/base.css +3 -3
- package/dist/components/accordion.css +2 -2
- package/dist/components/alert.css +2 -2
- package/dist/components/avatar.css +2 -2
- package/dist/components/badge.css +2 -2
- package/dist/components/breadcrumb.css +2 -2
- package/dist/components/button.css +2 -2
- package/dist/components/card.css +2 -2
- package/dist/components/carousel.css +2 -2
- package/dist/components/chat.css +2 -2
- package/dist/components/checkbox.css +2 -2
- package/dist/components/collapsible/object.js +1 -1
- package/dist/components/collapsible.css +2 -2
- package/dist/components/combobox.css +2 -2
- package/dist/components/countdown.css +2 -2
- package/dist/components/diff.css +2 -2
- package/dist/components/divider/object.js +1 -1
- package/dist/components/divider.css +2 -2
- package/dist/components/drawer.css +2 -2
- package/dist/components/footer.css +2 -2
- package/dist/components/header.css +2 -2
- package/dist/components/hero.css +2 -2
- package/dist/components/indicator.css +2 -2
- package/dist/components/input.css +2 -2
- package/dist/components/join.css +2 -2
- package/dist/components/kbd.css +2 -2
- package/dist/components/link.css +2 -2
- package/dist/components/loading.css +2 -2
- package/dist/components/marquee/object.js +1 -1
- package/dist/components/marquee.css +2 -2
- package/dist/components/mask.css +2 -2
- package/dist/components/menu.css +2 -2
- package/dist/components/modal.css +2 -2
- package/dist/components/navbar/object.js +1 -1
- package/dist/components/navbar.css +2 -2
- package/dist/components/popover.css +2 -2
- package/dist/components/progress.css +2 -2
- package/dist/components/radial-progress.css +2 -2
- package/dist/components/radio.css +2 -2
- package/dist/components/range.css +2 -2
- package/dist/components/rating.css +2 -2
- package/dist/components/select.css +2 -2
- package/dist/components/sidebar.css +2 -2
- package/dist/components/skeleton.css +2 -2
- package/dist/components/stat/object.js +1 -1
- package/dist/components/stat.css +2 -2
- package/dist/components/status.css +2 -2
- package/dist/components/steps.css +2 -2
- package/dist/components/surface.css +2 -2
- package/dist/components/swap/object.js +1 -1
- package/dist/components/swap.css +2 -2
- package/dist/components/table/object.js +1 -1
- package/dist/components/table.css +2 -2
- package/dist/components/tabs/object.js +1 -1
- package/dist/components/tabs.css +2 -2
- package/dist/components/tag.css +2 -2
- package/dist/components/textarea.css +2 -2
- package/dist/components/timeline.css +2 -2
- package/dist/components/toast.css +2 -2
- package/dist/components/toggle.css +2 -2
- package/dist/components/tooltip/object.js +1 -1
- package/dist/components/tooltip.css +2 -2
- package/dist/frutjam.min.css +4 -4
- package/dist/plugin.js +4 -4
- package/dist/themes/darkberry.css +1 -1
- package/dist/themes/snowberry.css +1 -1
- package/dist/utilities/headings.css +2 -2
- package/dist/utilities/para.css +2 -2
- package/dist/utilities/typography.css +1 -1
- package/dist/utilities/wrapper.css +2 -2
- package/package.json +8 -7
package/README.github.md
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
[![npm installs][npm_installs]](https://www.npmjs.com/package/frutjam)
|
|
2
|
+
[![Jsdelivr hits][jsdelivr]](https://cdn.jsdelivr.net/npm/frutjam)
|
|
3
|
+
[](https://github.com/nezanuha/frutjam/releases)
|
|
4
|
+
[](https://github.com/nezanuha/frutjam/blob/master/LICENSE)
|
|
5
|
+
[](https://snyk.io/test/github/nezanuha/frutjam)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Frutjam โ CSS-Only Tailwind CSS UI Component Library
|
|
10
|
+
|
|
11
|
+
**Frutjam** is a free, open-source Tailwind CSS v4 component library. 65+ production-ready UI components with **zero JavaScript**, guaranteed **WCAG AA accessibility**, and a free **MCP server for AI editors** (Cherry). Works with any framework: React, Vue, HTMX, Django, Laravel, plain HTML.
|
|
12
|
+
|
|
13
|
+
๐ **[frutjam.com](https://frutjam.com)** ยท ๐ฆ **[npm](https://www.npmjs.com/package/frutjam)** ยท ๐ **[Cherry MCP](https://frutjam.com/products/cherry)**
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## What is Frutjam?
|
|
18
|
+
|
|
19
|
+
Frutjam is a **CSS-only Tailwind CSS component library** built for Tailwind CSS v4. You install it as a Tailwind plugin โ one line in your CSS โ and instantly get 65+ accessible, copy-paste UI components: buttons, modals, drawers, tabs, toasts, carousels, tables, forms, and more.
|
|
20
|
+
|
|
21
|
+
Every component works with pure HTML and CSS. No JavaScript framework required. No build pipeline beyond Tailwind itself. Drop it into any stack and start building.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Quick Install
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -D frutjam
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
```css
|
|
32
|
+
@import "tailwindcss";
|
|
33
|
+
@plugin "frutjam";
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**That's it.** All 65+ components are available immediately. No imports, no config, no extra stylesheets.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Why Frutjam?
|
|
41
|
+
|
|
42
|
+
| | Frutjam | DaisyUI | Shadcn UI | Flowbite |
|
|
43
|
+
|---|---|---|---|---|
|
|
44
|
+
| Zero JavaScript | โ
| โ
| โ React required | โ ๏ธ Some JS |
|
|
45
|
+
| Tailwind v4 native | โ
| โ ๏ธ v3 + v4 | โ ๏ธ | โ |
|
|
46
|
+
| WCAG AA guaranteed | โ
Every component | โ ๏ธ | โ ๏ธ | โ ๏ธ |
|
|
47
|
+
| OKLCH color system | โ
| โ | โ | โ |
|
|
48
|
+
| MCP server for AI editors | โ
Cherry (free tier) | โ
Blueprint (paid only) | โ | โ |
|
|
49
|
+
| Framework-agnostic | โ
| โ
| โ React only | โ ๏ธ |
|
|
50
|
+
| Copy-paste friendly | โ
| โ
| โ
| โ
|
|
|
51
|
+
| MIT license | โ
| โ
| โ
| โ
|
|
|
52
|
+
|
|
53
|
+
**The short version:** Frutjam is the only Tailwind v4-native component library with guaranteed WCAG AA accessibility, an OKLCH color system, and a free MCP server for AI-assisted development.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Key Features
|
|
58
|
+
|
|
59
|
+
- **Zero JavaScript** โ every component works with pure CSS and semantic HTML. Native `<dialog>` for modals, `<details>` for accordions, CSS `:has()` for interactive states. No `addEventListener`, no hydration, no runtime.
|
|
60
|
+
- **65+ components** โ buttons, modals, tabs, drawers, tooltips, carousels, cards, alerts, toasts, tables, forms, and more. All production-ready.
|
|
61
|
+
- **WCAG AA by default** โ every color pair (`--color-primary` / `--color-on-primary`) is hand-tuned in OKLCH to meet WCAG AA contrast requirements. Semantic HTML throughout.
|
|
62
|
+
- **Tailwind v4 native** โ built as a Tailwind v4 plugin using `@plugin`. No legacy `tailwind.config.js`. OKLCH design tokens via CSS custom properties.
|
|
63
|
+
- **Framework-agnostic** โ works with React, Next.js, Vue, Nuxt, Svelte, HTMX, Django, Laravel Blade, Astro, Rails, plain HTML โ anything that outputs HTML.
|
|
64
|
+
- **Themeable** โ swap themes with `data-theme="dark"`. Build custom themes in CSS with OKLCH tokens. Supports light, dark, and system preference automatically.
|
|
65
|
+
- **Treeshaken** โ only the components you use are included. Tailwind's engine removes unused styles at build time.
|
|
66
|
+
- **CDN-ready** โ no build step needed. Import directly from jsDelivr.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## ๐ Cherry MCP โ AI Editor Integration
|
|
71
|
+
|
|
72
|
+
Cherry is Frutjam's **free MCP server** that gives AI coding assistants accurate, real-time access to Frutjam component docs.
|
|
73
|
+
|
|
74
|
+
Without Cherry, AI assistants (Claude Code, Cursor, GitHub Copilot) hallucinate Tailwind CSS class names โ inventing classes that don't exist. Cherry solves this by feeding your AI editor the exact Frutjam specs at the moment it needs them.
|
|
75
|
+
|
|
76
|
+
**Works with:** Claude Code ยท Cursor ยท VS Code ยท Windsurf ยท Zed ยท Cline ยท any MCP-compatible editor
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"mcpServers": {
|
|
81
|
+
"frutjam": {
|
|
82
|
+
"command": "npx",
|
|
83
|
+
"args": ["-y", "frutjam-cherry"]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
[**Get Cherry MCP โ**](https://frutjam.com/products/cherry)
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Components
|
|
94
|
+
|
|
95
|
+
65+ free, production-ready CSS-only Tailwind CSS components:
|
|
96
|
+
|
|
97
|
+
### Inputs & Forms
|
|
98
|
+
- [Button](https://frutjam.com/components/button)
|
|
99
|
+
- [Checkbox](https://frutjam.com/components/checkbox)
|
|
100
|
+
- [Radio](https://frutjam.com/components/radio)
|
|
101
|
+
- [Toggle](https://frutjam.com/components/toggle)
|
|
102
|
+
- [Input](https://frutjam.com/components/input)
|
|
103
|
+
- [Textarea](https://frutjam.com/components/textarea)
|
|
104
|
+
- [Select](https://frutjam.com/components/select)
|
|
105
|
+
- [Range](https://frutjam.com/components/range)
|
|
106
|
+
- [Rating](https://frutjam.com/components/rating)
|
|
107
|
+
- [Combobox](https://frutjam.com/components/combobox)
|
|
108
|
+
|
|
109
|
+
### Layout & Navigation
|
|
110
|
+
- [Navbar](https://frutjam.com/components/navbar)
|
|
111
|
+
- [Sidebar](https://frutjam.com/components/sidebar)
|
|
112
|
+
- [Drawer](https://frutjam.com/components/drawer)
|
|
113
|
+
- [Menu](https://frutjam.com/components/menu)
|
|
114
|
+
- [Breadcrumb](https://frutjam.com/components/breadcrumb)
|
|
115
|
+
- [Tabs](https://frutjam.com/components/tabs)
|
|
116
|
+
- [Steps](https://frutjam.com/components/steps)
|
|
117
|
+
- [Footer](https://frutjam.com/components/footer)
|
|
118
|
+
- [Header](https://frutjam.com/components/header)
|
|
119
|
+
- [Join](https://frutjam.com/components/join)
|
|
120
|
+
- [Pagination](https://frutjam.com/components/pagination)
|
|
121
|
+
|
|
122
|
+
### Feedback & Overlay
|
|
123
|
+
- [Modal](https://frutjam.com/components/modal)
|
|
124
|
+
- [Toast](https://frutjam.com/components/toast)
|
|
125
|
+
- [Alert](https://frutjam.com/components/alert)
|
|
126
|
+
- [Tooltip](https://frutjam.com/components/tooltip)
|
|
127
|
+
- [Popover](https://frutjam.com/components/popover)
|
|
128
|
+
- [Loading](https://frutjam.com/components/loading)
|
|
129
|
+
- [Skeleton](https://frutjam.com/components/skeleton)
|
|
130
|
+
- [Progress](https://frutjam.com/components/progress)
|
|
131
|
+
- [Radial Progress](https://frutjam.com/components/radial-progress)
|
|
132
|
+
|
|
133
|
+
### Data Display
|
|
134
|
+
- [Card](https://frutjam.com/components/card)
|
|
135
|
+
- [Table](https://frutjam.com/components/table)
|
|
136
|
+
- [Stat](https://frutjam.com/components/stat)
|
|
137
|
+
- [Badge](https://frutjam.com/components/badge)
|
|
138
|
+
- [Tag](https://frutjam.com/components/tag)
|
|
139
|
+
- [Avatar](https://frutjam.com/components/avatar)
|
|
140
|
+
- [Indicator](https://frutjam.com/components/indicator)
|
|
141
|
+
- [Diff](https://frutjam.com/components/diff)
|
|
142
|
+
- [Timeline](https://frutjam.com/components/timeline)
|
|
143
|
+
- [Chat](https://frutjam.com/components/chat)
|
|
144
|
+
|
|
145
|
+
### Typography & Decoration
|
|
146
|
+
- [Hero](https://frutjam.com/components/hero)
|
|
147
|
+
- [Divider](https://frutjam.com/components/divider)
|
|
148
|
+
- [Kbd](https://frutjam.com/components/kbd)
|
|
149
|
+
- [Link](https://frutjam.com/components/link)
|
|
150
|
+
- [Mask](https://frutjam.com/components/mask)
|
|
151
|
+
- [Swap](https://frutjam.com/components/swap)
|
|
152
|
+
- [Countdown](https://frutjam.com/components/countdown)
|
|
153
|
+
- [Marquee](https://frutjam.com/components/marquee)
|
|
154
|
+
- [Carousel](https://frutjam.com/components/carousel)
|
|
155
|
+
- [Accordion](https://frutjam.com/components/accordion)
|
|
156
|
+
- [Collapsible](https://frutjam.com/components/collapsible)
|
|
157
|
+
- [Surface](https://frutjam.com/components/surface)
|
|
158
|
+
|
|
159
|
+
[**Browse all components with live previews โ**](https://frutjam.com/components)
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Usage Examples
|
|
164
|
+
|
|
165
|
+
```html
|
|
166
|
+
<!-- Primary button -->
|
|
167
|
+
<button class="btn btn-primary">Get Started</button>
|
|
168
|
+
|
|
169
|
+
<!-- Outline button with badge -->
|
|
170
|
+
<button class="btn btn-outline">
|
|
171
|
+
Notifications
|
|
172
|
+
<span class="badge badge-primary">3</span>
|
|
173
|
+
</button>
|
|
174
|
+
|
|
175
|
+
<!-- CSS-only modal โ no JavaScript -->
|
|
176
|
+
<button popovertarget="my-modal" class="btn btn-primary">Open Modal</button>
|
|
177
|
+
<dialog id="my-modal" popover class="modal">
|
|
178
|
+
<div class="modal-content">
|
|
179
|
+
<h3 class="heading-lg">Pure CSS modal</h3>
|
|
180
|
+
<p class="para">Zero JavaScript. Native browser popover API.</p>
|
|
181
|
+
<button popovertarget="my-modal" class="btn mt-4">Close</button>
|
|
182
|
+
</div>
|
|
183
|
+
</dialog>
|
|
184
|
+
|
|
185
|
+
<!-- Alert -->
|
|
186
|
+
<div class="alert alert-success">
|
|
187
|
+
<p>Your changes have been saved.</p>
|
|
188
|
+
</div>
|
|
189
|
+
|
|
190
|
+
<!-- Card -->
|
|
191
|
+
<div class="card">
|
|
192
|
+
<div class="card-content">
|
|
193
|
+
<h2 class="heading-lg">Card title</h2>
|
|
194
|
+
<p class="para">Card content goes here.</p>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<!-- Input -->
|
|
199
|
+
<div class="flex flex-col gap-2">
|
|
200
|
+
<label class="text-sm font-medium">Email</label>
|
|
201
|
+
<input type="email" class="input" placeholder="you@example.com">
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
<!-- Badge variants -->
|
|
205
|
+
<span class="badge badge-primary">Primary</span>
|
|
206
|
+
<span class="badge badge-success badge-soft">Success</span>
|
|
207
|
+
<span class="badge badge-error badge-outline">Error</span>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Accessibility
|
|
213
|
+
|
|
214
|
+
Frutjam is designed for WCAG AA compliance from the ground up:
|
|
215
|
+
|
|
216
|
+
- **Color contrast** โ every color token pair is hand-tuned in OKLCH to exceed WCAG AA 4.5:1 contrast ratio for text
|
|
217
|
+
- **Semantic HTML** โ native `<dialog>` for modals, `<details>` for accordions, `<nav>` for navigation, correct heading hierarchy
|
|
218
|
+
- **Keyboard navigation** โ all interactive components are fully keyboard accessible
|
|
219
|
+
- **Screen reader support** โ ARIA attributes included where native semantics are insufficient
|
|
220
|
+
- **Focus management** โ visible focus rings on all interactive elements, respects `prefers-reduced-motion`
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Themes
|
|
225
|
+
|
|
226
|
+
```html
|
|
227
|
+
<html data-theme="darkberry">
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
```css
|
|
231
|
+
/* Define your own theme */
|
|
232
|
+
@layer theme {
|
|
233
|
+
[data-theme="ocean"] {
|
|
234
|
+
--color-primary: oklch(60% 0.2 220);
|
|
235
|
+
--color-on-primary: oklch(98% 0.01 220);
|
|
236
|
+
--color-base: oklch(15% 0.02 220);
|
|
237
|
+
--color-on-base: oklch(92% 0.01 220);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
[**Explore themes โ**](https://frutjam.com/themes)
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Plugin Options
|
|
247
|
+
|
|
248
|
+
| Option | Default | Description |
|
|
249
|
+
|--------|---------|-------------|
|
|
250
|
+
| `prefix` | `""` | Prefix all Frutjam class names (e.g. `fj` โ `fj-btn`) |
|
|
251
|
+
| `reset` | `true` | Include browser reset and element defaults |
|
|
252
|
+
| `root` | `":root"` | Remap CSS variable declarations to a custom selector |
|
|
253
|
+
| `logs` | `true` | Show build-time console output |
|
|
254
|
+
| `include` | `[]` | Include only specific components |
|
|
255
|
+
| `exclude` | `[]` | Exclude specific components |
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## CDN (No Build Step)
|
|
260
|
+
|
|
261
|
+
```html
|
|
262
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/frutjam/dist/frutjam.min.css" />
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Framework Support
|
|
268
|
+
|
|
269
|
+
| Framework | Status |
|
|
270
|
+
|-----------|--------|
|
|
271
|
+
| HTML / Static sites | โ
|
|
|
272
|
+
| React / Next.js | โ
|
|
|
273
|
+
| Vue / Nuxt | โ
|
|
|
274
|
+
| Svelte / SvelteKit | โ
|
|
|
275
|
+
| HTMX | โ
|
|
|
276
|
+
| Django | โ
|
|
|
277
|
+
| Laravel / Blade | โ
|
|
|
278
|
+
| Astro | โ
|
|
|
279
|
+
| Ruby on Rails | โ
|
|
|
280
|
+
| Any HTML output | โ
|
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Documentation
|
|
285
|
+
|
|
286
|
+
- [Getting Started](https://frutjam.com/docs/overview)
|
|
287
|
+
- [Installation Guide](https://frutjam.com/docs/installation)
|
|
288
|
+
- [Configuration](https://frutjam.com/docs/configuration)
|
|
289
|
+
- [Theming](https://frutjam.com/docs/themes)
|
|
290
|
+
- [Colors](https://frutjam.com/docs/colors)
|
|
291
|
+
- [All Components](https://frutjam.com/components)
|
|
292
|
+
- [UI Blocks](https://frutjam.com/blocks)
|
|
293
|
+
- [Cherry MCP](https://frutjam.com/products/cherry)
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Community
|
|
298
|
+
|
|
299
|
+
- [Discord](https://discord.gg/FvjytjQSSZ)
|
|
300
|
+
- [X / Twitter](https://x.com/FrutjamUI)
|
|
301
|
+
- [Write for Us](https://frutjam.com/write-for-us)
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Contributing
|
|
306
|
+
|
|
307
|
+
1. Fork the repository
|
|
308
|
+
2. Create a feature branch: `git checkout -b feature/my-component`
|
|
309
|
+
3. Commit your changes: `git commit -m 'Add my-component'`
|
|
310
|
+
4. Push: `git push origin feature/my-component`
|
|
311
|
+
5. Open a Pull Request
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## License
|
|
316
|
+
|
|
317
|
+
MIT โ free for personal and commercial use. See [LICENSE](LICENSE).
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## โญ Star this repo
|
|
322
|
+
|
|
323
|
+
If Frutjam saves you time, a star helps others find it.
|
|
324
|
+
|
|
325
|
+
[](https://github.com/nezanuha/frutjam)
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
[jsdelivr]: https://badgen.net/jsdelivr/hits/npm/frutjam
|
|
330
|
+
[npm_installs]: https://badgen.net/npm/dt/frutjam
|
package/README.md
CHANGED
|
@@ -1,172 +1,110 @@
|
|
|
1
|
-
|
|
2
|
-
[![Jsdelivr hits][jsdelivr]](https://cdn.jsdelivr.net/npm/frutjam)
|
|
3
|
-
[](https://github.com/nezanuha/frutjam/releases)
|
|
4
|
-
[](https://github.com/nezanuha/frutjam/blob/master/LICENSE)
|
|
5
|
-
[](https://snyk.io/test/github/nezanuha/frutjam)
|
|
1
|
+
# Frutjam
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# Frutjam: Free & Open-Source Tailwind CSS UI Library
|
|
10
|
-
|
|
11
|
-
[Frutjam](https://frutjam.com) is a lightweight, modern UI library built for speed. It provides prebuilt Tailwind CSS components that are completely free to use โ pure CSS, no JavaScript required. Works with Vite, PostCSS, Next.js, or any framework.
|
|
12
|
-
|
|
13
|
-
[](https://opensource.org/licenses/MIT)
|
|
14
|
-
[](https://github.com/nezanuha/frutjam/stargazers)
|
|
15
|
-
|
|
16
|
-
## Pure CSS, no JavaScript needed. Framework-agnostic and fully compatible everywhere.
|
|
17
|
-
|
|
18
|
-
**Frutjam** is a UI component library built on top of **Tailwind CSS**, designed to help developers build accessible, SEO-friendly, and W3C-compliant interfacesโfast. With a wide selection of prebuilt components and themes, Frutjam makes it easy to hit the ground running or fully customize your design system.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Key Features
|
|
3
|
+
CSS-only Tailwind CSS v4 component library. 65+ accessible, copy-paste UI components โ zero JavaScript, WCAG AA guaranteed, framework-agnostic.
|
|
23
4
|
|
|
24
|
-
|
|
25
|
-
* ๐จ **Customizable Themes** โ Built-in themes plus custom theme injection
|
|
26
|
-
* ๐ท๏ธ **Flexible Prefix Support** โ Use Frutjamโs own prefix (`fj-btn`), Tailwindโs variant prefix (`tw:btn`), or both together (`tw:fj-btn`)
|
|
27
|
-
* โฟ **Accessibility-First** โ Follows accessibility best practices
|
|
28
|
-
* ๐ **SEO-Friendly** โ Semantic markup optimized for search engines
|
|
29
|
-
* โ
**W3C Standards** โ Clean, valid HTML structure
|
|
30
|
-
* โ๏ธ **Built for Tailwind CSS** โ Seamless integration with your Tailwind setup
|
|
5
|
+
**[frutjam.com](https://frutjam.com)** ยท [Components](https://frutjam.com/components) ยท [Docs](https://frutjam.com/docs) ยท [Cherry MCP](https://frutjam.com/products/cherry)
|
|
31
6
|
|
|
32
7
|
---
|
|
33
8
|
|
|
34
|
-
##
|
|
9
|
+
## Install
|
|
35
10
|
|
|
36
11
|
```bash
|
|
37
|
-
npm install frutjam
|
|
12
|
+
npm install -D frutjam
|
|
38
13
|
```
|
|
39
14
|
|
|
40
|
-
In your main stylesheet:
|
|
41
|
-
|
|
42
15
|
```css
|
|
43
16
|
@import "tailwindcss";
|
|
44
17
|
@plugin "frutjam";
|
|
45
18
|
```
|
|
46
19
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
```html
|
|
50
|
-
<button class="btn btn-primary">
|
|
51
|
-
Launch App
|
|
52
|
-
</button>
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## With Prefix
|
|
20
|
+
That's it. All 65+ components available immediately.
|
|
56
21
|
|
|
57
|
-
|
|
22
|
+
---
|
|
58
23
|
|
|
59
|
-
|
|
60
|
-
@import "tailwindcss";
|
|
61
|
-
@plugin "frutjam" {
|
|
62
|
-
prefix: fj;
|
|
63
|
-
}
|
|
64
|
-
```
|
|
24
|
+
## CDN
|
|
65
25
|
|
|
66
26
|
```html
|
|
67
|
-
<
|
|
27
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/frutjam/dist/frutjam.min.css" />
|
|
68
28
|
```
|
|
69
29
|
|
|
70
|
-
|
|
30
|
+
---
|
|
71
31
|
|
|
72
|
-
|
|
73
|
-
@import "tailwindcss" prefix(tw);
|
|
74
|
-
@plugin "frutjam";
|
|
75
|
-
```
|
|
32
|
+
## Usage
|
|
76
33
|
|
|
77
34
|
```html
|
|
78
|
-
|
|
35
|
+
<!-- Button -->
|
|
36
|
+
<button class="btn btn-primary">Get Started</button>
|
|
37
|
+
<button class="btn btn-outline">Cancel</button>
|
|
38
|
+
|
|
39
|
+
<!-- Badge -->
|
|
40
|
+
<span class="badge badge-success">Active</span>
|
|
41
|
+
<span class="badge badge-error badge-soft">Error</span>
|
|
42
|
+
|
|
43
|
+
<!-- Alert -->
|
|
44
|
+
<div class="alert alert-success">Saved successfully.</div>
|
|
45
|
+
|
|
46
|
+
<!-- Card -->
|
|
47
|
+
<div class="card">
|
|
48
|
+
<div class="card-content">
|
|
49
|
+
<h2 class="heading-lg">Title</h2>
|
|
50
|
+
<p class="para">Content goes here.</p>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<!-- Input -->
|
|
55
|
+
<input type="text" class="input" placeholder="Enter text...">
|
|
56
|
+
|
|
57
|
+
<!-- CSS-only modal โ no JavaScript -->
|
|
58
|
+
<button popovertarget="modal" class="btn btn-primary">Open</button>
|
|
59
|
+
<dialog id="modal" popover class="modal">
|
|
60
|
+
<div class="modal-content">
|
|
61
|
+
<h3 class="heading-lg">Modal title</h3>
|
|
62
|
+
<button popovertarget="modal" class="btn mt-4">Close</button>
|
|
63
|
+
</div>
|
|
64
|
+
</dialog>
|
|
79
65
|
```
|
|
80
66
|
|
|
81
|
-
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Plugin Options
|
|
82
70
|
|
|
83
71
|
```css
|
|
84
|
-
@import "tailwindcss" prefix(tw);
|
|
85
72
|
@plugin "frutjam" {
|
|
86
|
-
prefix: fj;
|
|
73
|
+
prefix: fj; /* fj-btn, fj-card, etc. */
|
|
74
|
+
reset: true; /* browser reset (default: true) */
|
|
87
75
|
}
|
|
88
76
|
```
|
|
89
77
|
|
|
90
|
-
|
|
91
|
-
<button class="tw:fj-btn tw:fj-btn-primary">Launch App</button>
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Plugin Options
|
|
95
|
-
|
|
96
|
-
All options can be set in CSS via `@plugin "frutjam" { ... }` or in `postcss.config.js`:
|
|
97
|
-
|
|
98
|
-
| Option | Default | Description |
|
|
99
|
-
|--------|---------|-------------|
|
|
100
|
-
| `prefix` | `""` | Prefix all Frutjam class names (e.g. `fj` โ `fj-btn`) |
|
|
101
|
-
| `reset` | `true` | Include browser reset and element defaults |
|
|
102
|
-
| `root` | `":root"` | Remap CSS var declarations to a custom selector (e.g. `":host"`) |
|
|
103
|
-
| `logs` | `true` | Show build-time console output |
|
|
104
|
-
| `include` | `[]` | Only include specific components/utilities |
|
|
105
|
-
| `exclude` | `[]` | Exclude specific components/utilities |
|
|
78
|
+
---
|
|
106
79
|
|
|
107
|
-
##
|
|
80
|
+
## ๐ Cherry MCP โ Stop AI from hallucinating class names
|
|
108
81
|
|
|
109
|
-
|
|
82
|
+
Cherry is a free MCP server that gives Claude Code, Cursor, and VS Code accurate real-time Frutjam docs โ no more invented class names.
|
|
110
83
|
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
--color-on-base: oklch(20% 0.02 220);
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"frutjam": {
|
|
88
|
+
"command": "npx",
|
|
89
|
+
"args": ["-y", "frutjam-cherry"]
|
|
90
|
+
}
|
|
119
91
|
}
|
|
120
92
|
}
|
|
121
93
|
```
|
|
122
94
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
```html
|
|
126
|
-
<body data-theme="blueberry">
|
|
127
|
-
...
|
|
128
|
-
</body>
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Thatโs it โ youโre ready to build with Frutjam components!
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Live Demo & Documentation
|
|
136
|
-
|
|
137
|
-
For full documentation and live interactive previews, visit our official site: ๐ **[frutjam](https://frutjam.com/docs)**
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## ๐ค Contributing
|
|
142
|
-
|
|
143
|
-
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
|
|
144
|
-
|
|
145
|
-
1. Fork the repo
|
|
146
|
-
2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
|
|
147
|
-
3. Commit your Changes (git commit -m 'Add some AmazingFeature')
|
|
148
|
-
4. Push to the Branch (git push origin feature/AmazingFeature)
|
|
149
|
-
5. Open a Pull Request
|
|
150
|
-
|
|
151
|
-
Please check the [contributing guidelines](.github/CONTRIBUTING.md) before starting.
|
|
95
|
+
[**Get Cherry โ**](https://frutjam.com/products/cherry)
|
|
152
96
|
|
|
153
97
|
---
|
|
154
98
|
|
|
155
|
-
##
|
|
99
|
+
## Links
|
|
156
100
|
|
|
157
|
-
|
|
101
|
+
- [Full documentation](https://frutjam.com/docs)
|
|
102
|
+
- [All 65+ components](https://frutjam.com/components)
|
|
103
|
+
- [UI Blocks](https://frutjam.com/blocks)
|
|
104
|
+
- [Themes](https://frutjam.com/docs/themes)
|
|
105
|
+
- [GitHub](https://github.com/nezanuha/frutjam)
|
|
106
|
+
- [Discord](https://discord.gg/FvjytjQSSZ)
|
|
158
107
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
Thank you for choosing the Frutjam UI Library โ Happy coding!
|
|
162
|
-
|
|
163
|
-
## โญ Support
|
|
164
|
-
|
|
165
|
-
If you like this project, consider giving it a star! ๐
|
|
166
|
-
|
|
167
|
-
[](https://github.com/nezanuha/frutjam/stargazers)
|
|
168
|
-
|
|
169
|
-
---
|
|
108
|
+
## License
|
|
170
109
|
|
|
171
|
-
|
|
172
|
-
[npm_installs]: https://badgen.net/npm/dt/frutjam
|
|
110
|
+
MIT
|
package/README.npm.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Frutjam
|
|
2
|
+
|
|
3
|
+
CSS-only Tailwind CSS v4 component library. 65+ accessible, copy-paste UI components โ zero JavaScript, WCAG AA guaranteed, framework-agnostic.
|
|
4
|
+
|
|
5
|
+
**[frutjam.com](https://frutjam.com)** ยท [Components](https://frutjam.com/components) ยท [Docs](https://frutjam.com/docs) ยท [Cherry MCP](https://frutjam.com/products/cherry)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -D frutjam
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```css
|
|
16
|
+
@import "tailwindcss";
|
|
17
|
+
@plugin "frutjam";
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
That's it. All 65+ components available immediately.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## CDN
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/frutjam/dist/frutjam.min.css" />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<!-- Button -->
|
|
36
|
+
<button class="btn btn-primary">Get Started</button>
|
|
37
|
+
<button class="btn btn-outline">Cancel</button>
|
|
38
|
+
|
|
39
|
+
<!-- Badge -->
|
|
40
|
+
<span class="badge badge-success">Active</span>
|
|
41
|
+
<span class="badge badge-error badge-soft">Error</span>
|
|
42
|
+
|
|
43
|
+
<!-- Alert -->
|
|
44
|
+
<div class="alert alert-success">Saved successfully.</div>
|
|
45
|
+
|
|
46
|
+
<!-- Card -->
|
|
47
|
+
<div class="card">
|
|
48
|
+
<div class="card-content">
|
|
49
|
+
<h2 class="heading-lg">Title</h2>
|
|
50
|
+
<p class="para">Content goes here.</p>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<!-- Input -->
|
|
55
|
+
<input type="text" class="input" placeholder="Enter text...">
|
|
56
|
+
|
|
57
|
+
<!-- CSS-only modal โ no JavaScript -->
|
|
58
|
+
<button popovertarget="modal" class="btn btn-primary">Open</button>
|
|
59
|
+
<dialog id="modal" popover class="modal">
|
|
60
|
+
<div class="modal-content">
|
|
61
|
+
<h3 class="heading-lg">Modal title</h3>
|
|
62
|
+
<button popovertarget="modal" class="btn mt-4">Close</button>
|
|
63
|
+
</div>
|
|
64
|
+
</dialog>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Plugin Options
|
|
70
|
+
|
|
71
|
+
```css
|
|
72
|
+
@plugin "frutjam" {
|
|
73
|
+
prefix: fj; /* fj-btn, fj-card, etc. */
|
|
74
|
+
reset: true; /* browser reset (default: true) */
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## ๐ Cherry MCP โ Stop AI from hallucinating class names
|
|
81
|
+
|
|
82
|
+
Cherry is a free MCP server that gives Claude Code, Cursor, and VS Code accurate real-time Frutjam docs โ no more invented class names.
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"frutjam": {
|
|
88
|
+
"command": "npx",
|
|
89
|
+
"args": ["-y", "frutjam-cherry"]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
[**Get Cherry โ**](https://frutjam.com/products/cherry)
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Links
|
|
100
|
+
|
|
101
|
+
- [Full documentation](https://frutjam.com/docs)
|
|
102
|
+
- [All 65+ components](https://frutjam.com/components)
|
|
103
|
+
- [UI Blocks](https://frutjam.com/blocks)
|
|
104
|
+
- [Themes](https://frutjam.com/docs/themes)
|
|
105
|
+
- [GitHub](https://github.com/nezanuha/frutjam)
|
|
106
|
+
- [Discord](https://discord.gg/FvjytjQSSZ)
|
|
107
|
+
|
|
108
|
+
## License
|
|
109
|
+
|
|
110
|
+
MIT
|