Materializr
오픈소스 파라메트릭 3D CAD로 제약 스케치·솔리드 모델·나사·SVG·텍스트 조각·STL/STEP 내보내기를 지원합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A single-screen workbench for custom web cursors. 27 live cursors, every parameter tunable, and the JS / React / CSS snippet is generated from the values you tuned. No build step, no dependencies.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A single-screen workbench for custom web cursors. 28 cursors — 11 drawn and 17
animated — each one live, each parameter tunable, and the JS / React / CSS snippet is
generated from the values you actually tuned.
No build step, no dependencies, no framework. Open index.html and it runs.
Most cursor collections hand you a static snippet and hope it fits. This one hands you a
control panel: drag a slider, watch the cursor change under your pointer, then copy code
that already carries your values.
Design — drawn cursors, shipped as cursor: url(data:image/svg+xml,…).README 전문 보기 ↗A single-screen workbench for custom web cursors. 28 cursors — 11 drawn and 17 animated — each one live, each parameter tunable, and the JS / React / CSS snippet is generated from the values you actually tuned.
No build step, no dependencies, no framework. Open index.html and it runs.
Live demo → · MIT licensed
Most cursor collections hand you a static snippet and hope it fits. This one hands you a control panel: drag a slider, watch the cursor change under your pointer, then copy code that already carries your values.
┌──────────────────────────────────────────────────────────────┐
│ ▚ CURSOR LAB [ DESIGN │ ANIMATED ] 17 UNITS ⭐ ─ │
├────────────┬───────────────────────────────┬─────────────────┤
│ POINTER │ │ POINTER / 01 │
│ Dot & Ring │ LIVE STAGE │ DOT & RING │
│ ... │ │ ─────────────── │
│ TRAIL │ │ FOLLOW 0.14 │
│ ... │ │ ▮▮▮▮▮▮▯▯▯▯▯▯▯▯ │
│ FIELD │ │ [RESET][SOURCE] │
└────────────┴───────────────────────────────┴─────────────────┘
└── SOURCE slides up over the stage ──┘
Design — drawn cursors, shipped as cursor: url(data:image/svg+xml,…).
| Group | Cursors |
|---|---|
| Aero | Aero Arrow |
| Y2K | Candy Arrow · Bunny · Sparkle · Cherry · Love Arrow |
| 8-bit | Pixel Arrow · Pixel Heart · Pixel Pencil |
| Kawaii | Kitty · Peepers |
Animated — grouped by what they actually do.
| Group | Cursors |
|---|---|
| Pointer (replace the arrow) | Dot & Ring · Velocity Squish · Crosshair HUD · Custom Pointer · Figma Cursor · Eyes · Liquid Glass · Butterfly |
| Trail (leave something behind) | Cascading Dots · Swirl · Silky Ribbon · Pixel Trail · Fluid Smoke · Cursor Ghost |
| Field (the surface reacts) | Magnet Lines · ASCII Field · Dot Grid Warp |
0…1
(tail position, particle life, field strength), which is cheaper and reads better than
a real canvas gradient.(pointer: fine) and does
nothing on touch.git clone https://github.com/oleksand4rux-del/cursor-lab.git
cd cursor-lab
python -m http.server 5175
Then open http://localhost:5175. Opening index.html straight from disk works too.
Open any entry, tune it, hit SOURCE, pick a stack and copy. Three rules the generated code always follows:
cursor: none on a section, never the document.transform and opacity, one write per frame inside
a single requestAnimationFrame.(pointer: fine) and simply do nothing on touch.Every entry is one object. Push it into the right file and the catalogue, groups, counters, inspector and code panel pick it up automatically.
ANIM_DB.push({
id: 'my-cursor',
name: 'My Cursor',
group: 'Pointer', // Pointer | Trail | Field
desc: 'One sentence on what it does and why.',
hideCursor: true,
content: '<div class="stage__body">…</div>',
params: [
{ key: 'ease', label: 'Follow', type: 'range', min: .04, max: .4, step: .01, value: .14 },
{ key: 'count', label: 'Nodes', type: 'range', min: 3, max: 40, step: 1, value: 14, rebuild: true },
{ key: 'on', label: 'Blend', type: 'switch', value: true },
{ key: 'mode', label: 'Mode', type: 'select', value: 'a', options: ['a', 'b'] },
{ key: 'label', label: 'Name', type: 'text', value: 'you' },
{ key: 'color', label: 'Colour', type: 'paint', value: { a: '#FFFFFF', b: '#5B9BF6', on: false } }
],
mount(stage, p) { /* p mutates live */ return destroy; },
code(p) { return { js, react, css }; }
});
rebuild: true marks a parameter that needs the effect recreated (element counts, for
example). Everything else applies without a remount.
See CONTRIBUTING.md for the full walkthrough.
index.html the single screen
assets/style.css design tokens, three panes, source drawer
assets/engine.js tiny runtime: FX.mount / layer / canvas / paint helpers
assets/db-design.js 11 drawn cursors
assets/db-pointer.js 8 pointer effects
assets/db-trail.js 6 trail effects
assets/db-field.js 3 field effects
assets/app.js catalogue, inspector, code generation, clipboard
docs/NOTES.uk.md detailed build notes (Ukrainian)
Built in the Nothing design language: monochrome, typography carries the hierarchy, structure instead of ornament. Dark, OLED black. One accent per screen — a single red bar on the active catalogue row.
Type: Doto for display, Space Grotesk for UI, Space Mono for data and labels.
Researched from Awwwards, Codrops, React Bits, Motion and the Framer Marketplace. Every effect here is an original implementation.
Built by Oleksandr Yeromin.