izen-react-starter 2.6.7 → 2.6.9

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
@@ -4,7 +4,7 @@ A modern React component library built with Vite, TypeScript, and best practices
4
4
 
5
5
  ## Changelog
6
6
 
7
- - 2026-01-12: Added `DashboardLayout` component with integrated `AppSidebar`, header, and overlay support. Sidebar now supports `collapsible: 'icon'` for desktop toggle and `'offcanvas'` for mobile sheet behavior. Updated `ApiService` interface to include `setTokenGetter` method for token management.
7
+ - 2026-01-12: Added `publicResources` prop to `RBACConfig` for defining resources accessible without authentication. The `useAccessControl` hook now checks `publicResources` first, allowing guest access to specified resources. Added `DashboardLayout` component with integrated `AppSidebar`, header, and overlay support. Sidebar now supports `collapsible: 'icon'` for desktop toggle and `'offcanvas'` for mobile sheet behavior. Updated `ApiService` interface to include `setTokenGetter` method for token management.
8
8
  - 2026-01-02: `BrowserRouter` removed from inside `AppProvider`. Consumers must wrap `AppProvider` (and any `react-router-dom` usage) in their own router at the app root.
9
9
 
10
10
  ## Features
@@ -887,6 +887,7 @@ import {
887
887
  const rbacConfig: RBACConfig = {
888
888
  roles: ['admin', 'editor', 'viewer'],
889
889
  resources: ['posts', 'comments', 'users'],
890
+ publicResources: ['auth', 'public'], // Resources accessible without authentication
890
891
  rules: {
891
892
  admin: {
892
893
  [CommonActions.Manage]: { can: 'all' },
@@ -904,6 +905,10 @@ const rbacConfig: RBACConfig = {
904
905
  viewer: {
905
906
  [CommonActions.Read]: { can: 'all' },
906
907
  },
908
+ guest: {
909
+ [CommonActions.Create]: { can: ['auth'] }, // Guest can create auth (register/login)
910
+ [CommonActions.Read]: { can: ['public'] }, // Guest can read public resources
911
+ },
907
912
  },
908
913
  };
909
914
 
@@ -934,6 +939,18 @@ function AdminPanel() {
934
939
  );
935
940
  }
936
941
 
942
+ // Public resources are automatically accessible without authentication
943
+ function PublicForm() {
944
+ const { isAllowed } = useAccessControl();
945
+
946
+ // This returns true even if user is not authenticated, because 'auth' is in publicResources
947
+ if (isAllowed('create', 'auth')) {
948
+ return <RegistrationForm />;
949
+ }
950
+
951
+ return null;
952
+ }
953
+
937
954
  // Using the wrapper component
938
955
  function Dashboard() {
939
956
  return (
@@ -1,5 +1,5 @@
1
- import { c as s, T as c, P as u, a as i, b as m, C as P, Q as d } from "./AP7HFJJL-BxWZIJcI.js";
2
- import { g as h, c as v, a as e } from "./index-CVkpUFYd.js";
1
+ import { c as s, T as c, P as u, a as i, b as m, C as P, Q as d } from "./AP7HFJJL-CtEeDAyi.js";
2
+ import { g as h, c as v, a as e } from "./index-Cm9n9HTN.js";
3
3
  var C = (r) => {
4
4
  const [t, o] = s({
5
5
  prefix: "TanstackQueryDevtools"
@@ -1,7 +1,7 @@
1
1
  var xs = Object.defineProperty;
2
2
  var $s = (e, t, n) => t in e ? xs(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var Re = (e, t, n) => $s(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { b as $e, d as B, o as ft, e as H, c as P, a as m, P as No, m as ve, S as K, t as _, i as k, f as U, h as F, j as Cs, k as ur, u as Ce, l as V, s as Qn, n as Yn, p as gt, q as T, r as Ss, v as Ut, w as _t, x as qe, y as ks, z as Rt, A as Bt, B as Es, C as Ds, D as En, F as As, E as Ht, $ as Ho, G as Ms, H as Ts, I as W, J as Vr, K as Fs, L as Is, M as cr, N as Os, O as Ls, Q as Hn, R as Ps, T as qs, U as ie, V as _s, W as Rs } from "./index-CVkpUFYd.js";
4
+ import { b as $e, d as B, o as ft, e as H, c as P, a as m, P as No, m as ve, S as K, t as _, i as k, f as U, h as F, j as Cs, k as ur, u as Ce, l as V, s as Qn, n as Yn, p as gt, q as T, r as Ss, v as Ut, w as _t, x as qe, y as ks, z as Rt, A as Bt, B as Es, C as Ds, D as En, F as As, E as Ht, $ as Ho, G as Ms, H as Ts, I as W, J as Vr, K as Fs, L as Is, M as cr, N as Os, O as Ls, Q as Hn, R as Ps, T as qs, U as ie, V as _s, W as Rs } from "./index-Cm9n9HTN.js";
5
5
  var zs = (e) => e != null, Ks = (e) => e.filter(zs);
6
6
  function Bs(e) {
7
7
  return (...t) => {
@@ -1,5 +1,5 @@
1
- import { c, T as l, P as m, a as u, D as v, Q as i } from "./AP7HFJJL-BxWZIJcI.js";
2
- import { g as d, c as f, a as e } from "./index-CVkpUFYd.js";
1
+ import { c, T as l, P as m, a as u, D as v, Q as i } from "./AP7HFJJL-CtEeDAyi.js";
2
+ import { g as d, c as f, a as e } from "./index-Cm9n9HTN.js";
3
3
  var h = (t) => {
4
4
  const [r, o] = c({
5
5
  prefix: "TanstackQueryDevtools"
@@ -9165,7 +9165,7 @@ var Z3e = (e, t = !1) => {
9165
9165
  const t = O$(() => {
9166
9166
  const n = this, [r] = I(this, xc), [o] = I(this, Sc), [i] = I(this, Cc), [a] = I(this, Ec), [s] = I(this, $f), [l] = I(this, bc), [c] = I(this, Oc);
9167
9167
  let u;
9168
- return I(this, _c) ? u = I(this, _c) : (u = E$(() => import("./WDYDFRGG-CTeLzoPk.js")), fe(this, _c, u)), H$(I(this, If), I(this, wc)), S$(u, C$({
9168
+ return I(this, _c) ? u = I(this, _c) : (u = E$(() => import("./WDYDFRGG-CRWytfJY.js")), fe(this, _c, u)), H$(I(this, If), I(this, wc)), S$(u, C$({
9169
9169
  get queryFlavor() {
9170
9170
  return I(n, Mf);
9171
9171
  },
@@ -9272,7 +9272,7 @@ var Z3e = (e, t = !1) => {
9272
9272
  const t = O$(() => {
9273
9273
  const n = this, [r] = I(this, kc), [o] = I(this, Ac), [i] = I(this, Tc), [a] = I(this, Rc), [s] = I(this, Bf), [l] = I(this, Pc), [c] = I(this, Mc), [u] = I(this, Ic);
9274
9274
  let d;
9275
- return I(this, Dc) ? d = I(this, Dc) : (d = E$(() => import("./2SSKDMRQ-oNVffi1r.js")), fe(this, Dc, d)), H$(I(this, Vf), I(this, Nc)), S$(d, C$({
9275
+ return I(this, Dc) ? d = I(this, Dc) : (d = E$(() => import("./2SSKDMRQ-CsnlLi7M.js")), fe(this, Dc, d)), H$(I(this, Vf), I(this, Nc)), S$(d, C$({
9276
9276
  get queryFlavor() {
9277
9277
  return I(n, Lf);
9278
9278
  },
@@ -44660,7 +44660,8 @@ const Ed = {
44660
44660
  rules: t.rules,
44661
44661
  defaultResource: t.defaultResource,
44662
44662
  resources: t.resources,
44663
- roles: t.roles
44663
+ roles: t.roles,
44664
+ publicResources: t.publicResources
44664
44665
  };
44665
44666
  return /* @__PURE__ */ v(iU.Provider, { value: n, children: e });
44666
44667
  };
@@ -44671,18 +44672,18 @@ function Kke() {
44671
44672
  return e;
44672
44673
  }
44673
44674
  const Yp = () => {
44674
- const { user: e } = Yf(), { rules: t, resources: n, defaultResource: r } = Kke();
44675
- return { isAllowed: (a, s) => {
44676
- if (r && s === r)
44675
+ const { user: e } = Yf(), { rules: t, resources: n, defaultResource: r, publicResources: o } = Kke();
44676
+ return { isAllowed: (s, l) => {
44677
+ if (o && o.includes(l) || r && l === r)
44677
44678
  return !0;
44678
44679
  if (!e || !e.role)
44679
44680
  return !1;
44680
- const l = Array.isArray(e.role) ? e.role : [e.role];
44681
- return Gke(l, a, s, t, r);
44682
- }, getResourceByUrl: (a) => {
44683
- for (const s of n)
44684
- if (a.startsWith("/" + s))
44685
- return s;
44681
+ const c = Array.isArray(e.role) ? e.role : [e.role];
44682
+ return Gke(c, s, l, t, r);
44683
+ }, getResourceByUrl: (s) => {
44684
+ for (const l of n)
44685
+ if (s.startsWith("/" + l))
44686
+ return l;
44686
44687
  return r || "";
44687
44688
  } };
44688
44689
  }, z6e = ({
@@ -60004,19 +60005,20 @@ const hVe = ({
60004
60005
  ] }) }) }) }) });
60005
60006
  function mVe({
60006
60007
  children: e,
60007
- sidebarProps: t,
60008
- headerProps: n,
60009
- defaultOpen: r = !0,
60010
- className: o
60008
+ useCustomSidebar: t = !1,
60009
+ sidebarProps: n,
60010
+ headerProps: r,
60011
+ defaultOpen: o = !0,
60012
+ className: i
60011
60013
  }) {
60012
- const { showOverlay: i } = dJ();
60013
- return /* @__PURE__ */ T(DW, { defaultOpen: r, children: [
60014
- /* @__PURE__ */ v(P5e, { ...t }),
60014
+ const { showOverlay: a } = dJ();
60015
+ return /* @__PURE__ */ T(DW, { defaultOpen: o, children: [
60016
+ !t && /* @__PURE__ */ v(P5e, { ...n }),
60015
60017
  /* @__PURE__ */ T($W, { children: [
60016
- /* @__PURE__ */ v(E5e, { ...n }),
60017
- /* @__PURE__ */ T("div", { className: j("flex flex-1 flex-col gap-4 p-4 md:gap-6 md:p-6", o), children: [
60018
+ /* @__PURE__ */ v(E5e, { ...r }),
60019
+ /* @__PURE__ */ T("div", { className: j("flex flex-1 flex-col gap-4 p-4 md:gap-6 md:p-6", i), children: [
60018
60020
  e,
60019
- /* @__PURE__ */ v(C5e, { show: i })
60021
+ /* @__PURE__ */ v(C5e, { show: a })
60020
60022
  ] })
60021
60023
  ] })
60022
60024
  ] });
@@ -1,4 +1,4 @@
1
- import { aZ as t, bk as o, bn as r, bl as n, bm as i, fb as d, a4 as l, a5 as u, bo as c, bq as b, br as p, bA as g, bB as S, bv as C, bz as m, bx as T, bw as D, bt as M, bs as A, by as h, bu as v, fr as f, bp as I, ba as P, bC as F, b2 as w, bD as x, bF as B, bE as R, bG as G, bI as L, bO as k, bK as y, bL as H, bJ as N, bM as O, bN as U, X as E, bQ as V, Y as z, bV as W, bU as q, bS as j, bR as X, bT as Y, bW as Z, bX as _, bY as J, b_ as K, bZ as Q, f8 as $, b$ as aa, c2 as ea, c3 as sa, c4 as ta, c0 as oa, c1 as ra, c5 as na, c6 as ia, c8 as da, c7 as la, c9 as ua, ca, cd as ba, ce as pa, cb as ga, cf as Sa, cc as Ca, ch as ma, cg as Ta, aW as Da, ci as Ma, cm as Aa, ck as ha, cr as va, cl as fa, co as Ia, cs as Pa, cw as Fa, cn as wa, cp as xa, cq as Ba, ct as Ra, cu as Ga, cv as La, cj as ka, fq as ya, _ as Ha, fe as Na, fg as Oa, a9 as Ua, aa as Ea, fu as Va, fv as za, fs as Wa, cx as qa, cB as ja, cC as Xa, cG as Ya, cE as Za, cD as _a, cz as Ja, cy as Ka, cF as Qa, cA as $a, cH as ae, cL as ee, cM as se, cQ as te, cO as oe, cN as re, cJ as ne, cI as ie, cP as de, cK as le, cR as ue, cV as ce, cT as be, c_ as pe, cU as ge, cX as Se, c$ as Ce, d3 as me, cW as Te, cY as De, cZ as Me, d0 as Ae, d1 as he, d2 as ve, cS as fe, a3 as Ie, ah as Pe, d5 as Fe, d8 as we, d9 as xe, db as Be, d6 as Re, d7 as Ge, a2 as Le, da as ke, fj as ye, fA as He, fx as Ne, dc as Oe, de as Ue, dd as Ee, df as Ve, ab as ze, ac as We, ad as qe, ae as je, dg as Xe, a6 as Ye, dh as Ze, di as _e, dk as Je, dj as Ke, dl as Qe, ai as $e, dm as as, du as es, dq as ss, dA as ts, dr as os, dt as rs, dn as ns, dx as is, dv as ds, dw as ls, ds as us, dC as cs, dB as bs, dy as ps, dz as gs, dp as Ss, a1 as Cs, dD as ms, b4 as Ts, fp as Ds, fm as Ms, fn as As, fo as hs, dF as vs, dI as fs, dL as Is, dH as Ps, dK as Fs, dG as ws, dJ as xs, dM as Bs, fk as Rs, b6 as Gs, fy as Ls, f9 as ks, fh as ys, dN as Hs, dQ as Ns, dP as Os, dO as Us, ft as Es, dR as Vs, dT as zs, dS as Ws, dU as qs, b0 as js, dV as Xs, dW as Ys, bc as Zs, dZ as _s, dY as Js, dX as Ks, af as Qs, d_ as $s, d$ as at, e0 as et, e4 as st, a8 as tt, e1 as ot, a7 as rt, e6 as nt, e5 as it, e9 as dt, e8 as lt, e7 as ut, e3 as ct, e2 as bt, ea as pt, fi as gt, eb as St, ef as Ct, eg as mt, ek as Tt, ei as Dt, eh as Mt, ed as At, ec as ht, ej as vt, ee as ft, a0 as It, el as Pt, em as Ft, en as wt, eo as xt, ep as Bt, eq as Rt, er as Gt, es as Lt, et as kt, eu as yt, ev as Ht, ew as Nt, ex as Ot, ey as Ut, ez as Et, eA as Vt, eB as zt, eC as Wt, eD as qt, eE as jt, eF as Xt, eG as Yt, fl as Zt, eI as _t, eJ as Jt, eK as Kt, eM as Qt, fd as $t, fa as ao, fc as eo, fw as so, eN as to, eQ as oo, eO as ro, eP as no, eR as io, b8 as lo, fz as uo, ag as co, eU as bo, eY as po, eX as go, eW as So, eS as Co, eV as mo, bj as To, eT as Do, eL as Mo, eZ as Ao, e$ as ho, f0 as vo, f1 as fo, f3 as Io, f4 as Po, f2 as Fo, a$ as wo, Z as xo, bg as Bo, as as Ro, bH as Go, av as Lo, at as ko, au as yo, bP as Ho, am as No, al as Oo, an as Uo, aM as Eo, aL as Vo, ar as zo, ff as Wo, aq as qo, aH as jo, aC as Xo, ax as Yo, ap as Zo, ao as _o, aw as Jo, aF as Ko, aG as Qo, aJ as $o, aK as ar, dE as er, aN as sr, bi as tr, aB as or, bb as rr, f5 as nr, ay as ir, aD as dr, aE as lr, aI as ur, az as cr, aA as br, f7 as pr, e_ as gr, aY as Sr, bh as Cr, bd as mr, b3 as Tr, aP as Dr, aQ as Mr, aR as Ar, d4 as hr, aS as vr, aT as fr, ak as Ir, aj as Pr, b5 as Fr, b7 as wr, be as xr, b1 as Br, aO as Rr, bf as Gr, aV as Lr, eH as kr, b9 as yr, f6 as Hr, aU as Nr, aX as Or, a_ as Ur } from "./index-CVkpUFYd.js";
1
+ import { aZ as t, bk as o, bn as r, bl as n, bm as i, fb as d, a4 as l, a5 as u, bo as c, bq as b, br as p, bA as g, bB as S, bv as C, bz as m, bx as T, bw as D, bt as M, bs as A, by as h, bu as v, fr as f, bp as I, ba as P, bC as F, b2 as w, bD as x, bF as B, bE as R, bG as G, bI as L, bO as k, bK as y, bL as H, bJ as N, bM as O, bN as U, X as E, bQ as V, Y as z, bV as W, bU as q, bS as j, bR as X, bT as Y, bW as Z, bX as _, bY as J, b_ as K, bZ as Q, f8 as $, b$ as aa, c2 as ea, c3 as sa, c4 as ta, c0 as oa, c1 as ra, c5 as na, c6 as ia, c8 as da, c7 as la, c9 as ua, ca, cd as ba, ce as pa, cb as ga, cf as Sa, cc as Ca, ch as ma, cg as Ta, aW as Da, ci as Ma, cm as Aa, ck as ha, cr as va, cl as fa, co as Ia, cs as Pa, cw as Fa, cn as wa, cp as xa, cq as Ba, ct as Ra, cu as Ga, cv as La, cj as ka, fq as ya, _ as Ha, fe as Na, fg as Oa, a9 as Ua, aa as Ea, fu as Va, fv as za, fs as Wa, cx as qa, cB as ja, cC as Xa, cG as Ya, cE as Za, cD as _a, cz as Ja, cy as Ka, cF as Qa, cA as $a, cH as ae, cL as ee, cM as se, cQ as te, cO as oe, cN as re, cJ as ne, cI as ie, cP as de, cK as le, cR as ue, cV as ce, cT as be, c_ as pe, cU as ge, cX as Se, c$ as Ce, d3 as me, cW as Te, cY as De, cZ as Me, d0 as Ae, d1 as he, d2 as ve, cS as fe, a3 as Ie, ah as Pe, d5 as Fe, d8 as we, d9 as xe, db as Be, d6 as Re, d7 as Ge, a2 as Le, da as ke, fj as ye, fA as He, fx as Ne, dc as Oe, de as Ue, dd as Ee, df as Ve, ab as ze, ac as We, ad as qe, ae as je, dg as Xe, a6 as Ye, dh as Ze, di as _e, dk as Je, dj as Ke, dl as Qe, ai as $e, dm as as, du as es, dq as ss, dA as ts, dr as os, dt as rs, dn as ns, dx as is, dv as ds, dw as ls, ds as us, dC as cs, dB as bs, dy as ps, dz as gs, dp as Ss, a1 as Cs, dD as ms, b4 as Ts, fp as Ds, fm as Ms, fn as As, fo as hs, dF as vs, dI as fs, dL as Is, dH as Ps, dK as Fs, dG as ws, dJ as xs, dM as Bs, fk as Rs, b6 as Gs, fy as Ls, f9 as ks, fh as ys, dN as Hs, dQ as Ns, dP as Os, dO as Us, ft as Es, dR as Vs, dT as zs, dS as Ws, dU as qs, b0 as js, dV as Xs, dW as Ys, bc as Zs, dZ as _s, dY as Js, dX as Ks, af as Qs, d_ as $s, d$ as at, e0 as et, e4 as st, a8 as tt, e1 as ot, a7 as rt, e6 as nt, e5 as it, e9 as dt, e8 as lt, e7 as ut, e3 as ct, e2 as bt, ea as pt, fi as gt, eb as St, ef as Ct, eg as mt, ek as Tt, ei as Dt, eh as Mt, ed as At, ec as ht, ej as vt, ee as ft, a0 as It, el as Pt, em as Ft, en as wt, eo as xt, ep as Bt, eq as Rt, er as Gt, es as Lt, et as kt, eu as yt, ev as Ht, ew as Nt, ex as Ot, ey as Ut, ez as Et, eA as Vt, eB as zt, eC as Wt, eD as qt, eE as jt, eF as Xt, eG as Yt, fl as Zt, eI as _t, eJ as Jt, eK as Kt, eM as Qt, fd as $t, fa as ao, fc as eo, fw as so, eN as to, eQ as oo, eO as ro, eP as no, eR as io, b8 as lo, fz as uo, ag as co, eU as bo, eY as po, eX as go, eW as So, eS as Co, eV as mo, bj as To, eT as Do, eL as Mo, eZ as Ao, e$ as ho, f0 as vo, f1 as fo, f3 as Io, f4 as Po, f2 as Fo, a$ as wo, Z as xo, bg as Bo, as as Ro, bH as Go, av as Lo, at as ko, au as yo, bP as Ho, am as No, al as Oo, an as Uo, aM as Eo, aL as Vo, ar as zo, ff as Wo, aq as qo, aH as jo, aC as Xo, ax as Yo, ap as Zo, ao as _o, aw as Jo, aF as Ko, aG as Qo, aJ as $o, aK as ar, dE as er, aN as sr, bi as tr, aB as or, bb as rr, f5 as nr, ay as ir, aD as dr, aE as lr, aI as ur, az as cr, aA as br, f7 as pr, e_ as gr, aY as Sr, bh as Cr, bd as mr, b3 as Tr, aP as Dr, aQ as Mr, aR as Ar, d4 as hr, aS as vr, aT as fr, ak as Ir, aj as Pr, b5 as Fr, b7 as wr, be as xr, b1 as Br, aO as Rr, bf as Gr, aV as Lr, eH as kr, b9 as yr, f6 as Hr, aU as Nr, aX as Or, a_ as Ur } from "./index-Cm9n9HTN.js";
2
2
  import "react/jsx-runtime";
3
3
  export {
4
4
  t as AccessControlWrapper,