@nanisoft/prism-llms 0.5.2 → 0.6.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/dist/data.json +151 -21
- package/dist/llms-full.txt +607 -35
- package/dist/llms.txt +9 -5
- package/dist/md/blocks/backdrop-01.md +8 -4
- package/dist/md/blocks/gantt-01.md +4 -4
- package/dist/md/blocks/hero-01.md +9 -1
- package/dist/md/blocks/media-band-01.md +123 -0
- package/dist/md/blocks/site-navbar.md +25 -3
- package/dist/md/changelogs/prism-llms.md +11 -0
- package/dist/md/changelogs/prism-mcp-server.md +7 -0
- package/dist/md/changelogs/prism-tokens.md +10 -0
- package/dist/md/changelogs/prism-ui.md +52 -0
- package/dist/md/components/aurora-wash.md +89 -0
- package/dist/md/components/particle-field.md +100 -0
- package/dist/md/components/reveal.md +113 -0
- package/dist/md/foundation/motion.md +37 -20
- package/dist/prism-skill.md +2 -2
- package/package.json +3 -3
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Reveal
|
|
2
|
+
|
|
3
|
+
A section that meets the reader: the wrapper that binds an arrival to the reader’s own scroll position, with no script and no second introduction for the hero.
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
import { Reveal } from '@nanisoft/prism-ui/components/reveal'
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Reveal is a section that meets the reader: the wrapper that binds an arrival to
|
|
12
|
+
the reader's own scroll position and to nothing else. It is a style the browser
|
|
13
|
+
resolves rather than a state a script flips, so there is no observer, no
|
|
14
|
+
listener and no client boundary, and the content exists from the first paint.
|
|
15
|
+
|
|
16
|
+
## Guidelines
|
|
17
|
+
|
|
18
|
+
### When to use
|
|
19
|
+
|
|
20
|
+
Use it on the bands a reader scrolls to. An arrival acknowledges the reader's
|
|
21
|
+
own movement, which is the only input it answers to, and a band that enters
|
|
22
|
+
the viewport as the reader arrives reads as a page composed for reading rather
|
|
23
|
+
than as one long poster.
|
|
24
|
+
|
|
25
|
+
Stagger with `delay` when bands arrive in a rhythm, and keep the stagger to a
|
|
26
|
+
page's own measure: three steps exist, and a cascade longer than the rhythm it
|
|
27
|
+
sits in is a wait the reader did not cause.
|
|
28
|
+
|
|
29
|
+
### When not to use
|
|
30
|
+
|
|
31
|
+
Do not wrap the hero. A section above the fold when the page loads has already
|
|
32
|
+
finished entering, and the page does not introduce itself twice; the one
|
|
33
|
+
authored moment a page carries belongs to its hero, not to every band under
|
|
34
|
+
it.
|
|
35
|
+
|
|
36
|
+
Do not wrap everything. A reveal on every section is one identical entrance
|
|
37
|
+
wearing four different clothes, and the second arrival a reader notices is the
|
|
38
|
+
one where the device stops being about the content. Let the still bands
|
|
39
|
+
between the arriving ones carry their own weight.
|
|
40
|
+
|
|
41
|
+
Do not use it for feedback or for state. A control answering a reader is the
|
|
42
|
+
first law of motion and already has its scale; an arrival is the third law and
|
|
43
|
+
holds exactly one job.
|
|
44
|
+
|
|
45
|
+
### Best practices
|
|
46
|
+
|
|
47
|
+
- Compose it around a Block, not inside one. The wrapper is the whole of the
|
|
48
|
+
component, every Block keeps its own surface, and no Block widens for a
|
|
49
|
+
behaviour the whole page shares.
|
|
50
|
+
- Remember the fallbacks are the design: a browser without scroll-driven
|
|
51
|
+
animations shows the section simply there, a reader who asked for less
|
|
52
|
+
motion gets the same still page, and neither of those outcomes is a failure
|
|
53
|
+
to be worked around.
|
|
54
|
+
- The `delay` steps are fractions of the entry rather than waits, so a reader
|
|
55
|
+
who scrolls fast arrives fast. That is the property that separates this law
|
|
56
|
+
from a timer, and it is worth keeping.
|
|
57
|
+
|
|
58
|
+
**Two cards arriving, the second a step behind the first. The demo is the**
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
import { Reveal } from '@nanisoft/prism-ui/components/reveal'
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Two cards arriving, the second a step behind the first. The demo is the
|
|
65
|
+
* device at its smallest: a staggered pair inside one panel, so the rhythm is
|
|
66
|
+
* visible without a page to scroll.
|
|
67
|
+
*
|
|
68
|
+
* In this documentation frame the cards below the fold are the honest preview:
|
|
69
|
+
* scroll to them and they arrive, arrive again on the way back up at no delay,
|
|
70
|
+
* and a reader who has asked the platform for less motion finds them simply
|
|
71
|
+
* there.
|
|
72
|
+
*/
|
|
73
|
+
export default function RevealDemo() {
|
|
74
|
+
return (
|
|
75
|
+
<div className="flex flex-col gap-4">
|
|
76
|
+
<Reveal>
|
|
77
|
+
<div className="bg-card text-card-foreground rounded-xl border p-6 shadow-sm">
|
|
78
|
+
<p className="text-muted-foreground text-sm font-medium tracking-wide uppercase">
|
|
79
|
+
First band
|
|
80
|
+
</p>
|
|
81
|
+
<h3 className="mt-2 text-xl font-semibold tracking-tight">
|
|
82
|
+
An arrival, bound to the scroll the reader owns
|
|
83
|
+
</h3>
|
|
84
|
+
<p className="text-muted-foreground mt-2 text-sm text-pretty">
|
|
85
|
+
No script decides when this plays. The hand on the scroll does, and
|
|
86
|
+
a browser that cannot run it shows the band simply there.
|
|
87
|
+
</p>
|
|
88
|
+
</div>
|
|
89
|
+
</Reveal>
|
|
90
|
+
<Reveal delay={1}>
|
|
91
|
+
<div className="bg-card text-card-foreground rounded-xl border p-6 shadow-sm">
|
|
92
|
+
<p className="text-muted-foreground text-sm font-medium tracking-wide uppercase">
|
|
93
|
+
Second band
|
|
94
|
+
</p>
|
|
95
|
+
<h3 className="mt-2 text-xl font-semibold tracking-tight">
|
|
96
|
+
The same arrival, a step behind
|
|
97
|
+
</h3>
|
|
98
|
+
<p className="text-muted-foreground mt-2 text-sm text-pretty">
|
|
99
|
+
The step is a fraction of the entry rather than a wait, so a reader
|
|
100
|
+
who scrolls fast arrives fast, and nothing here could delay them.
|
|
101
|
+
</p>
|
|
102
|
+
</div>
|
|
103
|
+
</Reveal>
|
|
104
|
+
</div>
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Props
|
|
110
|
+
|
|
111
|
+
**`children`** `ReactNode` · required · default: — — The band, grid or figure that arrives.
|
|
112
|
+
**`delay`** `1 | 2 | 3` · optional · default: — — How far into the page's rhythm this arrival sits behind the one before it, as a fraction of the entry rather than as a wait: the reader's scroll is the only clock, and a delay a reader could not hurry would be a delay the reader did not cause. Three steps, as on the ambient delays.
|
|
113
|
+
**`className`** `string` · optional · default: — — Layout only, exactly as on every Component.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Motion
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Three laws: feedback on a short scale, a running figure on a cycle scale, and an arrival bound to the reader's own scroll, all by token.
|
|
4
4
|
|
|
5
|
-
Motion has
|
|
6
|
-
|
|
5
|
+
Motion has three laws, and they are different laws rather than one law with
|
|
6
|
+
exceptions. The distinction is falsifiable: stop the animation and ask whether
|
|
7
7
|
the figure is still true and still legible.
|
|
8
8
|
|
|
9
9
|
**Feedback is a response.** Something happened because the reader did it. They
|
|
@@ -13,29 +13,46 @@ overshoots. The scale is `fast` 80ms, `base` 160ms and `slow` 280ms, with
|
|
|
13
13
|
token rather than a value, and it does not decide reduced motion for itself.
|
|
14
14
|
|
|
15
15
|
**A cycle is a demonstration.** A marker crosses a rail, a reticle crosses a
|
|
16
|
-
series, a wavefront crosses a field. The reader did not
|
|
17
|
-
waiting for it: the figure is making a claim about a
|
|
18
|
-
how the claim is made visible. If stopping the
|
|
19
|
-
nothing legible, the motion was the figure,
|
|
20
|
-
says it is atmosphere.
|
|
16
|
+
series, a wavefront crosses a field, light crosses a ground. The reader did not
|
|
17
|
+
cause it and is not waiting for it: the figure is making a claim about a
|
|
18
|
+
mechanism and the motion is how the claim is made visible. If stopping the
|
|
19
|
+
animation leaves nothing true and nothing legible, the motion was the figure,
|
|
20
|
+
and the right component is one that says it is atmosphere.
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
**An arrival is bound to the reader's own scroll.** A section a reader scrolls
|
|
23
|
+
to may meet them, and the meeting is the third law rather than a loosened
|
|
24
|
+
second: it runs on CSS scroll-driven animations, so no script decides when it
|
|
25
|
+
plays and no timer can play it early; the content exists in the document from
|
|
26
|
+
the first paint; a browser that does not ship the timeline declines the whole
|
|
27
|
+
rule and shows the section simply there; and the universal reduced-motion rule
|
|
28
|
+
hands that reader the same still page. The one script-driven figure in the
|
|
29
|
+
system, `ParticleField`, follows the same test from the other side: it renders
|
|
30
|
+
its complete still figure on the server and the script only adds the movement.
|
|
31
|
+
|
|
32
|
+
The cycle scale is separate because it measures a different thing by a factor
|
|
23
33
|
of twenty-five, and one name cannot mean both. `ambient` is in seconds, and the
|
|
24
|
-
emitted contract measures it with a floor of one second: a cycle faster than
|
|
25
|
-
is unreadable before it is understood.
|
|
34
|
+
emitted contract measures it with a floor of one second: a cycle faster than
|
|
35
|
+
that is unreadable before it is understood.
|
|
26
36
|
|
|
27
|
-
Three rules bound
|
|
37
|
+
Three rules bound the ambient layer, and none of them is a matter of taste.
|
|
28
38
|
|
|
29
|
-
- **Nothing is hidden.** No ambient rule sets `opacity: 0
|
|
30
|
-
for a script
|
|
31
|
-
paint, so a reader with scripting off, a print stylesheet or a
|
|
32
|
-
whole drawing.
|
|
39
|
+
- **Nothing in the ambient layer is hidden.** No ambient rule sets `opacity: 0`
|
|
40
|
+
and no ambient figure waits for a script or a timer. Every figure is complete
|
|
41
|
+
at first paint, so a reader with scripting off, a print stylesheet or a
|
|
42
|
+
crawler sees the whole drawing. The reveal layer is the one exception ever
|
|
43
|
+
granted, and it is granted to the reader's own scroll position rather than to
|
|
44
|
+
a script: it lives behind a capability check, and collapses to the fully
|
|
45
|
+
visible form the moment anything, including reduced motion, declines to run
|
|
46
|
+
it.
|
|
33
47
|
- **Reduced motion removes the movement, not the figure.** The
|
|
34
48
|
`prefers-reduced-motion` block is one unlayered rule setting `animation: none`
|
|
35
49
|
and `transition: none` on the universal selector, and because every resting
|
|
36
50
|
state is the full form, that reader gets the same figure, still.
|
|
37
|
-
- **Compositor properties only.** Every keyframe animates `transform`
|
|
38
|
-
`opacity`. Nothing in the layer animates a layout or paint property.
|
|
51
|
+
- **Compositor properties only.** Every ambient keyframe animates `transform`
|
|
52
|
+
or `opacity`. Nothing in the layer animates a layout or paint property. The
|
|
53
|
+
one named exception is the spectrum ink on display type, which animates a
|
|
54
|
+
gradient position because text cannot be moved behind its own gradient, and
|
|
55
|
+
the exception is a class in the stylesheet with a scope, not a licence.
|
|
39
56
|
|
|
40
57
|
One rule covers the whole package rather than each component guarding itself, and
|
|
41
58
|
that is a correction rather than a preference. A `motion-safe:` variant adds a
|
|
@@ -50,8 +67,8 @@ announcement, without the time.
|
|
|
50
67
|
A keyframe is a mechanism and lives in the component package's stylesheet; a
|
|
51
68
|
duration is a value and lives in the token source. They meet at exactly one
|
|
52
69
|
place, an `animation` shorthand whose length is `var(--ambient-travel)`, so
|
|
53
|
-
neither can invent the other. The
|
|
54
|
-
component picks a cycle by naming a mechanism and never writes a timing.
|
|
70
|
+
neither can invent the other. The eight `prism-ambient-*` classes exist so that
|
|
71
|
+
a component picks a cycle by naming a mechanism and never writes a timing.
|
|
55
72
|
|
|
56
73
|
<TokenTable group="motion" />
|
|
57
74
|
|
package/dist/prism-skill.md
CHANGED
|
@@ -43,8 +43,8 @@ The read-only MCP endpoint is `https://prism.nanisoft.com/mcp`. It exposes nine
|
|
|
43
43
|
|
|
44
44
|
## This corpus
|
|
45
45
|
|
|
46
|
-
Generated from the catalogue and the authored pages:
|
|
47
|
-
Components,
|
|
46
|
+
Generated from the catalogue and the authored pages: 135
|
|
47
|
+
Components, 127 Blocks, 18 Pages and 3
|
|
48
48
|
live surfaces, plus the Overview, Foundation, Content, Patterns and Changelogs
|
|
49
49
|
pages. The Changelogs pages are each
|
|
50
50
|
published package's own changelog, byte for byte; `get_changelog` returns one
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nanisoft/prism-llms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Prism's agent-facing corpus: llms.txt, the Markdown mirror, prism-skill.md and the PrismDocsStore projection. One build-fresh dist/ serves npm, the site and the MCP server.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"@types/node": "^22.0.0",
|
|
39
39
|
"typescript": "^5.7.0",
|
|
40
40
|
"vitest": "^3.2.4",
|
|
41
|
-
"@nanisoft/prism-tokens": "1.
|
|
42
|
-
"@nanisoft/prism-ui": "1.
|
|
41
|
+
"@nanisoft/prism-tokens": "1.5.0",
|
|
42
|
+
"@nanisoft/prism-ui": "1.5.0"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "node scripts/build.mjs",
|