diff --git a/apps/client/.vscode/settings.json b/apps/client/.vscode/settings.json
index 671a888..5a688de 100644
--- a/apps/client/.vscode/settings.json
+++ b/apps/client/.vscode/settings.json
@@ -21,5 +21,15 @@
"files.exclude": {
"dist/": true,
".tamagui": true
+ },
+ "explorer.fileNesting.enabled": true,
+ "explorer.fileNesting.patterns": {
+ "package.json": "package-lock.json, yarn.lock, .yarnrc.yml, cspell.config.yaml, biome.json, LICENSE, .gitignore, README.md",
+ ".env.example": ".env",
+ "tsconfig.json": "vite-env.d.ts, vitest.shims.d.ts",
+ "index.tsx": "stories.tsx",
+ "*.js": "${capture}.js.map, ${capture}.d.ts, ${capture}.d.ts.map",
+ "*.ts": "$(capture).test.ts, $(capture).test.tsx, $(capture).test.node.ts, $(capture).test.node.tsx, $(capture).test.native.ts, $(capture).test.native.tsx, $(capture).test.ios.ts, $(capture).test.ios.tsx, $(capture).test.web.ts, $(capture).test.web.tsx, $(capture).test.android.ts, $(capture).test.android.tsx, ${capture}.native.tsx, ${capture}.ios.tsx, ${capture}.android.tsx, ${capture}.web.tsx, ${capture}.native.ts, ${capture}.ios.ts, ${capture}.android.ts, ${capture}.web.ts, ${capture}.native.js, ${capture}.ios.js, ${capture}.android.js, ${capture}.web.js, ${capture}.native.jsx, ${capture}.ios.jsx, ${capture}.android.jsx, ${capture}.web.jsx, ${capture}.stories.tsx, ${capture}.story.tsx, ${capture}.stories.ts, ${capture}.stories.jsx, ${capture}.stories.js",
+ "*.tsx": "$(capture).test.ts, $(capture).test.tsx, $(capture).test.node.ts, $(capture).test.node.tsx, $(capture).test.native.ts, $(capture).test.native.tsx, $(capture).test.ios.ts, $(capture).test.ios.tsx, $(capture).test.web.ts, $(capture).test.web.tsx, $(capture).test.android.ts, $(capture).test.android.tsx, ${capture}.native.tsx, ${capture}.ios.tsx, ${capture}.android.tsx, ${capture}.web.tsx, ${capture}.native.ts, ${capture}.ios.ts, ${capture}.android.ts, ${capture}.web.ts, ${capture}.native.js, ${capture}.ios.js, ${capture}.android.js, ${capture}.web.js, ${capture}.native.jsx, ${capture}.ios.jsx, ${capture}.android.jsx, ${capture}.web.jsx, ${capture}.stories.tsx, ${capture}.stories.ts, ${capture}.stories.jsx, ${capture}.stories.js"
}
}
diff --git a/apps/client/app.config.ts b/apps/client/app.config.ts
index 94b4df8..113c822 100644
--- a/apps/client/app.config.ts
+++ b/apps/client/app.config.ts
@@ -1,4 +1,4 @@
-import { type GenericParserBuilder, parseAsString } from "nuqs"
+import { type GenericParserBuilder, parseAsBoolean, parseAsString } from "nuqs"
import { codeGlueLight } from "./src/design/editorThemes"
@@ -40,6 +40,9 @@ export const appConfig = {
defaultFontSize: 14,
font: "Monaspace Krypton",
},
+ queries: {
+ settings: parseAsBoolean.withDefault(false),
+ },
routes: {
home: { title: "Logs" }, // home is a special route name that will show without params in the URL
automations: {
@@ -57,6 +60,7 @@ export const sectionIds = Object.keys(appConfig.routes) as Array<
keyof typeof appConfig.routes
>
+export type QueryIds = keyof typeof appConfig.queries
export type SectionIds = keyof typeof appConfig.routes
export type SectionTitles =
(typeof appConfig.routes)[keyof typeof appConfig.routes]["title"]
diff --git a/apps/client/src/hooks/useQuery.ts b/apps/client/src/hooks/useQuery.ts
new file mode 100644
index 0000000..3fd8112
--- /dev/null
+++ b/apps/client/src/hooks/useQuery.ts
@@ -0,0 +1,7 @@
+import { useQueryState } from "nuqs"
+
+import { appConfig, type QueryIds } from "@/config"
+
+export function useQuery(queryId: QueryIds) {
+ return useQueryState(queryId, appConfig.queries[queryId])
+}
diff --git a/apps/client/src/pages/Frame/Nav.tsx b/apps/client/src/pages/Frame/Nav.tsx
index be69d3b..194cb63 100644
--- a/apps/client/src/pages/Frame/Nav.tsx
+++ b/apps/client/src/pages/Frame/Nav.tsx
@@ -1,47 +1,59 @@
import { useSnapshot } from "valtio"
import { Button, Column, Icon, List, ListItem } from "@code-glue/paradigm"
+import { useQuery } from "@/hooks/useQuery"
import { useRouter } from "@/hooks/useRouter"
import { store } from "@/store"
import { CreateAutomation } from "../../components/CreateAutomation"
import { Header } from "../../components/Header"
+import { Settings } from "./Settings"
export const Nav = () => {
const { automations } = useSnapshot(store)
-
const [{ route, automationId }, navigateTo] = useRouter()
+ const [isSettings, setIsSettings] = useQuery("settings")
return (
-
+
-
-
- navigateTo("home")}
- />
-
-
-
- {Array.from(automations, ([, automation]) => {
- return (
- {
- navigateTo("automations", { automationId: automation.id })
- }}
- />
- )
- })}
-
-
+ {isSettings ? (
+
+ ) : (
+
+
+ navigateTo("home")}
+ />
+
+
+
+ {Array.from(automations, ([, automation]) => {
+ return (
+ {
+ navigateTo("automations", { automationId: automation.id })
+ }}
+ />
+ )
+ })}
+
+
+ )}
)
}
diff --git a/apps/client/src/pages/Frame/Settings.tsx b/apps/client/src/pages/Frame/Settings.tsx
new file mode 100644
index 0000000..d8fe718
--- /dev/null
+++ b/apps/client/src/pages/Frame/Settings.tsx
@@ -0,0 +1,22 @@
+import { Column, Text } from "@code-glue/paradigm"
+
+export const Settings = () => {
+ return (
+
+ Settings
+ Appearance (Dark/light/system) dropdown
+ ------
+ Editor Theme (dropdown)
+ Typeface (dropdown)
+ Font Size (slider)
+ Width (slider)
+ Weight (slider)
+ ------
+ Console Theme (dropdown)
+ Typeface (dropdown)
+ Font Size (slider)
+ Width (slider)
+ Weight (slider)
+
+ )
+}
diff --git a/apps/client/src/pages/Settings.tsx b/apps/client/src/pages/Settings.tsx
deleted file mode 100644
index e69de29..0000000
diff --git a/package.json b/package.json
index 0901320..9c7d4cd 100644
--- a/package.json
+++ b/package.json
@@ -17,10 +17,10 @@
"typecheck": "yarn workspaces foreach -Avi run typecheck",
"clean": "sh ./scripts/clean.sh"
},
- "packageManager": "yarn@4.10.3",
+ "packageManager": "yarn@4.12.0",
"volta": {
"node": "22.12.0",
- "yarn": "4.10.3"
+ "yarn": "4.12.0"
},
"resolutions": {
"jsonpath-plus": "10.0.7",
diff --git a/packages/paradigm b/packages/paradigm
index e2fdcf8..b1fdc83 160000
--- a/packages/paradigm
+++ b/packages/paradigm
@@ -1 +1 @@
-Subproject commit e2fdcf8483141f2db6c598042e7231a1b39b6b99
+Subproject commit b1fdc83b3304c948c61ce4de129e05bbf1533c94
diff --git a/yarn.lock b/yarn.lock
index 4a797ae..5c3b156 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -652,18 +652,18 @@ __metadata:
languageName: node
linkType: hard
-"@chromatic-com/storybook@npm:^4.1.2":
- version: 4.1.3
- resolution: "@chromatic-com/storybook@npm:4.1.3"
+"@chromatic-com/storybook@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "@chromatic-com/storybook@npm:5.0.0"
dependencies:
"@neoconfetti/react": "npm:^1.0.0"
- chromatic: "npm:^13.3.3"
+ chromatic: "npm:^13.3.4"
filesize: "npm:^10.0.12"
jsonfile: "npm:^6.1.0"
strip-ansi: "npm:^7.1.0"
peerDependencies:
- storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0
- checksum: 10/e5f33dc69442f4173cd76e8a5527d6b8a8e8c3870bd2483c2460a5e48bef5ca35b7f2b0c81209dcb10c83a8cbb629230d8a989d9a2328aa01ade8f4209e30dd1
+ storybook: ^0.0.0-0 || ^10.1.0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0
+ checksum: 10/4964c1086f4aaaf5a0db80063801fafd0595546e22914dff1e6e0869dad9cf9f9cae66bd41133f1bbd0d59696923ca65e9734b76ca4a6ca13f1f97e9d4286e64
languageName: node
linkType: hard
@@ -703,7 +703,7 @@ __metadata:
resolution: "@code-glue/paradigm@workspace:packages/paradigm"
dependencies:
"@biomejs/biome": "npm:2.3.11"
- "@chromatic-com/storybook": "npm:^4.1.2"
+ "@chromatic-com/storybook": "npm:^5.0.0"
"@fontsource/nunito-sans": "npm:^5.2.7"
"@storybook/addon-a11y": "npm:^10.0.7"
"@storybook/addon-docs": "npm:^10.0.7"
@@ -722,8 +722,8 @@ __metadata:
"@types/rtl-detect": "npm:^1"
"@vitejs/plugin-react": "npm:^5.0.4"
"@vitest/browser-playwright": "npm:^4.0.8"
- "@vitest/coverage-v8": "npm:^4.0.8"
- "@window-splitter/react": "npm:^1.1.2"
+ "@vitest/coverage-v8": "npm:^4.0.17"
+ "@window-splitter/react": "npm:^1.1.3"
browser-info: "npm:^1.3.0"
culori: "npm:^4.0.2"
dotenv: "npm:^17.2.3"
@@ -6120,7 +6120,7 @@ __metadata:
languageName: node
linkType: hard
-"@vitest/coverage-v8@npm:^4.0.8":
+"@vitest/coverage-v8@npm:^4.0.17":
version: 4.0.17
resolution: "@vitest/coverage-v8@npm:4.0.17"
dependencies:
@@ -6272,35 +6272,35 @@ __metadata:
languageName: node
linkType: hard
-"@window-splitter/interface@npm:1.1.2":
- version: 1.1.2
- resolution: "@window-splitter/interface@npm:1.1.2"
+"@window-splitter/interface@npm:1.1.3":
+ version: 1.1.3
+ resolution: "@window-splitter/interface@npm:1.1.3"
dependencies:
- "@window-splitter/state": "npm:1.1.2"
- checksum: 10/e82ae1ce08e655ab573b44522a06f0b9dd46631ceba888e791ecbee337b826f4184119b21e20be84df771185c9b1a90a7d56a122f56bbbbc4edf84527a5b9453
+ "@window-splitter/state": "npm:1.1.3"
+ checksum: 10/bf756c4c615852634231c0ccc132293d496189e33d9bee24a7809c336f33ac88aa455ec16e243f1e34e4bee7d60903f75dac0ed35c6d449a57055a97f2ceca8d
languageName: node
linkType: hard
-"@window-splitter/react@npm:^1.1.2":
- version: 1.1.2
- resolution: "@window-splitter/react@npm:1.1.2"
+"@window-splitter/react@npm:^1.1.3":
+ version: 1.1.3
+ resolution: "@window-splitter/react@npm:1.1.3"
dependencies:
"@react-aria/utils": "npm:^3.28.2"
- "@window-splitter/interface": "npm:1.1.2"
- "@window-splitter/state": "npm:1.1.2"
+ "@window-splitter/interface": "npm:1.1.3"
+ "@window-splitter/state": "npm:1.1.3"
peerDependencies:
react: ">=16"
react-dom: ">=16"
- checksum: 10/7bb57f32fae8cbf9d2f73c9150151ca5077f5ff8965f1ae0575da92286c15f2db752a007890b96a0f12f239c5ed28a8bffdbd4c3e62e7249678faa1ca278b38e
+ checksum: 10/1cc4a117213cd6e2552ded3ae8621bd2c3898f1124cfd16326b108d6f5a34a006555fc76548dbb7575ebdeefef92d8bf80810b4275fff3c5e4dea59db3253e40
languageName: node
linkType: hard
-"@window-splitter/state@npm:1.1.2":
- version: 1.1.2
- resolution: "@window-splitter/state@npm:1.1.2"
+"@window-splitter/state@npm:1.1.3":
+ version: 1.1.3
+ resolution: "@window-splitter/state@npm:1.1.3"
dependencies:
big.js: "npm:^6.2.1"
- checksum: 10/f8bbe2be158af3a48381bbfb4e32271ea145287cdf76ebad2757425a76e4b18d88bd31e39c13e44f6a8e29059336e253fbb43c56917f106d5011367fa84b1752
+ checksum: 10/dd6939a4efa6f19441e133c5acfd57ccb20f4419aded810068c9be3f203bdd94571da9b8c44b1111c32558da6a33e0bb40404f058e69e5f2164860c64dfa1b5f
languageName: node
linkType: hard
@@ -7207,7 +7207,7 @@ __metadata:
languageName: node
linkType: hard
-"chromatic@npm:^13.3.3":
+"chromatic@npm:^13.3.4":
version: 13.3.5
resolution: "chromatic@npm:13.3.5"
peerDependencies:
@@ -12266,11 +12266,11 @@ __metadata:
linkType: hard
"node-abi@npm:^3.3.0":
- version: 3.85.0
- resolution: "node-abi@npm:3.85.0"
+ version: 3.86.0
+ resolution: "node-abi@npm:3.86.0"
dependencies:
semver: "npm:^7.3.5"
- checksum: 10/1d0fb9e7922431663db700aa7087c0e49bae5fd041efe2d7463d808e58be1594af8046e835fe1b17ca69f214b6327e89fb0dd5192f0e7a9bf624f5509a9104b7
+ checksum: 10/e1b5ed8fdca91d1d39bebb5d6394e51a02266cb4d952d21bd7b55c87e38b94f3cf7fc6162c52cf8d14a4a8aab691469fb87e10a6b0d6235685f0e3a0bf8bd6e2
languageName: node
linkType: hard