@circuitwall/jarela 1.9.2 → 1.9.3

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.
Files changed (57) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  16. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/standalone/.next/server/app/page.js +688 -427
  24. package/.next/standalone/.next/server/app/page.js.map +1 -1
  25. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app-paths-manifest.json +1 -1
  28. package/.next/standalone/.next/server/chunks/4045.js.map +1 -1
  29. package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
  30. package/.next/standalone/.next/server/pages/404.html +2 -2
  31. package/.next/standalone/.next/server/pages/500.html +1 -1
  32. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  33. package/.next/standalone/.next/static/chunks/2747-4a6287cacd57d231.js.map +1 -1
  34. package/.next/standalone/.next/static/chunks/{1998-31a617131197a83a.js → 962-fe2372e00f85e23a.js} +111 -2
  35. package/.next/standalone/.next/static/chunks/962-fe2372e00f85e23a.js.map +1 -0
  36. package/.next/standalone/.next/static/chunks/app/layout-84c6f211a7a1ca36.js.map +1 -1
  37. package/.next/standalone/.next/static/chunks/app/{page-afdef9bd1108a656.js → page-c5b9f4407416c3f9.js} +332 -154
  38. package/.next/standalone/.next/static/chunks/app/page-c5b9f4407416c3f9.js.map +1 -0
  39. package/.next/standalone/.next/static/css/b8e04d59a2bfff04.css +5 -0
  40. package/.next/standalone/.next/static/css/b8e04d59a2bfff04.css.map +1 -0
  41. package/.next/standalone/package.json +1 -1
  42. package/CHANGELOG.md +25 -0
  43. package/components/credentials/CredentialsPanel.tsx +1 -1
  44. package/components/layout/AppShell.tsx +6 -0
  45. package/components/layout/MenuPanel.tsx +15 -91
  46. package/components/settings/AppearancePanel.tsx +93 -0
  47. package/components/settings/SettingsPanel.tsx +94 -0
  48. package/contexts/AppContext.tsx +1 -1
  49. package/hooks/useUrlSync.ts +1 -1
  50. package/lib/ui/navigate.ts +1 -1
  51. package/package.json +1 -1
  52. package/.next/standalone/.next/static/chunks/1998-31a617131197a83a.js.map +0 -1
  53. package/.next/standalone/.next/static/chunks/app/page-afdef9bd1108a656.js.map +0 -1
  54. package/.next/standalone/.next/static/css/44f9bbea39fef458.css +0 -5
  55. package/.next/standalone/.next/static/css/44f9bbea39fef458.css.map +0 -1
  56. /package/.next/standalone/.next/static/{rr-Rxxi6kkXe1Bw8-Hzq2 → EOkgU73YJOpR-vFcKMgL0}/_buildManifest.js +0 -0
  57. /package/.next/standalone/.next/static/{rr-Rxxi6kkXe1Bw8-Hzq2 → EOkgU73YJOpR-vFcKMgL0}/_ssgManifest.js +0 -0
@@ -1464,104 +1464,7 @@ module.exports = require("next/dist/server/app-render/action-async-storage.exter
1464
1464
 
1465
1465
  /***/ }),
1466
1466
 
1467
- /***/ 26713:
1468
- /***/ ((module) => {
1469
-
1470
- "use strict";
1471
- module.exports = require("next/dist/shared/lib/router/utils/is-bot");
1472
-
1473
- /***/ }),
1474
-
1475
- /***/ 27910:
1476
- /***/ ((module) => {
1477
-
1478
- "use strict";
1479
- module.exports = require("stream");
1480
-
1481
- /***/ }),
1482
-
1483
- /***/ 28354:
1484
- /***/ ((module) => {
1485
-
1486
- "use strict";
1487
- module.exports = require("util");
1488
-
1489
- /***/ }),
1490
-
1491
- /***/ 29021:
1492
- /***/ ((module) => {
1493
-
1494
- "use strict";
1495
- module.exports = require("fs");
1496
-
1497
- /***/ }),
1498
-
1499
- /***/ 29294:
1500
- /***/ ((module) => {
1501
-
1502
- "use strict";
1503
- module.exports = require("next/dist/server/app-render/work-async-storage.external.js");
1504
-
1505
- /***/ }),
1506
-
1507
- /***/ 31230:
1508
- /***/ (() => {
1509
-
1510
-
1511
-
1512
- /***/ }),
1513
-
1514
- /***/ 31421:
1515
- /***/ ((module) => {
1516
-
1517
- "use strict";
1518
- module.exports = require("node:child_process");
1519
-
1520
- /***/ }),
1521
-
1522
- /***/ 33873:
1523
- /***/ ((module) => {
1524
-
1525
- "use strict";
1526
- module.exports = require("path");
1527
-
1528
- /***/ }),
1529
-
1530
- /***/ 37067:
1531
- /***/ ((module) => {
1532
-
1533
- "use strict";
1534
- module.exports = require("node:http");
1535
-
1536
- /***/ }),
1537
-
1538
- /***/ 38084:
1539
- /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
1540
-
1541
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 44635));
1542
- ;
1543
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 26751));
1544
-
1545
-
1546
- /***/ }),
1547
-
1548
- /***/ 41025:
1549
- /***/ ((module) => {
1550
-
1551
- "use strict";
1552
- module.exports = require("next/dist/server/app-render/dynamic-access-async-storage.external.js");
1553
-
1554
- /***/ }),
1555
-
1556
- /***/ 43954:
1557
- /***/ ((module) => {
1558
-
1559
- "use strict";
1560
- module.exports = require("next/dist/shared/lib/router/utils/interception-routes");
1561
-
1562
- /***/ }),
1563
-
1564
- /***/ 44635:
1467
+ /***/ 19674:
1565
1468
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1566
1469
 
1567
1470
  "use strict";
@@ -2117,7 +2020,8 @@ const TABS = [
2117
2020
  "bridges",
2118
2021
  "profile",
2119
2022
  "harness",
2120
- "documents"
2023
+ "documents",
2024
+ "settings"
2121
2025
  ];
2122
2026
  function parseHref(input) {
2123
2027
  if (!input) return {
@@ -2191,7 +2095,8 @@ const useUrlSync_TABS = [
2191
2095
  "tasks",
2192
2096
  "bridges",
2193
2097
  "profile",
2194
- "harness"
2098
+ "harness",
2099
+ "settings"
2195
2100
  ];
2196
2101
  function useUrlSync() {
2197
2102
  const { state, dispatch } = (0,AppContext/* useAppContext */.U)();
@@ -49747,7 +49652,7 @@ const PRESET_CATEGORIES = {
49747
49652
  }
49748
49653
 
49749
49654
  ;// ./components/credentials/CredentialsPanel.tsx
49750
- /* __next_internal_client_entry_do_not_use__ CredentialsPanel auto */
49655
+ /* __next_internal_client_entry_do_not_use__ CredentialsPanel,CredentialsListPanel auto */
49751
49656
 
49752
49657
 
49753
49658
 
@@ -63240,6 +63145,558 @@ async function EnvVarsPanel_pollUntilUp(timeoutMs = 30000) {
63240
63145
  throw new Error("server did not return");
63241
63146
  }
63242
63147
 
63148
+ ;// ./node_modules/lucide-react/dist/esm/icons/palette.mjs
63149
+ /**
63150
+ * @license lucide-react v1.17.0 - ISC
63151
+ *
63152
+ * This source code is licensed under the ISC license.
63153
+ * See the LICENSE file in the root directory of this source tree.
63154
+ */
63155
+ const palette_iconNode = [
63156
+ [
63157
+ "path",
63158
+ {
63159
+ d: "M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",
63160
+ key: "e79jfc"
63161
+ }
63162
+ ],
63163
+ [
63164
+ "circle",
63165
+ {
63166
+ cx: "13.5",
63167
+ cy: "6.5",
63168
+ r: ".5",
63169
+ fill: "currentColor",
63170
+ key: "1okk4w"
63171
+ }
63172
+ ],
63173
+ [
63174
+ "circle",
63175
+ {
63176
+ cx: "17.5",
63177
+ cy: "10.5",
63178
+ r: ".5",
63179
+ fill: "currentColor",
63180
+ key: "f64h9f"
63181
+ }
63182
+ ],
63183
+ [
63184
+ "circle",
63185
+ {
63186
+ cx: "6.5",
63187
+ cy: "12.5",
63188
+ r: ".5",
63189
+ fill: "currentColor",
63190
+ key: "qy21gx"
63191
+ }
63192
+ ],
63193
+ [
63194
+ "circle",
63195
+ {
63196
+ cx: "8.5",
63197
+ cy: "7.5",
63198
+ r: ".5",
63199
+ fill: "currentColor",
63200
+ key: "fotxhn"
63201
+ }
63202
+ ]
63203
+ ];
63204
+ const Palette = (0,createLucideIcon/* default */.A)("palette", palette_iconNode);
63205
+ //# sourceMappingURL=palette.mjs.map
63206
+
63207
+ ;// ./node_modules/lucide-react/dist/esm/icons/shapes.mjs
63208
+ /**
63209
+ * @license lucide-react v1.17.0 - ISC
63210
+ *
63211
+ * This source code is licensed under the ISC license.
63212
+ * See the LICENSE file in the root directory of this source tree.
63213
+ */
63214
+ const shapes_iconNode = [
63215
+ [
63216
+ "path",
63217
+ {
63218
+ d: "M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z",
63219
+ key: "1bo67w"
63220
+ }
63221
+ ],
63222
+ [
63223
+ "rect",
63224
+ {
63225
+ x: "3",
63226
+ y: "14",
63227
+ width: "7",
63228
+ height: "7",
63229
+ rx: "1",
63230
+ key: "1bkyp8"
63231
+ }
63232
+ ],
63233
+ [
63234
+ "circle",
63235
+ {
63236
+ cx: "17.5",
63237
+ cy: "17.5",
63238
+ r: "3.5",
63239
+ key: "w3z12y"
63240
+ }
63241
+ ]
63242
+ ];
63243
+ const Shapes = (0,createLucideIcon/* default */.A)("shapes", shapes_iconNode);
63244
+ //# sourceMappingURL=shapes.mjs.map
63245
+
63246
+ ;// ./node_modules/lucide-react/dist/esm/icons/scroll-text.mjs
63247
+ /**
63248
+ * @license lucide-react v1.17.0 - ISC
63249
+ *
63250
+ * This source code is licensed under the ISC license.
63251
+ * See the LICENSE file in the root directory of this source tree.
63252
+ */
63253
+ const scroll_text_iconNode = [
63254
+ [
63255
+ "path",
63256
+ {
63257
+ d: "M15 12h-5",
63258
+ key: "r7krc0"
63259
+ }
63260
+ ],
63261
+ [
63262
+ "path",
63263
+ {
63264
+ d: "M15 8h-5",
63265
+ key: "1khuty"
63266
+ }
63267
+ ],
63268
+ [
63269
+ "path",
63270
+ {
63271
+ d: "M19 17V5a2 2 0 0 0-2-2H4",
63272
+ key: "zz82l3"
63273
+ }
63274
+ ],
63275
+ [
63276
+ "path",
63277
+ {
63278
+ d: "M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",
63279
+ key: "1ph1d7"
63280
+ }
63281
+ ]
63282
+ ];
63283
+ const ScrollText = (0,createLucideIcon/* default */.A)("scroll-text", scroll_text_iconNode);
63284
+ //# sourceMappingURL=scroll-text.mjs.map
63285
+
63286
+ ;// ./node_modules/lucide-react/dist/esm/icons/sun.mjs
63287
+ /**
63288
+ * @license lucide-react v1.17.0 - ISC
63289
+ *
63290
+ * This source code is licensed under the ISC license.
63291
+ * See the LICENSE file in the root directory of this source tree.
63292
+ */
63293
+ const sun_iconNode = [
63294
+ [
63295
+ "circle",
63296
+ {
63297
+ cx: "12",
63298
+ cy: "12",
63299
+ r: "4",
63300
+ key: "4exip2"
63301
+ }
63302
+ ],
63303
+ [
63304
+ "path",
63305
+ {
63306
+ d: "M12 2v2",
63307
+ key: "tus03m"
63308
+ }
63309
+ ],
63310
+ [
63311
+ "path",
63312
+ {
63313
+ d: "M12 20v2",
63314
+ key: "1lh1kg"
63315
+ }
63316
+ ],
63317
+ [
63318
+ "path",
63319
+ {
63320
+ d: "m4.93 4.93 1.41 1.41",
63321
+ key: "149t6j"
63322
+ }
63323
+ ],
63324
+ [
63325
+ "path",
63326
+ {
63327
+ d: "m17.66 17.66 1.41 1.41",
63328
+ key: "ptbguv"
63329
+ }
63330
+ ],
63331
+ [
63332
+ "path",
63333
+ {
63334
+ d: "M2 12h2",
63335
+ key: "1t8f8n"
63336
+ }
63337
+ ],
63338
+ [
63339
+ "path",
63340
+ {
63341
+ d: "M20 12h2",
63342
+ key: "1q8mjw"
63343
+ }
63344
+ ],
63345
+ [
63346
+ "path",
63347
+ {
63348
+ d: "m6.34 17.66-1.41 1.41",
63349
+ key: "1m8zz5"
63350
+ }
63351
+ ],
63352
+ [
63353
+ "path",
63354
+ {
63355
+ d: "m19.07 4.93-1.41 1.41",
63356
+ key: "1shlcs"
63357
+ }
63358
+ ]
63359
+ ];
63360
+ const Sun = (0,createLucideIcon/* default */.A)("sun", sun_iconNode);
63361
+ //# sourceMappingURL=sun.mjs.map
63362
+
63363
+ ;// ./node_modules/lucide-react/dist/esm/icons/moon.mjs
63364
+ /**
63365
+ * @license lucide-react v1.17.0 - ISC
63366
+ *
63367
+ * This source code is licensed under the ISC license.
63368
+ * See the LICENSE file in the root directory of this source tree.
63369
+ */
63370
+ const moon_iconNode = [
63371
+ [
63372
+ "path",
63373
+ {
63374
+ d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",
63375
+ key: "kfwtm"
63376
+ }
63377
+ ]
63378
+ ];
63379
+ const Moon = (0,createLucideIcon/* default */.A)("moon", moon_iconNode);
63380
+ //# sourceMappingURL=moon.mjs.map
63381
+
63382
+ ;// ./node_modules/lucide-react/dist/esm/icons/monitor.mjs
63383
+ /**
63384
+ * @license lucide-react v1.17.0 - ISC
63385
+ *
63386
+ * This source code is licensed under the ISC license.
63387
+ * See the LICENSE file in the root directory of this source tree.
63388
+ */
63389
+ const monitor_iconNode = [
63390
+ [
63391
+ "rect",
63392
+ {
63393
+ width: "20",
63394
+ height: "14",
63395
+ x: "2",
63396
+ y: "3",
63397
+ rx: "2",
63398
+ key: "48i651"
63399
+ }
63400
+ ],
63401
+ [
63402
+ "line",
63403
+ {
63404
+ x1: "8",
63405
+ x2: "16",
63406
+ y1: "21",
63407
+ y2: "21",
63408
+ key: "1svkeh"
63409
+ }
63410
+ ],
63411
+ [
63412
+ "line",
63413
+ {
63414
+ x1: "12",
63415
+ x2: "12",
63416
+ y1: "17",
63417
+ y2: "21",
63418
+ key: "vw1qmm"
63419
+ }
63420
+ ]
63421
+ ];
63422
+ const Monitor = (0,createLucideIcon/* default */.A)("monitor", monitor_iconNode);
63423
+ //# sourceMappingURL=monitor.mjs.map
63424
+
63425
+ // EXTERNAL MODULE: ./contexts/ThemeContext.tsx
63426
+ var ThemeContext = __webpack_require__(41005);
63427
+ ;// ./components/settings/AppearancePanel.tsx
63428
+ /* __next_internal_client_entry_do_not_use__ AppearancePanel auto */
63429
+
63430
+
63431
+
63432
+ // Visual + chrome settings that used to live in the MenuPanel footer
63433
+ // (theme) and the top of the menu (Workspace mode). Hoisted here so
63434
+ // every settings surface has the same shape: a Settings sub-tab with
63435
+ // its own header.
63436
+ function AppearancePanel() {
63437
+ const { state, dispatch } = (0,AppContext/* useAppContext */.U)();
63438
+ const { theme, setTheme } = (0,ThemeContext/* useTheme */.D)();
63439
+ const isFullMode = state.experienceMode === "full";
63440
+ const themeOptions = [
63441
+ {
63442
+ value: "light",
63443
+ label: "Light",
63444
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Sun, {
63445
+ size: 14
63446
+ }),
63447
+ description: "Bright UI; ignores system preference."
63448
+ },
63449
+ {
63450
+ value: "dark",
63451
+ label: "Dark",
63452
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Moon, {
63453
+ size: 14
63454
+ }),
63455
+ description: "Dimmed UI; ignores system preference."
63456
+ },
63457
+ {
63458
+ value: "system",
63459
+ label: "System",
63460
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Monitor, {
63461
+ size: 14
63462
+ }),
63463
+ description: "Follow the OS-level light/dark preference."
63464
+ }
63465
+ ];
63466
+ const modeOptions = [
63467
+ {
63468
+ value: "essential",
63469
+ label: "Essential",
63470
+ description: "Day-to-day surfaces only. Hides Memory, Bridges, Harness, Logs, Defaults from the menu."
63471
+ },
63472
+ {
63473
+ value: "full",
63474
+ label: "Full",
63475
+ description: "Everything visible: engine-room tabs, power-user settings, all advanced sub-tabs."
63476
+ }
63477
+ ];
63478
+ function setMode(mode) {
63479
+ if (mode === state.experienceMode) return;
63480
+ dispatch({
63481
+ type: "SET_EXPERIENCE_MODE",
63482
+ mode
63483
+ });
63484
+ }
63485
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
63486
+ className: "flex flex-col h-full",
63487
+ children: [
63488
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
63489
+ className: "border-b border-border px-4 py-3 flex items-center gap-2",
63490
+ children: [
63491
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Palette, {
63492
+ size: 14,
63493
+ className: "text-fg-subtle"
63494
+ }),
63495
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("h2", {
63496
+ className: "text-sm font-semibold text-fg mr-auto",
63497
+ children: "Appearance"
63498
+ })
63499
+ ]
63500
+ }),
63501
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
63502
+ className: "flex-1 overflow-y-auto px-4 py-4 space-y-6",
63503
+ children: [
63504
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("section", {
63505
+ children: [
63506
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("h3", {
63507
+ className: "text-[11px] uppercase tracking-wide text-fg-faint mb-2 px-1",
63508
+ children: "Theme"
63509
+ }),
63510
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
63511
+ className: "grid grid-cols-1 sm:grid-cols-3 gap-2",
63512
+ children: themeOptions.map((o)=>{
63513
+ const active = theme === o.value;
63514
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("button", {
63515
+ onClick: ()=>setTheme(o.value),
63516
+ "aria-pressed": active,
63517
+ className: `text-left rounded-lg border px-3 py-2.5 transition-colors ${active ? "border-accent bg-accent/10 text-fg" : "border-border bg-surface-2 text-fg-muted hover:bg-surface-3"}`,
63518
+ children: [
63519
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
63520
+ className: "flex items-center gap-2 mb-1",
63521
+ children: [
63522
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
63523
+ className: "text-fg-subtle",
63524
+ children: o.icon
63525
+ }),
63526
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
63527
+ className: "text-sm font-medium text-fg",
63528
+ children: o.label
63529
+ })
63530
+ ]
63531
+ }),
63532
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", {
63533
+ className: "text-[11px] text-fg-faint leading-snug",
63534
+ children: o.description
63535
+ })
63536
+ ]
63537
+ }, o.value);
63538
+ })
63539
+ })
63540
+ ]
63541
+ }),
63542
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("section", {
63543
+ children: [
63544
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("h3", {
63545
+ className: "text-[11px] uppercase tracking-wide text-fg-faint mb-2 px-1",
63546
+ children: "Workspace mode"
63547
+ }),
63548
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
63549
+ className: "grid grid-cols-1 sm:grid-cols-2 gap-2",
63550
+ children: modeOptions.map((o)=>{
63551
+ const active = isFullMode ? o.value === "full" : o.value === "essential";
63552
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("button", {
63553
+ onClick: ()=>setMode(o.value),
63554
+ "aria-pressed": active,
63555
+ className: `text-left rounded-lg border px-3 py-2.5 transition-colors ${active ? "border-accent bg-accent/10 text-fg" : "border-border bg-surface-2 text-fg-muted hover:bg-surface-3"}`,
63556
+ children: [
63557
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
63558
+ className: "text-sm font-medium text-fg mb-1",
63559
+ children: o.label
63560
+ }),
63561
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", {
63562
+ className: "text-[11px] text-fg-faint leading-snug",
63563
+ children: o.description
63564
+ })
63565
+ ]
63566
+ }, o.value);
63567
+ })
63568
+ })
63569
+ ]
63570
+ })
63571
+ ]
63572
+ })
63573
+ ]
63574
+ });
63575
+ }
63576
+
63577
+ ;// ./components/settings/SettingsPanel.tsx
63578
+ /* __next_internal_client_entry_do_not_use__ SettingsPanel auto */
63579
+
63580
+
63581
+
63582
+
63583
+
63584
+
63585
+
63586
+
63587
+
63588
+ const SettingsPanel_SUBS = [
63589
+ {
63590
+ id: "appearance",
63591
+ label: "Appearance",
63592
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Palette, {
63593
+ size: 13
63594
+ })
63595
+ },
63596
+ {
63597
+ id: "networking",
63598
+ label: "Networking",
63599
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(globe/* default */.A, {
63600
+ size: 13
63601
+ })
63602
+ },
63603
+ {
63604
+ id: "credentials",
63605
+ label: "Credentials",
63606
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Key, {
63607
+ size: 13
63608
+ })
63609
+ },
63610
+ {
63611
+ id: "models",
63612
+ label: "Models",
63613
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Cpu, {
63614
+ size: 13
63615
+ })
63616
+ },
63617
+ {
63618
+ id: "harness",
63619
+ label: "Harness",
63620
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Shapes, {
63621
+ size: 13
63622
+ }),
63623
+ advancedOnly: true
63624
+ },
63625
+ {
63626
+ id: "logs",
63627
+ label: "Logs",
63628
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(ScrollText, {
63629
+ size: 13
63630
+ }),
63631
+ advancedOnly: true
63632
+ },
63633
+ {
63634
+ id: "defaults",
63635
+ label: "Defaults",
63636
+ icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(ServerCog, {
63637
+ size: 13
63638
+ }),
63639
+ advancedOnly: true
63640
+ }
63641
+ ];
63642
+ const VALID = new Set(SettingsPanel_SUBS.map((s)=>s.id));
63643
+ function parseSub(raw) {
63644
+ if (raw && VALID.has(raw)) return raw;
63645
+ return "appearance";
63646
+ }
63647
+ function SettingsPanel() {
63648
+ const { state, dispatch } = (0,AppContext/* useAppContext */.U)();
63649
+ const isFullMode = state.experienceMode === "full";
63650
+ const active = parseSub(state.selectedItem.settings);
63651
+ const setSub = (s)=>dispatch({
63652
+ type: "SET_SELECTION",
63653
+ tab: "settings",
63654
+ itemId: s
63655
+ });
63656
+ const visibleSubs = SettingsPanel_SUBS.filter((s)=>isFullMode || !s.advancedOnly);
63657
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
63658
+ className: "flex flex-col h-full min-h-0",
63659
+ children: [
63660
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
63661
+ role: "tablist",
63662
+ "aria-label": "Settings sub-section",
63663
+ className: "flex gap-1 border-b border-[var(--border)] bg-[var(--bg-secondary)] px-3 pt-2 overflow-x-auto",
63664
+ children: visibleSubs.map((s)=>{
63665
+ const selected = s.id === active;
63666
+ return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("button", {
63667
+ role: "tab",
63668
+ type: "button",
63669
+ "aria-selected": selected,
63670
+ onClick: ()=>setSub(s.id),
63671
+ className: "inline-flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-t-md border-b-2 -mb-px transition-colors whitespace-nowrap " + (selected ? "border-[var(--accent)] text-[var(--text-primary)] bg-[var(--bg-primary)]" : "border-transparent text-[var(--text-secondary)] hover:text-[var(--text-primary)]"),
63672
+ children: [
63673
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
63674
+ className: "text-fg-subtle",
63675
+ children: s.icon
63676
+ }),
63677
+ /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
63678
+ children: s.label
63679
+ })
63680
+ ]
63681
+ }, s.id);
63682
+ })
63683
+ }),
63684
+ /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
63685
+ className: "flex-1 min-h-0 overflow-hidden",
63686
+ children: [
63687
+ active === "appearance" && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(AppearancePanel, {}),
63688
+ active === "networking" && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(NetworkPanel, {}),
63689
+ active === "credentials" && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(CredentialsListPanel, {}),
63690
+ active === "models" && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(ModelsPanel, {}),
63691
+ active === "harness" && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(HarnessPanel, {}),
63692
+ active === "logs" && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(LogsPanel, {}),
63693
+ active === "defaults" && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(EnvVarsPanel, {})
63694
+ ]
63695
+ })
63696
+ ]
63697
+ });
63698
+ }
63699
+
63243
63700
  ;// ./components/ui/HeaderActivity.tsx
63244
63701
  /* __next_internal_client_entry_do_not_use__ HeaderActivity auto */
63245
63702
 
@@ -64477,226 +64934,34 @@ const ChartColumn = (0,createLucideIcon/* default */.A)("chart-column", chart_co
64477
64934
 
64478
64935
  // EXTERNAL MODULE: ./node_modules/lucide-react/dist/esm/icons/brain.mjs
64479
64936
  var brain = __webpack_require__(64571);
64480
- ;// ./node_modules/lucide-react/dist/esm/icons/shapes.mjs
64937
+ ;// ./node_modules/lucide-react/dist/esm/icons/settings.mjs
64481
64938
  /**
64482
64939
  * @license lucide-react v1.17.0 - ISC
64483
64940
  *
64484
64941
  * This source code is licensed under the ISC license.
64485
64942
  * See the LICENSE file in the root directory of this source tree.
64486
64943
  */
64487
- const shapes_iconNode = [
64488
- [
64489
- "path",
64490
- {
64491
- d: "M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z",
64492
- key: "1bo67w"
64493
- }
64494
- ],
64495
- [
64496
- "rect",
64497
- {
64498
- x: "3",
64499
- y: "14",
64500
- width: "7",
64501
- height: "7",
64502
- rx: "1",
64503
- key: "1bkyp8"
64504
- }
64505
- ],
64506
- [
64507
- "circle",
64508
- {
64509
- cx: "17.5",
64510
- cy: "17.5",
64511
- r: "3.5",
64512
- key: "w3z12y"
64513
- }
64514
- ]
64515
- ];
64516
- const Shapes = (0,createLucideIcon/* default */.A)("shapes", shapes_iconNode);
64517
- //# sourceMappingURL=shapes.mjs.map
64518
-
64519
- ;// ./node_modules/lucide-react/dist/esm/icons/scroll-text.mjs
64520
- /**
64521
- * @license lucide-react v1.17.0 - ISC
64522
- *
64523
- * This source code is licensed under the ISC license.
64524
- * See the LICENSE file in the root directory of this source tree.
64525
- */
64526
- const scroll_text_iconNode = [
64527
- [
64528
- "path",
64529
- {
64530
- d: "M15 12h-5",
64531
- key: "r7krc0"
64532
- }
64533
- ],
64534
- [
64535
- "path",
64536
- {
64537
- d: "M15 8h-5",
64538
- key: "1khuty"
64539
- }
64540
- ],
64944
+ const settings_iconNode = [
64541
64945
  [
64542
64946
  "path",
64543
64947
  {
64544
- d: "M19 17V5a2 2 0 0 0-2-2H4",
64545
- key: "zz82l3"
64948
+ d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",
64949
+ key: "1i5ecw"
64546
64950
  }
64547
64951
  ],
64548
- [
64549
- "path",
64550
- {
64551
- d: "M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",
64552
- key: "1ph1d7"
64553
- }
64554
- ]
64555
- ];
64556
- const ScrollText = (0,createLucideIcon/* default */.A)("scroll-text", scroll_text_iconNode);
64557
- //# sourceMappingURL=scroll-text.mjs.map
64558
-
64559
- ;// ./node_modules/lucide-react/dist/esm/icons/sun.mjs
64560
- /**
64561
- * @license lucide-react v1.17.0 - ISC
64562
- *
64563
- * This source code is licensed under the ISC license.
64564
- * See the LICENSE file in the root directory of this source tree.
64565
- */
64566
- const sun_iconNode = [
64567
64952
  [
64568
64953
  "circle",
64569
64954
  {
64570
64955
  cx: "12",
64571
64956
  cy: "12",
64572
- r: "4",
64573
- key: "4exip2"
64574
- }
64575
- ],
64576
- [
64577
- "path",
64578
- {
64579
- d: "M12 2v2",
64580
- key: "tus03m"
64581
- }
64582
- ],
64583
- [
64584
- "path",
64585
- {
64586
- d: "M12 20v2",
64587
- key: "1lh1kg"
64588
- }
64589
- ],
64590
- [
64591
- "path",
64592
- {
64593
- d: "m4.93 4.93 1.41 1.41",
64594
- key: "149t6j"
64595
- }
64596
- ],
64597
- [
64598
- "path",
64599
- {
64600
- d: "m17.66 17.66 1.41 1.41",
64601
- key: "ptbguv"
64602
- }
64603
- ],
64604
- [
64605
- "path",
64606
- {
64607
- d: "M2 12h2",
64608
- key: "1t8f8n"
64609
- }
64610
- ],
64611
- [
64612
- "path",
64613
- {
64614
- d: "M20 12h2",
64615
- key: "1q8mjw"
64616
- }
64617
- ],
64618
- [
64619
- "path",
64620
- {
64621
- d: "m6.34 17.66-1.41 1.41",
64622
- key: "1m8zz5"
64623
- }
64624
- ],
64625
- [
64626
- "path",
64627
- {
64628
- d: "m19.07 4.93-1.41 1.41",
64629
- key: "1shlcs"
64630
- }
64631
- ]
64632
- ];
64633
- const Sun = (0,createLucideIcon/* default */.A)("sun", sun_iconNode);
64634
- //# sourceMappingURL=sun.mjs.map
64635
-
64636
- ;// ./node_modules/lucide-react/dist/esm/icons/moon.mjs
64637
- /**
64638
- * @license lucide-react v1.17.0 - ISC
64639
- *
64640
- * This source code is licensed under the ISC license.
64641
- * See the LICENSE file in the root directory of this source tree.
64642
- */
64643
- const moon_iconNode = [
64644
- [
64645
- "path",
64646
- {
64647
- d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",
64648
- key: "kfwtm"
64649
- }
64650
- ]
64651
- ];
64652
- const Moon = (0,createLucideIcon/* default */.A)("moon", moon_iconNode);
64653
- //# sourceMappingURL=moon.mjs.map
64654
-
64655
- ;// ./node_modules/lucide-react/dist/esm/icons/monitor.mjs
64656
- /**
64657
- * @license lucide-react v1.17.0 - ISC
64658
- *
64659
- * This source code is licensed under the ISC license.
64660
- * See the LICENSE file in the root directory of this source tree.
64661
- */
64662
- const monitor_iconNode = [
64663
- [
64664
- "rect",
64665
- {
64666
- width: "20",
64667
- height: "14",
64668
- x: "2",
64669
- y: "3",
64670
- rx: "2",
64671
- key: "48i651"
64672
- }
64673
- ],
64674
- [
64675
- "line",
64676
- {
64677
- x1: "8",
64678
- x2: "16",
64679
- y1: "21",
64680
- y2: "21",
64681
- key: "1svkeh"
64682
- }
64683
- ],
64684
- [
64685
- "line",
64686
- {
64687
- x1: "12",
64688
- x2: "12",
64689
- y1: "17",
64690
- y2: "21",
64691
- key: "vw1qmm"
64957
+ r: "3",
64958
+ key: "1v7zrd"
64692
64959
  }
64693
64960
  ]
64694
64961
  ];
64695
- const Monitor = (0,createLucideIcon/* default */.A)("monitor", monitor_iconNode);
64696
- //# sourceMappingURL=monitor.mjs.map
64962
+ const Settings = (0,createLucideIcon/* default */.A)("settings", settings_iconNode);
64963
+ //# sourceMappingURL=settings.mjs.map
64697
64964
 
64698
- // EXTERNAL MODULE: ./contexts/ThemeContext.tsx
64699
- var ThemeContext = __webpack_require__(41005);
64700
64965
  ;// ./components/layout/MenuPanel.tsx
64701
64966
  /* __next_internal_client_entry_do_not_use__ MenuPanel auto */
64702
64967
 
@@ -64704,7 +64969,6 @@ var ThemeContext = __webpack_require__(41005);
64704
64969
 
64705
64970
 
64706
64971
 
64707
-
64708
64972
  const TAB_ICONS = {
64709
64973
  chat: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(message_square/* default */.A, {
64710
64974
  size: 13
@@ -64753,6 +65017,9 @@ const TAB_ICONS = {
64753
65017
  }),
64754
65018
  env: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(ServerCog, {
64755
65019
  size: 13
65020
+ }),
65021
+ settings: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Settings, {
65022
+ size: 13
64756
65023
  })
64757
65024
  };
64758
65025
  const TAB_TITLES = {
@@ -64771,7 +65038,8 @@ const TAB_TITLES = {
64771
65038
  profile: "Profile",
64772
65039
  harness: "Harness",
64773
65040
  logs: "Logs",
64774
- env: "Defaults"
65041
+ env: "Defaults",
65042
+ settings: "Settings"
64775
65043
  };
64776
65044
  const TAB_SHORT = {
64777
65045
  chat: "Chat",
@@ -64789,11 +65057,14 @@ const TAB_SHORT = {
64789
65057
  profile: "Me",
64790
65058
  harness: "Test",
64791
65059
  logs: "Logs",
64792
- env: "Defaults"
65060
+ env: "Defaults",
65061
+ settings: "Setup"
64793
65062
  };
64794
- // Two-tier menu. "Common" surfaces the day-to-day verbs plus the most
64795
- // relevant configuration touchpoints. "Advanced" hides the less-frequently
64796
- // used engine-room surfaces behind a collapsible header.
65063
+ // Two-tier menu. "Common" surfaces the day-to-day verbs. Settings is
65064
+ // the single home for previously top-level chrome (credentials, models,
65065
+ // harness, logs, defaults, appearance, networking) those legacy Tab
65066
+ // values still exist for deep-link compat but no longer appear in this
65067
+ // menu grid.
64797
65068
  //
64798
65069
  // Capability-presence surfaces (documents, memory, MCP, extensions,
64799
65070
  // bridges, built-in tool categories) all live under the "Tools" tab now —
@@ -64801,28 +65072,16 @@ const TAB_SHORT = {
64801
65072
  // answering the same question: "what can the agent see / do?". The legacy
64802
65073
  // top-level Tab entries remain wired so deep-links (?tab=documents&item=…)
64803
65074
  // still resolve, but they're hidden from the menu grid.
64804
- //
64805
- // "credentials" is the single home for every auth surface — saved API
64806
- // keys + built-in integrations (Gmail, GitHub, Atlassian…) live there as
64807
- // sub-tabs.
64808
- //
64809
- // "models" lives in Advanced — most users let the default model do its
64810
- // job; switching providers is power-user territory.
64811
65075
  const COMMON_TABS = [
64812
65076
  "chat",
64813
65077
  "dashboard",
64814
65078
  "agents",
64815
- "credentials",
64816
65079
  "tools",
64817
65080
  "tasks",
64818
- "profile"
64819
- ];
64820
- const ADVANCED_TABS = [
64821
- "models",
64822
- "harness",
64823
- "logs",
64824
- "env"
65081
+ "profile",
65082
+ "settings"
64825
65083
  ];
65084
+ const ADVANCED_TABS = [];
64826
65085
  const ADVANCED_KEY = "jarela.menu.advanced";
64827
65086
  const MenuPanel_GRADIENTS = [
64828
65087
  "from-violet-500 to-indigo-600",
@@ -64846,7 +65105,8 @@ const TAB_ACCENT = {
64846
65105
  tools: "from-emerald-500/20 to-lime-500/5",
64847
65106
  harness: "from-orange-500/20 to-amber-500/5",
64848
65107
  logs: "from-slate-500/20 to-zinc-500/5",
64849
- env: "from-teal-500/20 to-cyan-500/5"
65108
+ env: "from-teal-500/20 to-cyan-500/5",
65109
+ settings: "from-slate-500/20 to-zinc-500/5"
64850
65110
  };
64851
65111
  function avatarGradient(id) {
64852
65112
  let h = 0;
@@ -64938,15 +65198,8 @@ function AgentSessionList({ activeAgentId, onSelect }) {
64938
65198
  });
64939
65199
  }
64940
65200
  function MenuPanel({ activeTab, agentId, onClose, onAgentChange, onSetTab }) {
64941
- const { state, dispatch } = (0,AppContext/* useAppContext */.U)();
65201
+ const { state } = (0,AppContext/* useAppContext */.U)();
64942
65202
  const isFullMode = state.experienceMode === "full";
64943
- const setMode = (mode)=>{
64944
- if (mode === "full" === isFullMode) return;
64945
- dispatch({
64946
- type: "SET_EXPERIENCE_MODE",
64947
- mode
64948
- });
64949
- };
64950
65203
  // Advanced section starts collapsed once the user has dismissed it
64951
65204
  // once (persisted to localStorage). Defaults to *expanded* on first
64952
65205
  // boot so the engine room is visible to power users out of the box.
@@ -65011,42 +65264,10 @@ function MenuPanel({ activeTab, agentId, onClose, onAgentChange, onSetTab }) {
65011
65264
  },
65012
65265
  children: [
65013
65266
  /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
65014
- className: "px-3 pt-2 pb-1 border-b border-border/60 bg-gradient-to-r from-surface-2/50 to-transparent",
65015
- children: /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
65016
- className: "flex items-center justify-between gap-2",
65017
- children: [
65018
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
65019
- className: "text-[10px] uppercase tracking-wide text-fg-faint",
65020
- children: "Workspace mode"
65021
- }),
65022
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
65023
- role: "radiogroup",
65024
- "aria-label": "Workspace mode",
65025
- className: "inline-flex items-center rounded-full border border-border bg-surface-3 p-0.5",
65026
- children: [
65027
- "essential",
65028
- "full"
65029
- ].map((mode)=>{
65030
- const active = mode === "full" === isFullMode;
65031
- return /*#__PURE__*/ (0,react_jsx_runtime.jsx)("button", {
65032
- type: "button",
65033
- role: "radio",
65034
- "aria-checked": active,
65035
- onClick: ()=>setMode(mode),
65036
- title: active ? `${mode} mode (current)` : `Switch to ${mode} mode`,
65037
- className: `control-tap text-[10px] uppercase tracking-wide px-2 py-0.5 rounded-full transition-colors ${active ? "bg-accent/15 text-fg-subtle" : "text-fg-faint hover:text-fg-muted"}`,
65038
- children: mode
65039
- }, mode);
65040
- })
65041
- })
65042
- ]
65043
- })
65044
- }),
65045
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
65046
- className: "grid grid-cols-4 sm:grid-cols-6 gap-1.5 px-2 py-2 border-b border-border shrink-0",
65267
+ className: "grid grid-cols-4 sm:grid-cols-6 gap-1.5 px-2 py-2 border-b border-border shrink-0 bg-gradient-to-r from-surface-2/50 to-transparent",
65047
65268
  children: COMMON_TABS.map(renderTabButton)
65048
65269
  }),
65049
- isFullMode && /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
65270
+ isFullMode && ADVANCED_TABS.length > 0 && /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
65050
65271
  className: "border-b border-border shrink-0",
65051
65272
  children: [
65052
65273
  /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("button", {
@@ -65081,68 +65302,6 @@ function MenuPanel({ activeTab, agentId, onClose, onAgentChange, onSetTab }) {
65081
65302
  onClose();
65082
65303
  }
65083
65304
  })
65084
- }),
65085
- /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
65086
- className: "border-t border-border px-3 py-3 shrink-0 bg-surface-1/30",
65087
- children: [
65088
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("p", {
65089
- className: "text-[11px] text-fg-faint mb-1.5 font-medium uppercase tracking-wide",
65090
- children: "Display"
65091
- }),
65092
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
65093
- className: "flex flex-col gap-1.5",
65094
- children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(ThemePicker, {})
65095
- })
65096
- ]
65097
- })
65098
- ]
65099
- });
65100
- }
65101
- function ThemePicker() {
65102
- const { theme, setTheme } = (0,ThemeContext/* useTheme */.D)();
65103
- const options = [
65104
- {
65105
- value: "light",
65106
- label: "Light",
65107
- icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Sun, {
65108
- size: 12
65109
- })
65110
- },
65111
- {
65112
- value: "dark",
65113
- label: "Dark",
65114
- icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Moon, {
65115
- size: 12
65116
- })
65117
- },
65118
- {
65119
- value: "system",
65120
- label: "System",
65121
- icon: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(Monitor, {
65122
- size: 12
65123
- })
65124
- }
65125
- ];
65126
- return /*#__PURE__*/ (0,react_jsx_runtime.jsxs)("div", {
65127
- className: "flex items-center gap-2 text-xs text-fg-muted rounded-lg border border-border bg-surface-3/70 px-2.5 py-2",
65128
- children: [
65129
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
65130
- className: "shrink-0",
65131
- children: "Theme"
65132
- }),
65133
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
65134
- className: "flex flex-1 rounded-lg border border-border overflow-hidden bg-surface",
65135
- children: options.map((o)=>/*#__PURE__*/ (0,react_jsx_runtime.jsxs)("button", {
65136
- onClick: ()=>setTheme(o.value),
65137
- title: o.label,
65138
- className: `control-tap flex-1 inline-flex items-center justify-center gap-1 py-1 text-[11px] transition-colors ${theme === o.value ? "bg-surface-3 text-fg shadow-sm" : "text-fg-faint hover:text-fg-muted hover:bg-surface-3/50"}`,
65139
- children: [
65140
- o.icon,
65141
- /*#__PURE__*/ (0,react_jsx_runtime.jsx)("span", {
65142
- children: o.label
65143
- })
65144
- ]
65145
- }, o.value))
65146
65305
  })
65147
65306
  ]
65148
65307
  });
@@ -67377,6 +67536,7 @@ function DashboardPanel() {
67377
67536
 
67378
67537
 
67379
67538
 
67539
+
67380
67540
 
67381
67541
 
67382
67542
  const AppShell_ADVANCED_TABS = new Set([
@@ -67863,6 +68023,10 @@ function AppShell() {
67863
68023
  mode: state.activeTab === "env" ? "visible" : "hidden",
67864
68024
  children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(EnvVarsPanel, {})
67865
68025
  }),
68026
+ mountedTabs.has("settings") && /*#__PURE__*/ (0,react_jsx_runtime.jsx)(react.Activity, {
68027
+ mode: state.activeTab === "settings" ? "visible" : "hidden",
68028
+ children: /*#__PURE__*/ (0,react_jsx_runtime.jsx)(SettingsPanel, {})
68029
+ }),
67866
68030
  showMenu && /*#__PURE__*/ (0,react_jsx_runtime.jsx)("div", {
67867
68031
  className: "fixed left-0 right-0 bottom-0 bg-black/30 backdrop-blur-sm z-30",
67868
68032
  style: {
@@ -67893,6 +68057,103 @@ function AppShell() {
67893
68057
  }
67894
68058
 
67895
68059
 
68060
+ /***/ }),
68061
+
68062
+ /***/ 26713:
68063
+ /***/ ((module) => {
68064
+
68065
+ "use strict";
68066
+ module.exports = require("next/dist/shared/lib/router/utils/is-bot");
68067
+
68068
+ /***/ }),
68069
+
68070
+ /***/ 27910:
68071
+ /***/ ((module) => {
68072
+
68073
+ "use strict";
68074
+ module.exports = require("stream");
68075
+
68076
+ /***/ }),
68077
+
68078
+ /***/ 28354:
68079
+ /***/ ((module) => {
68080
+
68081
+ "use strict";
68082
+ module.exports = require("util");
68083
+
68084
+ /***/ }),
68085
+
68086
+ /***/ 29021:
68087
+ /***/ ((module) => {
68088
+
68089
+ "use strict";
68090
+ module.exports = require("fs");
68091
+
68092
+ /***/ }),
68093
+
68094
+ /***/ 29294:
68095
+ /***/ ((module) => {
68096
+
68097
+ "use strict";
68098
+ module.exports = require("next/dist/server/app-render/work-async-storage.external.js");
68099
+
68100
+ /***/ }),
68101
+
68102
+ /***/ 31230:
68103
+ /***/ (() => {
68104
+
68105
+
68106
+
68107
+ /***/ }),
68108
+
68109
+ /***/ 31421:
68110
+ /***/ ((module) => {
68111
+
68112
+ "use strict";
68113
+ module.exports = require("node:child_process");
68114
+
68115
+ /***/ }),
68116
+
68117
+ /***/ 33873:
68118
+ /***/ ((module) => {
68119
+
68120
+ "use strict";
68121
+ module.exports = require("path");
68122
+
68123
+ /***/ }),
68124
+
68125
+ /***/ 37067:
68126
+ /***/ ((module) => {
68127
+
68128
+ "use strict";
68129
+ module.exports = require("node:http");
68130
+
68131
+ /***/ }),
68132
+
68133
+ /***/ 38084:
68134
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
68135
+
68136
+ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 19674));
68137
+ ;
68138
+ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 26751));
68139
+
68140
+
68141
+ /***/ }),
68142
+
68143
+ /***/ 41025:
68144
+ /***/ ((module) => {
68145
+
68146
+ "use strict";
68147
+ module.exports = require("next/dist/server/app-render/dynamic-access-async-storage.external.js");
68148
+
68149
+ /***/ }),
68150
+
68151
+ /***/ 43954:
68152
+ /***/ ((module) => {
68153
+
68154
+ "use strict";
68155
+ module.exports = require("next/dist/shared/lib/router/utils/interception-routes");
68156
+
67896
68157
  /***/ }),
67897
68158
 
67898
68159
  /***/ 44708: