shape-morph 0.1.0 → 0.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.
- package/README.md +31 -115
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +2 -2
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,142 +1,58 @@
|
|
|
1
1
|
# shape-morph
|
|
2
2
|
|
|
3
|
-
Material Design 3 shape morphing for the web. Port of Android's `androidx.graphics.shapes`
|
|
3
|
+
Material Design 3 shape morphing for the web. Port of Android's `androidx.graphics.shapes` to TypeScript.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
35 preset shapes, feature-matched morphing, SVG paths, CSS `clip-path`, and React components.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Documentation
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
bun add shape-morph
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
### Local Testing
|
|
9
|
+
Full docs, guides, and API reference at **[shape-morph.thereallo.dev](https://shape-morph.thereallo.dev)**.
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
## Quick start
|
|
16
12
|
|
|
17
13
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# In your other project
|
|
22
|
-
bun link shape-morph
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Usage
|
|
26
|
-
|
|
27
|
-
### SVG Path
|
|
28
|
-
|
|
29
|
-
```ts
|
|
30
|
-
import { getShape, Morph, toPathD } from "shape-morph";
|
|
31
|
-
|
|
32
|
-
const start = getShape("Circle");
|
|
33
|
-
const end = getShape("Heart");
|
|
34
|
-
const morph = new Morph(start, end);
|
|
35
|
-
|
|
36
|
-
// progress: 0 = start shape, 1 = end shape
|
|
37
|
-
const d = toPathD(morph.asCubics(0.5), 100);
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### CSS Clip-Path
|
|
41
|
-
|
|
42
|
-
```ts
|
|
43
|
-
import { toMorphPair } from "shape-morph";
|
|
44
|
-
|
|
45
|
-
const clipPath = toMorphPair(0.5, "Circle", "Heart");
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### React
|
|
49
|
-
|
|
50
|
-
```tsx
|
|
51
|
-
import { Shape } from "shape-morph/react";
|
|
52
|
-
|
|
53
|
-
<Shape name="Heart" size={32} fill="red" />
|
|
14
|
+
bun install shape-morph
|
|
15
|
+
# or any other package manager
|
|
54
16
|
```
|
|
55
17
|
|
|
56
|
-
#### useMorph
|
|
57
|
-
|
|
58
|
-
Animates between two shapes.
|
|
59
|
-
|
|
60
18
|
```tsx
|
|
61
19
|
import { useMorph } from "shape-morph/react";
|
|
62
20
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
return <img style={{ clipPath }} src="/avatar.png" />;
|
|
70
|
-
}
|
|
21
|
+
const { clipPath } = useMorph("Circle", "Heart", {
|
|
22
|
+
progress: hovered ? 1 : 0,
|
|
23
|
+
duration: 300,
|
|
24
|
+
});
|
|
71
25
|
```
|
|
72
26
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
#### useShape
|
|
76
|
-
|
|
77
|
-
Returns path data for a single shape.
|
|
27
|
+
## Contributing
|
|
78
28
|
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const { pathD, clipPath } = useShape("Heart");
|
|
83
|
-
```
|
|
29
|
+
```bash
|
|
30
|
+
# Install dependencies
|
|
31
|
+
bun install
|
|
84
32
|
|
|
85
|
-
|
|
33
|
+
# Build
|
|
34
|
+
bun run build
|
|
86
35
|
|
|
87
|
-
|
|
88
|
-
|
|
36
|
+
# Run demo
|
|
37
|
+
bun run dev:demo
|
|
89
38
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const morph = new Morph(star.normalized(), rect.normalized());
|
|
39
|
+
# Lint
|
|
40
|
+
bunx ultracite check
|
|
93
41
|
|
|
94
|
-
|
|
42
|
+
# Format
|
|
43
|
+
bunx ultracite fix
|
|
95
44
|
```
|
|
96
45
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
Circle, Square, Slanted, Arch, Fan, Arrow, SemiCircle, Oval, Pill, Triangle, Diamond, ClamShell, Pentagon, Gem, Sunny, VerySunny, Cookie4Sided, Cookie6Sided, Cookie7Sided, Cookie9Sided, Cookie12Sided, Ghostish, Clover4Leaf, Clover8Leaf, Burst, SoftBurst, Boom, SoftBoom, Flower, Puffy, PuffyDiamond, PixelCircle, PixelTriangle, Bun, Heart
|
|
46
|
+
### Docs site
|
|
100
47
|
|
|
101
|
-
|
|
48
|
+
The documentation site lives in `docs/` and is a standalone Next.js app powered by [Fumadocs](https://fumadocs.dev).
|
|
102
49
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
| `morph.asCubics(progress)` | Get interpolated `Cubic[]` at progress 0–1 |
|
|
109
|
-
| `getShape(name)` | Get a Material shape as `RoundedPolygon` |
|
|
110
|
-
| `shapeNames` | Array of all shape names |
|
|
111
|
-
|
|
112
|
-
### Polygon Builders
|
|
113
|
-
|
|
114
|
-
| Export | Description |
|
|
115
|
-
|---|---|
|
|
116
|
-
| `createCircle(vertices?)` | Circle approximation |
|
|
117
|
-
| `createRectangle(w, h, rounding?)` | Rectangle with optional rounding |
|
|
118
|
-
| `createStar(points, outer, inner, rounding)` | Star polygon |
|
|
119
|
-
| `createPolygon(vertices, rounding)` | Regular polygon |
|
|
120
|
-
| `cornerRounding(radius, smoothing?)` | Corner rounding config |
|
|
121
|
-
|
|
122
|
-
### Output
|
|
123
|
-
|
|
124
|
-
| Export | Description |
|
|
125
|
-
|---|---|
|
|
126
|
-
| `toPathD(cubics, size?)` | Cubics to SVG path `d` attribute |
|
|
127
|
-
| `toSvgPath(polygon, size?)` | Polygon to SVG path `d` attribute |
|
|
128
|
-
| `toClipPathPolygon(cubics, samples?)` | Cubics to CSS `clip-path: polygon(...)` |
|
|
129
|
-
| `toClipPathPath(cubics, samples?)` | Cubics to CSS `clip-path: path(...)` |
|
|
130
|
-
| `toMorphPair(progress, start, end, samples?)` | Morph to CSS clip-path string |
|
|
131
|
-
|
|
132
|
-
### React (`shape-morph/react`)
|
|
133
|
-
|
|
134
|
-
| Export | Description |
|
|
135
|
-
|---|---|
|
|
136
|
-
| `<Shape name size? fill? stroke? className? style? />` | Renders shape as inline SVG |
|
|
137
|
-
| `useMorph(start, end, { progress, duration?, size? })` | Animated morph returning `{ pathD, clipPath, progress }` |
|
|
138
|
-
| `useShape(name, size?)` | Static shape returning `{ pathD, clipPath, polygon }` |
|
|
50
|
+
```bash
|
|
51
|
+
cd docs
|
|
52
|
+
bun install
|
|
53
|
+
bun run dev
|
|
54
|
+
```
|
|
139
55
|
|
|
140
56
|
## License
|
|
141
57
|
|
|
142
|
-
|
|
58
|
+
MIT
|