@mriqbox/ui-kit 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cli.js CHANGED
@@ -182,7 +182,7 @@ async function checkDependencies(filePath, installDir) {
182
182
  program
183
183
  .name('mri-ui')
184
184
  .description('Add Mri UI components to your project')
185
- .version('4.1.0');
185
+ .version('4.2.0');
186
186
 
187
187
  program
188
188
  .command('add <component>')
@@ -0,0 +1,46 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export type MriTabletFrameSize = 'sm' | 'md' | 'lg' | 'fullscreen';
4
+ export interface MriTabletFrameProps {
5
+ /** Conteudo do tablet — geralmente um <MriDashboardLayout> ou panel custom. */
6
+ children: ReactNode;
7
+ /**
8
+ * Toggle de visibilidade. `false` usa display:none ao inves de unmount —
9
+ * preserva state interno (eg. video streamers, redux store) entre toggles.
10
+ */
11
+ visible?: boolean;
12
+ /**
13
+ * Zoom user-controlled (0-200, default 100). Aplicado via CSS transform
14
+ * scale a partir do centro — nao afeta layout interno.
15
+ */
16
+ scale?: number;
17
+ /**
18
+ * Preset de tamanho. Cada um combina porcentagem (responsivo) com max
19
+ * absoluto (clamp em telas grandes / 4K) e min absoluto (anti-colapso).
20
+ *
21
+ * - sm: ~80% até 1100x700, min 900x550
22
+ * - md: ~85% até 1400x900, min 1000x600 (default)
23
+ * - lg: ~90% até 1700x1080, min 1100x700
24
+ * - fullscreen: 100% sem border/radius (debug ou caso edge)
25
+ */
26
+ size?: MriTabletFrameSize;
27
+ /** Classes extras pro frame externo (sobrepoe sizing/border se necessario). */
28
+ className?: string;
29
+ }
30
+ /**
31
+ * Frame de tablet centralizado pra UIs FiveM. O body do consumer precisa de
32
+ * `background: transparent` pra deixar o jogo aparecer ao redor — nao da
33
+ * pra forcar isso de dentro do componente.
34
+ *
35
+ * Composivel com qualquer conteudo, mas o caso primario e envolver um
36
+ * <MriDashboardLayout>:
37
+ *
38
+ * ```tsx
39
+ * <MriTabletFrame size="md" visible={uiOpen} scale={userZoom}>
40
+ * <MriDashboardLayout sidebar={...} header={...}>
41
+ * {children}
42
+ * </MriDashboardLayout>
43
+ * </MriTabletFrame>
44
+ * ```
45
+ */
46
+ export declare function MriTabletFrame({ children, visible, scale, size, className, }: MriTabletFrameProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { MriTabletFrame } from './MriTabletFrame';
3
+
4
+ declare const meta: Meta<typeof MriTabletFrame>;
5
+ export default meta;
6
+ export declare const Default: StoryObj<typeof MriTabletFrame>;
7
+ export declare const Small: StoryObj<typeof MriTabletFrame>;
8
+ export declare const Large: StoryObj<typeof MriTabletFrame>;
9
+ export declare const Fullscreen: StoryObj<typeof MriTabletFrame>;
10
+ export declare const WithUserScale: StoryObj<typeof MriTabletFrame>;
11
+ export declare const Toggle: StoryObj<typeof MriTabletFrame>;
package/dist/index.d.ts CHANGED
@@ -39,4 +39,5 @@ export * from './components/organisms/MriTopbar';
39
39
  export * from './components/organisms/MriKeyboardVisualizer';
40
40
  export * from './components/organisms/MriPlayerScreenStream';
41
41
  export * from './components/templates/MriDashboardLayout';
42
+ export * from './components/templates/MriTabletFrame';
42
43
  export * from './lib/utils';
package/dist/index.es.js CHANGED
@@ -3802,39 +3802,39 @@ const Eu = ne("Zap", [
3802
3802
  }
3803
3803
  );
3804
3804
  te.displayName = "MriButton";
3805
- const ex = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3805
+ const tx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3806
3806
  /* @__PURE__ */ l.jsx("path", { d: "M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7z", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3807
3807
  /* @__PURE__ */ l.jsx("circle", { cx: "12", cy: "9", r: "2.5", fill: "currentColor" })
3808
- ] }), tx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3808
+ ] }), rx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3809
3809
  /* @__PURE__ */ l.jsx("path", { d: "M21 15v4a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3810
3810
  /* @__PURE__ */ l.jsx("path", { d: "M7 10l5-5 5 5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3811
3811
  /* @__PURE__ */ l.jsx("path", { d: "M12 5v12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
3812
- ] }), rx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3812
+ ] }), nx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3813
3813
  /* @__PURE__ */ l.jsx("path", { d: "M21 12H7", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3814
3814
  /* @__PURE__ */ l.jsx("path", { d: "M11 16l-4-4 4-4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
3815
- ] }), nx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3815
+ ] }), ox = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3816
3816
  /* @__PURE__ */ l.jsx("path", { d: "M21 12a9 9 0 11-3-6.6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3817
3817
  /* @__PURE__ */ l.jsx("path", { d: "M12 8v8", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3818
3818
  /* @__PURE__ */ l.jsx("path", { d: "M8 12h8", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
3819
- ] }), ox = (e = {}) => /* @__PURE__ */ l.jsx("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ l.jsx("path", { d: "M20 6L9 17l-5-5", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }), ax = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3819
+ ] }), ax = (e = {}) => /* @__PURE__ */ l.jsx("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ l.jsx("path", { d: "M20 6L9 17l-5-5", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }), sx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3820
3820
  /* @__PURE__ */ l.jsx("rect", { x: "2", y: "7", width: "20", height: "14", rx: "2", stroke: "currentColor", strokeWidth: "1.5" }),
3821
3821
  /* @__PURE__ */ l.jsx("path", { d: "M12 11v6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3822
3822
  /* @__PURE__ */ l.jsx("circle", { cx: "12", cy: "10", r: "1.5", fill: "currentColor" })
3823
- ] }), sx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3823
+ ] }), ix = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3824
3824
  /* @__PURE__ */ l.jsx("path", { d: "M16 3l3 3v11a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V6l3-3", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3825
3825
  /* @__PURE__ */ l.jsx("path", { d: "M9 8h6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
3826
- ] }), ix = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3826
+ ] }), lx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3827
3827
  /* @__PURE__ */ l.jsx("path", { d: "M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3828
3828
  /* @__PURE__ */ l.jsx("circle", { cx: "12", cy: "12", r: "3", stroke: "currentColor", strokeWidth: "1.5" })
3829
- ] }), lx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3829
+ ] }), cx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3830
3830
  /* @__PURE__ */ l.jsx("path", { d: "M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" }),
3831
3831
  /* @__PURE__ */ l.jsx("path", { d: "M12 9v4", stroke: "currentColor", strokeWidth: "1.4", strokeLinecap: "round", strokeLinejoin: "round" }),
3832
3832
  /* @__PURE__ */ l.jsx("circle", { cx: "12", cy: "17", r: "0.8", fill: "currentColor" })
3833
- ] }), cx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3833
+ ] }), dx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3834
3834
  /* @__PURE__ */ l.jsx("path", { d: "M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }),
3835
3835
  /* @__PURE__ */ l.jsx("circle", { cx: "12", cy: "7", r: "4", stroke: "currentColor", strokeWidth: "1.5" }),
3836
3836
  /* @__PURE__ */ l.jsx("path", { d: "M15 10l-6-6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
3837
- ] }), dx = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3837
+ ] }), ux = (e = {}) => /* @__PURE__ */ l.jsxs("svg", { className: e.className, width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3838
3838
  /* @__PURE__ */ l.jsx("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "1.5" }),
3839
3839
  /* @__PURE__ */ l.jsx("path", { d: "M4.93 4.93l14.14 14.14", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
3840
3840
  ] }), Oo = m.forwardRef(
@@ -4621,7 +4621,7 @@ const _i = m.forwardRef(({ className: e, orientation: t = "vertical", ...r }, n)
4621
4621
  }
4622
4622
  ));
4623
4623
  _i.displayName = Ao.displayName;
4624
- function ux({
4624
+ function fx({
4625
4625
  label: e,
4626
4626
  variant: t = "default",
4627
4627
  className: r,
@@ -5067,7 +5067,7 @@ function Hi(e) {
5067
5067
  return e ? "open" : "closed";
5068
5068
  }
5069
5069
  var kf = Di, _f = Ii, Mf = Fi, Yi = $i, Vi = zi;
5070
- const fx = kf, Ef = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ l.jsx(
5070
+ const hx = kf, Ef = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ l.jsx(
5071
5071
  _f,
5072
5072
  {
5073
5073
  ref: r,
@@ -7945,7 +7945,7 @@ Dp.displayName = Jl;
7945
7945
  function aa(e) {
7946
7946
  return e ? "open" : "closed";
7947
7947
  }
7948
- var ec = "DialogTitleWarning", [hx, tc] = $u(ec, {
7948
+ var ec = "DialogTitleWarning", [mx, tc] = $u(ec, {
7949
7949
  contentName: St,
7950
7950
  titleName: oa,
7951
7951
  docsSlug: "dialog"
@@ -8349,7 +8349,7 @@ const tv = ({
8349
8349
  }
8350
8350
  );
8351
8351
  tv.displayName = "MriCommandShortcut";
8352
- function mx({
8352
+ function px({
8353
8353
  options: e,
8354
8354
  value: t,
8355
8355
  onChange: r,
@@ -8478,7 +8478,7 @@ function ia({
8478
8478
  )
8479
8479
  ] }) });
8480
8480
  }
8481
- function px({ title: e, children: t, onClose: r, className: n }) {
8481
+ function vx({ title: e, children: t, onClose: r, className: n }) {
8482
8482
  return /* @__PURE__ */ l.jsxs(ia, { onClose: r, className: n, children: [
8483
8483
  /* @__PURE__ */ l.jsxs("div", { className: "flex items-center justify-between mb-6", children: [
8484
8484
  /* @__PURE__ */ l.jsx("h3", { className: "text-xl font-bold tracking-tight text-foreground", children: e }),
@@ -8709,7 +8709,7 @@ function nv({
8709
8709
  ] }) })
8710
8710
  ] });
8711
8711
  }
8712
- function vx(e) {
8712
+ function gx(e) {
8713
8713
  return e.multiple === !0 ? /* @__PURE__ */ l.jsx(nv, { ...e }) : /* @__PURE__ */ l.jsx(rv, { ...e });
8714
8714
  }
8715
8715
  var ov = (e, t, r, n, o, a, s, i) => {
@@ -8741,7 +8741,7 @@ m.memo(({ forcedTheme: e, storageKey: t, attribute: r, enableSystem: n, enableCo
8741
8741
  let u = JSON.stringify([r, t, a, e, i, s, n, o]).slice(1, -1);
8742
8742
  return m.createElement("script", { ...d, suppressHydrationWarning: !0, nonce: typeof window > "u" ? c : "", dangerouslySetInnerHTML: { __html: `(${ov.toString()})(${u})` } });
8743
8743
  });
8744
- const gx = ({ themeLabel: e = "Tema", themeIconLabel: t = "Alterar tema", lightLabel: r = "Claro", darkLabel: n = "Escuro", systemLabel: o = "Sistema" }) => {
8744
+ const bx = ({ themeLabel: e = "Tema", themeIconLabel: t = "Alterar tema", lightLabel: r = "Claro", darkLabel: n = "Escuro", systemLabel: o = "Sistema" }) => {
8745
8745
  const { theme: a, setTheme: s } = iv(), [i, c] = fe(!1), d = Le(null);
8746
8746
  we(() => {
8747
8747
  const f = (h) => {
@@ -8798,7 +8798,7 @@ const gx = ({ themeLabel: e = "Tema", themeIconLabel: t = "Alterar tema", lightL
8798
8798
  const [r, n] = t, o = Number(r), a = Number(n);
8799
8799
  return !Number.isFinite(o) || !Number.isFinite(a) || o < 0 || o > 23 || a < 0 || a > 59 ? [0, 0] : [o, a];
8800
8800
  };
8801
- function bx({ value: e, onChange: t, disabled: r, hourLabel: n = "Hora", minuteLabel: o = "Minuto", size: a = "default", error: s, minTime: i, maxTime: c }) {
8801
+ function xx({ value: e, onChange: t, disabled: r, hourLabel: n = "Hora", minuteLabel: o = "Minuto", size: a = "default", error: s, minTime: i, maxTime: c }) {
8802
8802
  const [d, u] = m.useState(!1), [f, h] = Gn(e), [p, g] = Gn(i), [v, b] = c ? Gn(c) : [23, 59], x = lv.map((C) => ({
8803
8803
  value: C,
8804
8804
  disabled: C < p || C > v
@@ -8872,7 +8872,7 @@ function bx({ value: e, onChange: t, disabled: r, hourLabel: n = "Hora", minuteL
8872
8872
  ] }) })
8873
8873
  ] });
8874
8874
  }
8875
- function xx({
8875
+ function yx({
8876
8876
  text: e,
8877
8877
  className: t,
8878
8878
  iconSize: r = 4,
@@ -8893,7 +8893,7 @@ function xx({
8893
8893
  }
8894
8894
  );
8895
8895
  }
8896
- function yx({
8896
+ function wx({
8897
8897
  label: e,
8898
8898
  amount: t,
8899
8899
  amountColorClass: r = "text-foreground",
@@ -8947,7 +8947,7 @@ function yx({
8947
8947
  ] })
8948
8948
  ] });
8949
8949
  }
8950
- const wx = ({
8950
+ const Nx = ({
8951
8951
  id: e = "",
8952
8952
  label: t,
8953
8953
  icon: r = Eu,
@@ -9124,7 +9124,7 @@ const wx = ({
9124
9124
  ]
9125
9125
  }
9126
9126
  );
9127
- }, Nx = ({
9127
+ }, Cx = ({
9128
9128
  title: e,
9129
9129
  icon: t,
9130
9130
  variant: r = "default",
@@ -9186,7 +9186,7 @@ const wx = ({
9186
9186
  }
9187
9187
  );
9188
9188
  };
9189
- function Cx({
9189
+ function jx({
9190
9190
  icon: e,
9191
9191
  label: t,
9192
9192
  onClick: r,
@@ -9215,7 +9215,7 @@ function Cx({
9215
9215
  }
9216
9216
  );
9217
9217
  }
9218
- function jx({
9218
+ function Sx({
9219
9219
  value: e,
9220
9220
  onChange: t,
9221
9221
  placeholder: r,
@@ -9239,7 +9239,7 @@ function jx({
9239
9239
  )
9240
9240
  ] });
9241
9241
  }
9242
- function Sx({ icon: e, title: t, className: r }) {
9242
+ function kx({ icon: e, title: t, className: r }) {
9243
9243
  return /* @__PURE__ */ l.jsxs("h3", { className: k("text-muted-foreground text-xs font-bold uppercase tracking-widest mb-3 flex items-center gap-2", r), children: [
9244
9244
  /* @__PURE__ */ l.jsx(e, { className: "w-3.5 h-3.5" }),
9245
9245
  " ",
@@ -12098,7 +12098,7 @@ function Oc({
12098
12098
  );
12099
12099
  }
12100
12100
  Oc.displayName = "MriCalendar";
12101
- function kx({ value: e, onChange: t, placeholder: r = "Selecione", disabled: n, locale: o = wc, size: a = "default", error: s, fromDate: i, toDate: c }) {
12101
+ function _x({ value: e, onChange: t, placeholder: r = "Selecione", disabled: n, locale: o = wc, size: a = "default", error: s, fromDate: i, toDate: c }) {
12102
12102
  return /* @__PURE__ */ l.jsxs(Jt, { children: [
12103
12103
  /* @__PURE__ */ l.jsx(er, { asChild: !0, children: /* @__PURE__ */ l.jsxs("div", { className: "w-full space-y-1", children: [
12104
12104
  /* @__PURE__ */ l.jsxs(
@@ -12452,7 +12452,7 @@ function G0(e, t) {
12452
12452
  }, "name"]);
12453
12453
  }
12454
12454
  q0([G0]);
12455
- const _x = ({ color: e, onChange: t, active: r, format: n = "hsl-string" }) => {
12455
+ const Mx = ({ color: e, onChange: t, active: r, format: n = "hsl-string" }) => {
12456
12456
  const o = (g) => /^\d+(\.\d+)?\s+\d+(\.\d+)?%\s+\d+(\.\d+)?%$/.test(g) ? be(`hsl(${g})`).toHex() : be(g).toHex(), [a, s] = fe(o(e)), [i, c] = fe("hex"), d = be(a), [u, f] = fe({
12457
12457
  hex: a,
12458
12458
  rgb: d.toRgb(),
@@ -12622,7 +12622,7 @@ const _x = ({ color: e, onChange: t, active: r, format: n = "hsl-string" }) => {
12622
12622
  /* @__PURE__ */ l.jsx(Su, { className: "w-6 h-6 text-red-500/80" }),
12623
12623
  /* @__PURE__ */ l.jsx("span", { className: "text-[10px] font-black uppercase tracking-widest text-red-500/80", children: e })
12624
12624
  ] });
12625
- function Mx({ vitals: e, size: t = "compact", onAction: r, onIconClick: n, className: o, labels: a, disabledVitals: s = [] }) {
12625
+ function Ex({ vitals: e, size: t = "compact", onAction: r, onIconClick: n, className: o, labels: a, disabledVitals: s = [] }) {
12626
12626
  var f;
12627
12627
  const i = ((f = e == null ? void 0 : e.metadata) == null ? void 0 : f.isdead) ?? !1, c = (a == null ? void 0 : a.dead) ?? "Dead", d = (h) => {
12628
12628
  var g;
@@ -12739,7 +12739,7 @@ const X0 = {
12739
12739
  thirst: { icon: ci, color: "text-cyan-500", bgColor: "bg-cyan-500", hex: "#06b6d4", label: "thirst", max: 100 },
12740
12740
  stress: { icon: ii, color: "text-purple-500", bgColor: "bg-purple-500", hex: "#a855f7", label: "stress", max: 100 }
12741
12741
  };
12742
- function Ex({
12742
+ function Px({
12743
12743
  isOpen: e,
12744
12744
  onClose: t,
12745
12745
  onSubmit: r,
@@ -12888,7 +12888,7 @@ function Ex({
12888
12888
  ` })
12889
12889
  ] });
12890
12890
  }
12891
- function Px({ title: e, icon: t, count: r, countLabel: n, children: o, className: a, ...s }) {
12891
+ function Rx({ title: e, icon: t, count: r, countLabel: n, children: o, className: a, ...s }) {
12892
12892
  return /* @__PURE__ */ l.jsxs("div", { className: k("w-full h-auto min-h-[5rem] border-b border-border flex items-center justify-between py-4 px-6 bg-card/30 shrink-0", a), ...s, children: [
12893
12893
  /* @__PURE__ */ l.jsxs("div", { className: "flex items-center gap-4", children: [
12894
12894
  /* @__PURE__ */ l.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -12904,7 +12904,7 @@ function Px({ title: e, icon: t, count: r, countLabel: n, children: o, className
12904
12904
  /* @__PURE__ */ l.jsx("div", { className: "flex items-center gap-3", children: o })
12905
12905
  ] });
12906
12906
  }
12907
- function Rx({
12907
+ function Ox({
12908
12908
  items: e,
12909
12909
  activeRoute: t,
12910
12910
  onNavigate: r,
@@ -12960,7 +12960,7 @@ function Rx({
12960
12960
  ] })
12961
12961
  ] });
12962
12962
  }
12963
- function Ox({
12963
+ function Dx({
12964
12964
  items: e,
12965
12965
  activeRoute: t,
12966
12966
  onNavigate: r,
@@ -13155,7 +13155,7 @@ const Nt = ({ label: e, className: t, style: r, active: n }) => /* @__PURE__ */
13155
13155
  }, Q0 = {
13156
13156
  iceServers: [{ urls: "stun:stun.l.google.com:19302" }]
13157
13157
  };
13158
- function Dx({
13158
+ function Ax({
13159
13159
  playerId: e,
13160
13160
  // playerName is not used in this component but kept for API consistency if needed
13161
13161
  className: t,
@@ -13383,7 +13383,7 @@ function Dx({
13383
13383
  /* @__PURE__ */ l.jsx("div", { className: "absolute inset-0 pointer-events-none shadow-[inset_0_0_100px_rgba(0,0,0,0.5)] opacity-40" })
13384
13384
  ] });
13385
13385
  }
13386
- function Ax({
13386
+ function Tx({
13387
13387
  sidebar: e,
13388
13388
  topbar: t,
13389
13389
  header: r,
@@ -13410,19 +13410,52 @@ function Ax({
13410
13410
  h
13411
13411
  ] });
13412
13412
  }
13413
+ const Z0 = {
13414
+ sm: "w-[80%] h-[80%] max-w-[1100px] max-h-[700px] min-w-[900px] min-h-[550px]",
13415
+ md: "w-[85%] h-[85%] max-w-[1400px] max-h-[900px] min-w-[1000px] min-h-[600px]",
13416
+ lg: "w-[90%] h-[90%] max-w-[1700px] max-h-[1080px] min-w-[1100px] min-h-[700px]",
13417
+ fullscreen: "w-full h-full"
13418
+ };
13419
+ function Lx({
13420
+ children: e,
13421
+ visible: t = !0,
13422
+ scale: r = 100,
13423
+ size: n = "md",
13424
+ className: o
13425
+ }) {
13426
+ const a = n === "fullscreen";
13427
+ return /* @__PURE__ */ l.jsx(
13428
+ "div",
13429
+ {
13430
+ className: k(
13431
+ "fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2",
13432
+ "bg-background text-foreground overflow-hidden",
13433
+ !a && "border border-border rounded-xl shadow-2xl",
13434
+ Z0[n],
13435
+ o
13436
+ ),
13437
+ style: {
13438
+ display: t ? "block" : "none",
13439
+ transform: `translate(-50%, -50%) scale(${r / 100})`,
13440
+ transformOrigin: "center center"
13441
+ },
13442
+ children: e
13443
+ }
13444
+ );
13445
+ }
13413
13446
  export {
13414
- fx as MriAccordion,
13447
+ hx as MriAccordion,
13415
13448
  Rf as MriAccordionContent,
13416
13449
  Ef as MriAccordionItem,
13417
13450
  Pf as MriAccordionTrigger,
13418
- wx as MriActionCard,
13419
- Nx as MriActionModal,
13451
+ Nx as MriActionCard,
13452
+ Cx as MriActionModal,
13420
13453
  cu as MriAvatar,
13421
13454
  uu as MriAvatarFallback,
13422
13455
  du as MriAvatarImage,
13423
13456
  Ya as MriBadge,
13424
- dx as MriBanIcon,
13425
- tx as MriBringIcon,
13457
+ ux as MriBanIcon,
13458
+ rx as MriBringIcon,
13426
13459
  te as MriButton,
13427
13460
  Oc as MriCalendar,
13428
13461
  Of as MriCard,
@@ -13431,8 +13464,8 @@ export {
13431
13464
  If as MriCardFooter,
13432
13465
  Df as MriCardHeader,
13433
13466
  Af as MriCardTitle,
13434
- sx as MriClothingIcon,
13435
- _x as MriColorPicker,
13467
+ ix as MriClothingIcon,
13468
+ Mx as MriColorPicker,
13436
13469
  Cr as MriCommand,
13437
13470
  Sr as MriCommandEmpty,
13438
13471
  kr as MriCommandGroup,
@@ -13441,42 +13474,43 @@ export {
13441
13474
  jn as MriCommandList,
13442
13475
  ev as MriCommandSeparator,
13443
13476
  tv as MriCommandShortcut,
13444
- mx as MriCompactSearch,
13445
- xx as MriCopyButton,
13446
- Ax as MriDashboardLayout,
13447
- kx as MriDatePicker,
13448
- px as MriDialog,
13449
- yx as MriEconomyCard,
13450
- ix as MriEyeIcon,
13451
- Cx as MriGridActionButton,
13477
+ px as MriCompactSearch,
13478
+ yx as MriCopyButton,
13479
+ Tx as MriDashboardLayout,
13480
+ _x as MriDatePicker,
13481
+ vx as MriDialog,
13482
+ wx as MriEconomyCard,
13483
+ lx as MriEyeIcon,
13484
+ jx as MriGridActionButton,
13452
13485
  Oo as MriInput,
13453
13486
  K0 as MriKeyboardVisualizer,
13454
- cx as MriKickIcon,
13487
+ dx as MriKickIcon,
13455
13488
  ia as MriModal,
13456
- ax as MriMoneyIcon,
13457
- Px as MriPageHeader,
13458
- Dx as MriPlayerScreenStream,
13459
- Mx as MriPlayerVitals,
13489
+ sx as MriMoneyIcon,
13490
+ Rx as MriPageHeader,
13491
+ Ax as MriPlayerScreenStream,
13492
+ Ex as MriPlayerVitals,
13460
13493
  Jt as MriPopover,
13461
13494
  Rt as MriPopoverContent,
13462
13495
  er as MriPopoverTrigger,
13463
- nx as MriReviveIcon,
13496
+ ox as MriReviveIcon,
13464
13497
  Jr as MriScrollArea,
13465
13498
  _i as MriScrollBar,
13466
- jx as MriSearchInput,
13467
- Sx as MriSectionHeader,
13468
- vx as MriSelect,
13469
- rx as MriSendBackIcon,
13470
- Rx as MriSidebar,
13499
+ Sx as MriSearchInput,
13500
+ kx as MriSectionHeader,
13501
+ gx as MriSelect,
13502
+ nx as MriSendBackIcon,
13503
+ Ox as MriSidebar,
13471
13504
  nf as MriSpinner,
13472
- ux as MriStatusBadge,
13473
- ex as MriTeleportIcon,
13474
- gx as MriThemeToggle,
13475
- bx as MriTimePicker,
13476
- Ox as MriTopbar,
13477
- ox as MriVerifyIcon,
13478
- Ex as MriVitalAdjustModal,
13479
- lx as MriWarnIcon,
13505
+ fx as MriStatusBadge,
13506
+ Lx as MriTabletFrame,
13507
+ tx as MriTeleportIcon,
13508
+ bx as MriThemeToggle,
13509
+ xx as MriTimePicker,
13510
+ Dx as MriTopbar,
13511
+ ax as MriVerifyIcon,
13512
+ Px as MriVitalAdjustModal,
13513
+ cx as MriWarnIcon,
13480
13514
  k as cn,
13481
13515
  fu as mriBadgeVariants,
13482
13516
  lo as mriButtonVariants