@serhii.olishevskyi/docs 1.2.24 → 1.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +31 -2
- package/dist/index.d.ts +31 -2
- package/dist/index.js +549 -127
- package/dist/index.mjs +504 -80
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2968,13 +2968,16 @@ __export(index_exports, {
|
|
|
2968
2968
|
NumberInputComponent: () => NumberInputComponent,
|
|
2969
2969
|
PageComponent: () => PageComponent,
|
|
2970
2970
|
PageLinkComponent: () => PageLinkComponent,
|
|
2971
|
+
ProtectedLanguageSelector: () => LanguageSelector,
|
|
2971
2972
|
Providers: () => Providers,
|
|
2973
|
+
PublicLanguageSelector: () => PublicLanguageSelector,
|
|
2972
2974
|
RefreshButtonComponent: () => RefreshButtonComponent,
|
|
2973
2975
|
SearchComponent: () => SearchComponent,
|
|
2974
2976
|
SelectComponent: () => SelectComponent,
|
|
2975
2977
|
Services: () => Services,
|
|
2976
2978
|
SupabaseProvider: () => SupabaseProvider,
|
|
2977
2979
|
SwitchComponent: () => SwitchComponent,
|
|
2980
|
+
TablePaginationComponent: () => TablePaginationComponent,
|
|
2978
2981
|
TextFieldComponent: () => TextFieldComponent,
|
|
2979
2982
|
ThemeProvider: () => ThemeProvider,
|
|
2980
2983
|
ToastProvider: () => ToastProvider,
|
|
@@ -2982,6 +2985,7 @@ __export(index_exports, {
|
|
|
2982
2985
|
TranslateProvider: () => TranslateProvider,
|
|
2983
2986
|
TranslateText: () => TranslateText,
|
|
2984
2987
|
TranslationEditProvider: () => TranslationEditProvider,
|
|
2988
|
+
TruncatedTypography: () => TruncatedTypography,
|
|
2985
2989
|
UrlComponent: () => UrlComponent,
|
|
2986
2990
|
UserAvatarComponent: () => UserAvatarComponent,
|
|
2987
2991
|
UserPopoverComponent: () => UserPopoverComponent,
|
|
@@ -4681,15 +4685,79 @@ var ErrorAlertComponent = ({
|
|
|
4681
4685
|
);
|
|
4682
4686
|
};
|
|
4683
4687
|
|
|
4684
|
-
// src/UI/components/
|
|
4685
|
-
var import_react29 =
|
|
4688
|
+
// src/UI/components/data.display/TruncatedTypography.tsx
|
|
4689
|
+
var import_react29 = require("react");
|
|
4686
4690
|
var import_material25 = require("@mui/material");
|
|
4691
|
+
init_TranslatableTooltipComponent();
|
|
4692
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
4693
|
+
var TruncatedTypography = ({
|
|
4694
|
+
children,
|
|
4695
|
+
lines = 1,
|
|
4696
|
+
tooltipProps,
|
|
4697
|
+
alwaysShowTooltip = false,
|
|
4698
|
+
sx,
|
|
4699
|
+
...typographyProps
|
|
4700
|
+
}) => {
|
|
4701
|
+
const textRef = (0, import_react29.useRef)(null);
|
|
4702
|
+
const [isTruncated, setIsTruncated] = (0, import_react29.useState)(false);
|
|
4703
|
+
const checkOverflow = () => {
|
|
4704
|
+
const element = textRef.current;
|
|
4705
|
+
if (!element) return;
|
|
4706
|
+
if (lines === 1) {
|
|
4707
|
+
setIsTruncated(element.scrollWidth > element.clientWidth);
|
|
4708
|
+
} else {
|
|
4709
|
+
setIsTruncated(element.scrollHeight > element.clientHeight);
|
|
4710
|
+
}
|
|
4711
|
+
};
|
|
4712
|
+
(0, import_react29.useEffect)(() => {
|
|
4713
|
+
checkOverflow();
|
|
4714
|
+
window.addEventListener("resize", checkOverflow);
|
|
4715
|
+
return () => window.removeEventListener("resize", checkOverflow);
|
|
4716
|
+
}, [children, lines]);
|
|
4717
|
+
const truncationStyles = lines > 1 ? {
|
|
4718
|
+
display: "-webkit-box",
|
|
4719
|
+
WebkitLineClamp: lines,
|
|
4720
|
+
WebkitBoxOrient: "vertical",
|
|
4721
|
+
overflow: "hidden",
|
|
4722
|
+
textOverflow: "ellipsis",
|
|
4723
|
+
wordBreak: "break-word"
|
|
4724
|
+
} : {
|
|
4725
|
+
overflow: "hidden",
|
|
4726
|
+
textOverflow: "ellipsis",
|
|
4727
|
+
whiteSpace: "nowrap"
|
|
4728
|
+
};
|
|
4729
|
+
const textContent = typeof children === "string" ? children : void 0;
|
|
4730
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4731
|
+
TranslatableTooltipComponent,
|
|
4732
|
+
{
|
|
4733
|
+
title: alwaysShowTooltip || isTruncated ? textContent || children : "",
|
|
4734
|
+
disableHoverListener: !alwaysShowTooltip && !isTruncated,
|
|
4735
|
+
...tooltipProps,
|
|
4736
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4737
|
+
import_material25.Typography,
|
|
4738
|
+
{
|
|
4739
|
+
ref: textRef,
|
|
4740
|
+
sx: {
|
|
4741
|
+
...truncationStyles,
|
|
4742
|
+
...sx
|
|
4743
|
+
},
|
|
4744
|
+
...typographyProps,
|
|
4745
|
+
children
|
|
4746
|
+
}
|
|
4747
|
+
)
|
|
4748
|
+
}
|
|
4749
|
+
);
|
|
4750
|
+
};
|
|
4751
|
+
|
|
4752
|
+
// src/UI/components/layout/PageComponent.tsx
|
|
4753
|
+
var import_react30 = __toESM(require("react"));
|
|
4754
|
+
var import_material26 = require("@mui/material");
|
|
4687
4755
|
var import_MoreVert = __toESM(require("@mui/icons-material/MoreVert"));
|
|
4688
4756
|
var import_KeyboardArrowDown = __toESM(require("@mui/icons-material/KeyboardArrowDown"));
|
|
4689
4757
|
var import_icons_material3 = require("@mui/icons-material");
|
|
4690
4758
|
init_context();
|
|
4691
4759
|
init_TranslatableTooltipComponent();
|
|
4692
|
-
var
|
|
4760
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
4693
4761
|
var getTruncateStyles = (mode = "truncate") => {
|
|
4694
4762
|
switch (mode) {
|
|
4695
4763
|
case "truncate":
|
|
@@ -4717,10 +4785,10 @@ var PageHeader = ({
|
|
|
4717
4785
|
forceMobileView,
|
|
4718
4786
|
sx = []
|
|
4719
4787
|
}) => {
|
|
4720
|
-
const theme = (0,
|
|
4721
|
-
const mediaIsMobile = (0,
|
|
4788
|
+
const theme = (0, import_material26.useTheme)();
|
|
4789
|
+
const mediaIsMobile = (0, import_material26.useMediaQuery)(theme.breakpoints.down(mobileBreakpoint));
|
|
4722
4790
|
const isMobile = forceMobileView ?? mediaIsMobile;
|
|
4723
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
4791
|
+
const [anchorEl, setAnchorEl] = (0, import_react30.useState)(null);
|
|
4724
4792
|
const isMenuOpen = Boolean(anchorEl);
|
|
4725
4793
|
const handleOpenMenu = (e) => setAnchorEl(e.currentTarget);
|
|
4726
4794
|
const handleCloseMenu = () => setAnchorEl(null);
|
|
@@ -4730,8 +4798,8 @@ var PageHeader = ({
|
|
|
4730
4798
|
};
|
|
4731
4799
|
const hasSecondaryActions = secondaryActions.length > 0;
|
|
4732
4800
|
const hasActions = Boolean(primaryAction || hasSecondaryActions || refreshAction);
|
|
4733
|
-
return /* @__PURE__ */ (0,
|
|
4734
|
-
|
|
4801
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
4802
|
+
import_material26.Box,
|
|
4735
4803
|
{
|
|
4736
4804
|
sx: [
|
|
4737
4805
|
{
|
|
@@ -4749,9 +4817,9 @@ var PageHeader = ({
|
|
|
4749
4817
|
...Array.isArray(sx) ? sx : [sx]
|
|
4750
4818
|
],
|
|
4751
4819
|
children: [
|
|
4752
|
-
/* @__PURE__ */ (0,
|
|
4753
|
-
icon && /* @__PURE__ */ (0,
|
|
4754
|
-
|
|
4820
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_material26.Box, { sx: { display: "flex", alignItems: "center", gap: { xs: 1.5, sm: 2 }, minWidth: 0, flex: 1 }, children: [
|
|
4821
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4822
|
+
import_material26.Box,
|
|
4755
4823
|
{
|
|
4756
4824
|
sx: {
|
|
4757
4825
|
display: "flex",
|
|
@@ -4770,10 +4838,10 @@ var PageHeader = ({
|
|
|
4770
4838
|
children: icon
|
|
4771
4839
|
}
|
|
4772
4840
|
),
|
|
4773
|
-
/* @__PURE__ */ (0,
|
|
4774
|
-
tag && /* @__PURE__ */ (0,
|
|
4775
|
-
/* @__PURE__ */ (0,
|
|
4776
|
-
|
|
4841
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_material26.Box, { sx: { minWidth: 0, flex: 1 }, children: [
|
|
4842
|
+
tag && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Box, { sx: { mb: 0.5, display: "flex", alignItems: "center" }, children: tag }),
|
|
4843
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Tooltip, { title: titleTruncateMode === "truncate" ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { children: title }) : void 0, arrow: true, placement: "top", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4844
|
+
import_material26.Typography,
|
|
4777
4845
|
{
|
|
4778
4846
|
variant: "h5",
|
|
4779
4847
|
component: "h1",
|
|
@@ -4784,11 +4852,11 @@ var PageHeader = ({
|
|
|
4784
4852
|
lineHeight: 1.3,
|
|
4785
4853
|
...getTruncateStyles(titleTruncateMode)
|
|
4786
4854
|
},
|
|
4787
|
-
children: /* @__PURE__ */ (0,
|
|
4855
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { children: title })
|
|
4788
4856
|
}
|
|
4789
4857
|
) }),
|
|
4790
|
-
subtitle && /* @__PURE__ */ (0,
|
|
4791
|
-
|
|
4858
|
+
subtitle && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Tooltip, { title: subtitleTruncateMode === "truncate" ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { children: subtitle }) : void 0, arrow: true, placement: "top", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4859
|
+
import_material26.Typography,
|
|
4792
4860
|
{
|
|
4793
4861
|
variant: "body2",
|
|
4794
4862
|
sx: {
|
|
@@ -4798,24 +4866,24 @@ var PageHeader = ({
|
|
|
4798
4866
|
lineHeight: 1.4,
|
|
4799
4867
|
...getTruncateStyles(subtitleTruncateMode)
|
|
4800
4868
|
},
|
|
4801
|
-
children: /* @__PURE__ */ (0,
|
|
4869
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { children: subtitle })
|
|
4802
4870
|
}
|
|
4803
4871
|
) })
|
|
4804
4872
|
] })
|
|
4805
4873
|
] }),
|
|
4806
|
-
hasActions && /* @__PURE__ */ (0,
|
|
4874
|
+
hasActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Box, { sx: { flexShrink: 0, display: "flex", alignItems: "center", gap: 1 }, children: isMobile ? (
|
|
4807
4875
|
/* MOBILE: IconButton with MoreVertIcon showing ALL actions inside Menu */
|
|
4808
|
-
/* @__PURE__ */ (0,
|
|
4809
|
-
/* @__PURE__ */ (0,
|
|
4810
|
-
|
|
4876
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
|
|
4877
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslatableTooltipComponent, { title: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { overrideNamespace: overrideNamespace || "form_components", children: "Actions" }), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4878
|
+
import_material26.IconButton,
|
|
4811
4879
|
{
|
|
4812
4880
|
onClick: handleOpenMenu,
|
|
4813
4881
|
sx: { border: "1px solid", borderColor: "divider", borderRadius: 2, p: 1 },
|
|
4814
|
-
children: /* @__PURE__ */ (0,
|
|
4882
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_MoreVert.default, {})
|
|
4815
4883
|
}
|
|
4816
4884
|
) }),
|
|
4817
|
-
/* @__PURE__ */ (0,
|
|
4818
|
-
|
|
4885
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
4886
|
+
import_material26.Menu,
|
|
4819
4887
|
{
|
|
4820
4888
|
anchorEl,
|
|
4821
4889
|
open: isMenuOpen,
|
|
@@ -4824,9 +4892,9 @@ var PageHeader = ({
|
|
|
4824
4892
|
anchorOrigin: { horizontal: "right", vertical: "bottom" },
|
|
4825
4893
|
slotProps: { paper: { elevation: 4, sx: { minWidth: 200, borderRadius: 2, mt: 1, p: 0.5 } } },
|
|
4826
4894
|
children: [
|
|
4827
|
-
primaryAction && /* @__PURE__ */ (0,
|
|
4828
|
-
/* @__PURE__ */ (0,
|
|
4829
|
-
|
|
4895
|
+
primaryAction && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
|
|
4896
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
4897
|
+
import_material26.MenuItem,
|
|
4830
4898
|
{
|
|
4831
4899
|
onClick: () => handleMenuAction(primaryAction.onClick),
|
|
4832
4900
|
disabled: primaryAction.disabled,
|
|
@@ -4839,32 +4907,32 @@ var PageHeader = ({
|
|
|
4839
4907
|
px: 1.5
|
|
4840
4908
|
},
|
|
4841
4909
|
children: [
|
|
4842
|
-
primaryAction.icon && /* @__PURE__ */ (0,
|
|
4843
|
-
/* @__PURE__ */ (0,
|
|
4910
|
+
primaryAction.icon && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemIcon, { sx: { color: "inherit", minWidth: 32 }, children: primaryAction.icon }),
|
|
4911
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemText, { primary: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { children: primaryAction.label }), slotProps: { primary: { sx: { fontWeight: 700, fontSize: "0.9rem" } } } })
|
|
4844
4912
|
]
|
|
4845
4913
|
}
|
|
4846
4914
|
),
|
|
4847
|
-
hasSecondaryActions && /* @__PURE__ */ (0,
|
|
4915
|
+
hasSecondaryActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Divider, { sx: { my: 0.75 } })
|
|
4848
4916
|
] }),
|
|
4849
|
-
secondaryActions.map((action) => /* @__PURE__ */ (0,
|
|
4850
|
-
action.divider && /* @__PURE__ */ (0,
|
|
4851
|
-
/* @__PURE__ */ (0,
|
|
4852
|
-
|
|
4917
|
+
secondaryActions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_react30.default.Fragment, { children: [
|
|
4918
|
+
action.divider && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Divider, { sx: { my: 0.5 } }),
|
|
4919
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
4920
|
+
import_material26.MenuItem,
|
|
4853
4921
|
{
|
|
4854
4922
|
onClick: () => handleMenuAction(action.onClick),
|
|
4855
4923
|
disabled: action.disabled,
|
|
4856
4924
|
sx: { borderRadius: 1, py: 1, px: 1.5, color: action.color ? `${action.color}.main` : "text.primary" },
|
|
4857
4925
|
children: [
|
|
4858
|
-
action.icon && /* @__PURE__ */ (0,
|
|
4859
|
-
/* @__PURE__ */ (0,
|
|
4926
|
+
action.icon && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemIcon, { sx: { color: action.color ? `${action.color}.main` : "text.secondary", minWidth: 32 }, children: action.icon }),
|
|
4927
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemText, { primary: action.label, slotProps: { primary: { sx: { fontSize: "0.875rem" } } } })
|
|
4860
4928
|
]
|
|
4861
4929
|
}
|
|
4862
4930
|
)
|
|
4863
4931
|
] }, action.id)),
|
|
4864
|
-
refreshAction && /* @__PURE__ */ (0,
|
|
4865
|
-
/* @__PURE__ */ (0,
|
|
4866
|
-
/* @__PURE__ */ (0,
|
|
4867
|
-
|
|
4932
|
+
refreshAction && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
|
|
4933
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Divider, { sx: { my: 0.5 } }),
|
|
4934
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
4935
|
+
import_material26.MenuItem,
|
|
4868
4936
|
{
|
|
4869
4937
|
onClick: () => handleMenuAction(refreshAction.onClick),
|
|
4870
4938
|
disabled: refreshAction.disabled,
|
|
@@ -4876,8 +4944,8 @@ var PageHeader = ({
|
|
|
4876
4944
|
px: 1.5
|
|
4877
4945
|
},
|
|
4878
4946
|
children: [
|
|
4879
|
-
/* @__PURE__ */ (0,
|
|
4880
|
-
/* @__PURE__ */ (0,
|
|
4947
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemIcon, { sx: { color: "inherit", minWidth: 32 }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_icons_material3.Refresh, {}) }),
|
|
4948
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemText, { primary: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { overrideNamespace: overrideNamespace || "form_components", children: "Refresh" }), slotProps: { primary: { sx: { fontWeight: 700, fontSize: "0.9rem" } } } })
|
|
4881
4949
|
]
|
|
4882
4950
|
}
|
|
4883
4951
|
)
|
|
@@ -4888,10 +4956,10 @@ var PageHeader = ({
|
|
|
4888
4956
|
] })
|
|
4889
4957
|
) : (
|
|
4890
4958
|
/* DESKTOP: Primary Action Button + Secondary Actions Dropdown Button */
|
|
4891
|
-
/* @__PURE__ */ (0,
|
|
4892
|
-
(primaryAction || refreshAction) && /* @__PURE__ */ (0,
|
|
4893
|
-
primaryAction && /* @__PURE__ */ (0,
|
|
4894
|
-
|
|
4959
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_material26.Box, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
|
|
4960
|
+
(primaryAction || refreshAction) && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_material26.Stack, { direction: "row", spacing: 2, children: [
|
|
4961
|
+
primaryAction && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4962
|
+
import_material26.Button,
|
|
4895
4963
|
{
|
|
4896
4964
|
variant: primaryAction.variant || "contained",
|
|
4897
4965
|
color: primaryAction.color || "primary",
|
|
@@ -4899,32 +4967,32 @@ var PageHeader = ({
|
|
|
4899
4967
|
disabled: primaryAction.disabled,
|
|
4900
4968
|
startIcon: primaryAction.icon,
|
|
4901
4969
|
sx: { borderRadius: 2, textTransform: "none", fontWeight: 600, px: 2, py: 0.85 },
|
|
4902
|
-
children: /* @__PURE__ */ (0,
|
|
4970
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { children: primaryAction.label })
|
|
4903
4971
|
}
|
|
4904
4972
|
),
|
|
4905
|
-
refreshAction && /* @__PURE__ */ (0,
|
|
4906
|
-
|
|
4973
|
+
refreshAction && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslatableTooltipComponent, { title: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(TranslateText, { overrideNamespace: overrideNamespace || "form_components", children: "Refresh" }), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4974
|
+
import_material26.Fab,
|
|
4907
4975
|
{
|
|
4908
4976
|
color: "default",
|
|
4909
4977
|
onClick: refreshAction.onClick,
|
|
4910
4978
|
disabled: refreshAction.disabled,
|
|
4911
4979
|
"aria-label": "refresh",
|
|
4912
4980
|
size: "small",
|
|
4913
|
-
children: /* @__PURE__ */ (0,
|
|
4981
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_icons_material3.Refresh, {})
|
|
4914
4982
|
}
|
|
4915
4983
|
) })
|
|
4916
4984
|
] }),
|
|
4917
|
-
hasSecondaryActions && /* @__PURE__ */ (0,
|
|
4918
|
-
/* @__PURE__ */ (0,
|
|
4919
|
-
|
|
4985
|
+
hasSecondaryActions && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
|
|
4986
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4987
|
+
import_material26.IconButton,
|
|
4920
4988
|
{
|
|
4921
4989
|
onClick: handleOpenMenu,
|
|
4922
4990
|
sx: { border: "1px solid", borderColor: "divider", borderRadius: 2, p: 1 },
|
|
4923
|
-
children: /* @__PURE__ */ (0,
|
|
4991
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_KeyboardArrowDown.default, {})
|
|
4924
4992
|
}
|
|
4925
4993
|
),
|
|
4926
|
-
/* @__PURE__ */ (0,
|
|
4927
|
-
|
|
4994
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4995
|
+
import_material26.Menu,
|
|
4928
4996
|
{
|
|
4929
4997
|
anchorEl,
|
|
4930
4998
|
open: isMenuOpen,
|
|
@@ -4932,17 +5000,17 @@ var PageHeader = ({
|
|
|
4932
5000
|
transformOrigin: { horizontal: "right", vertical: "top" },
|
|
4933
5001
|
anchorOrigin: { horizontal: "right", vertical: "bottom" },
|
|
4934
5002
|
slotProps: { paper: { elevation: 4, sx: { minWidth: 180, borderRadius: 2, mt: 1, p: 0.5 } } },
|
|
4935
|
-
children: secondaryActions.map((action) => /* @__PURE__ */ (0,
|
|
4936
|
-
action.divider && /* @__PURE__ */ (0,
|
|
4937
|
-
/* @__PURE__ */ (0,
|
|
4938
|
-
|
|
5003
|
+
children: secondaryActions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_react30.default.Fragment, { children: [
|
|
5004
|
+
action.divider && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.Divider, { sx: { my: 0.5 } }),
|
|
5005
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
5006
|
+
import_material26.MenuItem,
|
|
4939
5007
|
{
|
|
4940
5008
|
onClick: () => handleMenuAction(action.onClick),
|
|
4941
5009
|
disabled: action.disabled,
|
|
4942
5010
|
sx: { borderRadius: 1, py: 0.85, color: action.color ? `${action.color}.main` : "text.primary" },
|
|
4943
5011
|
children: [
|
|
4944
|
-
action.icon && /* @__PURE__ */ (0,
|
|
4945
|
-
/* @__PURE__ */ (0,
|
|
5012
|
+
action.icon && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemIcon, { sx: { color: action.color ? `${action.color}.main` : "text.secondary", minWidth: 32 }, children: action.icon }),
|
|
5013
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_material26.ListItemText, { primary: action.label, slotProps: { primary: { sx: { fontSize: "0.875rem" } } } })
|
|
4946
5014
|
]
|
|
4947
5015
|
}
|
|
4948
5016
|
)
|
|
@@ -4952,14 +5020,14 @@ var PageHeader = ({
|
|
|
4952
5020
|
] })
|
|
4953
5021
|
] })
|
|
4954
5022
|
) }),
|
|
4955
|
-
customFragment && /* @__PURE__ */ (0,
|
|
5023
|
+
customFragment && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment, { children: customFragment })
|
|
4956
5024
|
]
|
|
4957
5025
|
}
|
|
4958
5026
|
);
|
|
4959
5027
|
};
|
|
4960
5028
|
var PageContainer = ({ children }) => {
|
|
4961
|
-
return /* @__PURE__ */ (0,
|
|
4962
|
-
|
|
5029
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
5030
|
+
import_material26.Box,
|
|
4963
5031
|
{
|
|
4964
5032
|
sx: {
|
|
4965
5033
|
width: "100%",
|
|
@@ -4975,8 +5043,8 @@ var PageComponent = ({
|
|
|
4975
5043
|
header,
|
|
4976
5044
|
children
|
|
4977
5045
|
}) => {
|
|
4978
|
-
return /* @__PURE__ */ (0,
|
|
4979
|
-
|
|
5046
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
5047
|
+
import_material26.Box,
|
|
4980
5048
|
{
|
|
4981
5049
|
sx: {
|
|
4982
5050
|
//pt: 2,
|
|
@@ -4985,8 +5053,8 @@ var PageComponent = ({
|
|
|
4985
5053
|
overflowY: "auto",
|
|
4986
5054
|
boxSizing: "border-box"
|
|
4987
5055
|
},
|
|
4988
|
-
children: /* @__PURE__ */ (0,
|
|
4989
|
-
header && /* @__PURE__ */ (0,
|
|
5056
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(PageContainer, { children: [
|
|
5057
|
+
header && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(PageHeader, { ...header }),
|
|
4990
5058
|
children
|
|
4991
5059
|
] })
|
|
4992
5060
|
}
|
|
@@ -4994,9 +5062,9 @@ var PageComponent = ({
|
|
|
4994
5062
|
};
|
|
4995
5063
|
|
|
4996
5064
|
// src/UI/components/layout/FilterContainerComponent.tsx
|
|
4997
|
-
var
|
|
4998
|
-
var
|
|
4999
|
-
var
|
|
5065
|
+
var import_react31 = __toESM(require("react"));
|
|
5066
|
+
var import_material27 = require("@mui/material");
|
|
5067
|
+
var import_jsx_runtime37 = (
|
|
5000
5068
|
/* Автоматическая обертка каждого дочернего элемента в Grid size */
|
|
5001
5069
|
require("react/jsx-runtime")
|
|
5002
5070
|
);
|
|
@@ -5005,26 +5073,26 @@ var FilterContainerComponent = ({
|
|
|
5005
5073
|
children,
|
|
5006
5074
|
sx
|
|
5007
5075
|
}) => {
|
|
5008
|
-
return /* @__PURE__ */ (0,
|
|
5009
|
-
|
|
5076
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
5077
|
+
import_material27.Paper,
|
|
5010
5078
|
{
|
|
5011
5079
|
variant: "outlined",
|
|
5012
5080
|
sx: [
|
|
5013
5081
|
{ p: 2, mb: 3 },
|
|
5014
5082
|
...Array.isArray(sx) ? sx : [sx]
|
|
5015
5083
|
],
|
|
5016
|
-
children: /* @__PURE__ */ (0,
|
|
5084
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_material27.Grid, { container: true, spacing: 2, sx: { alignItems: "center" }, children: sections ? sections.map((sec, idx) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react31.default.Fragment, { children: sec }, idx)) : children })
|
|
5017
5085
|
}
|
|
5018
5086
|
);
|
|
5019
5087
|
};
|
|
5020
5088
|
|
|
5021
5089
|
// src/UI/components/layout/PageLinkComponent.tsx
|
|
5022
5090
|
var import_icons_material4 = require("@mui/icons-material");
|
|
5023
|
-
var
|
|
5024
|
-
var
|
|
5091
|
+
var import_material28 = require("@mui/material");
|
|
5092
|
+
var import_react32 = __toESM(require("react"));
|
|
5025
5093
|
var import_react_router_dom = require("react-router-dom");
|
|
5026
5094
|
init_context();
|
|
5027
|
-
var
|
|
5095
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
5028
5096
|
var PageLinkComponent = ({
|
|
5029
5097
|
overrideNamespace,
|
|
5030
5098
|
title,
|
|
@@ -5037,8 +5105,8 @@ var PageLinkComponent = ({
|
|
|
5037
5105
|
bgcolor
|
|
5038
5106
|
}) => {
|
|
5039
5107
|
const navigate = (0, import_react_router_dom.useNavigate)();
|
|
5040
|
-
return /* @__PURE__ */ (0,
|
|
5041
|
-
|
|
5108
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
5109
|
+
import_material28.Card,
|
|
5042
5110
|
{
|
|
5043
5111
|
sx: (theme) => ({
|
|
5044
5112
|
height: "100%",
|
|
@@ -5051,21 +5119,21 @@ var PageLinkComponent = ({
|
|
|
5051
5119
|
) : typeof bgcolor === "function" ? theme.palette.getContrastText(bgcolor(theme)) : theme.palette.getContrastText(bgcolor) : "text.primary"
|
|
5052
5120
|
}),
|
|
5053
5121
|
children: [
|
|
5054
|
-
/* @__PURE__ */ (0,
|
|
5055
|
-
|
|
5122
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
5123
|
+
import_material28.CardHeader,
|
|
5056
5124
|
{
|
|
5057
|
-
avatar: icon ?
|
|
5125
|
+
avatar: icon ? import_react32.default.cloneElement(icon, {
|
|
5058
5126
|
sx: { color: bgcolor ? "inherit" : "primary", ...icon.props.sx }
|
|
5059
|
-
}) : /* @__PURE__ */ (0,
|
|
5060
|
-
title: /* @__PURE__ */ (0,
|
|
5061
|
-
subheader: subheader && /* @__PURE__ */ (0,
|
|
5127
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_icons_material4.Settings, { color: bgcolor ? "inherit" : "primary" }),
|
|
5128
|
+
title: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.Typography, { variant: "h6", component: "div", color: "inherit", children: typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TranslateText, { overrideNamespace, children: title }) : title }),
|
|
5129
|
+
subheader: subheader && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.Typography, { variant: "body2", sx: { opacity: 0.8, color: "inherit" }, children: typeof subheader === "string" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TranslateText, { overrideNamespace, children: subheader }) : subheader })
|
|
5062
5130
|
}
|
|
5063
5131
|
),
|
|
5064
|
-
/* @__PURE__ */ (0,
|
|
5065
|
-
/* @__PURE__ */ (0,
|
|
5066
|
-
/* @__PURE__ */ (0,
|
|
5067
|
-
links && links.length > 0 && /* @__PURE__ */ (0,
|
|
5068
|
-
|
|
5132
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.Divider, { sx: { borderColor: "inherit", opacity: 0.2 } }),
|
|
5133
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_material28.CardContent, { sx: { flexGrow: 1 }, children: [
|
|
5134
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.Typography, { variant: "body2", sx: { opacity: 0.85, color: "inherit" }, children: typeof description === "string" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TranslateText, { overrideNamespace, children: description }) : description }),
|
|
5135
|
+
links && links.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.List, { dense: true, disablePadding: true, children: links.filter((f) => !f.hidden).map((link, index) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
5136
|
+
import_material28.ListItem,
|
|
5069
5137
|
{
|
|
5070
5138
|
disablePadding: true,
|
|
5071
5139
|
sx: {
|
|
@@ -5076,18 +5144,18 @@ var PageLinkComponent = ({
|
|
|
5076
5144
|
}
|
|
5077
5145
|
},
|
|
5078
5146
|
children: [
|
|
5079
|
-
/* @__PURE__ */ (0,
|
|
5080
|
-
|
|
5147
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
5148
|
+
import_material28.ListItemIcon,
|
|
5081
5149
|
{
|
|
5082
5150
|
sx: { minWidth: 30, cursor: "pointer", color: "inherit" },
|
|
5083
5151
|
onClick: () => {
|
|
5084
5152
|
if (link?.href) navigate(link.href);
|
|
5085
5153
|
},
|
|
5086
|
-
children: /* @__PURE__ */ (0,
|
|
5154
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_icons_material4.ArrowRight, { fontSize: "small", color: "inherit" })
|
|
5087
5155
|
}
|
|
5088
5156
|
),
|
|
5089
|
-
/* @__PURE__ */ (0,
|
|
5090
|
-
|
|
5157
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.ListItemText, { children: link.onClick ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
5158
|
+
import_material28.Button,
|
|
5091
5159
|
{
|
|
5092
5160
|
size: "small",
|
|
5093
5161
|
variant: "text",
|
|
@@ -5110,10 +5178,10 @@ var PageLinkComponent = ({
|
|
|
5110
5178
|
// Эффект подчеркивания, как у ссылки
|
|
5111
5179
|
}
|
|
5112
5180
|
},
|
|
5113
|
-
children: typeof link.text === "string" ? /* @__PURE__ */ (0,
|
|
5181
|
+
children: typeof link.text === "string" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TranslateText, { overrideNamespace, children: link.text }) : link.text
|
|
5114
5182
|
}
|
|
5115
|
-
) : link.href ? /* @__PURE__ */ (0,
|
|
5116
|
-
|
|
5183
|
+
) : link.href ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
5184
|
+
import_material28.Link,
|
|
5117
5185
|
{
|
|
5118
5186
|
component: import_react_router_dom.Link,
|
|
5119
5187
|
to: link.href,
|
|
@@ -5130,15 +5198,15 @@ var PageLinkComponent = ({
|
|
|
5130
5198
|
backgroundColor: "transparent"
|
|
5131
5199
|
}
|
|
5132
5200
|
},
|
|
5133
|
-
children: typeof link.text === "string" ? /* @__PURE__ */ (0,
|
|
5201
|
+
children: typeof link.text === "string" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TranslateText, { overrideNamespace, children: link.text }) : link.text
|
|
5134
5202
|
}
|
|
5135
|
-
) : /* @__PURE__ */ (0,
|
|
5203
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.Typography, { variant: "body2", sx: { fontWeight: 500, color: "inherit" }, children: typeof link.text === "string" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TranslateText, { overrideNamespace, children: link.text }) : link.text }) })
|
|
5136
5204
|
]
|
|
5137
5205
|
},
|
|
5138
5206
|
index
|
|
5139
5207
|
)) })
|
|
5140
5208
|
] }),
|
|
5141
|
-
actionButtonText && onActionButtonClick && /* @__PURE__ */ (0,
|
|
5209
|
+
actionButtonText && onActionButtonClick && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.CardActions, { sx: { justifyContent: "flex-end", padding: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_material28.Button, { size: "small", variant: "contained", onClick: onActionButtonClick, children: typeof actionButtonText === "string" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TranslateText, { overrideNamespace, children: actionButtonText }) : actionButtonText }) })
|
|
5142
5210
|
]
|
|
5143
5211
|
}
|
|
5144
5212
|
);
|
|
@@ -5146,13 +5214,13 @@ var PageLinkComponent = ({
|
|
|
5146
5214
|
|
|
5147
5215
|
// src/UI/components/layout/CollapsedContainerComponent.tsx
|
|
5148
5216
|
var import_icons_material5 = require("@mui/icons-material");
|
|
5149
|
-
var
|
|
5150
|
-
var
|
|
5217
|
+
var import_material29 = require("@mui/material");
|
|
5218
|
+
var import_react33 = require("react");
|
|
5151
5219
|
init_context();
|
|
5152
|
-
var
|
|
5153
|
-
var ExpandMore = (0,
|
|
5220
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
5221
|
+
var ExpandMore = (0, import_material29.styled)((props) => {
|
|
5154
5222
|
const { expand, ...other } = props;
|
|
5155
|
-
return /* @__PURE__ */ (0,
|
|
5223
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material29.IconButton, { size: "small", ...other, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_icons_material5.ExpandMore, {}) });
|
|
5156
5224
|
})(({ theme, expand }) => ({
|
|
5157
5225
|
transform: !expand ? "rotate(0deg)" : "rotate(180deg)",
|
|
5158
5226
|
transition: theme.transitions.create("transform", {
|
|
@@ -5167,14 +5235,14 @@ var ExpandMore = (0, import_material28.styled)((props) => {
|
|
|
5167
5235
|
}));
|
|
5168
5236
|
var CollapsedContainerComponent = (props) => {
|
|
5169
5237
|
const { displayState } = useAppTheme();
|
|
5170
|
-
const [expanded, setExpanded] = (0,
|
|
5238
|
+
const [expanded, setExpanded] = (0, import_react33.useState)(props.expanded === void 0 ? false : props.expanded);
|
|
5171
5239
|
const handleExpandClick = () => {
|
|
5172
5240
|
setExpanded(!expanded);
|
|
5173
5241
|
props.onExpanded && props.onExpanded(!expanded);
|
|
5174
5242
|
};
|
|
5175
|
-
return /* @__PURE__ */ (0,
|
|
5176
|
-
/* @__PURE__ */ (0,
|
|
5177
|
-
|
|
5243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_material29.Card, { sx: { width: "100%", overflow: "hidden", mb: 2, boxShadow: displayState.isMobile ? "none" : props.disableShadow ? "none" : "0 20px 25px -5px rgb(0 0 0 / 0.1)", borderRadius: displayState.isMobile ? 0 : 1 }, children: [
|
|
5244
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
5245
|
+
import_material29.Box,
|
|
5178
5246
|
{
|
|
5179
5247
|
onClick: () => handleExpandClick(),
|
|
5180
5248
|
sx: {
|
|
@@ -5185,16 +5253,16 @@ var CollapsedContainerComponent = (props) => {
|
|
|
5185
5253
|
pr: 2
|
|
5186
5254
|
},
|
|
5187
5255
|
children: [
|
|
5188
|
-
/* @__PURE__ */ (0,
|
|
5189
|
-
|
|
5256
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
5257
|
+
import_material29.CardHeader,
|
|
5190
5258
|
{
|
|
5191
5259
|
sx: { flexGrow: 1 },
|
|
5192
|
-
avatar: /* @__PURE__ */ (0,
|
|
5193
|
-
title: typeof props.title === "string" ? /* @__PURE__ */ (0,
|
|
5194
|
-
subheader: typeof props.subtitle === "string" ? /* @__PURE__ */ (0,
|
|
5260
|
+
avatar: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material29.Avatar, { sx: { bgcolor: "primary.main" }, children: props.icon }),
|
|
5261
|
+
title: typeof props.title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material29.Typography, { variant: "subtitle1", sx: { fontWeight: "700" }, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(TranslateText, { overrideNamespace: props.overrideNamespace, children: props.title }) }) : props.title,
|
|
5262
|
+
subheader: typeof props.subtitle === "string" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(TranslateText, { overrideNamespace: props.overrideNamespace, children: props.subtitle }) : props.subtitle
|
|
5195
5263
|
}
|
|
5196
5264
|
),
|
|
5197
|
-
/* @__PURE__ */ (0,
|
|
5265
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material29.Tooltip, { title: expanded ? "Show Less" : "Show More", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material29.Box, { sx: { ml: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
5198
5266
|
ExpandMore,
|
|
5199
5267
|
{
|
|
5200
5268
|
expand: expanded,
|
|
@@ -5205,13 +5273,363 @@ var CollapsedContainerComponent = (props) => {
|
|
|
5205
5273
|
]
|
|
5206
5274
|
}
|
|
5207
5275
|
),
|
|
5208
|
-
/* @__PURE__ */ (0,
|
|
5209
|
-
/* @__PURE__ */ (0,
|
|
5210
|
-
/* @__PURE__ */ (0,
|
|
5276
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_material29.Collapse, { in: expanded, timeout: "auto", children: [
|
|
5277
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material29.Divider, { variant: "middle" }),
|
|
5278
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_material29.CardContent, { children: props.children })
|
|
5211
5279
|
] })
|
|
5212
5280
|
] });
|
|
5213
5281
|
};
|
|
5214
5282
|
|
|
5283
|
+
// src/i18n/LanguageSelector.tsx
|
|
5284
|
+
var import_react34 = require("react");
|
|
5285
|
+
var import_react_i18next6 = require("react-i18next");
|
|
5286
|
+
var import_material30 = require("@mui/material");
|
|
5287
|
+
init_LocalizationProvider();
|
|
5288
|
+
init_UserSettingsProvider();
|
|
5289
|
+
init_SupabaseProvider();
|
|
5290
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
5291
|
+
var LanguageSelector = () => {
|
|
5292
|
+
const supabase = useSupabase();
|
|
5293
|
+
const { i18n: i18n2 } = (0, import_react_i18next6.useTranslation)();
|
|
5294
|
+
const [languages, setLanguages] = (0, import_react34.useState)([]);
|
|
5295
|
+
const [loading, setLoading] = (0, import_react34.useState)(true);
|
|
5296
|
+
const { changeLanguage } = useLocalization();
|
|
5297
|
+
const { settings: userSettings, setLanguage } = useUserSettings();
|
|
5298
|
+
const [anchorEl, setAnchorEl] = (0, import_react34.useState)(null);
|
|
5299
|
+
const open = Boolean(anchorEl);
|
|
5300
|
+
(0, import_react34.useEffect)(() => {
|
|
5301
|
+
const fetchLanguages = async () => {
|
|
5302
|
+
try {
|
|
5303
|
+
const { data, error } = await supabase.from("languages").select("code, name, svg_flag").eq("enabled", true);
|
|
5304
|
+
if (error) throw error;
|
|
5305
|
+
setLanguages(data || []);
|
|
5306
|
+
if (userSettings.language) changeLanguage(userSettings.language);
|
|
5307
|
+
} catch (err) {
|
|
5308
|
+
console.error("\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u043C\u043E\u0432:", err);
|
|
5309
|
+
} finally {
|
|
5310
|
+
setLoading(false);
|
|
5311
|
+
}
|
|
5312
|
+
};
|
|
5313
|
+
fetchLanguages();
|
|
5314
|
+
}, []);
|
|
5315
|
+
const handleClick = (event) => {
|
|
5316
|
+
setAnchorEl(event.currentTarget);
|
|
5317
|
+
};
|
|
5318
|
+
const handleClose = () => {
|
|
5319
|
+
setAnchorEl(null);
|
|
5320
|
+
};
|
|
5321
|
+
const handleSelectLanguage = (langCode) => {
|
|
5322
|
+
changeLanguage(langCode);
|
|
5323
|
+
setLanguage(langCode);
|
|
5324
|
+
handleClose();
|
|
5325
|
+
};
|
|
5326
|
+
if (loading) {
|
|
5327
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_material30.CircularProgress, { size: 20, color: "inherit", sx: { mx: 1 } });
|
|
5328
|
+
}
|
|
5329
|
+
const rawCurrentLang = i18n2.language || "uk";
|
|
5330
|
+
const currentLangCode = rawCurrentLang.split("-")[0];
|
|
5331
|
+
const currentLang = languages.find((l) => l.code === currentLangCode) || languages[0];
|
|
5332
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
|
|
5333
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_material30.Tooltip, { title: currentLang ? currentLang.name : "\u041C\u043E\u0432\u0430", arrow: true, placement: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5334
|
+
import_material30.IconButton,
|
|
5335
|
+
{
|
|
5336
|
+
onClick: handleClick,
|
|
5337
|
+
size: "small",
|
|
5338
|
+
"aria-controls": open ? "language-menu" : void 0,
|
|
5339
|
+
"aria-haspopup": "true",
|
|
5340
|
+
"aria-expanded": open ? "true" : void 0,
|
|
5341
|
+
sx: {
|
|
5342
|
+
p: 1,
|
|
5343
|
+
borderRadius: 2,
|
|
5344
|
+
transition: "background-color 0.2s",
|
|
5345
|
+
"&:hover": {
|
|
5346
|
+
backgroundColor: "action.hover"
|
|
5347
|
+
}
|
|
5348
|
+
},
|
|
5349
|
+
children: currentLang?.svg_flag && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5350
|
+
import_material30.Box,
|
|
5351
|
+
{
|
|
5352
|
+
sx: {
|
|
5353
|
+
width: 24,
|
|
5354
|
+
height: 16,
|
|
5355
|
+
borderRadius: "3px",
|
|
5356
|
+
overflow: "hidden",
|
|
5357
|
+
flexShrink: 0,
|
|
5358
|
+
boxShadow: "0 0 2px rgba(0,0,0,0.3)",
|
|
5359
|
+
display: "flex",
|
|
5360
|
+
alignItems: "center",
|
|
5361
|
+
justifyContent: "center",
|
|
5362
|
+
"& svg": { width: "100%", height: "100%", display: "block", objectFit: "cover" }
|
|
5363
|
+
},
|
|
5364
|
+
dangerouslySetInnerHTML: { __html: currentLang.svg_flag }
|
|
5365
|
+
}
|
|
5366
|
+
)
|
|
5367
|
+
}
|
|
5368
|
+
) }),
|
|
5369
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5370
|
+
import_material30.Menu,
|
|
5371
|
+
{
|
|
5372
|
+
id: "language-menu",
|
|
5373
|
+
anchorEl,
|
|
5374
|
+
open,
|
|
5375
|
+
onClose: handleClose,
|
|
5376
|
+
slotProps: {
|
|
5377
|
+
paper: {
|
|
5378
|
+
elevation: 3,
|
|
5379
|
+
sx: {
|
|
5380
|
+
mt: 1,
|
|
5381
|
+
minWidth: 150,
|
|
5382
|
+
borderRadius: 2
|
|
5383
|
+
}
|
|
5384
|
+
}
|
|
5385
|
+
},
|
|
5386
|
+
transformOrigin: { horizontal: "right", vertical: "top" },
|
|
5387
|
+
anchorOrigin: { horizontal: "right", vertical: "bottom" },
|
|
5388
|
+
children: languages.map((lang) => {
|
|
5389
|
+
const isSelected = lang.code === currentLangCode;
|
|
5390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
5391
|
+
import_material30.MenuItem,
|
|
5392
|
+
{
|
|
5393
|
+
selected: isSelected,
|
|
5394
|
+
onClick: () => handleSelectLanguage(lang.code),
|
|
5395
|
+
sx: {
|
|
5396
|
+
display: "flex",
|
|
5397
|
+
alignItems: "center",
|
|
5398
|
+
gap: 1.5,
|
|
5399
|
+
py: 1,
|
|
5400
|
+
px: 2
|
|
5401
|
+
},
|
|
5402
|
+
children: [
|
|
5403
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5404
|
+
import_material30.Box,
|
|
5405
|
+
{
|
|
5406
|
+
sx: {
|
|
5407
|
+
width: 22,
|
|
5408
|
+
height: 15,
|
|
5409
|
+
borderRadius: "2px",
|
|
5410
|
+
overflow: "hidden",
|
|
5411
|
+
flexShrink: 0,
|
|
5412
|
+
boxShadow: "0 0 1px rgba(0,0,0,0.4)",
|
|
5413
|
+
"& svg": { width: "100%", height: "100%", display: "block" }
|
|
5414
|
+
},
|
|
5415
|
+
dangerouslySetInnerHTML: { __html: lang.svg_flag }
|
|
5416
|
+
}
|
|
5417
|
+
),
|
|
5418
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_material30.Typography, { variant: "body2", sx: { fontWeight: isSelected ? 600 : 400 }, children: lang.name })
|
|
5419
|
+
]
|
|
5420
|
+
},
|
|
5421
|
+
lang.code
|
|
5422
|
+
);
|
|
5423
|
+
})
|
|
5424
|
+
}
|
|
5425
|
+
)
|
|
5426
|
+
] });
|
|
5427
|
+
};
|
|
5428
|
+
var PublicLanguageSelector = () => {
|
|
5429
|
+
const supabase = useSupabase();
|
|
5430
|
+
const { i18n: i18n2 } = (0, import_react_i18next6.useTranslation)();
|
|
5431
|
+
const { changeLanguage } = useLocalization();
|
|
5432
|
+
const [languages, setLanguages] = (0, import_react34.useState)([]);
|
|
5433
|
+
const [loading, setLoading] = (0, import_react34.useState)(true);
|
|
5434
|
+
const [anchorEl, setAnchorEl] = (0, import_react34.useState)(null);
|
|
5435
|
+
const open = Boolean(anchorEl);
|
|
5436
|
+
(0, import_react34.useEffect)(() => {
|
|
5437
|
+
const fetchLanguages = async () => {
|
|
5438
|
+
try {
|
|
5439
|
+
const { data, error } = await supabase.from("languages").select("code, name, svg_flag").eq("enabled", true);
|
|
5440
|
+
if (error) throw error;
|
|
5441
|
+
setLanguages(data || []);
|
|
5442
|
+
} catch (err) {
|
|
5443
|
+
console.error("\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u043C\u043E\u0432:", err);
|
|
5444
|
+
} finally {
|
|
5445
|
+
setLoading(false);
|
|
5446
|
+
}
|
|
5447
|
+
};
|
|
5448
|
+
fetchLanguages();
|
|
5449
|
+
}, []);
|
|
5450
|
+
const handleClick = (event) => {
|
|
5451
|
+
setAnchorEl(event.currentTarget);
|
|
5452
|
+
};
|
|
5453
|
+
const handleClose = () => {
|
|
5454
|
+
setAnchorEl(null);
|
|
5455
|
+
};
|
|
5456
|
+
const handleSelectLanguage = (langCode) => {
|
|
5457
|
+
changeLanguage(langCode);
|
|
5458
|
+
handleClose();
|
|
5459
|
+
};
|
|
5460
|
+
if (loading) {
|
|
5461
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_material30.CircularProgress, { size: 20, color: "inherit", sx: { mx: 1 } });
|
|
5462
|
+
}
|
|
5463
|
+
const rawCurrentLang = i18n2.language || "uk";
|
|
5464
|
+
const currentLangCode = rawCurrentLang.split("-")[0];
|
|
5465
|
+
const currentLang = languages.find((l) => l.code === currentLangCode) || languages[0];
|
|
5466
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
|
|
5467
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_material30.Tooltip, { title: currentLang ? currentLang.name : "\u041C\u043E\u0432\u0430", arrow: true, placement: "bottom", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5468
|
+
import_material30.IconButton,
|
|
5469
|
+
{
|
|
5470
|
+
onClick: handleClick,
|
|
5471
|
+
size: "small",
|
|
5472
|
+
"aria-controls": open ? "language-menu" : void 0,
|
|
5473
|
+
"aria-haspopup": "true",
|
|
5474
|
+
"aria-expanded": open ? "true" : void 0,
|
|
5475
|
+
sx: {
|
|
5476
|
+
p: 1,
|
|
5477
|
+
borderRadius: 2,
|
|
5478
|
+
transition: "background-color 0.2s",
|
|
5479
|
+
"&:hover": {
|
|
5480
|
+
backgroundColor: "action.hover"
|
|
5481
|
+
}
|
|
5482
|
+
},
|
|
5483
|
+
children: currentLang?.svg_flag && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5484
|
+
import_material30.Box,
|
|
5485
|
+
{
|
|
5486
|
+
sx: {
|
|
5487
|
+
width: 24,
|
|
5488
|
+
height: 16,
|
|
5489
|
+
borderRadius: "3px",
|
|
5490
|
+
overflow: "hidden",
|
|
5491
|
+
flexShrink: 0,
|
|
5492
|
+
boxShadow: "0 0 2px rgba(0,0,0,0.3)",
|
|
5493
|
+
display: "flex",
|
|
5494
|
+
alignItems: "center",
|
|
5495
|
+
justifyContent: "center",
|
|
5496
|
+
"& svg": { width: "100%", height: "100%", display: "block", objectFit: "cover" }
|
|
5497
|
+
},
|
|
5498
|
+
dangerouslySetInnerHTML: { __html: currentLang.svg_flag }
|
|
5499
|
+
}
|
|
5500
|
+
)
|
|
5501
|
+
}
|
|
5502
|
+
) }),
|
|
5503
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5504
|
+
import_material30.Menu,
|
|
5505
|
+
{
|
|
5506
|
+
id: "language-menu",
|
|
5507
|
+
anchorEl,
|
|
5508
|
+
open,
|
|
5509
|
+
onClose: handleClose,
|
|
5510
|
+
slotProps: {
|
|
5511
|
+
paper: {
|
|
5512
|
+
elevation: 3,
|
|
5513
|
+
sx: {
|
|
5514
|
+
mt: 1,
|
|
5515
|
+
minWidth: 150,
|
|
5516
|
+
borderRadius: 2
|
|
5517
|
+
}
|
|
5518
|
+
}
|
|
5519
|
+
},
|
|
5520
|
+
transformOrigin: { horizontal: "right", vertical: "top" },
|
|
5521
|
+
anchorOrigin: { horizontal: "right", vertical: "bottom" },
|
|
5522
|
+
children: languages.map((lang) => {
|
|
5523
|
+
const isSelected = lang.code === currentLangCode;
|
|
5524
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
5525
|
+
import_material30.MenuItem,
|
|
5526
|
+
{
|
|
5527
|
+
selected: isSelected,
|
|
5528
|
+
onClick: () => handleSelectLanguage(lang.code),
|
|
5529
|
+
sx: {
|
|
5530
|
+
display: "flex",
|
|
5531
|
+
alignItems: "center",
|
|
5532
|
+
gap: 1.5,
|
|
5533
|
+
py: 1,
|
|
5534
|
+
px: 2
|
|
5535
|
+
},
|
|
5536
|
+
children: [
|
|
5537
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
5538
|
+
import_material30.Box,
|
|
5539
|
+
{
|
|
5540
|
+
sx: {
|
|
5541
|
+
width: 22,
|
|
5542
|
+
height: 15,
|
|
5543
|
+
borderRadius: "2px",
|
|
5544
|
+
overflow: "hidden",
|
|
5545
|
+
flexShrink: 0,
|
|
5546
|
+
boxShadow: "0 0 1px rgba(0,0,0,0.4)",
|
|
5547
|
+
"& svg": { width: "100%", height: "100%", display: "block" }
|
|
5548
|
+
},
|
|
5549
|
+
dangerouslySetInnerHTML: { __html: lang.svg_flag }
|
|
5550
|
+
}
|
|
5551
|
+
),
|
|
5552
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_material30.Typography, { variant: "body2", sx: { fontWeight: isSelected ? 600 : 400 }, children: lang.name })
|
|
5553
|
+
]
|
|
5554
|
+
},
|
|
5555
|
+
lang.code
|
|
5556
|
+
);
|
|
5557
|
+
})
|
|
5558
|
+
}
|
|
5559
|
+
)
|
|
5560
|
+
] });
|
|
5561
|
+
};
|
|
5562
|
+
|
|
5563
|
+
// src/UI/components/tables/TablePaginationComponent.tsx
|
|
5564
|
+
var import_material31 = require("@mui/material");
|
|
5565
|
+
var import_FirstPage = __toESM(require("@mui/icons-material/FirstPage"));
|
|
5566
|
+
var import_KeyboardArrowLeft = __toESM(require("@mui/icons-material/KeyboardArrowLeft"));
|
|
5567
|
+
var import_KeyboardArrowRight = __toESM(require("@mui/icons-material/KeyboardArrowRight"));
|
|
5568
|
+
var import_LastPage = __toESM(require("@mui/icons-material/LastPage"));
|
|
5569
|
+
init_TranslatableTooltipComponent();
|
|
5570
|
+
init_context();
|
|
5571
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
5572
|
+
var CustomPaginationActions = (props) => {
|
|
5573
|
+
const {
|
|
5574
|
+
count,
|
|
5575
|
+
page,
|
|
5576
|
+
rowsPerPage,
|
|
5577
|
+
onPageChange,
|
|
5578
|
+
showFirstButton,
|
|
5579
|
+
showLastButton,
|
|
5580
|
+
overrideNamespace
|
|
5581
|
+
} = props;
|
|
5582
|
+
const ns = overrideNamespace || "form_components";
|
|
5583
|
+
const handleFirstPage = (e) => onPageChange(e, 0);
|
|
5584
|
+
const handleBack = (e) => onPageChange(e, page - 1);
|
|
5585
|
+
const handleNext = (e) => onPageChange(e, page + 1);
|
|
5586
|
+
const handleLast = (e) => onPageChange(e, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
|
|
5587
|
+
const isFirstDisabled = page === 0;
|
|
5588
|
+
const isLastDisabled = page >= Math.ceil(count / rowsPerPage) - 1;
|
|
5589
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_material31.Box, { sx: { flexShrink: 0, ml: 2, display: "flex", alignItems: "center" }, children: [
|
|
5590
|
+
showFirstButton && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslatableTooltipComponent, { title: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslateText, { overrideNamespace: ns, children: "First page" }), children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_material31.IconButton, { onClick: handleFirstPage, disabled: isFirstDisabled, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_FirstPage.default, {}) }) }) }),
|
|
5591
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslatableTooltipComponent, { title: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslateText, { overrideNamespace: ns, children: "Previous page" }), children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_material31.IconButton, { onClick: handleBack, disabled: isFirstDisabled, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_KeyboardArrowLeft.default, {}) }) }) }),
|
|
5592
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslatableTooltipComponent, { title: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslateText, { overrideNamespace: ns, children: "Next page" }), children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_material31.IconButton, { onClick: handleNext, disabled: isLastDisabled, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_KeyboardArrowRight.default, {}) }) }) }),
|
|
5593
|
+
showLastButton && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslatableTooltipComponent, { title: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslateText, { overrideNamespace: ns, children: "Last page" }), children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_material31.IconButton, { onClick: handleLast, disabled: isLastDisabled, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_LastPage.default, {}) }) }) })
|
|
5594
|
+
] });
|
|
5595
|
+
};
|
|
5596
|
+
var TablePaginationComponent = ({
|
|
5597
|
+
overrideNamespace,
|
|
5598
|
+
rowsPerPageOptions = [5, 10, 25, 50],
|
|
5599
|
+
count,
|
|
5600
|
+
rowsPerPage,
|
|
5601
|
+
page,
|
|
5602
|
+
onPageChange,
|
|
5603
|
+
onRowsPerPageChange
|
|
5604
|
+
}) => {
|
|
5605
|
+
const { displayState } = useAppTheme();
|
|
5606
|
+
const activeNamespace = overrideNamespace || "form_components";
|
|
5607
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
5608
|
+
import_material31.TablePagination,
|
|
5609
|
+
{
|
|
5610
|
+
rowsPerPageOptions,
|
|
5611
|
+
component: "div",
|
|
5612
|
+
count,
|
|
5613
|
+
rowsPerPage,
|
|
5614
|
+
page,
|
|
5615
|
+
onPageChange,
|
|
5616
|
+
onRowsPerPageChange,
|
|
5617
|
+
showFirstButton: true,
|
|
5618
|
+
showLastButton: true,
|
|
5619
|
+
labelRowsPerPage: displayState.isMobile ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, {}) : /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
|
|
5620
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(TranslateText, { overrideNamespace: activeNamespace, children: "Rows per page" }),
|
|
5621
|
+
":"
|
|
5622
|
+
] }),
|
|
5623
|
+
ActionsComponent: CustomPaginationActions,
|
|
5624
|
+
slotProps: {
|
|
5625
|
+
actions: {
|
|
5626
|
+
overrideNamespace: activeNamespace
|
|
5627
|
+
}
|
|
5628
|
+
}
|
|
5629
|
+
}
|
|
5630
|
+
);
|
|
5631
|
+
};
|
|
5632
|
+
|
|
5215
5633
|
// src/types/index.ts
|
|
5216
5634
|
init_user_types();
|
|
5217
5635
|
|
|
@@ -5235,16 +5653,16 @@ var Services = {
|
|
|
5235
5653
|
};
|
|
5236
5654
|
|
|
5237
5655
|
// src/hooks/useUserStatus.ts
|
|
5238
|
-
var
|
|
5656
|
+
var import_react35 = require("react");
|
|
5239
5657
|
init_deviceId();
|
|
5240
5658
|
init_context();
|
|
5241
5659
|
var ONLINE_THRESHOLD_MINUTES = 2;
|
|
5242
5660
|
var AWAY_THRESHOLD_MINUTES = 15;
|
|
5243
5661
|
var useUserStatus2 = (userId, initialLastSeenAt, currentAuthUserId) => {
|
|
5244
5662
|
const supabase = useSupabase();
|
|
5245
|
-
const [status, setStatus] = (0,
|
|
5246
|
-
const [lastSeen, setLastSeen] = (0,
|
|
5247
|
-
const lastSeenRef = (0,
|
|
5663
|
+
const [status, setStatus] = (0, import_react35.useState)("offline");
|
|
5664
|
+
const [lastSeen, setLastSeen] = (0, import_react35.useState)(initialLastSeenAt ?? null);
|
|
5665
|
+
const lastSeenRef = (0, import_react35.useRef)(initialLastSeenAt ?? null);
|
|
5248
5666
|
lastSeenRef.current = lastSeen;
|
|
5249
5667
|
const calculateStatus = (isOnline, lastSeenIso) => {
|
|
5250
5668
|
if (isOnline) return "online";
|
|
@@ -5260,7 +5678,7 @@ var useUserStatus2 = (userId, initialLastSeenAt, currentAuthUserId) => {
|
|
|
5260
5678
|
}
|
|
5261
5679
|
return "offline";
|
|
5262
5680
|
};
|
|
5263
|
-
(0,
|
|
5681
|
+
(0, import_react35.useEffect)(() => {
|
|
5264
5682
|
if (!userId) return;
|
|
5265
5683
|
let isMounted = true;
|
|
5266
5684
|
const isSelf = currentAuthUserId && userId === currentAuthUserId;
|
|
@@ -5380,13 +5798,16 @@ var Utils = {
|
|
|
5380
5798
|
NumberInputComponent,
|
|
5381
5799
|
PageComponent,
|
|
5382
5800
|
PageLinkComponent,
|
|
5801
|
+
ProtectedLanguageSelector,
|
|
5383
5802
|
Providers,
|
|
5803
|
+
PublicLanguageSelector,
|
|
5384
5804
|
RefreshButtonComponent,
|
|
5385
5805
|
SearchComponent,
|
|
5386
5806
|
SelectComponent,
|
|
5387
5807
|
Services,
|
|
5388
5808
|
SupabaseProvider,
|
|
5389
5809
|
SwitchComponent,
|
|
5810
|
+
TablePaginationComponent,
|
|
5390
5811
|
TextFieldComponent,
|
|
5391
5812
|
ThemeProvider,
|
|
5392
5813
|
ToastProvider,
|
|
@@ -5394,6 +5815,7 @@ var Utils = {
|
|
|
5394
5815
|
TranslateProvider,
|
|
5395
5816
|
TranslateText,
|
|
5396
5817
|
TranslationEditProvider,
|
|
5818
|
+
TruncatedTypography,
|
|
5397
5819
|
UrlComponent,
|
|
5398
5820
|
UserAvatarComponent,
|
|
5399
5821
|
UserPopoverComponent,
|