@mantis-core/ui 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Forms/ColorPickerInput.d.ts +10 -0
- package/dist/components/Forms/ColorPickerInput.d.ts.map +1 -0
- package/dist/components/Forms/ColorPickerInput.js +13 -0
- package/dist/components/Forms/ColorPickerInput.js.map +1 -0
- package/dist/components/Forms/Combobox.d.ts +10 -0
- package/dist/components/Forms/Combobox.d.ts.map +1 -0
- package/dist/components/Forms/Combobox.js +11 -0
- package/dist/components/Forms/Combobox.js.map +1 -0
- package/dist/components/Forms/CurrencyInput.d.ts +12 -0
- package/dist/components/Forms/CurrencyInput.d.ts.map +1 -0
- package/dist/components/Forms/CurrencyInput.js +9 -0
- package/dist/components/Forms/CurrencyInput.js.map +1 -0
- package/dist/components/Forms/DatePresets.d.ts +14 -0
- package/dist/components/Forms/DatePresets.d.ts.map +1 -0
- package/dist/components/Forms/DatePresets.js +55 -0
- package/dist/components/Forms/DatePresets.js.map +1 -0
- package/dist/components/Forms/DateRangeInput.d.ts +10 -0
- package/dist/components/Forms/DateRangeInput.d.ts.map +1 -0
- package/dist/components/Forms/DateRangeInput.js +13 -0
- package/dist/components/Forms/DateRangeInput.js.map +1 -0
- package/dist/components/Forms/FormWizard.d.ts +17 -0
- package/dist/components/Forms/FormWizard.d.ts.map +1 -0
- package/dist/components/Forms/FormWizard.js +63 -0
- package/dist/components/Forms/FormWizard.js.map +1 -0
- package/dist/components/Forms/OtpInput.d.ts +11 -0
- package/dist/components/Forms/OtpInput.d.ts.map +1 -0
- package/dist/components/Forms/OtpInput.js +11 -0
- package/dist/components/Forms/OtpInput.js.map +1 -0
- package/dist/components/Forms/PasswordInput.d.ts +12 -0
- package/dist/components/Forms/PasswordInput.d.ts.map +1 -0
- package/dist/components/Forms/PasswordInput.js +31 -0
- package/dist/components/Forms/PasswordInput.js.map +1 -0
- package/dist/components/Forms/PhoneInput.d.ts +11 -0
- package/dist/components/Forms/PhoneInput.d.ts.map +1 -0
- package/dist/components/Forms/PhoneInput.js +9 -0
- package/dist/components/Forms/PhoneInput.js.map +1 -0
- package/dist/components/Forms/RadioGroup.d.ts +15 -0
- package/dist/components/Forms/RadioGroup.d.ts.map +1 -0
- package/dist/components/Forms/RadioGroup.js +9 -0
- package/dist/components/Forms/RadioGroup.js.map +1 -0
- package/dist/components/Forms/RangeSlider.d.ts +13 -0
- package/dist/components/Forms/RangeSlider.d.ts.map +1 -0
- package/dist/components/Forms/RangeSlider.js +9 -0
- package/dist/components/Forms/RangeSlider.js.map +1 -0
- package/dist/components/Forms/RatingInput.d.ts +11 -0
- package/dist/components/Forms/RatingInput.d.ts.map +1 -0
- package/dist/components/Forms/RatingInput.js +11 -0
- package/dist/components/Forms/RatingInput.js.map +1 -0
- package/dist/components/Forms/SearchInput.d.ts +14 -0
- package/dist/components/Forms/SearchInput.d.ts.map +1 -0
- package/dist/components/Forms/SearchInput.js +34 -0
- package/dist/components/Forms/SearchInput.js.map +1 -0
- package/dist/components/Forms/TagsInput.d.ts +10 -0
- package/dist/components/Forms/TagsInput.d.ts.map +1 -0
- package/dist/components/Forms/TagsInput.js +11 -0
- package/dist/components/Forms/TagsInput.js.map +1 -0
- package/dist/components/auth/ChangePasswordForm.d.ts +16 -0
- package/dist/components/auth/ChangePasswordForm.d.ts.map +1 -0
- package/dist/components/auth/ChangePasswordForm.js +23 -0
- package/dist/components/auth/ChangePasswordForm.js.map +1 -0
- package/dist/components/auth/ForgotPasswordForm.d.ts +15 -0
- package/dist/components/auth/ForgotPasswordForm.d.ts.map +1 -0
- package/dist/components/auth/ForgotPasswordForm.js +14 -0
- package/dist/components/auth/ForgotPasswordForm.js.map +1 -0
- package/dist/components/auth/LoginForm.d.ts +22 -0
- package/dist/components/auth/LoginForm.d.ts.map +1 -0
- package/dist/components/auth/LoginForm.js +20 -0
- package/dist/components/auth/LoginForm.js.map +1 -0
- package/dist/components/auth/ResetPasswordForm.d.ts +16 -0
- package/dist/components/auth/ResetPasswordForm.d.ts.map +1 -0
- package/dist/components/auth/ResetPasswordForm.js +23 -0
- package/dist/components/auth/ResetPasswordForm.js.map +1 -0
- package/dist/components/auth/UserMenu.d.ts +22 -0
- package/dist/components/auth/UserMenu.d.ts.map +1 -0
- package/dist/components/auth/UserMenu.js +95 -0
- package/dist/components/auth/UserMenu.js.map +1 -0
- package/dist/components/auth/index.d.ts +11 -0
- package/dist/components/auth/index.d.ts.map +1 -0
- package/dist/components/auth/index.js +6 -0
- package/dist/components/auth/index.js.map +1 -0
- package/dist/components/charts/BarChart.d.ts +20 -0
- package/dist/components/charts/BarChart.d.ts.map +1 -0
- package/dist/components/charts/BarChart.js +28 -0
- package/dist/components/charts/BarChart.js.map +1 -0
- package/dist/components/charts/DonutChart.d.ts +21 -0
- package/dist/components/charts/DonutChart.d.ts.map +1 -0
- package/dist/components/charts/DonutChart.js +26 -0
- package/dist/components/charts/DonutChart.js.map +1 -0
- package/dist/components/charts/LineChart.d.ts +20 -0
- package/dist/components/charts/LineChart.d.ts.map +1 -0
- package/dist/components/charts/LineChart.js +27 -0
- package/dist/components/charts/LineChart.js.map +1 -0
- package/dist/components/charts/chart-setup.d.ts +3 -0
- package/dist/components/charts/chart-setup.d.ts.map +1 -0
- package/dist/components/charts/chart-setup.js +10 -0
- package/dist/components/charts/chart-setup.js.map +1 -0
- package/dist/components/charts/defaults.d.ts +13 -0
- package/dist/components/charts/defaults.d.ts.map +1 -0
- package/dist/components/charts/defaults.js +54 -0
- package/dist/components/charts/defaults.js.map +1 -0
- package/dist/components/charts/index.d.ts +9 -0
- package/dist/components/charts/index.d.ts.map +1 -0
- package/dist/components/charts/index.js +6 -0
- package/dist/components/charts/index.js.map +1 -0
- package/dist/components/data/DescriptionList.d.ts +11 -0
- package/dist/components/data/DescriptionList.d.ts.map +1 -0
- package/dist/components/data/DescriptionList.js +23 -0
- package/dist/components/data/DescriptionList.js.map +1 -0
- package/dist/components/data/StatCard.d.ts +14 -0
- package/dist/components/data/StatCard.d.ts.map +1 -0
- package/dist/components/data/StatCard.js +39 -0
- package/dist/components/data/StatCard.js.map +1 -0
- package/dist/components/data/Timeline.d.ts +15 -0
- package/dist/components/data/Timeline.d.ts.map +1 -0
- package/dist/components/data/Timeline.js +20 -0
- package/dist/components/data/Timeline.js.map +1 -0
- package/dist/components/feedback/Avatar.d.ts +9 -0
- package/dist/components/feedback/Avatar.d.ts.map +1 -0
- package/dist/components/feedback/Avatar.js +15 -0
- package/dist/components/feedback/Avatar.js.map +1 -0
- package/dist/components/feedback/CardSkeleton.d.ts +6 -0
- package/dist/components/feedback/CardSkeleton.d.ts.map +1 -0
- package/dist/components/feedback/CardSkeleton.js +7 -0
- package/dist/components/feedback/CardSkeleton.js.map +1 -0
- package/dist/components/feedback/EmptyState.d.ts +9 -0
- package/dist/components/feedback/EmptyState.d.ts.map +1 -0
- package/dist/components/feedback/EmptyState.js +6 -0
- package/dist/components/feedback/EmptyState.js.map +1 -0
- package/dist/components/feedback/ErrorBoundary.d.ts +18 -0
- package/dist/components/feedback/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/feedback/ErrorBoundary.js +24 -0
- package/dist/components/feedback/ErrorBoundary.js.map +1 -0
- package/dist/components/feedback/TableSkeleton.d.ts +7 -0
- package/dist/components/feedback/TableSkeleton.d.ts.map +1 -0
- package/dist/components/feedback/TableSkeleton.js +7 -0
- package/dist/components/feedback/TableSkeleton.js.map +1 -0
- package/dist/components/feedback/Tag.d.ts +6 -0
- package/dist/components/feedback/Tag.d.ts.map +1 -0
- package/dist/components/feedback/Tag.js +7 -0
- package/dist/components/feedback/Tag.js.map +1 -0
- package/dist/components/navigation/CommandPalette.d.ts +17 -0
- package/dist/components/navigation/CommandPalette.d.ts.map +1 -0
- package/dist/components/navigation/CommandPalette.js +73 -0
- package/dist/components/navigation/CommandPalette.js.map +1 -0
- package/dist/components/navigation/PageTabs.d.ts +14 -0
- package/dist/components/navigation/PageTabs.d.ts.map +1 -0
- package/dist/components/navigation/PageTabs.js +21 -0
- package/dist/components/navigation/PageTabs.js.map +1 -0
- package/dist/components/overlays/Drawer.d.ts +6 -0
- package/dist/components/overlays/Drawer.d.ts.map +1 -0
- package/dist/components/overlays/Drawer.js +8 -0
- package/dist/components/overlays/Drawer.js.map +1 -0
- package/dist/components/overlays/Modal.d.ts +6 -0
- package/dist/components/overlays/Modal.d.ts.map +1 -0
- package/dist/components/overlays/Modal.js +8 -0
- package/dist/components/overlays/Modal.js.map +1 -0
- package/dist/components/pages/AdminPageHeader.d.ts.map +1 -1
- package/dist/components/pages/AdminPageHeader.js +2 -9
- package/dist/components/pages/AdminPageHeader.js.map +1 -1
- package/dist/components/pages/app-shell/AppShell.d.ts +5 -0
- package/dist/components/pages/app-shell/AppShell.d.ts.map +1 -0
- package/dist/components/pages/app-shell/AppShell.js +38 -0
- package/dist/components/pages/app-shell/AppShell.js.map +1 -0
- package/dist/components/pages/app-shell/Breadcrumbs.d.ts +8 -0
- package/dist/components/pages/app-shell/Breadcrumbs.d.ts.map +1 -0
- package/dist/components/pages/app-shell/Breadcrumbs.js +17 -0
- package/dist/components/pages/app-shell/Breadcrumbs.js.map +1 -0
- package/dist/components/pages/app-shell/index.d.ts +4 -0
- package/dist/components/pages/app-shell/index.d.ts.map +1 -0
- package/dist/components/pages/app-shell/index.js +3 -0
- package/dist/components/pages/app-shell/index.js.map +1 -0
- package/dist/components/pages/app-shell/types.d.ts +24 -0
- package/dist/components/pages/app-shell/types.d.ts.map +1 -0
- package/dist/components/pages/app-shell/types.js +2 -0
- package/dist/components/pages/app-shell/types.js.map +1 -0
- package/dist/validation/index.d.ts +2 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +3 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/rules.d.ts +10 -0
- package/dist/validation/rules.d.ts.map +1 -0
- package/dist/validation/rules.js +39 -0
- package/dist/validation/rules.js.map +1 -0
- package/dist/validation/zod.d.ts +2 -0
- package/dist/validation/zod.d.ts.map +1 -0
- package/dist/validation/zod.js +3 -0
- package/dist/validation/zod.js.map +1 -0
- package/package.json +39 -3
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect, useRef } from "react";
|
|
4
|
+
import { Dialog } from "primereact/dialog";
|
|
5
|
+
const CommandPalette = ({ commands, open = false, onOpenChange }) => {
|
|
6
|
+
const [query, setQuery] = useState("");
|
|
7
|
+
const inputRef = useRef(null);
|
|
8
|
+
const filtered = query
|
|
9
|
+
? commands.filter((cmd) => {
|
|
10
|
+
const q = query.toLowerCase();
|
|
11
|
+
return (cmd.label.toLowerCase().includes(q) ||
|
|
12
|
+
cmd.keywords?.some((k) => k.toLowerCase().includes(q)));
|
|
13
|
+
})
|
|
14
|
+
: commands;
|
|
15
|
+
const close = () => {
|
|
16
|
+
setQuery("");
|
|
17
|
+
onOpenChange?.(false);
|
|
18
|
+
};
|
|
19
|
+
const handleSelect = (cmd) => {
|
|
20
|
+
cmd.onSelect();
|
|
21
|
+
close();
|
|
22
|
+
};
|
|
23
|
+
// Focus input when opened
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (open) {
|
|
26
|
+
setTimeout(() => inputRef.current?.focus(), 50);
|
|
27
|
+
}
|
|
28
|
+
}, [open]);
|
|
29
|
+
return (_jsx(Dialog, { visible: open, onHide: close, header: null, showHeader: false, dismissableMask: true, className: "mantis-core-command-palette", style: { width: "500px", maxWidth: "90vw" }, pt: { content: { style: { padding: 0 } } }, children: _jsxs("div", { style: { display: "flex", flexDirection: "column", overflow: "hidden" }, children: [_jsx("input", { ref: inputRef, type: "text", value: query, onChange: (e) => setQuery(e.target.value), placeholder: "Buscar comando...", style: {
|
|
30
|
+
width: "100%",
|
|
31
|
+
padding: "12px 16px",
|
|
32
|
+
border: "none",
|
|
33
|
+
borderBottom: "1px solid var(--border)",
|
|
34
|
+
outline: "none",
|
|
35
|
+
fontSize: "14px",
|
|
36
|
+
background: "var(--card)",
|
|
37
|
+
color: "inherit",
|
|
38
|
+
boxSizing: "border-box",
|
|
39
|
+
} }), _jsxs("ul", { style: {
|
|
40
|
+
listStyle: "none",
|
|
41
|
+
margin: 0,
|
|
42
|
+
padding: "4px",
|
|
43
|
+
maxHeight: "320px",
|
|
44
|
+
overflowY: "auto",
|
|
45
|
+
}, children: [filtered.map((cmd) => (_jsx("li", { children: _jsxs("button", { onClick: () => handleSelect(cmd), style: {
|
|
46
|
+
width: "100%",
|
|
47
|
+
display: "flex",
|
|
48
|
+
alignItems: "center",
|
|
49
|
+
gap: "10px",
|
|
50
|
+
padding: "10px 12px",
|
|
51
|
+
border: "none",
|
|
52
|
+
background: "transparent",
|
|
53
|
+
cursor: "pointer",
|
|
54
|
+
fontSize: "14px",
|
|
55
|
+
borderRadius: "6px",
|
|
56
|
+
textAlign: "left",
|
|
57
|
+
color: "inherit",
|
|
58
|
+
}, onMouseEnter: (e) => (e.currentTarget.style.background = "color-mix(in oklch, var(--primary), transparent 90%)"), onMouseLeave: (e) => (e.currentTarget.style.background = "transparent"), children: [cmd.icon && _jsx("span", { style: { flexShrink: 0 }, children: cmd.icon }), _jsx("span", { children: cmd.label })] }) }, cmd.id))), filtered.length === 0 && (_jsx("li", { style: { padding: "16px", textAlign: "center", color: "var(--muted-foreground)", fontSize: "14px" }, children: "Sin resultados" }))] })] }) }));
|
|
59
|
+
};
|
|
60
|
+
export function useCommandPalette(onOpen) {
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
const handler = (e) => {
|
|
63
|
+
if ((e.metaKey || e.ctrlKey) && e.key === "k") {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
onOpen?.();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
window.addEventListener("keydown", handler);
|
|
69
|
+
return () => window.removeEventListener("keydown", handler);
|
|
70
|
+
}, [onOpen]);
|
|
71
|
+
}
|
|
72
|
+
export default CommandPalette;
|
|
73
|
+
//# sourceMappingURL=CommandPalette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../../src/components/navigation/CommandPalette.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React, { type ReactNode } from "react";
|
|
2
|
+
import { type TabMenuProps } from "primereact/tabmenu";
|
|
3
|
+
type PageTabsProps = Omit<TabMenuProps, "model"> & {
|
|
4
|
+
tabs: {
|
|
5
|
+
label: string;
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
href?: string;
|
|
8
|
+
command?: () => void;
|
|
9
|
+
}[];
|
|
10
|
+
activeIndex?: number;
|
|
11
|
+
};
|
|
12
|
+
declare const PageTabs: React.FC<PageTabsProps>;
|
|
13
|
+
export default PageTabs;
|
|
14
|
+
//# sourceMappingURL=PageTabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageTabs.d.ts","sourceRoot":"","sources":["../../../src/components/navigation/PageTabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGhE,KAAK,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG;IACjD,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,EAAE,CAAC;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA0BrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { usePathname, useRouter } from "next/navigation";
|
|
4
|
+
import { TabMenu } from "primereact/tabmenu";
|
|
5
|
+
const PageTabs = ({ tabs, activeIndex, ...rest }) => {
|
|
6
|
+
const pathname = usePathname();
|
|
7
|
+
const router = useRouter();
|
|
8
|
+
const model = tabs.map((tab) => ({
|
|
9
|
+
label: tab.label,
|
|
10
|
+
icon: tab.icon,
|
|
11
|
+
command: tab.href
|
|
12
|
+
? () => router.push(tab.href)
|
|
13
|
+
: tab.command,
|
|
14
|
+
}));
|
|
15
|
+
// Derive active index from pathname when href tabs are used
|
|
16
|
+
const resolvedActiveIndex = activeIndex ??
|
|
17
|
+
tabs.findIndex((t) => t.href && (pathname === t.href || pathname.startsWith(t.href + "/")));
|
|
18
|
+
return (_jsx("div", { className: "mantis-core-page-tabs", children: _jsx(TabMenu, { model: model, activeIndex: resolvedActiveIndex >= 0 ? resolvedActiveIndex : 0, ...rest }) }));
|
|
19
|
+
};
|
|
20
|
+
export default PageTabs;
|
|
21
|
+
//# sourceMappingURL=PageTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageTabs.js","sourceRoot":"","sources":["../../../src/components/navigation/PageTabs.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AAQhE,MAAM,QAAQ,GAA4B,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IAC3E,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAe,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3C,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAA0B;QACpC,OAAO,EAAE,GAAG,CAAC,IAAI;YACf,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAK,CAAC;YAC9B,CAAC,CAAC,GAAG,CAAC,OAAO;KAChB,CAAC,CAAC,CAAC;IAEJ,4DAA4D;IAC5D,MAAM,mBAAmB,GACvB,WAAW;QACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO,CACL,cAAK,SAAS,EAAC,uBAAuB,YACpC,KAAC,OAAO,IACN,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,mBAAmB,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC3D,IAAI,GACR,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SidebarProps } from "primereact/sidebar";
|
|
2
|
+
export type DrawerProps = Omit<SidebarProps, "className"> & {
|
|
3
|
+
className?: string;
|
|
4
|
+
};
|
|
5
|
+
export default function Drawer({ position, className, ...rest }: DrawerProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=Drawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Drawer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,QAAkB,EAClB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,WAAW,2CAQb"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { Sidebar } from "primereact/sidebar";
|
|
5
|
+
export default function Drawer({ position = "right", className, ...rest }) {
|
|
6
|
+
return (_jsx(Sidebar, { position: position, className: classNames("mantis-core-drawer", className), ...rest }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Drawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/overlays/Drawer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAO7C,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,QAAQ,GAAG,OAAO,EAClB,SAAS,EACT,GAAG,IAAI,EACK;IACZ,OAAO,CACL,KAAC,OAAO,IACN,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE,SAAS,CAAC,KAClD,IAAI,GACR,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DialogProps } from "primereact/dialog";
|
|
2
|
+
export type ModalProps = Omit<DialogProps, "className"> & {
|
|
3
|
+
className?: string;
|
|
4
|
+
};
|
|
5
|
+
export default function Modal({ modal, dismissableMask, draggable, className, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=Modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/overlays/Modal.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,KAAY,EACZ,eAAsB,EACtB,SAAiB,EACjB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,UAAU,2CAUZ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { Dialog } from "primereact/dialog";
|
|
5
|
+
export default function Modal({ modal = true, dismissableMask = true, draggable = false, className, ...rest }) {
|
|
6
|
+
return (_jsx(Dialog, { modal: modal, dismissableMask: dismissableMask, draggable: draggable, className: classNames("mantis-core-modal", className), ...rest }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/components/overlays/Modal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,KAAK,GAAG,IAAI,EACZ,eAAe,GAAG,IAAI,EACtB,SAAS,GAAG,KAAK,EACjB,SAAS,EACT,GAAG,IAAI,EACI;IACX,OAAO,CACL,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,KACjD,IAAI,GACR,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/pages/AdminPageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AdminPageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/pages/AdminPageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC9C,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiCnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import Breadcrumbs from "./app-shell/Breadcrumbs";
|
|
3
3
|
const AdminPageHeader = ({ title, description, actions, breadcrumbs, }) => {
|
|
4
|
-
const hasBreadcrumbs = Boolean(breadcrumbs && breadcrumbs.length > 0);
|
|
5
4
|
return (_jsxs("div", { className: 'flex items-start justify-between rounded-xl px-6 py-5 border border-border gap-4', style: {
|
|
6
5
|
background: "linear-gradient(110deg, color-mix(in oklch, var(--primary), white 92%), color-mix(in oklch, var(--accent), white 90%))",
|
|
7
|
-
}, children: [_jsxs("div", { children: [
|
|
8
|
-
const isLast = index === breadcrumbs.length - 1;
|
|
9
|
-
return (_jsxs("li", { className: 'flex items-center gap-1.5', children: [item.href && !isLast ? (_jsx(Link, { href: item.href, className: 'transition-colors hover:opacity-80', style: { color: "var(--muted-foreground)" }, children: item.label })) : (_jsx("span", { style: {
|
|
10
|
-
color: isLast ? "color-mix(in oklch, var(--primary), black 24%)" : "var(--muted-foreground)",
|
|
11
|
-
fontWeight: isLast ? 600 : 500,
|
|
12
|
-
}, children: item.label })), !isLast && _jsx("span", { style: { color: "var(--muted-foreground)" }, children: "/" })] }, `${item.label}-${index}`));
|
|
13
|
-
}) }) })), _jsx("h1", { className: 'text-2xl font-bold', style: {
|
|
6
|
+
}, children: [_jsxs("div", { children: [breadcrumbs && breadcrumbs.length > 0 && _jsx(Breadcrumbs, { items: breadcrumbs }), _jsx("h1", { className: 'text-2xl font-bold', style: {
|
|
14
7
|
color: "color-mix(in oklch, var(--primary), black 20%)",
|
|
15
8
|
fontFamily: "var(--font-display)",
|
|
16
9
|
}, children: title }), description && (_jsx("p", { className: 'text-sm mt-0.5', style: { color: "var(--muted-foreground)" }, children: description }))] }), actions && _jsx("div", { children: actions })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPageHeader.js","sourceRoot":"","sources":["../../../src/components/pages/AdminPageHeader.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"AdminPageHeader.js","sourceRoot":"","sources":["../../../src/components/pages/AdminPageHeader.tsx"],"names":[],"mappings":";AAEA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AASlD,MAAM,eAAe,GAAmC,CAAC,EACvD,KAAK,EACL,WAAW,EACX,OAAO,EACP,WAAW,GACZ,EAAE,EAAE;IACH,OAAO,CACL,eACE,SAAS,EAAC,kFAAkF,EAC5F,KAAK,EAAE;YACL,UAAU,EACR,wHAAwH;SAC3H,aACD,0BACG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,WAAW,IAAC,KAAK,EAAE,WAAW,GAAI,EAE7E,aACE,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE;4BACL,KAAK,EAAE,gDAAgD;4BACvD,UAAU,EAAE,qBAAqB;yBAClC,YACA,KAAK,GACH,EACJ,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,YACtE,WAAW,GACV,CACL,IACG,EACL,OAAO,IAAI,wBAAM,OAAO,GAAO,IAC5B,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/AppShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,SAAS,CAAC;AAqGzD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4LrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import Link from "next/link";
|
|
5
|
+
import { usePathname } from "next/navigation";
|
|
6
|
+
import classNames from "classnames";
|
|
7
|
+
import { Sidebar } from "primereact/sidebar";
|
|
8
|
+
// ─── helpers ────────────────────────────────────────────────────────────────
|
|
9
|
+
const isActive = (pathname, href) => Boolean(href && (pathname === href || pathname.startsWith(href + "/")));
|
|
10
|
+
const NavItemLink = ({ item, pathname, onClick, collapsed = false }) => {
|
|
11
|
+
const active = isActive(pathname, item.href);
|
|
12
|
+
const cls = classNames("mantis-core-appshell-nav-item", "w-full flex items-center gap-2.5 px-3 py-2.5 rounded-md text-sm transition-all duration-150 text-left", collapsed ? "justify-center" : "", active
|
|
13
|
+
? "bg-primary/10 text-primary font-semibold"
|
|
14
|
+
: "text-muted-foreground font-medium hover:bg-primary/5 hover:text-primary");
|
|
15
|
+
const inner = (_jsxs(_Fragment, { children: [item.icon && (_jsx("span", { className: 'shrink-0 w-4 flex items-center justify-center', children: item.icon })), !collapsed && _jsx("span", { className: 'flex-1 truncate', children: item.label }), !collapsed && active && _jsx("span", { className: 'w-1.5 h-1.5 rounded-full bg-primary shrink-0' })] }));
|
|
16
|
+
return item.href ? (_jsx(Link, { href: item.href, onClick: onClick, className: cls, title: collapsed ? item.label : undefined, children: inner })) : (_jsx("button", { onClick: onClick, className: cls, title: collapsed ? item.label : undefined, children: inner }));
|
|
17
|
+
};
|
|
18
|
+
const NavGroup = ({ item, pathname, onNavigate, collapsed = false }) => (_jsxs("div", { className: 'mantis-core-appshell-nav-group', children: [!collapsed && (_jsxs("span", { className: 'block px-3 py-1.5 text-[0.7rem] font-semibold uppercase tracking-wider', style: { color: "var(--muted-foreground)" }, children: [item.icon && _jsx("span", { className: 'mr-1.5', children: item.icon }), item.label] })), item.children?.map((child) => (_jsx(NavItemLink, { item: child, pathname: pathname, onClick: onNavigate, collapsed: collapsed }, child.label)))] }));
|
|
19
|
+
const NavList = ({ items, pathname, onNavigate, collapsed = false }) => (_jsx("ul", { className: 'flex flex-col gap-0.5 list-none m-0 p-0', children: items.map((item) => item.children?.length ? (_jsx("li", { children: _jsx(NavGroup, { item: item, pathname: pathname, onNavigate: onNavigate, collapsed: collapsed }) }, item.label)) : (_jsx("li", { children: _jsx(NavItemLink, { item: item, pathname: pathname, onClick: onNavigate, collapsed: collapsed }) }, item.label))) }));
|
|
20
|
+
// ─── AppShell ────────────────────────────────────────────────────────────────
|
|
21
|
+
const AppShell = ({ navItems, brand, topbarActions, user, footer, children, collapsible = false, defaultCollapsed = false, }) => {
|
|
22
|
+
const pathname = usePathname();
|
|
23
|
+
const [mobileOpen, setMobileOpen] = useState(false);
|
|
24
|
+
const [collapsed, setCollapsed] = useState(defaultCollapsed);
|
|
25
|
+
return (_jsxs("div", { className: 'mantis-core-appshell flex min-h-screen', children: [_jsxs("aside", { className: classNames("mantis-core-appshell-sidebar hidden lg:flex flex-col shrink-0 border-r border-border transition-[width] duration-200", collapsible && collapsed ? "w-14" : "w-60"), style: { background: "var(--card)" }, children: [brand && (_jsxs("div", { className: 'mantis-core-appshell-sidebar-brand flex items-center h-16 px-4 border-b border-border shrink-0', style: {
|
|
26
|
+
background: "linear-gradient(110deg, color-mix(in oklch, var(--primary), white 92%), color-mix(in oklch, var(--accent), white 90%))",
|
|
27
|
+
overflow: "hidden",
|
|
28
|
+
}, children: [!collapsed && brand, collapsible && (_jsx("button", { onClick: () => setCollapsed((c) => !c), "aria-label": "Toggle sidebar", className: classNames("ml-auto p-1 rounded-sm bg-transparent border-0 cursor-pointer text-muted-foreground hover:text-primary transition-colors duration-150", collapsed ? "mx-auto" : ""), style: { lineHeight: 0 }, children: _jsx("svg", { width: '16', height: '16', viewBox: '0 0 16 16', fill: 'none', stroke: 'currentColor', strokeWidth: '1.75', strokeLinecap: 'round', strokeLinejoin: 'round', children: collapsed ? (_jsx("polyline", { points: '6 3 11 8 6 13' })) : (_jsx("polyline", { points: '10 3 5 8 10 13' })) }) }))] })), !brand && collapsible && (_jsx("div", { className: 'flex items-center justify-center h-10 border-b border-border', children: _jsx("button", { onClick: () => setCollapsed((c) => !c), "aria-label": "Toggle sidebar", className: 'p-1 rounded-sm bg-transparent border-0 cursor-pointer text-muted-foreground hover:text-primary transition-colors duration-150', style: { lineHeight: 0 }, children: _jsx("svg", { width: '16', height: '16', viewBox: '0 0 16 16', fill: 'none', stroke: 'currentColor', strokeWidth: '1.75', strokeLinecap: 'round', strokeLinejoin: 'round', children: collapsed ? (_jsx("polyline", { points: '6 3 11 8 6 13' })) : (_jsx("polyline", { points: '10 3 5 8 10 13' })) }) }) })), _jsx("nav", { className: 'flex-1 overflow-y-auto p-3', children: _jsx(NavList, { items: navItems, pathname: pathname, collapsed: collapsible && collapsed }) }), footer && !collapsed && (_jsx("div", { className: 'mantis-core-appshell-sidebar-footer shrink-0 border-t border-border p-3', children: footer }))] }), _jsxs("div", { className: 'flex flex-col flex-1 min-w-0', children: [_jsxs("header", { className: 'mantis-core-appshell-topbar flex items-center h-16 px-4 sm:px-6 border-b border-border shrink-0 gap-3', style: {
|
|
29
|
+
background: "var(--card)",
|
|
30
|
+
boxShadow: "0 1px 3px color-mix(in oklch, var(--foreground), transparent 92%)",
|
|
31
|
+
}, children: [_jsx("button", { className: 'lg:hidden p-2 rounded-sm bg-transparent border-0 cursor-pointer text-muted-foreground hover:text-primary transition-colors duration-150 leading-none', "aria-label": 'Abrir men\u00FA', "aria-expanded": mobileOpen, onClick: () => setMobileOpen(true), children: _jsxs("svg", { width: '18', height: '18', viewBox: '0 0 18 18', fill: 'none', stroke: 'currentColor', strokeWidth: '1.75', strokeLinecap: 'round', children: [_jsx("line", { x1: '2', y1: '4.5', x2: '16', y2: '4.5' }), _jsx("line", { x1: '2', y1: '9', x2: '16', y2: '9' }), _jsx("line", { x1: '2', y1: '13.5', x2: '16', y2: '13.5' })] }) }), brand && (_jsx("div", { className: 'lg:hidden flex items-center', children: brand })), _jsx("div", { className: 'flex-1' }), topbarActions && (_jsx("div", { className: 'mantis-core-appshell-topbar-actions flex items-center gap-2', children: topbarActions })), user && (_jsx("div", { className: 'mantis-core-appshell-topbar-user flex items-center', children: user }))] }), _jsx("main", { className: 'mantis-core-appshell-content flex-1', children: children })] }), _jsxs(Sidebar, { visible: mobileOpen, onHide: () => setMobileOpen(false), position: 'left', className: 'mantis-core-appshell-mobile-drawer w-72', style: { background: "var(--card)" }, children: [brand && (_jsx("div", { className: 'flex items-center mb-4 pb-4 border-b border-border', style: {
|
|
32
|
+
background: "linear-gradient(110deg, color-mix(in oklch, var(--primary), white 92%), color-mix(in oklch, var(--accent), white 90%))",
|
|
33
|
+
margin: "-1rem -1rem 1rem",
|
|
34
|
+
padding: "1rem",
|
|
35
|
+
}, children: brand })), _jsx(NavList, { items: navItems, pathname: pathname, onNavigate: () => setMobileOpen(false) }), footer && (_jsx("div", { className: 'mt-auto pt-4 border-t border-border', children: footer }))] })] }));
|
|
36
|
+
};
|
|
37
|
+
export default AppShell;
|
|
38
|
+
//# sourceMappingURL=AppShell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/AppShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { AdminBreadcrumbItem } from "../admin-layout/types";
|
|
3
|
+
type BreadcrumbsProps = {
|
|
4
|
+
items: readonly AdminBreadcrumbItem[];
|
|
5
|
+
};
|
|
6
|
+
declare const Breadcrumbs: React.FC<BreadcrumbsProps>;
|
|
7
|
+
export default Breadcrumbs;
|
|
8
|
+
//# sourceMappingURL=Breadcrumbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/Breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACvC,CAAC;AAEF,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoC3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
const Breadcrumbs = ({ items }) => {
|
|
4
|
+
if (!items.length)
|
|
5
|
+
return null;
|
|
6
|
+
return (_jsx("nav", { "aria-label": 'Breadcrumb', className: 'mb-2', children: _jsx("ol", { className: 'flex flex-wrap items-center gap-1.5 text-xs', children: items.map((item, index) => {
|
|
7
|
+
const isLast = index === items.length - 1;
|
|
8
|
+
return (_jsxs("li", { className: 'flex items-center gap-1.5', children: [item.href && !isLast ? (_jsx(Link, { href: item.href, className: 'transition-colors hover:opacity-80', style: { color: "var(--muted-foreground)" }, children: item.label })) : (_jsx("span", { style: {
|
|
9
|
+
color: isLast
|
|
10
|
+
? "color-mix(in oklch, var(--primary), black 24%)"
|
|
11
|
+
: "var(--muted-foreground)",
|
|
12
|
+
fontWeight: isLast ? 600 : 500,
|
|
13
|
+
}, children: item.label })), !isLast && _jsx("span", { style: { color: "var(--muted-foreground)" }, children: "/" })] }, `${item.label}-${index}`));
|
|
14
|
+
}) }) }));
|
|
15
|
+
};
|
|
16
|
+
export default Breadcrumbs;
|
|
17
|
+
//# sourceMappingURL=Breadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/Breadcrumbs.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,WAAW,GAA+B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC5D,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,CACL,4BAAgB,YAAY,EAAC,SAAS,EAAC,MAAM,YAC3C,aAAI,SAAS,EAAC,6CAA6C,YACxD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAE1C,OAAO,CACL,cAAmC,SAAS,EAAC,2BAA2B,aACrE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACtB,KAAC,IAAI,IACH,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,YAC1C,IAAI,CAAC,KAAK,GACN,CACR,CAAC,CAAC,CAAC,CACF,eACE,KAAK,EAAE;gCACL,KAAK,EAAE,MAAM;oCACX,CAAC,CAAC,gDAAgD;oCAClD,CAAC,CAAC,yBAAyB;gCAC7B,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;6BAC/B,YACA,IAAI,CAAC,KAAK,GACN,CACR,EACA,CAAC,MAAM,IAAI,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,kBAAU,KAnBhE,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAoB5B,CACN,CAAC;YACJ,CAAC,CAAC,GACC,GACD,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type AppNavItem = {
|
|
3
|
+
label: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
children?: AppNavItem[];
|
|
7
|
+
};
|
|
8
|
+
export type AppShellProps = {
|
|
9
|
+
navItems: AppNavItem[];
|
|
10
|
+
/** Brand slot: logo/name rendered in the sidebar header and topbar (mobile) */
|
|
11
|
+
brand?: ReactNode;
|
|
12
|
+
/** Extra content rendered in the topbar right area, before the user slot */
|
|
13
|
+
topbarActions?: ReactNode;
|
|
14
|
+
/** User profile slot rendered at the end of the topbar */
|
|
15
|
+
user?: ReactNode;
|
|
16
|
+
/** Optional footer rendered at the bottom of the sidebar */
|
|
17
|
+
footer?: ReactNode;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
/** Enable collapsible desktop sidebar (default: false) */
|
|
20
|
+
collapsible?: boolean;
|
|
21
|
+
/** Initial collapsed state when collapsible is true (default: false) */
|
|
22
|
+
defaultCollapsed?: boolean;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/pages/app-shell/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,6EAA6E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RegisterOptions } from "react-hook-form";
|
|
2
|
+
export declare function requiredRule(msg?: string): RegisterOptions;
|
|
3
|
+
export declare function notEmptyRule(msg?: string): RegisterOptions;
|
|
4
|
+
export declare function emailRule(msg?: string): RegisterOptions;
|
|
5
|
+
export declare function phoneRule(msg?: string): RegisterOptions;
|
|
6
|
+
export declare function cedulaRule(msg?: string): RegisterOptions;
|
|
7
|
+
export declare function rucRule(msg?: string): RegisterOptions;
|
|
8
|
+
export declare function minLengthRule(n: number, msg?: string): RegisterOptions;
|
|
9
|
+
export declare function maxLengthRule(n: number, msg?: string): RegisterOptions;
|
|
10
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/validation/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAcvD,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAE1D;AAED,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAK1D;AAED,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAEvD;AAED,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAEvD;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAExD;AAED,wBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAErD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAEtE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAEtE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { isNotEmptyString, isEmail, isPhone, isEcuadorianCedula, isRUC } from "@mantis-core/utils";
|
|
2
|
+
const MSG = {
|
|
3
|
+
required: "Este campo es obligatorio",
|
|
4
|
+
notEmpty: "Este campo no puede estar vacío",
|
|
5
|
+
email: "Ingrese un correo electrónico válido",
|
|
6
|
+
phone: "Ingrese un número de teléfono válido",
|
|
7
|
+
cedula: "Ingrese una cédula ecuatoriana válida",
|
|
8
|
+
ruc: "Ingrese un RUC ecuatoriano válido",
|
|
9
|
+
minLength: (n) => `Mínimo ${n} caracteres`,
|
|
10
|
+
maxLength: (n) => `Máximo ${n} caracteres`,
|
|
11
|
+
};
|
|
12
|
+
export function requiredRule(msg) {
|
|
13
|
+
return { required: msg ?? MSG.required };
|
|
14
|
+
}
|
|
15
|
+
export function notEmptyRule(msg) {
|
|
16
|
+
return {
|
|
17
|
+
required: msg ?? MSG.required,
|
|
18
|
+
validate: (v) => isNotEmptyString(v) || (msg ?? MSG.notEmpty),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function emailRule(msg) {
|
|
22
|
+
return { validate: (v) => isEmail(v) || (msg ?? MSG.email) };
|
|
23
|
+
}
|
|
24
|
+
export function phoneRule(msg) {
|
|
25
|
+
return { validate: (v) => isPhone(v) || (msg ?? MSG.phone) };
|
|
26
|
+
}
|
|
27
|
+
export function cedulaRule(msg) {
|
|
28
|
+
return { validate: (v) => isEcuadorianCedula(v) || (msg ?? MSG.cedula) };
|
|
29
|
+
}
|
|
30
|
+
export function rucRule(msg) {
|
|
31
|
+
return { validate: (v) => isRUC(v) || (msg ?? MSG.ruc) };
|
|
32
|
+
}
|
|
33
|
+
export function minLengthRule(n, msg) {
|
|
34
|
+
return { minLength: { value: n, message: msg ?? MSG.minLength(n) } };
|
|
35
|
+
}
|
|
36
|
+
export function maxLengthRule(n, msg) {
|
|
37
|
+
return { maxLength: { value: n, message: msg ?? MSG.maxLength(n) } };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/validation/rules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEnG,MAAM,GAAG,GAAG;IACV,QAAQ,EAAE,2BAA2B;IACrC,QAAQ,EAAE,iCAAiC;IAC3C,KAAK,EAAE,sCAAsC;IAC7C,KAAK,EAAE,sCAAsC;IAC7C,MAAM,EAAE,uCAAuC;IAC/C,GAAG,EAAE,mCAAmC;IACxC,SAAS,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa;IAClD,SAAS,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa;CAC1C,CAAC;AAEX,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO;QACL,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ;QAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,GAAY;IACnD,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,GAAY;IACnD,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/validation/zod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/validation/zod.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantis-core/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Reusable React UI components for Mantis Core.",
|
|
6
6
|
"type": "module",
|
|
@@ -28,6 +28,14 @@
|
|
|
28
28
|
"./table-filter-field": {
|
|
29
29
|
"types": "./dist/components/table-filter-field.d.ts",
|
|
30
30
|
"import": "./dist/components/table-filter-field.js"
|
|
31
|
+
},
|
|
32
|
+
"./validation": {
|
|
33
|
+
"types": "./dist/validation/index.d.ts",
|
|
34
|
+
"import": "./dist/validation/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./validation/zod": {
|
|
37
|
+
"types": "./dist/validation/zod.d.ts",
|
|
38
|
+
"import": "./dist/validation/zod.js"
|
|
31
39
|
}
|
|
32
40
|
},
|
|
33
41
|
"files": [
|
|
@@ -37,16 +45,44 @@
|
|
|
37
45
|
"COMPONENTS.md",
|
|
38
46
|
"PRIMEREACT_MAPPING.md"
|
|
39
47
|
],
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@hookform/resolvers": "^3.10.0",
|
|
50
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
51
|
+
"@testing-library/react": "^16.3.0",
|
|
52
|
+
"@testing-library/user-event": "^14.5.2",
|
|
53
|
+
"chart.js": "^4.5.0",
|
|
54
|
+
"jsdom": "^26.1.0",
|
|
55
|
+
"react-chartjs-2": "^5.3.1",
|
|
56
|
+
"zod": "^3.25.76"
|
|
57
|
+
},
|
|
40
58
|
"publishConfig": {
|
|
41
59
|
"access": "public"
|
|
42
60
|
},
|
|
43
61
|
"peerDependencies": {
|
|
62
|
+
"@hookform/resolvers": ">=3.0.0",
|
|
63
|
+
"chart.js": ">=4.0.0",
|
|
44
64
|
"next": "^16.0.0",
|
|
45
65
|
"primeicons": "^7.0.0",
|
|
46
66
|
"primereact": "^10.9.0",
|
|
47
67
|
"react": "^19.0.0",
|
|
68
|
+
"react-chartjs-2": ">=5.0.0",
|
|
48
69
|
"react-dom": "^19.0.0",
|
|
49
|
-
"react-hook-form": "^7.68.0"
|
|
70
|
+
"react-hook-form": "^7.68.0",
|
|
71
|
+
"zod": ">=3.0.0"
|
|
72
|
+
},
|
|
73
|
+
"peerDependenciesMeta": {
|
|
74
|
+
"@hookform/resolvers": {
|
|
75
|
+
"optional": true
|
|
76
|
+
},
|
|
77
|
+
"chart.js": {
|
|
78
|
+
"optional": true
|
|
79
|
+
},
|
|
80
|
+
"react-chartjs-2": {
|
|
81
|
+
"optional": true
|
|
82
|
+
},
|
|
83
|
+
"zod": {
|
|
84
|
+
"optional": true
|
|
85
|
+
}
|
|
50
86
|
},
|
|
51
87
|
"dependencies": {
|
|
52
88
|
"@ckeditor/ckeditor5-react": "^11.0.0",
|
|
@@ -58,7 +94,7 @@
|
|
|
58
94
|
"react-datepicker": "^9.0.0",
|
|
59
95
|
"react-leaflet": "^5.0.0",
|
|
60
96
|
"react-select": "^5.10.2",
|
|
61
|
-
"@mantis-core/utils": "^0.
|
|
97
|
+
"@mantis-core/utils": "^0.5.0"
|
|
62
98
|
},
|
|
63
99
|
"repository": {
|
|
64
100
|
"type": "git",
|