@articles-media/articles-dev-box 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -67,6 +67,10 @@ npm run dev
67
67
  - Hook for getting the details of the current user if a valid user token is found.
68
68
  - useFullscreen
69
69
  - Hook for going fullscreen on the body or provided element
70
+ - typicalZustandStoreExcludes
71
+ - Array of strings that every game published by Articles Media would want to normally exclude from persisting in base game store.
72
+ - typicalZustandStoreStateSlice
73
+ - Slice of zustand states that every game normally uses
70
74
 
71
75
  # Roadmap
72
76
  ⏹️ Remove Bootstrap reliance
@@ -3,8 +3,8 @@ import { useState as t } from "react";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  import { Modal as i } from "react-bootstrap";
5
5
  //#region src/components/Games/Credits/CreditsModal.jsx
6
- function a({ show: a, setShow: o, useStore: s, owner: c, repo: l, developers: u, publisher: d, introText: f }) {
7
- let [p, m] = t(!1);
6
+ function a({ show: a, setShow: o, useStore: s, owner: c, repo: l, developers: u, publisher: d, introText: f, outroText: p }) {
7
+ let [m, h] = t(!1);
8
8
  return /* @__PURE__ */ r(i, {
9
9
  className: "articles-modal",
10
10
  size: "md",
@@ -54,13 +54,17 @@ function a({ show: a, setShow: o, useStore: s, owner: c, repo: l, developers: u,
54
54
  })
55
55
  })] }),
56
56
  c && l && /* @__PURE__ */ r("div", {
57
- className: "",
57
+ className: "mb-3",
58
58
  children: [/* @__PURE__ */ n("div", { children: "Attributions:" }), /* @__PURE__ */ n("a", {
59
59
  href: `https://github.com/${c}/${l}/blob/main/README.md#attributions`,
60
60
  target: "_blank",
61
61
  rel: "noopener noreferrer",
62
62
  children: /* @__PURE__ */ r(e, { children: [/* @__PURE__ */ n("i", { className: "fab fa-github" }), "View on GitHub"] })
63
63
  })]
64
+ }),
65
+ p && /* @__PURE__ */ n("div", {
66
+ className: "mb-3",
67
+ children: p
64
68
  })
65
69
  ]
66
70
  }),
@@ -3,16 +3,16 @@ import { useState as t } from "react";
3
3
  import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  import { Form as a, Modal as o } from "react-bootstrap";
5
5
  //#region src/components/Games/Settings/GraphicsTab.jsx
6
- function s({ useStore: t }) {
7
- let a = t((e) => e?.darkMode), o = t((e) => e?.setDarkMode), s = t((e) => e?.graphicsQuality), c = t((e) => e?.setGraphicsQuality), l = t((e) => e?.landingAnimation), u = t((e) => e?.setLandingAnimation);
6
+ function s({ useStore: t, config: a }) {
7
+ let o = t((e) => e?.darkMode), s = t((e) => e?.setDarkMode), c = t((e) => e?.graphicsQuality), l = t((e) => e?.setGraphicsQuality), u = t((e) => e?.landingAnimation), d = t((e) => e?.setLandingAnimation);
8
8
  return /* @__PURE__ */ i(n, { children: [
9
9
  /* @__PURE__ */ r("div", { children: "Dark Mode" }),
10
10
  /* @__PURE__ */ r("div", {
11
11
  className: "mb-3",
12
12
  children: [!1, !0].map((t, n) => /* @__PURE__ */ r(e, {
13
- active: a === t,
13
+ active: o === t,
14
14
  onClick: () => {
15
- o(t);
15
+ s(t);
16
16
  },
17
17
  children: t ? "On" : "Off"
18
18
  }, n))
@@ -25,9 +25,9 @@ function s({ useStore: t }) {
25
25
  "Medium",
26
26
  "High"
27
27
  ].map((t) => /* @__PURE__ */ r(e, {
28
- active: s === t,
28
+ active: c === t,
29
29
  onClick: () => {
30
- c(t);
30
+ l(t);
31
31
  },
32
32
  children: t
33
33
  }, t))
@@ -36,19 +36,20 @@ function s({ useStore: t }) {
36
36
  /* @__PURE__ */ i("div", {
37
37
  className: "mb-3",
38
38
  children: [/* @__PURE__ */ r(e, {
39
- active: l === !1,
39
+ active: u === !1,
40
40
  onClick: () => {
41
- u(!1);
41
+ d(!1);
42
42
  },
43
43
  children: "Disabled"
44
44
  }), /* @__PURE__ */ r(e, {
45
- active: l === !0,
45
+ active: u === !0,
46
46
  onClick: () => {
47
- u(!0);
47
+ d(!0);
48
48
  },
49
49
  children: "Enabled"
50
50
  })]
51
- })
51
+ }),
52
+ a?.tabs?.Graphics?.children
52
53
  ] });
53
54
  }
54
55
  //#endregion
@@ -79,71 +80,78 @@ function c({ useAudioStore: t, config: o }) {
79
80
  children: "Enabled"
80
81
  })]
81
82
  }),
82
- o?.tabs?.Audio?.sliders?.map((e) => /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r(a.Label, {
83
- className: "mb-0",
84
- children: e.label
85
- }), /* @__PURE__ */ r(a.Range, {
86
- value: s?.[e.key],
87
- onChange: (t) => {
88
- c({
89
- ...s,
90
- [e.key]: t.target.value
91
- });
92
- }
93
- })] }, e.key))
83
+ /* @__PURE__ */ r("div", {
84
+ className: "border mb-3 p-2",
85
+ children: o?.tabs?.Audio?.sliders?.map((e) => /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r(a.Label, {
86
+ className: "mb-0",
87
+ children: e.label
88
+ }), /* @__PURE__ */ r(a.Range, {
89
+ value: s?.[e.key],
90
+ onChange: (t) => {
91
+ c({
92
+ ...s,
93
+ [e.key]: t.target.value
94
+ });
95
+ }
96
+ })] }, e.key))
97
+ }),
98
+ o?.tabs?.Controls?.children
94
99
  ] });
95
100
  }
96
101
  //#endregion
97
102
  //#region src/components/Games/Settings/MultiplayerTab.jsx
98
103
  function l({ useStore: e, config: t }) {
99
- return /* @__PURE__ */ r("div", {
104
+ return /* @__PURE__ */ i("div", {
100
105
  className: "",
101
- children: e && /* @__PURE__ */ r(u, { useStore: e })
106
+ children: [e && /* @__PURE__ */ r(u, { useStore: e }), t?.tabs?.Multiplayer?.children]
102
107
  });
103
108
  }
104
109
  function u({ useStore: t }) {
105
110
  let n = t((e) => e.serverUrl), o = t((e) => e.setServerUrl), s = t((e) => e.connected), c = t((e) => e.connectSocket), l = t((e) => e.disconnectSocket);
106
- return /* @__PURE__ */ i("div", { children: [
107
- /* @__PURE__ */ i(a.Label, {
108
- className: "mb-0",
109
- children: [/* @__PURE__ */ i("div", { children: ["Status: ", /* @__PURE__ */ r("span", {
110
- className: `badge ${s ? "bg-success" : "bg-danger"}`,
111
- children: s ? "Online" : "Offline"
112
- })] }), "Socket Server Host"]
113
- }),
114
- /* @__PURE__ */ r(a.Control, {
115
- type: "text",
116
- value: n,
117
- onChange: (e) => o(e.target.value)
118
- }),
119
- /* @__PURE__ */ r(a.Label, {
120
- className: "mb-0",
121
- children: "Edit this to connect to a different multiplayer host!"
122
- }),
123
- /* @__PURE__ */ r("div", {
124
- className: "mt-3",
125
- children: s ? /* @__PURE__ */ r(e, {
126
- className: "",
127
- onClick: () => {
128
- l();
129
- },
130
- children: "Disconnect"
131
- }) : /* @__PURE__ */ r(e, {
132
- className: "",
133
- onClick: () => {
134
- c();
135
- },
136
- children: "Connect"
111
+ return /* @__PURE__ */ i("div", {
112
+ className: "mb-3",
113
+ children: [
114
+ /* @__PURE__ */ i(a.Label, {
115
+ className: "mb-0",
116
+ children: [/* @__PURE__ */ i("div", { children: ["Status: ", /* @__PURE__ */ r("span", {
117
+ className: `badge ${s ? "bg-success" : "bg-danger"}`,
118
+ children: s ? "Online" : "Offline"
119
+ })] }), "Socket Server Host"]
120
+ }),
121
+ /* @__PURE__ */ r(a.Control, {
122
+ type: "text",
123
+ value: n,
124
+ onChange: (e) => o(e.target.value)
125
+ }),
126
+ /* @__PURE__ */ r(a.Label, {
127
+ className: "mb-0",
128
+ children: "Edit this to connect to a different multiplayer host!"
129
+ }),
130
+ /* @__PURE__ */ r("div", {
131
+ className: "mt-3",
132
+ children: s ? /* @__PURE__ */ r(e, {
133
+ className: "",
134
+ onClick: () => {
135
+ l();
136
+ },
137
+ children: "Disconnect"
138
+ }) : /* @__PURE__ */ r(e, {
139
+ className: "",
140
+ onClick: () => {
141
+ c();
142
+ },
143
+ children: "Connect"
144
+ })
137
145
  })
138
- })
139
- ] });
146
+ ]
147
+ });
140
148
  }
141
149
  //#endregion
142
150
  //#region src/components/Games/Settings/ControlsTab.jsx
143
- function d({ useTouchControlsStore: e }) {
144
- return /* @__PURE__ */ r("div", {
151
+ function d({ useTouchControlsStore: e, config: t }) {
152
+ return /* @__PURE__ */ i("div", {
145
153
  className: "",
146
- children: e && /* @__PURE__ */ r(f, { useTouchControlsStore: e })
154
+ children: [e && /* @__PURE__ */ r(f, { useTouchControlsStore: e }), t?.tabs?.Controls?.children]
147
155
  });
148
156
  }
149
157
  function f({ useTouchControlsStore: t }) {
@@ -171,16 +179,16 @@ function f({ useTouchControlsStore: t }) {
171
179
  }
172
180
  //#endregion
173
181
  //#region src/components/Games/Settings/OtherTab.jsx
174
- function p({ useStore: t, config: a, children: o }) {
175
- let s = t((e) => e?.debug), c = t((e) => e?.setDebug), l = t((e) => e?.toontownMode), u = t((e) => e?.setToontownMode);
182
+ function p({ useStore: t, config: a }) {
183
+ let o = t((e) => e?.debug), s = t((e) => e?.setDebug), c = t((e) => e?.toontownMode), l = t((e) => e?.setToontownMode);
176
184
  return /* @__PURE__ */ i(n, { children: [
177
185
  /* @__PURE__ */ r("div", { children: "Debug Mode" }),
178
186
  /* @__PURE__ */ r("div", {
179
187
  className: "mb-3",
180
188
  children: [!1, !0].map((t, n) => /* @__PURE__ */ r(e, {
181
- active: s === t,
189
+ active: o === t,
182
190
  onClick: () => {
183
- c(t);
191
+ s(t);
184
192
  },
185
193
  children: t ? "On" : "Off"
186
194
  }, n))
@@ -194,21 +202,15 @@ function p({ useStore: t, config: a, children: o }) {
194
202
  /* @__PURE__ */ r("div", {
195
203
  className: "mb-3",
196
204
  children: [!1, !0].map((t, n) => /* @__PURE__ */ r(e, {
197
- active: l === t,
205
+ active: c === t,
198
206
  onClick: () => {
199
- u(t);
207
+ l(t);
200
208
  },
201
209
  children: t ? "On" : "Off"
202
210
  }, n))
203
211
  })
204
212
  ] }),
205
- o && /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("div", {
206
- className: "mb-3",
207
- children: "Other Settings"
208
- }), /* @__PURE__ */ r("div", {
209
- className: "mb-3",
210
- children: o
211
- })] })
213
+ a?.tabs?.Other?.children
212
214
  ] });
213
215
  }
214
216
  //#endregion
@@ -218,7 +220,7 @@ function m({ show: n, setShow: a, store: u, useAudioStore: f, useTouchControlsSt
218
220
  b(e), localStorage.setItem("articles_settings_tab", e);
219
221
  };
220
222
  return u((e) => e.darkMode), u((e) => e.setDarkMode), u((e) => e.arcadeMode), u((e) => e.setArcadeMode), /* @__PURE__ */ i(o, {
221
- className: "articles-modal",
223
+ className: "articles-modal articles-settings-modal",
222
224
  size: "md",
223
225
  show: n,
224
226
  centered: !0,
@@ -1,2 +1,2 @@
1
- import { t as e } from "./SettingsModal-D9ZVzkoS.js";
1
+ import { t as e } from "./SettingsModal-CiLvMoLW.js";
2
2
  export { e as default };
@@ -1,2 +1,2 @@
1
- .ad-wrap{z-index:1;--card-background:#f9edcd;--bs-body-color:#000;width:100%;max-width:312px;margin:0 auto 1rem}.ad-wrap.active-member .ad .main-panel{height:310px}.ad-wrap .ad{z-index:2;align-self:flex-start;width:100%;font-family:brandon-grotesque,sans-serif;font-size:14px;position:relative;box-shadow:0 0 0 1px #00000040,0 2px 3px #0003}@media (width<=768px){.ad-wrap .ad{width:100%;font-size:16px}}.ad-wrap .ad .main-panel{background-color:var(--articles-ad-background-color,var(--card-background));color:var(--articles-ad-font-color,var(--bs-body-color));flex-direction:column;height:400px;display:flex}.ad-wrap .ad .main-panel .ad-warning{border-bottom:1px solid var(--articles-ad-border-color,var(--card-background));padding:.1rem .75rem;font-family:brandon-grotesque,sans-serif;font-size:1rem;font-weight:900}.ad-wrap .ad .main-panel .content-wrap{flex-direction:column;align-items:center;display:flex}@media (width>=992px){.ad-wrap .ad .main-panel .content-wrap{flex-direction:column}}.ad-wrap .ad .main-panel .photo-banner{border-bottom:1px solid #000;flex-shrink:0;align-items:center;width:100%;height:125px;margin-left:0;padding-left:1rem;display:flex;position:relative}.ad-wrap .ad .main-panel .photo-banner .logo{object-fit:cover;z-index:1}.ad-wrap .ad .main-panel .photo-banner .logo img{object-fit:contain;width:75px;height:75px}.ad-wrap .ad .main-panel .photo-banner .splash{color:#000;justify-content:center;align-items:center;width:100%;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%)translateY(-50%)}.ad-wrap .ad .main-panel .photo-banner .splash i{margin-right:1rem;font-size:3rem}.ad-wrap .ad .main-panel .photo-banner .splash .text{flex-direction:column;align-items:start;line-height:1;display:flex}.ad-wrap .ad .main-panel .photo-banner .splash .text .label{font-size:1.5rem}.ad-wrap .ad .main-panel .photo-banner .splash .text .count{font-size:2rem;font-weight:700}.ad-wrap .ad .main-panel .photo-banner .splash .text .count .fa-spinner{font-size:1.5rem}.ad-wrap .ad .main-panel .photo-banner .member-since{color:#fff;background-color:#00000080;border-top-right-radius:5px;padding:.25rem .5rem;font-size:.75rem;position:absolute;bottom:0;left:0}.ad-wrap .ad .main-panel .photo-banner .photo{object-fit:cover;width:100%;height:100%;position:absolute;top:0;left:0}.ad-wrap .ad .main-panel .details-wrap{width:100%}.ad-wrap .ad .main-panel .links-list{flex-direction:column;display:flex}.ad-wrap .ad .main-panel .links-list .link-item{color:#000}.ad-wrap .ad .main-panel .links-list .link-item:hover{-webkit-text-decoration:underline red;text-decoration:underline red}.ad-wrap .ad .main-panel .details,.ad-wrap .ad .main-panel .detail-title{grid-gap:5px 5px;grid-template-columns:repeat(2,1fr);padding:.75rem .75rem 0;display:grid}.ad-wrap .ad .main-panel .details .detail .icon,.ad-wrap .ad .main-panel .detail-title .detail .icon{width:1.5rem;display:inline-block}.ad-wrap .ad .main-panel .details .detail .icon i,.ad-wrap .ad .main-panel .detail-title .detail .icon i{justify-content:flex-start;display:flex}.ad-wrap .ad .main-panel .short-description{min-height:50px;max-height:125px;padding:.25rem .75rem 0;overflow-y:auto}.ad-wrap .ad .main-panel .detail-title{justify-content:space-between;align-items:center;display:flex}.ad-wrap .ad .main-panel .action-wrap{border-top:1px solid var(--articles-ad-border-color,var(--card-background))}.ad-wrap .ad .main-panel .action-wrap .action{border:1px solid var(--articles-ad-border-color,var(--card-background));color:var(--articles-ad-font-color,var(--bs-body-color));cursor:pointer;border-radius:10px;justify-content:center;align-items:center;margin-left:auto;margin-right:auto;padding:.25rem;transition-duration:.2s;display:flex}.ad-wrap .ad .main-panel .action-wrap .action:hover{color:#000;background-color:#fff}.ad-wrap .ad .main-panel .action-wrap .action:active{background-color:gray}.ad-wrap .advertise-with-us{background-color:var(--articles-ad-background-color,var(--card-background));border-top:2px solid var(--articles-ad-border-color,var(--card-background))}.ad-wrap .advertise-with-us a{color:var(--articles-ad-font-color,var(--bs-body-color))!important}.ad-wrap .advertise-with-us a:hover{-webkit-text-decoration:underline red;text-decoration:underline red}.view-user-modal-badge-wrap{cursor:pointer;align-items:stretch;display:flex}.view-user-modal-badge-wrap.large .view-user-modal-badge{height:30px;position:relative}.view-user-modal-badge-wrap.large .view-user-modal-badge .membership-badge{font-size:1rem!important}.view-user-modal-badge-wrap.large .view-user-modal-badge .profile-photo-wrap{margin-right:.5rem;width:22px!important;height:22px!important}.view-user-modal-badge-wrap.large .view-user-modal-badge img{margin-right:.5rem}.view-user-modal-badge-wrap .badge-membership{position:relative}.view-user-modal-badge-wrap .verification-user-badge{align-items:center;display:flex}.profile-photo-wrap{position:relative}.profile-photo-wrap .online-status{z-index:1;background-color:gray;border:2px solid #000;width:10px;height:10px;position:absolute;bottom:1px;right:1px}.profile-photo-wrap .online-status.status-online{background-color:green;border:2px solid #009b22}:root{--articles-theme-primary:#f9edcd}.bg-articles{background-color:var(--articles-theme-primary);color:#000!important}.shadow-articles{box-shadow:0 0 0 1px #00000040,0 2px 3px #0003}.text-center{text-align:center}.d-flex{display:flex}.flex-header{justify-content:space-between;align-items:center;display:flex}.scoreboard{width:100%;max-width:300px;margin-top:1rem;margin-bottom:1rem}@media (width>=992px){.scoreboard{margin-top:0;margin-bottom:0;display:block;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}}.articles-game-scoreboard{color:#222;z-index:1;border:1px solid #ced4da;border-radius:8px;flex-direction:column;width:100%;max-width:350px;margin:0 1rem;display:flex;position:fixed;bottom:50%;left:8px;overflow:hidden;transform:translateY(50%);box-shadow:0 2px 8px #00000012}
1
+ .ad-wrap{z-index:1;--card-background:#f9edcd;--bs-body-color:#000;width:100%;max-width:312px;margin:0 auto 1rem}.ad-wrap.active-member .ad .main-panel{height:310px}.ad-wrap .ad{z-index:2;align-self:flex-start;width:100%;font-family:brandon-grotesque,sans-serif;font-size:14px;position:relative;box-shadow:0 0 0 1px #00000040,0 2px 3px #0003}@media (width<=768px){.ad-wrap .ad{width:100%;font-size:16px}}.ad-wrap .ad .main-panel{background-color:var(--articles-ad-background-color,var(--card-background));color:var(--articles-ad-font-color,var(--bs-body-color));flex-direction:column;height:400px;display:flex}.ad-wrap .ad .main-panel .ad-warning{border-bottom:1px solid var(--articles-ad-border-color,var(--card-background));padding:.1rem .75rem;font-family:brandon-grotesque,sans-serif;font-size:1rem;font-weight:900}.ad-wrap .ad .main-panel .content-wrap{flex-direction:column;align-items:center;display:flex}@media (width>=992px){.ad-wrap .ad .main-panel .content-wrap{flex-direction:column}}.ad-wrap .ad .main-panel .photo-banner{border-bottom:1px solid #000;flex-shrink:0;align-items:center;width:100%;height:125px;margin-left:0;padding-left:1rem;display:flex;position:relative}.ad-wrap .ad .main-panel .photo-banner .logo{object-fit:cover;z-index:1}.ad-wrap .ad .main-panel .photo-banner .logo img{object-fit:contain;width:75px;height:75px}.ad-wrap .ad .main-panel .photo-banner .splash{color:#000;justify-content:center;align-items:center;width:100%;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%)translateY(-50%)}.ad-wrap .ad .main-panel .photo-banner .splash i{margin-right:1rem;font-size:3rem}.ad-wrap .ad .main-panel .photo-banner .splash .text{flex-direction:column;align-items:start;line-height:1;display:flex}.ad-wrap .ad .main-panel .photo-banner .splash .text .label{font-size:1.5rem}.ad-wrap .ad .main-panel .photo-banner .splash .text .count{font-size:2rem;font-weight:700}.ad-wrap .ad .main-panel .photo-banner .splash .text .count .fa-spinner{font-size:1.5rem}.ad-wrap .ad .main-panel .photo-banner .member-since{color:#fff;background-color:#00000080;border-top-right-radius:5px;padding:.25rem .5rem;font-size:.75rem;position:absolute;bottom:0;left:0}.ad-wrap .ad .main-panel .photo-banner .photo{object-fit:cover;width:100%;height:100%;position:absolute;top:0;left:0}.ad-wrap .ad .main-panel .details-wrap{width:100%}.ad-wrap .ad .main-panel .links-list{flex-direction:column;display:flex}.ad-wrap .ad .main-panel .links-list .link-item{color:#000}.ad-wrap .ad .main-panel .links-list .link-item:hover{-webkit-text-decoration:underline red;text-decoration:underline red}.ad-wrap .ad .main-panel .details,.ad-wrap .ad .main-panel .detail-title{grid-gap:5px 5px;grid-template-columns:repeat(2,1fr);padding:.75rem .75rem 0;display:grid}.ad-wrap .ad .main-panel .details .detail .icon,.ad-wrap .ad .main-panel .detail-title .detail .icon{width:1.5rem;display:inline-block}.ad-wrap .ad .main-panel .details .detail .icon i,.ad-wrap .ad .main-panel .detail-title .detail .icon i{justify-content:flex-start;display:flex}.ad-wrap .ad .main-panel .short-description{min-height:50px;max-height:125px;padding:.25rem .75rem 0;overflow-y:auto}.ad-wrap .ad .main-panel .detail-title{justify-content:space-between;align-items:center;display:flex}.ad-wrap .ad .main-panel .action-wrap{border-top:1px solid var(--articles-ad-border-color,var(--card-background))}.ad-wrap .ad .main-panel .action-wrap .action{border:1px solid var(--articles-ad-border-color,var(--card-background));color:var(--articles-ad-font-color,var(--bs-body-color));cursor:pointer;border-radius:10px;justify-content:center;align-items:center;margin-left:auto;margin-right:auto;padding:.25rem;transition-duration:.2s;display:flex}.ad-wrap .ad .main-panel .action-wrap .action:hover{color:#000;background-color:#fff}.ad-wrap .ad .main-panel .action-wrap .action:active{background-color:gray}.ad-wrap .advertise-with-us{background-color:var(--articles-ad-background-color,var(--card-background));border-top:2px solid var(--articles-ad-border-color,var(--card-background))}.ad-wrap .advertise-with-us a{color:var(--articles-ad-font-color,var(--bs-body-color))!important}.ad-wrap .advertise-with-us a:hover{-webkit-text-decoration:underline red;text-decoration:underline red}.view-user-modal-badge-wrap{cursor:pointer;align-items:stretch;display:flex}.view-user-modal-badge-wrap.large .view-user-modal-badge{height:30px;position:relative}.view-user-modal-badge-wrap.large .view-user-modal-badge .membership-badge{font-size:1rem!important}.view-user-modal-badge-wrap.large .view-user-modal-badge .profile-photo-wrap{margin-right:.5rem;width:22px!important;height:22px!important}.view-user-modal-badge-wrap.large .view-user-modal-badge img{margin-right:.5rem}.view-user-modal-badge-wrap .badge-membership{position:relative}.view-user-modal-badge-wrap .verification-user-badge{align-items:center;display:flex}.profile-photo-wrap{position:relative}.profile-photo-wrap .online-status{z-index:1;background-color:gray;border:2px solid #000;width:10px;height:10px;position:absolute;bottom:1px;right:1px}.profile-photo-wrap .online-status.status-online{background-color:green;border:2px solid #009b22}:root{--articles-theme-primary:#f9edcd}.bg-articles{background-color:var(--articles-theme-primary);color:#000!important}.shadow-articles{box-shadow:0 0 0 1px #00000040,0 2px 3px #0003}.text-center{text-align:center}.d-flex{display:flex}.flex-header{justify-content:space-between;align-items:center;display:flex}.scoreboard{width:100%;max-width:300px;margin-top:1rem;margin-bottom:1rem}@media (width>=992px){.scoreboard{margin-top:0;margin-bottom:0;display:block;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}}.articles-game-scoreboard{color:#222;z-index:1;border:1px solid #ced4da;border-radius:8px;flex-direction:column;width:100%;max-width:350px;margin:0 1rem;display:flex;position:fixed;bottom:50%;left:8px;overflow:hidden;transform:translateY(50%);box-shadow:0 2px 8px #00000012}.articles-settings-modal input[type=range]::-webkit-slider-runnable-track{background:#000;border-radius:5px;height:.5rem}.articles-settings-modal input[type=range]::-webkit-slider-thumb{appearance:none;background-color:var(--articles-secondary-color);border:1px solid #000;border-radius:50%;width:1rem;height:1rem;margin-top:-4px}
2
2
  /*$vite$:1*/
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import s from "./ArticlesAd.js";
9
9
  import { t as c } from "./GameScoreboard-9GYlLx72.js";
10
10
  import l from "./GlobalHead.js";
11
11
  import u from "./GlobalBody.js";
12
- import { t as d } from "./SettingsModal-D9ZVzkoS.js";
12
+ import { t as d } from "./SettingsModal-CiLvMoLW.js";
13
13
  import f from "./CreditsModal.js";
14
14
  import p from "./DarkModeHandler.js";
15
15
  import m from "./ToontownModeHandler.js";
@@ -17,4 +17,6 @@ import h from "./SocketServerUrlHandler.js";
17
17
  import g from "./useUserFriends.js";
18
18
  import _ from "./FriendsList.js";
19
19
  import v from "./useFullscreen.js";
20
- export { a as Ad, s as ArticlesAd, f as CreditsModal, p as DarkModeHandler, _ as FriendsList, c as GameScoreboard, u as GlobalBody, l as GlobalHead, e as ReturnToLauncherButton, o as SessionButton, d as SettingsModal, t as SignInButton, h as SocketServerUrlHandler, m as ToontownModeHandler, i as ViewUserModal, v as useFullscreen, n as useUserDetails, g as useUserFriends, r as useUserToken };
20
+ import y from "./typicalZustandStoreExcludes.js";
21
+ import b from "./typicalZustandStoreStateSlice.js";
22
+ export { a as Ad, s as ArticlesAd, f as CreditsModal, p as DarkModeHandler, _ as FriendsList, c as GameScoreboard, u as GlobalBody, l as GlobalHead, e as ReturnToLauncherButton, o as SessionButton, d as SettingsModal, t as SignInButton, h as SocketServerUrlHandler, m as ToontownModeHandler, i as ViewUserModal, y as typicalZustandStoreExcludes, b as typicalZustandStoreStateSlice, v as useFullscreen, n as useUserDetails, g as useUserFriends, r as useUserToken };
@@ -0,0 +1,13 @@
1
+ //#region src/constants/typicalZustandStoreExcludes.js
2
+ var e = [
3
+ "_hasHydrated",
4
+ "showSettingsModal",
5
+ "showInfoModal",
6
+ "showCreditsModal",
7
+ "showGameOverModal",
8
+ "showMenu",
9
+ "lobbyDetails",
10
+ "sceneKey"
11
+ ];
12
+ //#endregion
13
+ export { e as default };
@@ -0,0 +1,79 @@
1
+ //#region src/constants/typicalZustandStoreStateSlice.js
2
+ var e = (e, t, n) => ({
3
+ _hasHydrated: !1,
4
+ setHasHydrated: (t) => {
5
+ e({ _hasHydrated: t });
6
+ },
7
+ darkMode: null,
8
+ toggleDarkMode: () => e({ darkMode: !t().darkMode }),
9
+ setDarkMode: (t) => {
10
+ e((e) => ({ darkMode: t }));
11
+ },
12
+ nickname: n(),
13
+ setNickname: (t) => {
14
+ e((e) => ({ nickname: t }));
15
+ },
16
+ randomNickname: () => {
17
+ let t = n();
18
+ e((e) => ({ nickname: t }));
19
+ },
20
+ nicknameKeyboard: !1,
21
+ setNicknameKeyboard: (t) => {
22
+ e((e) => ({ nicknameKeyboard: t }));
23
+ },
24
+ debug: !1,
25
+ setDebug: (t) => {
26
+ e((e) => ({ debug: t }));
27
+ },
28
+ sidebar: !0,
29
+ toggleSidebar: () => {
30
+ e((e) => ({ sidebar: !e.sidebar }));
31
+ },
32
+ setSidebar: (t) => {
33
+ e((e) => ({ sidebar: t }));
34
+ },
35
+ showMenu: !1,
36
+ setShowMenu: (t) => e({ showMenu: t }),
37
+ showSettingsModal: !1,
38
+ setShowSettingsModal: (t) => {
39
+ e((e) => ({ showSettingsModal: t }));
40
+ },
41
+ showInfoModal: !1,
42
+ setShowInfoModal: (t) => {
43
+ e((e) => ({ showInfoModal: t }));
44
+ },
45
+ showCreditsModal: !1,
46
+ setShowCreditsModal: (t) => {
47
+ e((e) => ({ showCreditsModal: t }));
48
+ },
49
+ graphicsQuality: "High",
50
+ setGraphicsQuality: (t) => e({ graphicsQuality: t }),
51
+ lobbyDetails: {
52
+ players: [],
53
+ games: []
54
+ },
55
+ setLobbyDetails: (t) => e({ lobbyDetails: t }),
56
+ landingAnimation: !0,
57
+ setLandingAnimation: (t) => e({ landingAnimation: t }),
58
+ toggleLandingAnimation: () => e({ landingAnimation: !t().landingAnimation }),
59
+ toontownMode: !1,
60
+ toggleToontownMode: () => {
61
+ e((e) => ({ toontownMode: !e.toontownMode }));
62
+ },
63
+ setToontownMode: (t) => {
64
+ e((e) => ({ toontownMode: t }));
65
+ },
66
+ showGameOverModal: !1,
67
+ setShowGameOverModal: (t) => {
68
+ e((e) => ({ showGameOverModal: t }));
69
+ },
70
+ sceneKey: 0,
71
+ setSceneKey: (t) => {
72
+ e((e) => ({ sceneKey: t }));
73
+ },
74
+ reloadScene: () => {
75
+ e((e) => ({ sceneKey: e.sceneKey + 1 }));
76
+ }
77
+ });
78
+ //#endregion
79
+ export { e as default };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@articles-media/articles-dev-box",
3
3
  "description": "Shared code, functions, and components for different Articles Media projects.",
4
- "version": "1.0.29",
4
+ "version": "1.0.31",
5
5
  "type": "module",
6
6
  "imports": {
7
7
  "#root/src/*": "./src/*"
@@ -36,6 +36,8 @@
36
36
  "./useUserToken": "./dist/useUserToken.js",
37
37
  "./useUserFriends": "./dist/useUserFriends.js",
38
38
  "./useFullscreen": "./dist/useFullscreen.js",
39
+ "./typicalZustandStoreExcludes": "./dist/typicalZustandStoreExcludes.js",
40
+ "./typicalZustandStoreStateSlice": "./dist/typicalZustandStoreStateSlice.js",
39
41
  "./dist/style.css": "./dist/articles-dev-box.css",
40
42
  "./dist/articles-dev-box.css": "./dist/articles-dev-box.css"
41
43
  },