Path: blob/master/src/packages/frontend/account/tours.tsx
6011 views
// cSpell:ignore fullpage12import { Space } from "antd";3import { ReactNode } from "react";45import { Panel, Switch } from "@cocalc/frontend/antd-bootstrap";6import { redux, useRedux } from "@cocalc/frontend/app-framework";7import { Icon } from "@cocalc/frontend/components/icon";89const TOUR_NAMES = {10projects: "Projects",11"chatgpt-title-bar-button": "ChatGPT Button",12explorer: "File Explorer",13"frame-terminal": "Linux Terminal",14"flyout-fullpage": "Fullpage Flyout",15} as const;1617export type TourName = keyof typeof TOUR_NAMES;1819export default function Tours() {20const tours = useRedux("account", "tours");21const v: ReactNode[] = [];22for (const name in TOUR_NAMES) {23v.push(24<Switch25key={name}26checked={tours?.includes(name) || tours?.includes("all")}27onChange={(e) => {28const actions = redux.getActions("account");29if (e.target.checked) {30actions.setTourDone(name);31} else {32actions.setTourNotDone(name);33}34}}35>36{TOUR_NAMES[name]}37</Switch>,38);39}40return (41<Panel42size={"small"}43header={44<span>45<Icon name="map" /> Completed Tours46</span>47}48>49<Space wrap>{v}</Space>50</Panel>51);52}535455