@gigo-ui/components 1.0.0-release → 1.0.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.
Files changed (33) hide show
  1. package/README.md +158 -132
  2. package/dist/components/chaos/BlackHoleSink.svelte +81 -0
  3. package/dist/components/chaos/BlackHoleSink.svelte.d.ts +16 -0
  4. package/dist/components/chaos/GigoCompactor.svelte +103 -0
  5. package/dist/components/chaos/GigoCompactor.svelte.d.ts +16 -0
  6. package/dist/components/chaos/PixelDissolve.svelte +81 -0
  7. package/dist/components/chaos/PixelDissolve.svelte.d.ts +16 -0
  8. package/dist/components/chaos/ShatterPane.svelte +84 -0
  9. package/dist/components/chaos/ShatterPane.svelte.d.ts +16 -0
  10. package/dist/components/chaos/internal/BlackHoleEngine.svelte +167 -0
  11. package/dist/components/chaos/internal/BlackHoleEngine.svelte.d.ts +11 -0
  12. package/dist/components/chaos/internal/CompactorEngine.svelte +195 -0
  13. package/dist/components/chaos/internal/CompactorEngine.svelte.d.ts +11 -0
  14. package/dist/components/chaos/internal/PixelDissolveEngine.svelte +168 -0
  15. package/dist/components/chaos/internal/PixelDissolveEngine.svelte.d.ts +11 -0
  16. package/dist/components/chaos/internal/ShatterEngine.svelte +208 -0
  17. package/dist/components/chaos/internal/ShatterEngine.svelte.d.ts +11 -0
  18. package/dist/docs/component-data.js +8 -0
  19. package/dist/docs/components/chaos/black-hole-sink.d.ts +2 -0
  20. package/dist/docs/components/chaos/black-hole-sink.js +71 -0
  21. package/dist/docs/components/chaos/gigo-compactor.d.ts +2 -0
  22. package/dist/docs/components/chaos/gigo-compactor.js +71 -0
  23. package/dist/docs/components/chaos/pixel-dissolve.d.ts +2 -0
  24. package/dist/docs/components/chaos/pixel-dissolve.js +71 -0
  25. package/dist/docs/components/chaos/shatter-pane.d.ts +2 -0
  26. package/dist/docs/components/chaos/shatter-pane.js +71 -0
  27. package/dist/index.d.ts +5 -1
  28. package/dist/index.js +4 -0
  29. package/dist/styles/globals.css +3 -0
  30. package/dist/types/index.d.ts +32 -0
  31. package/dist/utils/destruction-engine.d.ts +26 -0
  32. package/dist/utils/destruction-engine.js +75 -0
  33. package/package.json +73 -66
@@ -0,0 +1,75 @@
1
+ // Shared helpers for Breaker Overlay engines
2
+ // DOM px -> NDC [-1,1]
3
+ export function domToNDC(x, y, viewportW, viewportH) {
4
+ return [(x / viewportW) * 2 - 1, -(y / viewportH) * 2 + 1];
5
+ }
6
+ // Grid cell -> NDC centre
7
+ export function cellToNDC(rect, col, row, cols, rows, viewportW, viewportH) {
8
+ const cellW = rect.width / cols;
9
+ const cellH = rect.height / rows;
10
+ const cx = rect.left + col * cellW + cellW / 2;
11
+ const cy = rect.top + row * cellH + cellH / 2;
12
+ return domToNDC(cx, cy, viewportW, viewportH);
13
+ }
14
+ // Scroll-aware Y
15
+ export function scrollAwareY(domY, scrollY) {
16
+ return domY - scrollY;
17
+ }
18
+ // UV offset/repeat for one grid cell
19
+ export function cellUV(col, row, cols, rows) {
20
+ return {
21
+ offsetX: col / cols,
22
+ offsetY: 1 - (row + 1) / rows, // flip Y for WebGL
23
+ repeatX: 1 / cols,
24
+ repeatY: 1 / rows,
25
+ };
26
+ }
27
+ // Snapshot element as PNG data URL (lazy imports html-to-image)
28
+ export async function captureSnapshot(el) {
29
+ const { toPng } = await import("html-to-image");
30
+ const rect = el.getBoundingClientRect();
31
+ const dpr = window.devicePixelRatio ?? 1;
32
+ const dataURL = await toPng(el, {
33
+ pixelRatio: dpr,
34
+ width: rect.width,
35
+ height: rect.height,
36
+ style: {
37
+ margin: "0",
38
+ padding: "0",
39
+ transform: "none",
40
+ borderRadius: "0",
41
+ },
42
+ });
43
+ return { dataURL, width: rect.width * dpr, height: rect.height * dpr, rect };
44
+ }
45
+ // data URL -> HTMLImageElement
46
+ export function loadImage(src) {
47
+ return new Promise((resolve, reject) => {
48
+ const img = new Image();
49
+ img.onload = () => resolve(img);
50
+ img.onerror = reject;
51
+ img.src = src;
52
+ });
53
+ }
54
+ // Fixed overlay canvas on document.body
55
+ export function mountPortalCanvas(width, height, zIndex = 9999) {
56
+ const canvas = document.createElement("canvas");
57
+ canvas.width = width;
58
+ canvas.height = height;
59
+ Object.assign(canvas.style, {
60
+ position: "fixed",
61
+ inset: "0",
62
+ width: "100vw",
63
+ height: "100vh",
64
+ pointerEvents: "none",
65
+ zIndex: String(zIndex),
66
+ });
67
+ document.body.appendChild(canvas);
68
+ return canvas;
69
+ }
70
+ export function rand(min, max) {
71
+ return min + Math.random() * (max - min);
72
+ }
73
+ export function randSign() {
74
+ return Math.random() > 0.5 ? 1 : -1;
75
+ }
package/package.json CHANGED
@@ -1,66 +1,73 @@
1
- {
2
- "name": "@gigo-ui/components",
3
- "version": "1.0.0-release",
4
- "description": "Deliberately dysfunctional UI components — technically excellent, intentionally terrible UX",
5
- "license": "MIT",
6
- "type": "module",
7
- "svelte": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "svelte": "./dist/index.js",
13
- "default": "./dist/index.js"
14
- },
15
- "./globals.css": "./dist/styles/globals.css"
16
- },
17
- "files": [
18
- "dist",
19
- "!dist/**/*.test.*"
20
- ],
21
- "peerDependencies": {
22
- "svelte": "^5.0.0"
23
- },
24
- "dependencies": {
25
- "@dimforge/rapier3d-compat": "^0.19.3",
26
- "@threlte/core": "^8.4.1",
27
- "@types/three": "^0.183.1",
28
- "clsx": "^2.1.1",
29
- "html-to-image": "^1.11.13",
30
- "tailwind-merge": "^3.5.0",
31
- "three": "^0.183.2"
32
- },
33
- "devDependencies": {
34
- "@sveltejs/adapter-auto": "^7.0.0",
35
- "@sveltejs/kit": "^2.50.2",
36
- "@sveltejs/package": "^2.5.7",
37
- "@sveltejs/vite-plugin-svelte": "^6.2.4",
38
- "@tailwindcss/vite": "^4.2.1",
39
- "publint": "^0.3.18",
40
- "svelte": "^5.51.0",
41
- "svelte-check": "^4.4.2",
42
- "tailwindcss": "^4.2.1",
43
- "typescript": "^5.9.3",
44
- "vite": "^7.3.1"
45
- },
46
- "keywords": [
47
- "svelte",
48
- "ui-components",
49
- "educational",
50
- "ux-antipatterns",
51
- "design-system",
52
- "tailwindcss"
53
- ],
54
- "engines": {
55
- "node": ">=20.0.0"
56
- },
57
- "scripts": {
58
- "dev": "vite dev",
59
- "build": "vite build",
60
- "build:lib": "svelte-kit sync && svelte-package && publint",
61
- "preview": "vite preview",
62
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
63
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
64
- "package": "svelte-kit sync && svelte-package"
65
- }
66
- }
1
+ {
2
+ "name": "@gigo-ui/components",
3
+ "version": "1.0.1",
4
+ "description": "Deliberately dysfunctional UI components — technically excellent, intentionally terrible UX",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "svelte": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "style": "./dist/styles/globals.css",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "svelte": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./globals.css": "./dist/styles/globals.css",
17
+ "./styles.css": "./dist/styles/globals.css"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "!dist/**/*.test.*"
22
+ ],
23
+ "sideEffects": [
24
+ "**/*.css"
25
+ ],
26
+ "scripts": {
27
+ "dev": "vite dev",
28
+ "build": "vite build",
29
+ "build:lib": "svelte-kit sync && svelte-package && publint",
30
+ "preview": "vite preview",
31
+ "prepare": "svelte-kit sync",
32
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
33
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
34
+ "package": "svelte-kit sync && svelte-package"
35
+ },
36
+ "peerDependencies": {
37
+ "svelte": "^5.0.0",
38
+ "tailwindcss": "^4.0.0"
39
+ },
40
+ "dependencies": {
41
+ "@dimforge/rapier3d-compat": "^0.19.3",
42
+ "@threlte/core": "^8.4.1",
43
+ "@types/three": "^0.183.1",
44
+ "clsx": "^2.1.1",
45
+ "html-to-image": "^1.11.13",
46
+ "tailwind-merge": "^3.5.0",
47
+ "three": "^0.183.2"
48
+ },
49
+ "devDependencies": {
50
+ "@sveltejs/adapter-auto": "^7.0.0",
51
+ "@sveltejs/kit": "^2.50.2",
52
+ "@sveltejs/package": "^2.5.7",
53
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
54
+ "@tailwindcss/vite": "^4.2.1",
55
+ "publint": "^0.3.18",
56
+ "svelte": "^5.51.0",
57
+ "svelte-check": "^4.4.2",
58
+ "tailwindcss": "^4.2.1",
59
+ "typescript": "^5.9.3",
60
+ "vite": "^7.3.1"
61
+ },
62
+ "keywords": [
63
+ "svelte",
64
+ "ui-components",
65
+ "educational",
66
+ "ux-antipatterns",
67
+ "design-system",
68
+ "tailwindcss"
69
+ ],
70
+ "engines": {
71
+ "node": ">=20.0.0"
72
+ }
73
+ }