@drjoshcsimmons/scl 0.1.1 → 0.1.3
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 +202 -13
- package/dist/index100.js +50 -9
- package/dist/index101.js +9 -50
- package/dist/index102.js +627 -196
- package/dist/index103.js +180 -3
- package/dist/index104.js +15 -30
- package/dist/index11.js +2 -2
- package/dist/index110.js +1 -1
- package/dist/index12.js +1 -1
- package/dist/index13.js +2 -2
- package/dist/index14.js +2 -2
- package/dist/index15.js +2 -2
- package/dist/index17.js +3 -3
- package/dist/index18.js +2 -2
- package/dist/index20.js +2 -2
- package/dist/index21.js +1 -1
- package/dist/index22.js +1 -1
- package/dist/index23.js +2 -2
- package/dist/index24.js +1 -1
- package/dist/index25.js +4 -4
- package/dist/index26.js +1 -1
- package/dist/index27.js +3 -3
- package/dist/index29.js +1 -1
- package/dist/index31.js +1 -1
- package/dist/index33.js +1 -1
- package/dist/index36.js +2 -2
- package/dist/index37.js +1 -1
- package/dist/index4.js +2 -2
- package/dist/index45.js +124 -32
- package/dist/index46.js +32 -124
- package/dist/index47.js +100 -219
- package/dist/index48.js +73 -11
- package/dist/index49.js +244 -55
- package/dist/index5.js +1 -1
- package/dist/index50.js +9 -249
- package/dist/index51.js +237 -9
- package/dist/index52.js +11 -73
- package/dist/index53.js +16 -234
- package/dist/index54.js +860 -11
- package/dist/index55.js +9 -310
- package/dist/index56.js +225 -12
- package/dist/index57.js +11 -225
- package/dist/index59.js +58 -29
- package/dist/index6.js +1 -1
- package/dist/index60.js +248 -254
- package/dist/index61.js +530 -12
- package/dist/index62.js +224 -101
- package/dist/index63.js +260 -12
- package/dist/index64.js +12 -22
- package/dist/index65.js +12 -18
- package/dist/index66.js +407 -213
- package/dist/index67.js +143 -112
- package/dist/index68.js +317 -142
- package/dist/index69.js +76 -248
- package/dist/index7.js +1 -1
- package/dist/index70.js +299 -71
- package/dist/index71.js +12 -530
- package/dist/index72.js +20 -433
- package/dist/index73.js +216 -316
- package/dist/index74.js +105 -835
- package/dist/index75.js +31 -9
- package/dist/index8.js +1 -1
- package/dist/index80.js +50 -44
- package/dist/index81.js +4 -52
- package/dist/index83.js +68 -10
- package/dist/index84.js +10 -7
- package/dist/index85.js +54 -5
- package/dist/index86.js +10 -24
- package/dist/index87.js +29 -68
- package/dist/index88.js +10 -52
- package/dist/index89.js +5 -10
- package/dist/index9.js +2 -2
- package/dist/index90.js +25 -4
- package/dist/index91.js +46 -30
- package/dist/index92.js +7 -12
- package/dist/index93.js +3 -180
- package/dist/index94.js +122 -12
- package/dist/index95.js +11 -646
- package/dist/index96.js +125 -115
- package/dist/index97.js +212 -128
- package/dist/index98.js +1 -1
- package/dist/index99.js +30 -15
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,17 +1,74 @@
|
|
|
1
|
+
```
|
|
2
|
+
_____ __________
|
|
3
|
+
/ ___// ____/ __ \
|
|
4
|
+
\__ \/ / / / / /
|
|
5
|
+
___/ / /___/ /_/ /
|
|
6
|
+
/____/\____/_____/
|
|
7
|
+
|
|
8
|
+
SIMSIES COMPONENT LIBRARY
|
|
9
|
+
"because copy-pasting is for normies"
|
|
10
|
+
```
|
|
11
|
+
|
|
1
12
|
# SCL - Simsies Component Library
|
|
2
13
|
|
|
14
|
+
[](https://jcpsimmons.github.io/scl/)
|
|
15
|
+
[](https://www.npmjs.com/package/@drjoshcsimmons/scl)
|
|
16
|
+
[](https://opensource.org/licenses/MIT)
|
|
17
|
+
|
|
3
18
|
A BASED React component library that doesn't suck. Built on [shadcn/ui](https://ui.shadcn.com/), Radix primitives, and Tailwind CSS because I'm not a masochist who writes CSS from scratch anymore.
|
|
4
19
|
|
|
5
|
-
|
|
20
|
+
```
|
|
21
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
22
|
+
║ ║
|
|
23
|
+
║ > npm install @drjoshcsimmons/scl ║
|
|
24
|
+
║ ║
|
|
25
|
+
║ [████████████████████████████████████████] 100% ║
|
|
26
|
+
║ ║
|
|
27
|
+
║ ✓ installed 1 package ║
|
|
28
|
+
║ ✓ your code now has TASTE ║
|
|
29
|
+
║ ✓ maidens acquired ║
|
|
30
|
+
║ ║
|
|
31
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
32
|
+
```
|
|
6
33
|
|
|
7
34
|
## What the hell is this?
|
|
8
35
|
|
|
9
|
-
It's my personal component library. I got tired of copy-pasting the same damn components between projects, so I made this. Now I just `npm install` and get on with my life.
|
|
36
|
+
It's my personal component library. I got tired of copy-pasting the same damn components between projects, so I made this. Now I just `npm install` and get on with my life like a functional adult.
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
┌─────────────────────┐
|
|
40
|
+
│ VIRGIN DEVS: │
|
|
41
|
+
│ "Let me just │
|
|
42
|
+
│ copy this file │
|
|
43
|
+
│ real quick..." │
|
|
44
|
+
└─────────┬───────────┘
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
┌─────────────────────┐
|
|
48
|
+
│ *3 hours later* │
|
|
49
|
+
│ "Why doesn't this │
|
|
50
|
+
│ work anymore" │
|
|
51
|
+
└─────────────────────┘
|
|
52
|
+
|
|
53
|
+
vs.
|
|
54
|
+
|
|
55
|
+
┌─────────────────────┐
|
|
56
|
+
│ CHAD SCL USERS: │
|
|
57
|
+
│ npm install │
|
|
58
|
+
│ *ships product* │
|
|
59
|
+
│ *goes outside* │
|
|
60
|
+
└─────────────────────┘
|
|
61
|
+
```
|
|
10
62
|
|
|
11
63
|
## Installation
|
|
12
64
|
|
|
13
65
|
```bash
|
|
14
66
|
npm install @drjoshcsimmons/scl
|
|
67
|
+
# or
|
|
68
|
+
pnpm add @drjoshcsimmons/scl
|
|
69
|
+
# or
|
|
70
|
+
yarn add @drjoshcsimmons/scl
|
|
71
|
+
# (we don't discriminate against package managers here)
|
|
15
72
|
```
|
|
16
73
|
|
|
17
74
|
## Usage
|
|
@@ -32,17 +89,36 @@ function App() {
|
|
|
32
89
|
|
|
33
90
|
## Components
|
|
34
91
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
92
|
+
```
|
|
93
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
94
|
+
│ COMPONENT ARSENAL │
|
|
95
|
+
├──────────────────────────────────────────────────────────────────┤
|
|
96
|
+
│ │
|
|
97
|
+
│ ┌─ LAYOUT ─────────────────────────────────────────────────┐ │
|
|
98
|
+
│ │ Accordion • Card • Collapsible • Scroll Area │ │
|
|
99
|
+
│ │ Separator • Sheet • Tabs • Resizable │ │
|
|
100
|
+
│ └──────────────────────────────────────────────────────────┘ │
|
|
101
|
+
│ │
|
|
102
|
+
│ ┌─ FORMS ──────────────────────────────────────────────────┐ │
|
|
103
|
+
│ │ Button • Checkbox • Input • Label • Radio Group │ │
|
|
104
|
+
│ │ Select • Slider • Switch • Textarea • Toggle │ │
|
|
105
|
+
│ └──────────────────────────────────────────────────────────┘ │
|
|
106
|
+
│ │
|
|
107
|
+
│ ┌─ DATA DISPLAY ───────────────────────────────────────────┐ │
|
|
108
|
+
│ │ Avatar • Badge • Progress • Skeleton • Table • Tooltip │ │
|
|
109
|
+
│ └──────────────────────────────────────────────────────────┘ │
|
|
110
|
+
│ │
|
|
111
|
+
│ ┌─ FEEDBACK ───────────────────────────────────────────────┐ │
|
|
112
|
+
│ │ Alert • Alert Dialog • Dialog • Popover • Dropdown Menu │ │
|
|
113
|
+
│ └──────────────────────────────────────────────────────────┘ │
|
|
114
|
+
│ │
|
|
115
|
+
│ ┌─ WEIRD CUSTOM SHIT ──────────────────────────────────────┐ │
|
|
116
|
+
│ │ Dithered Image • Statusline • Terminal Textarea │ │
|
|
117
|
+
│ │ Code Editor (with VIM MODE because we're not animals) │ │
|
|
118
|
+
│ └──────────────────────────────────────────────────────────┘ │
|
|
119
|
+
│ │
|
|
120
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
121
|
+
```
|
|
46
122
|
|
|
47
123
|
## Development
|
|
48
124
|
|
|
@@ -58,16 +134,129 @@ pnpm test
|
|
|
58
134
|
|
|
59
135
|
# Build the library
|
|
60
136
|
pnpm build
|
|
137
|
+
|
|
138
|
+
# Type check (for the paranoid)
|
|
139
|
+
pnpm typecheck
|
|
61
140
|
```
|
|
62
141
|
|
|
63
142
|
## Storybook
|
|
64
143
|
|
|
65
144
|
Check out the components at [jcpsimmons.github.io/scl](https://jcpsimmons.github.io/scl/)
|
|
66
145
|
|
|
146
|
+
```
|
|
147
|
+
┌─────────────────────────────────────┐
|
|
148
|
+
│ │
|
|
149
|
+
│ STORYBOOK PREVIEW: │
|
|
150
|
+
│ │
|
|
151
|
+
│ ┌─────────────────────────────┐ │
|
|
152
|
+
│ │ [=========] Button │ │
|
|
153
|
+
│ │ [ ● ] Toggle │ │
|
|
154
|
+
│ │ [████░░░░░] Progress │ │
|
|
155
|
+
│ │ ┌─────────┐ Card │ │
|
|
156
|
+
│ │ │ Content │ │ │
|
|
157
|
+
│ │ └─────────┘ │ │
|
|
158
|
+
│ └─────────────────────────────┘ │
|
|
159
|
+
│ │
|
|
160
|
+
│ (but cooler because retro theme) │
|
|
161
|
+
│ │
|
|
162
|
+
└─────────────────────────────────────┘
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## The Aesthetic
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
╔════════════════════════════════════════════════════════════════════╗
|
|
169
|
+
║ ║
|
|
170
|
+
║ This library has a RETRO TERMINAL AESTHETIC because: ║
|
|
171
|
+
║ ║
|
|
172
|
+
║ • No border-radius (corners are for cowards) ║
|
|
173
|
+
║ • No shadows (we live in FLATLAND) ║
|
|
174
|
+
║ • BigBlueTerm437 monospace font (embrace the CRT vibes) ║
|
|
175
|
+
║ • CSS variables for theming (HSL colors because we're not ║
|
|
176
|
+
║ savages who use hex in 2024) ║
|
|
177
|
+
║ • Dark mode (obviously) ║
|
|
178
|
+
║ ║
|
|
179
|
+
║ If you want rounded corners and drop shadows, Material UI is ║
|
|
180
|
+
║ ──────────────────────────────────────────────> that way ║
|
|
181
|
+
║ ║
|
|
182
|
+
╚════════════════════════════════════════════════════════════════════╝
|
|
183
|
+
```
|
|
184
|
+
|
|
67
185
|
## Why "Simsies"?
|
|
68
186
|
|
|
69
187
|
It's my name. Well, part of it. Don't overthink it.
|
|
70
188
|
|
|
189
|
+
```
|
|
190
|
+
___________________
|
|
191
|
+
< Simmons -> Simsies >
|
|
192
|
+
-------------------
|
|
193
|
+
\ ^__^
|
|
194
|
+
\ (oo)\_______
|
|
195
|
+
(__)\ )\/\
|
|
196
|
+
||----w |
|
|
197
|
+
|| ||
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Tech Stack
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
┌────────────────────────────────────────────────────────┐
|
|
204
|
+
│ │
|
|
205
|
+
│ React ──────────────► Because it's 2024 │
|
|
206
|
+
│ │ │
|
|
207
|
+
│ ▼ │
|
|
208
|
+
│ Radix UI ──────────► Accessibility handled │
|
|
209
|
+
│ │ │
|
|
210
|
+
│ ▼ │
|
|
211
|
+
│ Tailwind CSS ──────► Utility classes go brrrr │
|
|
212
|
+
│ │ │
|
|
213
|
+
│ ▼ │
|
|
214
|
+
│ CVA ────────────────► Variants without the pain │
|
|
215
|
+
│ │ │
|
|
216
|
+
│ ▼ │
|
|
217
|
+
│ TypeScript ─────────► Red squiggles save lives │
|
|
218
|
+
│ │ │
|
|
219
|
+
│ ▼ │
|
|
220
|
+
│ Vite ───────────────► Fast AF builds │
|
|
221
|
+
│ │ │
|
|
222
|
+
│ ▼ │
|
|
223
|
+
│ Vitest ─────────────► Tests that don't take forever │
|
|
224
|
+
│ │
|
|
225
|
+
└────────────────────────────────────────────────────────┘
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Contributing
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
┌───────────────────────────────────────────────┐
|
|
232
|
+
│ │
|
|
233
|
+
│ 1. Fork the repo │
|
|
234
|
+
│ 2. Make your changes │
|
|
235
|
+
│ 3. Write tests (non-negotiable) │
|
|
236
|
+
│ 4. Open a PR │
|
|
237
|
+
│ 5. ??? │
|
|
238
|
+
│ 6. Profit │
|
|
239
|
+
│ │
|
|
240
|
+
└───────────────────────────────────────────────┘
|
|
241
|
+
```
|
|
242
|
+
|
|
71
243
|
## License
|
|
72
244
|
|
|
73
245
|
MIT - Do whatever the fuck you want with it.
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
████████████████████████████████████████████████████████████
|
|
249
|
+
█ █
|
|
250
|
+
█ "I used to copy-paste components like a peasant. █
|
|
251
|
+
█ Now I npm install SCL and actually touch grass." █
|
|
252
|
+
█ █
|
|
253
|
+
█ - Some developer, probably █
|
|
254
|
+
█ █
|
|
255
|
+
████████████████████████████████████████████████████████████
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
<p align="center">
|
|
261
|
+
<sub>Made with ☕ and mass quantities of mass quantities by <a href="https://github.com/jcpsimmons">@jcpsimmons</a></sub>
|
|
262
|
+
</p>
|
package/dist/index100.js
CHANGED
|
@@ -1,11 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
var S = function(r) {
|
|
2
|
+
if (typeof document > "u")
|
|
3
|
+
return null;
|
|
4
|
+
var u = Array.isArray(r) ? r[0] : r;
|
|
5
|
+
return u.ownerDocument.body;
|
|
6
|
+
}, f = /* @__PURE__ */ new WeakMap(), v = /* @__PURE__ */ new WeakMap(), p = {}, h = 0, W = function(r) {
|
|
7
|
+
return r && (r.host || W(r.parentNode));
|
|
8
|
+
}, D = function(r, u) {
|
|
9
|
+
return u.map(function(e) {
|
|
10
|
+
if (r.contains(e))
|
|
11
|
+
return e;
|
|
12
|
+
var n = W(e);
|
|
13
|
+
return n && r.contains(n) ? n : (console.error("aria-hidden", e, "in not contained inside", r, ". Doing nothing"), null);
|
|
14
|
+
}).filter(function(e) {
|
|
15
|
+
return !!e;
|
|
16
|
+
});
|
|
17
|
+
}, E = function(r, u, e, n) {
|
|
18
|
+
var i = D(u, Array.isArray(r) ? r : [r]);
|
|
19
|
+
p[e] || (p[e] = /* @__PURE__ */ new WeakMap());
|
|
20
|
+
var s = p[e], l = [], o = /* @__PURE__ */ new Set(), b = new Set(i), y = function(t) {
|
|
21
|
+
!t || o.has(t) || (o.add(t), y(t.parentNode));
|
|
22
|
+
};
|
|
23
|
+
i.forEach(y);
|
|
24
|
+
var A = function(t) {
|
|
25
|
+
!t || b.has(t) || Array.prototype.forEach.call(t.children, function(a) {
|
|
26
|
+
if (o.has(a))
|
|
27
|
+
A(a);
|
|
28
|
+
else
|
|
29
|
+
try {
|
|
30
|
+
var c = a.getAttribute(n), w = c !== null && c !== "false", d = (f.get(a) || 0) + 1, M = (s.get(a) || 0) + 1;
|
|
31
|
+
f.set(a, d), s.set(a, M), l.push(a), d === 1 && w && v.set(a, !0), M === 1 && a.setAttribute(e, "true"), w || a.setAttribute(n, "true");
|
|
32
|
+
} catch (k) {
|
|
33
|
+
console.error("aria-hidden: cannot operate on ", a, k);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
return A(u), o.clear(), h++, function() {
|
|
38
|
+
l.forEach(function(t) {
|
|
39
|
+
var a = f.get(t) - 1, c = s.get(t) - 1;
|
|
40
|
+
f.set(t, a), s.set(t, c), a || (v.has(t) || t.removeAttribute(n), v.delete(t)), c || t.removeAttribute(e);
|
|
41
|
+
}), h--, h || (f = /* @__PURE__ */ new WeakMap(), f = /* @__PURE__ */ new WeakMap(), v = /* @__PURE__ */ new WeakMap(), p = {});
|
|
42
|
+
};
|
|
43
|
+
}, C = function(r, u, e) {
|
|
44
|
+
e === void 0 && (e = "data-aria-hidden");
|
|
45
|
+
var n = Array.from(Array.isArray(r) ? r : [r]), i = S(r);
|
|
46
|
+
return i ? (n.push.apply(n, Array.from(i.querySelectorAll("[aria-live], script"))), E(n, i, e, "aria-hidden")) : function() {
|
|
47
|
+
return null;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
9
50
|
export {
|
|
10
|
-
|
|
51
|
+
C as hideOthers
|
|
11
52
|
};
|
package/dist/index101.js
CHANGED
|
@@ -1,52 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return u.map(function(e) {
|
|
10
|
-
if (r.contains(e))
|
|
11
|
-
return e;
|
|
12
|
-
var n = W(e);
|
|
13
|
-
return n && r.contains(n) ? n : (console.error("aria-hidden", e, "in not contained inside", r, ". Doing nothing"), null);
|
|
14
|
-
}).filter(function(e) {
|
|
15
|
-
return !!e;
|
|
16
|
-
});
|
|
17
|
-
}, E = function(r, u, e, n) {
|
|
18
|
-
var i = D(u, Array.isArray(r) ? r : [r]);
|
|
19
|
-
p[e] || (p[e] = /* @__PURE__ */ new WeakMap());
|
|
20
|
-
var s = p[e], l = [], o = /* @__PURE__ */ new Set(), b = new Set(i), y = function(t) {
|
|
21
|
-
!t || o.has(t) || (o.add(t), y(t.parentNode));
|
|
22
|
-
};
|
|
23
|
-
i.forEach(y);
|
|
24
|
-
var A = function(t) {
|
|
25
|
-
!t || b.has(t) || Array.prototype.forEach.call(t.children, function(a) {
|
|
26
|
-
if (o.has(a))
|
|
27
|
-
A(a);
|
|
28
|
-
else
|
|
29
|
-
try {
|
|
30
|
-
var c = a.getAttribute(n), w = c !== null && c !== "false", d = (f.get(a) || 0) + 1, M = (s.get(a) || 0) + 1;
|
|
31
|
-
f.set(a, d), s.set(a, M), l.push(a), d === 1 && w && v.set(a, !0), M === 1 && a.setAttribute(e, "true"), w || a.setAttribute(n, "true");
|
|
32
|
-
} catch (k) {
|
|
33
|
-
console.error("aria-hidden: cannot operate on ", a, k);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
return A(u), o.clear(), h++, function() {
|
|
38
|
-
l.forEach(function(t) {
|
|
39
|
-
var a = f.get(t) - 1, c = s.get(t) - 1;
|
|
40
|
-
f.set(t, a), s.set(t, c), a || (v.has(t) || t.removeAttribute(n), v.delete(t)), c || t.removeAttribute(e);
|
|
41
|
-
}), h--, h || (f = /* @__PURE__ */ new WeakMap(), f = /* @__PURE__ */ new WeakMap(), v = /* @__PURE__ */ new WeakMap(), p = {});
|
|
42
|
-
};
|
|
43
|
-
}, C = function(r, u, e) {
|
|
44
|
-
e === void 0 && (e = "data-aria-hidden");
|
|
45
|
-
var n = Array.from(Array.isArray(r) ? r : [r]), i = S(r);
|
|
46
|
-
return i ? (n.push.apply(n, Array.from(i.querySelectorAll("[aria-live], script"))), E(n, i, e, "aria-hidden")) : function() {
|
|
47
|
-
return null;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
1
|
+
import { __assign as m } from "./index119.js";
|
|
2
|
+
import * as r from "react";
|
|
3
|
+
import { RemoveScroll as e } from "./index120.js";
|
|
4
|
+
import t from "./index121.js";
|
|
5
|
+
var s = r.forwardRef(function(a, o) {
|
|
6
|
+
return r.createElement(e, m({}, a, { ref: o, sideCar: t }));
|
|
7
|
+
});
|
|
8
|
+
s.classNames = e.classNames;
|
|
50
9
|
export {
|
|
51
|
-
|
|
10
|
+
s as default
|
|
52
11
|
};
|