50 ? 'black' : 'white',
- }}
+
+
+
+
+
50 ? 'black' : 'white',
+ }}
+ />
+
-
+
);
}
diff --git a/apps/palette/web/src/components/projects/ProjectCanvas.tsx b/apps/palette/web/src/components/projects/ProjectCanvas.tsx
index e63306bf..b4af3c40 100644
--- a/apps/palette/web/src/components/projects/ProjectCanvas.tsx
+++ b/apps/palette/web/src/components/projects/ProjectCanvas.tsx
@@ -22,6 +22,8 @@ import {
import { ref, useSnapshot } from 'valtio';
import { toolState } from './state.js';
import { preventDefault } from '@a-type/utils';
+import { OnboardingTooltip } from '@biscuits/client';
+import { basicsOnboarding } from '@/onboarding/basics.js';
export interface ProjectCanvasProps {
project: Project;
@@ -41,18 +43,24 @@ export function ProjectCanvas({ project, className }: ProjectCanvasProps) {
});
return (
-
-
-
- {showBubbles && !activelyPicking && }
-
-
-
+
+
+
+ {showBubbles && !activelyPicking && }
+
+
+
+
);
}
diff --git a/apps/palette/web/src/components/projects/ProjectPalette.tsx b/apps/palette/web/src/components/projects/ProjectPalette.tsx
index c62320cc..2a1046f2 100644
--- a/apps/palette/web/src/components/projects/ProjectPalette.tsx
+++ b/apps/palette/web/src/components/projects/ProjectPalette.tsx
@@ -5,6 +5,8 @@ import { useColorSelection, useSort } from './hooks.js';
import { H3 } from '@a-type/ui/components/typography';
// @ts-ignore
import { Color } from '@dynamize/color-utilities';
+import { OnboardingTooltip } from '@biscuits/client';
+import { basicsOnboarding } from '@/onboarding/basics.js';
export interface ProjectPaletteProps {
project: Project;
@@ -36,7 +38,13 @@ export function ProjectPalette({ project, className }: ProjectPaletteProps) {
return (
-
Saved Colors
+
+ Saved Colors
+
{!sorted.length && (
Click the image to select colors
diff --git a/apps/palette/web/src/components/projects/ProjectsList.tsx b/apps/palette/web/src/components/projects/ProjectsList.tsx
index 52e58799..01eab76d 100644
--- a/apps/palette/web/src/components/projects/ProjectsList.tsx
+++ b/apps/palette/web/src/components/projects/ProjectsList.tsx
@@ -1,10 +1,10 @@
import { hooks } from '@/hooks.js';
import { Project } from '@palette.biscuits/verdant';
import {
- CardRoot,
- CardMain,
- CardGrid,
- CardImage,
+ CardRoot,
+ CardMain,
+ CardGrid,
+ CardImage,
} from '@a-type/ui/components/card';
import { InfiniteLoadTrigger } from '@a-type/ui/components/infiniteLoadTrigger';
import { Link } from '@verdant-web/react-router';
@@ -12,35 +12,35 @@ import { Link } from '@verdant-web/react-router';
export interface ProjectsListProps {}
export function ProjectsList({}: ProjectsListProps) {
- const [items, { hasMore, loadMore }] = hooks.useAllProjectsInfinite({
- index: {
- where: 'createdAt',
- order: 'desc',
- },
- pageSize: 20,
- });
+ const [items, { hasMore, loadMore }] = hooks.useAllProjectsInfinite({
+ index: {
+ where: 'createdAt',
+ order: 'desc',
+ },
+ pageSize: 20,
+ });
- return (
- <>
-
- {items.map((item, i) => (
-
- ))}
-
- {hasMore && }
- >
- );
+ return (
+ <>
+
+ {items.map((item, i) => (
+
+ ))}
+
+ {hasMore && }
+ >
+ );
}
function ProjectsListItem({ item }: { item: Project }) {
- const { id, image } = hooks.useWatch(item);
- hooks.useWatch(image);
- return (
-
-
-
-
- {image.url && }
-
- );
+ const { id, image } = hooks.useWatch(item);
+ hooks.useWatch(image);
+ return (
+
+
+
+
+ {image.url && }
+
+ );
}
diff --git a/apps/palette/web/src/onboarding/basics.ts b/apps/palette/web/src/onboarding/basics.ts
new file mode 100644
index 00000000..3a67483f
--- /dev/null
+++ b/apps/palette/web/src/onboarding/basics.ts
@@ -0,0 +1,7 @@
+import { createOnboarding } from '@biscuits/client';
+
+export const basicsOnboarding = createOnboarding(
+ 'basics',
+ ['intro', 'bubbles', 'color', 'palette'],
+ true,
+);
diff --git a/apps/palette/web/src/pages/HomePage.tsx b/apps/palette/web/src/pages/HomePage.tsx
index bddbe283..dc547ecc 100644
--- a/apps/palette/web/src/pages/HomePage.tsx
+++ b/apps/palette/web/src/pages/HomePage.tsx
@@ -1,7 +1,8 @@
import { CreateProject } from '@/components/projects/CreateProject.jsx';
import { ProjectsList } from '@/components/projects/ProjectsList.jsx';
+import { basicsOnboarding } from '@/onboarding/basics.js';
import { PageContent, PageFixedArea } from '@a-type/ui/components/layouts';
-import { usePageTitle, UserMenu } from '@biscuits/client';
+import { OnboardingBanner, usePageTitle, UserMenu } from '@biscuits/client';
export interface HomePageProps {}
@@ -15,6 +16,14 @@ export function HomePage({}: HomePageProps) {
+
+ Palette is a painting tool which helps you analyze colors in reference
+ photos. Add an image to start a new project.
+