@mostajs/rbac 1.0.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/README.md +694 -0
- package/dist/api/categories-id.d.ts +21 -0
- package/dist/api/categories-id.d.ts.map +1 -0
- package/dist/api/categories-id.js +66 -0
- package/dist/api/categories-id.js.map +1 -0
- package/dist/api/categories.d.ts +15 -0
- package/dist/api/categories.d.ts.map +1 -0
- package/dist/api/categories.js +65 -0
- package/dist/api/categories.js.map +1 -0
- package/dist/api/matrix.d.ts +15 -0
- package/dist/api/matrix.d.ts.map +1 -0
- package/dist/api/matrix.js +104 -0
- package/dist/api/matrix.js.map +1 -0
- package/dist/api/permissions-id.d.ts +21 -0
- package/dist/api/permissions-id.d.ts.map +1 -0
- package/dist/api/permissions-id.js +48 -0
- package/dist/api/permissions-id.js.map +1 -0
- package/dist/api/permissions.d.ts +16 -0
- package/dist/api/permissions.d.ts.map +1 -0
- package/dist/api/permissions.js +102 -0
- package/dist/api/permissions.js.map +1 -0
- package/dist/api/roles-id.d.ts +27 -0
- package/dist/api/roles-id.d.ts.map +1 -0
- package/dist/api/roles-id.js +89 -0
- package/dist/api/roles-id.js.map +1 -0
- package/dist/api/roles.d.ts +15 -0
- package/dist/api/roles.d.ts.map +1 -0
- package/dist/api/roles.js +65 -0
- package/dist/api/roles.js.map +1 -0
- package/dist/api/seed.d.ts +16 -0
- package/dist/api/seed.d.ts.map +1 -0
- package/dist/api/seed.js +49 -0
- package/dist/api/seed.js.map +1 -0
- package/dist/api/users-id.d.ts +28 -0
- package/dist/api/users-id.d.ts.map +1 -0
- package/dist/api/users-id.js +94 -0
- package/dist/api/users-id.js.map +1 -0
- package/dist/api/users.d.ts +17 -0
- package/dist/api/users.d.ts.map +1 -0
- package/dist/api/users.js +80 -0
- package/dist/api/users.js.map +1 -0
- package/dist/components/CategoriesManager.d.ts +5 -0
- package/dist/components/CategoriesManager.d.ts.map +1 -0
- package/dist/components/CategoriesManager.js +115 -0
- package/dist/components/CategoriesManager.js.map +1 -0
- package/dist/components/PermissionMatrix.d.ts +5 -0
- package/dist/components/PermissionMatrix.d.ts.map +1 -0
- package/dist/components/PermissionMatrix.js +82 -0
- package/dist/components/PermissionMatrix.js.map +1 -0
- package/dist/components/PermissionsManager.d.ts +5 -0
- package/dist/components/PermissionsManager.d.ts.map +1 -0
- package/dist/components/PermissionsManager.js +89 -0
- package/dist/components/PermissionsManager.js.map +1 -0
- package/dist/components/RBACManager.d.ts +5 -0
- package/dist/components/RBACManager.d.ts.map +1 -0
- package/dist/components/RBACManager.js +16 -0
- package/dist/components/RBACManager.js.map +1 -0
- package/dist/components/RolesManager.d.ts +5 -0
- package/dist/components/RolesManager.d.ts.map +1 -0
- package/dist/components/RolesManager.js +97 -0
- package/dist/components/RolesManager.js.map +1 -0
- package/dist/components/UsersManager.d.ts +10 -0
- package/dist/components/UsersManager.d.ts.map +1 -0
- package/dist/components/UsersManager.js +111 -0
- package/dist/components/UsersManager.js.map +1 -0
- package/dist/components/ui/alert-dialog.d.ts +19 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.js +67 -0
- package/dist/components/ui/alert-dialog.js.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +37 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +48 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/card.d.ts +10 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +43 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +23 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +60 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +19 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +22 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/select.d.ts +16 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +61 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/table.d.ts +11 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/table.js +49 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/tabs.d.ts +12 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +46 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/rbac-api.d.ts +66 -0
- package/dist/lib/rbac-api.d.ts.map +1 -0
- package/dist/lib/rbac-api.js +158 -0
- package/dist/lib/rbac-api.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +7 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +14 -0
- package/dist/server.js.map +1 -0
- package/dist/types/index.d.ts +88 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +126 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { cn } from "../../lib/utils";
|
|
14
|
+
function Input(_a) {
|
|
15
|
+
var { className, type } = _a, props = __rest(_a, ["className", "type"]);
|
|
16
|
+
return (_jsx("input", Object.assign({ type: type, "data-slot": "input", className: cn("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className) }, props)));
|
|
17
|
+
}
|
|
18
|
+
export { Input };
|
|
19
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../components/ui/input.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,SAAS,KAAK,CAAC,EAA4D;QAA5D,EAAE,SAAS,EAAE,IAAI,OAA2C,EAAtC,KAAK,cAA3B,qBAA6B,CAAF;IACxC,OAAO,CACL,8BACE,IAAI,EAAE,IAAI,eACA,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,4bAA4b,EAC5b,+EAA+E,EAC/E,wGAAwG,EACxG,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Label as LabelPrimitive } from "radix-ui";
|
|
3
|
+
declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export { Label };
|
|
5
|
+
//# sourceMappingURL=label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../components/ui/label.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA;AAIlD,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAWlD;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
2
|
+
"use client";
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
+
import { Label as LabelPrimitive } from "radix-ui";
|
|
16
|
+
import { cn } from "../../lib/utils";
|
|
17
|
+
function Label(_a) {
|
|
18
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
19
|
+
return (_jsx(LabelPrimitive.Root, Object.assign({ "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className) }, props)));
|
|
20
|
+
}
|
|
21
|
+
export { Label };
|
|
22
|
+
//# sourceMappingURL=label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../../components/ui/label.tsx"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,YAAY,CAAA;;;;;;;;;;;;;AAGZ,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,SAAS,KAAK,CAAC,EAGoC;QAHpC,EACb,SAAS,OAEwC,EAD9C,KAAK,cAFK,aAGd,CADS;IAER,OAAO,CACL,KAAC,cAAc,CAAC,IAAI,+BACR,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,qNAAqN,EACrN,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Select as SelectPrimitive } from "radix-ui";
|
|
3
|
+
declare function Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function SelectTrigger({ className, size, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
|
|
7
|
+
size?: "sm" | "default";
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function SelectContent({ className, children, position, align, ...props }: React.ComponentProps<typeof SelectPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare function SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function SelectItem({ className, children, ...props }: React.ComponentProps<typeof SelectPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function SelectSeparator({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
|
|
16
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../components/ui/select.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AAIpD,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAEnD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACxB,2CAiBA;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAyB,EACzB,KAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CA6BtD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAqBnD;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,2CAQxD;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,2CAa7D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,2CAa/D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
2
|
+
"use client";
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
16
|
+
import { Select as SelectPrimitive } from "radix-ui";
|
|
17
|
+
import { cn } from "../../lib/utils";
|
|
18
|
+
function Select(_a) {
|
|
19
|
+
var props = __rest(_a, []);
|
|
20
|
+
return _jsx(SelectPrimitive.Root, Object.assign({ "data-slot": "select" }, props));
|
|
21
|
+
}
|
|
22
|
+
function SelectGroup(_a) {
|
|
23
|
+
var props = __rest(_a, []);
|
|
24
|
+
return _jsx(SelectPrimitive.Group, Object.assign({ "data-slot": "select-group" }, props));
|
|
25
|
+
}
|
|
26
|
+
function SelectValue(_a) {
|
|
27
|
+
var props = __rest(_a, []);
|
|
28
|
+
return _jsx(SelectPrimitive.Value, Object.assign({ "data-slot": "select-value" }, props));
|
|
29
|
+
}
|
|
30
|
+
function SelectTrigger(_a) {
|
|
31
|
+
var { className, size = "default", children } = _a, props = __rest(_a, ["className", "size", "children"]);
|
|
32
|
+
return (_jsxs(SelectPrimitive.Trigger, Object.assign({ "data-slot": "select-trigger", "data-size": size, className: cn("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className) }, props, { children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })] })));
|
|
33
|
+
}
|
|
34
|
+
function SelectContent(_a) {
|
|
35
|
+
var { className, children, position = "item-aligned", align = "center" } = _a, props = __rest(_a, ["className", "children", "position", "align"]);
|
|
36
|
+
return (_jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, Object.assign({ "data-slot": "select-content", className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md", position === "popper" &&
|
|
37
|
+
"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position, align: align }, props, { children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.Viewport, { className: cn("p-1", position === "popper" &&
|
|
38
|
+
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"), children: children }), _jsx(SelectScrollDownButton, {})] })) }));
|
|
39
|
+
}
|
|
40
|
+
function SelectLabel(_a) {
|
|
41
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
42
|
+
return (_jsx(SelectPrimitive.Label, Object.assign({ "data-slot": "select-label", className: cn("text-muted-foreground px-2 py-1.5 text-xs", className) }, props)));
|
|
43
|
+
}
|
|
44
|
+
function SelectItem(_a) {
|
|
45
|
+
var { className, children } = _a, props = __rest(_a, ["className", "children"]);
|
|
46
|
+
return (_jsxs(SelectPrimitive.Item, Object.assign({ "data-slot": "select-item", className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className) }, props, { children: [_jsx("span", { "data-slot": "select-item-indicator", className: "absolute right-2 flex size-3.5 items-center justify-center", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), _jsx(SelectPrimitive.ItemText, { children: children })] })));
|
|
47
|
+
}
|
|
48
|
+
function SelectSeparator(_a) {
|
|
49
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
50
|
+
return (_jsx(SelectPrimitive.Separator, Object.assign({ "data-slot": "select-separator", className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className) }, props)));
|
|
51
|
+
}
|
|
52
|
+
function SelectScrollUpButton(_a) {
|
|
53
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
54
|
+
return (_jsx(SelectPrimitive.ScrollUpButton, Object.assign({ "data-slot": "select-scroll-up-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props, { children: _jsx(ChevronUpIcon, { className: "size-4" }) })));
|
|
55
|
+
}
|
|
56
|
+
function SelectScrollDownButton(_a) {
|
|
57
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
58
|
+
return (_jsx(SelectPrimitive.ScrollDownButton, Object.assign({ "data-slot": "select-scroll-down-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props, { children: _jsx(ChevronDownIcon, { className: "size-4" }) })));
|
|
59
|
+
}
|
|
60
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
|
|
61
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../components/ui/select.tsx"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,YAAY,CAAA;;;;;;;;;;;;;AAGZ,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AAEpD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,SAAS,MAAM,CAAC,EAEoC;QAD/C,KAAK,cADM,EAEf,CADS;IAER,OAAO,KAAC,eAAe,CAAC,IAAI,+BAAW,QAAQ,IAAK,KAAK,EAAI,CAAA;AAC/D,CAAC;AAED,SAAS,WAAW,CAAC,EAEgC;QADhD,KAAK,cADW,EAEpB,CADS;IAER,OAAO,KAAC,eAAe,CAAC,KAAK,+BAAW,cAAc,IAAK,KAAK,EAAI,CAAA;AACtE,CAAC;AAED,SAAS,WAAW,CAAC,EAEgC;QADhD,KAAK,cADW,EAEpB,CADS;IAER,OAAO,KAAC,eAAe,CAAC,KAAK,+BAAW,cAAc,IAAK,KAAK,EAAI,CAAA;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,EAOtB;QAPsB,EACrB,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,QAAQ,OAIT,EAHI,KAAK,cAJa,iCAKtB,CADS;IAIR,OAAO,CACL,MAAC,eAAe,CAAC,OAAO,+BACZ,gBAAgB,eACf,IAAI,EACf,SAAS,EAAE,EAAE,CACX,8yBAA8yB,EAC9yB,SAAS,CACV,IACG,KAAK,eAER,QAAQ,EACT,KAAC,eAAe,CAAC,IAAI,IAAC,OAAO,kBAC3B,KAAC,eAAe,IAAC,SAAS,EAAC,mBAAmB,GAAG,GAC5B,KACC,CAC3B,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EAMgC;QANhC,EACrB,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,cAAc,EACzB,KAAK,GAAG,QAAQ,OAEqC,EADlD,KAAK,cALa,8CAMtB,CADS;IAER,OAAO,CACL,KAAC,eAAe,CAAC,MAAM,cACrB,MAAC,eAAe,CAAC,OAAO,+BACZ,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CACX,+iBAA+iB,EAC/iB,QAAQ,KAAK,QAAQ;gBACnB,iIAAiI,EACnI,SAAS,CACV,EACD,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,IACR,KAAK,eAET,KAAC,oBAAoB,KAAG,EACxB,KAAC,eAAe,CAAC,QAAQ,IACvB,SAAS,EAAE,EAAE,CACX,KAAK,EACL,QAAQ,KAAK,QAAQ;wBACnB,qGAAqG,CACxG,YAEA,QAAQ,GACgB,EAC3B,KAAC,sBAAsB,KAAG,KACF,GACH,CAC1B,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAGgC;QAHhC,EACnB,SAAS,OAE0C,EADhD,KAAK,cAFW,aAGpB,CADS;IAER,OAAO,CACL,KAAC,eAAe,CAAC,KAAK,+BACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,2CAA2C,EAAE,SAAS,CAAC,IACjE,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAIgC;QAJhC,EAClB,SAAS,EACT,QAAQ,OAE0C,EAD/C,KAAK,cAHU,yBAInB,CADS;IAER,OAAO,CACL,MAAC,eAAe,CAAC,IAAI,+BACT,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,2aAA2a,EAC3a,SAAS,CACV,IACG,KAAK,eAET,4BACY,uBAAuB,EACjC,SAAS,EAAC,4DAA4D,YAEtE,KAAC,eAAe,CAAC,aAAa,cAC5B,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,GAAG,GACF,GAC3B,EACP,KAAC,eAAe,CAAC,QAAQ,cAAE,QAAQ,GAA4B,KAC1C,CACxB,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAGgC;QAHhC,EACvB,SAAS,OAE8C,EADpD,KAAK,cAFe,aAGxB,CADS;IAER,OAAO,CACL,KAAC,eAAe,CAAC,SAAS,+BACd,kBAAkB,EAC5B,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,SAAS,CAAC,IACrE,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,EAGgC;QAHhC,EAC5B,SAAS,OAEmD,EADzD,KAAK,cAFoB,aAG7B,CADS;IAER,OAAO,CACL,KAAC,eAAe,CAAC,cAAc,+BACnB,yBAAyB,EACnC,SAAS,EAAE,EAAE,CACX,sDAAsD,EACtD,SAAS,CACV,IACG,KAAK,cAET,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,GAAG,IACL,CAClC,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,EAGgC;QAHhC,EAC9B,SAAS,OAEqD,EAD3D,KAAK,cAFsB,aAG/B,CADS;IAER,OAAO,CACL,KAAC,eAAe,CAAC,gBAAgB,+BACrB,2BAA2B,EACrC,SAAS,EAAE,EAAE,CACX,sDAAsD,EACtD,SAAS,CACV,IACG,KAAK,cAET,KAAC,eAAe,IAAC,SAAS,EAAC,QAAQ,GAAG,IACL,CACpC,CAAA;AACH,CAAC;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare function Table({ className, ...props }: React.ComponentProps<"table">): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function TableHead({ className, ...props }: React.ComponentProps<"th">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function TableCell({ className, ...props }: React.ComponentProps<"td">): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
|
|
11
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../components/ui/table.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAapE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAQ1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAW1E;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAWpE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAWrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAWrE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,2CAQjC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
2
|
+
"use client";
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
+
import { cn } from "../../lib/utils";
|
|
16
|
+
function Table(_a) {
|
|
17
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
18
|
+
return (_jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: _jsx("table", Object.assign({ "data-slot": "table", className: cn("w-full caption-bottom text-sm", className) }, props)) }));
|
|
19
|
+
}
|
|
20
|
+
function TableHeader(_a) {
|
|
21
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22
|
+
return (_jsx("thead", Object.assign({ "data-slot": "table-header", className: cn("[&_tr]:border-b", className) }, props)));
|
|
23
|
+
}
|
|
24
|
+
function TableBody(_a) {
|
|
25
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
26
|
+
return (_jsx("tbody", Object.assign({ "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className) }, props)));
|
|
27
|
+
}
|
|
28
|
+
function TableFooter(_a) {
|
|
29
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
30
|
+
return (_jsx("tfoot", Object.assign({ "data-slot": "table-footer", className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className) }, props)));
|
|
31
|
+
}
|
|
32
|
+
function TableRow(_a) {
|
|
33
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
34
|
+
return (_jsx("tr", Object.assign({ "data-slot": "table-row", className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className) }, props)));
|
|
35
|
+
}
|
|
36
|
+
function TableHead(_a) {
|
|
37
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
38
|
+
return (_jsx("th", Object.assign({ "data-slot": "table-head", className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className) }, props)));
|
|
39
|
+
}
|
|
40
|
+
function TableCell(_a) {
|
|
41
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
42
|
+
return (_jsx("td", Object.assign({ "data-slot": "table-cell", className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className) }, props)));
|
|
43
|
+
}
|
|
44
|
+
function TableCaption(_a) {
|
|
45
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
46
|
+
return (_jsx("caption", Object.assign({ "data-slot": "table-caption", className: cn("text-muted-foreground mt-4 text-sm", className) }, props)));
|
|
47
|
+
}
|
|
48
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
|
|
49
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../components/ui/table.tsx"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,YAAY,CAAA;;;;;;;;;;;;;AAIZ,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,SAAS,KAAK,CAAC,EAAsD;QAAtD,EAAE,SAAS,OAA2C,EAAtC,KAAK,cAArB,aAAuB,CAAF;IAClC,OAAO,CACL,2BACY,iBAAiB,EAC3B,SAAS,EAAC,iCAAiC,YAE3C,2CACY,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,IACrD,KAAK,EACT,GACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAsD;QAAtD,EAAE,SAAS,OAA2C,EAAtC,KAAK,cAArB,aAAuB,CAAF;IACxC,OAAO,CACL,2CACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,IACvC,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAsD;QAAtD,EAAE,SAAS,OAA2C,EAAtC,KAAK,cAArB,aAAuB,CAAF;IACtC,OAAO,CACL,2CACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,IAClD,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAsD;QAAtD,EAAE,SAAS,OAA2C,EAAtC,KAAK,cAArB,aAAuB,CAAF;IACxC,OAAO,CACL,2CACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,EAAmD;QAAnD,EAAE,SAAS,OAAwC,EAAnC,KAAK,cAArB,aAAuB,CAAF;IACrC,OAAO,CACL,wCACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAmD;QAAnD,EAAE,SAAS,OAAwC,EAAnC,KAAK,cAArB,aAAuB,CAAF;IACtC,OAAO,CACL,wCACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,oJAAoJ,EACpJ,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAmD;QAAnD,EAAE,SAAS,OAAwC,EAAnC,KAAK,cAArB,aAAuB,CAAF;IACtC,OAAO,CACL,wCACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,wGAAwG,EACxG,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAGY;QAHZ,EACpB,SAAS,OAEuB,EAD7B,KAAK,cAFY,aAGrB,CADS;IAER,OAAO,CACL,6CACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,IAC1D,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
4
|
+
declare function Tabs({ className, orientation, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare const tabsListVariants: (props?: ({
|
|
6
|
+
variant?: "default" | "line" | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
declare function TabsList({ className, variant, ...props }: React.ComponentProps<typeof TabsPrimitive.List> & VariantProps<typeof tabsListVariants>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
|
|
12
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../components/ui/tabs.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAA;AAIhD,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,WAA0B,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,2CAajD;AAED,QAAA,MAAM,gBAAgB;;8EAarB,CAAA;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,GAChD,YAAY,CAAC,OAAO,gBAAgB,CAAC,2CAStC;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,2CAcpD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,2CAQpD;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
2
|
+
"use client";
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
+
import { cva } from "class-variance-authority";
|
|
16
|
+
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
17
|
+
import { cn } from "../../lib/utils";
|
|
18
|
+
function Tabs(_a) {
|
|
19
|
+
var { className, orientation = "horizontal" } = _a, props = __rest(_a, ["className", "orientation"]);
|
|
20
|
+
return (_jsx(TabsPrimitive.Root, Object.assign({ "data-slot": "tabs", "data-orientation": orientation, orientation: orientation, className: cn("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col", className) }, props)));
|
|
21
|
+
}
|
|
22
|
+
const tabsListVariants = cva("rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col", {
|
|
23
|
+
variants: {
|
|
24
|
+
variant: {
|
|
25
|
+
default: "bg-muted",
|
|
26
|
+
line: "gap-1 bg-transparent",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
defaultVariants: {
|
|
30
|
+
variant: "default",
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
function TabsList(_a) {
|
|
34
|
+
var { className, variant = "default" } = _a, props = __rest(_a, ["className", "variant"]);
|
|
35
|
+
return (_jsx(TabsPrimitive.List, Object.assign({ "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className) }, props)));
|
|
36
|
+
}
|
|
37
|
+
function TabsTrigger(_a) {
|
|
38
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
39
|
+
return (_jsx(TabsPrimitive.Trigger, Object.assign({ "data-slot": "tabs-trigger", className: cn("focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent", "data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground", "after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100", className) }, props)));
|
|
40
|
+
}
|
|
41
|
+
function TabsContent(_a) {
|
|
42
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
43
|
+
return (_jsx(TabsPrimitive.Content, Object.assign({ "data-slot": "tabs-content", className: cn("flex-1 outline-none", className) }, props)));
|
|
44
|
+
}
|
|
45
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
|
|
46
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../components/ui/tabs.tsx"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,YAAY,CAAA;;;;;;;;;;;;;AAGZ,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAA;AAEhD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,SAAS,IAAI,CAAC,EAIoC;QAJpC,EACZ,SAAS,EACT,WAAW,GAAG,YAAY,OAEsB,EAD7C,KAAK,cAHI,4BAIb,CADS;IAER,OAAO,CACL,KAAC,aAAa,CAAC,IAAI,+BACP,MAAM,sBACE,WAAW,EAC7B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,CACX,8DAA8D,EAC9D,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,GAAG,CAC1B,mRAAmR,EACnR;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,sBAAsB;SAC7B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAA;AAED,SAAS,QAAQ,CAAC,EAKqB;QALrB,EAChB,SAAS,EACT,OAAO,GAAG,SAAS,OAGkB,EAFlC,KAAK,cAHQ,wBAIjB,CADS;IAGR,OAAO,CACL,KAAC,aAAa,CAAC,IAAI,+BACP,WAAW,kBACP,OAAO,EACrB,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,IACnD,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAGgC;QAHhC,EACnB,SAAS,OAE0C,EADhD,KAAK,cAFW,aAGpB,CADS;IAER,OAAO,CACL,KAAC,aAAa,CAAC,OAAO,+BACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,uwBAAuwB,EACvwB,uRAAuR,EACvR,2LAA2L,EAC3L,keAAke,EACle,SAAS,CACV,IACG,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAGgC;QAHhC,EACnB,SAAS,OAE0C,EADhD,KAAK,cAFW,aAGpB,CADS;IAER,OAAO,CACL,KAAC,aAAa,CAAC,OAAO,+BACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,IAC3C,KAAK,EACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { UsersManager } from './components/UsersManager';
|
|
2
|
+
export { RBACManager } from './components/RBACManager';
|
|
3
|
+
export { RolesManager } from './components/RolesManager';
|
|
4
|
+
export { PermissionsManager } from './components/PermissionsManager';
|
|
5
|
+
export { CategoriesManager } from './components/CategoriesManager';
|
|
6
|
+
export { PermissionMatrix } from './components/PermissionMatrix';
|
|
7
|
+
export { createUsersApi, createRolesApi, createPermissionsApi, createMatrixApi, createCategoriesApi, } from './lib/rbac-api';
|
|
8
|
+
export type { User, RoleOption, RoleData, PermissionData, CategoryData, MatrixData, RBACConfig, PermissionDefinition, RoleDefinition, CategoryDefinition, } from './types';
|
|
9
|
+
export type { UsersHandlerConfig } from './api/users';
|
|
10
|
+
export type { UsersIdHandlerConfig } from './api/users-id';
|
|
11
|
+
export type { RolesHandlerConfig } from './api/roles';
|
|
12
|
+
export type { RolesIdHandlerConfig } from './api/roles-id';
|
|
13
|
+
export type { PermissionsHandlerConfig } from './api/permissions';
|
|
14
|
+
export type { PermissionsIdHandlerConfig } from './api/permissions-id';
|
|
15
|
+
export type { MatrixHandlerConfig } from './api/matrix';
|
|
16
|
+
export type { CategoriesHandlerConfig } from './api/categories';
|
|
17
|
+
export type { CategoriesIdHandlerConfig } from './api/categories-id';
|
|
18
|
+
export type { SeedHandlerConfig } from './api/seed';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAGhE,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,YAAY,EACV,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAGhB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
2
|
+
// @mostajs/rbac — Reusable RBAC Management UI & API handlers
|
|
3
|
+
//
|
|
4
|
+
// CLIENT-SAFE exports only. Server-side API handlers are available
|
|
5
|
+
// via deep imports: @mostajs/rbac/api/roles, @mostajs/rbac/api/seed, etc.
|
|
6
|
+
// Components (client-side)
|
|
7
|
+
export { UsersManager } from './components/UsersManager';
|
|
8
|
+
export { RBACManager } from './components/RBACManager';
|
|
9
|
+
export { RolesManager } from './components/RolesManager';
|
|
10
|
+
export { PermissionsManager } from './components/PermissionsManager';
|
|
11
|
+
export { CategoriesManager } from './components/CategoriesManager';
|
|
12
|
+
export { PermissionMatrix } from './components/PermissionMatrix';
|
|
13
|
+
// API helpers (client-side fetch wrappers — no server deps)
|
|
14
|
+
export { createUsersApi, createRolesApi, createPermissionsApi, createMatrixApi, createCategoriesApi, } from './lib/rbac-api';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,6DAA6D;AAC7D,EAAE;AACF,mEAAmE;AACnE,0EAA0E;AAE1E,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,4DAA4D;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { User, RoleOption, RoleData, PermissionData, CategoryData, MatrixData } from '../types';
|
|
2
|
+
export declare function createUsersApi(basePath: string, rolesBasePath?: string): {
|
|
3
|
+
fetchUsers(): Promise<User[]>;
|
|
4
|
+
fetchRoles(): Promise<RoleOption[]>;
|
|
5
|
+
createUser(user: Record<string, unknown>): Promise<User>;
|
|
6
|
+
updateUser(id: string, user: Record<string, unknown>): Promise<User>;
|
|
7
|
+
deleteUser(id: string): Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
export declare function createRolesApi(basePath: string): {
|
|
10
|
+
fetchRoles(): Promise<RoleData[]>;
|
|
11
|
+
createRole(role: {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
}): Promise<RoleData>;
|
|
15
|
+
updateRole(id: string, role: {
|
|
16
|
+
name?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
}): Promise<RoleData>;
|
|
19
|
+
deleteRole(id: string): Promise<void>;
|
|
20
|
+
};
|
|
21
|
+
export declare function createPermissionsApi(basePath: string): {
|
|
22
|
+
fetchPermissions(): Promise<{
|
|
23
|
+
data: PermissionData[];
|
|
24
|
+
categories: Record<string, string>;
|
|
25
|
+
}>;
|
|
26
|
+
createPermission(perm: {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
category: string;
|
|
30
|
+
}): Promise<PermissionData>;
|
|
31
|
+
updatePermission(id: string, perm: {
|
|
32
|
+
description?: string;
|
|
33
|
+
category?: string;
|
|
34
|
+
}): Promise<PermissionData>;
|
|
35
|
+
deletePermission(id: string): Promise<void>;
|
|
36
|
+
};
|
|
37
|
+
export declare function createMatrixApi(basePath: string): {
|
|
38
|
+
fetchMatrix(): Promise<MatrixData>;
|
|
39
|
+
saveChanges(changes: {
|
|
40
|
+
roleId: string;
|
|
41
|
+
permissionId: string;
|
|
42
|
+
granted: boolean;
|
|
43
|
+
}[]): Promise<{
|
|
44
|
+
applied: number;
|
|
45
|
+
message: string;
|
|
46
|
+
}>;
|
|
47
|
+
seedRbac(): Promise<unknown>;
|
|
48
|
+
};
|
|
49
|
+
export declare function createCategoriesApi(basePath: string): {
|
|
50
|
+
fetchCategories(): Promise<CategoryData[]>;
|
|
51
|
+
createCategory(cat: {
|
|
52
|
+
name: string;
|
|
53
|
+
label: string;
|
|
54
|
+
description: string;
|
|
55
|
+
icon: string;
|
|
56
|
+
order: number;
|
|
57
|
+
}): Promise<CategoryData>;
|
|
58
|
+
updateCategory(id: string, cat: {
|
|
59
|
+
label?: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
icon?: string;
|
|
62
|
+
order?: number;
|
|
63
|
+
}): Promise<CategoryData>;
|
|
64
|
+
deleteCategory(id: string): Promise<void>;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=rbac-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac-api.d.ts","sourceRoot":"","sources":["../../lib/rbac-api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAapG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;kBAK/C,OAAO,CAAC,IAAI,EAAE,CAAC;kBAIf,OAAO,CAAC,UAAU,EAAE,CAAC;qBAQlB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;mBAQzC,MAAM,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;mBAQrD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAI9C;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;kBAIvB,OAAO,CAAC,QAAQ,EAAE,CAAC;qBAIhB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;mBAQ3D,MAAM,QAAQ;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;mBAQzE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAI9C;AAID,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM;wBAIvB,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;2BAGpE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;yBAQnF,MAAM,QAAQ;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;yBAQnF,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAIpD;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM;mBAKvB,OAAO,CAAC,UAAU,CAAC;yBAIb;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;gBAQrH,OAAO,CAAC,OAAO,CAAC;EAKrC;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM;uBAIvB,OAAO,CAAC,YAAY,EAAE,CAAC;wBAItB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;uBAQ1G,MAAM,OAAO;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;uBAQ5G,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EAIlD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
async function apiFetch(url, init) {
|
|
2
|
+
var _a;
|
|
3
|
+
const res = await fetch(url, init);
|
|
4
|
+
if (!res.ok) {
|
|
5
|
+
const err = await res.json().catch(() => ({ error: { message: res.statusText } }));
|
|
6
|
+
throw new Error(((_a = err.error) === null || _a === void 0 ? void 0 : _a.message) || `Erreur ${res.status}`);
|
|
7
|
+
}
|
|
8
|
+
return res.json();
|
|
9
|
+
}
|
|
10
|
+
// ---- Users ----
|
|
11
|
+
export function createUsersApi(basePath, rolesBasePath) {
|
|
12
|
+
const base = `${basePath}/users`;
|
|
13
|
+
const rolesBase = rolesBasePath || `${basePath}/admin/roles`;
|
|
14
|
+
return {
|
|
15
|
+
async fetchUsers() {
|
|
16
|
+
const data = await apiFetch(base);
|
|
17
|
+
return data.data;
|
|
18
|
+
},
|
|
19
|
+
async fetchRoles() {
|
|
20
|
+
try {
|
|
21
|
+
const data = await apiFetch(rolesBase);
|
|
22
|
+
return data.data;
|
|
23
|
+
}
|
|
24
|
+
catch (_a) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
async createUser(user) {
|
|
29
|
+
const data = await apiFetch(base, {
|
|
30
|
+
method: 'POST',
|
|
31
|
+
headers: { 'Content-Type': 'application/json' },
|
|
32
|
+
body: JSON.stringify(user),
|
|
33
|
+
});
|
|
34
|
+
return data.data;
|
|
35
|
+
},
|
|
36
|
+
async updateUser(id, user) {
|
|
37
|
+
const data = await apiFetch(`${base}/${id}`, {
|
|
38
|
+
method: 'PUT',
|
|
39
|
+
headers: { 'Content-Type': 'application/json' },
|
|
40
|
+
body: JSON.stringify(user),
|
|
41
|
+
});
|
|
42
|
+
return data.data;
|
|
43
|
+
},
|
|
44
|
+
async deleteUser(id) {
|
|
45
|
+
await apiFetch(`${base}/${id}`, { method: 'DELETE' });
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// ---- Roles ----
|
|
50
|
+
export function createRolesApi(basePath) {
|
|
51
|
+
const base = `${basePath}/admin/roles`;
|
|
52
|
+
return {
|
|
53
|
+
async fetchRoles() {
|
|
54
|
+
const data = await apiFetch(base);
|
|
55
|
+
return data.data;
|
|
56
|
+
},
|
|
57
|
+
async createRole(role) {
|
|
58
|
+
const data = await apiFetch(base, {
|
|
59
|
+
method: 'POST',
|
|
60
|
+
headers: { 'Content-Type': 'application/json' },
|
|
61
|
+
body: JSON.stringify(role),
|
|
62
|
+
});
|
|
63
|
+
return data.data;
|
|
64
|
+
},
|
|
65
|
+
async updateRole(id, role) {
|
|
66
|
+
const data = await apiFetch(`${base}/${id}`, {
|
|
67
|
+
method: 'PUT',
|
|
68
|
+
headers: { 'Content-Type': 'application/json' },
|
|
69
|
+
body: JSON.stringify(role),
|
|
70
|
+
});
|
|
71
|
+
return data.data;
|
|
72
|
+
},
|
|
73
|
+
async deleteRole(id) {
|
|
74
|
+
await apiFetch(`${base}/${id}`, { method: 'DELETE' });
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// ---- Permissions ----
|
|
79
|
+
export function createPermissionsApi(basePath) {
|
|
80
|
+
const base = `${basePath}/admin/permissions`;
|
|
81
|
+
return {
|
|
82
|
+
async fetchPermissions() {
|
|
83
|
+
return apiFetch(base);
|
|
84
|
+
},
|
|
85
|
+
async createPermission(perm) {
|
|
86
|
+
const data = await apiFetch(base, {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
headers: { 'Content-Type': 'application/json' },
|
|
89
|
+
body: JSON.stringify(perm),
|
|
90
|
+
});
|
|
91
|
+
return data.data;
|
|
92
|
+
},
|
|
93
|
+
async updatePermission(id, perm) {
|
|
94
|
+
const data = await apiFetch(`${base}/${id}`, {
|
|
95
|
+
method: 'PUT',
|
|
96
|
+
headers: { 'Content-Type': 'application/json' },
|
|
97
|
+
body: JSON.stringify(perm),
|
|
98
|
+
});
|
|
99
|
+
return data.data;
|
|
100
|
+
},
|
|
101
|
+
async deletePermission(id) {
|
|
102
|
+
await apiFetch(`${base}/${id}`, { method: 'DELETE' });
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// ---- Matrix ----
|
|
107
|
+
export function createMatrixApi(basePath) {
|
|
108
|
+
const base = `${basePath}/admin/permissions/matrix`;
|
|
109
|
+
const seedUrl = `${basePath}/admin/permissions/seed`;
|
|
110
|
+
return {
|
|
111
|
+
async fetchMatrix() {
|
|
112
|
+
const data = await apiFetch(base);
|
|
113
|
+
return data.data;
|
|
114
|
+
},
|
|
115
|
+
async saveChanges(changes) {
|
|
116
|
+
const data = await apiFetch(base, {
|
|
117
|
+
method: 'POST',
|
|
118
|
+
headers: { 'Content-Type': 'application/json' },
|
|
119
|
+
body: JSON.stringify({ changes }),
|
|
120
|
+
});
|
|
121
|
+
return data.data;
|
|
122
|
+
},
|
|
123
|
+
async seedRbac() {
|
|
124
|
+
const data = await apiFetch(seedUrl, { method: 'POST' });
|
|
125
|
+
return data.data;
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// ---- Categories ----
|
|
130
|
+
export function createCategoriesApi(basePath) {
|
|
131
|
+
const base = `${basePath}/admin/categories`;
|
|
132
|
+
return {
|
|
133
|
+
async fetchCategories() {
|
|
134
|
+
const data = await apiFetch(base);
|
|
135
|
+
return data.data;
|
|
136
|
+
},
|
|
137
|
+
async createCategory(cat) {
|
|
138
|
+
const data = await apiFetch(base, {
|
|
139
|
+
method: 'POST',
|
|
140
|
+
headers: { 'Content-Type': 'application/json' },
|
|
141
|
+
body: JSON.stringify(cat),
|
|
142
|
+
});
|
|
143
|
+
return data.data;
|
|
144
|
+
},
|
|
145
|
+
async updateCategory(id, cat) {
|
|
146
|
+
const data = await apiFetch(`${base}/${id}`, {
|
|
147
|
+
method: 'PUT',
|
|
148
|
+
headers: { 'Content-Type': 'application/json' },
|
|
149
|
+
body: JSON.stringify(cat),
|
|
150
|
+
});
|
|
151
|
+
return data.data;
|
|
152
|
+
},
|
|
153
|
+
async deleteCategory(id) {
|
|
154
|
+
await apiFetch(`${base}/${id}`, { method: 'DELETE' });
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=rbac-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac-api.js","sourceRoot":"","sources":["../../lib/rbac-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/utils.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9B,CAAC"}
|