@hunterchen/canvas 0.1.3 → 0.3.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @hunterchen/canvas
2
2
 
3
- A React-based canvas library for creating pannable, zoomable, and interactive canvas experiences. Originally developed for the [Hack Western 12 Website](https://github.com/hackwestern/hackwestern).
3
+ A React-based canvas library for creating pannable, zoomable, and interactive canvas experiences. Originally developed (by me) for the [Hack Western 12 Website](https://github.com/hackwestern/hackwestern/tree/2025).
4
4
 
5
5
  ## Installation
6
6
 
@@ -12,7 +12,7 @@ npm install @hunterchen/canvas
12
12
 
13
13
  ### Required Peer Dependencies
14
14
 
15
- This library requires the following peer dependencies (these are **not** installed automatically):
15
+ This library requires the following peer dependencies:
16
16
 
17
17
  ```bash
18
18
  npm install react react-dom framer-motion
@@ -59,19 +59,79 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
59
59
  ## Quick Start
60
60
 
61
61
  ```tsx
62
- import { Canvas, CanvasProvider } from '@hunterchen/canvas';
62
+ import { Canvas, CanvasComponent } from '@hunterchen/canvas';
63
+
64
+ const homeCoordinates = { x: 0, y: 0, width: 1920, height: 1080 };
63
65
 
64
66
  function App() {
65
67
  return (
66
- <CanvasProvider>
67
- <Canvas>
68
- {/* Your canvas content here */}
69
- </Canvas>
70
- </CanvasProvider>
68
+ <Canvas homeCoordinates={homeCoordinates}>
69
+ <CanvasComponent offset={homeCoordinates}>
70
+ {/* Your section content here */}
71
+ </CanvasComponent>
72
+ </Canvas>
71
73
  );
72
74
  }
73
75
  ```
74
76
 
77
+ The `Canvas` component requires `homeCoordinates` to define the initial viewport position. Use `CanvasComponent` to wrap your content sections and position them at specific coordinates on the canvas.
78
+
79
+ ## Configuration
80
+
81
+ ### Home Coordinates
82
+
83
+ The `homeCoordinates` prop defines where the canvas initially centers when it loads. This is a required prop that specifies the starting section's position and dimensions:
84
+
85
+ ```tsx
86
+ const homeCoordinates: SectionCoordinates = {
87
+ x: 2867, // X position in canvas space
88
+ y: 1200, // Y position in canvas space
89
+ width: 264, // Section width
90
+ height: 800 // Section height
91
+ };
92
+
93
+ <Canvas homeCoordinates={homeCoordinates}>
94
+ {/* ... */}
95
+ </Canvas>
96
+ ```
97
+
98
+ ### Navigation Items
99
+
100
+ The `navItems` prop is optional and defines sections that appear in the canvas navbar. Each navigation item specifies a section with its coordinates, label, icon, and whether it's the home section:
101
+
102
+ ```tsx
103
+ import type { NavItem } from '@hunterchen/canvas';
104
+
105
+ const navItems: NavItem[] = [
106
+ {
107
+ id: "home",
108
+ label: "Home",
109
+ icon: "Home", // Lucide icon name or custom component
110
+ x: 2867,
111
+ y: 1200,
112
+ width: 264,
113
+ height: 800,
114
+ isHome: true // Marks this as the home section
115
+ },
116
+ {
117
+ id: "about",
118
+ label: "About",
119
+ icon: "Info",
120
+ x: 1400,
121
+ y: 400,
122
+ width: 1013,
123
+ height: 800
124
+ },
125
+ // ... more sections
126
+ ];
127
+
128
+ <Canvas homeCoordinates={homeCoordinates} navItems={navItems}>
129
+ {/* ... */}
130
+ </Canvas>
131
+ ```
132
+
133
+ When `navItems` is provided, the canvas will render a navbar with buttons to navigate between sections. The navbar uses Lucide icons, so make sure the icon names match available Lucide icons.
134
+
75
135
  ## Usage Examples
76
136
 
77
137
  ### Basic Canvas with Draggable Elements
@@ -119,8 +179,7 @@ npm run type-check
119
179
 
120
180
  - **Pan & Zoom**: Click and drag to pan, pinch/scroll to zoom
121
181
  - **Draggable Elements**: Built-in support for draggable components
122
- - **Performance Optimized**: Adaptive rendering based on device capabilities
123
- - **Responsive**: Works on desktop and mobile (desktop recommended)
182
+ - **Performance Optimized (more to do)**: Adaptive rendering based on device capabilities
124
183
  - **Pre-compiled CSS**: No Tailwind configuration needed in your project
125
184
  - **TypeScript Support**: Full type definitions included
126
185
 
@@ -1,13 +1,12 @@
1
1
  import { type Transition } from "framer-motion";
2
2
  import React, { type FC } from "react";
3
- import { CanvasSection, type SectionCoordinates } from "../../types";
3
+ import type { NavItem, SectionCoordinates } from "../../types";
4
4
  import type { ReactNode } from "react";
5
5
  interface Props {
6
6
  homeCoordinates: SectionCoordinates;
7
7
  children: React.ReactNode;
8
- navbarCoordinates?: Record<CanvasSection, SectionCoordinates>;
9
- navbarSections?: CanvasSection[];
10
- navbarHomeSection?: CanvasSection;
8
+ /** Array of navigation items for the navbar. If omitted, navbar is hidden. */
9
+ navItems?: NavItem[];
11
10
  /** Disable intro animation entirely */
12
11
  skipIntro?: boolean;
13
12
  /** Custom intro content during loading */
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/components/canvas/canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,EAIZ,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AAwBf,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,KAAK;IACb,eAAe,EAAE,kBAAkB,CAAC;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAG1B,iBAAiB,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAGlC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,UAAU,CAAC;CAC7B;AAYD,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,KAAK,CA0lBrB,CAAC;AAEF,eAAO,MAAM,eAAe,oIAAkL,CAAC;AAyB/M,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/components/canvas/canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,EAIZ,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AAwBf,OAAO,KAAK,EAAiB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,KAAK;IACb,eAAe,EAAE,kBAAkB,CAAC;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAG1B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAGrB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,UAAU,CAAC;CAC7B;AAYD,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,KAAK,CAolBrB,CAAC;AAEF,eAAO,MAAM,eAAe,oIAAkL,CAAC;AAyB/M,eAAe,MAAM,CAAC"}
@@ -7,7 +7,6 @@ import { STAGE2_TRANSITION, MOUSE_WHEEL_ZOOM_SENSITIVITY, TRACKPAD_ZOOM_SENSITIV
7
7
  import useWindowDimensions from "../../hooks/useWindowDimensions";
8
8
  import Navbar from "./navbar";
9
9
  import Toolbar from "./toolbar";
10
- import { CanvasSection } from "../../types";
11
10
  import { CanvasWrapper } from "./wrapper";
12
11
  import { usePerformanceMode } from "../../hooks/usePerformanceMode";
13
12
  const stopAllMotion = (x, y, scale) => {
@@ -15,12 +14,10 @@ const stopAllMotion = (x, y, scale) => {
15
14
  y.stop();
16
15
  scale.stop();
17
16
  };
18
- const Canvas = ({ children, homeCoordinates, navbarCoordinates, navbarSections, navbarHomeSection, skipIntro = false, introContent, loadingText, introBackgroundGradient, canvasBoxGradient, growTransition, blurTransition, }) => {
17
+ const Canvas = ({ children, homeCoordinates, navItems, skipIntro = false, introContent, loadingText, introBackgroundGradient, canvasBoxGradient, growTransition, blurTransition, }) => {
19
18
  const { height: windowHeight, width: windowWidth } = useWindowDimensions();
20
19
  const { mode } = usePerformanceMode();
21
- const navSections = navbarSections ?? Object.values(CanvasSection);
22
- const navHomeSection = navbarHomeSection ?? CanvasSection.Home;
23
- const hasNavbarData = Boolean(navbarCoordinates);
20
+ const hasNavbar = Boolean(navItems && navItems.length > 0);
24
21
  const sceneWidth = canvasWidth;
25
22
  const sceneHeight = canvasHeight;
26
23
  const MIN_ZOOM = MIN_ZOOMS[getScreenSizeEnum(windowWidth)];
@@ -372,7 +369,7 @@ const Canvas = ({ children, homeCoordinates, navbarCoordinates, navbarSections,
372
369
  y: -offset.y,
373
370
  }, viewportRef, onComplete, zoom);
374
371
  }, [panToOffset, viewportRef]);
375
- return (_jsx(CanvasWrapper, { introProgress: introProgress, onIntroGrowComplete: startStage2, skipIntro: skipIntro, introContent: introContent, loadingText: loadingText, introBackgroundGradient: introBackgroundGradient, canvasBoxGradient: canvasBoxGradient, growTransition: growTransition, blurTransition: blurTransition, children: _jsxs(CanvasProvider, { x: x, y: y, scale: scale, isResetting: isResetting, maxZIndex: maxZIndex, setMaxZIndex: setMaxZIndex, animationStage: animationStage, nextTargetSection: nextTargetSection, setNextTargetSection: setNextTargetSection, children: [animationStage >= 2 && (_jsxs(_Fragment, { children: [_jsx(Toolbar, { homeCoordinates: offsetHomeCoordinates }), hasNavbarData && navbarCoordinates ? (_jsx(Navbar, { panToOffset: handlePanToOffset, onReset: onResetViewAndItems, coordinates: navbarCoordinates, sections: navSections, homeSection: navHomeSection })) : null] })), _jsx("div", { ref: setViewportRef, className: "relative h-full w-full touch-none select-none overflow-hidden", style: {
372
+ return (_jsx(CanvasWrapper, { introProgress: introProgress, onIntroGrowComplete: startStage2, skipIntro: skipIntro, introContent: introContent, loadingText: loadingText, introBackgroundGradient: introBackgroundGradient, canvasBoxGradient: canvasBoxGradient, growTransition: growTransition, blurTransition: blurTransition, children: _jsxs(CanvasProvider, { x: x, y: y, scale: scale, isResetting: isResetting, maxZIndex: maxZIndex, setMaxZIndex: setMaxZIndex, animationStage: animationStage, nextTargetSection: nextTargetSection, setNextTargetSection: setNextTargetSection, children: [animationStage >= 2 && (_jsxs(_Fragment, { children: [_jsx(Toolbar, { homeCoordinates: offsetHomeCoordinates }), hasNavbar && navItems ? (_jsx(Navbar, { panToOffset: handlePanToOffset, onReset: onResetViewAndItems, items: navItems })) : null] })), _jsx("div", { ref: setViewportRef, className: "relative h-full w-full touch-none select-none overflow-hidden", style: {
376
373
  touchAction: "none",
377
374
  pointerEvents: animationStage >= 2 ? "auto" : "none",
378
375
  overscrollBehavior: "contain",
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../../src/components/canvas/canvas.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../../src/components/canvas/canvas.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +1,13 @@
1
- import { CanvasSection } from "../../../types";
1
+ import type { NavItem } from "../../../types";
2
2
  interface NavbarProps {
3
3
  panToOffset: (offset: {
4
4
  x: number;
5
5
  y: number;
6
6
  }, onComplete?: () => void, zoom?: number) => void;
7
7
  onReset: () => void;
8
- coordinates: Record<string, {
9
- x: number;
10
- y: number;
11
- width: number;
12
- height: number;
13
- }>;
14
- sections: CanvasSection[];
15
- homeSection: CanvasSection;
8
+ /** Array of navigation items defining sections, their icons, and coordinates */
9
+ items: NavItem[];
16
10
  }
17
- export default function Navbar({ panToOffset, onReset, coordinates, sections, homeSection, }: NavbarProps): import("react/jsx-runtime").JSX.Element;
11
+ export default function Navbar({ panToOffset, onReset, items, }: NavbarProps): import("react/jsx-runtime").JSX.Element;
18
12
  export {};
19
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAa/C,UAAU,WAAW;IACnB,WAAW,EAAE,CACX,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAChC,UAAU,CAAC,EAAE,MAAM,IAAI,EACvB,IAAI,CAAC,EAAE,MAAM,KACV,IAAI,CAAC;IACV,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,aAAa,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,EAAE,WAAW,2CA+Kb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAa9C,UAAU,WAAW;IACnB,WAAW,EAAE,CACX,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAChC,UAAU,CAAC,EAAE,MAAM,IAAI,EACvB,IAAI,CAAC,EAAE,MAAM,KACV,IAAI,CAAC;IACV,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gFAAgF;IAChF,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,KAAK,GACN,EAAE,WAAW,2CAiJb"}
@@ -1,16 +1,13 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { motion, useMotionValueEvent } from "framer-motion";
3
- import { useState, useRef, useEffect, useCallback } from "react";
3
+ import { useState, useRef, useEffect, useCallback, useMemo } from "react";
4
4
  import SingleButton from "./single-button";
5
- // TODO: These should be passed as props or provided via context from the app
6
- // For now, apps will need to re-export from this library
7
- import { CanvasSection } from "../../../types";
8
5
  import { useCanvasContext } from "../../../contexts/CanvasContext";
9
6
  import useWindowDimensions from "../../../hooks/useWindowDimensions";
10
7
  import { usePerformanceMode } from "../../../hooks/usePerformanceMode";
11
8
  import { getScreenSizeEnum, getSectionPanCoordinates, } from "../../../lib/canvas";
12
9
  import { RESPONSIVE_ZOOM_MAP, NAVBAR_DEBOUNCE_MS, } from "../../../lib/constants";
13
- export default function Navbar({ panToOffset, onReset, coordinates, sections, homeSection, }) {
10
+ export default function Navbar({ panToOffset, onReset, items, }) {
14
11
  const { x, y, scale, animationStage, setNextTargetSection } = useCanvasContext();
15
12
  const [expandedButton, setExpandedButton] = useState(null);
16
13
  const activePans = useRef(0);
@@ -23,6 +20,8 @@ export default function Navbar({ panToOffset, onReset, coordinates, sections, ho
23
20
  const defaultZoom = RESPONSIVE_ZOOM_MAP[getScreenSizeEnum(width)];
24
21
  // Derive debounce duration from performance mode
25
22
  const debounceMs = NAVBAR_DEBOUNCE_MS[mode] ?? 0;
23
+ // Find the home section from items
24
+ const homeItem = useMemo(() => items.find((item) => item.isHome), [items]);
26
25
  // Leading-edge debounce handler
27
26
  const handleDebouncedClick = useCallback((callback) => {
28
27
  if (debounceMs === 0) {
@@ -57,22 +56,19 @@ export default function Navbar({ panToOffset, onReset, coordinates, sections, ho
57
56
  useMotionValueEvent(x, "change", updateExpandedButton);
58
57
  useMotionValueEvent(y, "change", updateExpandedButton);
59
58
  useMotionValueEvent(scale, "change", updateExpandedButton);
60
- const handlePan = useCallback(function handlePan(section) {
61
- setExpandedButton(section);
59
+ const handlePan = useCallback(function handlePan(item) {
60
+ setExpandedButton(item.id);
62
61
  activePans.current++;
63
62
  // Predictive pre-render hint: mark the target section so its CanvasComponent can
64
63
  // render even before it comes fully into view.
65
- setNextTargetSection(section);
66
- if (section === homeSection) {
64
+ setNextTargetSection(item.id);
65
+ if (item.isHome) {
67
66
  onReset();
68
67
  return;
69
68
  }
70
- const sectionCoords = coordinates[section];
71
- if (!sectionCoords)
72
- return;
73
69
  const panCoords = getSectionPanCoordinates({
74
70
  windowDimensions: { width, height },
75
- coords: sectionCoords,
71
+ coords: { x: item.x, y: item.y, width: item.width, height: item.height },
76
72
  targetZoom: defaultZoom,
77
73
  negative: true,
78
74
  });
@@ -80,18 +76,20 @@ export default function Navbar({ panToOffset, onReset, coordinates, sections, ho
80
76
  activePans.current--;
81
77
  }, defaultZoom);
82
78
  }, [panToOffset, onReset, width, height, defaultZoom, setNextTargetSection]);
83
- // Clean up timers on unmount
79
+ // Clean up timers on unmount and pan to home on animation complete
84
80
  useEffect(() => {
85
81
  if (animationStage < 2)
86
82
  return;
87
- handlePan(CanvasSection.Home);
83
+ if (homeItem) {
84
+ handlePan(homeItem);
85
+ }
88
86
  return () => {
89
87
  if (panTimeout.current)
90
88
  clearTimeout(panTimeout.current);
91
89
  if (debounceCooldownTimeout.current)
92
90
  clearTimeout(debounceCooldownTimeout.current);
93
91
  };
94
- }, [handlePan, animationStage]);
92
+ }, [handlePan, animationStage, homeItem]);
95
93
  return (_jsx("div", { className: "bottom-12 md:bottom-4", style: {
96
94
  position: "fixed",
97
95
  left: "50%",
@@ -101,6 +99,6 @@ export default function Navbar({ panToOffset, onReset, coordinates, sections, ho
101
99
  display: "flex",
102
100
  justifyContent: "center",
103
101
  alignItems: "center",
104
- }, children: _jsx("div", { className: "px-4 md:px-8", children: _jsx(motion.div, { className: "flex select-none items-center justify-center gap-1 rounded-[10px] border-[1px] border-border bg-canvas-offwhite p-1 shadow-[0_6px_12px_rgba(0,0,0,0.10)]", children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(SingleButton, { label: "Home", icon: "Home", onClick: () => handlePan(CanvasSection.Home), isPushed: expandedButton === CanvasSection.Home, onDebouncedClick: handleDebouncedClick }), _jsx(SingleButton, { label: "About", icon: "Info", onClick: () => handlePan(CanvasSection.About), isPushed: expandedButton === CanvasSection.About, onDebouncedClick: handleDebouncedClick }), _jsx(SingleButton, { label: "Projects", icon: "LayoutDashboard", onClick: () => handlePan(CanvasSection.Projects), isPushed: expandedButton === CanvasSection.Projects, onDebouncedClick: handleDebouncedClick }), _jsx(SingleButton, { label: "Sponsors", icon: "Handshake", onClick: () => handlePan(CanvasSection.Sponsors), isPushed: expandedButton === CanvasSection.Sponsors, onDebouncedClick: handleDebouncedClick }), _jsx(SingleButton, { label: "FAQ", icon: "HelpCircle", onClick: () => handlePan(CanvasSection.FAQ), isPushed: expandedButton === CanvasSection.FAQ, onDebouncedClick: handleDebouncedClick }), _jsx(SingleButton, { label: "Team", icon: "Users", onClick: () => handlePan(CanvasSection.Team), isPushed: expandedButton === CanvasSection.Team, onDebouncedClick: handleDebouncedClick })] }) }) }) }));
102
+ }, children: _jsx("div", { className: "px-4 md:px-8", children: _jsx(motion.div, { className: "flex select-none items-center justify-center gap-1 rounded-[10px] border-[1px] border-border bg-canvas-offwhite p-1 shadow-[0_6px_12px_rgba(0,0,0,0.10)]", children: _jsx("div", { className: "flex items-center gap-1", children: items.map((item) => (_jsx(SingleButton, { label: item.label, icon: item.icon, onClick: () => handlePan(item), isPushed: expandedButton === item.id, onDebouncedClick: handleDebouncedClick }, item.id))) }) }) }) }));
105
103
  }
106
104
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/index.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +1,14 @@
1
- import * as LucideIcons from "lucide-react";
2
- type IconName = keyof typeof LucideIcons;
3
1
  interface SingleButtonProps {
4
2
  label: string;
5
- icon?: IconName;
6
- customIcon?: React.ComponentType<{
3
+ /** Lucide icon name or a custom icon component */
4
+ icon: string | React.ComponentType<{
7
5
  className?: string;
8
6
  }>;
9
7
  onClick?: () => void;
10
8
  isPushed: boolean;
11
9
  link?: string;
12
- emailAddress?: string;
13
10
  onDebouncedClick?: (callback: () => void) => void;
14
11
  }
15
- export default function SingleButton({ label, icon, customIcon, onClick, isPushed, link, emailAddress, onDebouncedClick, }: SingleButtonProps): import("react/jsx-runtime").JSX.Element;
12
+ export default function SingleButton({ label, icon, onClick, isPushed, link, onDebouncedClick, }: SingleButtonProps): import("react/jsx-runtime").JSX.Element;
16
13
  export {};
17
14
  //# sourceMappingURL=single-button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"single-button.d.ts","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/single-button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAG5C,KAAK,QAAQ,GAAG,MAAM,OAAO,WAAW,CAAC;AAEzC,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,KAAK,EACL,IAAI,EACJ,UAAU,EACV,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,gBAAgB,GACjB,EAAE,iBAAiB,2CA8InB"}
1
+ {"version":3,"file":"single-button.d.ts","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/single-button.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,gBAAgB,GACjB,EAAE,iBAAiB,2CAoInB"}
@@ -2,16 +2,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
3
  import * as LucideIcons from "lucide-react";
4
4
  import { AnimatePresence, motion } from "framer-motion";
5
- export default function SingleButton({ label, icon, customIcon, onClick, isPushed, link, emailAddress, onDebouncedClick, }) {
5
+ export default function SingleButton({ label, icon, onClick, isPushed, link, onDebouncedClick, }) {
6
6
  const [isHovered, setIsHovered] = useState(false);
7
7
  const [showTag, setShowTag] = useState(false);
8
8
  const [copiedEmail, setCopiedEmail] = useState(false);
9
- const Icon = icon ? LucideIcons[icon] : null;
10
- const CustomIcon = customIcon;
9
+ const isLucideIconName = typeof icon === "string";
10
+ const IconComponent = isLucideIconName
11
+ ? LucideIcons[icon]
12
+ : icon;
11
13
  const TagDelay = 100;
12
- // Ensure either icon or customIcon is provided
13
- if (!Icon && !CustomIcon) {
14
- throw new Error("Either 'icon' or 'customIcon' prop must be provided");
14
+ if (!IconComponent) {
15
+ throw new Error("A valid 'icon' prop is required (Lucide icon name or custom icon component).");
15
16
  }
16
17
  useEffect(() => {
17
18
  let timeoutId;
@@ -60,10 +61,10 @@ export default function SingleButton({ label, icon, customIcon, onClick, isPushe
60
61
  type: "spring",
61
62
  stiffness: 400,
62
63
  damping: 25,
63
- }, children: isPushed ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { children: Icon ? (_jsx(Icon, { className: `h-5 w-5 flex-shrink-0 ${isPushed ? "text-canvas-emphasis" : "text-canvas-medium"}` })) : CustomIcon ? (_jsx(CustomIcon, { className: `h-5 w-5 flex-shrink-0 ${isPushed ? "text-white" : "text-canvas-medium"}` })) : null }), _jsx(motion.span, { initial: { opacity: 0, width: 0 }, animate: { opacity: 1, width: "auto" }, exit: { opacity: 0, width: 0 }, transition: {
64
+ }, children: isPushed ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { children: _jsx(IconComponent, { className: `h-5 w-5 flex-shrink-0 ${isPushed ? (isLucideIconName ? "text-canvas-emphasis" : "text-white") : "text-canvas-medium"}` }) }), _jsx(motion.span, { initial: { opacity: 0, width: 0 }, animate: { opacity: 1, width: "auto" }, exit: { opacity: 0, width: 0 }, transition: {
64
65
  duration: 0.1,
65
66
  ease: "easeInOut",
66
- }, className: "overflow-hidden whitespace-nowrap font-canvas-figtree text-sm font-medium text-canvas-emphasis", children: displayLabel })] })) : (_jsxs("div", { children: [Icon ? (_jsx(Icon, { className: `h-5 w-5 flex-shrink-0 ${isPushed ? "text-white" : "text-canvas-medium"}` })) : CustomIcon ? (_jsx(CustomIcon, { className: `h-5 w-5 flex-shrink-0 ${isPushed ? "text-white" : "text-canvas-medium"}` })) : null, _jsx(AnimatePresence, { children: showTag && !isPushed && (_jsx(motion.div, { initial: { opacity: 0, y: 5, scale: 0.9, x: "-50%" }, animate: { opacity: 1, y: 0, scale: 1, x: "-50%" }, exit: { opacity: 0, y: 5, scale: 0.9, x: "-50%" }, transition: {
67
+ }, className: "overflow-hidden whitespace-nowrap font-canvas-figtree text-sm font-medium text-canvas-emphasis", children: displayLabel })] })) : (_jsxs("div", { children: [_jsx(IconComponent, { className: `h-5 w-5 flex-shrink-0 ${isPushed ? (isLucideIconName ? "text-canvas-emphasis" : "text-white") : "text-canvas-medium"}` }), _jsx(AnimatePresence, { children: showTag && !isPushed && (_jsx(motion.div, { initial: { opacity: 0, y: 5, scale: 0.9, x: "-50%" }, animate: { opacity: 1, y: 0, scale: 1, x: "-50%" }, exit: { opacity: 0, y: 5, scale: 0.9, x: "-50%" }, transition: {
67
68
  duration: 0.05,
68
69
  ease: "easeOut",
69
70
  }, className: "pointer-events-none absolute -top-10 left-1/2 z-50", children: _jsx("div", { className: "rounded-sm bg-gradient-to-t from-black/10 to-transparent px-[1px] pb-[2.5px] pt-[1px]", children: _jsx("div", { className: "whitespace-nowrap rounded-sm bg-canvas-offwhite px-2 py-1 font-canvas-figtree text-sm text-canvas-medium", children: displayLabel }) }) })) })] })) }));
@@ -1 +1 @@
1
- {"version":3,"file":"single-button.js","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/single-button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"single-button.js","sourceRoot":"","sources":["../../../../src/components/canvas/navbar/single-button.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,5 @@ export { usePerformanceMode as usePerformanceModeLegacy } from './hooks/usePerfo
13
13
  export * from './lib/canvas';
14
14
  export * from './lib/constants';
15
15
  export * from './utils/performance';
16
- export type { SectionCoordinates } from './types';
17
- export { CanvasSection } from './types';
16
+ export type { SectionCoordinates, NavItem, CanvasSection } from './types';
18
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACxG,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGxF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAGpC,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACxG,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGxF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAGpC,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -15,5 +15,4 @@ export { usePerformanceMode as usePerformanceModeLegacy } from './hooks/usePerfo
15
15
  export * from './lib/canvas';
16
16
  export * from './lib/constants';
17
17
  export * from './utils/performance';
18
- export { CanvasSection } from './types';
19
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAErE,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGxG,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE5F,YAAY;AACZ,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAIpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAErE,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGxG,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE5F,YAAY;AACZ,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
@@ -8,12 +8,33 @@ export interface SectionCoordinates {
8
8
  width: number;
9
9
  height: number;
10
10
  }
11
- export declare enum CanvasSection {
12
- Home = "home",
13
- About = "about",
14
- Projects = "projects",
15
- Sponsors = "sponsors",
16
- FAQ = "faq",
17
- Team = "team"
11
+ /**
12
+ * CanvasSection is now a generic string type.
13
+ * Apps define their own section IDs as strings.
14
+ */
15
+ export type CanvasSection = string;
16
+ /**
17
+ * Configuration for a single navigation item.
18
+ * Combines section identity, display info, and coordinates.
19
+ */
20
+ export interface NavItem {
21
+ /** Unique identifier for this section */
22
+ id: string;
23
+ /** Display label shown in the navbar */
24
+ label: string;
25
+ /** Lucide icon name or a custom icon component */
26
+ icon: string | React.ComponentType<{
27
+ className?: string;
28
+ }>;
29
+ /** X coordinate on the canvas */
30
+ x: number;
31
+ /** Y coordinate on the canvas */
32
+ y: number;
33
+ /** Width of the section viewport */
34
+ width: number;
35
+ /** Height of the section viewport */
36
+ height: number;
37
+ /** If true, clicking this section triggers the reset/home behavior */
38
+ isHome?: boolean;
18
39
  }
19
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,iCAAiC;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,iCAAiC;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -2,13 +2,5 @@
2
2
  * Generic types for the canvas library
3
3
  * Apps should extend these types with their specific enums and constants
4
4
  */
5
- export var CanvasSection;
6
- (function (CanvasSection) {
7
- CanvasSection["Home"] = "home";
8
- CanvasSection["About"] = "about";
9
- CanvasSection["Projects"] = "projects";
10
- CanvasSection["Sponsors"] = "sponsors";
11
- CanvasSection["FAQ"] = "faq";
12
- CanvasSection["Team"] = "team";
13
- })(CanvasSection || (CanvasSection = {}));
5
+ export {};
14
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,sCAAqB,CAAA;IACrB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACf,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@hunterchen/canvas",
3
- "version": "0.1.3",
3
+ "version": "0.3.0",
4
4
  "description": "A React-based canvas library for creating pannable, zoomable, and interactive canvas experiences.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/hunterchen7/canvas.git"
10
+ },
7
11
  "main": "dist/index.js",
8
12
  "types": "dist/index.d.ts",
9
13
  "files": [
@@ -39,7 +39,7 @@ import {
39
39
  import useWindowDimensions from "../../hooks/useWindowDimensions";
40
40
  import Navbar from "./navbar";
41
41
  import Toolbar from "./toolbar";
42
- import { CanvasSection, type SectionCoordinates } from "../../types";
42
+ import type { CanvasSection, NavItem, SectionCoordinates } from "../../types";
43
43
  import { CanvasWrapper } from "./wrapper";
44
44
  import { usePerformanceMode } from "../../hooks/usePerformanceMode";
45
45
  import type { ReactNode } from "react";
@@ -49,9 +49,8 @@ interface Props {
49
49
  children: React.ReactNode;
50
50
 
51
51
  // Navbar data (optional). If omitted, navbar is hidden.
52
- navbarCoordinates?: Record<CanvasSection, SectionCoordinates>;
53
- navbarSections?: CanvasSection[];
54
- navbarHomeSection?: CanvasSection;
52
+ /** Array of navigation items for the navbar. If omitted, navbar is hidden. */
53
+ navItems?: NavItem[];
55
54
 
56
55
  // ============== Intro Animation Customization ==============
57
56
  /** Disable intro animation entirely */
@@ -83,9 +82,7 @@ const stopAllMotion = (
83
82
  const Canvas: FC<Props> = ({
84
83
  children,
85
84
  homeCoordinates,
86
- navbarCoordinates,
87
- navbarSections,
88
- navbarHomeSection,
85
+ navItems,
89
86
  skipIntro = false,
90
87
  introContent,
91
88
  loadingText,
@@ -98,9 +95,7 @@ const Canvas: FC<Props> = ({
98
95
 
99
96
  const { mode } = usePerformanceMode();
100
97
 
101
- const navSections = navbarSections ?? Object.values(CanvasSection);
102
- const navHomeSection = navbarHomeSection ?? CanvasSection.Home;
103
- const hasNavbarData = Boolean(navbarCoordinates);
98
+ const hasNavbar = Boolean(navItems && navItems.length > 0);
104
99
 
105
100
  const sceneWidth = canvasWidth;
106
101
  const sceneHeight = canvasHeight;
@@ -616,13 +611,11 @@ const Canvas: FC<Props> = ({
616
611
  {animationStage >= 2 && (
617
612
  <>
618
613
  <Toolbar homeCoordinates={offsetHomeCoordinates} />
619
- {hasNavbarData && navbarCoordinates ? (
614
+ {hasNavbar && navItems ? (
620
615
  <Navbar
621
616
  panToOffset={handlePanToOffset}
622
617
  onReset={onResetViewAndItems}
623
- coordinates={navbarCoordinates}
624
- sections={navSections as CanvasSection[]}
625
- homeSection={navHomeSection}
618
+ items={navItems}
626
619
  />
627
620
  ) : null}
628
621
  </>
@@ -1,9 +1,7 @@
1
1
  import { motion, useMotionValueEvent } from "framer-motion";
2
- import { useState, useRef, useEffect, useCallback } from "react";
2
+ import { useState, useRef, useEffect, useCallback, useMemo } from "react";
3
3
  import SingleButton from "./single-button";
4
- // TODO: These should be passed as props or provided via context from the app
5
- // For now, apps will need to re-export from this library
6
- import { CanvasSection } from "../../../types";
4
+ import type { NavItem } from "../../../types";
7
5
  import { useCanvasContext } from "../../../contexts/CanvasContext";
8
6
  import useWindowDimensions from "../../../hooks/useWindowDimensions";
9
7
  import { usePerformanceMode } from "../../../hooks/usePerformanceMode";
@@ -23,18 +21,14 @@ interface NavbarProps {
23
21
  zoom?: number,
24
22
  ) => void;
25
23
  onReset: () => void;
26
- // App must provide section coordinates mapping
27
- coordinates: Record<string, { x: number; y: number; width: number; height: number }>;
28
- sections: CanvasSection[];
29
- homeSection: CanvasSection;
24
+ /** Array of navigation items defining sections, their icons, and coordinates */
25
+ items: NavItem[];
30
26
  }
31
27
 
32
28
  export default function Navbar({
33
29
  panToOffset,
34
30
  onReset,
35
- coordinates,
36
- sections,
37
- homeSection,
31
+ items,
38
32
  }: NavbarProps) {
39
33
  const { x, y, scale, animationStage, setNextTargetSection } =
40
34
  useCanvasContext();
@@ -56,6 +50,9 @@ export default function Navbar({
56
50
  // Derive debounce duration from performance mode
57
51
  const debounceMs = NAVBAR_DEBOUNCE_MS[mode] ?? 0;
58
52
 
53
+ // Find the home section from items
54
+ const homeItem = useMemo(() => items.find((item) => item.isHome), [items]);
55
+
59
56
  // Leading-edge debounce handler
60
57
  const handleDebouncedClick = useCallback(
61
58
  (callback: () => void) => {
@@ -100,25 +97,22 @@ export default function Navbar({
100
97
  useMotionValueEvent(scale, "change", updateExpandedButton);
101
98
 
102
99
  const handlePan = useCallback(
103
- function handlePan(section: CanvasSection) {
104
- setExpandedButton(section);
100
+ function handlePan(item: NavItem) {
101
+ setExpandedButton(item.id);
105
102
  activePans.current++;
106
103
 
107
104
  // Predictive pre-render hint: mark the target section so its CanvasComponent can
108
105
  // render even before it comes fully into view.
109
- setNextTargetSection(section);
106
+ setNextTargetSection(item.id);
110
107
 
111
- if (section === homeSection) {
108
+ if (item.isHome) {
112
109
  onReset();
113
110
  return;
114
111
  }
115
112
 
116
- const sectionCoords = coordinates[section];
117
- if (!sectionCoords) return;
118
-
119
113
  const panCoords = getSectionPanCoordinates({
120
114
  windowDimensions: { width, height },
121
- coords: sectionCoords,
115
+ coords: { x: item.x, y: item.y, width: item.width, height: item.height },
122
116
  targetZoom: defaultZoom,
123
117
  negative: true,
124
118
  });
@@ -134,16 +128,18 @@ export default function Navbar({
134
128
  [panToOffset, onReset, width, height, defaultZoom, setNextTargetSection],
135
129
  );
136
130
 
137
- // Clean up timers on unmount
131
+ // Clean up timers on unmount and pan to home on animation complete
138
132
  useEffect(() => {
139
133
  if (animationStage < 2) return;
140
- handlePan(CanvasSection.Home);
134
+ if (homeItem) {
135
+ handlePan(homeItem);
136
+ }
141
137
  return () => {
142
138
  if (panTimeout.current) clearTimeout(panTimeout.current);
143
139
  if (debounceCooldownTimeout.current)
144
140
  clearTimeout(debounceCooldownTimeout.current);
145
141
  };
146
- }, [handlePan, animationStage]);
142
+ }, [handlePan, animationStage, homeItem]);
147
143
 
148
144
  return (
149
145
  <div
@@ -163,48 +159,16 @@ export default function Navbar({
163
159
  <div className="px-4 md:px-8">
164
160
  <motion.div className="flex select-none items-center justify-center gap-1 rounded-[10px] border-[1px] border-border bg-canvas-offwhite p-1 shadow-[0_6px_12px_rgba(0,0,0,0.10)]">
165
161
  <div className="flex items-center gap-1">
166
- <SingleButton
167
- label="Home"
168
- icon="Home"
169
- onClick={() => handlePan(CanvasSection.Home)}
170
- isPushed={expandedButton === CanvasSection.Home}
171
- onDebouncedClick={handleDebouncedClick}
172
- />
173
- <SingleButton
174
- label="About"
175
- icon="Info"
176
- onClick={() => handlePan(CanvasSection.About)}
177
- isPushed={expandedButton === CanvasSection.About}
178
- onDebouncedClick={handleDebouncedClick}
179
- />
180
- <SingleButton
181
- label="Projects"
182
- icon="LayoutDashboard"
183
- onClick={() => handlePan(CanvasSection.Projects)}
184
- isPushed={expandedButton === CanvasSection.Projects}
185
- onDebouncedClick={handleDebouncedClick}
186
- />
187
- <SingleButton
188
- label="Sponsors"
189
- icon="Handshake"
190
- onClick={() => handlePan(CanvasSection.Sponsors)}
191
- isPushed={expandedButton === CanvasSection.Sponsors}
192
- onDebouncedClick={handleDebouncedClick}
193
- />
194
- <SingleButton
195
- label="FAQ"
196
- icon="HelpCircle"
197
- onClick={() => handlePan(CanvasSection.FAQ)}
198
- isPushed={expandedButton === CanvasSection.FAQ}
199
- onDebouncedClick={handleDebouncedClick}
200
- />
201
- <SingleButton
202
- label="Team"
203
- icon="Users"
204
- onClick={() => handlePan(CanvasSection.Team)}
205
- isPushed={expandedButton === CanvasSection.Team}
206
- onDebouncedClick={handleDebouncedClick}
207
- />
162
+ {items.map((item) => (
163
+ <SingleButton
164
+ key={item.id}
165
+ label={item.label}
166
+ icon={item.icon}
167
+ onClick={() => handlePan(item)}
168
+ isPushed={expandedButton === item.id}
169
+ onDebouncedClick={handleDebouncedClick}
170
+ />
171
+ ))}
208
172
  </div>
209
173
  </motion.div>
210
174
  </div>
@@ -2,39 +2,37 @@ import { useState, useEffect } from "react";
2
2
  import * as LucideIcons from "lucide-react";
3
3
  import { AnimatePresence, motion } from "framer-motion";
4
4
 
5
- type IconName = keyof typeof LucideIcons;
6
-
7
5
  interface SingleButtonProps {
8
6
  label: string;
9
- icon?: IconName;
10
- customIcon?: React.ComponentType<{ className?: string }>;
7
+ /** Lucide icon name or a custom icon component */
8
+ icon: string | React.ComponentType<{ className?: string }>;
11
9
  onClick?: () => void;
12
10
  isPushed: boolean;
13
11
  link?: string;
14
- emailAddress?: string;
15
12
  onDebouncedClick?: (callback: () => void) => void;
16
13
  }
17
14
 
18
15
  export default function SingleButton({
19
16
  label,
20
17
  icon,
21
- customIcon,
22
18
  onClick,
23
19
  isPushed,
24
20
  link,
25
- emailAddress,
26
21
  onDebouncedClick,
27
22
  }: SingleButtonProps) {
28
23
  const [isHovered, setIsHovered] = useState(false);
29
24
  const [showTag, setShowTag] = useState(false);
30
25
  const [copiedEmail, setCopiedEmail] = useState(false);
31
- const Icon = icon ? (LucideIcons[icon] as LucideIcons.LucideIcon) : null;
32
- const CustomIcon = customIcon;
26
+ const isLucideIconName = typeof icon === "string";
27
+ const IconComponent = isLucideIconName
28
+ ? (LucideIcons[icon as keyof typeof LucideIcons] as LucideIcons.LucideIcon | undefined)
29
+ : icon;
33
30
  const TagDelay = 100;
34
31
 
35
- // Ensure either icon or customIcon is provided
36
- if (!Icon && !CustomIcon) {
37
- throw new Error("Either 'icon' or 'customIcon' prop must be provided");
32
+ if (!IconComponent) {
33
+ throw new Error(
34
+ "A valid 'icon' prop is required (Lucide icon name or custom icon component).",
35
+ );
38
36
  }
39
37
 
40
38
  useEffect(() => {
@@ -105,16 +103,10 @@ export default function SingleButton({
105
103
  {isPushed ? (
106
104
  <div className="flex items-center gap-2">
107
105
  <div>
108
- {Icon ? (
109
- <Icon
110
- className={`h-5 w-5 flex-shrink-0 ${isPushed ? "text-canvas-emphasis" : "text-canvas-medium"}`}
111
- />
112
- ) : CustomIcon ? (
113
- <CustomIcon
114
- className={`h-5 w-5 flex-shrink-0 ${isPushed ? "text-white" : "text-canvas-medium"
115
- }`}
116
- />
117
- ) : null}
106
+ <IconComponent
107
+ className={`h-5 w-5 flex-shrink-0 ${isPushed ? (isLucideIconName ? "text-canvas-emphasis" : "text-white") : "text-canvas-medium"
108
+ }`}
109
+ />
118
110
  </div>
119
111
  <motion.span
120
112
  initial={{ opacity: 0, width: 0 }}
@@ -131,17 +123,10 @@ export default function SingleButton({
131
123
  </div>
132
124
  ) : (
133
125
  <div>
134
- {Icon ? (
135
- <Icon
136
- className={`h-5 w-5 flex-shrink-0 ${isPushed ? "text-white" : "text-canvas-medium"
137
- }`}
138
- />
139
- ) : CustomIcon ? (
140
- <CustomIcon
141
- className={`h-5 w-5 flex-shrink-0 ${isPushed ? "text-white" : "text-canvas-medium"
142
- }`}
143
- />
144
- ) : null}
126
+ <IconComponent
127
+ className={`h-5 w-5 flex-shrink-0 ${isPushed ? (isLucideIconName ? "text-canvas-emphasis" : "text-white") : "text-canvas-medium"
128
+ }`}
129
+ />
145
130
  <AnimatePresence>
146
131
  {showTag && !isPushed && (
147
132
  <motion.div
package/src/index.ts CHANGED
@@ -22,5 +22,4 @@ export * from './lib/constants';
22
22
  export * from './utils/performance';
23
23
 
24
24
  // Types
25
- export type { SectionCoordinates } from './types';
26
- export { CanvasSection } from './types';
25
+ export type { SectionCoordinates, NavItem, CanvasSection } from './types';
@@ -10,11 +10,31 @@ export interface SectionCoordinates {
10
10
  height: number;
11
11
  }
12
12
 
13
- export enum CanvasSection {
14
- Home = "home",
15
- About = "about",
16
- Projects = "projects",
17
- Sponsors = "sponsors",
18
- FAQ = "faq",
19
- Team = "team",
13
+ /**
14
+ * CanvasSection is now a generic string type.
15
+ * Apps define their own section IDs as strings.
16
+ */
17
+ export type CanvasSection = string;
18
+
19
+ /**
20
+ * Configuration for a single navigation item.
21
+ * Combines section identity, display info, and coordinates.
22
+ */
23
+ export interface NavItem {
24
+ /** Unique identifier for this section */
25
+ id: string;
26
+ /** Display label shown in the navbar */
27
+ label: string;
28
+ /** Lucide icon name or a custom icon component */
29
+ icon: string | React.ComponentType<{ className?: string }>;
30
+ /** X coordinate on the canvas */
31
+ x: number;
32
+ /** Y coordinate on the canvas */
33
+ y: number;
34
+ /** Width of the section viewport */
35
+ width: number;
36
+ /** Height of the section viewport */
37
+ height: number;
38
+ /** If true, clicking this section triggers the reset/home behavior */
39
+ isHome?: boolean;
20
40
  }