@plumile/backoffice-react 0.1.101 → 0.1.103

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.
Files changed (94) hide show
  1. package/lib/esm/{BackofficeAcceptInvitationPage-CEtApVwL.js → BackofficeAcceptInvitationPage-BfRsORii.js} +3 -3
  2. package/lib/esm/{BackofficeAcceptInvitationPage-CEtApVwL.js.map → BackofficeAcceptInvitationPage-BfRsORii.js.map} +1 -1
  3. package/lib/esm/BackofficeDashboardPage-C0zP0QO7.js +344 -0
  4. package/lib/esm/BackofficeDashboardPage-C0zP0QO7.js.map +1 -0
  5. package/lib/esm/{BackofficeEntityActionFormDialog-BgRTJ_JS.js → BackofficeEntityActionFormDialog-BgMuhyU8.js} +2 -2
  6. package/lib/esm/{BackofficeEntityActionFormDialog-BgRTJ_JS.js.map → BackofficeEntityActionFormDialog-BgMuhyU8.js.map} +1 -1
  7. package/lib/esm/{BackofficeEntityDetailLayoutContext-C_tBqkVq.js → BackofficeEntityDetailLayoutContext-DeuH5PCW.js} +1 -1
  8. package/lib/esm/{BackofficeEntityDetailLayoutContext-C_tBqkVq.js.map → BackofficeEntityDetailLayoutContext-DeuH5PCW.js.map} +1 -1
  9. package/lib/esm/{BackofficeEntityDetailLayoutPage-DXjRqvcZ.js → BackofficeEntityDetailLayoutPage-Duc_DcIV.js} +2 -2
  10. package/lib/esm/{BackofficeEntityDetailLayoutPage-DXjRqvcZ.js.map → BackofficeEntityDetailLayoutPage-Duc_DcIV.js.map} +1 -1
  11. package/lib/esm/{BackofficeEntityDetailPage-CwzKp_Yw.js → BackofficeEntityDetailPage-ChxBrqz8.js} +7 -6
  12. package/lib/esm/{BackofficeEntityDetailPage-CwzKp_Yw.js.map → BackofficeEntityDetailPage-ChxBrqz8.js.map} +1 -1
  13. package/lib/esm/{BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js → BackofficeEntityDetailUnknownPageRedirect-xupMeril.js} +2 -2
  14. package/lib/esm/{BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js.map → BackofficeEntityDetailUnknownPageRedirect-xupMeril.js.map} +1 -1
  15. package/lib/esm/{BackofficeEntityListPage-DVT3rrfa.js → BackofficeEntityListPage-BACvfX6c.js} +5 -4
  16. package/lib/esm/{BackofficeEntityListPage-DVT3rrfa.js.map → BackofficeEntityListPage-BACvfX6c.js.map} +1 -1
  17. package/lib/esm/BackofficeHubPage-BsUXulN0.js +136 -0
  18. package/lib/esm/BackofficeHubPage-BsUXulN0.js.map +1 -0
  19. package/lib/esm/BackofficeLayoutPage-r6dXo9SI.js +699 -0
  20. package/lib/esm/BackofficeLayoutPage-r6dXo9SI.js.map +1 -0
  21. package/lib/esm/{BackofficeLoginPage-Cc3kcOQV.js → BackofficeLoginPage-BMPhO1cr.js} +4 -4
  22. package/lib/esm/{BackofficeLoginPage-Cc3kcOQV.js.map → BackofficeLoginPage-BMPhO1cr.js.map} +1 -1
  23. package/lib/esm/{BackofficePasswordResetCompletePage-CF_0t3Nq.js → BackofficePasswordResetCompletePage-OApMUiOi.js} +3 -3
  24. package/lib/esm/{BackofficePasswordResetCompletePage-CF_0t3Nq.js.map → BackofficePasswordResetCompletePage-OApMUiOi.js.map} +1 -1
  25. package/lib/esm/{BackofficePasswordResetRequestPage-BJOrQXcy.js → BackofficePasswordResetRequestPage-DPDImb37.js} +2 -2
  26. package/lib/esm/{BackofficePasswordResetRequestPage-BJOrQXcy.js.map → BackofficePasswordResetRequestPage-DPDImb37.js.map} +1 -1
  27. package/lib/esm/BackofficePermissionsContext-CmWwudBU.js +11 -0
  28. package/lib/esm/BackofficePermissionsContext-CmWwudBU.js.map +1 -0
  29. package/lib/esm/BackofficeRightPageLayout-BZb7LhT-.js +53 -0
  30. package/lib/esm/BackofficeRightPageLayout-BZb7LhT-.js.map +1 -0
  31. package/lib/esm/{BackofficeTopbarPortalContext-iD7dm4_h.js → BackofficeTopbarPortalContext-CphoSrZD.js} +1 -1
  32. package/lib/esm/{BackofficeTopbarPortalContext-iD7dm4_h.js.map → BackofficeTopbarPortalContext-CphoSrZD.js.map} +1 -1
  33. package/lib/esm/{BackofficeVerifyEmailPage-C81LlsNM.js → BackofficeVerifyEmailPage-DHuSOxDf.js} +3 -3
  34. package/lib/esm/{BackofficeVerifyEmailPage-C81LlsNM.js.map → BackofficeVerifyEmailPage-DHuSOxDf.js.map} +1 -1
  35. package/lib/esm/{LazyBackofficeEntityActionFormDialog-L8xwaGqH.js → LazyBackofficeEntityActionFormDialog-uyYFFJGM.js} +93 -45
  36. package/lib/esm/LazyBackofficeEntityActionFormDialog-uyYFFJGM.js.map +1 -0
  37. package/lib/esm/backoffice-react.js +289 -254
  38. package/lib/esm/backoffice-react.js.map +1 -1
  39. package/lib/esm/{backofficeAuthPaths-BiJvoI5Q.js → backofficeAuthPaths-2KMmkBLv.js} +1 -1
  40. package/lib/esm/{backofficeAuthPaths-BiJvoI5Q.js.map → backofficeAuthPaths-2KMmkBLv.js.map} +1 -1
  41. package/lib/esm/{buildBreadcrumbs-CqF9Nh6x.js → buildBreadcrumbs-C9cyiXb7.js} +8 -4
  42. package/lib/esm/buildBreadcrumbs-C9cyiXb7.js.map +1 -0
  43. package/lib/esm/buildDataTableColumns-DGPjPK4N.js +66 -0
  44. package/lib/esm/buildDataTableColumns-DGPjPK4N.js.map +1 -0
  45. package/lib/esm/sidebarUtils-BZETlHea.js +74 -0
  46. package/lib/esm/sidebarUtils-BZETlHea.js.map +1 -0
  47. package/lib/esm/style.css +1 -1
  48. package/lib/esm/{toastViewAction-BGTS7vqm.js → toastViewAction-DJkv_4p9.js} +1 -1
  49. package/lib/esm/{toastViewAction-BGTS7vqm.js.map → toastViewAction-DJkv_4p9.js.map} +1 -1
  50. package/lib/esm/{useBackofficeAuth-ers1FUGe.js → useBackofficeAuth-DVAXNAjP.js} +1 -1
  51. package/lib/esm/{useBackofficeAuth-ers1FUGe.js.map → useBackofficeAuth-DVAXNAjP.js.map} +1 -1
  52. package/lib/esm/{useBackofficeLazyValue-Bh_13h8A.js → useBackofficeLazyValue-CoIAK-5N.js} +1 -1
  53. package/lib/esm/{useBackofficeLazyValue-Bh_13h8A.js.map → useBackofficeLazyValue-CoIAK-5N.js.map} +1 -1
  54. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts.map +1 -1
  55. package/lib/types/components/backoffice/layout/BackofficePermissionsContext.d.ts +8 -0
  56. package/lib/types/components/backoffice/layout/BackofficePermissionsContext.d.ts.map +1 -0
  57. package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts +4 -0
  58. package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts.map +1 -1
  59. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
  60. package/lib/types/components/backoffice/layout/sidebarUtils.d.ts +11 -3
  61. package/lib/types/components/backoffice/layout/sidebarUtils.d.ts.map +1 -1
  62. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  63. package/lib/types/hooks/useBackofficeInfiniteScrollSentinel.d.ts +14 -0
  64. package/lib/types/hooks/useBackofficeInfiniteScrollSentinel.d.ts.map +1 -0
  65. package/lib/types/hooks/useBackofficeSidebarPins.d.ts +1 -0
  66. package/lib/types/hooks/useBackofficeSidebarPins.d.ts.map +1 -1
  67. package/lib/types/hooks/useSidebarGroupCollapse.d.ts +2 -0
  68. package/lib/types/hooks/useSidebarGroupCollapse.d.ts.map +1 -1
  69. package/lib/types/i18n/resources.d.ts +28 -2
  70. package/lib/types/i18n/resources.d.ts.map +1 -1
  71. package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
  72. package/lib/types/pages/BackofficeDashboardPage.helpers.d.ts.map +1 -1
  73. package/lib/types/pages/BackofficeHubPage.d.ts +8 -0
  74. package/lib/types/pages/BackofficeHubPage.d.ts.map +1 -0
  75. package/lib/types/pages/BackofficeLayoutPage.d.ts.map +1 -1
  76. package/lib/types/pages/backofficeDashboardPage.css.d.ts +12 -0
  77. package/lib/types/pages/backofficeDashboardPage.css.d.ts.map +1 -1
  78. package/lib/types/pages/backofficeHubPage.css.d.ts +15 -0
  79. package/lib/types/pages/backofficeHubPage.css.d.ts.map +1 -0
  80. package/lib/types/provider/types.d.ts +27 -5
  81. package/lib/types/provider/types.d.ts.map +1 -1
  82. package/lib/types/router/createBackofficeRoutes.d.ts +6 -1
  83. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  84. package/package.json +5 -5
  85. package/lib/esm/BackofficeDashboardPage-r8vK_JA6.js +0 -196
  86. package/lib/esm/BackofficeDashboardPage-r8vK_JA6.js.map +0 -1
  87. package/lib/esm/BackofficeLayoutPage-DQ0sVv24.js +0 -609
  88. package/lib/esm/BackofficeLayoutPage-DQ0sVv24.js.map +0 -1
  89. package/lib/esm/BackofficeRightPageLayout-hexJmpam.js +0 -113
  90. package/lib/esm/BackofficeRightPageLayout-hexJmpam.js.map +0 -1
  91. package/lib/esm/LazyBackofficeEntityActionFormDialog-L8xwaGqH.js.map +0 -1
  92. package/lib/esm/buildBreadcrumbs-CqF9Nh6x.js.map +0 -1
  93. package/lib/esm/sidebarUtils-DVkLmFbS.js +0 -52
  94. package/lib/esm/sidebarUtils-DVkLmFbS.js.map +0 -1
@@ -10,4 +10,4 @@ var e = (e) => {
10
10
  //#endregion
11
11
  export { r as n, n as t };
12
12
 
13
- //# sourceMappingURL=backofficeAuthPaths-BiJvoI5Q.js.map
13
+ //# sourceMappingURL=backofficeAuthPaths-2KMmkBLv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backofficeAuthPaths-BiJvoI5Q.js","names":[],"sources":["../../src/router/backofficeAuthPaths.ts"],"sourcesContent":["const normalizeAbsolutePath = (value: string): string => {\n if (value.trim() === '' || value === '/') {\n return '/';\n }\n let withLeadingSlash = value;\n if (!value.startsWith('/')) {\n withLeadingSlash = `/${value}`;\n }\n if (withLeadingSlash.endsWith('/')) {\n return withLeadingSlash.slice(0, -1);\n }\n return withLeadingSlash;\n};\n\nconst prefixBackofficePath = (basePath: string, value: string): string => {\n const normalizedPath = normalizeAbsolutePath(value);\n const normalizedBasePath = normalizeAbsolutePath(basePath);\n\n if (normalizedBasePath === '/') {\n return normalizedPath;\n }\n if (\n normalizedPath === normalizedBasePath ||\n normalizedPath.startsWith(`${normalizedBasePath}/`)\n ) {\n return normalizedPath;\n }\n if (normalizedPath === '/') {\n return normalizedBasePath;\n }\n return `${normalizedBasePath}${normalizedPath}`;\n};\n\nexport const getBackofficeLoginPath = (basePath: string): string => {\n return prefixBackofficePath(basePath, '/login');\n};\n\nexport const getBackofficePasswordResetPath = (basePath: string): string => {\n return prefixBackofficePath(basePath, '/login/reset');\n};\n"],"mappings":";AAAA,IAAM,KAAyB,MAA0B;CACvD,IAAI,EAAM,MAAM,KAAK,MAAM,MAAU,KACnC,OAAO;CAET,IAAI,IAAmB;CAOvB,OANK,EAAM,WAAW,IAAI,KACxB,IAAmB,IAAI,MAErB,EAAiB,SAAS,IAAI,GACzB,EAAiB,MAAM,GAAG,GAAG,GAE/B;GAGH,KAAwB,GAAkB,MAA0B;CACxE,IAAM,IAAiB,EAAsB,EAAM,EAC7C,IAAqB,EAAsB,EAAS;CAc1D,OAZI,MAAuB,OAIzB,MAAmB,KACnB,EAAe,WAAW,GAAG,EAAmB,GAAG,GAE5C,IAEL,MAAmB,MACd,IAEF,GAAG,IAAqB;GAGpB,KAA0B,MAC9B,EAAqB,GAAU,SAAS,EAGpC,KAAkC,MACtC,EAAqB,GAAU,eAAe"}
1
+ {"version":3,"file":"backofficeAuthPaths-2KMmkBLv.js","names":[],"sources":["../../src/router/backofficeAuthPaths.ts"],"sourcesContent":["const normalizeAbsolutePath = (value: string): string => {\n if (value.trim() === '' || value === '/') {\n return '/';\n }\n let withLeadingSlash = value;\n if (!value.startsWith('/')) {\n withLeadingSlash = `/${value}`;\n }\n if (withLeadingSlash.endsWith('/')) {\n return withLeadingSlash.slice(0, -1);\n }\n return withLeadingSlash;\n};\n\nconst prefixBackofficePath = (basePath: string, value: string): string => {\n const normalizedPath = normalizeAbsolutePath(value);\n const normalizedBasePath = normalizeAbsolutePath(basePath);\n\n if (normalizedBasePath === '/') {\n return normalizedPath;\n }\n if (\n normalizedPath === normalizedBasePath ||\n normalizedPath.startsWith(`${normalizedBasePath}/`)\n ) {\n return normalizedPath;\n }\n if (normalizedPath === '/') {\n return normalizedBasePath;\n }\n return `${normalizedBasePath}${normalizedPath}`;\n};\n\nexport const getBackofficeLoginPath = (basePath: string): string => {\n return prefixBackofficePath(basePath, '/login');\n};\n\nexport const getBackofficePasswordResetPath = (basePath: string): string => {\n return prefixBackofficePath(basePath, '/login/reset');\n};\n"],"mappings":";AAAA,IAAM,KAAyB,MAA0B;CACvD,IAAI,EAAM,MAAM,KAAK,MAAM,MAAU,KACnC,OAAO;CAET,IAAI,IAAmB;CAOvB,OANK,EAAM,WAAW,IAAI,KACxB,IAAmB,IAAI,MAErB,EAAiB,SAAS,IAAI,GACzB,EAAiB,MAAM,GAAG,GAAG,GAE/B;GAGH,KAAwB,GAAkB,MAA0B;CACxE,IAAM,IAAiB,EAAsB,EAAM,EAC7C,IAAqB,EAAsB,EAAS;CAc1D,OAZI,MAAuB,OAIzB,MAAmB,KACnB,EAAe,WAAW,GAAG,EAAmB,GAAG,GAE5C,IAEL,MAAmB,MACd,IAEF,GAAG,IAAqB;GAGpB,KAA0B,MAC9B,EAAqB,GAAU,SAAS,EAGpC,KAAkC,MACtC,EAAqB,GAAU,eAAe"}
@@ -10,11 +10,15 @@ var e = (e, t) => e(t), t = (t) => {
10
10
  id: "dashboard",
11
11
  label: e("dashboard.title"),
12
12
  isCurrent: !0
13
- }], r = (t, n) => [{
13
+ }], r = (e) => [{
14
+ id: `hub-${e.id}`,
15
+ label: e.title,
16
+ isCurrent: !0
17
+ }], i = (t, n) => [{
14
18
  id: `${t.id}-list`,
15
19
  label: e(t.label, n),
16
20
  isCurrent: !0
17
- }], i = (n) => {
21
+ }], a = (n) => {
18
22
  let r = e(n.config.label, n.tApp), i = t({
19
23
  layoutView: n.layoutView,
20
24
  detailHeader: n.config.header,
@@ -39,6 +43,6 @@ var e = (e, t) => e(t), t = (t) => {
39
43
  ];
40
44
  };
41
45
  //#endregion
42
- export { i as n, r, n as t };
46
+ export { r as i, a as n, i as r, n as t };
43
47
 
44
- //# sourceMappingURL=buildBreadcrumbs-CqF9Nh6x.js.map
48
+ //# sourceMappingURL=buildBreadcrumbs-C9cyiXb7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildBreadcrumbs-C9cyiXb7.js","names":[],"sources":["../../src/components/backoffice/layout/breadcrumb/buildBreadcrumbs.ts"],"sourcesContent":["import type { TFunction } from 'i18next';\n\nimport type {\n BackofficeResolvedDetailLayoutFacetConfig,\n BackofficeResolvedDetailPageFacetConfig,\n BackofficeResolvedListFacetConfig,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\n\nimport type { BackofficeTopbarBreadcrumbItem } from './types.js';\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const resolveEntityTitleFromDetailHeader = <\n LayoutView extends object,\n>(input: {\n layoutView: LayoutView;\n detailHeader: BackofficeResolvedDetailLayoutFacetConfig['header'];\n tApp: TFunction;\n}): string => {\n const titleValue = input.detailHeader.titleValue?.(\n input.layoutView,\n input.tApp,\n );\n if (typeof titleValue === 'string' && titleValue.trim() !== '') {\n return titleValue;\n }\n\n const title = resolveLabel(input.detailHeader.title, input.tApp);\n if (title.trim() !== '') {\n return title;\n }\n\n const maybeId = (input.layoutView as { id?: unknown }).id;\n if (typeof maybeId === 'string' && maybeId.trim() !== '') {\n return maybeId;\n }\n\n return '';\n};\n\nexport const buildDashboardBreadcrumb = (\n t: TFunction,\n): readonly BackofficeTopbarBreadcrumbItem[] => {\n return [\n {\n id: 'dashboard',\n label: t('dashboard.title'),\n isCurrent: true,\n },\n ];\n};\n\nexport const buildHubBreadcrumb = (input: {\n id: string;\n title: string;\n}): readonly BackofficeTopbarBreadcrumbItem[] => {\n return [\n {\n id: `hub-${input.id}`,\n label: input.title,\n isCurrent: true,\n },\n ];\n};\n\nexport const buildEntityListBreadcrumb = (\n config: BackofficeResolvedListFacetConfig,\n tApp: TFunction,\n): readonly BackofficeTopbarBreadcrumbItem[] => {\n return [\n {\n id: `${config.id}-list`,\n label: resolveLabel(config.label, tApp),\n isCurrent: true,\n },\n ];\n};\n\nexport const buildEntityDetailBreadcrumb = (input: {\n config:\n | BackofficeResolvedDetailLayoutFacetConfig\n | BackofficeResolvedDetailPageFacetConfig;\n tApp: TFunction;\n entityId: string;\n layoutView: unknown;\n pageLabel: string;\n}): readonly BackofficeTopbarBreadcrumbItem[] => {\n const listLabel = resolveLabel(input.config.label, input.tApp);\n const entityTitle = resolveEntityTitleFromDetailHeader({\n layoutView: input.layoutView as object,\n detailHeader: input.config.header,\n tApp: input.tApp,\n });\n\n return [\n {\n id: `${input.config.id}-list`,\n label: listLabel,\n to: input.config.routes.list,\n },\n {\n id: `${input.config.id}-entity-${input.entityId}`,\n label: entityTitle,\n to: input.config.routes.detail(input.entityId),\n },\n {\n id: `${input.config.id}-page-${input.pageLabel}`,\n label: input.pageLabel,\n isCurrent: true,\n },\n ];\n};\n\nexport const buildToolBreadcrumb = (input: {\n title: string;\n}): readonly BackofficeTopbarBreadcrumbItem[] => {\n return [\n {\n id: `tool-${input.title}`,\n label: input.title,\n isCurrent: true,\n },\n ];\n};\n"],"mappings":";AAWA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,EAAK,EAGP,KAEX,MAIY;CACZ,IAAM,IAAa,EAAM,aAAa,aACpC,EAAM,YACN,EAAM,KACP;CACD,IAAI,OAAO,KAAe,YAAY,EAAW,MAAM,KAAK,IAC1D,OAAO;CAGT,IAAM,IAAQ,EAAa,EAAM,aAAa,OAAO,EAAM,KAAK;CAChE,IAAI,EAAM,MAAM,KAAK,IACnB,OAAO;CAGT,IAAM,IAAW,EAAM,WAAgC;CAKvD,OAJI,OAAO,KAAY,YAAY,EAAQ,MAAM,KAAK,KAC7C,IAGF;GAGI,KACX,MAEO,CACL;CACE,IAAI;CACJ,OAAO,EAAE,kBAAkB;CAC3B,WAAW;CACZ,CACF,EAGU,KAAsB,MAI1B,CACL;CACE,IAAI,OAAO,EAAM;CACjB,OAAO,EAAM;CACb,WAAW;CACZ,CACF,EAGU,KACX,GACA,MAEO,CACL;CACE,IAAI,GAAG,EAAO,GAAG;CACjB,OAAO,EAAa,EAAO,OAAO,EAAK;CACvC,WAAW;CACZ,CACF,EAGU,KAA+B,MAQK;CAC/C,IAAM,IAAY,EAAa,EAAM,OAAO,OAAO,EAAM,KAAK,EACxD,IAAc,EAAmC;EACrD,YAAY,EAAM;EAClB,cAAc,EAAM,OAAO;EAC3B,MAAM,EAAM;EACb,CAAC;CAEF,OAAO;EACL;GACE,IAAI,GAAG,EAAM,OAAO,GAAG;GACvB,OAAO;GACP,IAAI,EAAM,OAAO,OAAO;GACzB;EACD;GACE,IAAI,GAAG,EAAM,OAAO,GAAG,UAAU,EAAM;GACvC,OAAO;GACP,IAAI,EAAM,OAAO,OAAO,OAAO,EAAM,SAAS;GAC/C;EACD;GACE,IAAI,GAAG,EAAM,OAAO,GAAG,QAAQ,EAAM;GACrC,OAAO,EAAM;GACb,WAAW;GACZ;EACF"}
@@ -0,0 +1,66 @@
1
+ import { Link as e } from "@plumile/router";
2
+ import { FormattedDate as t, Tag as n } from "@plumile/ui";
3
+ import { Fragment as r, jsx as i } from "react/jsx-runtime";
4
+ import { BACKOFFICE_DATE_TIME_OPTIONS as a } from "@plumile/backoffice-core/constants.js";
5
+ //#region src/components/backoffice/columns/buildDataTableColumns.tsx
6
+ var o = (e, t) => e(t), s = (e, t) => e == null || typeof e == "string" && e.trim() === "" ? t : String(e), c = (e) => {
7
+ if (e === "sm" || e === "md" || e === "lg" || e === "xl") return e;
8
+ };
9
+ function l(l, u) {
10
+ let { tApp: d, t: f, resolveEntityHref: p } = u, m = f("common.notAvailable");
11
+ return l.filter((e) => e.key !== "id").map((l) => ({
12
+ id: l.key,
13
+ header: o(l.header, d),
14
+ size: l.size,
15
+ isPrimary: l.visibility?.priority === "primary",
16
+ priority: l.visibility?.priority,
17
+ align: l.visibility?.align,
18
+ mobileRole: l.visibility?.mobile,
19
+ minVisibleAt: c(l.visibility?.minVisibleAt),
20
+ cell: (o) => {
21
+ let { cell: c } = l;
22
+ switch (c.type) {
23
+ case "text": return s(c.value(o), m);
24
+ case "link": {
25
+ let t = c.value(o);
26
+ return t == null || typeof t == "string" && t.trim() === "" ? m : /* @__PURE__ */ i(e, {
27
+ to: c.to(o),
28
+ children: t
29
+ });
30
+ }
31
+ case "badge": {
32
+ let e = c.value(o);
33
+ if (e == null || e.trim() === "") return m;
34
+ let { tone: t } = c;
35
+ return typeof t == "function" && (t = t(o)), /* @__PURE__ */ i(n, {
36
+ tone: t,
37
+ children: e
38
+ });
39
+ }
40
+ case "dateTime": return /* @__PURE__ */ i(t, {
41
+ value: c.value(o),
42
+ fallback: m,
43
+ options: a
44
+ });
45
+ case "entityRef": {
46
+ let t = c.value(o);
47
+ if (t.trim() === "") return m;
48
+ let n = p?.(c.entity, t) ?? null;
49
+ return n == null ? m : /* @__PURE__ */ i(e, {
50
+ to: n,
51
+ children: f("actions.view")
52
+ });
53
+ }
54
+ case "custom": {
55
+ let e = c.render(o);
56
+ return e == null || e === "" ? m : /* @__PURE__ */ i(r, { children: e });
57
+ }
58
+ default: return m;
59
+ }
60
+ }
61
+ }));
62
+ }
63
+ //#endregion
64
+ export { l as t };
65
+
66
+ //# sourceMappingURL=buildDataTableColumns-DGPjPK4N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildDataTableColumns-DGPjPK4N.js","names":[],"sources":["../../src/components/backoffice/columns/buildDataTableColumns.tsx"],"sourcesContent":["import { BACKOFFICE_DATE_TIME_OPTIONS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeColumnSpec,\n BackofficeFieldSize,\n BackofficeListColumnVisibility,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { TFunction } from 'i18next';\nimport { Link } from '@plumile/router';\nimport {\n FormattedDate,\n Tag,\n type DataTableBreakpoint,\n type DataTableColumn,\n} from '@plumile/ui';\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nconst resolveTextValue = (\n value: string | number | null,\n fallback: string,\n): string => {\n if (value == null) {\n return fallback;\n }\n if (typeof value === 'string' && value.trim() === '') {\n return fallback;\n }\n return String(value);\n};\n\nexport type BuildDataTableColumnsOptions = {\n tApp: TFunction;\n t: TFunction;\n resolveEntityHref?: (entityId: string, refId: string) => string | null;\n};\n\nexport type BackofficeSizedDataTableColumn<Row> = DataTableColumn<Row> & {\n size: BackofficeFieldSize;\n};\n\nconst resolveBreakpoint = (\n value: BackofficeListColumnVisibility['minVisibleAt'] | undefined,\n): DataTableBreakpoint | undefined => {\n if (value === 'sm' || value === 'md' || value === 'lg' || value === 'xl') {\n return value;\n }\n return undefined;\n};\n\n/**\n *\n */\nexport function buildDataTableColumns<Row>(\n columns: readonly BackofficeColumnSpec<Row>[],\n options: BuildDataTableColumnsOptions,\n): readonly BackofficeSizedDataTableColumn<Row>[] {\n const { tApp, t, resolveEntityHref } = options;\n const fallback = t('common.notAvailable');\n const filteredColumns = columns.filter((column) => {\n return column.key !== 'id';\n });\n\n return filteredColumns.map((column) => {\n return {\n id: column.key,\n header: resolveLabel(column.header, tApp),\n size: column.size,\n isPrimary: column.visibility?.priority === 'primary',\n priority: column.visibility?.priority,\n align: column.visibility?.align,\n mobileRole: column.visibility?.mobile,\n minVisibleAt: resolveBreakpoint(column.visibility?.minVisibleAt),\n cell: (row) => {\n const { cell } = column;\n switch (cell.type) {\n case 'text': {\n return resolveTextValue(cell.value(row), fallback);\n }\n case 'link': {\n const value = cell.value(row);\n if (\n value == null ||\n (typeof value === 'string' && value.trim() === '')\n ) {\n return fallback;\n }\n return <Link to={cell.to(row)}>{value}</Link>;\n }\n case 'badge': {\n const value = cell.value(row);\n if (value == null || value.trim() === '') {\n return fallback;\n }\n let { tone } = cell;\n if (typeof tone === 'function') {\n tone = tone(row);\n }\n return <Tag tone={tone}>{value}</Tag>;\n }\n case 'dateTime': {\n const value = cell.value(row);\n return (\n <FormattedDate\n value={value}\n fallback={fallback}\n options={BACKOFFICE_DATE_TIME_OPTIONS}\n />\n );\n }\n case 'entityRef': {\n const id = cell.value(row);\n if (id.trim() === '') {\n return fallback;\n }\n const href = resolveEntityHref?.(cell.entity, id) ?? null;\n if (href != null) {\n return <Link to={href}>{t('actions.view')}</Link>;\n }\n return fallback;\n }\n case 'custom': {\n const rendered = cell.render(row);\n if (rendered == null || rendered === '') {\n return fallback;\n }\n return <>{rendered}</>;\n }\n default: {\n return fallback;\n }\n }\n },\n };\n });\n}\n"],"mappings":";;;;;AAgBA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,EAAK,EAGd,KACJ,GACA,MAEI,KAAS,QAGT,OAAO,KAAU,YAAY,EAAM,MAAM,KAAK,KACzC,IAEF,OAAO,EAAM,EAahB,KACJ,MACoC;CACpC,IAAI,MAAU,QAAQ,MAAU,QAAQ,MAAU,QAAQ,MAAU,MAClE,OAAO;;AAQX,SAAgB,EACd,GACA,GACgD;CAChD,IAAM,EAAE,SAAM,MAAG,yBAAsB,GACjC,IAAW,EAAE,sBAAsB;CAKzC,OAJwB,EAAQ,QAAQ,MAC/B,EAAO,QAAQ,KAGjB,CAAgB,KAAK,OACnB;EACL,IAAI,EAAO;EACX,QAAQ,EAAa,EAAO,QAAQ,EAAK;EACzC,MAAM,EAAO;EACb,WAAW,EAAO,YAAY,aAAa;EAC3C,UAAU,EAAO,YAAY;EAC7B,OAAO,EAAO,YAAY;EAC1B,YAAY,EAAO,YAAY;EAC/B,cAAc,EAAkB,EAAO,YAAY,aAAa;EAChE,OAAO,MAAQ;GACb,IAAM,EAAE,YAAS;GACjB,QAAQ,EAAK,MAAb;IACE,KAAK,QACH,OAAO,EAAiB,EAAK,MAAM,EAAI,EAAE,EAAS;IAEpD,KAAK,QAAQ;KACX,IAAM,IAAQ,EAAK,MAAM,EAAI;KAO7B,OALE,KAAS,QACR,OAAO,KAAU,YAAY,EAAM,MAAM,KAAK,KAExC,IAEF,kBAAC,GAAD;MAAM,IAAI,EAAK,GAAG,EAAI;gBAAG;MAAa,CAAA;;IAE/C,KAAK,SAAS;KACZ,IAAM,IAAQ,EAAK,MAAM,EAAI;KAC7B,IAAI,KAAS,QAAQ,EAAM,MAAM,KAAK,IACpC,OAAO;KAET,IAAI,EAAE,YAAS;KAIf,OAHI,OAAO,KAAS,eAClB,IAAO,EAAK,EAAI,GAEX,kBAAC,GAAD;MAAW;gBAAO;MAAY,CAAA;;IAEvC,KAAK,YAEH,OACE,kBAAC,GAAD;KACS,OAHG,EAAK,MAAM,EAGd;KACG;KACV,SAAS;KACT,CAAA;IAGN,KAAK,aAAa;KAChB,IAAM,IAAK,EAAK,MAAM,EAAI;KAC1B,IAAI,EAAG,MAAM,KAAK,IAChB,OAAO;KAET,IAAM,IAAO,IAAoB,EAAK,QAAQ,EAAG,IAAI;KAIrD,OAHI,KAAQ,OAGL,IAFE,kBAAC,GAAD;MAAM,IAAI;gBAAO,EAAE,eAAe;MAAQ,CAAA;;IAIrD,KAAK,UAAU;KACb,IAAM,IAAW,EAAK,OAAO,EAAI;KAIjC,OAHI,KAAY,QAAQ,MAAa,KAC5B,IAEF,kBAAA,GAAA,EAAA,UAAG,GAAY,CAAA;;IAExB,SACE,OAAO;;;EAId,EACD"}
@@ -0,0 +1,74 @@
1
+ //#region src/components/backoffice/layout/sidebarUtils.ts
2
+ var e = (e, t) => e(t), t = (e, t) => !!(e === t || t !== "/" && e.startsWith(`${t}/`)), n = (e) => ({ main: { entities: Object.keys(e) } }), r = (e, t) => t?.groups ?? n(e), i = (e) => e.items == null ? e.entities?.map((e) => ({
3
+ kind: "entity",
4
+ id: e
5
+ })) ?? [] : e.items, a = (e, t) => {
6
+ let n = t?.hubs?.[e.id];
7
+ return {
8
+ ...n,
9
+ ...e,
10
+ groups: e.groups ?? n?.groups ?? []
11
+ };
12
+ }, o = (e) => {
13
+ let t = [], n = /* @__PURE__ */ new Set();
14
+ return e.groups.forEach((e) => {
15
+ e.items.forEach((e) => {
16
+ n.has(e.id) || (n.add(e.id), t.push(e.id));
17
+ });
18
+ }), t;
19
+ }, s = (e, t) => {
20
+ let n = [], r = /* @__PURE__ */ new Set();
21
+ return Object.entries(e).forEach(([e, o]) => {
22
+ i(o).forEach((i) => {
23
+ i.kind !== "hub" || r.has(i.id) || (r.add(i.id), n.push({
24
+ groupId: e,
25
+ hub: a(i, t),
26
+ icon: i.icon ?? o.icon
27
+ }));
28
+ });
29
+ }), Object.values(t?.hubs ?? {}).forEach((e) => {
30
+ r.has(e.id) || (r.add(e.id), n.push({
31
+ groupId: null,
32
+ hub: a(e, t),
33
+ icon: e.icon
34
+ }));
35
+ }), n;
36
+ }, c = (e, t) => i(e).flatMap((e) => e.kind === "entity" || e.kind === "tool" ? [e.id] : e.kind === "hub" ? o(a(e, t)) : []), l = (e, t) => {
37
+ let n = /* @__PURE__ */ new Map();
38
+ return Object.entries(e).forEach(([e, r]) => {
39
+ c(r, t).forEach((t) => {
40
+ n.has(t) || n.set(t, {
41
+ groupId: e,
42
+ icon: r.icon
43
+ });
44
+ });
45
+ }), n;
46
+ }, u = (e, t, n, r) => {
47
+ let i = t[e];
48
+ if (i == null) return !1;
49
+ let a = {
50
+ kind: "entity",
51
+ id: e
52
+ };
53
+ return i.kind === "tool" && (a = {
54
+ kind: "tool",
55
+ id: e
56
+ }), n?.isItemVisible == null ? i.kind === "tool" ? !0 : i.hasList : n.isItemVisible(a, r);
57
+ }, d = (e, t, n, r) => {
58
+ let i = [], a = /* @__PURE__ */ new Set();
59
+ return Object.entries(e).forEach(([, e]) => {
60
+ e.isVisible != null && !e.isVisible(r) || c(e, n).forEach((e) => {
61
+ a.has(e) || u(e, t, n, r) && (a.add(e), i.push(e));
62
+ });
63
+ }), i;
64
+ }, f = (e, n) => {
65
+ let r = Object.entries(n);
66
+ for (let [n, i] of r) if (i.kind === "tool") {
67
+ if (t(e, i.routes.list)) return n;
68
+ } else if (i.hasList && t(e, i.routes.list)) return n;
69
+ return null;
70
+ };
71
+ //#endregion
72
+ export { o as a, a as c, i, s as l, t as n, e as o, f as r, r as s, l as t, d as u };
73
+
74
+ //# sourceMappingURL=sidebarUtils-BZETlHea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebarUtils-BZETlHea.js","names":[],"sources":["../../src/components/backoffice/layout/sidebarUtils.ts"],"sourcesContent":["import type { TFunction } from 'i18next';\n\nimport type {\n BackofficeEntityManifestMap,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type {\n BackofficeSidebarConfig,\n BackofficeIconComponent,\n BackofficeSidebarGroupConfig,\n BackofficeSidebarItemDescriptor,\n BackofficeSidebarItemConfig,\n BackofficeSidebarHubConfig,\n BackofficeResolvedSidebarHubConfig,\n} from '../../../provider/types.js';\n\nexport const resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const isActivePath = (pathname: string, href: string): boolean => {\n if (pathname === href) {\n return true;\n }\n if (href !== '/' && pathname.startsWith(`${href}/`)) {\n return true;\n }\n return false;\n};\n\nexport const buildDefaultGroups = (\n entities: BackofficeEntityManifestMap,\n): Record<string, BackofficeSidebarGroupConfig> => {\n const entityIds = Object.keys(entities);\n\n return {\n main: {\n entities: entityIds,\n },\n };\n};\n\nexport const resolveSidebarGroups = (\n entities: BackofficeEntityManifestMap,\n sidebar: BackofficeSidebarConfig | undefined,\n): Record<string, BackofficeSidebarGroupConfig> => {\n return sidebar?.groups ?? buildDefaultGroups(entities);\n};\n\nexport type EntityGroupLookup = Map<\n string,\n { groupId: string; icon?: BackofficeIconComponent }\n>;\n\nexport const resolveItemDescriptor = (\n item: BackofficeSidebarItemConfig,\n): BackofficeSidebarItemDescriptor => {\n if (item.kind === 'dashboard') {\n return { kind: 'dashboard', id: item.id ?? 'dashboard' };\n }\n return { kind: item.kind, id: item.id };\n};\n\nexport const resolveGroupItems = (\n group: BackofficeSidebarGroupConfig,\n): readonly BackofficeSidebarItemConfig[] => {\n if (group.items != null) {\n return group.items;\n }\n return (\n group.entities?.map((entityId) => {\n return { kind: 'entity', id: entityId } as const;\n }) ?? []\n );\n};\n\nexport const resolveSidebarHub = (\n item: BackofficeSidebarHubConfig,\n sidebar: BackofficeSidebarConfig | undefined,\n): BackofficeResolvedSidebarHubConfig => {\n const registeredHub = sidebar?.hubs?.[item.id];\n return {\n ...registeredHub,\n ...item,\n groups: item.groups ?? registeredHub?.groups ?? [],\n };\n};\n\nexport const resolveHubEntityIds = (\n hub: BackofficeResolvedSidebarHubConfig,\n): readonly string[] => {\n const output: string[] = [];\n const seen = new Set<string>();\n hub.groups.forEach((group) => {\n group.items.forEach((item) => {\n if (seen.has(item.id)) {\n return;\n }\n seen.add(item.id);\n output.push(item.id);\n });\n });\n return output;\n};\n\nexport type ResolvedSidebarHubEntry = {\n groupId: string | null;\n hub: BackofficeResolvedSidebarHubConfig;\n icon?: BackofficeIconComponent;\n};\n\nexport const resolveSidebarHubEntries = (\n groups: Record<string, BackofficeSidebarGroupConfig>,\n sidebar: BackofficeSidebarConfig | undefined,\n): readonly ResolvedSidebarHubEntry[] => {\n const output: ResolvedSidebarHubEntry[] = [];\n const seen = new Set<string>();\n\n Object.entries(groups).forEach(([groupId, group]) => {\n resolveGroupItems(group).forEach((item) => {\n if (item.kind !== 'hub' || seen.has(item.id)) {\n return;\n }\n seen.add(item.id);\n output.push({\n groupId,\n hub: resolveSidebarHub(item, sidebar),\n icon: item.icon ?? group.icon,\n });\n });\n });\n\n Object.values(sidebar?.hubs ?? {}).forEach((hub) => {\n if (seen.has(hub.id)) {\n return;\n }\n seen.add(hub.id);\n output.push({\n groupId: null,\n hub: resolveSidebarHub(hub, sidebar),\n icon: hub.icon,\n });\n });\n\n return output;\n};\n\nexport const resolveGroupEntityIds = (\n group: BackofficeSidebarGroupConfig,\n sidebar?: BackofficeSidebarConfig,\n): readonly string[] => {\n return resolveGroupItems(group).flatMap((item) => {\n if (item.kind === 'entity' || item.kind === 'tool') {\n return [item.id];\n }\n if (item.kind === 'hub') {\n return resolveHubEntityIds(resolveSidebarHub(item, sidebar));\n }\n return [];\n });\n};\n\nexport const buildEntityGroupLookup = (\n groups: Record<string, BackofficeSidebarGroupConfig>,\n sidebar?: BackofficeSidebarConfig,\n): EntityGroupLookup => {\n const lookup: EntityGroupLookup = new Map();\n\n Object.entries(groups).forEach(([groupId, group]) => {\n const entityIds = resolveGroupEntityIds(group, sidebar);\n entityIds.forEach((entityId) => {\n if (!lookup.has(entityId)) {\n lookup.set(entityId, { groupId, icon: group.icon });\n }\n });\n });\n\n return lookup;\n};\n\nconst isEntityVisible = (\n entityId: string,\n entities: BackofficeEntityManifestMap,\n sidebar: BackofficeSidebarConfig | undefined,\n permissions: unknown,\n): boolean => {\n const config = entities[entityId];\n if (config == null) {\n return false;\n }\n\n let descriptor: BackofficeSidebarItemDescriptor = {\n kind: 'entity',\n id: entityId,\n };\n if (config.kind === 'tool') {\n descriptor = { kind: 'tool', id: entityId };\n }\n\n if (sidebar?.isItemVisible != null) {\n return sidebar.isItemVisible(descriptor, permissions);\n }\n\n if (config.kind === 'tool') {\n return true;\n }\n return config.hasList;\n};\n\nexport const resolveVisibleEntityIds = (\n groups: Record<string, BackofficeSidebarGroupConfig>,\n entities: BackofficeEntityManifestMap,\n sidebar: BackofficeSidebarConfig | undefined,\n permissions: unknown,\n): string[] => {\n const output: string[] = [];\n const seen = new Set<string>();\n\n Object.entries(groups).forEach(([, group]) => {\n if (group.isVisible != null && !group.isVisible(permissions)) {\n return;\n }\n resolveGroupEntityIds(group, sidebar).forEach((entityId) => {\n if (seen.has(entityId)) {\n return;\n }\n if (!isEntityVisible(entityId, entities, sidebar, permissions)) {\n return;\n }\n seen.add(entityId);\n output.push(entityId);\n });\n });\n\n return output;\n};\n\nexport const resolveActiveEntityId = (\n pathname: string,\n entities: BackofficeEntityManifestMap,\n): string | null => {\n const entries = Object.entries(entities);\n for (const [entityId, config] of entries) {\n if (config.kind === 'tool') {\n if (isActivePath(pathname, config.routes.list)) {\n return entityId;\n }\n } else if (config.hasList && isActivePath(pathname, config.routes.list)) {\n return entityId;\n }\n }\n return null;\n};\n\nexport const resolveActiveGroupId = (\n groups: Record<string, BackofficeSidebarGroupConfig>,\n activeEntityId: string | null,\n entities: BackofficeEntityManifestMap,\n sidebar: BackofficeSidebarConfig | undefined,\n permissions: unknown,\n): string | null => {\n if (activeEntityId == null) {\n return null;\n }\n\n if (!isEntityVisible(activeEntityId, entities, sidebar, permissions)) {\n return null;\n }\n\n for (const [groupId, group] of Object.entries(groups)) {\n const isVisible = group.isVisible == null || group.isVisible(permissions);\n if (\n isVisible &&\n resolveGroupEntityIds(group, sidebar).includes(activeEntityId)\n ) {\n return groupId;\n }\n }\n\n return null;\n};\n"],"mappings":"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"}
package/lib/esm/style.css CHANGED
@@ -1,2 +1,2 @@
1
- .w8yhmy0{cursor:pointer;background:0 0;border-style:none;border-width:0;padding:0;text-decoration:none}.w8yhmy0:hover{color:var(--plumile-colors-brandSecondaryOrange);text-decoration:underline}.w8yhmy1:hover:not(:disabled){background-color:color-mix(in srgb, var(--plumile-colors-brandPrimaryRed) 8%, transparent);color:var(--plumile-colors-brandSecondaryOrange);border-color:var(--plumile-colors-brandSecondaryOrange)}._80s44h0{margin:0;padding:0;list-style:none}._80s44h1{text-decoration:none}._80s44h1:hover{text-decoration:underline}._1vn15b70{max-width:10ch}._1vn15b71{max-width:18ch}._1vn15b72{max-width:28ch}._1vn15b73{max-width:44ch}._1vn15b74{max-width:64ch}._1vn15b75{max-width:100%}@keyframes _11exksg0{0%{transform:translate(-120%)}60%{transform:translate(30%)}to{transform:translate(120%)}}._11exksg1{height:3px}._11exksg2{background:linear-gradient(90deg, var(--plumile-colors-primaryLight) 0%, var(--plumile-colors-primary) 60%, var(--plumile-colors-primaryLight) 100%);animation:1.1s ease-in-out infinite _11exksg0}.hwnq700:hover{color:var(--plumile-colors-text);background-color:var(--plumile-colors-surfaceSecondary);border-color:var(--plumile-colors-borderSubtle)}.hwnq700:focus-visible{outline:2px solid var(--plumile-colors-primary);outline-offset:2px}._1xws1b00:hover{background-color:var(--plumile-colors-surfaceMuted);color:var(--plumile-colors-text)}._1xws1b00:focus-visible{outline:2px solid var(--plumile-colors-blue-500);outline-offset:2px}.wy96wu0{justify-content:center;padding:0 4px}.wy96wu1{justify-content:center;align-items:center;gap:6px;width:100%;display:inline-flex}.wy96wu2{place-items:center;width:24px;height:24px;display:grid}.c0tad0{justify-content:flex-end}.c0tad1{flex-shrink:0;justify-content:center;align-items:center;width:2rem;height:2rem;display:inline-flex}._1lzrtns0{flex:none}._1lzrtns1{flex:0 auto}
1
+ .w8yhmy0{cursor:pointer;background:0 0;border-style:none;border-width:0;padding:0;text-decoration:none}.w8yhmy0:hover{color:var(--plumile-colors-brandSecondaryOrange);text-decoration:underline}.w8yhmy1:hover:not(:disabled){background-color:color-mix(in srgb, var(--plumile-colors-brandPrimaryRed) 8%, transparent);color:var(--plumile-colors-brandSecondaryOrange);border-color:var(--plumile-colors-brandSecondaryOrange)}._1vn15b70{max-width:10ch}._1vn15b71{max-width:18ch}._1vn15b72{max-width:28ch}._1vn15b73{max-width:44ch}._1vn15b74{max-width:64ch}._1vn15b75{max-width:100%}._80s44h0{margin:0;padding:0;list-style:none}._80s44h1{text-decoration:none}._80s44h1:hover{text-decoration:underline}@keyframes _11exksg0{0%{transform:translate(-120%)}60%{transform:translate(30%)}to{transform:translate(120%)}}._11exksg1{height:3px}._11exksg2{background:linear-gradient(90deg, var(--plumile-colors-primaryLight) 0%, var(--plumile-colors-primary) 60%, var(--plumile-colors-primaryLight) 100%);animation:1.1s ease-in-out infinite _11exksg0}.hwnq700:hover{color:var(--plumile-colors-text);background-color:var(--plumile-colors-surfaceSecondary);border-color:var(--plumile-colors-borderSubtle)}.hwnq700:focus-visible{outline:2px solid var(--plumile-colors-primary);outline-offset:2px}._1xws1b00:hover{background-color:var(--plumile-colors-surfaceMuted);color:var(--plumile-colors-text)}._1xws1b00:focus-visible{outline:2px solid var(--plumile-colors-blue-500);outline-offset:2px}.wy96wu0{justify-content:center;padding:0 4px}.wy96wu1{justify-content:center;align-items:center;gap:6px;width:100%;display:inline-flex}.wy96wu2{place-items:center;width:24px;height:24px;display:grid}.c0tad0{justify-content:flex-end}.c0tad1{flex-shrink:0;justify-content:center;align-items:center;width:2rem;height:2rem;display:inline-flex}._1lzrtns0{flex:none}._1lzrtns1{flex:0 auto}.mt26ef0{grid-template-columns:repeat(12,minmax(0,1fr))}.mt26ef1{min-width:0}.mt26ef2{grid-column:span 3}.mt26ef3{grid-column:span 4}.mt26ef4{grid-column:span 6}.mt26ef5{grid-column:span 8}.mt26ef6{grid-column:1/-1}.mt26efd:last-child{border-bottom-width:0}.mt26efd:hover{color:var(--plumile-colors-primary)}@media screen and (width<=1199px){.mt26ef0{grid-template-columns:repeat(2,minmax(0,1fr))}.mt26ef2,.mt26ef3{grid-column:span 1}.mt26ef4,.mt26ef5{grid-column:span 2}}@media screen and (width<=767px){.mt26ef0{grid-template-columns:minmax(0,1fr)}.mt26ef4,.mt26ef5{grid-column:span 1}}._1myhzvp0{min-height:84px}._1myhzvp0:hover{border-color:var(--plumile-colors-border);background-color:var(--plumile-colors-surfaceMuted)}._1myhzvp0:focus-visible{outline:2px solid var(--plumile-colors-primary);outline-offset:2px}
2
2
  /*$vite$:1*/
@@ -24,4 +24,4 @@ var e = (e, t) => e(t), t = (t, n) => {
24
24
  //#endregion
25
25
  export { n, t };
26
26
 
27
- //# sourceMappingURL=toastViewAction-BGTS7vqm.js.map
27
+ //# sourceMappingURL=toastViewAction-DJkv_4p9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toastViewAction-BGTS7vqm.js","names":[],"sources":["../../src/components/backoffice/actions/toastViewAction.ts"],"sourcesContent":["import type { TFunction } from 'i18next';\n\nimport type {\n BackofficeActionToastSpec,\n BackofficeEntityManifestMap,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { ToastAction } from '@plumile/ui';\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const resolveToastSpec = <Node = unknown, Response = unknown>(\n toast: BackofficeActionToastSpec<Node, Response>,\n tApp: TFunction,\n): { title: string; message?: string } => {\n const title = resolveLabel(toast.title, tApp);\n let message: string | undefined;\n if (toast.message != null) {\n message = resolveLabel(toast.message, tApp);\n }\n return { title, message };\n};\n\nexport const resolveToastViewActions = <\n Node = unknown,\n Response = unknown,\n>(input: {\n toast: BackofficeActionToastSpec<Node, Response>;\n response: Response;\n node: Node;\n tApp: TFunction;\n entities: BackofficeEntityManifestMap;\n defaultLabel: string;\n navigateTo: (to: string) => void;\n}): readonly ToastAction[] | undefined => {\n const { toast } = input;\n if (toast.view == null) {\n return undefined;\n }\n\n const targetId = toast.view.getTargetId(input.response, input.node);\n if (targetId == null || targetId.trim() === '') {\n return undefined;\n }\n\n const entity = input.entities[toast.view.entityId];\n if (entity == null) {\n return undefined;\n }\n\n const href = entity.routes.detail(targetId);\n let label = input.defaultLabel;\n if (toast.view.label != null) {\n label = resolveLabel(toast.view.label, input.tApp);\n }\n\n return [\n {\n id: `view-${toast.view.entityId}-${targetId}`,\n label,\n onClick: () => {\n input.navigateTo(href);\n },\n },\n ];\n};\n"],"mappings":";AASA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,EAAK,EAGP,KACX,GACA,MACwC;CACxC,IAAM,IAAQ,EAAa,EAAM,OAAO,EAAK,EACzC;CAIJ,OAHI,EAAM,WAAW,SACnB,IAAU,EAAa,EAAM,SAAS,EAAK,GAEtC;EAAE;EAAO;EAAS;GAGd,KAGX,MAQwC;CACxC,IAAM,EAAE,aAAU;CAClB,IAAI,EAAM,QAAQ,MAChB;CAGF,IAAM,IAAW,EAAM,KAAK,YAAY,EAAM,UAAU,EAAM,KAAK;CACnE,IAAI,KAAY,QAAQ,EAAS,MAAM,KAAK,IAC1C;CAGF,IAAM,IAAS,EAAM,SAAS,EAAM,KAAK;CACzC,IAAI,KAAU,MACZ;CAGF,IAAM,IAAO,EAAO,OAAO,OAAO,EAAS,EACvC,IAAQ,EAAM;CAKlB,OAJI,EAAM,KAAK,SAAS,SACtB,IAAQ,EAAa,EAAM,KAAK,OAAO,EAAM,KAAK,GAG7C,CACL;EACE,IAAI,QAAQ,EAAM,KAAK,SAAS,GAAG;EACnC;EACA,eAAe;GACb,EAAM,WAAW,EAAK;;EAEzB,CACF"}
1
+ {"version":3,"file":"toastViewAction-DJkv_4p9.js","names":[],"sources":["../../src/components/backoffice/actions/toastViewAction.ts"],"sourcesContent":["import type { TFunction } from 'i18next';\n\nimport type {\n BackofficeActionToastSpec,\n BackofficeEntityManifestMap,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { ToastAction } from '@plumile/ui';\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const resolveToastSpec = <Node = unknown, Response = unknown>(\n toast: BackofficeActionToastSpec<Node, Response>,\n tApp: TFunction,\n): { title: string; message?: string } => {\n const title = resolveLabel(toast.title, tApp);\n let message: string | undefined;\n if (toast.message != null) {\n message = resolveLabel(toast.message, tApp);\n }\n return { title, message };\n};\n\nexport const resolveToastViewActions = <\n Node = unknown,\n Response = unknown,\n>(input: {\n toast: BackofficeActionToastSpec<Node, Response>;\n response: Response;\n node: Node;\n tApp: TFunction;\n entities: BackofficeEntityManifestMap;\n defaultLabel: string;\n navigateTo: (to: string) => void;\n}): readonly ToastAction[] | undefined => {\n const { toast } = input;\n if (toast.view == null) {\n return undefined;\n }\n\n const targetId = toast.view.getTargetId(input.response, input.node);\n if (targetId == null || targetId.trim() === '') {\n return undefined;\n }\n\n const entity = input.entities[toast.view.entityId];\n if (entity == null) {\n return undefined;\n }\n\n const href = entity.routes.detail(targetId);\n let label = input.defaultLabel;\n if (toast.view.label != null) {\n label = resolveLabel(toast.view.label, input.tApp);\n }\n\n return [\n {\n id: `view-${toast.view.entityId}-${targetId}`,\n label,\n onClick: () => {\n input.navigateTo(href);\n },\n },\n ];\n};\n"],"mappings":";AASA,IAAM,KAAgB,GAAkB,MAC/B,EAAM,EAAK,EAGP,KACX,GACA,MACwC;CACxC,IAAM,IAAQ,EAAa,EAAM,OAAO,EAAK,EACzC;CAIJ,OAHI,EAAM,WAAW,SACnB,IAAU,EAAa,EAAM,SAAS,EAAK,GAEtC;EAAE;EAAO;EAAS;GAGd,KAGX,MAQwC;CACxC,IAAM,EAAE,aAAU;CAClB,IAAI,EAAM,QAAQ,MAChB;CAGF,IAAM,IAAW,EAAM,KAAK,YAAY,EAAM,UAAU,EAAM,KAAK;CACnE,IAAI,KAAY,QAAQ,EAAS,MAAM,KAAK,IAC1C;CAGF,IAAM,IAAS,EAAM,SAAS,EAAM,KAAK;CACzC,IAAI,KAAU,MACZ;CAGF,IAAM,IAAO,EAAO,OAAO,OAAO,EAAS,EACvC,IAAQ,EAAM;CAKlB,OAJI,EAAM,KAAK,SAAS,SACtB,IAAQ,EAAa,EAAM,KAAK,OAAO,EAAM,KAAK,GAG7C,CACL;EACE,IAAI,QAAQ,EAAM,KAAK,SAAS,GAAG;EACnC;EACA,eAAe;GACb,EAAM,WAAW,EAAK;;EAEzB,CACF"}
@@ -86,4 +86,4 @@ function d() {
86
86
  //#endregion
87
87
  export { d as t };
88
88
 
89
- //# sourceMappingURL=useBackofficeAuth-ers1FUGe.js.map
89
+ //# sourceMappingURL=useBackofficeAuth-DVAXNAjP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBackofficeAuth-ers1FUGe.js","names":[],"sources":["../../src/hooks/useBackofficeAuth.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLTaggedNode, PayloadError } from 'relay-runtime';\n\nimport {\n createUseAuth,\n type UseAuthReturn,\n type AcceptInvitationResponse,\n type AcceptInvitationVariables,\n type BeginAuthenticationResponse,\n type BeginAuthenticationVariables,\n type BeginPasskeyLoginResponse,\n type BeginPasskeyLoginVariables,\n type CompleteMfaResponse,\n type CompleteMfaVariables,\n type FinishPasskeyLoginResponse,\n type FinishPasskeyLoginVariables,\n type LoginResponse,\n type LoginVariables,\n type LogoutResponse,\n type LogoutVariables,\n} from './useAuth.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport type { BackofficeLazyValue } from '../provider/lazyValue.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\n\nconst { commitMutation } = ReactRelay;\n\ntype MutationCommitConfig<TVariables, TResponse> = {\n variables: TVariables;\n onCompleted?: (\n response: TResponse,\n errors: readonly PayloadError[] | null,\n ) => void;\n onError?: (error: Error) => void;\n};\n\nconst toMutationLoadError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error('Unable to load auth mutation.');\n};\n\nconst useDeferredMutation = <TVariables extends object, TResponse>(\n loadMutation: () => Promise<GraphQLTaggedNode | null>,\n) => {\n const relayEnvironment = useRelayEnvironment();\n const [inFlightCount, setInFlightCount] = useState(0);\n\n const commit = useCallback(\n (config: MutationCommitConfig<TVariables, TResponse>) => {\n setInFlightCount((count) => {\n return count + 1;\n });\n\n const finish = () => {\n setInFlightCount((count) => {\n return Math.max(0, count - 1);\n });\n };\n\n loadMutation()\n .then((mutation) => {\n if (mutation == null) {\n throw new Error('Missing auth mutation config.');\n }\n\n commitMutation(relayEnvironment, {\n mutation,\n variables: config.variables,\n onCompleted: (response, errors) => {\n finish();\n config.onCompleted?.(response as TResponse, errors ?? null);\n },\n onError: (error) => {\n finish();\n config.onError?.(error);\n },\n });\n })\n .catch((error: unknown) => {\n finish();\n config.onError?.(toMutationLoadError(error));\n });\n },\n [loadMutation, relayEnvironment],\n );\n\n return {\n commit,\n isInFlight: inFlightCount > 0,\n };\n};\n\nconst loadOptionalMutation = async <TConfig>(\n eagerMutation: GraphQLTaggedNode | null | undefined,\n lazyConfig: BackofficeLazyValue<TConfig> | null | undefined,\n selectMutation: (config: TConfig) => GraphQLTaggedNode,\n): Promise<GraphQLTaggedNode | null> => {\n if (eagerMutation != null) {\n return eagerMutation;\n }\n if (lazyConfig == null) {\n return null;\n }\n const loadedConfig = await lazyConfig.load();\n return selectMutation(loadedConfig);\n};\n\n/**\n * Provides auth actions/state backed by Relay mutations from BackofficeProvider.\n */\nexport function useBackofficeAuth(): UseAuthReturn {\n const { auth: authConfig } = useBackofficeConfig();\n const { commit: commitLogin, isInFlight: isLoginInFlight } =\n useDeferredMutation<LoginVariables, LoginResponse>(\n useCallback(async () => {\n const loginConfig = authConfig.login.get();\n return loadOptionalMutation(\n loginConfig?.loginMutation,\n authConfig.login,\n (config) => {\n return config.loginMutation;\n },\n );\n }, [authConfig.login]),\n );\n const { commit: commitLogout, isInFlight: isLogoutInFlight } =\n useDeferredMutation<LogoutVariables, LogoutResponse>(\n useCallback(async () => {\n const logoutConfig = await authConfig.logout.load();\n return logoutConfig.logoutMutation;\n }, [authConfig.logout]),\n );\n const { commit: commitCompleteMfa, isInFlight: isCompleteMfaInFlight } =\n useDeferredMutation<CompleteMfaVariables, CompleteMfaResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.completeMfaMutation,\n authConfig.completeMfa,\n (config) => {\n return config.completeMfaMutation;\n },\n );\n }, [authConfig.completeMfa, authConfig.login]),\n );\n const {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n } = useDeferredMutation<\n BeginPasskeyLoginVariables,\n BeginPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.beginPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n } = useDeferredMutation<\n FinishPasskeyLoginVariables,\n FinishPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.finishPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.finishPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n } = useDeferredMutation<\n BeginAuthenticationVariables,\n BeginAuthenticationResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginAuthenticationMutation,\n authConfig.authentication,\n (config) => {\n return config.beginAuthenticationMutation;\n },\n );\n }, [authConfig.authentication, authConfig.login]),\n );\n const {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n } = useDeferredMutation<AcceptInvitationVariables, AcceptInvitationResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.acceptInvitationMutation,\n authConfig.acceptInvitation,\n (config) => {\n return config.acceptInvitationMutation;\n },\n );\n }, [authConfig.acceptInvitation, authConfig.login]),\n );\n const hasAcceptInvitationMutation =\n authConfig.login.get()?.acceptInvitationMutation != null ||\n authConfig.acceptInvitation != null;\n\n const useAuthWithMutations = useMemo(() => {\n let acceptInvitation:\n | {\n commit: typeof commitAcceptInvitation;\n isInFlight: boolean;\n }\n | undefined;\n if (hasAcceptInvitationMutation) {\n acceptInvitation = {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n };\n }\n return createUseAuth({\n login: { commit: commitLogin, isInFlight: isLoginInFlight },\n logout: { commit: commitLogout, isInFlight: isLogoutInFlight },\n completeMfa: {\n commit: commitCompleteMfa,\n isInFlight: isCompleteMfaInFlight,\n },\n beginPasskeyLogin: {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n },\n finishPasskeyLogin: {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n },\n beginAuthentication: {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n },\n acceptInvitation,\n });\n }, [\n commitAcceptInvitation,\n commitBeginAuthentication,\n commitBeginPasskeyLogin,\n commitCompleteMfa,\n commitFinishPasskeyLogin,\n commitLogin,\n commitLogout,\n hasAcceptInvitationMutation,\n isAcceptInvitationInFlight,\n isBeginAuthenticationInFlight,\n isBeginPasskeyLoginInFlight,\n isCompleteMfaInFlight,\n isFinishPasskeyLoginInFlight,\n isLoginInFlight,\n isLogoutInFlight,\n ]);\n\n return useAuthWithMutations();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useBackofficeAuth-DVAXNAjP.js","names":[],"sources":["../../src/hooks/useBackofficeAuth.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLTaggedNode, PayloadError } from 'relay-runtime';\n\nimport {\n createUseAuth,\n type UseAuthReturn,\n type AcceptInvitationResponse,\n type AcceptInvitationVariables,\n type BeginAuthenticationResponse,\n type BeginAuthenticationVariables,\n type BeginPasskeyLoginResponse,\n type BeginPasskeyLoginVariables,\n type CompleteMfaResponse,\n type CompleteMfaVariables,\n type FinishPasskeyLoginResponse,\n type FinishPasskeyLoginVariables,\n type LoginResponse,\n type LoginVariables,\n type LogoutResponse,\n type LogoutVariables,\n} from './useAuth.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport type { BackofficeLazyValue } from '../provider/lazyValue.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\n\nconst { commitMutation } = ReactRelay;\n\ntype MutationCommitConfig<TVariables, TResponse> = {\n variables: TVariables;\n onCompleted?: (\n response: TResponse,\n errors: readonly PayloadError[] | null,\n ) => void;\n onError?: (error: Error) => void;\n};\n\nconst toMutationLoadError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error('Unable to load auth mutation.');\n};\n\nconst useDeferredMutation = <TVariables extends object, TResponse>(\n loadMutation: () => Promise<GraphQLTaggedNode | null>,\n) => {\n const relayEnvironment = useRelayEnvironment();\n const [inFlightCount, setInFlightCount] = useState(0);\n\n const commit = useCallback(\n (config: MutationCommitConfig<TVariables, TResponse>) => {\n setInFlightCount((count) => {\n return count + 1;\n });\n\n const finish = () => {\n setInFlightCount((count) => {\n return Math.max(0, count - 1);\n });\n };\n\n loadMutation()\n .then((mutation) => {\n if (mutation == null) {\n throw new Error('Missing auth mutation config.');\n }\n\n commitMutation(relayEnvironment, {\n mutation,\n variables: config.variables,\n onCompleted: (response, errors) => {\n finish();\n config.onCompleted?.(response as TResponse, errors ?? null);\n },\n onError: (error) => {\n finish();\n config.onError?.(error);\n },\n });\n })\n .catch((error: unknown) => {\n finish();\n config.onError?.(toMutationLoadError(error));\n });\n },\n [loadMutation, relayEnvironment],\n );\n\n return {\n commit,\n isInFlight: inFlightCount > 0,\n };\n};\n\nconst loadOptionalMutation = async <TConfig>(\n eagerMutation: GraphQLTaggedNode | null | undefined,\n lazyConfig: BackofficeLazyValue<TConfig> | null | undefined,\n selectMutation: (config: TConfig) => GraphQLTaggedNode,\n): Promise<GraphQLTaggedNode | null> => {\n if (eagerMutation != null) {\n return eagerMutation;\n }\n if (lazyConfig == null) {\n return null;\n }\n const loadedConfig = await lazyConfig.load();\n return selectMutation(loadedConfig);\n};\n\n/**\n * Provides auth actions/state backed by Relay mutations from BackofficeProvider.\n */\nexport function useBackofficeAuth(): UseAuthReturn {\n const { auth: authConfig } = useBackofficeConfig();\n const { commit: commitLogin, isInFlight: isLoginInFlight } =\n useDeferredMutation<LoginVariables, LoginResponse>(\n useCallback(async () => {\n const loginConfig = authConfig.login.get();\n return loadOptionalMutation(\n loginConfig?.loginMutation,\n authConfig.login,\n (config) => {\n return config.loginMutation;\n },\n );\n }, [authConfig.login]),\n );\n const { commit: commitLogout, isInFlight: isLogoutInFlight } =\n useDeferredMutation<LogoutVariables, LogoutResponse>(\n useCallback(async () => {\n const logoutConfig = await authConfig.logout.load();\n return logoutConfig.logoutMutation;\n }, [authConfig.logout]),\n );\n const { commit: commitCompleteMfa, isInFlight: isCompleteMfaInFlight } =\n useDeferredMutation<CompleteMfaVariables, CompleteMfaResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.completeMfaMutation,\n authConfig.completeMfa,\n (config) => {\n return config.completeMfaMutation;\n },\n );\n }, [authConfig.completeMfa, authConfig.login]),\n );\n const {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n } = useDeferredMutation<\n BeginPasskeyLoginVariables,\n BeginPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.beginPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n } = useDeferredMutation<\n FinishPasskeyLoginVariables,\n FinishPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.finishPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.finishPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n } = useDeferredMutation<\n BeginAuthenticationVariables,\n BeginAuthenticationResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginAuthenticationMutation,\n authConfig.authentication,\n (config) => {\n return config.beginAuthenticationMutation;\n },\n );\n }, [authConfig.authentication, authConfig.login]),\n );\n const {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n } = useDeferredMutation<AcceptInvitationVariables, AcceptInvitationResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.acceptInvitationMutation,\n authConfig.acceptInvitation,\n (config) => {\n return config.acceptInvitationMutation;\n },\n );\n }, [authConfig.acceptInvitation, authConfig.login]),\n );\n const hasAcceptInvitationMutation =\n authConfig.login.get()?.acceptInvitationMutation != null ||\n authConfig.acceptInvitation != null;\n\n const useAuthWithMutations = useMemo(() => {\n let acceptInvitation:\n | {\n commit: typeof commitAcceptInvitation;\n isInFlight: boolean;\n }\n | undefined;\n if (hasAcceptInvitationMutation) {\n acceptInvitation = {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n };\n }\n return createUseAuth({\n login: { commit: commitLogin, isInFlight: isLoginInFlight },\n logout: { commit: commitLogout, isInFlight: isLogoutInFlight },\n completeMfa: {\n commit: commitCompleteMfa,\n isInFlight: isCompleteMfaInFlight,\n },\n beginPasskeyLogin: {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n },\n finishPasskeyLogin: {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n },\n beginAuthentication: {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n },\n acceptInvitation,\n });\n }, [\n commitAcceptInvitation,\n commitBeginAuthentication,\n commitBeginPasskeyLogin,\n commitCompleteMfa,\n commitFinishPasskeyLogin,\n commitLogin,\n commitLogout,\n hasAcceptInvitationMutation,\n isAcceptInvitationInFlight,\n isBeginAuthenticationInFlight,\n isBeginPasskeyLoginInFlight,\n isCompleteMfaInFlight,\n isFinishPasskeyLoginInFlight,\n isLoginInFlight,\n isLogoutInFlight,\n ]);\n\n return useAuthWithMutations();\n}\n"],"mappings":"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"}
@@ -28,4 +28,4 @@ var t = (e) => {
28
28
  //#endregion
29
29
  export { o as a, a as i, i as n, r, n as t };
30
30
 
31
- //# sourceMappingURL=useBackofficeLazyValue-Bh_13h8A.js.map
31
+ //# sourceMappingURL=useBackofficeLazyValue-CoIAK-5N.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBackofficeLazyValue-Bh_13h8A.js","names":[],"sources":["../../src/provider/useBackofficeLazyValue.ts"],"sourcesContent":["import type { BackofficeDashboardConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeConfig } from './BackofficeConfigContext.js';\nimport type {\n BackofficeResolvedAuthLoginConfig,\n BackofficeResolvedAuthLogoutConfig,\n BackofficeResolvedAuthPasswordResetCompleteConfig,\n BackofficeResolvedAuthPasswordResetRequestConfig,\n BackofficeResolvedAuthSessionConfig,\n BackofficeResolvedAuthVerifyEmailConfig,\n} from './types.js';\nimport type { BackofficeLazyValue } from './lazyValue.js';\n\nconst useResolvedLazyValue = <TValue>(\n resource: BackofficeLazyValue<TValue> | null | undefined,\n): TValue | null => {\n if (resource == null) {\n return null;\n }\n const loadedValue = resource.get();\n if (loadedValue != null) {\n return loadedValue;\n }\n // React Suspense expects a pending promise to be thrown while the lazy value loads.\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw resource.load();\n};\n\nexport const useBackofficeAuthSessionConfig =\n (): BackofficeResolvedAuthSessionConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.session);\n if (resolved == null) {\n throw new Error('Missing backoffice auth session config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthLoginConfig =\n (): BackofficeResolvedAuthLoginConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.login);\n if (resolved == null) {\n throw new Error('Missing backoffice auth login config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthLogoutConfig =\n (): BackofficeResolvedAuthLogoutConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.logout);\n if (resolved == null) {\n throw new Error('Missing backoffice logout auth config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthPasswordResetRequestConfig =\n (): BackofficeResolvedAuthPasswordResetRequestConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.passwordResetRequest);\n if (resolved == null) {\n throw new Error('Missing backoffice password reset request auth config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthPasswordResetCompleteConfig =\n (): BackofficeResolvedAuthPasswordResetCompleteConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.passwordResetComplete);\n if (resolved == null) {\n throw new Error(\n 'Missing backoffice password reset completion auth config.',\n );\n }\n return resolved;\n };\n\nexport const useBackofficeAuthVerifyEmailConfig =\n (): BackofficeResolvedAuthVerifyEmailConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.verifyEmail);\n if (resolved == null) {\n throw new Error('Missing backoffice verify email auth config.');\n }\n return resolved;\n };\n\nexport const useBackofficeDashboardConfig =\n (): BackofficeDashboardConfig | null => {\n const { dashboard } = useBackofficeConfig();\n return useResolvedLazyValue(dashboard);\n };\n\nexport default useResolvedLazyValue;\n"],"mappings":";;AAaA,IAAM,KACJ,MACkB;CAClB,IAAI,KAAY,MACd,OAAO;CAET,IAAM,IAAc,EAAS,KAAK;CAClC,IAAI,KAAe,MACjB,OAAO;CAIT,MAAM,EAAS,MAAM;GAaV,UAC8B;CACvC,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,MAAM;CACjD,IAAI,KAAY,MACd,MAAU,MAAM,wCAAwC;CAE1D,OAAO;GAaE,UAC6C;CACtD,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,qBAAqB;CAChE,IAAI,KAAY,MACd,MAAU,MAAM,yDAAyD;CAE3E,OAAO;GAGE,UAC8C;CACvD,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,sBAAsB;CACjE,IAAI,KAAY,MACd,MAAU,MACR,4DACD;CAEH,OAAO;GAGE,UACoC;CAC7C,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,YAAY;CACvD,IAAI,KAAY,MACd,MAAU,MAAM,+CAA+C;CAEjE,OAAO;GAGE,UAC6B;CACtC,IAAM,EAAE,iBAAc,GAAqB;CAC3C,OAAO,EAAqB,EAAU"}
1
+ {"version":3,"file":"useBackofficeLazyValue-CoIAK-5N.js","names":[],"sources":["../../src/provider/useBackofficeLazyValue.ts"],"sourcesContent":["import type { BackofficeDashboardConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeConfig } from './BackofficeConfigContext.js';\nimport type {\n BackofficeResolvedAuthLoginConfig,\n BackofficeResolvedAuthLogoutConfig,\n BackofficeResolvedAuthPasswordResetCompleteConfig,\n BackofficeResolvedAuthPasswordResetRequestConfig,\n BackofficeResolvedAuthSessionConfig,\n BackofficeResolvedAuthVerifyEmailConfig,\n} from './types.js';\nimport type { BackofficeLazyValue } from './lazyValue.js';\n\nconst useResolvedLazyValue = <TValue>(\n resource: BackofficeLazyValue<TValue> | null | undefined,\n): TValue | null => {\n if (resource == null) {\n return null;\n }\n const loadedValue = resource.get();\n if (loadedValue != null) {\n return loadedValue;\n }\n // React Suspense expects a pending promise to be thrown while the lazy value loads.\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw resource.load();\n};\n\nexport const useBackofficeAuthSessionConfig =\n (): BackofficeResolvedAuthSessionConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.session);\n if (resolved == null) {\n throw new Error('Missing backoffice auth session config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthLoginConfig =\n (): BackofficeResolvedAuthLoginConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.login);\n if (resolved == null) {\n throw new Error('Missing backoffice auth login config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthLogoutConfig =\n (): BackofficeResolvedAuthLogoutConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.logout);\n if (resolved == null) {\n throw new Error('Missing backoffice logout auth config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthPasswordResetRequestConfig =\n (): BackofficeResolvedAuthPasswordResetRequestConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.passwordResetRequest);\n if (resolved == null) {\n throw new Error('Missing backoffice password reset request auth config.');\n }\n return resolved;\n };\n\nexport const useBackofficeAuthPasswordResetCompleteConfig =\n (): BackofficeResolvedAuthPasswordResetCompleteConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.passwordResetComplete);\n if (resolved == null) {\n throw new Error(\n 'Missing backoffice password reset completion auth config.',\n );\n }\n return resolved;\n };\n\nexport const useBackofficeAuthVerifyEmailConfig =\n (): BackofficeResolvedAuthVerifyEmailConfig => {\n const { auth } = useBackofficeConfig();\n const resolved = useResolvedLazyValue(auth.verifyEmail);\n if (resolved == null) {\n throw new Error('Missing backoffice verify email auth config.');\n }\n return resolved;\n };\n\nexport const useBackofficeDashboardConfig =\n (): BackofficeDashboardConfig | null => {\n const { dashboard } = useBackofficeConfig();\n return useResolvedLazyValue(dashboard);\n };\n\nexport default useResolvedLazyValue;\n"],"mappings":";;AAaA,IAAM,KACJ,MACkB;CAClB,IAAI,KAAY,MACd,OAAO;CAET,IAAM,IAAc,EAAS,KAAK;CAClC,IAAI,KAAe,MACjB,OAAO;CAIT,MAAM,EAAS,MAAM;GAaV,UAC8B;CACvC,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,MAAM;CACjD,IAAI,KAAY,MACd,MAAU,MAAM,wCAAwC;CAE1D,OAAO;GAaE,UAC6C;CACtD,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,qBAAqB;CAChE,IAAI,KAAY,MACd,MAAU,MAAM,yDAAyD;CAE3E,OAAO;GAGE,UAC8C;CACvD,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,sBAAsB;CACjE,IAAI,KAAY,MACd,MAAU,MACR,4DACD;CAEH,OAAO;GAGE,UACoC;CAC7C,IAAM,EAAE,YAAS,GAAqB,EAChC,IAAW,EAAqB,EAAK,YAAY;CACvD,IAAI,KAAY,MACd,MAAU,MAAM,+CAA+C;CAEjE,OAAO;GAGE,UAC6B;CACtC,IAAM,EAAE,iBAAc,GAAqB;CAC3C,OAAO,EAAqB,EAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildDataTableColumns.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/columns/buildDataTableColumns.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAGpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAmBrB,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;IACb,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,8BAA8B,CAAC,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG;IACvE,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAcF,wBAAgB,qBAAqB,CAAC,GAAG,EACvC,OAAO,EAAE,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAC7C,OAAO,EAAE,4BAA4B,GACpC,SAAS,8BAA8B,CAAC,GAAG,CAAC,EAAE,CA8EhD"}
1
+ {"version":3,"file":"buildDataTableColumns.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/columns/buildDataTableColumns.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAGpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAmBrB,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;IACb,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,8BAA8B,CAAC,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG;IACvE,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAcF,wBAAgB,qBAAqB,CAAC,GAAG,EACvC,OAAO,EAAE,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAC7C,OAAO,EAAE,4BAA4B,GACpC,SAAS,8BAA8B,CAAC,GAAG,CAAC,EAAE,CA+EhD"}
@@ -0,0 +1,8 @@
1
+ import { type JSX, type ReactNode } from 'react';
2
+ export type BackofficePermissionsProviderProps = {
3
+ children: ReactNode;
4
+ permissions: unknown;
5
+ };
6
+ export declare const BackofficePermissionsProvider: ({ children, permissions, }: BackofficePermissionsProviderProps) => JSX.Element;
7
+ export declare const useBackofficePermissions: () => unknown;
8
+ //# sourceMappingURL=BackofficePermissionsContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackofficePermissionsContext.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/BackofficePermissionsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI5E,MAAM,MAAM,kCAAkC,GAAG;IAC/C,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,4BAG3C,kCAAkC,KAAG,GAAG,CAAC,OAM3C,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAAO,OAE3C,CAAC"}
@@ -7,6 +7,10 @@ export declare const resolveEntityTitleFromDetailHeader: <LayoutView extends obj
7
7
  tApp: TFunction;
8
8
  }) => string;
9
9
  export declare const buildDashboardBreadcrumb: (t: TFunction) => readonly BackofficeTopbarBreadcrumbItem[];
10
+ export declare const buildHubBreadcrumb: (input: {
11
+ id: string;
12
+ title: string;
13
+ }) => readonly BackofficeTopbarBreadcrumbItem[];
10
14
  export declare const buildEntityListBreadcrumb: (config: BackofficeResolvedListFacetConfig, tApp: TFunction) => readonly BackofficeTopbarBreadcrumbItem[];
11
15
  export declare const buildEntityDetailBreadcrumb: (input: {
12
16
  config: BackofficeResolvedDetailLayoutFacetConfig | BackofficeResolvedDetailPageFacetConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"buildBreadcrumbs.d.ts","sourceRoot":"","sources":["../../../../../../src/components/backoffice/layout/breadcrumb/buildBreadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EACV,yCAAyC,EACzC,uCAAuC,EACvC,iCAAiC,EAElC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAMjE,eAAO,MAAM,kCAAkC,GAC7C,UAAU,SAAS,MAAM,EACzB,OAAO;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,yCAAyC,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,EAAE,SAAS,CAAC;CACjB,KAAG,MAoBH,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,GAAG,SAAS,KACX,SAAS,8BAA8B,EAQzC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,QAAQ,iCAAiC,EACzC,MAAM,SAAS,KACd,SAAS,8BAA8B,EAQzC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,OAAO;IACjD,MAAM,EACF,yCAAyC,GACzC,uCAAuC,CAAC;IAC5C,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,SAAS,8BAA8B,EAyB1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO;IACzC,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,SAAS,8BAA8B,EAQ1C,CAAC"}
1
+ {"version":3,"file":"buildBreadcrumbs.d.ts","sourceRoot":"","sources":["../../../../../../src/components/backoffice/layout/breadcrumb/buildBreadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EACV,yCAAyC,EACzC,uCAAuC,EACvC,iCAAiC,EAElC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAMjE,eAAO,MAAM,kCAAkC,GAC7C,UAAU,SAAS,MAAM,EACzB,OAAO;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,yCAAyC,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,EAAE,SAAS,CAAC;CACjB,KAAG,MAoBH,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,GAAG,SAAS,KACX,SAAS,8BAA8B,EAQzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,SAAS,8BAA8B,EAQ1C,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,QAAQ,iCAAiC,EACzC,MAAM,SAAS,KACd,SAAS,8BAA8B,EAQzC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,OAAO;IACjD,MAAM,EACF,yCAAyC,GACzC,uCAAuC,CAAC;IAC5C,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,SAAS,8BAA8B,EAyB1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO;IACzC,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,SAAS,8BAA8B,EAQ1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildSidebarSections.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/buildSidebarSections.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EACV,uBAAuB,EAGvB,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,mBAAmB,EAOzB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAoB3F,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,2BAA2B,CAAC;IACtC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;IACb,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACrD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAC/C,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACxE,CAAC;AAKF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,yBAAyB,GAC/B,SAAS,mBAAmB,EAAE,CA4ZhC"}
1
+ {"version":3,"file":"buildSidebarSections.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/buildSidebarSections.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EACV,uBAAuB,EAGvB,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,mBAAmB,EAOzB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAsB3F,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,2BAA2B,CAAC;IACtC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;IACb,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACrD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAC/C,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACxE,CAAC;AAKF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,yBAAyB,GAC/B,SAAS,mBAAmB,EAAE,CAuchC"}
@@ -1,6 +1,6 @@
1
1
  import type { TFunction } from 'i18next';
2
2
  import type { BackofficeEntityManifestMap, I18nLabel } from '@plumile/backoffice-core/types.js';
3
- import type { BackofficeSidebarConfig, BackofficeIconComponent, BackofficeSidebarGroupConfig, BackofficeSidebarItemDescriptor, BackofficeSidebarItemConfig } from '../../../provider/types.js';
3
+ import type { BackofficeSidebarConfig, BackofficeIconComponent, BackofficeSidebarGroupConfig, BackofficeSidebarItemDescriptor, BackofficeSidebarItemConfig, BackofficeSidebarHubConfig, BackofficeResolvedSidebarHubConfig } from '../../../provider/types.js';
4
4
  export declare const resolveLabel: (label: I18nLabel, tApp: TFunction) => string;
5
5
  export declare const isActivePath: (pathname: string, href: string) => boolean;
6
6
  export declare const buildDefaultGroups: (entities: BackofficeEntityManifestMap) => Record<string, BackofficeSidebarGroupConfig>;
@@ -11,8 +11,16 @@ export type EntityGroupLookup = Map<string, {
11
11
  }>;
12
12
  export declare const resolveItemDescriptor: (item: BackofficeSidebarItemConfig) => BackofficeSidebarItemDescriptor;
13
13
  export declare const resolveGroupItems: (group: BackofficeSidebarGroupConfig) => readonly BackofficeSidebarItemConfig[];
14
- export declare const resolveGroupEntityIds: (group: BackofficeSidebarGroupConfig) => readonly string[];
15
- export declare const buildEntityGroupLookup: (groups: Record<string, BackofficeSidebarGroupConfig>) => EntityGroupLookup;
14
+ export declare const resolveSidebarHub: (item: BackofficeSidebarHubConfig, sidebar: BackofficeSidebarConfig | undefined) => BackofficeResolvedSidebarHubConfig;
15
+ export declare const resolveHubEntityIds: (hub: BackofficeResolvedSidebarHubConfig) => readonly string[];
16
+ export type ResolvedSidebarHubEntry = {
17
+ groupId: string | null;
18
+ hub: BackofficeResolvedSidebarHubConfig;
19
+ icon?: BackofficeIconComponent;
20
+ };
21
+ export declare const resolveSidebarHubEntries: (groups: Record<string, BackofficeSidebarGroupConfig>, sidebar: BackofficeSidebarConfig | undefined) => readonly ResolvedSidebarHubEntry[];
22
+ export declare const resolveGroupEntityIds: (group: BackofficeSidebarGroupConfig, sidebar?: BackofficeSidebarConfig) => readonly string[];
23
+ export declare const buildEntityGroupLookup: (groups: Record<string, BackofficeSidebarGroupConfig>, sidebar?: BackofficeSidebarConfig) => EntityGroupLookup;
16
24
  export declare const resolveVisibleEntityIds: (groups: Record<string, BackofficeSidebarGroupConfig>, entities: BackofficeEntityManifestMap, sidebar: BackofficeSidebarConfig | undefined, permissions: unknown) => string[];
17
25
  export declare const resolveActiveEntityId: (pathname: string, entities: BackofficeEntityManifestMap) => string | null;
18
26
  export declare const resolveActiveGroupId: (groups: Record<string, BackofficeSidebarGroupConfig>, activeEntityId: string | null, entities: BackofficeEntityManifestMap, sidebar: BackofficeSidebarConfig | undefined, permissions: unknown) => string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"sidebarUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/sidebarUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EACV,2BAA2B,EAC3B,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,EAAE,MAAM,SAAS,KAAG,MAEhE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,EAAE,MAAM,MAAM,KAAG,OAQ7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,2BAA2B,KACpC,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAQ7C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,2BAA2B,EACrC,SAAS,uBAAuB,GAAG,SAAS,KAC3C,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAE7C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,GAAG,CACjC,MAAM,EACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,uBAAuB,CAAA;CAAE,CACpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,2BAA2B,KAChC,+BAKF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,4BAA4B,KAClC,SAAS,2BAA2B,EAStC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,OAAO,4BAA4B,KAClC,SAAS,MAAM,EAOjB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,KACnD,iBAaF,CAAC;AA+BF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,EACpD,UAAU,2BAA2B,EACrC,SAAS,uBAAuB,GAAG,SAAS,EAC5C,aAAa,OAAO,KACnB,MAAM,EA0BR,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,UAAU,MAAM,EAChB,UAAU,2BAA2B,KACpC,MAAM,GAAG,IAYX,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,EACpD,gBAAgB,MAAM,GAAG,IAAI,EAC7B,UAAU,2BAA2B,EACrC,SAAS,uBAAuB,GAAG,SAAS,EAC5C,aAAa,OAAO,KACnB,MAAM,GAAG,IAiBX,CAAC"}
1
+ {"version":3,"file":"sidebarUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/layout/sidebarUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EACV,2BAA2B,EAC3B,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAC/B,2BAA2B,EAC3B,0BAA0B,EAC1B,kCAAkC,EACnC,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,EAAE,MAAM,SAAS,KAAG,MAEhE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,EAAE,MAAM,MAAM,KAAG,OAQ7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,2BAA2B,KACpC,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAQ7C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,2BAA2B,EACrC,SAAS,uBAAuB,GAAG,SAAS,KAC3C,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAE7C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,GAAG,CACjC,MAAM,EACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,uBAAuB,CAAA;CAAE,CACpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,2BAA2B,KAChC,+BAKF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,4BAA4B,KAClC,SAAS,2BAA2B,EAStC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,0BAA0B,EAChC,SAAS,uBAAuB,GAAG,SAAS,KAC3C,kCAOF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,KAAK,kCAAkC,KACtC,SAAS,MAAM,EAajB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,kCAAkC,CAAC;IACxC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,EACpD,SAAS,uBAAuB,GAAG,SAAS,KAC3C,SAAS,uBAAuB,EA+BlC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,OAAO,4BAA4B,EACnC,UAAU,uBAAuB,KAChC,SAAS,MAAM,EAUjB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,EACpD,UAAU,uBAAuB,KAChC,iBAaF,CAAC;AA+BF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,EACpD,UAAU,2BAA2B,EACrC,SAAS,uBAAuB,GAAG,SAAS,EAC5C,aAAa,OAAO,KACnB,MAAM,EAqBR,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,UAAU,MAAM,EAChB,UAAU,2BAA2B,KACpC,MAAM,GAAG,IAYX,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,EACpD,gBAAgB,MAAM,GAAG,IAAI,EAC7B,UAAU,2BAA2B,EACrC,SAAS,uBAAuB,GAAG,SAAS,EAC5C,aAAa,OAAO,KACnB,MAAM,GAAG,IAoBX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeEntityListScaffold.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityListScaffold.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAGf,OAAO,EAgBL,KAAK,eAAe,EACpB,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAC;AAMrB,OAAO,KAAK,EAEV,mBAAmB,EAEnB,iCAAiC,EAElC,MAAM,mCAAmC,CAAC;AAsG3C,KAAK,KAAK,CACR,OAAO,EACP,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,SAAS,MAAM,IACjB;IACF,MAAM,EAAE,iCAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAC5D,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,OAAO,EACP,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,SAAS,MAAM,EAEnB,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KACjC,GAAG,CAAC,OAAO,GAAG,IAusBhB,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"BackofficeEntityListScaffold.d.ts","sourceRoot":"","sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityListScaffold.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,GAAG,EACR,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAGf,OAAO,EAgBL,KAAK,eAAe,EACpB,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAC;AAMrB,OAAO,KAAK,EAEV,mBAAmB,EAEnB,iCAAiC,EAElC,MAAM,mCAAmC,CAAC;AAuG3C,KAAK,KAAK,CACR,OAAO,EACP,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,SAAS,MAAM,IACjB;IACF,MAAM,EAAE,iCAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAC5D,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,SAAS,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,OAAO,EACP,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,SAAS,MAAM,EAEnB,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KACjC,GAAG,CAAC,OAAO,GAAG,IAgtBhB,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type UseBackofficeInfiniteScrollSentinelOptions = {
2
+ enabled: boolean;
3
+ hasNextPage: boolean;
4
+ isLoading: boolean;
5
+ root?: Element | null;
6
+ rootMargin?: string;
7
+ threshold?: number;
8
+ onIntersect: () => void;
9
+ };
10
+ export type UseBackofficeInfiniteScrollSentinelResult = {
11
+ sentinelRef: (node: HTMLElement | null) => void;
12
+ };
13
+ export declare function useBackofficeInfiniteScrollSentinel({ enabled, hasNextPage, isLoading, onIntersect, root, rootMargin, threshold, }: UseBackofficeInfiniteScrollSentinelOptions): UseBackofficeInfiniteScrollSentinelResult;
14
+ //# sourceMappingURL=useBackofficeInfiniteScrollSentinel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackofficeInfiniteScrollSentinel.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBackofficeInfiniteScrollSentinel.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,0CAA0C,GAAG;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD,CAAC;AAKF,wBAAgB,mCAAmC,CAAC,EAClD,OAAO,EACP,WAAW,EACX,SAAS,EACT,WAAW,EACX,IAAW,EACX,UAAwB,EACxB,SAAa,GACd,EAAE,0CAA0C,GAAG,yCAAyC,CA4CxF"}
@@ -7,6 +7,7 @@ export type SidebarPinsState = {
7
7
  reorder: (fromId: string, toId: string) => void;
8
8
  };
9
9
  export type UseBackofficeSidebarPinsInput = {
10
+ enabled?: boolean;
10
11
  storageKey?: string;
11
12
  visibleEntityIds: readonly string[];
12
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useBackofficeSidebarPins.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBackofficeSidebarPins.ts"],"names":[],"mappings":"AA8CA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,6BAA6B,KACnC,gBAuHF,CAAC;AAEF,eAAO,MAAM,MAAM;0BA3JX,SAAS,MAAM,EAAE,YACb,GAAG,CAAC,MAAM,CAAC,KACpB,MAAM,EAAE;sCAxB8B,MAAM,KAAG,MAAM,EAAE;CAoLzD,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"useBackofficeSidebarPins.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBackofficeSidebarPins.ts"],"names":[],"mappings":"AA8CA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,6BAA6B,KACnC,gBAqJF,CAAC;AAEF,eAAO,MAAM,MAAM;0BA1LX,SAAS,MAAM,EAAE,YACb,GAAG,CAAC,MAAM,CAAC,KACpB,MAAM,EAAE;sCAxB8B,MAAM,KAAG,MAAM,EAAE;CAmNzD,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
@@ -3,6 +3,8 @@ export type UseSidebarGroupCollapseInput = {
3
3
  groupIds: readonly string[];
4
4
  activeGroupId?: string | null;
5
5
  defaultCollapsedByGroupId?: Record<string, boolean | undefined>;
6
+ storageKey?: string;
7
+ persist?: boolean;
6
8
  };
7
9
  export declare const useSidebarGroupCollapse: (input: UseSidebarGroupCollapseInput) => {
8
10
  collapsedByGroupId: SidebarGroupCollapseState;
@@ -1 +1 @@
1
- {"version":3,"file":"useSidebarGroupCollapse.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSidebarGroupCollapse.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAE5E,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;CACjE,CAAC;AAiBF,eAAO,MAAM,uBAAuB,GAClC,OAAO,4BAA4B,KAClC;IACD,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAkE7D,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"useSidebarGroupCollapse.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSidebarGroupCollapse.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAE5E,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA8CF,eAAO,MAAM,uBAAuB,GAClC,OAAO,4BAA4B,KAClC;IACD,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAmG7D,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -323,6 +323,20 @@ export declare const backofficeReactI18nResources: {
323
323
  percent: string;
324
324
  };
325
325
  history: string;
326
+ hub: {
327
+ empty: {
328
+ description: string;
329
+ title: string;
330
+ };
331
+ itemKinds: {
332
+ entity: string;
333
+ tool: string;
334
+ };
335
+ search: {
336
+ placeholder: string;
337
+ };
338
+ subtitle: string;
339
+ };
326
340
  list: {
327
341
  actions: {
328
342
  refresh: string;
@@ -335,7 +349,6 @@ export declare const backofficeReactI18nResources: {
335
349
  loadMore: {
336
350
  end: string;
337
351
  loading: string;
338
- more: string;
339
352
  };
340
353
  showing: string;
341
354
  title: string;
@@ -722,6 +735,20 @@ export declare const backofficeReactI18nResources: {
722
735
  percent: string;
723
736
  };
724
737
  history: string;
738
+ hub: {
739
+ empty: {
740
+ description: string;
741
+ title: string;
742
+ };
743
+ itemKinds: {
744
+ entity: string;
745
+ tool: string;
746
+ };
747
+ search: {
748
+ placeholder: string;
749
+ };
750
+ subtitle: string;
751
+ };
725
752
  list: {
726
753
  actions: {
727
754
  refresh: string;
@@ -734,7 +761,6 @@ export declare const backofficeReactI18nResources: {
734
761
  loadMore: {
735
762
  end: string;
736
763
  loading: string;
737
- more: string;
738
764
  };
739
765
  showing: string;
740
766
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/i18n/resources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,SAAS,CAAC;AAI1D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/B,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC;AAsB/E,wBAAgB,gCAAgC,CAC9C,YAAY,GAAE,QAAa,GAC1B,QAAQ,CAsBV"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/i18n/resources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,SAAS,CAAC;AAI1D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/B,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC;AAsB/E,wBAAgB,gCAAgC,CAC9C,YAAY,GAAE,QAAa,GAC1B,QAAQ,CAsBV"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeDashboardPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeDashboardPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,OAAO,CAAC;AAyP3C,eAAO,MAAM,uBAAuB,QAAO,GAAG,CAAC,OAkE9C,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"BackofficeDashboardPage.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeDashboardPage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,OAAO,CAAC;AAoX3C,eAAO,MAAM,uBAAuB,QAAO,GAAG,CAAC,OAoE9C,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeDashboardPage.helpers.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeDashboardPage.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,EAAE,MAAM,SAAS,KAAG,MAEhE,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,QAAQ,yBAAyB,EACjC,QAAQ,yBAAyB,KAChC,SAiBF,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,QAAQ,yBAAyB,KAChC,MAAM,IAAI,yBAAyB,GAAG;IAAE,KAAK,EAAE,iBAAiB,CAAA;CAElE,CAAC"}
1
+ {"version":3,"file":"BackofficeDashboardPage.helpers.d.ts","sourceRoot":"","sources":["../../../src/pages/BackofficeDashboardPage.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,EAAE,MAAM,SAAS,KAAG,MAEhE,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,QAAQ,yBAAyB,EACjC,QAAQ,yBAAyB,KAChC,SAmBF,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,QAAQ,yBAAyB,KAChC,MAAM,IAAI,yBAAyB,GAAG;IAAE,KAAK,EAAE,iBAAiB,CAAA;CAElE,CAAC"}