@arcanejs/toolkit 2.0.0 → 3.1.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.
@@ -1085,7 +1085,7 @@
1085
1085
  }
1086
1086
  return dispatcher.useContext(Context);
1087
1087
  }
1088
- function useState5(initialState) {
1088
+ function useState7(initialState) {
1089
1089
  var dispatcher = resolveDispatcher();
1090
1090
  return dispatcher.useState(initialState);
1091
1091
  }
@@ -1097,7 +1097,7 @@
1097
1097
  var dispatcher = resolveDispatcher();
1098
1098
  return dispatcher.useRef(initialValue);
1099
1099
  }
1100
- function useEffect4(create, deps) {
1100
+ function useEffect5(create, deps) {
1101
1101
  var dispatcher = resolveDispatcher();
1102
1102
  return dispatcher.useEffect(create, deps);
1103
1103
  }
@@ -1880,7 +1880,7 @@
1880
1880
  exports.useContext = useContext2;
1881
1881
  exports.useDebugValue = useDebugValue;
1882
1882
  exports.useDeferredValue = useDeferredValue;
1883
- exports.useEffect = useEffect4;
1883
+ exports.useEffect = useEffect5;
1884
1884
  exports.useId = useId;
1885
1885
  exports.useImperativeHandle = useImperativeHandle;
1886
1886
  exports.useInsertionEffect = useInsertionEffect;
@@ -1888,7 +1888,7 @@
1888
1888
  exports.useMemo = useMemo3;
1889
1889
  exports.useReducer = useReducer;
1890
1890
  exports.useRef = useRef2;
1891
- exports.useState = useState5;
1891
+ exports.useState = useState7;
1892
1892
  exports.useSyncExternalStore = useSyncExternalStore;
1893
1893
  exports.useTransition = useTransition;
1894
1894
  exports.version = ReactVersion;
@@ -2832,10 +2832,10 @@
2832
2832
  return jsxWithValidation(type, props, key, false);
2833
2833
  }
2834
2834
  }
2835
- var jsx12 = jsxWithValidationDynamic;
2835
+ var jsx13 = jsxWithValidationDynamic;
2836
2836
  var jsxs7 = jsxWithValidationStatic;
2837
2837
  exports.Fragment = REACT_FRAGMENT_TYPE;
2838
- exports.jsx = jsx12;
2838
+ exports.jsx = jsx13;
2839
2839
  exports.jsxs = jsxs7;
2840
2840
  })();
2841
2841
  }
@@ -24524,8 +24524,14 @@
24524
24524
  }
24525
24525
  });
24526
24526
 
24527
- // ../toolkit-frontend/dist/chunk-35U577MM.mjs
24527
+ // ../toolkit-frontend/dist/chunk-E7JSREGM.mjs
24528
24528
  var import_react = __toESM(require_react(), 1);
24529
+ var import_react2 = __toESM(require_react(), 1);
24530
+ var __defProp2 = Object.defineProperty;
24531
+ var __export = (target, all) => {
24532
+ for (var name in all)
24533
+ __defProp2(target, name, { get: all[name], enumerable: true });
24534
+ };
24529
24535
  function switchToMouseMode(ev) {
24530
24536
  if (ev.movementX === 0 && ev.movementY === 0) return;
24531
24537
  document.body.classList.remove("touch-mode");
@@ -24543,7 +24549,7 @@
24543
24549
  });
24544
24550
  }
24545
24551
  var usePressable = (click) => {
24546
- const [touching, setTouching] = (0, import_react.useState)(false);
24552
+ const [touching, setTouching] = (0, import_react2.useState)(false);
24547
24553
  return {
24548
24554
  touching,
24549
24555
  handlers: {
@@ -24589,13 +24595,6 @@
24589
24595
  }
24590
24596
  var calculateClass = (...args) => args.filter((a2) => !!a2).join(" ");
24591
24597
 
24592
- // ../toolkit-frontend/dist/chunk-7P6ASYW6.mjs
24593
- var __defProp2 = Object.defineProperty;
24594
- var __export = (target, all) => {
24595
- for (var name in all)
24596
- __defProp2(target, name, { get: all[name], enumerable: true });
24597
- };
24598
-
24599
24598
  // ../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs
24600
24599
  var __assign = function() {
24601
24600
  __assign = Object.assign || function __assign2(t) {
@@ -24636,7 +24635,7 @@
24636
24635
  );
24637
24636
 
24638
24637
  // ../../node_modules/.pnpm/styled-components@6.1.13_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/styled-components/dist/styled-components.browser.esm.js
24639
- var import_react2 = __toESM(require_react());
24638
+ var import_react3 = __toESM(require_react());
24640
24639
  var import_shallowequal = __toESM(require_shallowequal());
24641
24640
 
24642
24641
  // ../../node_modules/.pnpm/stylis@4.3.2/node_modules/stylis/src/Enum.js
@@ -25317,7 +25316,7 @@
25317
25316
  console.error = function(t2) {
25318
25317
  for (var n2 = [], o3 = 1; o3 < arguments.length; o3++) n2[o3 - 1] = arguments[o3];
25319
25318
  E.test(t2) ? (a2 = false, N.delete(s2)) : i2.apply(void 0, __spreadArray([t2], n2, false));
25320
- }, (0, import_react2.useRef)(), a2 && !N.has(s2) && (console.warn(s2), N.add(s2));
25319
+ }, (0, import_react3.useRef)(), a2 && !N.has(s2) && (console.warn(s2), N.add(s2));
25321
25320
  } catch (e) {
25322
25321
  E.test(e.message) && N.delete(s2);
25323
25322
  } finally {
@@ -25655,26 +25654,26 @@
25655
25654
  }
25656
25655
  var Me = new ke();
25657
25656
  var ze = Fe();
25658
- var $e = import_react2.default.createContext({ shouldForwardProp: void 0, styleSheet: Me, stylis: ze });
25657
+ var $e = import_react3.default.createContext({ shouldForwardProp: void 0, styleSheet: Me, stylis: ze });
25659
25658
  var Be = $e.Consumer;
25660
- var Le = import_react2.default.createContext(void 0);
25659
+ var Le = import_react3.default.createContext(void 0);
25661
25660
  function Ge() {
25662
- return (0, import_react2.useContext)($e);
25661
+ return (0, import_react3.useContext)($e);
25663
25662
  }
25664
25663
  function Ye(e) {
25665
- var t = (0, import_react2.useState)(e.stylisPlugins), n = t[0], r2 = t[1], c2 = Ge().styleSheet, l2 = (0, import_react2.useMemo)(function() {
25664
+ var t = (0, import_react3.useState)(e.stylisPlugins), n = t[0], r2 = t[1], c2 = Ge().styleSheet, l2 = (0, import_react3.useMemo)(function() {
25666
25665
  var t2 = c2;
25667
25666
  return e.sheet ? t2 = e.sheet : e.target && (t2 = t2.reconstructWithOptions({ target: e.target }, false)), e.disableCSSOMInjection && (t2 = t2.reconstructWithOptions({ useCSSOMInjection: false })), t2;
25668
- }, [e.disableCSSOMInjection, e.sheet, e.target, c2]), u2 = (0, import_react2.useMemo)(function() {
25667
+ }, [e.disableCSSOMInjection, e.sheet, e.target, c2]), u2 = (0, import_react3.useMemo)(function() {
25669
25668
  return Fe({ options: { namespace: e.namespace, prefix: e.enableVendorPrefixes }, plugins: n });
25670
25669
  }, [e.enableVendorPrefixes, e.namespace, n]);
25671
- (0, import_react2.useEffect)(function() {
25670
+ (0, import_react3.useEffect)(function() {
25672
25671
  (0, import_shallowequal.default)(n, e.stylisPlugins) || r2(e.stylisPlugins);
25673
25672
  }, [e.stylisPlugins]);
25674
- var d = (0, import_react2.useMemo)(function() {
25673
+ var d = (0, import_react3.useMemo)(function() {
25675
25674
  return { shouldForwardProp: e.shouldForwardProp, styleSheet: l2, stylis: u2 };
25676
25675
  }, [e.shouldForwardProp, l2, u2]);
25677
- return import_react2.default.createElement($e.Provider, { value: d }, import_react2.default.createElement(Le.Provider, { value: u2 }, e.children));
25676
+ return import_react3.default.createElement($e.Provider, { value: d }, import_react3.default.createElement(Le.Provider, { value: u2 }, e.children));
25678
25677
  }
25679
25678
  var We = function() {
25680
25679
  function e(e2, t) {
@@ -25766,10 +25765,10 @@
25766
25765
  return o2;
25767
25766
  }, e;
25768
25767
  }();
25769
- var et = import_react2.default.createContext(void 0);
25768
+ var et = import_react3.default.createContext(void 0);
25770
25769
  var tt = et.Consumer;
25771
25770
  function ot(e) {
25772
- var n = import_react2.default.useContext(et), r2 = (0, import_react2.useMemo)(function() {
25771
+ var n = import_react3.default.useContext(et), r2 = (0, import_react3.useMemo)(function() {
25773
25772
  return function(e2, n2) {
25774
25773
  if (!e2) throw he(14);
25775
25774
  if (re(e2)) {
@@ -25781,7 +25780,7 @@
25781
25780
  return n2 ? __assign(__assign({}, n2), e2) : e2;
25782
25781
  }(e.theme, n);
25783
25782
  }, [e.theme, n]);
25784
- return e.children ? import_react2.default.createElement(et.Provider, { value: r2 }, e.children) : null;
25783
+ return e.children ? import_react3.default.createElement(et.Provider, { value: r2 }, e.children) : null;
25785
25784
  }
25786
25785
  var rt = {};
25787
25786
  var st = /* @__PURE__ */ new Set();
@@ -25806,8 +25805,8 @@
25806
25805
  var N2 = new Qe(s2, g2, i2 ? a2.componentStyle : void 0);
25807
25806
  function O2(e2, r3) {
25808
25807
  return function(e3, r4, s3) {
25809
- var i3 = e3.attrs, a3 = e3.componentStyle, c3 = e3.defaultProps, p3 = e3.foldedComponentIds, d2 = e3.styledComponentId, h2 = e3.target, f3 = import_react2.default.useContext(et), m3 = Ge(), y3 = e3.shouldForwardProp || m3.shouldForwardProp;
25810
- (0, import_react2.useDebugValue)(d2);
25808
+ var i3 = e3.attrs, a3 = e3.componentStyle, c3 = e3.defaultProps, p3 = e3.foldedComponentIds, d2 = e3.styledComponentId, h2 = e3.target, f3 = import_react3.default.useContext(et), m3 = Ge(), y3 = e3.shouldForwardProp || m3.shouldForwardProp;
25809
+ (0, import_react3.useDebugValue)(d2);
25811
25810
  var v2 = I(r4, f3, c3) || C, g3 = function(e4, n, o2) {
25812
25811
  for (var r5, s4 = __assign(__assign({}, n), { className: void 0, theme: o2 }), i4 = 0; i4 < e4.length; i4 += 1) {
25813
25812
  var a4 = re(r5 = e4[i4]) ? r5(s4) : r5;
@@ -25818,15 +25817,15 @@
25818
25817
  for (var b3 in g3) void 0 === g3[b3] || "$" === b3[0] || "as" === b3 || "theme" === b3 && g3.theme === v2 || ("forwardedAs" === b3 ? w3.as = g3.forwardedAs : y3 && !y3(b3, S3) || (w3[b3] = g3[b3], y3 || false || isPropValid(b3) || st.has(b3) || !A.has(S3) || (st.add(b3), console.warn('styled-components: it looks like an unknown prop "'.concat(b3, '" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via `<StyleSheetManager shouldForwardProp={...}>` (connect an API like `@emotion/is-prop-valid`) or consider using transient props (`$` prefix for automatic filtering.)')))));
25819
25818
  var E3 = function(e4, t) {
25820
25819
  var n = Ge(), o2 = e4.generateAndInjectStyles(t, n.styleSheet, n.stylis);
25821
- return (0, import_react2.useDebugValue)(o2), o2;
25820
+ return (0, import_react3.useDebugValue)(o2), o2;
25822
25821
  }(a3, g3);
25823
25822
  e3.warnTooManyClasses && e3.warnTooManyClasses(E3);
25824
25823
  var N3 = ie(p3, d2);
25825
- return E3 && (N3 += " " + E3), g3.className && (N3 += " " + g3.className), w3[L(S3) && !A.has(S3) ? "class" : "className"] = N3, w3.ref = s3, (0, import_react2.createElement)(S3, w3);
25824
+ return E3 && (N3 += " " + E3), g3.className && (N3 += " " + g3.className), w3[L(S3) && !A.has(S3) ? "class" : "className"] = N3, w3.ref = s3, (0, import_react3.createElement)(S3, w3);
25826
25825
  }(D2, e2, r3);
25827
25826
  }
25828
25827
  O2.displayName = y2;
25829
- var D2 = import_react2.default.forwardRef(O2);
25828
+ var D2 = import_react3.default.forwardRef(O2);
25830
25829
  return D2.attrs = S2, D2.componentStyle = N2, D2.displayName = y2, D2.shouldForwardProp = w2, D2.foldedComponentIds = i2 ? ie(a2.foldedComponentIds, a2.styledComponentId) : "", D2.styledComponentId = g2, D2.target = i2 ? a2.target : e, Object.defineProperty(D2, "defaultProps", { get: function() {
25831
25830
  return this._foldedDefaultProps;
25832
25831
  }, set: function(e2) {
@@ -25897,10 +25896,10 @@
25897
25896
  var i2 = lt.apply(void 0, __spreadArray([n], r2, false)), a2 = "sc-global-".concat($(JSON.stringify(i2))), c2 = new ht(i2, a2);
25898
25897
  P(a2);
25899
25898
  var l2 = function(e) {
25900
- var t = Ge(), n2 = import_react2.default.useContext(et), r3 = import_react2.default.useRef(t.styleSheet.allocateGSInstance(a2)).current;
25901
- return import_react2.default.Children.count(e.children) && console.warn("The global style component ".concat(a2, " was given child JSX. createGlobalStyle does not render children.")), i2.some(function(e2) {
25899
+ var t = Ge(), n2 = import_react3.default.useContext(et), r3 = import_react3.default.useRef(t.styleSheet.allocateGSInstance(a2)).current;
25900
+ return import_react3.default.Children.count(e.children) && console.warn("The global style component ".concat(a2, " was given child JSX. createGlobalStyle does not render children.")), i2.some(function(e2) {
25902
25901
  return "string" == typeof e2 && -1 !== e2.indexOf("@import");
25903
- }) && console.warn("Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app."), t.styleSheet.server && u2(r3, e, t.styleSheet, n2, t.stylis), import_react2.default.useLayoutEffect(function() {
25902
+ }) && console.warn("Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app."), t.styleSheet.server && u2(r3, e, t.styleSheet, n2, t.stylis), import_react3.default.useLayoutEffect(function() {
25904
25903
  if (!t.styleSheet.server) return u2(r3, e, t.styleSheet, n2, t.stylis), function() {
25905
25904
  return c2.removeStyles(r3, t.styleSheet);
25906
25905
  };
@@ -25913,7 +25912,7 @@
25913
25912
  c2.renderStyles(e, i3, o2, s3);
25914
25913
  }
25915
25914
  }
25916
- return import_react2.default.memo(l2);
25915
+ return import_react3.default.memo(l2);
25917
25916
  }
25918
25917
  var vt = function() {
25919
25918
  function e() {
@@ -25932,14 +25931,14 @@
25932
25931
  var r2 = e2.instance.toString();
25933
25932
  if (!r2) return [];
25934
25933
  var s2 = ((n = {})[f] = "", n[y] = v, n.dangerouslySetInnerHTML = { __html: r2 }, n), i2 = Ce();
25935
- return i2 && (s2.nonce = i2), [import_react2.default.createElement("style", __assign({}, s2, { key: "sc-0-0" }))];
25934
+ return i2 && (s2.nonce = i2), [import_react3.default.createElement("style", __assign({}, s2, { key: "sc-0-0" }))];
25936
25935
  }, this.seal = function() {
25937
25936
  e2.sealed = true;
25938
25937
  }, this.instance = new ke({ isServer: true }), this.sealed = false;
25939
25938
  }
25940
25939
  return e.prototype.collectStyles = function(e2) {
25941
25940
  if (this.sealed) throw he(2);
25942
- return import_react2.default.createElement(Ye, { sheet: this.instance }, e2);
25941
+ return import_react3.default.createElement(Ye, { sheet: this.instance }, e2);
25943
25942
  }, e.prototype.interleaveWithNodeStream = function(e2) {
25944
25943
  throw he(3);
25945
25944
  }, e;
@@ -25948,7 +25947,7 @@
25948
25947
  var St = "__sc-".concat(f, "__");
25949
25948
  "undefined" != typeof window && (window[St] || (window[St] = 0), 1 === window[St] && console.warn("It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\n\nSee https://s-c.sh/2BAXzed for more info."), window[St] += 1);
25950
25949
 
25951
- // ../toolkit-frontend/dist/chunk-UJVH3PQF.mjs
25950
+ // ../toolkit-frontend/dist/chunk-MESQQRK3.mjs
25952
25951
  var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
25953
25952
  var core_exports = {};
25954
25953
  __export(core_exports, {
@@ -25983,7 +25982,8 @@
25983
25982
  `;
25984
25983
  var TRANSPARENCY_SVG_URI = `data:image/svg+xml,${encodeURIComponent(TRANSPARENCY_SVG)}`;
25985
25984
 
25986
- // ../toolkit-frontend/dist/chunk-6Z2ACPNM.mjs
25985
+ // ../toolkit-frontend/dist/chunk-BQS6YM6U.mjs
25986
+ var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
25987
25987
  var GlobalStyle = ft`
25988
25988
  body {
25989
25989
  &.touch-mode * {
@@ -25991,7 +25991,8 @@ body {
25991
25991
  }
25992
25992
  }
25993
25993
  `;
25994
- var THEME = {
25994
+ var DARK_THEME = {
25995
+ pageBg: "#333",
25995
25996
  colorGreen: "#98c379",
25996
25997
  colorRed: "#e06c75",
25997
25998
  colorAmber: "#d19a66",
@@ -26006,19 +26007,64 @@ body {
26006
26007
  hintRGB: "66, 134, 244",
26007
26008
  hintDark1: "#2a77f3",
26008
26009
  textNormal: "#F3F3F5",
26010
+ textActive: "#ffffff",
26009
26011
  textMuted: "#777777",
26012
+ shadows: {
26013
+ boxShadowInset: "inset 0px 0px 8px 0px rgba(0, 0, 0, 0.3)",
26014
+ textShadow: "0 -1px rgba(0, 0, 0, 0.7)",
26015
+ textShadowActive: "0 -1px rgba(0, 0, 0, 0.4)"
26016
+ },
26017
+ gradients: {
26018
+ button: "linear-gradient(to bottom, #4f5053, #343436)",
26019
+ buttonHover: "linear-gradient(to bottom, #5e6064, #393a3b)",
26020
+ buttonActive: "linear-gradient(to bottom, #242525, #37383a)",
26021
+ buttonPressedHover: "linear-gradient(to bottom, #282929, #414243)",
26022
+ hintPressed: "linear-gradient(to bottom,#2a77f3,#4286f4)"
26023
+ },
26010
26024
  sizingPx: {
26011
26025
  spacing: 15,
26012
26026
  unitHeight: 40
26013
26027
  }
26014
26028
  };
26029
+ var LIGHT_THEME = {
26030
+ pageBg: "#f8f9fa",
26031
+ colorGreen: "#22863a",
26032
+ colorRed: "#d73a49",
26033
+ colorAmber: "#b08800",
26034
+ bgDark1: "#e9ecef",
26035
+ bg: "#ffffff",
26036
+ bgLight1: "#f5f5f5",
26037
+ borderDark: "#c7c7c7",
26038
+ borderLight: "#d7d7d7",
26039
+ borderLighter: "#eaecef",
26040
+ borderLighterer: "#f6f8fa",
26041
+ hint: "#4286f4",
26042
+ hintRGB: "0, 92, 197",
26043
+ hintDark1: "#2a77f3",
26044
+ textNormal: "#24292e",
26045
+ textActive: "#202020",
26046
+ textMuted: "#6a737d",
26047
+ shadows: {
26048
+ boxShadowInset: "inset 0px 0px 8px 0px rgba(0, 0, 0, 0.05)",
26049
+ textShadow: "0 1px rgba(255, 255, 255, 0.7)",
26050
+ textShadowActive: "0 1px rgba(255, 255, 255, 0.4)"
26051
+ },
26052
+ gradients: {
26053
+ button: "linear-gradient(to bottom, #e1e4e8, #d1d5da)",
26054
+ buttonHover: "linear-gradient(to bottom, #d1d5da, #c1c6cc)",
26055
+ buttonActive: "linear-gradient(to bottom, #b1b6bc, #d2d6da)",
26056
+ buttonPressedHover: "linear-gradient(to bottom, #a1a6ac, #91969c)",
26057
+ hintPressed: "linear-gradient(to bottom, #438bff, #85b3ff)"
26058
+ },
26059
+ sizingPx: DARK_THEME.sizingPx
26060
+ };
26015
26061
  var BaseStyle = ft`
26016
26062
  * {
26017
26063
  box-sizing: border-box;
26018
26064
  }
26019
26065
 
26020
26066
  body {
26021
- background: #333;
26067
+ background: ${(p2) => p2.theme.pageBg};
26022
26068
  margin: 0;
26023
26069
  padding: 0;
26024
26070
  font-size: 14px;
@@ -26027,8 +26073,8 @@ body {
26027
26073
  `;
26028
26074
  var buttonStateNormal = lt`
26029
26075
  color: ${(p2) => p2.theme.textNormal};
26030
- background: linear-gradient(to bottom, #4f5053, #343436);
26031
- text-shadow: 0 -1px rgba(0, 0, 0, 0.7);
26076
+ background: ${(p2) => p2.theme.gradients.button};
26077
+ text-shadow: ${(p2) => p2.theme.shadows.textShadow};
26032
26078
  box-shadow:
26033
26079
  inset 0 1px 0 rgba(255, 255, 255, 0.15),
26034
26080
  0 1px 0 0 rgba(0, 0, 0, 0.25);
@@ -26036,14 +26082,14 @@ body {
26036
26082
  var buttonStateNormalHover = lt`
26037
26083
  color: ${(p2) => p2.theme.textNormal};
26038
26084
  outline-color: rgba(243, 243, 245, 0.3);
26039
- background: linear-gradient(to bottom, #5e6064, #393a3b);
26040
- text-shadow: 0 -1px rgba(0, 0, 0, 0.7);
26085
+ background: ${(p2) => p2.theme.gradients.buttonHover};
26086
+ text-shadow: ${(p2) => p2.theme.shadows.textShadow};
26041
26087
  `;
26042
26088
  var buttonStateNormalActive = lt`
26043
- color: #ffffff;
26089
+ color: ${(p2) => p2.theme.textNormal};
26044
26090
  outline-color: rgba(255, 255, 255, 0.3);
26045
- background: linear-gradient(to bottom, #242525, #37383a);
26046
- text-shadow: 0 -1px rgba(0, 0, 0, 0.4);
26091
+ background: ${(p2) => p2.theme.gradients.buttonActive};
26092
+ text-shadow: ${(p2) => p2.theme.shadows.textShadowActive};
26047
26093
  box-shadow:
26048
26094
  inset 0 1px 2px rgba(0, 0, 0, 0.2),
26049
26095
  0 1px 0 0 rgba(255, 255, 255, 0.15);
@@ -26056,7 +26102,7 @@ body {
26056
26102
  var buttonStatePressedHover = lt`
26057
26103
  ${buttonStateNormalActive}
26058
26104
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(255,255,255,0.15);
26059
- background: linear-gradient(to bottom, #282929, #414243);
26105
+ background: ${(p2) => p2.theme.gradients.buttonPressedHover};
26060
26106
  `;
26061
26107
  var buttonStatePressedActive = buttonStateNormalActive;
26062
26108
  var buttonStateDisabled = lt`
@@ -26128,16 +26174,14 @@ body {
26128
26174
  var isCoreComponent = (component) => component.namespace === "core";
26129
26175
 
26130
26176
  // ../toolkit-frontend/dist/components/index.mjs
26131
- var import_react3 = __toESM(require_react(), 1);
26132
26177
  var import_react4 = __toESM(require_react(), 1);
26133
- var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
26134
26178
  var import_react5 = __toESM(require_react(), 1);
26135
- var import_react6 = __toESM(require_react(), 1);
26136
26179
  var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
26180
+ var import_react6 = __toESM(require_react(), 1);
26181
+ var import_react7 = __toESM(require_react(), 1);
26137
26182
  var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
26138
26183
  var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
26139
26184
  var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
26140
- var import_react7 = __toESM(require_react(), 1);
26141
26185
  var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
26142
26186
  var import_react8 = __toESM(require_react(), 1);
26143
26187
  var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
@@ -26147,8 +26191,10 @@ body {
26147
26191
  var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
26148
26192
  var import_react11 = __toESM(require_react(), 1);
26149
26193
  var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
26194
+ var import_react12 = __toESM(require_react(), 1);
26150
26195
  var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
26151
- var StageContext = (0, import_react4.createContext)(
26196
+ var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
26197
+ var StageContext = (0, import_react5.createContext)(
26152
26198
  new Proxy({}, {
26153
26199
  get: () => {
26154
26200
  throw new Error("Missing StageContext.Provider");
@@ -26172,7 +26218,7 @@ body {
26172
26218
  padding: 0 4px;
26173
26219
  `;
26174
26220
  var Button = (props) => {
26175
- const { sendMessage } = import_react3.default.useContext(StageContext);
26221
+ const { sendMessage } = import_react4.default.useContext(StageContext);
26176
26222
  const { touching, handlers } = usePressable(
26177
26223
  () => sendMessage?.({
26178
26224
  type: "component-message",
@@ -26182,7 +26228,7 @@ body {
26182
26228
  })
26183
26229
  );
26184
26230
  const { state } = props.info;
26185
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
26231
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
26186
26232
  "div",
26187
26233
  {
26188
26234
  className: calculateClass(
@@ -26193,10 +26239,10 @@ body {
26193
26239
  ...handlers,
26194
26240
  title: state.state === "error" ? state.error : void 0,
26195
26241
  children: [
26196
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: TOUCH_INDICATOR_CLASS }),
26197
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(ButtonContents, { children: [
26198
- props.info.icon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Icon, { icon: props.info.icon }),
26199
- props.info.text && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ButtonLabel, { children: props.info.text })
26242
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: TOUCH_INDICATOR_CLASS }),
26243
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(ButtonContents, { children: [
26244
+ props.info.icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Icon, { icon: props.info.icon }),
26245
+ props.info.text && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ButtonLabel, { children: props.info.text })
26200
26246
  ] })
26201
26247
  ]
26202
26248
  }
@@ -26214,8 +26260,8 @@ body {
26214
26260
  }
26215
26261
 
26216
26262
  &.${ERROR_CLASS} {
26217
- color: ${THEME.colorRed};
26218
- border-color: ${THEME.colorRed};
26263
+ color: ${(p2) => p2.theme.colorRed};
26264
+ border-color: ${(p2) => p2.theme.colorRed};
26219
26265
  }
26220
26266
 
26221
26267
  &.${TOUCHING_CLASS} {
@@ -26236,26 +26282,26 @@ body {
26236
26282
  return "dark";
26237
26283
  }
26238
26284
  }
26239
- var LastNestedColor = import_react6.default.createContext("dark");
26285
+ var LastNestedColor = import_react7.default.createContext("dark");
26240
26286
  var NestedContent = ({ className, children }) => {
26241
- const color = import_react6.default.useContext(LastNestedColor);
26242
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: calculateClass(className, `color-${color}`), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(LastNestedColor.Provider, { value: nextColor(color), children }) });
26287
+ const color = import_react7.default.useContext(LastNestedColor);
26288
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: calculateClass(className, `color-${color}`), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(LastNestedColor.Provider, { value: nextColor(color), children }) });
26243
26289
  };
26244
26290
  NestedContent.displayName = "NestedContent";
26245
26291
  var StyledNestedContent = dt(NestedContent)`
26246
- padding: ${THEME.sizingPx.spacing / 2}px;
26247
- box-shadow: inset 0px 0px 8px 0px rgba(0, 0, 0, 0.3);
26292
+ padding: ${(p2) => p2.theme.sizingPx.spacing / 2}px;
26293
+ box-shadow: ${(p2) => p2.theme.shadows.boxShadowInset};
26248
26294
 
26249
26295
  &.color-dark {
26250
- background: ${THEME.bgDark1};
26296
+ background: ${(p2) => p2.theme.bgDark1};
26251
26297
  }
26252
26298
 
26253
26299
  &.color-lighter {
26254
- background: ${THEME.bg};
26300
+ background: ${(p2) => p2.theme.bg};
26255
26301
  }
26256
26302
 
26257
26303
  &.color-lighterer {
26258
- background: ${THEME.bgLight1};
26304
+ background: ${(p2) => p2.theme.bgLight1};
26259
26305
  }
26260
26306
  `;
26261
26307
  var CollapseIcon = dt(Icon)({
@@ -26265,11 +26311,11 @@ body {
26265
26311
  display: flex;
26266
26312
  align-items: center;
26267
26313
  padding: 5px 2px;
26268
- background: ${THEME.borderDark};
26269
- border-bottom: 1px solid ${THEME.borderDark};
26314
+ background: ${(p2) => p2.theme.borderDark};
26315
+ border-bottom: 1px solid ${(p2) => p2.theme.borderDark};
26270
26316
 
26271
26317
  &.touching {
26272
- background: ${THEME.bgDark1};
26318
+ background: ${(p2) => p2.theme.bgDark1};
26273
26319
  }
26274
26320
 
26275
26321
  &.collapsed {
@@ -26283,8 +26329,8 @@ body {
26283
26329
  var Label = dt.span`
26284
26330
  display: inline-block;
26285
26331
  border-radius: 3px;
26286
- background: ${THEME.bg};
26287
- border: 1px solid ${THEME.bgLight1};
26332
+ background: ${(p2) => p2.theme.bg};
26333
+ border: 1px solid ${(p2) => p2.theme.bgLight1};
26288
26334
  padding: 3px 4px;
26289
26335
  `;
26290
26336
  var Grow = dt.span({
@@ -26302,7 +26348,7 @@ body {
26302
26348
  ${(p2) => p2.info.direction === "vertical" ? "" : "align-items: center;"}
26303
26349
 
26304
26350
  > * {
26305
- margin: ${THEME.sizingPx.spacing / 2}px;
26351
+ margin: ${(p2) => p2.theme.sizingPx.spacing / 2}px;
26306
26352
  }
26307
26353
  `;
26308
26354
  var EditableTitle = dt.span`
@@ -26317,14 +26363,14 @@ body {
26317
26363
  }
26318
26364
 
26319
26365
  > .icon {
26320
- color: ${THEME.bg};
26366
+ color: ${(p2) => p2.theme.textMuted};
26321
26367
  }
26322
26368
 
26323
26369
  &:hover {
26324
- background: ${THEME.bg};
26370
+ background: ${(p2) => p2.theme.bg};
26325
26371
 
26326
26372
  > .icon {
26327
- color: ${THEME.hint};
26373
+ color: ${(p2) => p2.theme.hint};
26328
26374
  }
26329
26375
  }
26330
26376
  `;
@@ -26332,9 +26378,9 @@ body {
26332
26378
  background: none;
26333
26379
  border: none;
26334
26380
  outline: none;
26335
- color: ${THEME.textNormal};
26381
+ color: ${(p2) => p2.theme.textNormal};
26336
26382
  `;
26337
- var GroupStateContext = import_react5.default.createContext({
26383
+ var GroupStateContext = import_react6.default.createContext({
26338
26384
  isCollapsed: () => {
26339
26385
  throw new Error("missing GroupStateContext");
26340
26386
  },
@@ -26343,7 +26389,7 @@ body {
26343
26389
  }
26344
26390
  });
26345
26391
  var GroupStateWrapper = ({ openByDefault, children }) => {
26346
- const [state, setState] = (0, import_react5.useState)({});
26392
+ const [state, setState] = (0, import_react6.useState)({});
26347
26393
  const isCollapsed = (key, defaultState) => {
26348
26394
  let match2 = state[key];
26349
26395
  if (!match2) {
@@ -26361,13 +26407,13 @@ body {
26361
26407
  [key]: current[key] === "closed" ? "open" : "closed"
26362
26408
  }));
26363
26409
  };
26364
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(GroupStateContext.Provider, { value: { isCollapsed, toggleCollapsed }, children });
26410
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(GroupStateContext.Provider, { value: { isCollapsed, toggleCollapsed }, children });
26365
26411
  };
26366
26412
  var Group = ({ className, info }) => {
26367
- const groupState = (0, import_react5.useContext)(GroupStateContext);
26368
- const { renderComponent, sendMessage } = (0, import_react5.useContext)(StageContext);
26369
- const [editingTitle, setEditingTitle] = (0, import_react5.useState)(false);
26370
- const children = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(GroupChildren, { info, children: info.children.map(renderComponent) });
26413
+ const groupState = (0, import_react6.useContext)(GroupStateContext);
26414
+ const { renderComponent, sendMessage } = (0, import_react6.useContext)(StageContext);
26415
+ const [editingTitle, setEditingTitle] = (0, import_react6.useState)(false);
26416
+ const children = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(GroupChildren, { info, children: info.children.map(renderComponent) });
26371
26417
  const collapsible = !!info.defaultCollapsibleState;
26372
26418
  const collapsed = info.defaultCollapsibleState ? groupState.isCollapsed(info.key, info.defaultCollapsibleState) : false;
26373
26419
  const collapsePressable = usePressable(
@@ -26396,9 +26442,9 @@ body {
26396
26442
  }
26397
26443
  };
26398
26444
  const hasBorder = info.border || displayHeader;
26399
- const childrenElements = hasBorder ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(StyledNestedContent, { children }) : children;
26400
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: calculateClass(className, !hasBorder && "no-border"), children: [
26401
- displayHeader ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
26445
+ const childrenElements = hasBorder ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyledNestedContent, { children }) : children;
26446
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: calculateClass(className, !hasBorder && "no-border"), children: [
26447
+ displayHeader ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
26402
26448
  Header,
26403
26449
  {
26404
26450
  className: calculateClass(
@@ -26406,15 +26452,15 @@ body {
26406
26452
  collapsible && collapsed && "collapsed"
26407
26453
  ),
26408
26454
  children: [
26409
- collapsible && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
26455
+ collapsible && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
26410
26456
  CollapseIcon,
26411
26457
  {
26412
26458
  icon: collapsed ? "arrow_right" : "arrow_drop_down",
26413
26459
  ...collapsePressable.handlers
26414
26460
  }
26415
26461
  ),
26416
- info.labels?.map((l2) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Label, { children: l2.text })),
26417
- showTitle && (info.editableTitle ? editingTitle ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
26462
+ info.labels?.map((l2) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Label, { children: l2.text })),
26463
+ showTitle && (info.editableTitle ? editingTitle ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
26418
26464
  TitleInput,
26419
26465
  {
26420
26466
  ref: (input) => input?.focus(),
@@ -26422,11 +26468,11 @@ body {
26422
26468
  onKeyDown: keyDown,
26423
26469
  defaultValue: info.title
26424
26470
  }
26425
- ) : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(EditableTitle, { onClick: () => setEditingTitle(true), children: [
26426
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: info.title }),
26427
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Icon, { className: "icon", icon: "edit" })
26428
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: info.title })),
26429
- collapsible ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CollapseBar, { ...collapsePressable.handlers }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Grow, {}),
26471
+ ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(EditableTitle, { onClick: () => setEditingTitle(true), children: [
26472
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { children: info.title }),
26473
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Icon, { className: "icon", icon: "edit" })
26474
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { children: info.title })),
26475
+ collapsible ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CollapseBar, { ...collapsePressable.handlers }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Grow, {}),
26430
26476
  info.headers?.map((h) => h.children.map((c2) => renderComponent(c2)))
26431
26477
  ]
26432
26478
  }
@@ -26436,12 +26482,12 @@ body {
26436
26482
  };
26437
26483
  Group.displayName = "Group";
26438
26484
  var StyledGroup = dt(Group)`
26439
- border: 1px solid ${THEME.borderDark};
26485
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26440
26486
 
26441
26487
  > .title {
26442
26488
  padding: 5px;
26443
- background: ${THEME.borderDark};
26444
- border-bottom: 1px solid ${THEME.borderDark};
26489
+ background: ${(p2) => p2.theme.borderDark};
26490
+ border-bottom: 1px solid ${(p2) => p2.theme.borderDark};
26445
26491
  }
26446
26492
 
26447
26493
  &.no-border {
@@ -26449,7 +26495,7 @@ body {
26449
26495
  margin: 0 !important;
26450
26496
  }
26451
26497
  `;
26452
- var Label2 = ({ className, info }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className, children: info.text });
26498
+ var Label2 = ({ className, info }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className, children: info.text });
26453
26499
  var StyledLabel = dt(Label2)`
26454
26500
  font-weight: ${(p2) => p2.info.bold ? "bold" : "normal"};
26455
26501
  white-space: nowrap;
@@ -26463,7 +26509,7 @@ body {
26463
26509
  background: url('${TRANSPARENCY_SVG_URI}');
26464
26510
  background-repeat: repeat;
26465
26511
  background-size: 10px;
26466
- border: 1px solid ${THEME.borderDark};
26512
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26467
26513
 
26468
26514
  &.${CLS_GROW} {
26469
26515
  flex-grow: 1;
@@ -26473,7 +26519,7 @@ body {
26473
26519
  width: 100%;
26474
26520
  height: 100%;
26475
26521
  `;
26476
- var Rect = ({ className, info }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Wrapper, { className: calculateClass(className, info.grow && CLS_GROW), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Inner, { style: { backgroundColor: info.color } }) });
26522
+ var Rect = ({ className, info }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Wrapper, { className: calculateClass(className, info.grow && CLS_GROW), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Inner, { style: { backgroundColor: info.color } }) });
26477
26523
  var CLASS_SLIDER_DISPLAY = "slider-display";
26478
26524
  var CLASS_SLIDER_VALUE = "slider-value";
26479
26525
  var CLASS_GRADIENT = "gradient";
@@ -26498,16 +26544,16 @@ body {
26498
26544
  return pageX - rect.left;
26499
26545
  };
26500
26546
  var SliderButton = ({ info, className }) => {
26501
- const { sendMessage } = import_react7.default.useContext(StageContext);
26502
- const [state, setState] = import_react7.default.useState({ state: "closed" });
26503
- const input = import_react7.default.useRef(null);
26547
+ const { sendMessage } = import_react8.default.useContext(StageContext);
26548
+ const [state, setState] = import_react8.default.useState({ state: "closed" });
26549
+ const input = import_react8.default.useRef(null);
26504
26550
  const displayValue = (value2) => {
26505
26551
  if (info.max === 1 && info.min === 0) {
26506
26552
  return `${Math.round(value2 * 100)}%`;
26507
26553
  }
26508
26554
  return NUMBER_FORMATTER.format(value2);
26509
26555
  };
26510
- const sendValue = (0, import_react7.useCallback)(
26556
+ const sendValue = (0, import_react8.useCallback)(
26511
26557
  (value2) => sendMessage?.({
26512
26558
  type: "component-message",
26513
26559
  namespace: "core",
@@ -26517,7 +26563,7 @@ body {
26517
26563
  }),
26518
26564
  [sendMessage, info.key]
26519
26565
  );
26520
- const sanitizeValue = (0, import_react7.useCallback)(
26566
+ const sanitizeValue = (0, import_react8.useCallback)(
26521
26567
  (value2) => {
26522
26568
  const i2 = Math.round((value2 - info.min) / info.step);
26523
26569
  const v2 = i2 * info.step + info.min;
@@ -26525,13 +26571,13 @@ body {
26525
26571
  },
26526
26572
  [info.min, info.max, info.step]
26527
26573
  );
26528
- const getNewValue = (0, import_react7.useCallback)(
26574
+ const getNewValue = (0, import_react8.useCallback)(
26529
26575
  (startValue, diff) => {
26530
26576
  return sanitizeValue((startValue || 0) + diff);
26531
26577
  },
26532
26578
  [sanitizeValue]
26533
26579
  );
26534
- const getCurrentInputValue = (0, import_react7.useCallback)(
26580
+ const getCurrentInputValue = (0, import_react8.useCallback)(
26535
26581
  (e) => {
26536
26582
  const float = parseFloat(e.currentTarget.value);
26537
26583
  return sanitizeValue(isNaN(float) ? info.value || 0 : float);
@@ -26607,7 +26653,7 @@ body {
26607
26653
  const sliderGradient = gradientStops ? {
26608
26654
  background: `linear-gradient(90deg, ${gradientStops.join(", ")}), url(${TRANSPARENCY_SVG_URI})`
26609
26655
  } : void 0;
26610
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
26656
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
26611
26657
  "div",
26612
26658
  {
26613
26659
  className: calculateClass(
@@ -26615,7 +26661,7 @@ body {
26615
26661
  `state-${state.state}`,
26616
26662
  info.grow && CLASS_GROW
26617
26663
  ),
26618
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
26664
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
26619
26665
  "div",
26620
26666
  {
26621
26667
  className: "inner",
@@ -26624,7 +26670,7 @@ body {
26624
26670
  onTouchStart,
26625
26671
  style: state.state === "touching" ? { left: state.innerLeft } : {},
26626
26672
  children: [
26627
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
26673
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
26628
26674
  "input",
26629
26675
  {
26630
26676
  type: "text",
@@ -26634,8 +26680,8 @@ body {
26634
26680
  onKeyDown
26635
26681
  }
26636
26682
  ),
26637
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: CLASS_SLIDER_VALUE, children: valueDisplay }),
26638
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
26683
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: CLASS_SLIDER_VALUE, children: valueDisplay }),
26684
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
26639
26685
  "div",
26640
26686
  {
26641
26687
  className: calculateClass(
@@ -26643,10 +26689,10 @@ body {
26643
26689
  sliderGradient && CLASS_GRADIENT
26644
26690
  ),
26645
26691
  style: sliderGradient,
26646
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "inner", style: { width: valueCSSPercent } })
26692
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "inner", style: { width: valueCSSPercent } })
26647
26693
  }
26648
26694
  ),
26649
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: CLASS_SLIDER_VALUE, children: valueDisplay })
26695
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: CLASS_SLIDER_VALUE, children: valueDisplay })
26650
26696
  ]
26651
26697
  }
26652
26698
  )
@@ -26674,11 +26720,11 @@ body {
26674
26720
  cursor: pointer;
26675
26721
  transition: all 200ms;
26676
26722
  border-radius: 3px;
26677
- border: 1px solid ${THEME.borderDark};
26723
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26678
26724
  ${buttonStateNormal}
26679
26725
 
26680
26726
  > input {
26681
- color: ${THEME.textNormal};
26727
+ color: ${(p2) => p2.theme.textNormal};
26682
26728
  opacity: 0;
26683
26729
  margin: 0 -9px;
26684
26730
  padding: 6px 8px;
@@ -26686,22 +26732,22 @@ body {
26686
26732
  pointer-events: none;
26687
26733
  transition: all 200ms;
26688
26734
  border-radius: 3px;
26689
- background: ${THEME.bgDark1};
26690
- border: 1px solid ${THEME.borderDark};
26735
+ background: ${(p2) => p2.theme.bgDark1};
26736
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26691
26737
  overflow: hidden;
26692
- box-shadow: inset 0px 0px 8px 0px rgba(0, 0, 0, 0.3);
26738
+ box-shadow: ${(p2) => p2.theme.shadows.boxShadowInset};
26693
26739
  }
26694
26740
 
26695
26741
  > .${CLASS_SLIDER_DISPLAY} {
26696
26742
  flex-grow: 1;
26697
26743
  margin: 0 ${SLIDER_PADDING / 2}px;
26698
26744
  height: 4px;
26699
- background: ${THEME.bgDark1};
26700
- border: 1px solid ${THEME.borderDark};
26745
+ background: ${(p2) => p2.theme.bgDark1};
26746
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26701
26747
 
26702
26748
  > .inner {
26703
26749
  height: 100%;
26704
- background: ${THEME.hint};
26750
+ background: ${(p2) => p2.theme.hint};
26705
26751
  }
26706
26752
 
26707
26753
  &.${CLASS_GRADIENT} {
@@ -26710,7 +26756,7 @@ body {
26710
26756
  > .inner {
26711
26757
  position: relative;
26712
26758
  background: none;
26713
- border-right: 2px solid ${THEME.borderDark};
26759
+ border-right: 2px solid ${(p2) => p2.theme.borderDark};
26714
26760
 
26715
26761
  &::before {
26716
26762
  content: '';
@@ -26719,7 +26765,7 @@ body {
26719
26765
  top: -5px;
26720
26766
  bottom: -5px;
26721
26767
  right: -3px;
26722
- background: ${THEME.borderDark};
26768
+ background: ${(p2) => p2.theme.borderDark};
26723
26769
  }
26724
26770
 
26725
26771
  &::after {
@@ -26729,7 +26775,7 @@ body {
26729
26775
  top: -4px;
26730
26776
  bottom: -4px;
26731
26777
  right: -2px;
26732
- background: ${THEME.textNormal};
26778
+ background: ${(p2) => p2.theme.textNormal};
26733
26779
  }
26734
26780
  }
26735
26781
  }
@@ -26769,7 +26815,7 @@ body {
26769
26815
  z-index: 100;
26770
26816
 
26771
26817
  .inner {
26772
- background: ${THEME.bgDark1};
26818
+ background: ${(p2) => p2.theme.bgDark1};
26773
26819
  width: ${OPEN_SLIDER_WIDTH}px;
26774
26820
 
26775
26821
  > .${CLASS_SLIDER_VALUE} {
@@ -26782,9 +26828,9 @@ body {
26782
26828
  var CLASS_TOUCHING = "touching";
26783
26829
  var TOUCH_INDICATOR_CLASS2 = "touch-indicator";
26784
26830
  var Switch = ({ className, info }) => {
26785
- const { sendMessage } = import_react8.default.useContext(StageContext);
26786
- const [touching, setTouching] = (0, import_react8.useState)(false);
26787
- const onClick = (0, import_react8.useMemo)(
26831
+ const { sendMessage } = import_react9.default.useContext(StageContext);
26832
+ const [touching, setTouching] = (0, import_react9.useState)(false);
26833
+ const onClick = (0, import_react9.useMemo)(
26788
26834
  () => () => {
26789
26835
  sendMessage?.({
26790
26836
  type: "component-message",
@@ -26795,14 +26841,14 @@ body {
26795
26841
  },
26796
26842
  [sendMessage, info.key]
26797
26843
  );
26798
- const onTouchStart = (0, import_react8.useMemo)(
26844
+ const onTouchStart = (0, import_react9.useMemo)(
26799
26845
  () => (event) => {
26800
26846
  event.preventDefault();
26801
26847
  setTouching(true);
26802
26848
  },
26803
26849
  []
26804
26850
  );
26805
- const onTouchEnd = (0, import_react8.useMemo)(
26851
+ const onTouchEnd = (0, import_react9.useMemo)(
26806
26852
  () => (event) => {
26807
26853
  event.preventDefault();
26808
26854
  setTouching(false);
@@ -26810,7 +26856,7 @@ body {
26810
26856
  },
26811
26857
  []
26812
26858
  );
26813
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
26859
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
26814
26860
  "div",
26815
26861
  {
26816
26862
  className: calculateClass(className, touching && CLASS_TOUCHING),
@@ -26818,11 +26864,11 @@ body {
26818
26864
  onTouchStart,
26819
26865
  onTouchEnd,
26820
26866
  children: [
26821
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: TOUCH_INDICATOR_CLASS2 }),
26822
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "inner", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "slider" + (info.state === "on" ? " on" : ""), children: [
26823
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "on-text", children: "ON" }),
26824
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "off-text", children: "OFF" }),
26825
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "button" })
26867
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: TOUCH_INDICATOR_CLASS2 }),
26868
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "inner", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "slider" + (info.state === "on" ? " on" : ""), children: [
26869
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "on-text", children: "ON" }),
26870
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "off-text", children: "OFF" }),
26871
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "button" })
26826
26872
  ] }) })
26827
26873
  ]
26828
26874
  }
@@ -26842,7 +26888,7 @@ body {
26842
26888
  min-width: ${BUTTON_WIDTH + TEXT_WIDTH}px;
26843
26889
  height: ${SWITCH_HEIGHT}px;
26844
26890
  border-radius: 3px;
26845
- border: 1px solid ${THEME.borderDark};
26891
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26846
26892
 
26847
26893
  > .slider {
26848
26894
  position: absolute;
@@ -26864,7 +26910,7 @@ body {
26864
26910
  text-align: center;
26865
26911
  top: 0;
26866
26912
  line-height: ${SWITCH_HEIGHT - 2}px;
26867
- text-shadow: 0 -1px rgba(0, 0, 0, 0.4);
26913
+ text-shadow: ${(p2) => p2.theme.shadows.textShadowActive};
26868
26914
  box-shadow:
26869
26915
  inset 0 1px 2px rgba(0, 0, 0, 0.2),
26870
26916
  0 1px 0 0 rgba(255, 255, 255, 0.15);
@@ -26872,26 +26918,22 @@ body {
26872
26918
 
26873
26919
  > .on-text {
26874
26920
  left: -40px;
26875
- background: linear-gradient(
26876
- to bottom,
26877
- ${THEME.hintDark1},
26878
- ${THEME.hint}
26879
- );
26921
+ background: ${(p2) => p2.theme.gradients.hintPressed};
26880
26922
  }
26881
26923
 
26882
26924
  > .button {
26883
26925
  top: -1px;
26884
26926
  left: -1px;
26885
26927
  width: ${BUTTON_WIDTH}px;
26886
- background: linear-gradient(to bottom, #4f5053, #343436);
26887
- text-shadow: 0 -1px rgba(0, 0, 0, 0.7);
26928
+ background: ${(p2) => p2.theme.gradients.button};
26929
+ text-shadow: ${(p2) => p2.theme.shadows.textShadow};
26888
26930
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15);
26889
26931
  border-radius: 3px;
26890
- border: 1px solid ${THEME.borderDark};
26932
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26891
26933
  }
26892
26934
 
26893
26935
  > .off-text {
26894
- background: linear-gradient(to bottom, #242525, #37383a);
26936
+ background: ${(p2) => p2.theme.gradients.buttonActive};
26895
26937
  left: ${BUTTON_WIDTH - 2}px;
26896
26938
  }
26897
26939
 
@@ -26900,7 +26942,7 @@ body {
26900
26942
  }
26901
26943
 
26902
26944
  &:hover > .button {
26903
- background: linear-gradient(to bottom, #5e6064, #393a3b);
26945
+ background: ${(p2) => p2.theme.gradients.buttonHover};
26904
26946
  }
26905
26947
  }
26906
26948
  }
@@ -26918,47 +26960,47 @@ body {
26918
26960
  var Wrapper2 = dt.div`
26919
26961
  display: flex;
26920
26962
  flex-direction: column;
26921
- background: ${THEME.borderDark};
26922
- border: 1px solid ${THEME.borderDark};
26963
+ background: ${(p2) => p2.theme.borderDark};
26964
+ border: 1px solid ${(p2) => p2.theme.borderDark};
26923
26965
  `;
26924
26966
  var TabList = dt.div`
26925
26967
  display: flex;
26926
26968
  flex-direction: row;
26927
- border-bottom: 1px solid ${THEME.borderDark};
26969
+ border-bottom: 1px solid ${(p2) => p2.theme.borderDark};
26928
26970
  `;
26929
26971
  var TabItem = dt.div`
26930
- height: ${THEME.sizingPx.spacing * 3}px;
26972
+ height: ${(p2) => p2.theme.sizingPx.spacing * 3}px;
26931
26973
  display: flex;
26932
26974
  flex-direction: column;
26933
26975
  justify-content: center;
26934
- padding: 0 ${THEME.sizingPx.spacing}px;
26976
+ padding: 0 ${(p2) => p2.theme.sizingPx.spacing}px;
26935
26977
  cursor: pointer;
26936
- background: ${THEME.bgDark1};
26978
+ background: ${(p2) => p2.theme.bgDark1};
26937
26979
  margin-right: 1px;
26938
26980
 
26939
26981
  &:hover,
26940
26982
  &.touching {
26941
- background: ${THEME.bgLight1};
26983
+ background: ${(p2) => p2.theme.bgLight1};
26942
26984
  }
26943
26985
 
26944
26986
  &.current {
26945
- color: ${THEME.hint};
26987
+ color: ${(p2) => p2.theme.hint};
26946
26988
 
26947
26989
  &::after {
26948
26990
  content: '';
26949
- border-bottom: 2px solid ${THEME.hint};
26991
+ border-bottom: 2px solid ${(p2) => p2.theme.hint};
26950
26992
  display: block;
26951
- margin-top: ${THEME.sizingPx.spacing / 2}px;
26993
+ margin-top: ${(p2) => p2.theme.sizingPx.spacing / 2}px;
26952
26994
  }
26953
26995
  }
26954
26996
  `;
26955
26997
  var Tabs = (props) => {
26956
- const { renderComponent } = import_react9.default.useContext(StageContext);
26957
- const [touching, setTouching] = import_react9.default.useState(null);
26958
- const [currentTab, setCurrentTab] = import_react9.default.useState(0);
26998
+ const { renderComponent } = import_react10.default.useContext(StageContext);
26999
+ const [touching, setTouching] = import_react10.default.useState(null);
27000
+ const [currentTab, setCurrentTab] = import_react10.default.useState(0);
26959
27001
  const tab = props.info.tabs[currentTab];
26960
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Wrapper2, { children: [
26961
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TabList, { children: props.info.tabs.map((tab2, i2) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
27002
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Wrapper2, { children: [
27003
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TabList, { children: props.info.tabs.map((tab2, i2) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
26962
27004
  TabItem,
26963
27005
  {
26964
27006
  className: calculateClass(
@@ -26979,18 +27021,18 @@ body {
26979
27021
  },
26980
27022
  i2
26981
27023
  )) }),
26982
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(StyledNestedContent, { children: tab?.child && renderComponent(tab.child) })
27024
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(StyledNestedContent, { children: tab?.child && renderComponent(tab.child) })
26983
27025
  ] });
26984
27026
  };
26985
27027
  var TextInput = ({ className, info }) => {
26986
- const { sendMessage } = import_react10.default.useContext(StageContext);
26987
- const ref = import_react10.default.useRef(null);
26988
- (0, import_react10.useEffect)(() => {
27028
+ const { sendMessage } = import_react11.default.useContext(StageContext);
27029
+ const ref = import_react11.default.useRef(null);
27030
+ (0, import_react11.useEffect)(() => {
26989
27031
  if (ref.current && ref.current.value !== info.value) {
26990
27032
  ref.current.value = info.value;
26991
27033
  }
26992
27034
  }, [info.value]);
26993
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
27035
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
26994
27036
  "input",
26995
27037
  {
26996
27038
  className,
@@ -27011,12 +27053,12 @@ body {
27011
27053
  box-sizing: border-box;
27012
27054
  padding: 6px 8px;
27013
27055
  border-radius: 3px;
27014
- background: ${THEME.bgDark1};
27015
- border: 1px solid ${THEME.borderDark};
27056
+ background: ${(p2) => p2.theme.bgDark1};
27057
+ border: 1px solid ${(p2) => p2.theme.borderDark};
27016
27058
  overflow: hidden;
27017
- box-shadow: inset 0px 0px 8px 0px rgba(0, 0, 0, 0.3);
27018
- color: ${THEME.textNormal};
27019
- text-shadow: 0 -1px rgba(0, 0, 0, 0.7);
27059
+ box-shadow: ${(p2) => p2.theme.shadows.boxShadowInset};
27060
+ color: ${(p2) => p2.theme.textNormal};
27061
+ text-shadow: ${(p2) => p2.theme.shadows.textShadow};
27020
27062
 
27021
27063
  @media (max-width: 500px) {
27022
27064
  flex-basis: 100%;
@@ -27043,12 +27085,12 @@ body {
27043
27085
  var Bar = dt.div`
27044
27086
  width: 100%;
27045
27087
  height: 10px;
27046
- border: 1px solid ${THEME.borderDark};
27047
- background: ${THEME.borderDark};
27088
+ border: 1px solid ${(p2) => p2.theme.borderDark};
27089
+ background: ${(p2) => p2.theme.borderDark};
27048
27090
  `;
27049
27091
  var Fill = dt.div`
27050
27092
  height: 100%;
27051
- background: ${THEME.hint};
27093
+ background: ${(p2) => p2.theme.hint};
27052
27094
  `;
27053
27095
  var Title = dt.div`
27054
27096
  font-size: 1.5em;
@@ -27062,12 +27104,12 @@ body {
27062
27104
  `;
27063
27105
  var Timeline = (props) => {
27064
27106
  const { className, info } = props;
27065
- const frameState = import_react11.default.useRef({
27107
+ const frameState = import_react12.default.useRef({
27066
27108
  animationFrame: -1,
27067
27109
  state: null
27068
27110
  });
27069
- const [currentTimeMillis, setCurrentTimeMillis] = (0, import_react11.useState)(0);
27070
- (0, import_react11.useEffect)(() => {
27111
+ const [currentTimeMillis, setCurrentTimeMillis] = (0, import_react12.useState)(0);
27112
+ (0, import_react12.useEffect)(() => {
27071
27113
  frameState.current.state = info.state;
27072
27114
  const recalculateCurrentTimeMillis = () => {
27073
27115
  if (frameState.current.state !== info.state) {
@@ -27089,15 +27131,15 @@ body {
27089
27131
  window.cancelAnimationFrame(frameState.current.animationFrame);
27090
27132
  };
27091
27133
  }, [frameState, info.state]);
27092
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Wrapper3, { className, children: [
27093
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Data, { children: [
27094
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Metadata, { children: [
27095
- info.title && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Title, { children: info.title }),
27096
- info.subtitles?.map((subtitle, k2) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Subtitle, { children: subtitle }, k2))
27134
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Wrapper3, { className, children: [
27135
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Data, { children: [
27136
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Metadata, { children: [
27137
+ info.title && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Title, { children: info.title }),
27138
+ info.subtitles?.map((subtitle, k2) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Subtitle, { children: subtitle }, k2))
27097
27139
  ] }),
27098
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(SourceData, { children: [
27140
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(SourceData, { children: [
27099
27141
  info.source?.name,
27100
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
27142
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
27101
27143
  IndicatorIcon,
27102
27144
  {
27103
27145
  icon: info.state.state === "playing" ? "play_arrow" : "pause"
@@ -27105,7 +27147,7 @@ body {
27105
27147
  )
27106
27148
  ] })
27107
27149
  ] }),
27108
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Bar, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
27150
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Bar, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
27109
27151
  Fill,
27110
27152
  {
27111
27153
  style: {
@@ -27123,23 +27165,23 @@ body {
27123
27165
  }
27124
27166
  switch (info.component) {
27125
27167
  case "button":
27126
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(StyledButton, { info }, info.key);
27168
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledButton, { info }, info.key);
27127
27169
  case "group":
27128
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(StyledGroup, { info }, info.key);
27170
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledGroup, { info }, info.key);
27129
27171
  case "label":
27130
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(StyledLabel, { info }, info.key);
27172
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledLabel, { info }, info.key);
27131
27173
  case "rect":
27132
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Rect, { info }, info.key);
27174
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Rect, { info }, info.key);
27133
27175
  case "slider_button":
27134
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(StyledSliderButton, { info }, info.key);
27176
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledSliderButton, { info }, info.key);
27135
27177
  case "switch":
27136
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(StyledSwitch, { info }, info.key);
27178
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledSwitch, { info }, info.key);
27137
27179
  case "tabs":
27138
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Tabs, { info }, info.key);
27180
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tabs, { info }, info.key);
27139
27181
  case "text-input":
27140
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(StyledTextInput, { info }, info.key);
27182
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledTextInput, { info }, info.key);
27141
27183
  case "timeline":
27142
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Timeline, { info }, info.key);
27184
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Timeline, { info }, info.key);
27143
27185
  case "group-header":
27144
27186
  case "tab":
27145
27187
  throw new Error(
@@ -27202,21 +27244,239 @@ body {
27202
27244
  };
27203
27245
 
27204
27246
  // src/frontend/stage.tsx
27205
- var import_react12 = __toESM(require_react());
27247
+ var import_react15 = __toESM(require_react());
27248
+
27249
+ // ../toolkit-frontend/src/util/index.ts
27250
+ var import_react14 = __toESM(require_react());
27251
+
27252
+ // ../toolkit-frontend/src/util/touch.ts
27253
+ var import_react13 = __toESM(require_react());
27254
+
27255
+ // ../toolkit-frontend/src/util/index.ts
27256
+ var usePreferredColorScheme2 = () => {
27257
+ const [theme, setTheme] = (0, import_react14.useState)("light");
27258
+ (0, import_react14.useEffect)(() => {
27259
+ if (typeof window !== "undefined") {
27260
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
27261
+ setTheme(mediaQuery.matches ? "dark" : "light");
27262
+ const handleChange = (event) => {
27263
+ setTheme(event.matches ? "dark" : "light");
27264
+ };
27265
+ mediaQuery.addEventListener("change", handleChange);
27266
+ return () => {
27267
+ mediaQuery.removeEventListener("change", handleChange);
27268
+ };
27269
+ }
27270
+ }, []);
27271
+ return theme;
27272
+ };
27273
+
27274
+ // ../toolkit-frontend/src/styling.tsx
27275
+ var import_jsx_runtime14 = __toESM(require_jsx_runtime());
27276
+ var GlobalStyle2 = ft`
27277
+ body {
27278
+ &.touch-mode * {
27279
+ cursor: none !important;
27280
+ }
27281
+ }
27282
+ `;
27283
+ var DARK_THEME2 = {
27284
+ pageBg: "#333",
27285
+ colorGreen: "#98c379",
27286
+ colorRed: "#e06c75",
27287
+ colorAmber: "#d19a66",
27288
+ bgDark1: "#252524",
27289
+ bg: "#2a2a2b",
27290
+ bgLight1: "#353638",
27291
+ borderDark: "#151516",
27292
+ borderLight: "#1c1d1d",
27293
+ borderLighter: "#252524",
27294
+ borderLighterer: "#6b6b67",
27295
+ hint: "#4286f4",
27296
+ hintRGB: "66, 134, 244",
27297
+ hintDark1: "#2a77f3",
27298
+ textNormal: "#F3F3F5",
27299
+ textActive: "#ffffff",
27300
+ textMuted: "#777777",
27301
+ shadows: {
27302
+ boxShadowInset: "inset 0px 0px 8px 0px rgba(0, 0, 0, 0.3)",
27303
+ textShadow: "0 -1px rgba(0, 0, 0, 0.7)",
27304
+ textShadowActive: "0 -1px rgba(0, 0, 0, 0.4)"
27305
+ },
27306
+ gradients: {
27307
+ button: "linear-gradient(to bottom, #4f5053, #343436)",
27308
+ buttonHover: "linear-gradient(to bottom, #5e6064, #393a3b)",
27309
+ buttonActive: "linear-gradient(to bottom, #242525, #37383a)",
27310
+ buttonPressedHover: "linear-gradient(to bottom, #282929, #414243)",
27311
+ hintPressed: "linear-gradient(to bottom,#2a77f3,#4286f4)"
27312
+ },
27313
+ sizingPx: {
27314
+ spacing: 15,
27315
+ unitHeight: 40
27316
+ }
27317
+ };
27318
+ var LIGHT_THEME2 = {
27319
+ pageBg: "#f8f9fa",
27320
+ colorGreen: "#22863a",
27321
+ colorRed: "#d73a49",
27322
+ colorAmber: "#b08800",
27323
+ bgDark1: "#e9ecef",
27324
+ bg: "#ffffff",
27325
+ bgLight1: "#f5f5f5",
27326
+ borderDark: "#c7c7c7",
27327
+ borderLight: "#d7d7d7",
27328
+ borderLighter: "#eaecef",
27329
+ borderLighterer: "#f6f8fa",
27330
+ hint: "#4286f4",
27331
+ hintRGB: "0, 92, 197",
27332
+ hintDark1: "#2a77f3",
27333
+ textNormal: "#24292e",
27334
+ textActive: "#202020",
27335
+ textMuted: "#6a737d",
27336
+ shadows: {
27337
+ boxShadowInset: "inset 0px 0px 8px 0px rgba(0, 0, 0, 0.05)",
27338
+ textShadow: "0 1px rgba(255, 255, 255, 0.7)",
27339
+ textShadowActive: "0 1px rgba(255, 255, 255, 0.4)"
27340
+ },
27341
+ gradients: {
27342
+ button: "linear-gradient(to bottom, #e1e4e8, #d1d5da)",
27343
+ buttonHover: "linear-gradient(to bottom, #d1d5da, #c1c6cc)",
27344
+ buttonActive: "linear-gradient(to bottom, #b1b6bc, #d2d6da)",
27345
+ buttonPressedHover: "linear-gradient(to bottom, #a1a6ac, #91969c)",
27346
+ hintPressed: "linear-gradient(to bottom, #438bff, #85b3ff)"
27347
+ },
27348
+ sizingPx: DARK_THEME2.sizingPx
27349
+ };
27350
+ var BaseStyle2 = ft`
27351
+ * {
27352
+ box-sizing: border-box;
27353
+ }
27354
+
27355
+ body {
27356
+ background: ${(p2) => p2.theme.pageBg};
27357
+ margin: 0;
27358
+ padding: 0;
27359
+ font-size: 14px;
27360
+ font-family: sans-serif;
27361
+ }
27362
+ `;
27363
+ var buttonStateNormal2 = lt`
27364
+ color: ${(p2) => p2.theme.textNormal};
27365
+ background: ${(p2) => p2.theme.gradients.button};
27366
+ text-shadow: ${(p2) => p2.theme.shadows.textShadow};
27367
+ box-shadow:
27368
+ inset 0 1px 0 rgba(255, 255, 255, 0.15),
27369
+ 0 1px 0 0 rgba(0, 0, 0, 0.25);
27370
+ `;
27371
+ var buttonStateNormalHover2 = lt`
27372
+ color: ${(p2) => p2.theme.textNormal};
27373
+ outline-color: rgba(243, 243, 245, 0.3);
27374
+ background: ${(p2) => p2.theme.gradients.buttonHover};
27375
+ text-shadow: ${(p2) => p2.theme.shadows.textShadow};
27376
+ `;
27377
+ var buttonStateNormalActive2 = lt`
27378
+ color: ${(p2) => p2.theme.textNormal};
27379
+ outline-color: rgba(255, 255, 255, 0.3);
27380
+ background: ${(p2) => p2.theme.gradients.buttonActive};
27381
+ text-shadow: ${(p2) => p2.theme.shadows.textShadowActive};
27382
+ box-shadow:
27383
+ inset 0 1px 2px rgba(0, 0, 0, 0.2),
27384
+ 0 1px 0 0 rgba(255, 255, 255, 0.15);
27385
+ transition-duration: 50ms;
27386
+ `;
27387
+ var buttonStatePressed2 = lt`
27388
+ ${buttonStateNormalActive2}
27389
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(255,255,255,0.15);
27390
+ `;
27391
+ var buttonStatePressedHover2 = lt`
27392
+ ${buttonStateNormalActive2}
27393
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1), 0 1px 0 0 rgba(255,255,255,0.15);
27394
+ background: ${(p2) => p2.theme.gradients.buttonPressedHover};
27395
+ `;
27396
+ var buttonStatePressedActive2 = buttonStateNormalActive2;
27397
+ var buttonStateDisabled2 = lt`
27398
+ ${buttonStateNormal2}
27399
+
27400
+ cursor: default;
27401
+ background: ${(p2) => p2.theme.bg} !important;
27402
+ color: rgba(${(p2) => p2.theme.textNormal}, 0.4);
27403
+ `;
27404
+ var button2 = lt`
27405
+ position: relative;
27406
+ box-sizing: border-box;
27407
+ cursor: pointer;
27408
+ transition: all 200ms;
27409
+ border-radius: 3px;
27410
+ border: 1px solid ${(p2) => p2.theme.borderDark};
27411
+ overflow: hidden;
27412
+ display: flex;
27413
+ justify-content: center;
27414
+ align-items: center;
27415
+ outline-color: transparent;
27416
+ ${buttonStateNormal2}
27417
+
27418
+ &:hover {
27419
+ ${buttonStateNormalHover2}
27420
+ }
27421
+
27422
+ &:active {
27423
+ ${buttonStateNormalActive2}
27424
+ }
27425
+ `;
27426
+ var buttonPressed2 = lt`
27427
+ ${buttonStatePressed2}
27428
+
27429
+ &:hover {
27430
+ ${buttonStatePressedHover2}
27431
+ }
27432
+
27433
+ &:active {
27434
+ ${buttonStatePressedActive2}
27435
+ }
27436
+ `;
27437
+ var buttonDisabled2 = lt`
27438
+ ${buttonStateDisabled2}
27439
+
27440
+ &:hover, &:active {
27441
+ ${buttonStateDisabled2}
27442
+ }
27443
+ `;
27444
+ var touchIndicatorNormal2 = lt`
27445
+ position: absolute;
27446
+ top: -6px;
27447
+ right: -6px;
27448
+ left: -6px;
27449
+ bottom: -6px;
27450
+ border-radius: 6px;
27451
+ border: 2px solid rgba(0, 0, 0, 0);
27452
+ background-color: none;
27453
+ transition: border-color 300ms;
27454
+ `;
27455
+ var touchIndicatorTouching2 = lt`
27456
+ border-color: ${(p2) => p2.theme.hint};
27457
+ background-color: rgba(${(p2) => p2.theme.hintRGB}, 0.2);
27458
+ transition: border-color 0s;
27459
+ `;
27460
+ var PreferredThemeProvider2 = ({ dark, light, children }) => {
27461
+ const theme = usePreferredColorScheme2();
27462
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ot, { theme: theme === "dark" ? dark : light, children });
27463
+ };
27464
+
27465
+ // src/frontend/stage.tsx
27206
27466
  var Stage = ({ className, renderers }) => {
27207
- const [root, setRoot] = (0, import_react12.useState)(
27467
+ const [root, setRoot] = (0, import_react15.useState)(
27208
27468
  void 0
27209
27469
  );
27210
- const socket = (0, import_react12.useRef)(null);
27211
- const uuid = (0, import_react12.useRef)(null);
27212
- const preparedRenderers = (0, import_react12.useMemo)(() => {
27470
+ const socket = (0, import_react15.useRef)(null);
27471
+ const uuid = (0, import_react15.useRef)(null);
27472
+ const preparedRenderers = (0, import_react15.useMemo)(() => {
27213
27473
  const prepared = {};
27214
27474
  for (const renderer of renderers) {
27215
27475
  prepared[renderer.namespace] = renderer;
27216
27476
  }
27217
27477
  return prepared;
27218
27478
  }, [renderers]);
27219
- const renderComponent = (0, import_react12.useCallback)(
27479
+ const renderComponent = (0, import_react15.useCallback)(
27220
27480
  (info) => {
27221
27481
  const renderer = preparedRenderers[info.namespace];
27222
27482
  if (!renderer) {
@@ -27226,7 +27486,7 @@ body {
27226
27486
  },
27227
27487
  [preparedRenderers]
27228
27488
  );
27229
- (0, import_react12.useEffect)(() => {
27489
+ (0, import_react15.useEffect)(() => {
27230
27490
  initializeWebsocket();
27231
27491
  }, []);
27232
27492
  const initializeWebsocket = async () => {
@@ -27270,7 +27530,7 @@ body {
27270
27530
  return;
27271
27531
  }
27272
27532
  };
27273
- return /* @__PURE__ */ import_react12.default.createElement(
27533
+ return /* @__PURE__ */ import_react15.default.createElement(
27274
27534
  StageContext.Provider,
27275
27535
  {
27276
27536
  value: {
@@ -27284,18 +27544,27 @@ body {
27284
27544
  }
27285
27545
  }
27286
27546
  },
27287
- /* @__PURE__ */ import_react12.default.createElement(GroupStateWrapper, { openByDefault: false }, /* @__PURE__ */ import_react12.default.createElement("div", { className }, root ? renderComponent(root) : /* @__PURE__ */ import_react12.default.createElement("div", { className: "no-root" }, "No root has been added to the light desk")))
27547
+ /* @__PURE__ */ import_react15.default.createElement(GroupStateWrapper, { openByDefault: false }, /* @__PURE__ */ import_react15.default.createElement("div", { className }, root ? renderComponent(root) : /* @__PURE__ */ import_react15.default.createElement("div", { className: "no-root" }, "No root has been added to the light desk")))
27288
27548
  );
27289
27549
  };
27290
27550
  var StyledStage = dt(Stage)`
27291
27551
  width: 100%;
27292
27552
  height: 100%;
27293
- background-color: #333;
27294
- color: ${THEME.textNormal};
27295
- padding: ${THEME.sizingPx.spacing}px;
27553
+ background-color: ${(p2) => p2.theme.pageBg};
27554
+ color: ${(p2) => p2.theme.textNormal};
27555
+ padding: ${(p2) => p2.theme.sizingPx.spacing}px;
27296
27556
  `;
27297
27557
  function rootComponent(props) {
27298
- return /* @__PURE__ */ import_react12.default.createElement(import_react12.default.Fragment, null, /* @__PURE__ */ import_react12.default.createElement(BaseStyle, null), /* @__PURE__ */ import_react12.default.createElement(GlobalStyle, null), /* @__PURE__ */ import_react12.default.createElement(ot, { theme: THEME }, /* @__PURE__ */ import_react12.default.createElement(StyledStage, { ...props })));
27558
+ return /* @__PURE__ */ import_react15.default.createElement(
27559
+ PreferredThemeProvider2,
27560
+ {
27561
+ dark: props.themes?.dark ?? DARK_THEME,
27562
+ light: props.themes?.light ?? LIGHT_THEME
27563
+ },
27564
+ /* @__PURE__ */ import_react15.default.createElement(BaseStyle, null),
27565
+ /* @__PURE__ */ import_react15.default.createElement(GlobalStyle, null),
27566
+ /* @__PURE__ */ import_react15.default.createElement(StyledStage, { ...props })
27567
+ );
27299
27568
  }
27300
27569
 
27301
27570
  // src/frontend/index.ts