Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
a39f305
feat: first FSA draft with Reactflow, the wizard definitely need some…
HongleiGu Jan 16, 2026
b9e9a30
fix: dev notice in FSA.md
HongleiGu Jan 16, 2026
675d612
fix: updated UI display, removed prompting, add information panel, ne…
HongleiGu Jan 16, 2026
da333ba
refactor: Reactflow is not so suitable for maths, changing to cytosca…
HongleiGu Jan 25, 2026
21e9a11
fix: align with the backend, can pass basic tests
HongleiGu Jan 27, 2026
3e813d7
feat: added feedback
HongleiGu Jan 28, 2026
a467516
Merge pull request #3 from HongleiGu/cytoscape
HongleiGu Jan 28, 2026
5456800
fix: remove debugging logs
HongleiGu Jan 28, 2026
897f324
Merge pull request #4 from HongleiGu/cytoscape
HongleiGu Jan 28, 2026
822f87e
feat: implement GraphQL data fetching and add live preview functional…
JohnnyWan1123 Jan 30, 2026
8b60ada
fix: style modification
HongleiGu Jan 30, 2026
107050e
Merge branch 'preview' of github.com:HongleiGu/FSA-response-area into…
HongleiGu Jan 30, 2026
ce94457
Merge pull request #5 from HongleiGu/preview
HongleiGu Jan 30, 2026
c88db1b
revert: revert back to before preview
HongleiGu Jan 30, 2026
b7c8401
Merge pull request #6 from HongleiGu/cytoscape
HongleiGu Jan 30, 2026
1370a0d
fix: styles forgetten by the revert
HongleiGu Jan 30, 2026
04a1e4d
feat: should be everything
HongleiGu Feb 1, 2026
88b141a
Merge pull request #7 from HongleiGu/cytoscape
HongleiGu Feb 2, 2026
7a15110
feat: epsilon
HongleiGu Feb 23, 2026
b0750d2
sync: sync existing content to fork
HongleiGu Feb 26, 2026
7853f04
Merge branch 'main' into sync
HongleiGu Feb 26, 2026
f54e320
feat: add paper.js hand drawing and remove some redundant UI
HongleiGu Mar 2, 2026
039630d
Merge branch 'main' of github.com:HongleiGu/FSA-response-area-sandbox
HongleiGu Mar 2, 2026
9076d2e
Merge branch 'sync' of github.com:HongleiGu/FSA-response-area-sandbox…
HongleiGu Mar 2, 2026
96cbd2e
fix: fix duplicates in package.json
HongleiGu Mar 2, 2026
ddecae2
added readme description for FSA
Ren-creater Mar 3, 2026
7bb5403
refactor(FSA): remove console.log statements from production code
Ren-creater Mar 3, 2026
a943fa8
refactor(FSA): extract magic numbers into named constants
Ren-creater Mar 3, 2026
1c72c9e
docs(FSA): add JSDoc comment to syncToBackend explaining its purpose
Ren-creater Mar 3, 2026
d58c500
docs(FSA): add TODO notes to move validation/structural logic to eval…
Ren-creater Mar 3, 2026
8d2fd36
docs(FSA): clarify conversion ownership and feedback contract in FSA.md
Ren-creater Mar 3, 2026
96d767c
Merge branch 'sync' of github.com:HongleiGu/FSA-response-area-sandbox
HongleiGu Mar 3, 2026
0082e48
feat: update Readme.md for FSA
HongleiGu Mar 4, 2026
1fb6aba
refactor: refactor out the CY_CONFIG
HongleiGu Mar 4, 2026
eb36f17
fix: unify CY display, added comments to avoid confusion
HongleiGu Mar 4, 2026
785e3fd
fix: setting the prop answer as the source of truth
HongleiGu Mar 5, 2026
14303e5
fix: removed utils.ts
HongleiGu Mar 5, 2026
dfe85a3
fix: comments in the index.tsx, please note this wont be the final ve…
HongleiGu Mar 5, 2026
aeebb8d
fix: fix label stale update
HongleiGu Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

Develop local TypeScript code to create custom response area types, and see them previewed live in the main application. When they're ready, provide your code to the Lambda Feedback team, who will consider including it in the main application after (human) review.

## FSA Response Section

please refer to [FSA.md](./FSA.md)

## Overview

To create a new response area type, you'll need to:
Expand Down
174 changes: 98 additions & 76 deletions externals/styles/fonts.tsx
Original file line number Diff line number Diff line change
@@ -1,80 +1,102 @@
import { Fira_Sans, Fira_Mono, Lato, Roboto } from 'next/font/google'
// import { Fira_Sans, Fira_Mono, Lato, Roboto } from 'next/font/google'

export const roboto = Roboto({
subsets: ['latin'],
weight: ['400', '700'],
style: ['normal', 'italic'],
fallback: [
'-apple-system',
'BlinkMacSystemFont',
'Segoe UI',
'Roboto',
'Helvetica Neue',
'Arial',
'sans-serif',
'Apple Color Emoji',
'Segoe UI Emoji',
'Segoe UI Symbol',
],
variable: '--font-roboto',
preload: false,
})
// export const roboto = Roboto({
// subsets: ['latin'],
// weight: ['400', '700'],
// style: ['normal', 'italic'],
// fallback: [
// '-apple-system',
// 'BlinkMacSystemFont',
// 'Segoe UI',
// 'Roboto',
// 'Helvetica Neue',
// 'Arial',
// 'sans-serif',
// 'Apple Color Emoji',
// 'Segoe UI Emoji',
// 'Segoe UI Symbol',
// ],
// variable: '--font-roboto',
// preload: false,
// })

export const firaSans = Fira_Sans({
subsets: ['latin'],
weight: ['300', '400', '500', '600', '700'],
style: ['normal', 'italic'],
fallback: [
'-apple-system',
'BlinkMacSystemFont',
'Segoe UI',
'Roboto',
'Helvetica Neue',
'Arial',
'sans-serif',
'Apple Color Emoji',
'Segoe UI Emoji',
'Segoe UI Symbol',
],
variable: '--font-fira-sans',
preload: false,
})
// export const firaSans = Fira_Sans({
// subsets: ['latin'],
// weight: ['300', '400', '500', '600', '700'],
// style: ['normal', 'italic'],
// fallback: [
// '-apple-system',
// 'BlinkMacSystemFont',
// 'Segoe UI',
// 'Roboto',
// 'Helvetica Neue',
// 'Arial',
// 'sans-serif',
// 'Apple Color Emoji',
// 'Segoe UI Emoji',
// 'Segoe UI Symbol',
// ],
// variable: '--font-fira-sans',
// preload: false,
// })

export const firaMono = Fira_Mono({
subsets: ['latin'],
weight: ['400'],
fallback: [
'-apple-system',
'BlinkMacSystemFont',
'Segoe UI',
'Roboto',
'Helvetica Neue',
'Arial',
'sans-serif',
'Apple Color Emoji',
'Segoe UI Emoji',
'Segoe UI Symbol',
],
variable: '--font-fira-mono',
preload: false,
})
// export const firaMono = Fira_Mono({
// subsets: ['latin'],
// weight: ['400'],
// fallback: [
// '-apple-system',
// 'BlinkMacSystemFont',
// 'Segoe UI',
// 'Roboto',
// 'Helvetica Neue',
// 'Arial',
// 'sans-serif',
// 'Apple Color Emoji',
// 'Segoe UI Emoji',
// 'Segoe UI Symbol',
// ],
// variable: '--font-fira-mono',
// preload: false,
// })

export const lato = Lato({
subsets: ['latin'],
weight: ['400'],
style: ['normal', 'italic'],
fallback: [
'-apple-system',
'BlinkMacSystemFont',
'Segoe UI',
'Roboto',
'Helvetica Neue',
'Arial',
'sans-serif',
'Apple Color Emoji',
'Segoe UI Emoji',
'Segoe UI Symbol',
],
variable: '--font-lato',
preload: false,
})
// export const lato = Lato({
// subsets: ['latin'],
// weight: ['400'],
// style: ['normal', 'italic'],
// fallback: [
// '-apple-system',
// 'BlinkMacSystemFont',
// 'Segoe UI',
// 'Roboto',
// 'Helvetica Neue',
// 'Arial',
// 'sans-serif',
// 'Apple Color Emoji',
// 'Segoe UI Emoji',
// 'Segoe UI Symbol',
// ],
// variable: '--font-lato',
// preload: false,
// })

// please see the sandbox issue #2 for this

export const firaSans = {
className: 'font-fira-sans',
style: { fontFamily: 'Fira Sans, sans-serif' },
}

export const firaMono = {
className: 'font-fira-mono',
style: { fontFamily: 'Fira Mono, monospace' },
}

export const lato = {
className: 'font-lato',
style: { fontFamily: 'Lato, sans-serif' },
}

export const roboto = {
className: 'font-roboto',
style: { fontFamily: 'Roboto, sans-serif' },
}
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
"ci": "run-p format lint typecheck",
"fix": "run-s format:fix lint:fix",
"preview": "vite preview",
"dev": "run-p build:watch preview"
"dev": "run-p build:watch preview",
"dev:fsa": "vite"
},
"dependencies": {
"@date-io/date-fns": "^2.13.2",
Expand All @@ -35,6 +36,7 @@
"@nivo/core": "^0.88.0",
"@nivo/line": "^0.88.0",
"@nivo/pie": "^0.88.0",
"cytoscape": "^3.33.1",
"axios": "^1.7.2",
"date-fns": "^2.28.0",
"firebase": "^11.0.1",
Expand All @@ -49,6 +51,7 @@
"notistack": "^2.0.3",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"reactflow": "^11.11.4",
"react-dropzone": "^14.2.3",
"react-hook-form": "^7.31.2",
"react-image-crop": "^11.0.10",
Expand Down
4 changes: 3 additions & 1 deletion src/sandbox-component.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { ThemeProvider } from '@styles/minimal/theme-provider'

import { FSAResponseAreaTub } from './types/FSA'
import { SandboxResponseAreaTub } from './types/Sandbox/index'

function ResponseAreaInputWrapper({ children }: { children: React.ReactNode }) {
return <ThemeProvider>{children}</ThemeProvider>
}

// wrap the components with the necessary providers; only in the sandbox
class WrappedSandboxResponseAreaTub extends SandboxResponseAreaTub {
class WrappedSandboxResponseAreaTub extends FSAResponseAreaTub {
constructor() {
super()

Expand Down
Loading