@ericrisco/rsc 1.0.34 → 1.1.1

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.
@@ -34,7 +34,15 @@ website", "good SaaS design"), push once for the specific page or file: a critic
34
34
  reference invents the comparison and approves everything on round one.
35
35
 
36
36
  On *skip*, propose three candidate bars, one line each on why, and wait. No answer → take the
37
- hardest one and say so.
37
+ hardest one and say so. **Where they come from:** `../design/references/starting-point.md` — run its
38
+ step 0 first, because a bar the project already owns outranks anything you would pick from outside,
39
+ and proposing from memory is how this promise used to resolve to the AI-template median.
40
+
41
+ **Where to go looking.** For a whole page to beat, and for the flows and single patterns behind it:
42
+ `../design/references/inspiration-sources.md`. For a component idea rather than a whole reference:
43
+ `../pick-ui-library/references/component-galleries.md`. Browse for the technique, never to clone a
44
+ competitor's exact grid — and come back with **a specific page you can open**, because a gallery
45
+ is not a bar.
38
46
 
39
47
  ## Phase 2 — Preflight
40
48
 
@@ -46,6 +54,11 @@ A check, not a question. Run it before any work and report in one block.
46
54
  render for a doc.
47
55
  - **Name the generation tools the goal needs** (image, video, voice) and confirm they are connected.
48
56
  - **Confirm the input files exist**: design system, brand doc, script.
57
+ - **Read the harness identity if it exists** — `02-DOCS/wiki/brand/`, reached from the root
58
+ `CLAUDE.md` `## Brand & voice` section, the same place `design`, `marketing` and
59
+ `presentations` read. A bar from outside cannot silently overrule the identity this project
60
+ already committed to: if the reference contradicts it, say which rule conflicts and let the
61
+ user decide which one wins. If no identity exists yet, say so — this run is what creates it.
49
62
 
50
63
  Then print what is working, what is missing, and **which critic goes blind** if something is
51
64
  missing. Never carry on quietly with a critic that cannot see — a verdict from a judge who cannot
@@ -64,7 +77,8 @@ Mechanisms, not adjectives. "Feels premium" is useless. These are useful:
64
77
  - whitespace above the fold is at least 40% of the frame
65
78
 
66
79
  Every line must be something a critic can check by looking. Show `bar.md` to the user before
67
- continuing.
80
+ continuing — and where a mechanism contradicts the harness identity, mark the conflict rather
81
+ than resolving it silently in favour of the reference.
68
82
 
69
83
  ## Phase 4 — Loop
70
84
 
@@ -27,6 +27,7 @@ A lookup skill. When invoked with a task ("I need toasts", "what should I use fo
27
27
  2. **Check what's already installed.** Look at `package.json` first. If the project already uses a listed library, use it. If it uses a competitor (e.g. react-window instead of Virtuoso), flag the recommendation but don't churn the dependency without being asked.
28
28
  3. **Recommend one library**, state what it's for in one sentence, and install/wire it up if that's part of the request. Don't present a menu of options when the list has a clear answer.
29
29
  4. If the task isn't covered by the list, say so explicitly and recommend from your own knowledge — but be clear you've left the curated list.
30
+ 5. **Need an idea rather than a library?** Go and look: `references/component-galleries.md` names where to browse for component ideas (Aceternity for marketing effects, 21st.dev for breadth, React Bits for tunable animation) and what each is good for. Take the technique, build it in the project's own tokens.
30
31
 
31
32
  ## The list
32
33
 
@@ -0,0 +1,59 @@
1
+ # Reference — where to go looking for component ideas
2
+
3
+ > Last verified: **2026-08-24** — all three returned HTTP 200 on that date.
4
+
5
+ **Go and look.** When you need a component idea and your own prior is the median of every AI template
6
+ ever scraped, these are the places to browse instead of inventing from memory. Open them, see what
7
+ exists, come back with something specific.
8
+
9
+ ## Where to go, and for what
10
+
11
+ ### [Aceternity UI](https://ui.aceternity.com/components) — effects for a surface that must stop the scroll
12
+
13
+ Go here for **motion and atmosphere on a marketing surface**, not for primitives. What's there:
14
+
15
+ - **Backgrounds:** Aurora, Beams, Vortex, Sparkles, gradient fields
16
+ - **Cards:** 3D tilt, hover reveal, card stack, spotlight
17
+ - **Text:** typewriter, flip, encrypted/scramble, generate-in, canvas text
18
+ - **Scroll:** sticky scroll, container scroll, hero parallax
19
+ - **Navigation:** floating navbar, floating dock, sidebar, notch, tabs
20
+ - **Buttons:** magnetic, moving border, hover gradient
21
+ - **Data as spectacle:** globe, timeline, world map, before/after compare
22
+ - **Whole sections:** hero, pricing, testimonials, CTA, feature blocks
23
+
24
+ Best used when you can name the feeling you want and need to see how someone already built it.
25
+
26
+ ### [21st.dev](https://21st.dev/community/components) — breadth, ranked by what people actually use
27
+
28
+ A community registry rather than a curated library, so it's the widest net of the three. Marketing
29
+ blocks *and* real UI — buttons, cards, forms, modals, inputs, tables — plus Shaders and ASCII art.
30
+ Sortable by popular and newest, with view counts.
31
+
32
+ Go here when you don't know what you're looking for yet and want to see the range. Read the code of
33
+ anything you like: community means unvetted, and popularity is not review.
34
+
35
+ ### [React Bits](https://reactbits.dev/get-started/index) — animated interactions, deeply customizable
36
+
37
+ ~46k stars. Animations, 3D, CSS effects, built to be tuned rather than dropped in.
38
+
39
+ Go here when Aceternity's version of an effect is close but you need to control it.
40
+
41
+ ## Two things to carry with you
42
+
43
+ **Ideas travel; code stays there.** Take the technique, the ratio, the interaction — then build it in
44
+ the project's own tokens. Never vendor a gallery's source into this catalog: rsc ships publicly (P9),
45
+ and React Bits' licence (MIT + Commons Clause) forbids redistributing its components outright. In the
46
+ user's own project, installing any of the three is fine.
47
+
48
+ **Identity outranks the gallery.** Check `02-DOCS/wiki/brand/` for what this project refuses before
49
+ pulling an idea. A lot of what these galleries do best — aurora and gradient-mesh backgrounds,
50
+ glassmorphism, neon, blobs, decorative 3D — is also on the AI-tell list in
51
+ `../../design/references/ai-tells.md`, and some brand studies veto it by name. And run the frequency gate
52
+ from `../../animate/SKILL.md`: a spotlight card earns its place on a hero someone sees once, and never on
53
+ a table they open forty times a day.
54
+
55
+ ## Not a substitute for the primitives
56
+
57
+ A dialog still comes from `base-ui`, a toast from Sonner, a command palette from cmdk. Focus trapping,
58
+ dismissal and accessibility are solved; an animated card does not replace a solved primitive. Use
59
+ `SKILL.md`'s list for the task, and this file for the look.
@@ -135,3 +135,54 @@ Adapted for the rsc catalog from **[emilkowalski/skills](https://github.com/emil
135
135
  [Sonner](https://sonner.emilkowal.ski), [Vaul](https://vaul.emilkowal.ski) and
136
136
  [animations.dev](https://animations.dev). The craft bar here is his; the routing, gates and evals
137
137
  that make it an rsc skill are not. Nothing in this body is a substitute for his course.
138
+ ---
139
+
140
+ # Craft reference, inherited from the umbrella
141
+
142
+ *Moved here from `design-eng` (spec: `design-area-cleanup`), which routes and no longer teaches.
143
+ This is the same material by the same author; where it overlaps a rule stated above, the above is
144
+ the summary and this is the reasoning.*
145
+
146
+ ## Review Format (Required)
147
+
148
+ When reviewing UI code, you MUST use a markdown table with Before/After columns. Do NOT use a list with "Before:" and "After:" on separate lines. Always output an actual markdown table like this:
149
+
150
+ | Before | After | Why |
151
+ | --- | --- | --- |
152
+ | `transition: all 300ms` | `transition: transform 200ms ease-out` | Specify exact properties; avoid `all` |
153
+ | `transform: scale(0)` | `transform: scale(0.95); opacity: 0` | Nothing in the real world appears from nothing |
154
+ | `ease-in` on dropdown | `ease-out` with custom curve | `ease-in` feels sluggish; `ease-out` gives instant feedback |
155
+ | No `:active` state on button | `transform: scale(0.97)` on `:active` | Buttons must feel responsive to press |
156
+ | `transform-origin: center` on popover | `transform-origin: var(--transform-origin)` | Popovers should scale from their trigger (not modals — modals stay centered) |
157
+
158
+ Wrong format (never do this):
159
+
160
+ ```
161
+ Before: transition: all 300ms
162
+ After: transition: transform 200ms ease-out
163
+ ────────────────────────────
164
+ Before: scale(0)
165
+ After: scale(0.95)
166
+ ```
167
+
168
+ Correct format: A single markdown table with | Before | After | Why | columns, one row per issue found. The "Why" column briefly explains the reasoning.
169
+
170
+ ## Review Checklist
171
+
172
+ When reviewing UI code, check for:
173
+
174
+ | Issue | Fix |
175
+ | ------------------------------------------ | ---------------------------------------------------------------- |
176
+ | `transition: all` | Specify exact properties: `transition: transform 200ms ease-out` |
177
+ | `scale(0)` entry animation | Start from `scale(0.95)` with `opacity: 0` |
178
+ | `ease-in` on UI element | Switch to `ease-out` or custom curve |
179
+ | `transform-origin: center` on popover | Set to trigger location or use Base UI's `var(--transform-origin)` (modals are exempt — keep centered) |
180
+ | Animation on keyboard action | Remove animation entirely |
181
+ | Duration > 300ms on UI element | Reduce to 150-250ms |
182
+ | Hover animation without media query | Add `@media (hover: hover) and (pointer: fine)` |
183
+ | Keyframes on rapidly-triggered element | Use CSS transitions for interruptibility |
184
+ | Framer Motion `x`/`y` props under load | Use `transform: "translateX()"` for hardware acceleration |
185
+ | Same enter/exit transition speed | Make exit faster than enter (e.g., enter 2s, exit 200ms) |
186
+ | Elements all appear at once | Add stagger delay (30-80ms between items) |
187
+
188
+ ---