unslop-ui 0.1.0
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.md +84 -0
- package/dist/chunk-34KLV5KL.js +1051 -0
- package/dist/chunk-34KLV5KL.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +63 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +113 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/package.json +60 -0
package/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Unslop UI
|
|
2
|
+
|
|
3
|
+
Catch UI slop before it ships.
|
|
4
|
+
|
|
5
|
+
Unslop UI is a deterministic CLI for scanning React, Tailwind, and shadcn/ui codebases for repeatable frontend design debt.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx unslop-ui .
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Local development:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm install
|
|
17
|
+
pnpm dev -- fixtures/slop
|
|
18
|
+
pnpm dev -- fixtures/clean
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## What it catches
|
|
22
|
+
|
|
23
|
+
- Generic AI SaaS heroes
|
|
24
|
+
- Gradient soup
|
|
25
|
+
- Card lasagna
|
|
26
|
+
- Muted text overuse
|
|
27
|
+
- Arbitrary Tailwind values
|
|
28
|
+
- Raw hex colors
|
|
29
|
+
- Token bypassing
|
|
30
|
+
- Inconsistent radius/shadow scales
|
|
31
|
+
- Default-looking shadcn UI
|
|
32
|
+
|
|
33
|
+
## Config
|
|
34
|
+
|
|
35
|
+
Create `unslop.config.ts`:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import { defineConfig } from "unslop-ui";
|
|
39
|
+
|
|
40
|
+
export default defineConfig({
|
|
41
|
+
include: ["app/**/*.{tsx,jsx}", "components/**/*.{tsx,jsx}"],
|
|
42
|
+
ignore: ["node_modules/**", ".next/**", "dist/**"],
|
|
43
|
+
stack: {
|
|
44
|
+
react: true,
|
|
45
|
+
tailwind: true,
|
|
46
|
+
shadcn: true,
|
|
47
|
+
},
|
|
48
|
+
rules: {
|
|
49
|
+
"ui-slop/token-bypass": "warn",
|
|
50
|
+
"ui-slop/arbitrary-tailwind-values": "warn",
|
|
51
|
+
"ui-slop/raw-hex-colors": "error",
|
|
52
|
+
"ui-slop/gradient-soup": "warn",
|
|
53
|
+
"ui-slop/card-lasagna": "warn",
|
|
54
|
+
"ui-slop/muted-everything": "warn",
|
|
55
|
+
"ui-slop/random-radius": "warn",
|
|
56
|
+
"ui-slop/random-shadow": "warn",
|
|
57
|
+
"ui-slop/shadcn-default-look": "warn",
|
|
58
|
+
"ui-slop/generic-ai-hero": "warn",
|
|
59
|
+
"ui-slop/inconsistent-icon-size": "warn",
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Rules can be disabled with `"off"`.
|
|
65
|
+
|
|
66
|
+
## CI
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
pnpm unslop-ui . --strict
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
By default the CLI exits non-zero only for `error` findings. `--strict` treats warnings as build-failing.
|
|
73
|
+
|
|
74
|
+
Use JSON for machines:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
unslop-ui . --json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Philosophy
|
|
81
|
+
|
|
82
|
+
Unslop UI does not try to judge beauty. It catches repeatable design debt and AI-generated UI anti-patterns.
|
|
83
|
+
|
|
84
|
+
The scanner is static and deterministic in V0. It does not use screenshots, Playwright, Figma, or model-based judging.
|