fiboui 2.8.2 → 2.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -148,12 +148,12 @@ Box()
148
148
  .children(() => [
149
149
  Text(`Count: ${count.value}`),
150
150
  Button('+').onPress(() => {
151
- count.value += 1
151
+ count.change((n) => n + 1)
152
152
  }),
153
153
  ])
154
154
  ```
155
155
 
156
- `.bindSignal` re-assembles. Read `.value` inside a **function child** so updates are live. `` Text(`Total ${todos.$length}`) `` stays live without a function child. Forms and validation: [Form](docs/components/interactive-form.md).
156
+ `.bindSignal` re-assembles. Read `.value` inside a **function child** so updates are live. `.value =`, `.set()`, `.change()`, and `.reset()` all notify the same way. `` Text(`Total ${todos.$length}`) `` stays live without a function child. Forms and validation: [Form](docs/components/interactive-form.md).
157
157
 
158
158
  ```mermaid
159
159
  sequenceDiagram
@@ -162,7 +162,7 @@ sequenceDiagram
162
162
  participant H as onPress
163
163
 
164
164
  UI->>S: .bindSignal(count)
165
- H->>S: count.value += 1
165
+ H->>S: count.change(n => n + 1)
166
166
  S-->>UI: notify subscribers
167
167
  UI->>UI: re-assemble children()
168
168
  ```
@@ -96,8 +96,9 @@ class ht {
96
96
  constructor(e) {
97
97
  l(this, "listeners", /* @__PURE__ */ new Set());
98
98
  l(this, "effects", /* @__PURE__ */ new Set());
99
+ l(this, "_initial");
99
100
  l(this, "_notifyDepth", 0);
100
- this._value = e;
101
+ this._value = e, this._initial = e;
101
102
  }
102
103
  get value() {
103
104
  const e = ko();
@@ -106,6 +107,23 @@ class ht {
106
107
  set value(e) {
107
108
  this._value !== e && (this._value = e, this.notify());
108
109
  }
110
+ /** Replace the value. Same notify path as `.value = next`. */
111
+ set(e) {
112
+ return this.value = e, this;
113
+ }
114
+ /**
115
+ * Write a value, or an updater `(prev) => next`.
116
+ * Function-valued signals should use `.set()` / `.value =` so the function is stored, not called.
117
+ * Not named `update`: `listSignal.update(id, patch)` is the item patch.
118
+ */
119
+ change(e) {
120
+ const t = typeof e == "function" ? e(this._value) : e;
121
+ return this.value = t, this;
122
+ }
123
+ /** Restore the value passed to `signal(initial)`. */
124
+ reset() {
125
+ return this.value = this._initial, this;
126
+ }
109
127
  subscribe(e) {
110
128
  return this.listeners.add(e), () => this.listeners.delete(e);
111
129
  }
package/dist/content.js CHANGED
@@ -1,6 +1,6 @@
1
- import { A as s, B as r, I as o } from "./icons-BGZkIpm8.js";
2
- import { a9 as n, a8 as I } from "./client-BISJTJUX.js";
3
- import { A as m, I as p, L as x, P as A, a as f, S as l } from "./index-B5hJpNl2.js";
1
+ import { A as s, B as r, I as o } from "./icons-7Xl0GDMW.js";
2
+ import { a9 as n, a8 as I } from "./client-8KCOzRhg.js";
3
+ import { A as m, I as p, L as x, P as A, a as f, S as l } from "./index-CVy8N94v.js";
4
4
  export {
5
5
  m as Alert,
6
6
  s as Avatar,
package/dist/core.js CHANGED
@@ -1,5 +1,5 @@
1
- import { C as e, E as t, N as r, a0 as i, Z as o, _ as n, U as l, F as u, I as c, M as S, T as p, O as g, h as b, w as T, P as v, R as E, x as d, y as C, S as R, a2 as F, l as I, k as f, c as m, b as y, a as O, Y as P, Q as x, W as M, g as N, V as _, X as w, K as A, L as B, i as L, $ as V, J as h, o as q, H as z, r as G, z as K, s as W, G as X, A as j, D as k, B as D, a1 as H, f as J, q as Q, e as U, t as Y, j as Z, d as $, v as ss, u as as, n as es, p as ts, m as rs } from "./client-BISJTJUX.js";
2
- import { L as os, c as ns, b as ls, a as us, e as cs, l as Ss, p as ps, w as gs } from "./page-D8FyCPcH.js";
1
+ import { C as e, E as t, N as r, a0 as i, Z as o, _ as n, U as l, F as u, I as c, M as S, T as p, O as g, h as b, w as T, P as v, R as E, x as d, y as C, S as R, a2 as F, l as I, k as f, c as m, b as y, a as O, Y as P, Q as x, W as M, g as N, V as _, X as w, K as A, L as B, i as L, $ as V, J as h, o as q, H as z, r as G, z as K, s as W, G as X, A as j, D as k, B as D, a1 as H, f as J, q as Q, e as U, t as Y, j as Z, d as $, v as ss, u as as, n as es, p as ts, m as rs } from "./client-8KCOzRhg.js";
2
+ import { L as os, c as ns, b as ls, a as us, e as cs, l as Ss, p as ps, w as gs } from "./page-FXW2hz2C.js";
3
3
  export {
4
4
  e as ComputedSignal,
5
5
  t as Easing,
@@ -2,7 +2,7 @@ var L = Object.defineProperty;
2
2
  var R = (t, r, e) => r in t ? L(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;
3
3
  var i = (t, r, e) => R(t, typeof r != "symbol" ? r + "" : r, e);
4
4
  import h from "react";
5
- import { aT as C, aU as E, au as y, b5 as I, a3 as j, a8 as H, aX as W, a_ as M, aY as D } from "./client-BISJTJUX.js";
5
+ import { aT as C, aU as E, au as y, b5 as I, a3 as j, a8 as H, aX as W, a_ as M, aY as D } from "./client-8KCOzRhg.js";
6
6
  import { jsx as s, jsxs as v } from "react/jsx-runtime";
7
7
  function $(t) {
8
8
  if (typeof t != "string") return "";
@@ -2,10 +2,10 @@ var Ct = Object.defineProperty;
2
2
  var Et = (e, r, t) => r in e ? Ct(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
3
  var n = (e, r, t) => Et(e, typeof r != "symbol" ? r + "" : r, t);
4
4
  import s from "react";
5
- import { aT as A, aU as T, aX as C, a_ as M, aY as P, b1 as it, b5 as bt, b8 as kt, bl as It, au as B, F as nt, bm as lt, bn as Bt, bo as At, a3 as W, a8 as x } from "./client-BISJTJUX.js";
6
- import { S as D, C as F } from "./index-5LiratLS.js";
7
- import { B as yt } from "./index-CZs58ByQ.js";
8
- import { B as Z, I as ot, a as L, A as Tt } from "./icons-BGZkIpm8.js";
5
+ import { aT as A, aU as T, aX as C, a_ as M, aY as P, b1 as it, b5 as bt, b8 as kt, bl as It, au as B, F as nt, bm as lt, bn as Bt, bo as At, a3 as W, a8 as x } from "./client-8KCOzRhg.js";
6
+ import { S as D, C as F } from "./index-C5TPsNMz.js";
7
+ import { B as yt } from "./index-CU0_oAGn.js";
8
+ import { B as Z, I as ot, a as L, A as Tt } from "./icons-7Xl0GDMW.js";
9
9
  function j(e, r) {
10
10
  if (!(typeof r != "string" || !C(r)))
11
11
  for (const t of M(r))
@@ -2,7 +2,7 @@ var w = Object.defineProperty;
2
2
  var S = (s, e, t) => e in s ? w(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
3
  var n = (s, e, t) => S(s, typeof e != "symbol" ? e + "" : e, t);
4
4
  import m from "react";
5
- import { aT as g, aU as d, a$ as N, b0 as C, aY as j, aX as _, a_ as z } from "./client-BISJTJUX.js";
5
+ import { aT as g, aU as d, a$ as N, b0 as C, aY as j, aX as _, a_ as z } from "./client-8KCOzRhg.js";
6
6
  function B(s, e) {
7
7
  if (!(typeof e != "string" || !_(e)))
8
8
  for (const t of z(e))
@@ -2,7 +2,7 @@ var tt = Object.defineProperty;
2
2
  var it = (e, i, t) => i in e ? tt(e, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[i] = t;
3
3
  var f = (e, i, t) => it(e, typeof i != "symbol" ? i + "" : i, t);
4
4
  import d from "react";
5
- import { aT as v, aU as T, aY as C, aX as g, a_ as $, bh as w, bi as O, bj as S, bk as et, b1 as nt } from "./client-BISJTJUX.js";
5
+ import { aT as v, aU as T, aY as C, aX as g, a_ as $, bh as w, bi as O, bj as S, bk as et, b1 as nt } from "./client-8KCOzRhg.js";
6
6
  function rt(e, i) {
7
7
  if (!(typeof i != "string" || !g(i)))
8
8
  for (const t of $(i))
@@ -2,7 +2,7 @@ var c = Object.defineProperty;
2
2
  var f = (s, e, t) => e in s ? c(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
3
  var i = (s, e, t) => f(s, typeof e != "symbol" ? e + "" : e, t);
4
4
  import m from "react";
5
- import { aT as d, aU as y, aV as x, aW as n, aX as o, aY as l, aZ as T, a_ as v } from "./client-BISJTJUX.js";
5
+ import { aT as d, aU as y, aV as x, aW as n, aX as o, aY as l, aZ as T, a_ as v } from "./client-8KCOzRhg.js";
6
6
  function p(s, e) {
7
7
  if (!(typeof e != "string" || !o(e)))
8
8
  for (const t of v(e))
@@ -2,8 +2,8 @@ var ae = Object.defineProperty;
2
2
  var ie = (s, r, e) => r in s ? ae(s, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[r] = e;
3
3
  var i = (s, r, e) => ie(s, typeof r != "symbol" ? r + "" : r, e);
4
4
  import t from "react";
5
- import { aT as I, aU as $, aX as z, a_ as R, aY as q, t as le, b5 as Z, bg as oe } from "./client-BISJTJUX.js";
6
- import { a as F } from "./icons-BGZkIpm8.js";
5
+ import { aT as I, aU as $, aX as z, a_ as R, aY as q, t as le, b5 as Z, bg as oe } from "./client-8KCOzRhg.js";
6
+ import { a as F } from "./icons-7Xl0GDMW.js";
7
7
  function ce(s, r) {
8
8
  if (!(typeof r != "string" || !z(r)))
9
9
  for (const e of R(r))
package/dist/index.d.ts CHANGED
@@ -108,9 +108,20 @@ export declare class Signal<T> implements Subscribable<T> {
108
108
  private _value;
109
109
  private listeners;
110
110
  private effects;
111
+ private readonly _initial;
111
112
  constructor(_value: T);
112
113
  get value(): T;
113
114
  set value(newValue: T);
115
+ /** Replace the value. Same notify path as `.value = next`. */
116
+ set(next: T): this;
117
+ /**
118
+ * Write a value, or an updater `(prev) => next`.
119
+ * Function-valued signals should use `.set()` / `.value =` so the function is stored, not called.
120
+ * Not named `update`: `listSignal.update(id, patch)` is the item patch.
121
+ */
122
+ change(next: T | ((prev: T) => T)): this;
123
+ /** Restore the value passed to `signal(initial)`. */
124
+ reset(): this;
114
125
  subscribe(listener: Listener<T>): Unsubscribe;
115
126
  subscribeEffect(effect: Effect): void;
116
127
  unsubscribeEffect(effect: Effect): void;
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
1
  var ve = Object.defineProperty;
2
2
  var ke = (e, s, t) => s in e ? ve(e, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[s] = t;
3
3
  var c = (e, s, t) => ke(e, typeof s != "symbol" ? s + "" : s, t);
4
- import { bg as Ce, z as we, aT as _, aU as y, bp as Ee, aY as H, aX as P, a_ as W, bq as Ne, b5 as F, b1 as w, br as ft, bs as Yt, bh as qt, bn as Zt, b8 as xe, bt as Te } from "./client-BISJTJUX.js";
5
- import { c9 as sa, ce as ra, ci as ia, cB as na, cf as aa, cN as oa, au as la, cs as ca, cr as ua, ct as ha, cu as fa, cq as da, bZ as ma, c1 as pa, ap as ga, c4 as _a, cj as ya, aw as ba, cd as Sa, bK as va, at as ka, C as Ca, bS as wa, cF as Ea, a6 as Na, bI as xa, bV as Ta, aE as $a, aD as Ba, cV as La, cE as Pa, E as Ra, c8 as Aa, bx as Ma, N as Fa, bv as Ia, aL as Da, a0 as Oa, Z as ja, _ as Ha, U as Wa, aF as Va, cv as za, cw as Ga, F as Xa, cD as Ua, cg as Ka, ab as Ya, cQ as qa, cz as Za, I as Qa, a9 as Ja, bH as to, cC as eo, cT as so, bE as ro, bD as io, av as no, cy as ao, M as oo, bR as lo, cM as co, c7 as uo, T as ho, bG as fo, O as mo, h as po, bC as go, bX as _o, c0 as yo, b$ as bo, cP as So, bz as vo, bF as ko, cL as Co, w as wo, P as Eo, aq as No, c6 as xo, cc as To, bO as $o, R as Bo, cJ as Lo, cx as Po, x as Ro, ax as Ao, a3 as Mo, a4 as Fo, cU as Io, cm as Do, y as Oo, bQ as jo, c2 as Ho, bM as Wo, bL as Vo, as as zo, bY as Go, cK as Xo, b_ as Uo, bW as Ko, cO as Yo, a5 as qo, S as Zo, ca as Qo, bN as Jo, cG as tl, cH as el, cb as sl, ck as rl, bP as il, cS as nl, ao as al, c5 as ol, cA as ll, a8 as cl, co as ul, ch as hl, aa as fl, cn as dl, ar as ml, cl as pl, bJ as gl, cI as _l, bT as yl, cR as bl, a2 as Sl, a7 as vl, cp as kl, bU as Cl, bA as wl, c3 as El, l as Nl, k as xl, c as Tl, aN as $l, b as Bl, a as Ll, aI as Pl, ag as Rl, Y as Al, Q as Ml, bw as Fl, an as Il, aO as Dl, ac as Ol, W as jl, g as Hl, V as Wl, X as Vl, am as zl, K as Gl, L as Xl, i as Ul, cW as Kl, aH as Yl, aj as ql, af as Zl, ai as Ql, ae as Jl, $ as tc, aK as ec, J as sc, bu as rc, o as ic, ah as nc, ad as ac, H as oc, aM as lc, ak as cc, r as uc, s as hc, cX as fc, G as dc, A as mc, D as pc, B as gc, aS as _c, aR as yc, aP as bc, aQ as Sc, a$ as vc, a1 as kc, b0 as Cc, bo as wc, al as Ec, f as Nc, aG as xc, aB as Tc, q as $c, az as Bc, e as Lc, aA as Pc, t as Rc, j as Ac, aC as Mc, d as Fc, ay as Ic, bB as Dc, v as Oc, u as jc, n as Hc, p as Wc, m as Vc, by as zc, aJ as Gc } from "./client-BISJTJUX.js";
6
- import { L as Uc, c as Kc, b as Yc, a as qc, e as Zc, l as Qc, p as Jc, w as tu } from "./page-D8FyCPcH.js";
7
- import { C as su, a as ru, H as iu, L as nu, b as au, S as ou, Z as lu } from "./index-DBeuxHdZ.js";
8
- import { C as uu, S as hu } from "./index-5LiratLS.js";
4
+ import { bg as Ce, z as we, aT as _, aU as y, bp as Ee, aY as H, aX as P, a_ as W, bq as Ne, b5 as F, b1 as w, br as ft, bs as Yt, bh as qt, bn as Zt, b8 as xe, bt as Te } from "./client-8KCOzRhg.js";
5
+ import { c9 as sa, ce as ra, ci as ia, cB as na, cf as aa, cN as oa, au as la, cs as ca, cr as ua, ct as ha, cu as fa, cq as da, bZ as ma, c1 as pa, ap as ga, c4 as _a, cj as ya, aw as ba, cd as Sa, bK as va, at as ka, C as Ca, bS as wa, cF as Ea, a6 as Na, bI as xa, bV as Ta, aE as $a, aD as Ba, cV as La, cE as Pa, E as Ra, c8 as Aa, bx as Ma, N as Fa, bv as Ia, aL as Da, a0 as Oa, Z as ja, _ as Ha, U as Wa, aF as Va, cv as za, cw as Ga, F as Xa, cD as Ua, cg as Ka, ab as Ya, cQ as qa, cz as Za, I as Qa, a9 as Ja, bH as to, cC as eo, cT as so, bE as ro, bD as io, av as no, cy as ao, M as oo, bR as lo, cM as co, c7 as uo, T as ho, bG as fo, O as mo, h as po, bC as go, bX as _o, c0 as yo, b$ as bo, cP as So, bz as vo, bF as ko, cL as Co, w as wo, P as Eo, aq as No, c6 as xo, cc as To, bO as $o, R as Bo, cJ as Lo, cx as Po, x as Ro, ax as Ao, a3 as Mo, a4 as Fo, cU as Io, cm as Do, y as Oo, bQ as jo, c2 as Ho, bM as Wo, bL as Vo, as as zo, bY as Go, cK as Xo, b_ as Uo, bW as Ko, cO as Yo, a5 as qo, S as Zo, ca as Qo, bN as Jo, cG as tl, cH as el, cb as sl, ck as rl, bP as il, cS as nl, ao as al, c5 as ol, cA as ll, a8 as cl, co as ul, ch as hl, aa as fl, cn as dl, ar as ml, cl as pl, bJ as gl, cI as _l, bT as yl, cR as bl, a2 as Sl, a7 as vl, cp as kl, bU as Cl, bA as wl, c3 as El, l as Nl, k as xl, c as Tl, aN as $l, b as Bl, a as Ll, aI as Pl, ag as Rl, Y as Al, Q as Ml, bw as Fl, an as Il, aO as Dl, ac as Ol, W as jl, g as Hl, V as Wl, X as Vl, am as zl, K as Gl, L as Xl, i as Ul, cW as Kl, aH as Yl, aj as ql, af as Zl, ai as Ql, ae as Jl, $ as tc, aK as ec, J as sc, bu as rc, o as ic, ah as nc, ad as ac, H as oc, aM as lc, ak as cc, r as uc, s as hc, cX as fc, G as dc, A as mc, D as pc, B as gc, aS as _c, aR as yc, aP as bc, aQ as Sc, a$ as vc, a1 as kc, b0 as Cc, bo as wc, al as Ec, f as Nc, aG as xc, aB as Tc, q as $c, az as Bc, e as Lc, aA as Pc, t as Rc, j as Ac, aC as Mc, d as Fc, ay as Ic, bB as Dc, v as Oc, u as jc, n as Hc, p as Wc, m as Vc, by as zc, aJ as Gc } from "./client-8KCOzRhg.js";
6
+ import { L as Uc, c as Kc, b as Yc, a as qc, e as Zc, l as Qc, p as Jc, w as tu } from "./page-FXW2hz2C.js";
7
+ import { C as su, a as ru, H as iu, L as nu, b as au, S as ou, Z as lu } from "./index-CFwY5hCL.js";
8
+ import { C as uu, S as hu } from "./index-C5TPsNMz.js";
9
9
  import u, { useRef as N, useState as R, useLayoutEffect as X, useEffect as U } from "react";
10
- import { A as du, B as mu, I as pu } from "./icons-BGZkIpm8.js";
11
- import { A as _u, I as yu, L as bu, P as Su, a as vu, S as ku } from "./index-B5hJpNl2.js";
12
- import { B as wu } from "./index-CZs58ByQ.js";
13
- import { A as Nu, B as xu, C as Tu, c as $u, d as Bu, G as Lu, b as Pu, L as Ru, P as Au, T as Mu, a as Fu } from "./index-C2EZ1rgJ.js";
14
- import { L as Du, N as Ou, O as ju, l as Hu, p as Wu, u as Vu } from "./metadata-SJcQu-yM.js";
10
+ import { A as du, B as mu, I as pu } from "./icons-7Xl0GDMW.js";
11
+ import { A as _u, I as yu, L as bu, P as Su, a as vu, S as ku } from "./index-CVy8N94v.js";
12
+ import { B as wu } from "./index-CU0_oAGn.js";
13
+ import { A as Nu, B as xu, C as Tu, c as $u, d as Bu, G as Lu, b as Pu, L as Ru, P as Au, T as Mu, a as Fu } from "./index-Bwb4FNoc.js";
14
+ import { L as Du, N as Ou, O as ju, l as Hu, p as Wu, u as Vu } from "./metadata-BEmm6pe-.js";
15
15
  function Qt() {
16
16
  const e = globalThis.window;
17
17
  return typeof e > "u" || e == null ? void 0 : e;
@@ -1,5 +1,5 @@
1
- import { B as e } from "./index-CZs58ByQ.js";
2
- import { ap as r, at as t, ab as m, aq as i, as as l, ao as n, aa as x, ar as u, ag as h, an as p, ac as b, am as c, aj as d, af as f, ai as g, ae as T, ah as q, ad as k, ak as B, al as C } from "./client-BISJTJUX.js";
1
+ import { B as e } from "./index-CU0_oAGn.js";
2
+ import { ap as r, at as t, ab as m, aq as i, as as l, ao as n, aa as x, ar as u, ag as h, an as p, ac as b, am as c, aj as d, af as f, ai as g, ae as T, ah as q, ad as k, ak as B, al as C } from "./client-8KCOzRhg.js";
3
3
  export {
4
4
  e as Button,
5
5
  r as Checkbox,
package/dist/layout.js CHANGED
@@ -1,6 +1,6 @@
1
- import { C as r, a as s, H as e, L as l, b as t, S, Z as n } from "./index-DBeuxHdZ.js";
2
- import { C as c, S as f } from "./index-5LiratLS.js";
3
- import { a6 as m, a3 as d, a4 as p, a5 as u, a7 as b } from "./client-BISJTJUX.js";
1
+ import { C as r, a as s, H as e, L as l, b as t, S, Z as n } from "./index-CFwY5hCL.js";
2
+ import { C as c, S as f } from "./index-C5TPsNMz.js";
3
+ import { a6 as m, a3 as d, a4 as p, a5 as u, a7 as b } from "./client-8KCOzRhg.js";
4
4
  export {
5
5
  r as Center,
6
6
  c as Column,
@@ -1,5 +1,5 @@
1
1
  import { jsx as c } from "react/jsx-runtime";
2
- import { b6 as v, b5 as x, b7 as E, b8 as k, b9 as R, ba as D, bb as O, bc as g, bd as P, be as $, bf as z, aD as A, aE as K } from "./client-BISJTJUX.js";
2
+ import { b6 as v, b5 as x, b7 as E, b8 as k, b9 as R, ba as D, bb as O, bc as g, bd as P, be as $, bf as z, aD as A, aE as K } from "./client-8KCOzRhg.js";
3
3
  import { useState as M, useMemo as N, lazy as S, Suspense as B } from "react";
4
4
  function b(e) {
5
5
  const t = (typeof e == "string" ? e.trim() : "").split(/[?#]/, 1)[0];
@@ -1,5 +1,5 @@
1
- import { aE as s, aD as u, ax as o, aB as t, az as r, aA as l, aC as L, ay as R } from "./client-BISJTJUX.js";
2
- import { L as i, N as p, O as m, l as n, p as x, u as y } from "./metadata-SJcQu-yM.js";
1
+ import { aE as s, aD as u, ax as o, aB as t, az as r, aA as l, aC as L, ay as R } from "./client-8KCOzRhg.js";
2
+ import { L as i, N as p, O as m, l as n, p as x, u as y } from "./metadata-BEmm6pe-.js";
3
3
  export {
4
4
  s as DefaultErrorPage,
5
5
  u as DefaultLoader,
@@ -1,7 +1,7 @@
1
1
  var O = Object.defineProperty;
2
2
  var L = (e, t, n) => t in e ? O(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var w = (e, t, n) => L(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { S as C, c as $, i as U, H as D, b1 as I, U as k, b2 as P, b3 as T, b4 as B } from "./client-BISJTJUX.js";
4
+ import { S as C, c as $, i as U, H as D, b1 as I, U as k, b2 as P, b3 as T, b4 as B } from "./client-8KCOzRhg.js";
5
5
  import m, { useSyncExternalStore as V } from "react";
6
6
  function j() {
7
7
  return typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `lst_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
package/dist/server.js CHANGED
@@ -1815,8 +1815,9 @@ class Ft {
1815
1815
  constructor(o) {
1816
1816
  l(this, "listeners", /* @__PURE__ */ new Set());
1817
1817
  l(this, "effects", /* @__PURE__ */ new Set());
1818
+ l(this, "_initial");
1818
1819
  l(this, "_notifyDepth", 0);
1819
- this._value = o;
1820
+ this._value = o, this._initial = o;
1820
1821
  }
1821
1822
  get value() {
1822
1823
  const o = Tr();
@@ -1825,6 +1826,23 @@ class Ft {
1825
1826
  set value(o) {
1826
1827
  this._value !== o && (this._value = o, this.notify());
1827
1828
  }
1829
+ /** Replace the value. Same notify path as `.value = next`. */
1830
+ set(o) {
1831
+ return this.value = o, this;
1832
+ }
1833
+ /**
1834
+ * Write a value, or an updater `(prev) => next`.
1835
+ * Function-valued signals should use `.set()` / `.value =` so the function is stored, not called.
1836
+ * Not named `update`: `listSignal.update(id, patch)` is the item patch.
1837
+ */
1838
+ change(o) {
1839
+ const t = typeof o == "function" ? o(this._value) : o;
1840
+ return this.value = t, this;
1841
+ }
1842
+ /** Restore the value passed to `signal(initial)`. */
1843
+ reset() {
1844
+ return this.value = this._initial, this;
1845
+ }
1828
1846
  subscribe(o) {
1829
1847
  return this.listeners.add(o), () => this.listeners.delete(o);
1830
1848
  }
package/dist/structure.js CHANGED
@@ -1,5 +1,5 @@
1
- import { au as r, aw as e, av as o } from "./client-BISJTJUX.js";
2
- import { A as C, B as d, C as i, c as l, d as n, G as T, b as f, L as m, P as p, T as x, a as B } from "./index-C2EZ1rgJ.js";
1
+ import { au as r, aw as e, av as o } from "./client-8KCOzRhg.js";
2
+ import { A as C, B as d, C as i, c as l, d as n, G as T, b as f, L as m, P as p, T as x, a as B } from "./index-Bwb4FNoc.js";
3
3
  export {
4
4
  C as AssetCard,
5
5
  d as Banner,
package/dist/theme.js CHANGED
@@ -1,4 +1,4 @@
1
- import { aL as s, aF as m, aN as h, aI as T, aO as o, aH as t, aK as r, aM as i, aS as l, aR as n, aP as F, aQ as b, aG as p, aJ as u } from "./client-BISJTJUX.js";
1
+ import { aL as s, aF as m, aN as h, aI as T, aO as o, aH as t, aK as r, aM as i, aS as l, aR as n, aP as F, aQ as b, aG as p, aJ as u } from "./client-8KCOzRhg.js";
2
2
  export {
3
3
  s as FIBO_THEMES,
4
4
  m as FiboThemeProvider,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fiboui",
3
- "version": "2.8.2",
3
+ "version": "2.8.3",
4
4
  "description": "Flutter/SwiftUI-inspired React UI — fluent builders, signals, and themes. https://fiboui.vercel.app",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",