@b3-crow/ui-kit 0.0.36-pr44.3 → 0.0.36-pr44.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Globe.d.ts","sourceRoot":"","sources":["../../../src/components/backgrounds/Globe.tsx"],"names":[],"mappings":"AAoKA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiED,wBAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,IAAU,EAAE,EAAE,UAAU,2CA6LvD"}
1
+ {"version":3,"file":"Globe.d.ts","sourceRoot":"","sources":["../../../src/components/backgrounds/Globe.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiFD,wBAAgB,KAAK,CAAC,EAAE,MAAM,EAAE,IAAU,EAAE,EAAE,UAAU,2CAsNvD"}
@@ -5,156 +5,8 @@ import { useEffect, useRef, useState } from 'react';
5
5
  import { BiCctv } from 'react-icons/bi';
6
6
  import { BsGlobe2 } from 'react-icons/bs';
7
7
  import { HiOutlineShare } from 'react-icons/hi';
8
- // Helper functions
9
- const rotateY = (v, angle) => {
10
- const cos = Math.cos(angle);
11
- const sin = Math.sin(angle);
12
- return {
13
- x: v.x * cos - v.z * sin,
14
- y: v.y,
15
- z: v.x * sin + v.z * cos,
16
- };
17
- };
18
- const rotateX = (v, angle) => {
19
- const cos = Math.cos(angle);
20
- const sin = Math.sin(angle);
21
- return {
22
- x: v.x,
23
- y: v.y * cos - v.z * sin,
24
- z: v.y * sin + v.z * cos,
25
- };
26
- };
27
- const project = (v, radius, size) => {
28
- return {
29
- x: size / 2 + v.x * radius,
30
- y: size / 2 - v.y * radius,
31
- };
32
- };
33
- // Generate icosphere vertices and edges for wireframe mesh
34
- const generateIcosphere = (subdivisions = 2) => {
35
- const t = (1 + Math.sqrt(5)) / 2;
36
- let vertices = [
37
- { x: -1, y: t, z: 0 },
38
- { x: 1, y: t, z: 0 },
39
- { x: -1, y: -t, z: 0 },
40
- { x: 1, y: -t, z: 0 },
41
- { x: 0, y: -1, z: t },
42
- { x: 0, y: 1, z: t },
43
- { x: 0, y: -1, z: -t },
44
- { x: 0, y: 1, z: -t },
45
- { x: t, y: 0, z: -1 },
46
- { x: t, y: 0, z: 1 },
47
- { x: -t, y: 0, z: -1 },
48
- { x: -t, y: 0, z: 1 },
49
- ];
50
- let faces = [
51
- [0, 11, 5],
52
- [0, 5, 1],
53
- [0, 1, 7],
54
- [0, 7, 10],
55
- [0, 10, 11],
56
- [1, 5, 9],
57
- [5, 11, 4],
58
- [11, 10, 2],
59
- [10, 7, 6],
60
- [7, 1, 8],
61
- [3, 9, 4],
62
- [3, 4, 2],
63
- [3, 2, 6],
64
- [3, 6, 8],
65
- [3, 8, 9],
66
- [4, 9, 5],
67
- [2, 4, 11],
68
- [6, 2, 10],
69
- [8, 6, 7],
70
- [9, 8, 1],
71
- ];
72
- const normalize = (v) => {
73
- const len = Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
74
- return { x: v.x / len, y: v.y / len, z: v.z / len };
75
- };
76
- const getMidpoint = (v1, v2) => {
77
- return normalize({
78
- x: (v1.x + v2.x) / 2,
79
- y: (v1.y + v2.y) / 2,
80
- z: (v1.z + v2.z) / 2,
81
- });
82
- };
83
- vertices = vertices.map(normalize);
84
- for (let i = 0; i < subdivisions; i++) {
85
- const newFaces = [];
86
- faces.forEach(face => {
87
- const [a, b, c] = face;
88
- const va = vertices[a];
89
- const vb = vertices[b];
90
- const vc = vertices[c];
91
- const mab = getMidpoint(va, vb);
92
- const mbc = getMidpoint(vb, vc);
93
- const mca = getMidpoint(vc, va);
94
- const iab = vertices.length;
95
- vertices.push(mab);
96
- const ibc = vertices.length;
97
- vertices.push(mbc);
98
- const ica = vertices.length;
99
- vertices.push(mca);
100
- newFaces.push([a, iab, ica]);
101
- newFaces.push([b, ibc, iab]);
102
- newFaces.push([c, ica, ibc]);
103
- newFaces.push([iab, ibc, ica]);
104
- });
105
- faces = newFaces;
106
- }
107
- const edgeSet = new Set();
108
- const edges = [];
109
- faces.forEach(face => {
110
- const [a, b, c] = face;
111
- const pairs = [
112
- [a, b],
113
- [b, c],
114
- [c, a],
115
- ];
116
- pairs.forEach(([i, j]) => {
117
- const key = i < j ? `${i}-${j}` : `${j}-${i}`;
118
- if (!edgeSet.has(key)) {
119
- edgeSet.add(key);
120
- edges.push({ a: i, b: j });
121
- }
122
- });
123
- });
124
- return { vertices, edges };
125
- };
126
- // Convert lat/long to 3D position
127
- const calculatePointPosition = (lat, long, rotation, size) => {
128
- const latRad = (lat * Math.PI) / 180;
129
- const longRad = (long * Math.PI) / 180;
130
- let vertex = {
131
- x: Math.cos(latRad) * Math.sin(longRad),
132
- y: Math.sin(latRad),
133
- z: Math.cos(latRad) * Math.cos(longRad),
134
- };
135
- vertex = rotateY(vertex, rotation);
136
- vertex = rotateX(vertex, 0.3);
137
- const projected = project(vertex, size * 0.4, size);
138
- const baseScale = vertex.z > 0 ? 1 + vertex.z * 0.3 : 0.7 + vertex.z * 0.3;
139
- // Smooth fade transition
140
- let opacity = 1;
141
- if (vertex.z > 0.3) {
142
- opacity = 1;
143
- }
144
- else if (vertex.z > -0.3) {
145
- opacity = (vertex.z + 0.3) / 0.6;
146
- }
147
- else {
148
- opacity = 0;
149
- }
150
- return {
151
- x: projected.x,
152
- y: projected.y,
153
- z: vertex.z,
154
- scale: Math.max(0.5, baseScale),
155
- opacity,
156
- };
157
- };
8
+ import * as THREE from 'three';
9
+ import ThreeGlobe from 'three-globe';
158
10
  const defaultPoints = [
159
11
  {
160
12
  label: 'Internet',
@@ -168,62 +20,104 @@ const defaultPoints = [
168
20
  location: [-10, 50],
169
21
  },
170
22
  ];
23
+ function generateArcs(points, randomArcCount = 6) {
24
+ const arcs = [];
25
+ const colors = [
26
+ 'rgba(255, 107, 107, 0.4)',
27
+ 'rgba(78, 205, 196, 0.4)',
28
+ 'rgba(69, 183, 209, 0.4)',
29
+ 'rgba(150, 206, 180, 0.4)',
30
+ 'rgba(168, 85, 247, 0.4)',
31
+ 'rgba(59, 130, 246, 0.4)',
32
+ ];
33
+ for (let i = 0; i < points.length; i++) {
34
+ for (let j = i + 1; j < points.length; j++) {
35
+ arcs.push({
36
+ startLat: points[i].location[0],
37
+ startLng: points[i].location[1],
38
+ endLat: points[j].location[0],
39
+ endLng: points[j].location[1],
40
+ color: colors[Math.floor(Math.random() * colors.length)],
41
+ });
42
+ }
43
+ }
44
+ for (let i = 0; i < randomArcCount; i++) {
45
+ const startLat = Math.random() * 140 - 70;
46
+ const startLng = Math.random() * 360 - 180;
47
+ const endLat = Math.random() * 140 - 70;
48
+ const endLng = Math.random() * 360 - 180;
49
+ arcs.push({
50
+ startLat,
51
+ startLng,
52
+ endLat,
53
+ endLng,
54
+ color: colors[Math.floor(Math.random() * colors.length)],
55
+ });
56
+ }
57
+ return arcs;
58
+ }
59
+ function generatePointsData(points) {
60
+ return points.map(p => ({
61
+ lat: p.location[0],
62
+ lng: p.location[1],
63
+ size: 0.5,
64
+ color: '#ffffff',
65
+ }));
66
+ }
171
67
  export function Globe({ points, size = 600 }) {
172
- const canvasRef = useRef(null);
68
+ const containerRef = useRef(null);
69
+ const rendererRef = useRef(null);
70
+ const animationRef = useRef(undefined);
71
+ const globeRef = useRef(null);
173
72
  const [pointPositions, setPointPositions] = useState([]);
174
73
  const [visibleIndices, setVisibleIndices] = useState(() => new Set());
175
- const rotationRef = useRef(-0.2);
74
+ const revealIndexRef = useRef(0);
75
+ const lastRevealTime = useRef(Date.now() - 2000);
176
76
  const scaleIndexRef = useRef(0);
177
77
  const scalingRef = useRef(false);
178
78
  const scaleStartTimeRef = useRef(0);
179
- const animationRef = useRef(undefined);
180
- const revealIndexRef = useRef(0);
181
- const lastRevealTime = useRef(0);
182
79
  const displayPoints = points || defaultPoints;
183
80
  useEffect(() => {
184
- const canvas = canvasRef.current;
185
- if (!canvas)
81
+ const container = containerRef.current;
82
+ if (!container)
186
83
  return;
187
- const ctx = canvas.getContext('2d');
188
- if (!ctx)
189
- return;
190
- const { vertices, edges } = generateIcosphere(2);
191
- const radius = size * 0.4;
192
- const render = () => {
193
- ctx.clearRect(0, 0, size, size);
194
- // Rotate and project vertices
195
- const rotated = vertices.map(v => {
196
- let rv = rotateY(v, rotationRef.current);
197
- rv = rotateX(rv, 0.3);
198
- return rv;
199
- });
200
- // Draw edges
201
- ctx.strokeStyle = 'rgba(255, 255, 255, 0.4)';
202
- ctx.lineWidth = 1.5;
203
- edges.forEach(edge => {
204
- const v1 = rotated[edge.a];
205
- const v2 = rotated[edge.b];
206
- if (v1.z > -0.5 || v2.z > -0.5) {
207
- const p1 = project(v1, radius, size);
208
- const p2 = project(v2, radius, size);
209
- ctx.beginPath();
210
- ctx.moveTo(p1.x, p1.y);
211
- ctx.lineTo(p2.x, p2.y);
212
- ctx.stroke();
213
- }
214
- });
215
- // Draw vertices as small dots
216
- ctx.fillStyle = 'rgba(255, 255, 255, 0.5)';
217
- rotated.forEach(v => {
218
- if (v.z > -0.5) {
219
- const p = project(v, radius, size);
220
- ctx.beginPath();
221
- ctx.arc(p.x, p.y, 2, 0, Math.PI * 2);
222
- ctx.fill();
223
- }
224
- });
225
- // Sequential reveal of icons (one by one)
84
+ const scene = new THREE.Scene();
85
+ const camera = new THREE.PerspectiveCamera(50, 1, 1, 1000);
86
+ camera.position.z = 350;
87
+ const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
88
+ renderer.setSize(size, size);
89
+ renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
90
+ container.appendChild(renderer.domElement);
91
+ rendererRef.current = renderer;
92
+ const ambientLight = new THREE.AmbientLight(0xffffff, 2.0);
93
+ scene.add(ambientLight);
94
+ const directionalLight = new THREE.DirectionalLight(0xffffff, 2.2);
95
+ directionalLight.position.set(1, 1, 1);
96
+ scene.add(directionalLight);
97
+ const GLOBE_RADIUS = 100;
98
+ const globe = new ThreeGlobe({ animateIn: true })
99
+ .globeImageUrl('https://unpkg.com/three-globe@2.45.0/example/img/earth-night.jpg')
100
+ .bumpImageUrl('https://unpkg.com/three-globe@2.45.0/example/img/earth-topology.png')
101
+ .showAtmosphere(true)
102
+ .atmosphereColor('#3a82f7')
103
+ .atmosphereAltitude(0.15)
104
+ .pointsData(generatePointsData(displayPoints))
105
+ .pointAltitude(0.01)
106
+ .pointColor('color')
107
+ .pointRadius('size')
108
+ .arcsData(generateArcs(displayPoints))
109
+ .arcColor('color')
110
+ .arcDashLength(0.4)
111
+ .arcDashGap(0.2)
112
+ .arcDashAnimateTime(2000)
113
+ .arcStroke(0.3)
114
+ .arcAltitudeAutoScale(0.3);
115
+ globeRef.current = globe;
116
+ scene.add(globe);
117
+ scene.rotation.x = 0.2;
118
+ const animate = () => {
226
119
  const now = Date.now();
120
+ globe.rotation.y += 0.002;
227
121
  if (revealIndexRef.current < displayPoints.length &&
228
122
  now - lastRevealTime.current > 2000) {
229
123
  setVisibleIndices(prev => {
@@ -234,47 +128,73 @@ export function Globe({ points, size = 600 }) {
234
128
  revealIndexRef.current++;
235
129
  lastRevealTime.current = now;
236
130
  }
237
- // Update point positions
238
- const positions = displayPoints.map(point => calculatePointPosition(point.location[0], point.location[1], rotationRef.current, size));
239
- // Sequential scaling - brief pulse when icon reaches front
240
- const currentPos = positions[scaleIndexRef.current];
241
- if (currentPos && currentPos.z > 0.4 && !scalingRef.current) {
242
- scalingRef.current = true;
243
- scaleStartTimeRef.current = now;
244
- }
245
- if (scalingRef.current) {
246
- const elapsed = now - scaleStartTimeRef.current;
247
- const scaleDuration = 500;
248
- if (elapsed < scaleDuration && currentPos) {
249
- const progress = elapsed / scaleDuration;
250
- const pulseAmount = Math.sin(progress * Math.PI);
251
- currentPos.scale *= 1 + pulseAmount * 0.35;
131
+ const positions = displayPoints.map((point, index) => {
132
+ const [lat, lng] = point.location;
133
+ const phi = ((90 - lat) * Math.PI) / 180;
134
+ const theta = ((lng + 180) * Math.PI) / 180;
135
+ const pos = new THREE.Vector3(-GLOBE_RADIUS * Math.sin(phi) * Math.cos(theta), GLOBE_RADIUS * Math.cos(phi), GLOBE_RADIUS * Math.sin(phi) * Math.sin(theta));
136
+ pos.applyAxisAngle(new THREE.Vector3(0, 1, 0), globe.rotation.y);
137
+ pos.applyAxisAngle(new THREE.Vector3(1, 0, 0), 0.2);
138
+ const projected = pos.clone().project(camera);
139
+ const screenX = (projected.x * 0.5 + 0.5) * size;
140
+ const screenY = (-projected.y * 0.5 + 0.5) * size;
141
+ const normalizedZ = pos.z / GLOBE_RADIUS;
142
+ let opacity = 1;
143
+ if (normalizedZ > 0.3) {
144
+ opacity = 1;
145
+ }
146
+ else if (normalizedZ > -0.3) {
147
+ opacity = (normalizedZ + 0.3) / 0.6;
252
148
  }
253
149
  else {
254
- scalingRef.current = false;
255
- scaleIndexRef.current =
256
- (scaleIndexRef.current + 1) % displayPoints.length;
150
+ opacity = 0;
257
151
  }
258
- }
152
+ let scale = normalizedZ > 0 ? 1 + normalizedZ * 0.3 : 0.7 + normalizedZ * 0.3;
153
+ scale = Math.max(0.5, scale);
154
+ if (index === scaleIndexRef.current) {
155
+ if (normalizedZ > 0.4 && !scalingRef.current) {
156
+ scalingRef.current = true;
157
+ scaleStartTimeRef.current = now;
158
+ }
159
+ if (scalingRef.current) {
160
+ const elapsed = now - scaleStartTimeRef.current;
161
+ const duration = 500;
162
+ if (elapsed < duration) {
163
+ const progress = elapsed / duration;
164
+ const pulse = Math.sin(progress * Math.PI);
165
+ scale *= 1 + pulse * 0.35;
166
+ }
167
+ else {
168
+ scalingRef.current = false;
169
+ scaleIndexRef.current =
170
+ (scaleIndexRef.current + 1) % displayPoints.length;
171
+ }
172
+ }
173
+ }
174
+ return {
175
+ x: screenX,
176
+ y: screenY,
177
+ z: normalizedZ,
178
+ scale,
179
+ opacity,
180
+ };
181
+ });
259
182
  setPointPositions(positions);
260
- rotationRef.current += 0.003;
261
- animationRef.current = requestAnimationFrame(render);
183
+ renderer.render(scene, camera);
184
+ animationRef.current = requestAnimationFrame(animate);
262
185
  };
263
- // Start first reveal immediately
264
- lastRevealTime.current = Date.now() - 2000;
265
- render();
186
+ animate();
266
187
  return () => {
267
188
  if (animationRef.current) {
268
189
  cancelAnimationFrame(animationRef.current);
269
190
  }
191
+ if (rendererRef.current && container) {
192
+ container.removeChild(rendererRef.current.domElement);
193
+ rendererRef.current.dispose();
194
+ }
270
195
  };
271
196
  }, [size, displayPoints]);
272
- return (_jsxs("div", { className: "relative", style: { width: size, height: size }, children: [_jsx("canvas", { ref: canvasRef, width: size, height: size, style: {
273
- width: size,
274
- height: size,
275
- maxWidth: '100%',
276
- aspectRatio: '1',
277
- } }), displayPoints.map((point, index) => {
197
+ return (_jsxs("div", { className: "relative", style: { width: size, height: size }, children: [_jsx("div", { ref: containerRef, className: "absolute inset-0" }), displayPoints.map((point, index) => {
278
198
  const pos = pointPositions[index];
279
199
  const isVisible = visibleIndices.has(index);
280
200
  if (!pos || !isVisible)
@@ -1 +1 @@
1
- {"version":3,"file":"Globe.js","sourceRoot":"","sources":["../../../src/components/backgrounds/Globe.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Globe.js","sourceRoot":"","sources":["../../../src/components/backgrounds/Globe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,aAAa,CAAC;AAqBrC,MAAM,aAAa,GAAiB;IAClC;QACE,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG;QACvC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KAClB;IACD,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,UAAU,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC5E;QACE,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,KAAC,cAAc,IAAC,SAAS,EAAC,UAAU,GAAG;QAC7C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;KACpB;CACF,CAAC;AAEF,SAAS,YAAY,CAAC,MAAoB,EAAE,cAAc,GAAG,CAAC;IAC5D,MAAM,IAAI,GAMJ,EAAE,CAAC;IAET,MAAM,MAAM,GAAG;QACb,0BAA0B;QAC1B,yBAAyB;QACzB,yBAAyB;QACzB,0BAA0B;QAC1B,yBAAyB;QACzB,yBAAyB;KAC1B,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC;gBACR,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;aACzD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC;YACR,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAoB;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtB,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClB,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,GAAG,EAAc;IACtD,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,CAA6B,IAAI,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAEjD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAClD,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAChB,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpC,MAAM,aAAa,GAAG,MAAM,IAAI,aAAa,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC;QAExB,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;QAE/B,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAExB,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE5B,MAAM,YAAY,GAAG,GAAG,CAAC;QAEzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aAC9C,aAAa,CACZ,kEAAkE,CACnE;aACA,YAAY,CACX,qEAAqE,CACtE;aACA,cAAc,CAAC,IAAI,CAAC;aACpB,eAAe,CAAC,SAAS,CAAC;aAC1B,kBAAkB,CAAC,IAAI,CAAC;aACxB,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;aAC7C,aAAa,CAAC,IAAI,CAAC;aACnB,UAAU,CAAC,OAAO,CAAC;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;aACrC,QAAQ,CAAC,OAAO,CAAC;aACjB,aAAa,CAAC,GAAG,CAAC;aAClB,UAAU,CAAC,GAAG,CAAC;aACf,kBAAkB,CAAC,IAAI,CAAC;aACxB,SAAS,CAAC,GAAG,CAAC;aACd,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE7B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC;QAEvB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEvB,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC;YAE1B,IACE,cAAc,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM;gBAC7C,GAAG,GAAG,cAAc,CAAC,OAAO,GAAG,IAAI,EACnC,CAAC;gBACD,iBAAiB,CAAC,IAAI,CAAC,EAAE;oBACvB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACjC,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,cAAc,CAAC,OAAO,EAAE,CAAC;gBACzB,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;YAC/B,CAAC;YAED,MAAM,SAAS,GAAoB,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACpE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAElC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBACzC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;gBAE5C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAC3B,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAC/C,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAC5B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAC/C,CAAC;gBAEF,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjE,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAEpD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;gBACjD,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;gBAElD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;gBACzC,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;oBACtB,OAAO,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,IAAI,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;oBAC9B,OAAO,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,CAAC,CAAC;gBACd,CAAC;gBAED,IAAI,KAAK,GACP,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;gBACpE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAE7B,IAAI,KAAK,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;oBACpC,IAAI,WAAW,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;wBAC7C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC1B,iBAAiB,CAAC,OAAO,GAAG,GAAG,CAAC;oBAClC,CAAC;oBAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;wBACvB,MAAM,OAAO,GAAG,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC;wBAChD,MAAM,QAAQ,GAAG,GAAG,CAAC;wBAErB,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;4BACvB,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;4BACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;4BAC3C,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;wBAC5B,CAAC;6BAAM,CAAC;4BACN,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;4BAC3B,aAAa,CAAC,OAAO;gCACnB,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;wBACvD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,WAAW;oBACd,KAAK;oBACL,OAAO;iBACR,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE7B,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,YAAY,CAAC,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,OAAO,EAAE,CAAC;QAEV,OAAO,GAAG,EAAE;YACV,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;gBACrC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACtD,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAC5D,cAAK,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,kBAAkB,GAAG,EAEtD,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;oBAAE,OAAO,IAAI,CAAC;gBAEpC,OAAO,CACL,KAAC,MAAM,CAAC,GAAG,IAET,SAAS,EAAC,gEAAgE,EAC1E,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG,CAAC,CAAC;wBACX,GAAG,EAAE,GAAG,CAAC,CAAC;wBACV,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;qBAC3B,EACD,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EACjC,OAAO,EAAE;wBACP,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB,EACD,UAAU,EAAE;wBACV,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;wBAC1B,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;qBAC1C,YAED,eAAK,SAAS,EAAC,UAAU,aACvB,cAAK,SAAS,EAAC,oIAAoI,YAChJ,KAAK,CAAC,IAAI,GACP,EACN,cAAK,SAAS,EAAC,oEAAoE,YACjF,eAAM,SAAS,EAAC,+CAA+C,YAC5D,KAAK,CAAC,KAAK,GACP,GACH,IACF,IA3BD,KAAK,CAAC,KAAK,CA4BL,CACd,CAAC;YACJ,CAAC,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@b3-crow/ui-kit",
3
- "version": "0.0.36-pr44.3",
3
+ "version": "0.0.36-pr44.5",
4
4
  "description": "CROW-B3 UI Kit",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -24,7 +24,9 @@
24
24
  "lint:fix": "eslint src/ --fix",
25
25
  "format": "bunx prettier src/ --write",
26
26
  "prepare": "husky install",
27
- "lint-staged": "lint-staged"
27
+ "lint-staged": "lint-staged",
28
+ "storybook": "storybook dev -p 6006",
29
+ "build-storybook": "storybook build"
28
30
  },
29
31
  "repository": {
30
32
  "type": "git",
@@ -54,7 +56,19 @@
54
56
  "postcss": "^8.5.6",
55
57
  "prettier": "^3.6.2",
56
58
  "tailwindcss": "^4.1.17",
57
- "typescript": "^5.9.3"
59
+ "typescript": "^5.9.3",
60
+ "storybook": "^10.2.10",
61
+ "@storybook/react-vite": "^10.2.10",
62
+ "@chromatic-com/storybook": "^5.0.1",
63
+ "@storybook/addon-vitest": "^10.2.10",
64
+ "@storybook/addon-a11y": "^10.2.10",
65
+ "@storybook/addon-docs": "^10.2.10",
66
+ "@storybook/addon-onboarding": "^10.2.10",
67
+ "eslint-plugin-storybook": "^10.2.10",
68
+ "vitest": "^4.0.18",
69
+ "playwright": "^1.58.2",
70
+ "@vitest/browser-playwright": "^4.0.18",
71
+ "@vitest/coverage-v8": "^4.0.18"
58
72
  },
59
73
  "lint-staged": {
60
74
  "*.{js,jsx,ts,tsx}": [
@@ -66,12 +80,13 @@
66
80
  ]
67
81
  },
68
82
  "peerDependencies": {
69
- "react": "^19.2.0",
70
- "react-dom": "^19.2.0",
83
+ "react": "^19.2.4",
84
+ "react-dom": "^19.2.4",
71
85
  "next": "^15.0.0"
72
86
  },
73
87
  "dependencies": {
74
88
  "@radix-ui/react-slot": "^1.2.4",
89
+ "@types/three": "^0.182.0",
75
90
  "class-variance-authority": "^0.7.1",
76
91
  "clsx": "^2.1.1",
77
92
  "cobe": "^0.6.5",
@@ -80,6 +95,8 @@
80
95
  "lucide-react": "^0.542.0",
81
96
  "react-icons": "^5.5.0",
82
97
  "shiki": "^3.21.0",
83
- "tailwind-merge": "^3.4.0"
98
+ "tailwind-merge": "^3.4.0",
99
+ "three": "^0.182.0",
100
+ "three-globe": "^2.45.0"
84
101
  }
85
102
  }
@@ -0,0 +1 @@
1
+ /// <reference types="@vitest/browser-playwright" />