@omnibase/shadcn 0.6.2 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  // src/index.ts
32
32
  var index_exports = {};
33
33
  __export(index_exports, {
34
+ ErrorForm: () => ErrorForm,
34
35
  LoginForm: () => LoginForm,
35
36
  PermissionsSelector: () => PermissionsSelector,
36
37
  PricingTable: () => PricingTable,
@@ -916,6 +917,27 @@ function SettingsForm({ flow }) {
916
917
  ] });
917
918
  }
918
919
 
920
+ // src/form/error.tsx
921
+ var import_jsx_runtime19 = require("react/jsx-runtime");
922
+ function ErrorForm({
923
+ error,
924
+ login_url = "/auth/login",
925
+ Header
926
+ }) {
927
+ const errorDetails = error.error;
928
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Card, { className: "w-full max-w-md mx-auto", children: [
929
+ Header && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CardHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CardTitle, { className: "text-center pb-1", children: Header }) }),
930
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(CardContent, { className: "space-y-4", children: [
931
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Alert, { variant: "destructive", children: [
932
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AlertTitle, { children: errorDetails?.status || "Authentication Error" }),
933
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AlertDescription, { children: errorDetails?.message || "An unexpected error occurred." })
934
+ ] }),
935
+ errorDetails?.reason && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-sm text-muted-foreground", children: errorDetails.reason }),
936
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Button, { asChild: true, className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("a", { href: login_url, children: "Back to Login" }) })
937
+ ] })
938
+ ] }) });
939
+ }
940
+
919
941
  // src/tenant-switcher/index.tsx
920
942
  var React10 = __toESM(require("react"), 1);
921
943
 
@@ -923,10 +945,10 @@ var React10 = __toESM(require("react"), 1);
923
945
  var React9 = __toESM(require("react"), 1);
924
946
  var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
925
947
  var import_lucide_react = require("lucide-react");
926
- var import_jsx_runtime19 = require("react/jsx-runtime");
948
+ var import_jsx_runtime20 = require("react/jsx-runtime");
927
949
  var Select = SelectPrimitive.Root;
928
950
  var SelectValue = SelectPrimitive.Value;
929
- var SelectTrigger = React9.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
951
+ var SelectTrigger = React9.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
930
952
  SelectPrimitive.Trigger,
931
953
  {
932
954
  ref,
@@ -937,12 +959,12 @@ var SelectTrigger = React9.forwardRef(({ className, children, ...props }, ref) =
937
959
  ...props,
938
960
  children: [
939
961
  children,
940
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
962
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
941
963
  ]
942
964
  }
943
965
  ));
944
966
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
945
- var SelectScrollUpButton = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
967
+ var SelectScrollUpButton = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
946
968
  SelectPrimitive.ScrollUpButton,
947
969
  {
948
970
  ref,
@@ -951,11 +973,11 @@ var SelectScrollUpButton = React9.forwardRef(({ className, ...props }, ref) => /
951
973
  className
952
974
  ),
953
975
  ...props,
954
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react.ChevronUp, { className: "h-4 w-4" })
976
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react.ChevronUp, { className: "h-4 w-4" })
955
977
  }
956
978
  ));
957
979
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
958
- var SelectScrollDownButton = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
980
+ var SelectScrollDownButton = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
959
981
  SelectPrimitive.ScrollDownButton,
960
982
  {
961
983
  ref,
@@ -964,11 +986,11 @@ var SelectScrollDownButton = React9.forwardRef(({ className, ...props }, ref) =>
964
986
  className
965
987
  ),
966
988
  ...props,
967
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4" })
989
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4" })
968
990
  }
969
991
  ));
970
992
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
971
- var SelectContent = React9.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
993
+ var SelectContent = React9.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
972
994
  SelectPrimitive.Content,
973
995
  {
974
996
  ref,
@@ -980,8 +1002,8 @@ var SelectContent = React9.forwardRef(({ className, children, position = "popper
980
1002
  position,
981
1003
  ...props,
982
1004
  children: [
983
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectScrollUpButton, {}),
984
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1005
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectScrollUpButton, {}),
1006
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
985
1007
  SelectPrimitive.Viewport,
986
1008
  {
987
1009
  className: cn(
@@ -991,12 +1013,12 @@ var SelectContent = React9.forwardRef(({ className, children, position = "popper
991
1013
  children
992
1014
  }
993
1015
  ),
994
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectScrollDownButton, {})
1016
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectScrollDownButton, {})
995
1017
  ]
996
1018
  }
997
1019
  ) }));
998
1020
  SelectContent.displayName = SelectPrimitive.Content.displayName;
999
- var SelectLabel = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1021
+ var SelectLabel = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1000
1022
  SelectPrimitive.Label,
1001
1023
  {
1002
1024
  ref,
@@ -1005,7 +1027,7 @@ var SelectLabel = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE
1005
1027
  }
1006
1028
  ));
1007
1029
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
1008
- var SelectItem = React9.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1030
+ var SelectItem = React9.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1009
1031
  SelectPrimitive.Item,
1010
1032
  {
1011
1033
  ref,
@@ -1015,13 +1037,13 @@ var SelectItem = React9.forwardRef(({ className, children, ...props }, ref) => /
1015
1037
  ),
1016
1038
  ...props,
1017
1039
  children: [
1018
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react.Check, { className: "h-4 w-4" }) }) }),
1019
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectPrimitive.ItemText, { children })
1040
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react.Check, { className: "h-4 w-4" }) }) }),
1041
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectPrimitive.ItemText, { children })
1020
1042
  ]
1021
1043
  }
1022
1044
  ));
1023
1045
  SelectItem.displayName = SelectPrimitive.Item.displayName;
1024
- var SelectSeparator = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1046
+ var SelectSeparator = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1025
1047
  SelectPrimitive.Separator,
1026
1048
  {
1027
1049
  ref,
@@ -1032,24 +1054,31 @@ var SelectSeparator = React9.forwardRef(({ className, ...props }, ref) => /* @__
1032
1054
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
1033
1055
 
1034
1056
  // src/tenant-switcher/index.tsx
1035
- var import_jsx_runtime20 = require("react/jsx-runtime");
1057
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1058
+ var CREATE_TENANT_VALUE = "__create_tenant__";
1036
1059
  function SwitchActiveTenant({
1037
1060
  tenants,
1038
1061
  currentTenantId,
1039
1062
  formAction,
1040
1063
  placeholder = "Select tenant...",
1041
1064
  className,
1042
- onTenantChange
1065
+ onTenantChange,
1066
+ onCreateTenant,
1067
+ createTenantLabel = "Create Tenant"
1043
1068
  }) {
1044
1069
  const [isLoading, setIsLoading] = React10.useState(false);
1045
- const handleTenantChange = async (tenantId) => {
1046
- if (tenantId === currentTenantId) return;
1070
+ const handleTenantChange = async (value) => {
1071
+ if (value === CREATE_TENANT_VALUE) {
1072
+ onCreateTenant?.();
1073
+ return;
1074
+ }
1075
+ if (value === currentTenantId) return;
1047
1076
  setIsLoading(true);
1048
1077
  try {
1049
- onTenantChange?.(tenantId);
1078
+ onTenantChange?.(value);
1050
1079
  if (formAction) {
1051
1080
  const formData = new FormData();
1052
- formData.append("tenant_id", tenantId);
1081
+ formData.append("tenant_id", value);
1053
1082
  await formAction(formData);
1054
1083
  }
1055
1084
  } catch (error) {
@@ -1059,15 +1088,21 @@ function SwitchActiveTenant({
1059
1088
  }
1060
1089
  };
1061
1090
  const currentTenant = tenants.find((tenant) => tenant.id === currentTenantId);
1062
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1091
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1063
1092
  Select,
1064
1093
  {
1065
1094
  value: currentTenantId,
1066
1095
  onValueChange: handleTenantChange,
1067
1096
  disabled: isLoading,
1068
1097
  children: [
1069
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectTrigger, { className: cn("max-w-64", className), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectValue, { placeholder, children: currentTenant ? currentTenant.name : placeholder }) }),
1070
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectContent, { children: tenants.map((tenant) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectItem, { value: tenant.id, children: tenant.name }, tenant.id)) })
1098
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectTrigger, { className: cn("max-w-64", className), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectValue, { placeholder, children: currentTenant ? currentTenant.name : placeholder }) }),
1099
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(SelectContent, { children: [
1100
+ tenants.map((tenant) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectItem, { value: tenant.id, children: tenant.name }, tenant.id)),
1101
+ onCreateTenant && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
1102
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectSeparator, {}),
1103
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectItem, { value: CREATE_TENANT_VALUE, children: createTenantLabel })
1104
+ ] })
1105
+ ] })
1071
1106
  ]
1072
1107
  }
1073
1108
  );
@@ -1076,7 +1111,7 @@ function SwitchActiveTenant({
1076
1111
  // src/pricing-table/index.tsx
1077
1112
  var React11 = __toESM(require("react"), 1);
1078
1113
  var import_lucide_react2 = require("lucide-react");
1079
- var import_jsx_runtime21 = require("react/jsx-runtime");
1114
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1080
1115
  var getCurrencySymbol = (currency) => {
1081
1116
  const symbols = {
1082
1117
  USD: "$",
@@ -1116,7 +1151,7 @@ function PricingCard({
1116
1151
  }) {
1117
1152
  const ui = product.ui || {};
1118
1153
  const isHighlighted = ui.highlighted;
1119
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1154
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1120
1155
  "div",
1121
1156
  {
1122
1157
  className: cn(
@@ -1124,11 +1159,11 @@ function PricingCard({
1124
1159
  isHighlighted ? "relative" : ""
1125
1160
  ),
1126
1161
  children: [
1127
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "h-4 flex-shrink-0 relative", children: ui.badge && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "absolute top-0 left-1/2 transform -translate-x-1/2 z-10", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "bg-primary text-primary-foreground px-3 py-1 rounded-full text-sm font-medium flex items-center gap-1 whitespace-nowrap shadow-md", children: [
1128
- ui.badge === "Most Popular" && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.Star, { className: "w-3 h-3" }),
1162
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-4 flex-shrink-0 relative", children: ui.badge && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "absolute top-0 left-1/2 transform -translate-x-1/2 z-10", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "bg-primary text-primary-foreground px-3 py-1 rounded-full text-sm font-medium flex items-center gap-1 whitespace-nowrap shadow-md", children: [
1163
+ ui.badge === "Most Popular" && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react2.Star, { className: "w-3 h-3" }),
1129
1164
  ui.badge
1130
1165
  ] }) }) }),
1131
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
1166
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1132
1167
  Card,
1133
1168
  {
1134
1169
  className: cn(
@@ -1137,35 +1172,35 @@ function PricingCard({
1137
1172
  isSelected && "ring-2 ring-primary"
1138
1173
  ),
1139
1174
  children: [
1140
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(CardHeader, { className: "text-center", children: [
1141
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(CardTitle, { className: "text-xl font-bold", children: ui.displayName || product.name }),
1142
- ui.tagline && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(CardDescription, { className: "text-base", children: ui.tagline })
1175
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(CardHeader, { className: "text-center", children: [
1176
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardTitle, { className: "text-xl font-bold", children: ui.displayName || product.name }),
1177
+ ui.tagline && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardDescription, { className: "text-base", children: ui.tagline })
1143
1178
  ] }),
1144
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(CardContent, { className: "flex-1 space-y-6", children: [
1145
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "text-center", children: [
1146
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "text-3xl font-bold", children: formatPrice(displayedPrice) }),
1147
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "text-sm text-muted-foreground", children: formatBillingPeriod(displayedPrice) })
1179
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(CardContent, { className: "flex-1 space-y-6", children: [
1180
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "text-center", children: [
1181
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "text-3xl font-bold", children: formatPrice(displayedPrice) }),
1182
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "text-sm text-muted-foreground", children: formatBillingPeriod(displayedPrice) })
1148
1183
  ] }),
1149
- (ui.features && ui.features.length > 0 || (displayedPrice.ui?.features?.length ?? 0) > 0 || (displayedPrice.ui?.limits?.length ?? 0) > 0) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-4", children: [
1150
- ui.features && ui.features.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-2", children: [
1151
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h4", { className: "font-medium text-sm text-muted-foreground uppercase tracking-wide", children: "Features" }),
1152
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("ul", { className: "space-y-2", children: ui.features.map((feature, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("li", { className: "flex items-start gap-2", children: [
1153
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.Check, { className: "w-4 h-4 text-green-500 mt-0.5 flex-shrink-0" }),
1154
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-sm", children: feature })
1184
+ (ui.features && ui.features.length > 0 || (displayedPrice.ui?.features?.length ?? 0) > 0 || (displayedPrice.ui?.limits?.length ?? 0) > 0) && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-4", children: [
1185
+ ui.features && ui.features.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2", children: [
1186
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h4", { className: "font-medium text-sm text-muted-foreground uppercase tracking-wide", children: "Features" }),
1187
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("ul", { className: "space-y-2", children: ui.features.map((feature, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("li", { className: "flex items-start gap-2", children: [
1188
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react2.Check, { className: "w-4 h-4 text-green-500 mt-0.5 flex-shrink-0" }),
1189
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "text-sm", children: feature })
1155
1190
  ] }, index)) })
1156
1191
  ] }),
1157
- displayedPrice.ui?.features && displayedPrice.ui.features.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-2", children: [
1158
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h4", { className: "font-medium text-sm text-muted-foreground uppercase tracking-wide", children: "This Plan" }),
1159
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("ul", { className: "space-y-2", children: displayedPrice.ui.features.map(
1160
- (feature, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("li", { className: "flex items-start gap-2", children: [
1161
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.Check, { className: "w-4 h-4 text-blue-500 mt-0.5 flex-0" }),
1162
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-sm", children: feature })
1192
+ displayedPrice.ui?.features && displayedPrice.ui.features.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2", children: [
1193
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h4", { className: "font-medium text-sm text-muted-foreground uppercase tracking-wide", children: "This Plan" }),
1194
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("ul", { className: "space-y-2", children: displayedPrice.ui.features.map(
1195
+ (feature, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("li", { className: "flex items-start gap-2", children: [
1196
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react2.Check, { className: "w-4 h-4 text-blue-500 mt-0.5 flex-0" }),
1197
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "text-sm", children: feature })
1163
1198
  ] }, index)
1164
1199
  ) })
1165
1200
  ] }),
1166
- displayedPrice.ui?.limits && displayedPrice.ui.limits.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-2", children: [
1167
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h4", { className: "font-medium text-sm text-muted-foreground uppercase tracking-wide", children: "Usage Limits" }),
1168
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("ul", { className: "space-y-1", children: displayedPrice.ui.limits.map((limit, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1201
+ displayedPrice.ui?.limits && displayedPrice.ui.limits.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2", children: [
1202
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h4", { className: "font-medium text-sm text-muted-foreground uppercase tracking-wide", children: "Usage Limits" }),
1203
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("ul", { className: "space-y-1", children: displayedPrice.ui.limits.map((limit, index) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1169
1204
  "li",
1170
1205
  {
1171
1206
  className: "text-sm text-muted-foreground",
@@ -1176,7 +1211,7 @@ function PricingCard({
1176
1211
  ] })
1177
1212
  ] })
1178
1213
  ] }),
1179
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(CardFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1214
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1180
1215
  Button,
1181
1216
  {
1182
1217
  className: "w-full",
@@ -1220,7 +1255,7 @@ function PricingTable({
1220
1255
  const getDisplayedPrice = (product) => product.prices.find((price) => price.interval === selectedInterval) || product.prices[0];
1221
1256
  const renderCard = (product) => {
1222
1257
  const displayedPrice = getDisplayedPrice(product);
1223
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1258
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1224
1259
  PricingCard,
1225
1260
  {
1226
1261
  product,
@@ -1230,8 +1265,8 @@ function PricingTable({
1230
1265
  }
1231
1266
  );
1232
1267
  };
1233
- const desktopCarousel = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "relative max-w-7xl mx-auto", children: [
1234
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1268
+ const desktopCarousel = /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "relative max-w-7xl mx-auto", children: [
1269
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1235
1270
  Button,
1236
1271
  {
1237
1272
  variant: "ghost",
@@ -1239,15 +1274,15 @@ function PricingTable({
1239
1274
  className: "absolute left-0 top-1/2 transform -translate-y-1/2 -translate-x-4 z-10 bg-white shadow-lg border hover:bg-gray-50 disabled:opacity-50",
1240
1275
  onClick: () => setCarouselIndex(Math.max(0, carouselIndex - 1)),
1241
1276
  disabled: carouselIndex === 0,
1242
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.ChevronLeft, { className: "w-4 h-4" })
1277
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react2.ChevronLeft, { className: "w-4 h-4" })
1243
1278
  }
1244
1279
  ),
1245
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1280
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1246
1281
  "div",
1247
1282
  {
1248
1283
  className: "overflow-hidden mx-auto",
1249
1284
  style: { width: `${3 * CARD_WIDTH + 2 * GAP}px` },
1250
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1285
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1251
1286
  "div",
1252
1287
  {
1253
1288
  className: "flex items-stretch transition-transform duration-300 ease-in-out",
@@ -1255,7 +1290,7 @@ function PricingTable({
1255
1290
  transform: `translateX(-${carouselIndex * (CARD_WIDTH + GAP)}px)`,
1256
1291
  gap: `${GAP}px`
1257
1292
  },
1258
- children: sortedProducts.map((p) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1293
+ children: sortedProducts.map((p) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1259
1294
  "div",
1260
1295
  {
1261
1296
  style: { width: `${CARD_WIDTH}px` },
@@ -1268,7 +1303,7 @@ function PricingTable({
1268
1303
  )
1269
1304
  }
1270
1305
  ),
1271
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1306
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1272
1307
  Button,
1273
1308
  {
1274
1309
  variant: "ghost",
@@ -1278,12 +1313,12 @@ function PricingTable({
1278
1313
  Math.min(sortedProducts.length - 3, carouselIndex + 1)
1279
1314
  ),
1280
1315
  disabled: carouselIndex >= sortedProducts.length - 3,
1281
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.ChevronRight, { className: "w-4 h-4" })
1316
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react2.ChevronRight, { className: "w-4 h-4" })
1282
1317
  }
1283
1318
  ),
1284
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex justify-center mt-6 space-x-2", children: Array.from(
1319
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex justify-center mt-6 space-x-2", children: Array.from(
1285
1320
  { length: Math.max(1, sortedProducts.length - 2) },
1286
- (_, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1321
+ (_, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1287
1322
  "button",
1288
1323
  {
1289
1324
  onClick: () => setCarouselIndex(i),
@@ -1297,12 +1332,12 @@ function PricingTable({
1297
1332
  )
1298
1333
  ) })
1299
1334
  ] });
1300
- const staticLayout = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1335
+ const staticLayout = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1301
1336
  "div",
1302
1337
  {
1303
1338
  className: "flex flex-row items-stretch justify-center",
1304
1339
  style: { gap: `${GAP}px` },
1305
- children: sortedProducts.map((p) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1340
+ children: sortedProducts.map((p) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1306
1341
  "div",
1307
1342
  {
1308
1343
  style: { width: `${CARD_WIDTH}px` },
@@ -1313,9 +1348,9 @@ function PricingTable({
1313
1348
  ))
1314
1349
  }
1315
1350
  );
1316
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: cn("w-full", className), children: [
1317
- showPricingToggle && hasMultipleIntervals && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex bg-gray-100 p-1 rounded-lg", children: [
1318
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1351
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: cn("w-full", className), children: [
1352
+ showPricingToggle && hasMultipleIntervals && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex bg-gray-100 p-1 rounded-lg", children: [
1353
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1319
1354
  Button,
1320
1355
  {
1321
1356
  variant: selectedInterval === "month" ? "default" : "ghost",
@@ -1325,7 +1360,7 @@ function PricingTable({
1325
1360
  children: "Monthly"
1326
1361
  }
1327
1362
  ),
1328
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1363
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1329
1364
  Button,
1330
1365
  {
1331
1366
  variant: selectedInterval === "year" ? "default" : "ghost",
@@ -1336,20 +1371,20 @@ function PricingTable({
1336
1371
  }
1337
1372
  )
1338
1373
  ] }) }),
1339
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "lg:hidden relative", children: [
1340
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1374
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "lg:hidden relative", children: [
1375
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1341
1376
  "div",
1342
1377
  {
1343
1378
  className: "overflow-hidden mx-auto",
1344
1379
  style: { width: `${CARD_WIDTH}px` },
1345
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1380
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1346
1381
  "div",
1347
1382
  {
1348
1383
  className: "flex transition-transform duration-300 ease-in-out items-stretch",
1349
1384
  style: {
1350
1385
  transform: `translateX(-${carouselIndex * CARD_WIDTH}px)`
1351
1386
  },
1352
- children: sortedProducts.map((product) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1387
+ children: sortedProducts.map((product) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1353
1388
  "div",
1354
1389
  {
1355
1390
  className: "flex-shrink-0",
@@ -1362,8 +1397,8 @@ function PricingTable({
1362
1397
  )
1363
1398
  }
1364
1399
  ),
1365
- sortedProducts.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
1366
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1400
+ sortedProducts.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
1401
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1367
1402
  Button,
1368
1403
  {
1369
1404
  variant: "ghost",
@@ -1371,10 +1406,10 @@ function PricingTable({
1371
1406
  className: "absolute left-0 top-1/2 -translate-y-1/2 -translate-x-2 z-10 bg-white shadow-lg border hover:bg-gray-50 disabled:opacity-50",
1372
1407
  onClick: () => setCarouselIndex((prev) => Math.max(0, prev - 1)),
1373
1408
  disabled: carouselIndex === 0,
1374
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.ChevronLeft, { className: "w-5 h-5" })
1409
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react2.ChevronLeft, { className: "w-5 h-5" })
1375
1410
  }
1376
1411
  ),
1377
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1412
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1378
1413
  Button,
1379
1414
  {
1380
1415
  variant: "ghost",
@@ -1384,10 +1419,10 @@ function PricingTable({
1384
1419
  (prev) => Math.min(sortedProducts.length - 1, prev + 1)
1385
1420
  ),
1386
1421
  disabled: carouselIndex >= sortedProducts.length - 1,
1387
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.ChevronRight, { className: "w-5 h-5" })
1422
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react2.ChevronRight, { className: "w-5 h-5" })
1388
1423
  }
1389
1424
  ),
1390
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex justify-center mt-6 space-x-2", children: Array.from({ length: sortedProducts.length }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1425
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex justify-center mt-6 space-x-2", children: Array.from({ length: sortedProducts.length }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1391
1426
  "button",
1392
1427
  {
1393
1428
  onClick: () => setCarouselIndex(i),
@@ -1401,13 +1436,13 @@ function PricingTable({
1401
1436
  )) })
1402
1437
  ] })
1403
1438
  ] }),
1404
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "hidden lg:block", children: sortedProducts.length <= 3 ? staticLayout : desktopCarousel })
1439
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "hidden lg:block", children: sortedProducts.length <= 3 ? staticLayout : desktopCarousel })
1405
1440
  ] });
1406
1441
  }
1407
1442
 
1408
1443
  // src/tenant-creator/index.tsx
1409
1444
  var import_react = require("react");
1410
- var import_jsx_runtime22 = require("react/jsx-runtime");
1445
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1411
1446
  function TenantCreator({
1412
1447
  config = {},
1413
1448
  formActions = {},
@@ -1456,14 +1491,14 @@ function TenantCreator({
1456
1491
  setIsLoading(false);
1457
1492
  }
1458
1493
  };
1459
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Card, { className: cn("w-full max-w-md mx-auto", className), children: [
1460
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(CardHeader, { children: [
1461
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardTitle, { children: "Organization Setup" }),
1462
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardDescription, { children: "Choose how you want to get started with your organization." })
1494
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Card, { className: cn("w-full max-w-md mx-auto", className), children: [
1495
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(CardHeader, { children: [
1496
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardTitle, { children: "Organization Setup" }),
1497
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardDescription, { children: "Choose how you want to get started with your organization." })
1463
1498
  ] }),
1464
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(CardContent, { className: "space-y-6", children: [
1465
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "grid grid-cols-2 rounded-lg bg-muted p-1", children: [
1466
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1499
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(CardContent, { className: "space-y-6", children: [
1500
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "grid grid-cols-2 rounded-lg bg-muted p-1", children: [
1501
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1467
1502
  "label",
1468
1503
  {
1469
1504
  className: cn(
@@ -1472,7 +1507,7 @@ function TenantCreator({
1472
1507
  isLoading && "pointer-events-none opacity-50"
1473
1508
  ),
1474
1509
  children: [
1475
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1510
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1476
1511
  "input",
1477
1512
  {
1478
1513
  type: "radio",
@@ -1488,7 +1523,7 @@ function TenantCreator({
1488
1523
  ]
1489
1524
  }
1490
1525
  ),
1491
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1526
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1492
1527
  "label",
1493
1528
  {
1494
1529
  className: cn(
@@ -1497,7 +1532,7 @@ function TenantCreator({
1497
1532
  isLoading && "pointer-events-none opacity-50"
1498
1533
  ),
1499
1534
  children: [
1500
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1535
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1501
1536
  "input",
1502
1537
  {
1503
1538
  type: "radio",
@@ -1514,10 +1549,10 @@ function TenantCreator({
1514
1549
  }
1515
1550
  )
1516
1551
  ] }),
1517
- mode === "create" && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("form", { onSubmit: handleCreateSubmit, className: "space-y-4", children: [
1518
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2", children: [
1519
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Label, { htmlFor: "organizationName", children: config.createForm?.organizationName?.label || "Organization Name" }),
1520
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1552
+ mode === "create" && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("form", { onSubmit: handleCreateSubmit, className: "space-y-4", children: [
1553
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-2", children: [
1554
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Label, { htmlFor: "organizationName", children: config.createForm?.organizationName?.label || "Organization Name" }),
1555
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1521
1556
  Input,
1522
1557
  {
1523
1558
  id: "organizationName",
@@ -1531,9 +1566,9 @@ function TenantCreator({
1531
1566
  }
1532
1567
  )
1533
1568
  ] }),
1534
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2", children: [
1535
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Label, { htmlFor: "billingEmail", children: config.createForm?.billingEmail?.label || "Billing Email" }),
1536
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1569
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-2", children: [
1570
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Label, { htmlFor: "billingEmail", children: config.createForm?.billingEmail?.label || "Billing Email" }),
1571
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1537
1572
  Input,
1538
1573
  {
1539
1574
  id: "billingEmail",
@@ -1547,12 +1582,12 @@ function TenantCreator({
1547
1582
  }
1548
1583
  )
1549
1584
  ] }),
1550
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Button, { type: "submit", className: "w-full", disabled: isLoading, children: isLoading ? "Creating..." : "Create Organization" })
1585
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { type: "submit", className: "w-full", disabled: isLoading, children: isLoading ? "Creating..." : "Create Organization" })
1551
1586
  ] }),
1552
- mode === "join" && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("form", { onSubmit: handleJoinSubmit, className: "space-y-4", children: [
1553
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2", children: [
1554
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Label, { htmlFor: "token", children: config.joinForm?.token?.label || "Invitation Token" }),
1555
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1587
+ mode === "join" && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("form", { onSubmit: handleJoinSubmit, className: "space-y-4", children: [
1588
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-2", children: [
1589
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Label, { htmlFor: "token", children: config.joinForm?.token?.label || "Invitation Token" }),
1590
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1556
1591
  Input,
1557
1592
  {
1558
1593
  id: "token",
@@ -1566,7 +1601,7 @@ function TenantCreator({
1566
1601
  }
1567
1602
  )
1568
1603
  ] }),
1569
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Button, { type: "submit", className: "w-full", disabled: isLoading, children: isLoading ? "Joining..." : "Join Organization" })
1604
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { type: "submit", className: "w-full", disabled: isLoading, children: isLoading ? "Joining..." : "Join Organization" })
1570
1605
  ] })
1571
1606
  ] })
1572
1607
  ] });
@@ -1574,7 +1609,7 @@ function TenantCreator({
1574
1609
 
1575
1610
  // src/user-invite/index.tsx
1576
1611
  var import_react2 = require("react");
1577
- var import_jsx_runtime23 = require("react/jsx-runtime");
1612
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1578
1613
  function UserInvite({ roles, onInvite }) {
1579
1614
  const [email, setEmail] = (0, import_react2.useState)("");
1580
1615
  const [selectedRole, setSelectedRole] = (0, import_react2.useState)("");
@@ -1619,15 +1654,15 @@ function UserInvite({ roles, onInvite }) {
1619
1654
  setSelectedRole("");
1620
1655
  setError(null);
1621
1656
  };
1622
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Card, { className: "w-full max-w-2xl", children: [
1623
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(CardHeader, { children: [
1624
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardTitle, { children: "Invite User" }),
1625
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardDescription, { children: "Send an invitation to a new user to join your organization" })
1657
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Card, { className: "w-full max-w-2xl", children: [
1658
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(CardHeader, { children: [
1659
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CardTitle, { children: "Invite User" }),
1660
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CardDescription, { children: "Send an invitation to a new user to join your organization" })
1626
1661
  ] }),
1627
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
1628
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-2", children: [
1629
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Label, { htmlFor: "email", children: "Email Address" }),
1630
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1662
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CardContent, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("form", { onSubmit: handleSubmit, className: "space-y-6", children: [
1663
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "space-y-2", children: [
1664
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Label, { htmlFor: "email", children: "Email Address" }),
1665
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1631
1666
  Input,
1632
1667
  {
1633
1668
  id: "email",
@@ -1638,19 +1673,19 @@ function UserInvite({ roles, onInvite }) {
1638
1673
  "aria-invalid": email !== "" && !isValidEmail(email)
1639
1674
  }
1640
1675
  ),
1641
- email !== "" && !isValidEmail(email) && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-xs text-destructive", children: "Please enter a valid email address" })
1676
+ email !== "" && !isValidEmail(email) && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs text-destructive", children: "Please enter a valid email address" })
1642
1677
  ] }),
1643
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-2", children: [
1644
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Label, { htmlFor: "role", children: "Role" }),
1645
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Select, { value: selectedRole, onValueChange: setSelectedRole, children: [
1646
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectTrigger, { id: "role", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectValue, { placeholder: "Select a role" }) }),
1647
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectContent, { children: roles.length > 0 ? roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectItem, { value: role, children: role }, role)) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SelectItem, { value: "no-roles", disabled: true, children: "No roles available" }) })
1678
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "space-y-2", children: [
1679
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Label, { htmlFor: "role", children: "Role" }),
1680
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Select, { value: selectedRole, onValueChange: setSelectedRole, children: [
1681
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectTrigger, { id: "role", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectValue, { placeholder: "Select a role" }) }),
1682
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectContent, { children: roles.length > 0 ? roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectItem, { value: role, children: role }, role)) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectItem, { value: "no-roles", disabled: true, children: "No roles available" }) })
1648
1683
  ] }),
1649
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-xs text-muted-foreground", children: "The role determines what permissions the user will have" })
1684
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs text-muted-foreground", children: "The role determines what permissions the user will have" })
1650
1685
  ] }),
1651
- error && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "p-3 rounded-md bg-destructive/10 border border-destructive/20", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-sm text-destructive", children: error }) }),
1652
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-end space-x-3", children: [
1653
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1686
+ error && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "p-3 rounded-md bg-destructive/10 border border-destructive/20", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-sm text-destructive", children: error }) }),
1687
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex justify-end space-x-3", children: [
1688
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1654
1689
  Button,
1655
1690
  {
1656
1691
  type: "button",
@@ -1660,7 +1695,7 @@ function UserInvite({ roles, onInvite }) {
1660
1695
  children: "Reset"
1661
1696
  }
1662
1697
  ),
1663
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { type: "submit", disabled: !isFormValid() || isSubmitting, children: isSubmitting ? "Sending..." : "Send Invitation" })
1698
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button, { type: "submit", disabled: !isFormValid() || isSubmitting, children: isSubmitting ? "Sending..." : "Send Invitation" })
1664
1699
  ] })
1665
1700
  ] }) })
1666
1701
  ] });
@@ -1672,14 +1707,14 @@ var import_react4 = require("react");
1672
1707
  // src/components/ui/separator.tsx
1673
1708
  var React14 = require("react");
1674
1709
  var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
1675
- var import_jsx_runtime24 = require("react/jsx-runtime");
1710
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1676
1711
  function Separator2({
1677
1712
  className,
1678
1713
  orientation = "horizontal",
1679
1714
  decorative = true,
1680
1715
  ...props
1681
1716
  }) {
1682
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1717
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1683
1718
  SeparatorPrimitive.Root,
1684
1719
  {
1685
1720
  "data-slot": "separator",
@@ -1700,16 +1735,16 @@ var import_react3 = require("react");
1700
1735
  // src/components/ui/popover.tsx
1701
1736
  var React15 = require("react");
1702
1737
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
1703
- var import_jsx_runtime25 = require("react/jsx-runtime");
1738
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1704
1739
  function Popover({
1705
1740
  ...props
1706
1741
  }) {
1707
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1742
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
1708
1743
  }
1709
1744
  function PopoverTrigger({
1710
1745
  ...props
1711
1746
  }) {
1712
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
1747
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
1713
1748
  }
1714
1749
  function PopoverContent({
1715
1750
  className,
@@ -1717,7 +1752,7 @@ function PopoverContent({
1717
1752
  sideOffset = 4,
1718
1753
  ...props
1719
1754
  }) {
1720
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1755
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
1721
1756
  PopoverPrimitive.Content,
1722
1757
  {
1723
1758
  "data-slot": "popover-content",
@@ -1741,15 +1776,15 @@ var import_lucide_react4 = require("lucide-react");
1741
1776
  var React16 = require("react");
1742
1777
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
1743
1778
  var import_lucide_react3 = require("lucide-react");
1744
- var import_jsx_runtime26 = require("react/jsx-runtime");
1779
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1745
1780
 
1746
1781
  // src/components/ui/command.tsx
1747
- var import_jsx_runtime27 = require("react/jsx-runtime");
1782
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1748
1783
  function Command({
1749
1784
  className,
1750
1785
  ...props
1751
1786
  }) {
1752
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1787
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1753
1788
  import_cmdk.Command,
1754
1789
  {
1755
1790
  "data-slot": "command",
@@ -1765,14 +1800,14 @@ function CommandInput({
1765
1800
  className,
1766
1801
  ...props
1767
1802
  }) {
1768
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1803
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1769
1804
  "div",
1770
1805
  {
1771
1806
  "data-slot": "command-input-wrapper",
1772
1807
  className: "flex h-9 items-center gap-2 border-b px-3",
1773
1808
  children: [
1774
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react4.SearchIcon, { className: "size-4 shrink-0 opacity-50" }),
1775
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1809
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react4.SearchIcon, { className: "size-4 shrink-0 opacity-50" }),
1810
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1776
1811
  import_cmdk.Command.Input,
1777
1812
  {
1778
1813
  "data-slot": "command-input",
@@ -1791,7 +1826,7 @@ function CommandList({
1791
1826
  className,
1792
1827
  ...props
1793
1828
  }) {
1794
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1829
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1795
1830
  import_cmdk.Command.List,
1796
1831
  {
1797
1832
  "data-slot": "command-list",
@@ -1806,7 +1841,7 @@ function CommandList({
1806
1841
  function CommandEmpty({
1807
1842
  ...props
1808
1843
  }) {
1809
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1844
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1810
1845
  import_cmdk.Command.Empty,
1811
1846
  {
1812
1847
  "data-slot": "command-empty",
@@ -1819,7 +1854,7 @@ function CommandGroup({
1819
1854
  className,
1820
1855
  ...props
1821
1856
  }) {
1822
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1857
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1823
1858
  import_cmdk.Command.Group,
1824
1859
  {
1825
1860
  "data-slot": "command-group",
@@ -1835,7 +1870,7 @@ function CommandItem({
1835
1870
  className,
1836
1871
  ...props
1837
1872
  }) {
1838
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1873
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1839
1874
  import_cmdk.Command.Item,
1840
1875
  {
1841
1876
  "data-slot": "command-item",
@@ -1850,7 +1885,7 @@ function CommandItem({
1850
1885
 
1851
1886
  // src/permissions-selector/index.tsx
1852
1887
  var import_lucide_react5 = require("lucide-react");
1853
- var import_jsx_runtime28 = require("react/jsx-runtime");
1888
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1854
1889
  function Combobox({
1855
1890
  options,
1856
1891
  value,
@@ -1864,8 +1899,8 @@ function Combobox({
1864
1899
  const [open, setOpen] = (0, import_react3.useState)(false);
1865
1900
  const selectedOption = options.find((opt) => opt.value === value);
1866
1901
  const isEmpty = options.length === 0;
1867
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
1868
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1902
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
1903
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1869
1904
  Button,
1870
1905
  {
1871
1906
  variant: "outline",
@@ -1878,21 +1913,21 @@ function Combobox({
1878
1913
  className
1879
1914
  ),
1880
1915
  children: [
1881
- isEmpty ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-muted-foreground", children: "None" }) : selectedOption ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "truncate", children: selectedOption.label }) : placeholder,
1882
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react5.ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
1916
+ isEmpty ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "text-muted-foreground", children: "None" }) : selectedOption ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "truncate", children: selectedOption.label }) : placeholder,
1917
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react5.ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
1883
1918
  ]
1884
1919
  }
1885
1920
  ) }),
1886
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1921
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1887
1922
  PopoverContent,
1888
1923
  {
1889
1924
  className: "w-[--radix-popover-trigger-width] p-0",
1890
1925
  align: "start",
1891
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Command, { children: [
1892
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CommandInput, { placeholder: searchPlaceholder }),
1893
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(CommandList, { children: [
1894
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CommandEmpty, { children: emptyText }),
1895
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CommandGroup, { children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1926
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Command, { children: [
1927
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CommandInput, { placeholder: searchPlaceholder }),
1928
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(CommandList, { children: [
1929
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CommandEmpty, { children: emptyText }),
1930
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CommandGroup, { children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1896
1931
  CommandItem,
1897
1932
  {
1898
1933
  value: option.label,
@@ -1901,7 +1936,7 @@ function Combobox({
1901
1936
  setOpen(false);
1902
1937
  },
1903
1938
  children: [
1904
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1939
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1905
1940
  import_lucide_react5.Check,
1906
1941
  {
1907
1942
  className: cn(
@@ -2007,13 +2042,13 @@ function PermissionsSelector({
2007
2042
  setPermissionRows(initialPermissions);
2008
2043
  }
2009
2044
  }, [initialPermissions]);
2010
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("space-y-4", className), children: [
2011
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "space-y-3", children: permissionRows.map((row) => {
2045
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: cn("space-y-4", className), children: [
2046
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "space-y-3", children: permissionRows.map((row) => {
2012
2047
  const relationOptions = getRelationsForNamespace(row.namespace);
2013
2048
  const objectOptions = getObjectsForNamespace(row.namespace);
2014
2049
  const showObjectSelect = objectOptions !== null;
2015
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-start gap-2", children: [
2016
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2050
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-start gap-2", children: [
2051
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2017
2052
  Button,
2018
2053
  {
2019
2054
  type: "button",
@@ -2022,11 +2057,11 @@ function PermissionsSelector({
2022
2057
  onClick: () => removePermissionRow(row.id),
2023
2058
  disabled: disabled || permissionRows.length === 1,
2024
2059
  className: "shrink-0",
2025
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react5.Trash2, { className: "h-4 w-4 text-muted-foreground" })
2060
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react5.Trash2, { className: "h-4 w-4 text-muted-foreground" })
2026
2061
  }
2027
2062
  ),
2028
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex flex-1 gap-0", children: [
2029
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2063
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex flex-1 gap-0", children: [
2064
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2030
2065
  Combobox,
2031
2066
  {
2032
2067
  options: namespaceOptions,
@@ -2038,7 +2073,7 @@ function PermissionsSelector({
2038
2073
  className: "w-1/3 min-w-[120px] rounded-r-none border-r-0"
2039
2074
  }
2040
2075
  ),
2041
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2076
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2042
2077
  Combobox,
2043
2078
  {
2044
2079
  options: relationOptions,
@@ -2053,7 +2088,7 @@ function PermissionsSelector({
2053
2088
  )
2054
2089
  }
2055
2090
  ),
2056
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2091
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2057
2092
  Combobox,
2058
2093
  {
2059
2094
  options: objectOptions ?? [],
@@ -2071,15 +2106,15 @@ function PermissionsSelector({
2071
2106
  ] })
2072
2107
  ] }, row.id);
2073
2108
  }) }),
2074
- showPreview && permissionRows.some((row) => row.namespace && row.relation) && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "rounded-md bg-muted p-3", children: [
2075
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-xs text-muted-foreground mb-2", children: "Permissions to be granted:" }),
2076
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("ul", { className: "space-y-1 text-xs font-mono", children: buildPermissions().map((perm, idx) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { className: "text-muted-foreground", children: perm }, idx)) })
2109
+ showPreview && permissionRows.some((row) => row.namespace && row.relation) && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "rounded-md bg-muted p-3", children: [
2110
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "text-xs text-muted-foreground mb-2", children: "Permissions to be granted:" }),
2111
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("ul", { className: "space-y-1 text-xs font-mono", children: buildPermissions().map((perm, idx) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("li", { className: "text-muted-foreground", children: perm }, idx)) })
2077
2112
  ] })
2078
2113
  ] });
2079
2114
  }
2080
2115
 
2081
2116
  // src/role-creator/index.tsx
2082
- var import_jsx_runtime29 = require("react/jsx-runtime");
2117
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2083
2118
  function RoleCreator({
2084
2119
  definitions,
2085
2120
  roles,
@@ -2174,15 +2209,15 @@ function RoleCreator({
2174
2209
  setIsEditMode(false);
2175
2210
  setEditingRoleId(null);
2176
2211
  };
2177
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Card, { className: "w-full max-w-4xl", children: [
2178
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(CardHeader, { children: [
2179
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CardTitle, { children: isEditMode ? `Edit Role: ${roleName}` : "Create New Role" }),
2180
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CardDescription, { children: isEditMode ? "Update permissions for this existing role" : "Define a new role with specific permissions" })
2212
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Card, { className: "w-full max-w-4xl", children: [
2213
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(CardHeader, { children: [
2214
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CardTitle, { children: isEditMode ? `Edit Role: ${roleName}` : "Create New Role" }),
2215
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CardDescription, { children: isEditMode ? "Update permissions for this existing role" : "Define a new role with specific permissions" })
2181
2216
  ] }),
2182
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(CardContent, { className: "space-y-6", children: [
2183
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "space-y-2 relative", children: [
2184
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Label, { htmlFor: "role-name", children: "Role Name" }),
2185
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2217
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(CardContent, { className: "space-y-6", children: [
2218
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "space-y-2 relative", children: [
2219
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Label, { htmlFor: "role-name", children: "Role Name" }),
2220
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2186
2221
  Input,
2187
2222
  {
2188
2223
  id: "role-name",
@@ -2193,9 +2228,9 @@ function RoleCreator({
2193
2228
  onBlur: () => setTimeout(() => setShowSuggestions(false), 200)
2194
2229
  }
2195
2230
  ),
2196
- showSuggestions && roleSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "absolute z-10 w-full mt-1 bg-background border rounded-md shadow-lg max-h-48 overflow-y-auto", children: roleSuggestions.filter(
2231
+ showSuggestions && roleSuggestions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "absolute z-10 w-full mt-1 bg-background border rounded-md shadow-lg max-h-48 overflow-y-auto", children: roleSuggestions.filter(
2197
2232
  (suggestion) => suggestion.toLowerCase().includes(roleName.toLowerCase())
2198
- ).map((suggestion) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2233
+ ).map((suggestion) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2199
2234
  "button",
2200
2235
  {
2201
2236
  className: "w-full px-4 py-2 text-left hover:bg-accent hover:text-accent-foreground text-sm",
@@ -2207,12 +2242,12 @@ function RoleCreator({
2207
2242
  },
2208
2243
  suggestion
2209
2244
  )) }),
2210
- isEditMode && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "text-xs text-amber-600 dark:text-amber-400", children: "Editing existing role - changes will update all users with this role" })
2245
+ isEditMode && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "text-xs text-amber-600 dark:text-amber-400", children: "Editing existing role - changes will update all users with this role" })
2211
2246
  ] }),
2212
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Separator2, {}),
2213
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "space-y-4", children: [
2214
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Label, { children: "Permissions" }),
2215
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2247
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Separator2, {}),
2248
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "space-y-4", children: [
2249
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Label, { children: "Permissions" }),
2250
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2216
2251
  PermissionsSelector,
2217
2252
  {
2218
2253
  definitions,
@@ -2222,10 +2257,10 @@ function RoleCreator({
2222
2257
  }
2223
2258
  )
2224
2259
  ] }),
2225
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Separator2, {}),
2226
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex justify-end space-x-3", children: [
2227
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { variant: "outline", onClick: handleReset, children: "Reset" }),
2228
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2260
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Separator2, {}),
2261
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex justify-end space-x-3", children: [
2262
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { variant: "outline", onClick: handleReset, children: "Reset" }),
2263
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2229
2264
  Button,
2230
2265
  {
2231
2266
  onClick: handleSubmit,
@@ -2243,14 +2278,14 @@ var import_react5 = require("react");
2243
2278
 
2244
2279
  // src/components/ui/table.tsx
2245
2280
  var React18 = require("react");
2246
- var import_jsx_runtime30 = require("react/jsx-runtime");
2281
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2247
2282
  function Table({ className, ...props }) {
2248
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2283
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2249
2284
  "div",
2250
2285
  {
2251
2286
  "data-slot": "table-container",
2252
2287
  className: "relative w-full overflow-x-auto",
2253
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2288
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2254
2289
  "table",
2255
2290
  {
2256
2291
  "data-slot": "table",
@@ -2262,7 +2297,7 @@ function Table({ className, ...props }) {
2262
2297
  );
2263
2298
  }
2264
2299
  function TableHeader({ className, ...props }) {
2265
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2300
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2266
2301
  "thead",
2267
2302
  {
2268
2303
  "data-slot": "table-header",
@@ -2272,7 +2307,7 @@ function TableHeader({ className, ...props }) {
2272
2307
  );
2273
2308
  }
2274
2309
  function TableBody({ className, ...props }) {
2275
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2310
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2276
2311
  "tbody",
2277
2312
  {
2278
2313
  "data-slot": "table-body",
@@ -2282,7 +2317,7 @@ function TableBody({ className, ...props }) {
2282
2317
  );
2283
2318
  }
2284
2319
  function TableRow({ className, ...props }) {
2285
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2320
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2286
2321
  "tr",
2287
2322
  {
2288
2323
  "data-slot": "table-row",
@@ -2295,7 +2330,7 @@ function TableRow({ className, ...props }) {
2295
2330
  );
2296
2331
  }
2297
2332
  function TableHead({ className, ...props }) {
2298
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2333
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2299
2334
  "th",
2300
2335
  {
2301
2336
  "data-slot": "table-head",
@@ -2308,7 +2343,7 @@ function TableHead({ className, ...props }) {
2308
2343
  );
2309
2344
  }
2310
2345
  function TableCell({ className, ...props }) {
2311
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2346
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2312
2347
  "td",
2313
2348
  {
2314
2349
  "data-slot": "table-cell",
@@ -2324,12 +2359,12 @@ function TableCell({ className, ...props }) {
2324
2359
  // src/components/ui/avatar.tsx
2325
2360
  var React19 = require("react");
2326
2361
  var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
2327
- var import_jsx_runtime31 = require("react/jsx-runtime");
2362
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2328
2363
  function Avatar({
2329
2364
  className,
2330
2365
  ...props
2331
2366
  }) {
2332
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2367
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2333
2368
  AvatarPrimitive.Root,
2334
2369
  {
2335
2370
  "data-slot": "avatar",
@@ -2345,7 +2380,7 @@ function AvatarFallback({
2345
2380
  className,
2346
2381
  ...props
2347
2382
  }) {
2348
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2383
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2349
2384
  AvatarPrimitive.Fallback,
2350
2385
  {
2351
2386
  "data-slot": "avatar-fallback",
@@ -2360,7 +2395,7 @@ function AvatarFallback({
2360
2395
 
2361
2396
  // src/user-viewer/index.tsx
2362
2397
  var import_lucide_react6 = require("lucide-react");
2363
- var import_jsx_runtime32 = require("react/jsx-runtime");
2398
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2364
2399
  function UserViewer({
2365
2400
  users,
2366
2401
  availableRoles,
@@ -2406,17 +2441,17 @@ function UserViewer({
2406
2441
  setIsUpdating((prev) => ({ ...prev, [userId]: false }));
2407
2442
  }
2408
2443
  };
2409
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Card, { className: "w-full max-w-6xl", children: [
2410
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(CardHeader, { children: [
2411
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(CardTitle, { children: "Team Members" }),
2412
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(CardDescription, { children: canEditUsers ? "View and manage users in your organization" : "View users in your organization" })
2444
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Card, { className: "w-full max-w-6xl", children: [
2445
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(CardHeader, { children: [
2446
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CardTitle, { children: "Team Members" }),
2447
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CardDescription, { children: canEditUsers ? "View and manage users in your organization" : "View users in your organization" })
2413
2448
  ] }),
2414
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(CardContent, { children: [
2415
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "mb-6", children: [
2416
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Label, { htmlFor: "search", className: "sr-only", children: "Search users" }),
2417
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "relative", children: [
2418
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react6.Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
2419
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2449
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(CardContent, { children: [
2450
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "mb-6", children: [
2451
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Label, { htmlFor: "search", className: "sr-only", children: "Search users" }),
2452
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "relative", children: [
2453
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react6.Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
2454
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2420
2455
  Input,
2421
2456
  {
2422
2457
  id: "search",
@@ -2428,7 +2463,7 @@ function UserViewer({
2428
2463
  }
2429
2464
  )
2430
2465
  ] }),
2431
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("p", { className: "text-xs text-muted-foreground mt-2", children: [
2466
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("p", { className: "text-xs text-muted-foreground mt-2", children: [
2432
2467
  "Showing ",
2433
2468
  filteredUsers.length,
2434
2469
  " of ",
@@ -2436,39 +2471,39 @@ function UserViewer({
2436
2471
  " users"
2437
2472
  ] })
2438
2473
  ] }),
2439
- filteredUsers.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "border rounded-lg overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Table, { children: [
2440
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(TableRow, { children: [
2441
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableHead, { className: "w-[300px]", children: "User" }),
2442
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableHead, { children: "Email" }),
2443
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableHead, { className: "w-[180px]", children: "Role" }),
2444
- canEditUsers && onRemoveUser && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableHead, { className: "w-[100px] text-right", children: "Actions" })
2474
+ filteredUsers.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "border rounded-lg overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Table, { children: [
2475
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(TableRow, { children: [
2476
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "w-[300px]", children: "User" }),
2477
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { children: "Email" }),
2478
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "w-[180px]", children: "Role" }),
2479
+ canEditUsers && onRemoveUser && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "w-[100px] text-right", children: "Actions" })
2445
2480
  ] }) }),
2446
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableBody, { children: filteredUsers.map((user) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(TableRow, { children: [
2447
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableCell, { className: "font-medium", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center gap-3", children: [
2448
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Avatar, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(AvatarFallback, { children: getInitials(user.firstName, user.lastName) }) }),
2449
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { children: [
2450
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "font-medium", children: [
2481
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableBody, { children: filteredUsers.map((user) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(TableRow, { children: [
2482
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "font-medium", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-3", children: [
2483
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Avatar, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(AvatarFallback, { children: getInitials(user.firstName, user.lastName) }) }),
2484
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { children: [
2485
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "font-medium", children: [
2451
2486
  user.firstName,
2452
2487
  " ",
2453
2488
  user.lastName
2454
2489
  ] }),
2455
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "text-xs text-muted-foreground md:hidden", children: user.email })
2490
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "text-xs text-muted-foreground md:hidden", children: user.email })
2456
2491
  ] })
2457
2492
  ] }) }),
2458
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableCell, { className: "hidden md:table-cell", children: user.email }),
2459
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableCell, { children: canEditUsers && onRoleUpdate ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2493
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "hidden md:table-cell", children: user.email }),
2494
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { children: canEditUsers && onRoleUpdate ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2460
2495
  Select,
2461
2496
  {
2462
2497
  value: user.role,
2463
2498
  onValueChange: (newRole) => handleRoleUpdate(user.userId, newRole),
2464
2499
  disabled: isUpdating[user.userId],
2465
2500
  children: [
2466
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectValue, {}) }),
2467
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectContent, { children: availableRoles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(SelectItem, { value: role, children: role }, role)) })
2501
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectTrigger, { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectValue, {}) }),
2502
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectContent, { children: availableRoles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectItem, { value: role, children: role }, role)) })
2468
2503
  ]
2469
2504
  }
2470
- ) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "capitalize text-sm font-medium", children: user.role }) }),
2471
- canEditUsers && onRemoveUser && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TableCell, { className: "text-right", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2505
+ ) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "capitalize text-sm font-medium", children: user.role }) }),
2506
+ canEditUsers && onRemoveUser && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "text-right", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
2472
2507
  Button,
2473
2508
  {
2474
2509
  variant: "ghost",
@@ -2477,18 +2512,19 @@ function UserViewer({
2477
2512
  disabled: isUpdating[user.userId],
2478
2513
  className: "h-8 w-8",
2479
2514
  children: [
2480
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react6.UserX, { className: "h-4 w-4" }),
2481
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "sr-only", children: "Remove user" })
2515
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react6.UserX, { className: "h-4 w-4" }),
2516
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "sr-only", children: "Remove user" })
2482
2517
  ]
2483
2518
  }
2484
2519
  ) })
2485
2520
  ] }, user.userId)) })
2486
- ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "text-center py-12 border rounded-lg", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("p", { className: "text-muted-foreground", children: searchQuery ? "No users found matching your search" : "No users in this organization yet" }) })
2521
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "text-center py-12 border rounded-lg", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("p", { className: "text-muted-foreground", children: searchQuery ? "No users found matching your search" : "No users in this organization yet" }) })
2487
2522
  ] })
2488
2523
  ] });
2489
2524
  }
2490
2525
  // Annotate the CommonJS export names for ESM import in node:
2491
2526
  0 && (module.exports = {
2527
+ ErrorForm,
2492
2528
  LoginForm,
2493
2529
  PermissionsSelector,
2494
2530
  PricingTable,