Skip to content

Commit d6b8534

Browse files
committed
feat: new onboarding skeleton
1 parent 998a9a9 commit d6b8534

8 files changed

Lines changed: 956 additions & 687 deletions

File tree

src/ColorPicker.jsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useState, useEffect, useRef, useCallback } from 'react';
22
import { Palette } from 'lucide-react';
3+
import { cssColorToHex } from './utils/colorUtils';
34

45
const ColorPicker = ({
56
isVisible,
@@ -64,12 +65,17 @@ const ColorPicker = ({
6465

6566
// Initialize with current color
6667
useEffect(() => {
67-
if (currentColor && currentColor.startsWith('#')) {
68-
const hsv = hexToHsv(currentColor);
69-
setSelectedHue(hsv.h);
70-
setSelectedSaturation(Math.round(hsv.s * 100));
71-
setSelectedBrightness(Math.round(hsv.v * 100));
72-
setHexInput(currentColor);
68+
if (currentColor) {
69+
// Normalize color (handle CSS names, 3-digit hex, etc.)
70+
const normalizedColor = cssColorToHex(currentColor);
71+
72+
if (normalizedColor && normalizedColor.startsWith('#')) {
73+
const hsv = hexToHsv(normalizedColor);
74+
setSelectedHue(hsv.h);
75+
setSelectedSaturation(Math.round(hsv.s * 100));
76+
setSelectedBrightness(Math.round(hsv.v * 100));
77+
setHexInput(normalizedColor);
78+
}
7379
}
7480
}, [currentColor, hexToHsv]);
7581

src/NodeCanvas.jsx

Lines changed: 169 additions & 168 deletions
Large diffs are not rendered by default.

src/RedstringMenu.jsx

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,30 @@ const RedstringMenu = ({
263263
onMouseEnter={handleTopLevelSubmenuEnter}
264264
onMouseLeave={handleTopLevelMenuLeave}
265265
>
266-
{/* Universe operations removed - UniverseManager eliminated */}
266+
{/* Workspace operations */}
267+
<div
268+
className="submenu-item"
269+
onMouseEnter={handleRegularSubmenuItemHover}
270+
onClick={async () => {
271+
try {
272+
const { pickFolder } = await import('./utils/fileAccessAdapter.js');
273+
const { storeFolderHandle } = await import('./services/folderPersistence.js');
274+
275+
const folderHandle = await pickFolder();
276+
if (folderHandle) {
277+
await storeFolderHandle(folderHandle);
278+
console.log('[RedstringMenu] Workspace folder changed');
279+
window.location.reload();
280+
}
281+
} catch (error) {
282+
console.error('[RedstringMenu] Failed to change workspace folder:', error);
283+
}
284+
}}
285+
style={{ cursor: 'pointer' }}
286+
>
287+
<FolderOpen size={16} style={{ marginRight: '8px', minWidth: '16px', flexShrink: 0 }} />
288+
Change Workspace Folder...
289+
</div>
267290
<div
268291
className="submenu-item"
269292
onMouseEnter={handleRegularSubmenuItemHover}

0 commit comments

Comments
 (0)