@nextsparkjs/core 0.1.0-beta.115 → 0.1.0-beta.117

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 (37) hide show
  1. package/dist/components/dashboard/block-editor/config-panel.d.ts.map +1 -1
  2. package/dist/components/dashboard/block-editor/config-panel.js +37 -1
  3. package/dist/components/dashboard/block-editor/entity-fields-sidebar.d.ts.map +1 -1
  4. package/dist/components/dashboard/block-editor/entity-fields-sidebar.js +57 -1
  5. package/dist/components/devtools/DevtoolsSidebar.d.ts +1 -1
  6. package/dist/components/devtools/DevtoolsSidebar.d.ts.map +1 -1
  7. package/dist/components/devtools/DevtoolsSidebar.js +100 -42
  8. package/dist/components/teams/TeamPendingInvitations.d.ts.map +1 -1
  9. package/dist/components/teams/TeamPendingInvitations.js +12 -1
  10. package/dist/components/ui/simple-relation-select.d.ts.map +1 -1
  11. package/dist/components/ui/simple-relation-select.js +5 -20
  12. package/dist/hooks/useAuth.js +1 -1
  13. package/dist/lib/auth-client.d.ts +2 -69
  14. package/dist/lib/auth-client.d.ts.map +1 -1
  15. package/dist/lib/auth-client.js +2 -2
  16. package/dist/lib/entities/types.d.ts +19 -0
  17. package/dist/lib/entities/types.d.ts.map +1 -1
  18. package/dist/lib/services/translation.service.d.ts +14 -0
  19. package/dist/lib/services/translation.service.d.ts.map +1 -1
  20. package/dist/lib/services/translation.service.js +63 -4
  21. package/dist/lib/theme/theme-loader.d.ts.map +1 -1
  22. package/dist/lib/theme/theme-loader.js +7 -3
  23. package/dist/nextspark-registries.d.ts +20 -0
  24. package/dist/styles/classes.json +3 -2
  25. package/dist/styles/ui.css +1 -1
  26. package/dist/templates/app/devtools/plugins/[plugin]/page.tsx +17 -0
  27. package/dist/types/plugin.d.ts +29 -0
  28. package/dist/types/plugin.d.ts.map +1 -1
  29. package/package.json +2 -2
  30. package/scripts/build/registry/config.mjs +3 -3
  31. package/scripts/build/registry/discovery/plugins.mjs +25 -2
  32. package/scripts/build/registry/generators/entity-registry.mjs +10 -0
  33. package/scripts/build/registry/generators/plugin-registry.mjs +82 -2
  34. package/scripts/build/registry/generators/template-registry.mjs +7 -1
  35. package/scripts/build/registry/generators/translation-registry.mjs +81 -2
  36. package/scripts/db/run-migrations.mjs +26 -0
  37. package/templates/app/devtools/plugins/[plugin]/page.tsx +17 -0
@@ -1 +1 @@
1
- {"version":3,"file":"config-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/config-panel.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,uBAAuB,CAAA;AAS3F,UAAU,gBAAgB;IACxB,YAAY,EAAE,kBAAkB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,YAAY,EAAE,YAAY,CAAA;IAC1B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,EAAE,gBAAgB,2CA6alB"}
1
+ {"version":3,"file":"config-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/config-panel.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,uBAAuB,CAAA;AAiB1E,UAAU,gBAAgB;IACxB,YAAY,EAAE,kBAAkB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,YAAY,EAAE,YAAY,CAAA;IAC1B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,EAAE,gBAAgB,2CA6dlB"}
@@ -28,6 +28,14 @@ import {
28
28
  } from "lucide-react";
29
29
  import { cn } from "../../../lib/utils/index.js";
30
30
  import { sel } from "../../../lib/test/index.js";
31
+ import { SimpleRelationSelect } from "../../ui/simple-relation-select.js";
32
+ import {
33
+ Select,
34
+ SelectContent,
35
+ SelectItem,
36
+ SelectTrigger,
37
+ SelectValue
38
+ } from "../../ui/select.js";
31
39
  function ConfigPanel({
32
40
  entityConfig,
33
41
  entityFields,
@@ -62,10 +70,38 @@ function ConfigPanel({
62
70
  }, [sidebarFields.length, taxonomiesEnabled]);
63
71
  const showSeoSection = ((_e = entityConfig.builder) == null ? void 0 : _e.seo) !== false;
64
72
  const renderField = (fieldName) => {
73
+ var _a2;
65
74
  const value = entityFields[fieldName];
75
+ const sidebarFieldsConfig = (_a2 = entityConfig.builder) == null ? void 0 : _a2.sidebarFieldsConfig;
76
+ const fieldConfig = sidebarFieldsConfig == null ? void 0 : sidebarFieldsConfig.find((f) => f.name === fieldName);
77
+ const fieldLabel = (fieldConfig == null ? void 0 : fieldConfig.label) || fieldName.charAt(0).toUpperCase() + fieldName.slice(1).replace(/([A-Z])/g, " $1");
78
+ if ((fieldConfig == null ? void 0 : fieldConfig.type) === "relation" && fieldConfig.relation) {
79
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
80
+ /* @__PURE__ */ jsx(Label, { htmlFor: fieldName, children: fieldLabel }),
81
+ /* @__PURE__ */ jsx(
82
+ SimpleRelationSelect,
83
+ {
84
+ entityType: fieldConfig.relation.entity,
85
+ titleField: fieldConfig.relation.titleField,
86
+ value: value || void 0,
87
+ onChange: (v) => onEntityFieldChange(fieldName, v ?? null),
88
+ userFiltered: fieldConfig.relation.userFiltered,
89
+ placeholder: "Select..."
90
+ }
91
+ )
92
+ ] }, fieldName);
93
+ }
94
+ if ((fieldConfig == null ? void 0 : fieldConfig.type) === "select" && fieldConfig.options) {
95
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
96
+ /* @__PURE__ */ jsx(Label, { htmlFor: fieldName, children: fieldLabel }),
97
+ /* @__PURE__ */ jsxs(Select, { value: value || "", onValueChange: (v) => onEntityFieldChange(fieldName, v), children: [
98
+ /* @__PURE__ */ jsx(SelectTrigger, { id: fieldName, children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select..." }) }),
99
+ /* @__PURE__ */ jsx(SelectContent, { children: fieldConfig.options.map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
100
+ ] })
101
+ ] }, fieldName);
102
+ }
66
103
  const isTextarea = fieldName.toLowerCase().includes("excerpt") || fieldName.toLowerCase().includes("description") || fieldName.toLowerCase().includes("summary");
67
104
  const isImage = fieldName.toLowerCase().includes("image") || fieldName.toLowerCase().includes("thumbnail") || fieldName.toLowerCase().includes("photo");
68
- const fieldLabel = fieldName.charAt(0).toUpperCase() + fieldName.slice(1).replace(/([A-Z])/g, " $1");
69
105
  if (isTextarea) {
70
106
  return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
71
107
  /* @__PURE__ */ jsxs(Label, { htmlFor: fieldName, className: "flex items-center gap-2", children: [
@@ -1 +1 @@
1
- {"version":3,"file":"entity-fields-sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/entity-fields-sidebar.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AASxF,UAAU,wBAAwB;IAChC,YAAY,EAAE,kBAAkB,CAAA;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,kBAAuB,EACvB,gBAAgB,EACjB,EAAE,wBAAwB,2CA6M1B"}
1
+ {"version":3,"file":"entity-fields-sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/entity-fields-sidebar.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AAiBxF,UAAU,wBAAwB;IAChC,YAAY,EAAE,kBAAkB,CAAA;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,kBAAuB,EACvB,gBAAgB,EACjB,EAAE,wBAAwB,2CAoR1B"}
@@ -10,6 +10,14 @@ import { Badge } from "../../ui/badge.js";
10
10
  import { ScrollArea } from "../../ui/scroll-area.js";
11
11
  import { Checkbox } from "../../ui/checkbox.js";
12
12
  import { FileText, Image, Tag, Loader2 } from "lucide-react";
13
+ import { SimpleRelationSelect } from "../../ui/simple-relation-select.js";
14
+ import {
15
+ Select,
16
+ SelectContent,
17
+ SelectItem,
18
+ SelectTrigger,
19
+ SelectValue
20
+ } from "../../ui/select.js";
13
21
  function EntityFieldsSidebar({
14
22
  entityConfig,
15
23
  fields,
@@ -35,10 +43,58 @@ function EntityFieldsSidebar({
35
43
  });
36
44
  const taxonomyItems = (taxonomyData == null ? void 0 : taxonomyData.data) || [];
37
45
  const renderField = (fieldName) => {
46
+ var _a2;
38
47
  const value = fields[fieldName];
48
+ const sidebarFieldsConfig = (_a2 = entityConfig.builder) == null ? void 0 : _a2.sidebarFieldsConfig;
49
+ const fieldConfig = sidebarFieldsConfig == null ? void 0 : sidebarFieldsConfig.find((f) => f.name === fieldName);
50
+ const fieldLabel = (fieldConfig == null ? void 0 : fieldConfig.label) || fieldName.charAt(0).toUpperCase() + fieldName.slice(1).replace(/([A-Z])/g, " $1");
51
+ if ((fieldConfig == null ? void 0 : fieldConfig.type) === "relation" && fieldConfig.relation) {
52
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
53
+ /* @__PURE__ */ jsx(Label, { htmlFor: fieldName, children: fieldLabel }),
54
+ /* @__PURE__ */ jsx(
55
+ SimpleRelationSelect,
56
+ {
57
+ entityType: fieldConfig.relation.entity,
58
+ titleField: fieldConfig.relation.titleField,
59
+ value: value || void 0,
60
+ onChange: (v) => onChange(fieldName, v ?? null),
61
+ userFiltered: fieldConfig.relation.userFiltered,
62
+ placeholder: "Select..."
63
+ }
64
+ )
65
+ ] }, fieldName);
66
+ }
67
+ if ((fieldConfig == null ? void 0 : fieldConfig.type) === "select" && fieldConfig.options) {
68
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
69
+ /* @__PURE__ */ jsx(Label, { htmlFor: fieldName, children: fieldLabel }),
70
+ /* @__PURE__ */ jsxs(Select, { value: value || "", onValueChange: (v) => onChange(fieldName, v), children: [
71
+ /* @__PURE__ */ jsx(SelectTrigger, { id: fieldName, children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select..." }) }),
72
+ /* @__PURE__ */ jsx(SelectContent, { children: fieldConfig.options.map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
73
+ ] })
74
+ ] }, fieldName);
75
+ }
76
+ if ((fieldConfig == null ? void 0 : fieldConfig.type) === "textarea") {
77
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
78
+ /* @__PURE__ */ jsxs(Label, { htmlFor: fieldName, className: "flex items-center gap-2", children: [
79
+ /* @__PURE__ */ jsx(FileText, { className: "h-4 w-4 text-muted-foreground" }),
80
+ fieldLabel
81
+ ] }),
82
+ /* @__PURE__ */ jsx(
83
+ Textarea,
84
+ {
85
+ id: fieldName,
86
+ value: value || "",
87
+ onChange: (e) => onChange(fieldName, e.target.value),
88
+ placeholder: fieldConfig.placeholder || t("placeholders.excerpt"),
89
+ rows: fieldConfig.rows || 4,
90
+ className: "resize-none",
91
+ "data-cy": sel("blockEditor.entityFieldsPanel.field", { name: fieldName })
92
+ }
93
+ )
94
+ ] }, fieldName);
95
+ }
39
96
  const isTextarea = fieldName.toLowerCase().includes("excerpt") || fieldName.toLowerCase().includes("description") || fieldName.toLowerCase().includes("summary");
40
97
  const isImage = fieldName.toLowerCase().includes("image") || fieldName.toLowerCase().includes("thumbnail") || fieldName.toLowerCase().includes("photo");
41
- const fieldLabel = fieldName.charAt(0).toUpperCase() + fieldName.slice(1).replace(/([A-Z])/g, " $1");
42
98
  if (isTextarea) {
43
99
  return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
44
100
  /* @__PURE__ */ jsxs(Label, { htmlFor: fieldName, className: "flex items-center gap-2", children: [
@@ -2,8 +2,8 @@
2
2
  * DevTools Sidebar Component
3
3
  *
4
4
  * Specialized sidebar for developer navigation within the /devtools area.
5
+ * Reads plugin navigation items from @nextsparkjs/registries automatically.
5
6
  * Includes collapsible functionality and purple/violet branding.
6
- * Based on AdminSidebar pattern but with distinct developer-focused styling.
7
7
  */
8
8
  export declare function DevtoolsSidebar(): import("react/jsx-runtime").JSX.Element;
9
9
  //# sourceMappingURL=DevtoolsSidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevtoolsSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/DevtoolsSidebar.tsx"],"names":[],"mappings":"AAiCA;;;;;;GAMG;AACH,wBAAgB,eAAe,4CAuO9B"}
1
+ {"version":3,"file":"DevtoolsSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/devtools/DevtoolsSidebar.tsx"],"names":[],"mappings":"AA2CA;;;;;;GAMG;AACH,wBAAgB,eAAe,4CAqR9B"}
@@ -16,17 +16,35 @@ import {
16
16
  GitBranch,
17
17
  LayoutGrid,
18
18
  Tag,
19
- Clock
19
+ Clock,
20
+ Puzzle,
21
+ Star,
22
+ Bell,
23
+ Globe
20
24
  } from "lucide-react";
21
25
  import { cn } from "../../lib/utils/index.js";
22
26
  import { Button } from "../ui/button.js";
23
27
  import { useState } from "react";
24
28
  import { useTranslations } from "next-intl";
29
+ import { getPluginNavItems } from "@nextsparkjs/registries/plugin-registry.client";
30
+ const PLUGIN_ICON_MAP = {
31
+ Puzzle,
32
+ Settings,
33
+ Star,
34
+ Code,
35
+ LayoutGrid,
36
+ Bell,
37
+ Globe,
38
+ Layers,
39
+ GitBranch,
40
+ Tag
41
+ };
25
42
  function DevtoolsSidebar() {
26
43
  const pathname = usePathname();
27
44
  const [isCollapsed, setIsCollapsed] = useState(false);
28
45
  const t = useTranslations("devtools");
29
46
  const tCommon = useTranslations("common");
47
+ const pluginItems = getPluginNavItems("devtools");
30
48
  const sidebarItems = [
31
49
  {
32
50
  titleKey: "nav.home",
@@ -89,6 +107,32 @@ function DevtoolsSidebar() {
89
107
  descriptionKey: "nav.scheduledActionsDescription"
90
108
  }
91
109
  ];
110
+ const renderPluginItem = (item) => {
111
+ const IconComponent = PLUGIN_ICON_MAP[item.icon ?? ""] ?? Puzzle;
112
+ const isActive = pathname === item.href || pathname.startsWith(item.href + "/");
113
+ return /* @__PURE__ */ jsxs(
114
+ Link,
115
+ {
116
+ href: item.href,
117
+ "data-cy": `devtools-plugin-nav-${item.href.split("/").pop()}`,
118
+ className: cn(
119
+ "flex items-center gap-3 px-3 py-2 rounded-lg transition-colors",
120
+ "hover:bg-accent hover:text-accent-foreground",
121
+ isActive ? "bg-violet-600 text-white dark:bg-violet-700" : "text-foreground",
122
+ isCollapsed && "justify-center"
123
+ ),
124
+ title: isCollapsed ? item.label : item.description,
125
+ children: [
126
+ /* @__PURE__ */ jsx(IconComponent, { className: "h-5 w-5 flex-shrink-0" }),
127
+ !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
128
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: item.label }),
129
+ item.description && /* @__PURE__ */ jsx("p", { className: "text-xs opacity-80", children: item.description })
130
+ ] })
131
+ ]
132
+ },
133
+ item.href
134
+ );
135
+ };
92
136
  return /* @__PURE__ */ jsxs(
93
137
  "div",
94
138
  {
@@ -119,59 +163,73 @@ function DevtoolsSidebar() {
119
163
  }
120
164
  )
121
165
  ] }),
122
- /* @__PURE__ */ jsx("div", { className: "flex-1 p-3 space-y-2", children: sidebarItems.map((item) => {
123
- var _a;
124
- const IconComponent = item.icon;
125
- const isActive = pathname === item.href || pathname.startsWith(item.href + "/");
126
- const title = t(item.titleKey);
127
- const description = item.descriptionKey ? t(item.descriptionKey) : void 0;
128
- if (item.disabled) {
166
+ /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxs("div", { className: "p-3 space-y-1", children: [
167
+ sidebarItems.map((item) => {
168
+ var _a;
169
+ const IconComponent = item.icon;
170
+ const isActive = pathname === item.href || pathname.startsWith(item.href + "/");
171
+ const title = t(item.titleKey);
172
+ const description = item.descriptionKey ? t(item.descriptionKey) : void 0;
173
+ if (item.disabled) {
174
+ return /* @__PURE__ */ jsxs(
175
+ "div",
176
+ {
177
+ className: cn(
178
+ "flex items-center gap-3 px-3 py-2 rounded-lg text-muted-foreground cursor-not-allowed opacity-60",
179
+ isCollapsed && "justify-center"
180
+ ),
181
+ title: isCollapsed ? `${title} (${tCommon("comingSoon")})` : description,
182
+ children: [
183
+ /* @__PURE__ */ jsx(IconComponent, { className: "h-5 w-5 flex-shrink-0" }),
184
+ !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
185
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
186
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: title }),
187
+ /* @__PURE__ */ jsx("span", { className: "text-xs bg-muted text-muted-foreground px-2 py-0.5 rounded", children: tCommon("soon") })
188
+ ] }),
189
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: description })
190
+ ] })
191
+ ]
192
+ },
193
+ item.titleKey
194
+ );
195
+ }
129
196
  return /* @__PURE__ */ jsxs(
130
- "div",
197
+ Link,
131
198
  {
199
+ href: item.href,
200
+ "data-cy": `devtools-nav-${(_a = item.titleKey.split(".").pop()) == null ? void 0 : _a.toLowerCase().replace(/\s+/g, "-")}`,
132
201
  className: cn(
133
- "flex items-center gap-3 px-3 py-2 rounded-lg text-muted-foreground cursor-not-allowed opacity-60",
202
+ "flex items-center gap-3 px-3 py-2 rounded-lg transition-colors",
203
+ "hover:bg-accent hover:text-accent-foreground",
204
+ isActive ? "bg-violet-600 text-white dark:bg-violet-700" : "text-foreground",
134
205
  isCollapsed && "justify-center"
135
206
  ),
136
- title: isCollapsed ? `${title} (${tCommon("comingSoon")})` : description,
207
+ title: isCollapsed ? title : description,
137
208
  children: [
138
209
  /* @__PURE__ */ jsx(IconComponent, { className: "h-5 w-5 flex-shrink-0" }),
139
210
  !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
140
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
141
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: title }),
142
- /* @__PURE__ */ jsx("span", { className: "text-xs bg-muted text-muted-foreground px-2 py-0.5 rounded", children: tCommon("soon") })
143
- ] }),
144
- description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: description })
211
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: title }),
212
+ description && /* @__PURE__ */ jsx("p", { className: "text-xs opacity-80", children: description })
145
213
  ] })
146
214
  ]
147
215
  },
148
216
  item.titleKey
149
217
  );
150
- }
151
- return /* @__PURE__ */ jsxs(
152
- Link,
153
- {
154
- href: item.href,
155
- "data-cy": `devtools-nav-${(_a = item.titleKey.split(".").pop()) == null ? void 0 : _a.toLowerCase().replace(/\s+/g, "-")}`,
156
- className: cn(
157
- "flex items-center gap-3 px-3 py-2 rounded-lg transition-colors",
158
- "hover:bg-accent hover:text-accent-foreground",
159
- isActive ? "bg-violet-600 text-white dark:bg-violet-700" : "text-foreground",
160
- isCollapsed && "justify-center"
161
- ),
162
- title: isCollapsed ? title : description,
163
- children: [
164
- /* @__PURE__ */ jsx(IconComponent, { className: "h-5 w-5 flex-shrink-0" }),
165
- !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
166
- /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: title }),
167
- description && /* @__PURE__ */ jsx("p", { className: "text-xs opacity-80", children: description })
168
- ] })
169
- ]
170
- },
171
- item.titleKey
172
- );
173
- }) }),
174
- /* @__PURE__ */ jsxs("div", { className: "p-3 border-t border-border space-y-2", children: [
218
+ }),
219
+ pluginItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "pt-3 space-y-1", children: [
220
+ !isCollapsed && /* @__PURE__ */ jsx(
221
+ "p",
222
+ {
223
+ className: "px-3 py-1 text-xs font-semibold text-muted-foreground uppercase tracking-wider",
224
+ "data-cy": "devtools-plugins-section-label",
225
+ children: "Plugins"
226
+ }
227
+ ),
228
+ isCollapsed && /* @__PURE__ */ jsx("div", { className: "my-1 border-t border-border" }),
229
+ pluginItems.map(renderPluginItem)
230
+ ] })
231
+ ] }) }),
232
+ /* @__PURE__ */ jsxs("div", { className: "p-3 border-t border-border space-y-1", children: [
175
233
  /* @__PURE__ */ jsxs(
176
234
  Link,
177
235
  {
@@ -214,7 +272,7 @@ function DevtoolsSidebar() {
214
272
  ]
215
273
  }
216
274
  ),
217
- !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "mt-3 p-2 bg-violet-50 dark:bg-violet-950 border border-violet-200 dark:border-violet-800 rounded-lg", children: [
275
+ !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "mt-2 p-2 bg-violet-50 dark:bg-violet-950 border border-violet-200 dark:border-violet-800 rounded-lg", children: [
218
276
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-violet-700 dark:text-violet-300", children: [
219
277
  /* @__PURE__ */ jsx(Code, { className: "h-3 w-3" }),
220
278
  /* @__PURE__ */ jsx("span", { className: "text-xs font-medium", children: t("restrictedArea") })
@@ -1 +1 @@
1
- {"version":3,"file":"TeamPendingInvitations.d.ts","sourceRoot":"","sources":["../../../src/components/teams/TeamPendingInvitations.tsx"],"names":[],"mappings":"AAkDA,UAAU,2BAA2B;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAOD,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,EAAE,2BAA2B,2CAoK7E"}
1
+ {"version":3,"file":"TeamPendingInvitations.d.ts","sourceRoot":"","sources":["../../../src/components/teams/TeamPendingInvitations.tsx"],"names":[],"mappings":"AAmDA,UAAU,2BAA2B;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAOD,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,EAAE,2BAA2B,2CAoL7E"}
@@ -15,6 +15,7 @@ import {
15
15
  } from "../ui/table.js";
16
16
  import { Button } from "../ui/button.js";
17
17
  import { Badge } from "../ui/badge.js";
18
+ import { Skeleton } from "../ui/skeleton.js";
18
19
  import {
19
20
  Dialog,
20
21
  DialogContent,
@@ -80,7 +81,17 @@ function TeamPendingInvitations({ teamId }) {
80
81
  }
81
82
  });
82
83
  if (isLoading) {
83
- return null;
84
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-4 mt-6", "aria-busy": "true", children: [
85
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
86
+ /* @__PURE__ */ jsx(Mail, { className: "h-4 w-4 text-muted-foreground" }),
87
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-40" })
88
+ ] }),
89
+ /* @__PURE__ */ jsx("div", { className: "border rounded-md", children: /* @__PURE__ */ jsx("div", { className: "p-4 space-y-3", children: [0, 1].map((i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
90
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-40" }),
91
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-5 w-20 rounded-full" }),
92
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-24 ml-auto" })
93
+ ] }, i)) }) })
94
+ ] });
84
95
  }
85
96
  if (invitations.length === 0) {
86
97
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"simple-relation-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/simple-relation-select.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAA;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEzD,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAgB,EAChB,WAA8B,EAC9B,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,eAAuB,EACvB,eAAoB,EACpB,YAAoB,EACpB,MAAM,GACP,EAAE,yBAAyB,2CAkmB3B"}
1
+ {"version":3,"file":"simple-relation-select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/simple-relation-select.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAA;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEzD,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAgB,EAChB,WAA8B,EAC9B,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,eAAuB,EACvB,eAAoB,EACpB,YAAoB,EACpB,MAAM,GACP,EAAE,yBAAyB,2CAklB3B"}
@@ -5,6 +5,7 @@ import { Button } from "./button.js";
5
5
  import { Badge } from "./badge.js";
6
6
  import { X } from "lucide-react";
7
7
  import { parseChildEntity, getEntityApiPath } from "@nextsparkjs/registries/entity-registry.client";
8
+ import { fetchWithTeam } from "../../lib/api/entities.js";
8
9
  import {
9
10
  Popover,
10
11
  PopoverContent,
@@ -78,12 +79,8 @@ function SimpleRelationSelect({
78
79
  console.warn(`No specific API available for entity type: ${entityType}`);
79
80
  return [];
80
81
  }
81
- const response = await fetch(url.toString(), {
82
+ const response = await fetchWithTeam(url.toString(), {
82
83
  method: "GET",
83
- headers: {
84
- "Content-Type": "application/json",
85
- ...teamId && { "x-team-id": teamId }
86
- },
87
84
  credentials: "include"
88
85
  });
89
86
  if (response.ok) {
@@ -124,12 +121,8 @@ function SimpleRelationSelect({
124
121
  return [];
125
122
  }
126
123
  }
127
- const response = await fetch(url.toString(), {
124
+ const response = await fetchWithTeam(url.toString(), {
128
125
  method: "GET",
129
- headers: {
130
- "Content-Type": "application/json",
131
- ...teamId && { "x-team-id": teamId }
132
- },
133
126
  credentials: "include"
134
127
  });
135
128
  if (response.ok) {
@@ -198,12 +191,8 @@ function SimpleRelationSelect({
198
191
  return;
199
192
  }
200
193
  }
201
- const response = await fetch(url.toString(), {
194
+ const response = await fetchWithTeam(url.toString(), {
202
195
  method: "GET",
203
- headers: {
204
- "Content-Type": "application/json",
205
- ...teamId && { "x-team-id": teamId }
206
- },
207
196
  credentials: "include"
208
197
  });
209
198
  if (response.ok) {
@@ -269,12 +258,8 @@ function SimpleRelationSelect({
269
258
  console.warn(`No specific API available for entity type: ${entityType}`);
270
259
  return [];
271
260
  }
272
- const response = await fetch(url.toString(), {
261
+ const response = await fetchWithTeam(url.toString(), {
273
262
  method: "GET",
274
- headers: {
275
- "Content-Type": "application/json",
276
- ...teamId && { "x-team-id": teamId }
277
- },
278
263
  credentials: "include"
279
264
  });
280
265
  if (response.ok) {
@@ -52,7 +52,7 @@ function useAuth() {
52
52
  };
53
53
  const handleResetPassword = async (email) => {
54
54
  try {
55
- const { data, error } = await authClient.forgetPassword({
55
+ const { data, error } = await authClient.requestPasswordReset({
56
56
  email,
57
57
  redirectTo: `${origin}/reset-password`
58
58
  });
@@ -2957,74 +2957,7 @@ export declare const signIn: {
2957
2957
  isPending: boolean;
2958
2958
  error: import("better-auth/react").BetterFetchError | null;
2959
2959
  refetch: () => void;
2960
- }, forgetPassword: {
2961
- emailOtp: <FetchOptions extends {
2962
- method?: string;
2963
- mode?: RequestMode;
2964
- priority?: RequestPriority;
2965
- headers?: HeadersInit & (HeadersInit | {
2966
- accept: "application/json" | "text/plain" | "application/octet-stream";
2967
- "content-type": "application/json" | "text/plain" | "application/x-www-form-urlencoded" | "multipart/form-data" | "application/octet-stream";
2968
- authorization: "Bearer" | "Basic";
2969
- });
2970
- cache?: RequestCache;
2971
- credentials?: RequestCredentials;
2972
- integrity?: string;
2973
- keepalive?: boolean;
2974
- redirect?: RequestRedirect;
2975
- referrer?: string;
2976
- referrerPolicy?: ReferrerPolicy;
2977
- signal?: AbortSignal | null;
2978
- window?: null;
2979
- next?: NextFetchRequestConfig | undefined;
2980
- onRequest?: <T extends Record<string, any>>(context: import("better-auth/react").RequestContext<T>) => Promise<import("better-auth/react").RequestContext | void> | import("better-auth/react").RequestContext | void;
2981
- onResponse?: (context: import("better-auth/react").ResponseContext) => Promise<Response | void | import("better-auth/react").ResponseContext> | Response | import("better-auth/react").ResponseContext | void;
2982
- onSuccess?: (context: import("better-auth/react").SuccessContext<any>) => Promise<void> | void;
2983
- onError?: (context: import("better-auth/react").ErrorContext) => Promise<void> | void;
2984
- onRetry?: (response: import("better-auth/react").ResponseContext) => Promise<void> | void;
2985
- hookOptions?: {
2986
- cloneResponse?: boolean;
2987
- };
2988
- timeout?: number;
2989
- customFetchImpl?: import("better-auth/react").FetchEsque;
2990
- plugins?: import("better-auth/react").BetterFetchPlugin[];
2991
- baseURL?: string;
2992
- throw?: boolean;
2993
- auth?: {
2994
- type: "Bearer";
2995
- token: string | Promise<string> | (() => string | Promise<string>);
2996
- } | {
2997
- type: "Basic";
2998
- username: string | (() => string);
2999
- password: string | (() => string);
3000
- } | {
3001
- type: "Custom";
3002
- prefix: string | (() => string);
3003
- value: string | (() => string);
3004
- };
3005
- body?: Partial<{
3006
- email: string;
3007
- }> & Record<string, any>;
3008
- query?: Partial<Record<string, any>> & Record<string, any>;
3009
- params?: Record<string, any>;
3010
- duplex?: "full" | "half";
3011
- jsonParser?: (text: string) => Promise<any> | any;
3012
- retry?: import("better-auth/react").RetryOptions;
3013
- retryAttempt?: number;
3014
- output?: import("better-auth/react").StandardSchemaV1 | typeof Blob | typeof File;
3015
- errorSchema?: import("better-auth/react").StandardSchemaV1;
3016
- disableValidation?: boolean;
3017
- }>(data_0: import("better-auth").Prettify<{
3018
- email: string;
3019
- } & {
3020
- fetchOptions?: FetchOptions;
3021
- }>, data_1?: FetchOptions) => Promise<import("better-auth/react").BetterFetchResponse<{
3022
- success: boolean;
3023
- }, {
3024
- code?: string;
3025
- message?: string;
3026
- }, FetchOptions["throw"] extends true ? true : false>>;
3027
- } & (<FetchOptions extends {
2960
+ }, requestPasswordReset: <FetchOptions extends {
3028
2961
  method?: string;
3029
2962
  mode?: RequestMode;
3030
2963
  priority?: RequestPriority;
@@ -3091,7 +3024,7 @@ export declare const signIn: {
3091
3024
  }, {
3092
3025
  code?: string;
3093
3026
  message?: string;
3094
- }, FetchOptions["throw"] extends true ? true : false>>), resetPassword: (<FetchOptions extends {
3027
+ }, FetchOptions["throw"] extends true ? true : false>>, resetPassword: (<FetchOptions extends {
3095
3028
  method?: string;
3096
3029
  mode?: RequestMode;
3097
3030
  priority?: RequestPriority;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/lib/auth-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/lib/auth-client.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ const {
13
13
  signUp,
14
14
  signOut,
15
15
  useSession,
16
- forgetPassword,
16
+ requestPasswordReset,
17
17
  resetPassword,
18
18
  verifyEmail,
19
19
  sendVerificationEmail,
@@ -22,7 +22,7 @@ const {
22
22
  export {
23
23
  authClient,
24
24
  emailOtp,
25
- forgetPassword,
25
+ requestPasswordReset,
26
26
  resetPassword,
27
27
  sendVerificationEmail,
28
28
  signIn,
@@ -165,6 +165,25 @@ export interface BuilderConfig {
165
165
  * Examples: 'excerpt', 'featuredImage', 'categories'
166
166
  */
167
167
  sidebarFields?: string[];
168
+ /**
169
+ * Explicit field configurations for sidebar fields
170
+ * Enables relation selectors, dropdowns, etc. beyond simple text inputs.
171
+ * If provided, config for a field takes precedence over name-pattern inference.
172
+ */
173
+ sidebarFieldsConfig?: Array<{
174
+ name: string;
175
+ type: 'text' | 'textarea' | 'relation' | 'select' | string;
176
+ label?: string;
177
+ relation?: {
178
+ entity: string;
179
+ titleField: string;
180
+ userFiltered?: boolean;
181
+ };
182
+ options?: Array<{
183
+ value: string;
184
+ label: string;
185
+ }>;
186
+ }>;
168
187
  /**
169
188
  * Show slug input field in builder header
170
189
  * Default: true