@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.
Files changed (130) hide show
  1. package/README.md +694 -0
  2. package/dist/api/categories-id.d.ts +21 -0
  3. package/dist/api/categories-id.d.ts.map +1 -0
  4. package/dist/api/categories-id.js +66 -0
  5. package/dist/api/categories-id.js.map +1 -0
  6. package/dist/api/categories.d.ts +15 -0
  7. package/dist/api/categories.d.ts.map +1 -0
  8. package/dist/api/categories.js +65 -0
  9. package/dist/api/categories.js.map +1 -0
  10. package/dist/api/matrix.d.ts +15 -0
  11. package/dist/api/matrix.d.ts.map +1 -0
  12. package/dist/api/matrix.js +104 -0
  13. package/dist/api/matrix.js.map +1 -0
  14. package/dist/api/permissions-id.d.ts +21 -0
  15. package/dist/api/permissions-id.d.ts.map +1 -0
  16. package/dist/api/permissions-id.js +48 -0
  17. package/dist/api/permissions-id.js.map +1 -0
  18. package/dist/api/permissions.d.ts +16 -0
  19. package/dist/api/permissions.d.ts.map +1 -0
  20. package/dist/api/permissions.js +102 -0
  21. package/dist/api/permissions.js.map +1 -0
  22. package/dist/api/roles-id.d.ts +27 -0
  23. package/dist/api/roles-id.d.ts.map +1 -0
  24. package/dist/api/roles-id.js +89 -0
  25. package/dist/api/roles-id.js.map +1 -0
  26. package/dist/api/roles.d.ts +15 -0
  27. package/dist/api/roles.d.ts.map +1 -0
  28. package/dist/api/roles.js +65 -0
  29. package/dist/api/roles.js.map +1 -0
  30. package/dist/api/seed.d.ts +16 -0
  31. package/dist/api/seed.d.ts.map +1 -0
  32. package/dist/api/seed.js +49 -0
  33. package/dist/api/seed.js.map +1 -0
  34. package/dist/api/users-id.d.ts +28 -0
  35. package/dist/api/users-id.d.ts.map +1 -0
  36. package/dist/api/users-id.js +94 -0
  37. package/dist/api/users-id.js.map +1 -0
  38. package/dist/api/users.d.ts +17 -0
  39. package/dist/api/users.d.ts.map +1 -0
  40. package/dist/api/users.js +80 -0
  41. package/dist/api/users.js.map +1 -0
  42. package/dist/components/CategoriesManager.d.ts +5 -0
  43. package/dist/components/CategoriesManager.d.ts.map +1 -0
  44. package/dist/components/CategoriesManager.js +115 -0
  45. package/dist/components/CategoriesManager.js.map +1 -0
  46. package/dist/components/PermissionMatrix.d.ts +5 -0
  47. package/dist/components/PermissionMatrix.d.ts.map +1 -0
  48. package/dist/components/PermissionMatrix.js +82 -0
  49. package/dist/components/PermissionMatrix.js.map +1 -0
  50. package/dist/components/PermissionsManager.d.ts +5 -0
  51. package/dist/components/PermissionsManager.d.ts.map +1 -0
  52. package/dist/components/PermissionsManager.js +89 -0
  53. package/dist/components/PermissionsManager.js.map +1 -0
  54. package/dist/components/RBACManager.d.ts +5 -0
  55. package/dist/components/RBACManager.d.ts.map +1 -0
  56. package/dist/components/RBACManager.js +16 -0
  57. package/dist/components/RBACManager.js.map +1 -0
  58. package/dist/components/RolesManager.d.ts +5 -0
  59. package/dist/components/RolesManager.d.ts.map +1 -0
  60. package/dist/components/RolesManager.js +97 -0
  61. package/dist/components/RolesManager.js.map +1 -0
  62. package/dist/components/UsersManager.d.ts +10 -0
  63. package/dist/components/UsersManager.d.ts.map +1 -0
  64. package/dist/components/UsersManager.js +111 -0
  65. package/dist/components/UsersManager.js.map +1 -0
  66. package/dist/components/ui/alert-dialog.d.ts +19 -0
  67. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  68. package/dist/components/ui/alert-dialog.js +67 -0
  69. package/dist/components/ui/alert-dialog.js.map +1 -0
  70. package/dist/components/ui/badge.d.ts +10 -0
  71. package/dist/components/ui/badge.d.ts.map +1 -0
  72. package/dist/components/ui/badge.js +37 -0
  73. package/dist/components/ui/badge.js.map +1 -0
  74. package/dist/components/ui/button.d.ts +11 -0
  75. package/dist/components/ui/button.d.ts.map +1 -0
  76. package/dist/components/ui/button.js +48 -0
  77. package/dist/components/ui/button.js.map +1 -0
  78. package/dist/components/ui/card.d.ts +10 -0
  79. package/dist/components/ui/card.d.ts.map +1 -0
  80. package/dist/components/ui/card.js +43 -0
  81. package/dist/components/ui/card.js.map +1 -0
  82. package/dist/components/ui/checkbox.d.ts +5 -0
  83. package/dist/components/ui/checkbox.d.ts.map +1 -0
  84. package/dist/components/ui/checkbox.js +23 -0
  85. package/dist/components/ui/checkbox.js.map +1 -0
  86. package/dist/components/ui/dialog.d.ts +18 -0
  87. package/dist/components/ui/dialog.d.ts.map +1 -0
  88. package/dist/components/ui/dialog.js +60 -0
  89. package/dist/components/ui/dialog.js.map +1 -0
  90. package/dist/components/ui/input.d.ts +4 -0
  91. package/dist/components/ui/input.d.ts.map +1 -0
  92. package/dist/components/ui/input.js +19 -0
  93. package/dist/components/ui/input.js.map +1 -0
  94. package/dist/components/ui/label.d.ts +5 -0
  95. package/dist/components/ui/label.d.ts.map +1 -0
  96. package/dist/components/ui/label.js +22 -0
  97. package/dist/components/ui/label.js.map +1 -0
  98. package/dist/components/ui/select.d.ts +16 -0
  99. package/dist/components/ui/select.d.ts.map +1 -0
  100. package/dist/components/ui/select.js +61 -0
  101. package/dist/components/ui/select.js.map +1 -0
  102. package/dist/components/ui/table.d.ts +11 -0
  103. package/dist/components/ui/table.d.ts.map +1 -0
  104. package/dist/components/ui/table.js +49 -0
  105. package/dist/components/ui/table.js.map +1 -0
  106. package/dist/components/ui/tabs.d.ts +12 -0
  107. package/dist/components/ui/tabs.d.ts.map +1 -0
  108. package/dist/components/ui/tabs.js +46 -0
  109. package/dist/components/ui/tabs.js.map +1 -0
  110. package/dist/index.d.ts +19 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +15 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/lib/rbac-api.d.ts +66 -0
  115. package/dist/lib/rbac-api.d.ts.map +1 -0
  116. package/dist/lib/rbac-api.js +158 -0
  117. package/dist/lib/rbac-api.js.map +1 -0
  118. package/dist/lib/utils.d.ts +3 -0
  119. package/dist/lib/utils.d.ts.map +1 -0
  120. package/dist/lib/utils.js +7 -0
  121. package/dist/lib/utils.js.map +1 -0
  122. package/dist/server.d.ts +21 -0
  123. package/dist/server.d.ts.map +1 -0
  124. package/dist/server.js +14 -0
  125. package/dist/server.js.map +1 -0
  126. package/dist/types/index.d.ts +88 -0
  127. package/dist/types/index.d.ts.map +1 -0
  128. package/dist/types/index.js +4 -0
  129. package/dist/types/index.js.map +1 -0
  130. 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":"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"}
@@ -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"}
@@ -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,3 @@
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -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,7 @@
1
+ // Author: Dr Hamid MADANI drmdh@msn.com
2
+ import { clsx } from "clsx";
3
+ import { twMerge } from "tailwind-merge";
4
+ export function cn(...inputs) {
5
+ return twMerge(clsx(inputs));
6
+ }
7
+ //# sourceMappingURL=utils.js.map
@@ -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"}