synthos 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/default-pages/elevenlabs_effects_studio/chat-history.json +1 -0
- package/default-pages/elevenlabs_effects_studio/page.html +1345 -1363
- package/default-pages/elevenlabs_effects_studio/page.json +13 -11
- package/default-pages/elevenlabs_voice_studio/chat-history.json +1 -0
- package/default-pages/elevenlabs_voice_studio/page.html +782 -801
- package/default-pages/elevenlabs_voice_studio/page.json +13 -11
- package/default-pages/json_tools/chat-history.json +1 -0
- package/default-pages/json_tools/page.html +70 -90
- package/default-pages/json_tools/page.json +12 -10
- package/default-pages/my_notes/chat-history.json +1 -0
- package/default-pages/my_notes/page.html +115 -131
- package/default-pages/my_notes/page.json +14 -12
- package/default-pages/neon_asteroids/chat-history.json +1 -0
- package/default-pages/neon_asteroids/page.html +1777 -1803
- package/default-pages/neon_asteroids/page.json +14 -12
- package/default-pages/oregon_trail/chat-history.json +1 -0
- package/default-pages/oregon_trail/page.html +290 -307
- package/default-pages/oregon_trail/page.json +14 -12
- package/default-pages/solar_explorer/chat-history.json +1 -0
- package/default-pages/solar_explorer/page.html +1929 -1951
- package/default-pages/solar_explorer/page.json +14 -12
- package/default-pages/solar_tutorial/chat-history.json +1 -0
- package/default-pages/solar_tutorial/page.html +464 -478
- package/default-pages/solar_tutorial/page.json +12 -10
- package/default-pages/us_map/chat-history.json +1 -0
- package/default-pages/us_map/page.html +170 -193
- package/default-pages/us_map/page.json +14 -12
- package/default-pages/us_map/page.light.png +0 -0
- package/default-pages/us_map_1850/chat-history.json +1 -0
- package/default-pages/us_map_1850/page.html +302 -326
- package/default-pages/us_map_1850/page.json +14 -12
- package/default-pages/western_cities_1850/chat-history.json +1 -0
- package/default-pages/western_cities_1850/page.html +503 -527
- package/default-pages/western_cities_1850/page.json +14 -12
- package/default-themes/aurora-dawn.v3.css +15 -14
- package/default-themes/aurora-dusk.v3.css +26 -26
- package/default-themes/cosmos-dawn.v3.css +15 -14
- package/default-themes/cosmos-dusk.v3.css +26 -26
- package/default-themes/elemental-dawn.v3.css +200 -0
- package/default-themes/nebula-dawn.v3.css +15 -14
- package/default-themes/nebula-dusk.v3.css +24 -24
- package/default-themes/solar-flare-dawn.v3.css +15 -14
- package/default-themes/solar-flare-dusk.v3.css +26 -26
- package/dist/builders/anthropic.d.ts +26 -2
- package/dist/builders/anthropic.d.ts.map +1 -1
- package/dist/builders/anthropic.js +132 -31
- package/dist/builders/anthropic.js.map +1 -1
- package/dist/builders/claudecode.d.ts +13 -0
- package/dist/builders/claudecode.d.ts.map +1 -0
- package/dist/builders/claudecode.js +253 -0
- package/dist/builders/claudecode.js.map +1 -0
- package/dist/builders/index.d.ts +2 -1
- package/dist/builders/index.d.ts.map +1 -1
- package/dist/builders/index.js +8 -1
- package/dist/builders/index.js.map +1 -1
- package/dist/builders/openai.js +2 -1
- package/dist/builders/openai.js.map +1 -1
- package/dist/builders/types.d.ts +31 -7
- package/dist/builders/types.d.ts.map +1 -1
- package/dist/builders/types.js +60 -28
- package/dist/builders/types.js.map +1 -1
- package/dist/connectors/types.d.ts +8 -0
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +13 -6
- package/dist/init.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +161 -14
- package/dist/migrations.js.map +1 -1
- package/dist/models/anthropic.d.ts +1 -0
- package/dist/models/anthropic.d.ts.map +1 -1
- package/dist/models/anthropic.js +129 -29
- package/dist/models/anthropic.js.map +1 -1
- package/dist/models/chainOfThought.d.ts.map +1 -1
- package/dist/models/chainOfThought.js +32 -19
- package/dist/models/chainOfThought.js.map +1 -1
- package/dist/models/index.d.ts +2 -2
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/providers.d.ts +1 -0
- package/dist/models/providers.d.ts.map +1 -1
- package/dist/models/providers.js +12 -4
- package/dist/models/providers.js.map +1 -1
- package/dist/models/types.d.ts +15 -1
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js.map +1 -1
- package/dist/pages.d.ts +57 -8
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +258 -45
- package/dist/pages.js.map +1 -1
- package/dist/service/createCompletePrompt.d.ts.map +1 -1
- package/dist/service/createCompletePrompt.js +5 -0
- package/dist/service/createCompletePrompt.js.map +1 -1
- package/dist/service/mediaCache.d.ts +36 -0
- package/dist/service/mediaCache.d.ts.map +1 -0
- package/dist/service/mediaCache.js +182 -0
- package/dist/service/mediaCache.js.map +1 -0
- package/dist/service/pageValidator.d.ts +25 -0
- package/dist/service/pageValidator.d.ts.map +1 -0
- package/dist/service/pageValidator.js +315 -0
- package/dist/service/pageValidator.js.map +1 -0
- package/dist/service/server.d.ts.map +1 -1
- package/dist/service/server.js +4 -0
- package/dist/service/server.js.map +1 -1
- package/dist/service/sharedTableSchema.d.ts +73 -0
- package/dist/service/sharedTableSchema.d.ts.map +1 -0
- package/dist/service/sharedTableSchema.js +206 -0
- package/dist/service/sharedTableSchema.js.map +1 -0
- package/dist/service/transformPage.d.ts +49 -11
- package/dist/service/transformPage.d.ts.map +1 -1
- package/dist/service/transformPage.js +354 -241
- package/dist/service/transformPage.js.map +1 -1
- package/dist/service/useApiRoutes.d.ts.map +1 -1
- package/dist/service/useApiRoutes.js +288 -34
- package/dist/service/useApiRoutes.js.map +1 -1
- package/dist/service/useConnectorRoutes.d.ts.map +1 -1
- package/dist/service/useConnectorRoutes.js +170 -32
- package/dist/service/useConnectorRoutes.js.map +1 -1
- package/dist/service/useDataRoutes.d.ts.map +1 -1
- package/dist/service/useDataRoutes.js +59 -2
- package/dist/service/useDataRoutes.js.map +1 -1
- package/dist/service/useExtractRoutes.d.ts +4 -0
- package/dist/service/useExtractRoutes.d.ts.map +1 -0
- package/dist/service/useExtractRoutes.js +304 -0
- package/dist/service/useExtractRoutes.js.map +1 -0
- package/dist/service/usePageRoutes.d.ts +17 -0
- package/dist/service/usePageRoutes.d.ts.map +1 -1
- package/dist/service/usePageRoutes.js +1385 -483
- package/dist/service/usePageRoutes.js.map +1 -1
- package/dist/service/useSharedDataRoutes.d.ts.map +1 -1
- package/dist/service/useSharedDataRoutes.js +54 -2
- package/dist/service/useSharedDataRoutes.js.map +1 -1
- package/dist/settings.d.ts +27 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +40 -1
- package/dist/settings.js.map +1 -1
- package/dist/themes.d.ts +0 -5
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js +3 -95
- package/dist/themes.js.map +1 -1
- package/migration-rules/v2-to-v3.md +277 -119
- package/package.json +5 -1
- package/{default-pages/application → required-pages/_shell}/page.html +56 -42
- package/required-pages/_shell/page.json +14 -0
- package/required-pages/_starters/page.html +534 -0
- package/required-pages/_starters/page.json +12 -0
- package/required-pages/builder/page.html +353 -43
- package/required-pages/builder/page.json +12 -10
- package/required-pages/pages/page.html +697 -924
- package/required-pages/pages/page.json +12 -10
- package/required-pages/settings/page.html +1879 -1753
- package/required-pages/settings/page.json +12 -10
- package/required-pages/synthos_apis/page.html +834 -845
- package/required-pages/synthos_apis/page.json +12 -10
- package/required-pages/synthos_scripts/page.html +74 -88
- package/required-pages/synthos_scripts/page.json +12 -10
- package/scripts/append-instructions.py +90 -0
- package/scripts/audit-instructions.py +76 -0
- package/scripts/cleanup-shell-markup.mjs +112 -0
- package/service-connectors/buffer/connector.json +46 -0
- package/service-connectors/canva/connector.json +67 -0
- package/service-connectors/elevenlabs/connector.json +1 -1
- package/src/builders/anthropic.ts +150 -25
- package/src/builders/claudecode.ts +310 -0
- package/src/builders/index.ts +7 -1
- package/src/builders/openai.ts +2 -1
- package/src/builders/types.ts +93 -32
- package/src/connectors/types.ts +8 -0
- package/src/init.ts +13 -7
- package/src/migrations.ts +187 -16
- package/src/models/anthropic.ts +140 -30
- package/src/models/chainOfThought.ts +33 -18
- package/src/models/index.ts +2 -2
- package/src/models/providers.ts +10 -1
- package/src/models/types.ts +21 -1
- package/src/pages.ts +271 -35
- package/src/service/createCompletePrompt.ts +6 -0
- package/src/service/mediaCache.ts +206 -0
- package/src/service/pageValidator.ts +337 -0
- package/src/service/server.ts +4 -0
- package/src/service/sharedTableSchema.ts +236 -0
- package/src/service/transformPage.ts +370 -260
- package/src/service/useApiRoutes.ts +282 -32
- package/src/service/useConnectorRoutes.ts +189 -34
- package/src/service/useDataRoutes.ts +198 -116
- package/src/service/useExtractRoutes.ts +331 -0
- package/src/service/usePageRoutes.ts +1411 -394
- package/src/service/useSharedDataRoutes.ts +184 -109
- package/src/settings.ts +65 -0
- package/src/themes.ts +78 -180
- package/starters/blank_starter/chat-history.json +1 -0
- package/starters/blank_starter/page.dark.png +0 -0
- package/starters/blank_starter/page.html +47 -0
- package/starters/blank_starter/page.json +13 -0
- package/starters/blank_starter/page.light.png +0 -0
- package/starters/calculator_starter/chat-history.json +1 -0
- package/starters/calculator_starter/page.dark.png +0 -0
- package/starters/calculator_starter/page.html +232 -0
- package/starters/calculator_starter/page.json +13 -0
- package/starters/calculator_starter/page.light.png +0 -0
- package/starters/calendar_starter/chat-history.json +1 -0
- package/starters/calendar_starter/page.dark.png +0 -0
- package/starters/calendar_starter/page.html +495 -0
- package/starters/calendar_starter/page.json +13 -0
- package/starters/calendar_starter/page.light.png +0 -0
- package/starters/chat_starter/chat-history.json +1 -0
- package/starters/chat_starter/page.dark.png +0 -0
- package/starters/chat_starter/page.html +351 -0
- package/starters/chat_starter/page.json +13 -0
- package/starters/chat_starter/page.light.png +0 -0
- package/starters/checklist_starter/chat-history.json +1 -0
- package/starters/checklist_starter/page.dark.png +0 -0
- package/starters/checklist_starter/page.html +437 -0
- package/starters/checklist_starter/page.json +13 -0
- package/starters/checklist_starter/page.light.png +0 -0
- package/starters/dashboard_starter/chat-history.json +1 -0
- package/starters/dashboard_starter/page.dark.png +0 -0
- package/starters/dashboard_starter/page.html +195 -0
- package/starters/dashboard_starter/page.json +13 -0
- package/starters/dashboard_starter/page.light.png +0 -0
- package/starters/form_starter/chat-history.json +1 -0
- package/starters/form_starter/page.dark.png +0 -0
- package/starters/form_starter/page.html +313 -0
- package/starters/form_starter/page.json +13 -0
- package/starters/form_starter/page.light.png +0 -0
- package/starters/gallery_starter/chat-history.json +1 -0
- package/starters/gallery_starter/page.dark.png +0 -0
- package/starters/gallery_starter/page.html +418 -0
- package/starters/gallery_starter/page.json +13 -0
- package/starters/gallery_starter/page.light.png +0 -0
- package/starters/generator_starter/chat-history.json +1 -0
- package/starters/generator_starter/page.dark.png +0 -0
- package/starters/generator_starter/page.html +261 -0
- package/starters/generator_starter/page.json +13 -0
- package/starters/generator_starter/page.light.png +0 -0
- package/starters/index.html +538 -0
- package/starters/kanban_starter/chat-history.json +1 -0
- package/starters/kanban_starter/page.dark.png +0 -0
- package/starters/kanban_starter/page.html +432 -0
- package/starters/kanban_starter/page.json +13 -0
- package/starters/kanban_starter/page.light.png +0 -0
- package/starters/presentation_builder/chat-history.json +1 -0
- package/starters/presentation_builder/page.dark.png +0 -0
- package/starters/presentation_builder/page.html +970 -0
- package/starters/presentation_builder/page.json +15 -0
- package/starters/presentation_builder/page.light.png +0 -0
- package/starters/presentation_builder/presentation_voice/voice_config.json +9 -0
- package/starters/pulse_starter/chat-history.json +1 -0
- package/starters/pulse_starter/page.dark.png +0 -0
- package/starters/pulse_starter/page.html +698 -0
- package/starters/pulse_starter/page.json +13 -0
- package/starters/pulse_starter/page.light.png +0 -0
- package/starters/quiz_starter/chat-history.json +1 -0
- package/starters/quiz_starter/page.dark.png +0 -0
- package/starters/quiz_starter/page.html +292 -0
- package/starters/quiz_starter/page.json +13 -0
- package/starters/quiz_starter/page.light.png +0 -0
- package/starters/reference_starter/chat-history.json +1 -0
- package/starters/reference_starter/page.dark.png +0 -0
- package/starters/reference_starter/page.html +250 -0
- package/starters/reference_starter/page.json +13 -0
- package/starters/reference_starter/page.light.png +0 -0
- package/starters/retro_game_starter/chat-history.json +1 -0
- package/starters/retro_game_starter/page.dark.png +0 -0
- package/{default-pages → starters}/retro_game_starter/page.html +1281 -1308
- package/starters/retro_game_starter/page.json +15 -0
- package/starters/retro_game_starter/page.light.png +0 -0
- package/starters/roster_starter/chat-history.json +1 -0
- package/starters/roster_starter/page.dark.png +0 -0
- package/starters/roster_starter/page.html +600 -0
- package/starters/roster_starter/page.json +13 -0
- package/starters/roster_starter/page.light.png +0 -0
- package/starters/server.js +182 -0
- package/starters/start.cmd +1 -0
- package/starters/timeline_starter/chat-history.json +1 -0
- package/starters/timeline_starter/page.dark.png +0 -0
- package/starters/timeline_starter/page.html +446 -0
- package/starters/timeline_starter/page.json +13 -0
- package/starters/timeline_starter/page.light.png +0 -0
- package/starters/tutorial_starter/chat-history.json +1 -0
- package/starters/tutorial_starter/page.dark.png +0 -0
- package/starters/tutorial_starter/page.html +283 -0
- package/starters/tutorial_starter/page.json +13 -0
- package/starters/tutorial_starter/page.light.png +0 -0
- package/static-files/agent.v3.js +122 -0
- package/static-files/connector.v3.js +48 -0
- package/static-files/extract.v3.js +188 -0
- package/static-files/helpers.v3.js +50 -6
- package/static-files/page-bridge.js +114 -0
- package/static-files/page.v3.js +1292 -1290
- package/static-files/script.v3.js +32 -0
- package/static-files/server.v3.js +89 -0
- package/static-files/shell-bridge.v3.js +174 -0
- package/static-files/shell-modals.v3.js +521 -0
- package/static-files/{shell.css → shell.v3.css} +271 -22
- package/static-files/shell.v3.js +1865 -0
- package/static-files/storage.v3.js +176 -0
- package/tests/anthropic.spec.ts +42 -7
- package/tests/builders.spec.ts +70 -2
- package/tests/pageValidator.spec.ts +548 -0
- package/tests/profiles.spec.ts +122 -0
- package/tests/sharedTableSchema.spec.ts +242 -0
- package/tests/transformPage.spec.ts +62 -81
- package/default-pages/application/page.json +0 -10
- package/default-pages/retro_game_starter/page.json +0 -12
- package/default-pages/sidebar_page/page.html +0 -51
- package/default-pages/sidebar_page/page.json +0 -10
- package/default-pages/two-panel_page/page.html +0 -68
- package/default-pages/two-panel_page/page.json +0 -10
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Solar Tutorial",
|
|
3
|
-
"categories": [
|
|
4
|
-
"Tutorials"
|
|
5
|
-
],
|
|
6
|
-
"pinned": false,
|
|
7
|
-
"showInAll": true,
|
|
8
|
-
"pageVersion": 3,
|
|
9
|
-
"mode": "unlocked"
|
|
10
|
-
|
|
1
|
+
{
|
|
2
|
+
"title": "Solar Tutorial",
|
|
3
|
+
"categories": [
|
|
4
|
+
"Tutorials"
|
|
5
|
+
],
|
|
6
|
+
"pinned": false,
|
|
7
|
+
"showInAll": true,
|
|
8
|
+
"pageVersion": 3,
|
|
9
|
+
"mode": "unlocked",
|
|
10
|
+
"greeting": "Welcome to this Solar Tutorial! I'll guide you through building interactive features for this simulation of the Solar System. Let's start with something simple — click the chip below to try the first step:\n\n[Add a reverse time button](suggest:add%20a%20reverse%20time%20button%20so%20users%20can%20watch%20planets%20orbit%20backwards.)",
|
|
11
|
+
"firstRunGreeting": ""
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"role":"assistant","content":"Here's your interactive US map! You can customize it by adding data to visualize \u2014 just tell me what you'd like to overlay. Here are a couple of ideas: Population by state \u2014 color-coded choropleth showing population density; Election results \u2014 red/blue map of voting outcomes by state; Custom data \u2014 provide your own values per state (sales figures, temperatures, rankings, etc.). What data would you like to see on the map?"}]
|
|
@@ -1,193 +1,170 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head>
|
|
2
|
-
<meta charset="UTF-8">
|
|
3
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
4
|
-
<title>SynthOS</title>
|
|
5
|
-
<script id="theme-info" src="/api/theme-info.js" data-locked="true"></script>
|
|
6
|
-
<link id="theme-css" rel="stylesheet" href="/api/theme.css" data-locked="true">
|
|
7
|
-
<style>.idle-container{position:absolute;width:100%;height:100%;pointer-events:none;opacity:1;transition:opacity 1s ease-out}.idle-container.hidden{opacity:0}.breathing-orb{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:80px;height:80px;border-radius:50%;background:radial-gradient(circle,rgba(102,126,234,.15) 0,transparent 70%);animation:4s ease-in-out infinite breathe}.breathing-orb::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:rgba(183,148,246,.6);box-shadow:0 0 20px rgba(183,148,246,.4);animation:4s ease-in-out infinite core-pulse}@keyframes breathe{0%,100%{width:80px;height:80px;opacity:.3}50%{width:120px;height:120px;opacity:.6}}@keyframes core-pulse{0%,100%{opacity:.4;box-shadow:0 0 20px rgba(183,148,246,.3)}50%{opacity:.8;box-shadow:0 0 30px rgba(183,148,246,.5)}}.orbit-ring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:200px;height:200px;border:1px solid rgba(102,126,234,.1);border-radius:50%;animation:20s linear infinite orbit-rotate}.orbit-ring::after{content:'';position:absolute;top:-3px;left:50%;transform:translateX(-50%);width:6px;height:6px;background:rgba(240,147,251,.5);border-radius:50%;box-shadow:0 0 10px rgba(240,147,251,.3)}@keyframes orbit-rotate{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}</style>
|
|
8
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js"></script>
|
|
9
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/14.1.1/marked.min.js"></script>
|
|
10
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/11.1.0/mermaid.min.js"></script>
|
|
11
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
|
12
|
-
<script id="page-info" src="/api/page-info.js?page=builder"></script>
|
|
13
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/topojson/3.0.2/topojson.min.js" id="topojson-lib"></script><style id="us-map-styles">
|
|
14
|
-
#us-map-container {
|
|
15
|
-
width: 100%;
|
|
16
|
-
height: 100%;
|
|
17
|
-
display: flex;
|
|
18
|
-
flex-direction: column;
|
|
19
|
-
align-items: center;
|
|
20
|
-
justify-content: center;
|
|
21
|
-
background: var(--
|
|
22
|
-
position: relative;
|
|
23
|
-
overflow: hidden;
|
|
24
|
-
}
|
|
25
|
-
#us-map-container h2 {
|
|
26
|
-
color: var(--
|
|
27
|
-
margin: 0;
|
|
28
|
-
padding: 12px 0 4px 0;
|
|
29
|
-
font-size: 1.4rem;
|
|
30
|
-
font-weight: 600;
|
|
31
|
-
letter-spacing: 0.02em;
|
|
32
|
-
}
|
|
33
|
-
#us-map-svg {
|
|
34
|
-
width: 100%;
|
|
35
|
-
flex: 1;
|
|
36
|
-
min-height: 0;
|
|
37
|
-
}
|
|
38
|
-
#us-map-svg .state {
|
|
39
|
-
fill: var(--
|
|
40
|
-
stroke: var(--
|
|
41
|
-
stroke-width: 1;
|
|
42
|
-
cursor: pointer;
|
|
43
|
-
transition: fill 0.2s ease;
|
|
44
|
-
}
|
|
45
|
-
#us-map-svg .state:hover {
|
|
46
|
-
fill: var(--
|
|
47
|
-
}
|
|
48
|
-
#us-map-svg .state-border {
|
|
49
|
-
fill: none;
|
|
50
|
-
stroke: var(--
|
|
51
|
-
stroke-width: 1.5;
|
|
52
|
-
}
|
|
53
|
-
#us-map-svg .nation-border {
|
|
54
|
-
fill: none;
|
|
55
|
-
stroke: var(--
|
|
56
|
-
stroke-width: 1.5;
|
|
57
|
-
}
|
|
58
|
-
#map-tooltip {
|
|
59
|
-
position: absolute;
|
|
60
|
-
pointer-events: none;
|
|
61
|
-
background: var(--
|
|
62
|
-
color: var(--
|
|
63
|
-
border: 1px solid var(--
|
|
64
|
-
border-radius: 6px;
|
|
65
|
-
padding: 6px 12px;
|
|
66
|
-
font-size: 0.9rem;
|
|
67
|
-
font-weight: 500;
|
|
68
|
-
box-shadow: 0 2px 8px rgba(0,0,0,0.12);
|
|
69
|
-
opacity: 0;
|
|
70
|
-
transition: opacity 0.15s ease;
|
|
71
|
-
z-index: 10;
|
|
72
|
-
}
|
|
73
|
-
.light-mode #us-map-svg .state {
|
|
74
|
-
fill: var(--
|
|
75
|
-
stroke: var(--
|
|
76
|
-
}
|
|
77
|
-
.light-mode #us-map-svg .state:hover {
|
|
78
|
-
fill: var(--
|
|
79
|
-
}
|
|
80
|
-
</style></head>
|
|
81
|
-
<body>
|
|
82
|
-
<div class="
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
<div
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
<
|
|
94
|
-
<
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
</
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
(function() {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
.
|
|
152
|
-
.
|
|
153
|
-
.attr('
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
.attr('d', path);
|
|
172
|
-
|
|
173
|
-
svg.append('path')
|
|
174
|
-
.datum(topojson.mesh(us, us.objects.nation))
|
|
175
|
-
.attr('class', 'nation-border')
|
|
176
|
-
.attr('d', path);
|
|
177
|
-
}).catch(function(err) {
|
|
178
|
-
console.error('Failed to load US map data:', err);
|
|
179
|
-
container.innerHTML = '<p style="color:var(--text-secondary);text-align:center;padding:2rem;">Failed to load map data. Please try again.</p>';
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
window.addEventListener('resize', function() {
|
|
183
|
-
const w = container.clientWidth;
|
|
184
|
-
const h = container.clientHeight - 50;
|
|
185
|
-
svg.attr('viewBox', `0 0 ${w} ${h}`);
|
|
186
|
-
projection.fitSize([w - 40, h - 20], { type: 'Sphere' }).translate([w / 2, h / 2]);
|
|
187
|
-
svg.selectAll('path').attr('d', path);
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
initMap();
|
|
192
|
-
})();
|
|
193
|
-
</script><script id="page-helpers" src="/api/page-helpers.js?v=3" data-locked="true"></script><script id="page-script" src="/api/page-script.js?v=3" data-locked="true"></script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head>
|
|
2
|
+
<meta charset="UTF-8">
|
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
4
|
+
<title>SynthOS</title>
|
|
5
|
+
<script id="theme-info" src="/api/theme-info.js" data-locked="true"></script>
|
|
6
|
+
<link id="theme-css" rel="stylesheet" href="/api/theme.css" data-locked="true">
|
|
7
|
+
<style>.idle-container{position:absolute;width:100%;height:100%;pointer-events:none;opacity:1;transition:opacity 1s ease-out}.idle-container.hidden{opacity:0}.breathing-orb{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:80px;height:80px;border-radius:50%;background:radial-gradient(circle,rgba(102,126,234,.15) 0,transparent 70%);animation:4s ease-in-out infinite breathe}.breathing-orb::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:rgba(183,148,246,.6);box-shadow:0 0 20px rgba(183,148,246,.4);animation:4s ease-in-out infinite core-pulse}@keyframes breathe{0%,100%{width:80px;height:80px;opacity:.3}50%{width:120px;height:120px;opacity:.6}}@keyframes core-pulse{0%,100%{opacity:.4;box-shadow:0 0 20px rgba(183,148,246,.3)}50%{opacity:.8;box-shadow:0 0 30px rgba(183,148,246,.5)}}.orbit-ring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:200px;height:200px;border:1px solid rgba(102,126,234,.1);border-radius:50%;animation:20s linear infinite orbit-rotate}.orbit-ring::after{content:'';position:absolute;top:-3px;left:50%;transform:translateX(-50%);width:6px;height:6px;background:rgba(240,147,251,.5);border-radius:50%;box-shadow:0 0 10px rgba(240,147,251,.3)}@keyframes orbit-rotate{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}</style>
|
|
8
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.9.0/d3.min.js"></script>
|
|
9
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/14.1.1/marked.min.js"></script>
|
|
10
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/11.1.0/mermaid.min.js"></script>
|
|
11
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
|
12
|
+
<script id="page-info" src="/api/page-info.js?page=builder"></script>
|
|
13
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/topojson/3.0.2/topojson.min.js" id="topojson-lib"></script><style id="us-map-styles">
|
|
14
|
+
#us-map-container {
|
|
15
|
+
width: 100%;
|
|
16
|
+
height: 100%;
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
background: var(--bodyBackground);
|
|
22
|
+
position: relative;
|
|
23
|
+
overflow: hidden;
|
|
24
|
+
}
|
|
25
|
+
#us-map-container h2 {
|
|
26
|
+
color: var(--bodyText);
|
|
27
|
+
margin: 0;
|
|
28
|
+
padding: 12px 0 4px 0;
|
|
29
|
+
font-size: 1.4rem;
|
|
30
|
+
font-weight: 600;
|
|
31
|
+
letter-spacing: 0.02em;
|
|
32
|
+
}
|
|
33
|
+
#us-map-svg {
|
|
34
|
+
width: 100%;
|
|
35
|
+
flex: 1;
|
|
36
|
+
min-height: 0;
|
|
37
|
+
}
|
|
38
|
+
#us-map-svg .state {
|
|
39
|
+
fill: var(--themePrimary);
|
|
40
|
+
stroke: var(--bodyBackground);
|
|
41
|
+
stroke-width: 1;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
transition: fill 0.2s ease;
|
|
44
|
+
}
|
|
45
|
+
#us-map-svg .state:hover {
|
|
46
|
+
fill: var(--themeSecondary);
|
|
47
|
+
}
|
|
48
|
+
#us-map-svg .state-border {
|
|
49
|
+
fill: none;
|
|
50
|
+
stroke: var(--bodyBackground);
|
|
51
|
+
stroke-width: 1.5;
|
|
52
|
+
}
|
|
53
|
+
#us-map-svg .nation-border {
|
|
54
|
+
fill: none;
|
|
55
|
+
stroke: var(--bodySubtext);
|
|
56
|
+
stroke-width: 1.5;
|
|
57
|
+
}
|
|
58
|
+
#map-tooltip {
|
|
59
|
+
position: absolute;
|
|
60
|
+
pointer-events: none;
|
|
61
|
+
background: var(--defaultStateBackground);
|
|
62
|
+
color: var(--bodyText);
|
|
63
|
+
border: 1px solid var(--bodyDivider);
|
|
64
|
+
border-radius: 6px;
|
|
65
|
+
padding: 6px 12px;
|
|
66
|
+
font-size: 0.9rem;
|
|
67
|
+
font-weight: 500;
|
|
68
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.12);
|
|
69
|
+
opacity: 0;
|
|
70
|
+
transition: opacity 0.15s ease;
|
|
71
|
+
z-index: 10;
|
|
72
|
+
}
|
|
73
|
+
.light-mode #us-map-svg .state {
|
|
74
|
+
fill: var(--themePrimary);
|
|
75
|
+
stroke: var(--bodyBackground);
|
|
76
|
+
}
|
|
77
|
+
.light-mode #us-map-svg .state:hover {
|
|
78
|
+
fill: var(--themeSecondary);
|
|
79
|
+
}
|
|
80
|
+
</style></head>
|
|
81
|
+
<body>
|
|
82
|
+
<div class="viewer-panel full-viewer" id="viewerPanel"><div id="us-map-container">
|
|
83
|
+
<h2>United States</h2>
|
|
84
|
+
<svg id="us-map-svg"></svg>
|
|
85
|
+
<div id="map-tooltip"></div>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
<div id="instructions" style="display: none;" data-locked="true"></div>
|
|
89
|
+
<div id="thoughts" style="display: none;" data-locked="true"></div>
|
|
90
|
+
<script id="idle-animation">function hideIdleAnimation(){const idleContainer=document.getElementById("idleAnimation");idleContainer&&(idleContainer.classList.add("hidden"),setTimeout(()=>{idleContainer.style.display="none"},1e3))}function showIdleAnimation(){const idleContainer=document.getElementById("idleAnimation");idleContainer&&(idleContainer.style.display="block",setTimeout(()=>{idleContainer.classList.remove("hidden")},10))}</script>
|
|
91
|
+
<button class="chat-toggle" aria-label="Toggle chat panel">
|
|
92
|
+
<span class="chat-toggle-dots">
|
|
93
|
+
<span class="chat-toggle-dot"></span>
|
|
94
|
+
<span class="chat-toggle-dot"></span>
|
|
95
|
+
<span class="chat-toggle-dot"></span>
|
|
96
|
+
</span>
|
|
97
|
+
</button>
|
|
98
|
+
|
|
99
|
+
<script id="us-map-script">
|
|
100
|
+
(function() {
|
|
101
|
+
function initMap() {
|
|
102
|
+
if (typeof topojson === 'undefined') {
|
|
103
|
+
setTimeout(initMap, 100);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const container = document.getElementById('us-map-container');
|
|
108
|
+
const svg = d3.select('#us-map-svg');
|
|
109
|
+
const tooltip = document.getElementById('map-tooltip');
|
|
110
|
+
|
|
111
|
+
const width = container.clientWidth;
|
|
112
|
+
const height = container.clientHeight - 50;
|
|
113
|
+
|
|
114
|
+
svg.attr('viewBox', `0 0 ${width} ${height}`)
|
|
115
|
+
.attr('preserveAspectRatio', 'xMidYMid meet');
|
|
116
|
+
|
|
117
|
+
const projection = d3.geoAlbersUsa()
|
|
118
|
+
.fitSize([width - 40, height - 20], { type: 'Sphere' })
|
|
119
|
+
.translate([width / 2, height / 2]);
|
|
120
|
+
|
|
121
|
+
const path = d3.geoPath().projection(projection);
|
|
122
|
+
|
|
123
|
+
d3.json('https://cdn.jsdelivr.net/npm/us-atlas@3/states-10m.json').then(function(us) {
|
|
124
|
+
const states = topojson.feature(us, us.objects.states);
|
|
125
|
+
|
|
126
|
+
svg.selectAll('.state')
|
|
127
|
+
.data(states.features)
|
|
128
|
+
.enter()
|
|
129
|
+
.append('path')
|
|
130
|
+
.attr('class', 'state')
|
|
131
|
+
.attr('d', path)
|
|
132
|
+
.on('mousemove', function(event, d) {
|
|
133
|
+
tooltip.textContent = d.properties.name;
|
|
134
|
+
tooltip.style.opacity = '1';
|
|
135
|
+
const rect = container.getBoundingClientRect();
|
|
136
|
+
const x = event.clientX - rect.left + 12;
|
|
137
|
+
const y = event.clientY - rect.top - 30;
|
|
138
|
+
tooltip.style.left = x + 'px';
|
|
139
|
+
tooltip.style.top = y + 'px';
|
|
140
|
+
})
|
|
141
|
+
.on('mouseleave', function() {
|
|
142
|
+
tooltip.style.opacity = '0';
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
svg.append('path')
|
|
146
|
+
.datum(topojson.mesh(us, us.objects.states, (a, b) => a !== b))
|
|
147
|
+
.attr('class', 'state-border')
|
|
148
|
+
.attr('d', path);
|
|
149
|
+
|
|
150
|
+
svg.append('path')
|
|
151
|
+
.datum(topojson.mesh(us, us.objects.nation))
|
|
152
|
+
.attr('class', 'nation-border')
|
|
153
|
+
.attr('d', path);
|
|
154
|
+
}).catch(function(err) {
|
|
155
|
+
console.error('Failed to load US map data:', err);
|
|
156
|
+
container.innerHTML = '<p style="color:var(--bodySubtext);text-align:center;padding:2rem;">Failed to load map data. Please try again.</p>';
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
window.addEventListener('resize', function() {
|
|
160
|
+
const w = container.clientWidth;
|
|
161
|
+
const h = container.clientHeight - 50;
|
|
162
|
+
svg.attr('viewBox', `0 0 ${w} ${h}`);
|
|
163
|
+
projection.fitSize([w - 40, h - 20], { type: 'Sphere' }).translate([w / 2, h / 2]);
|
|
164
|
+
svg.selectAll('path').attr('d', path);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
initMap();
|
|
169
|
+
})();
|
|
170
|
+
</script></body></html>
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "US Map",
|
|
3
|
-
"categories": [
|
|
4
|
-
"
|
|
5
|
-
],
|
|
6
|
-
"pinned": false,
|
|
7
|
-
"showInAll": false,
|
|
8
|
-
"createdDate": "2026-02-17T16:47:12.135Z",
|
|
9
|
-
"lastModified": "2026-02-17T16:51:44.761Z",
|
|
10
|
-
"pageVersion": 3,
|
|
11
|
-
"mode": "unlocked"
|
|
12
|
-
|
|
1
|
+
{
|
|
2
|
+
"title": "US Map",
|
|
3
|
+
"categories": [
|
|
4
|
+
"_Starters"
|
|
5
|
+
],
|
|
6
|
+
"pinned": false,
|
|
7
|
+
"showInAll": false,
|
|
8
|
+
"createdDate": "2026-02-17T16:47:12.135Z",
|
|
9
|
+
"lastModified": "2026-02-17T16:51:44.761Z",
|
|
10
|
+
"pageVersion": 3,
|
|
11
|
+
"mode": "unlocked",
|
|
12
|
+
"greeting": "Here's your interactive US map! You can customize it by adding data to visualize — just tell me what you'd like to overlay. Here are a couple of ideas: Population by state — color-coded choropleth showing population density; Election results — red/blue map of voting outcomes by state; Custom data — provide your own values per state (sales figures, temperatures, rankings, etc.). What data would you like to see on the map?",
|
|
13
|
+
"firstRunGreeting": ""
|
|
14
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"role":"assistant","content":"Welcome! This is an interactive map of the United States circa the 1850s, showing how the country was politically organized after the Compromise of 1850. It's designed for interactive exploration \u2014 here are a few things you could try: Population density overlay \u2014 Visualize estimated population distribution across states and territories in the 1850s; Railroad & transportation routes \u2014 Map the major rail lines, trails, and waterways that connected the nation; Climate & geography zones \u2014 Overlay biomes, elevation, or average rainfall data onto the territorial boundaries; Statehood timeline animation \u2014 Animate how territories became states over time from 1776 to 1860; Resource & agriculture map \u2014 Show where key crops, minerals, and natural resources were concentrated. Just tell me what you'd like to explore!"}]
|