camox 0.48.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/core/layoutContext.d.ts +1 -0
  2. package/dist/features/canvas/sidebar/CanvasInspector.js +1 -1
  3. package/dist/features/content/ContentAssets.js +84 -88
  4. package/dist/features/preview/CamoxPreview.js +1 -1
  5. package/dist/features/preview/EditablePageExperience.js +17 -9
  6. package/dist/features/preview/components/BlockActionsPopover.js +11 -35
  7. package/dist/features/preview/components/FieldToolbar.js +1 -1
  8. package/dist/features/preview/components/MobilePreviewDrawer.js +6 -9
  9. package/dist/features/preview/components/PreviewPanel.js +10 -64
  10. package/dist/features/preview/components/PreviewToolbar.js +1 -1
  11. package/dist/features/preview/previewConstants.js +2 -8
  12. package/dist/features/preview/usePreviewViewportActions.js +1 -1
  13. package/dist/features/provider/AuthenticatedCamoxProvider.js +1 -1
  14. package/dist/features/provider/components/CommandPalette.js +2 -5
  15. package/dist/features/provider/signInShortcut.js +1 -2
  16. package/dist/features/provider/useAdminShortcuts.js +47 -53
  17. package/dist/features/routes/pageRuntime.d.ts +2 -1
  18. package/dist/features/routes/pageRuntime.js +27 -20
  19. package/dist/features/runtime/publicCache.js +83 -0
  20. package/dist/features/runtime/runtime.d.ts +13 -3
  21. package/dist/features/runtime/runtime.js +173 -79
  22. package/dist/features/runtime/worker.d.ts +5 -1
  23. package/dist/features/runtime/worker.js +20 -3
  24. package/dist/features/settings/AnalyticsSettings.js +622 -0
  25. package/dist/features/settings/CamoxSettings.js +95 -0
  26. package/dist/features/settings/FaviconSettings.js +254 -0
  27. package/dist/features/settings/ProjectNameSettings.js +145 -0
  28. package/dist/features/settings/SettingsPart.js +73 -0
  29. package/dist/features/settings/SocialProfilesSettings.js +245 -0
  30. package/dist/features/settings/useProjectMutation.js +61 -0
  31. package/dist/features/studio/components/DraftsControl.js +136 -131
  32. package/dist/features/studio/components/LocalePicker.js +178 -174
  33. package/dist/features/studio/components/Navbar.js +107 -66
  34. package/dist/features/studio/components/ProjectMenu.js +118 -170
  35. package/dist/features/studio/components/ReviewDraftSheet.js +1046 -990
  36. package/dist/features/studio/components/UserButton.js +1 -1
  37. package/dist/features/studio/routes.js +3 -1
  38. package/dist/features/studio/showInCanvas.js +129 -0
  39. package/dist/features/vite/definitionsSync.js +4 -5
  40. package/dist/features/vite/runtimeDev.js +32 -17
  41. package/dist/features/vite/staticAssetHeaders.js +52 -0
  42. package/dist/features/vite/vite.d.ts +1 -1
  43. package/dist/features/vite/vite.js +16 -4
  44. package/dist/lib/api-client-server.d.ts +1 -1
  45. package/dist/lib/api-client.d.ts +2 -1
  46. package/dist/lib/draft-scope.d.ts +1 -0
  47. package/dist/lib/locale-path.d.ts +3 -11
  48. package/dist/lib/locale-path.js +3 -27
  49. package/dist/lib/queries.js +7 -1
  50. package/dist/lib/shortcuts.js +29 -0
  51. package/dist/lib/studio-reads.d.ts +1 -0
  52. package/dist/lib/utils.js +1 -104
  53. package/dist/package.js +1 -1
  54. package/dist/studio.css +1 -1
  55. package/package.json +5 -4
  56. package/dist/features/studio/components/FaviconDialog.js +0 -318
  57. package/dist/features/studio/components/SocialProfilesDialog.js +0 -342
@@ -4,7 +4,7 @@ import { Link as Link$1, useNavigate } from "../../navigation/navigation.js";
4
4
  import { cn } from "../../../lib/utils.js";
5
5
  import { usePageDestinations } from "../../../hooks/use-page-destinations.js";
6
6
  import { useLocalePath, useLocalizedPath } from "../../../lib/view-locale.js";
7
- import { STUDIO_BASE_PATH, STUDIO_CONTENT_PATH } from "../routes.js";
7
+ import { STUDIO_BASE_PATH, STUDIO_CONTENT_PATH, STUDIO_SETTINGS_PATH } from "../routes.js";
8
8
  import { studioStore } from "../studioStore.js";
9
9
  import { UserButton } from "./UserButton.js";
10
10
  import { DraftPicker, PendingChanges } from "./DraftsControl.js";
@@ -21,6 +21,7 @@ import { Database, Globe } from "lucide-react";
21
21
  const links = [{
22
22
  to: "/",
23
23
  title: "Website",
24
+ isWebsite: true,
24
25
  children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Globe, {}), "Website"] }),
25
26
  icon: "Globe",
26
27
  aliases: ["Website"]
@@ -41,14 +42,16 @@ const getNavbarLinks = () => links;
41
42
  * locale since, a Studio location stays, while a page, whose path may differ there, goes home.
42
43
  */
43
44
  function navbarHref(link, last, locale, localized) {
44
- if (link !== links[0] || !last) return localized(link.to);
45
+ if (!link.isWebsite || !last) return localized(link.to);
45
46
  if (last.locale === locale) return `${localized(last.path)}${last.search}${last.hash}`;
46
47
  if (last.path.startsWith(`${"/camox"}/`)) return localized(last.path);
47
48
  return localized(link.to);
48
49
  }
49
- const isContentNavbarPath = (pathname) => pathname === "/camox/content" || pathname.startsWith(`${"/camox/content"}/`);
50
+ /** Whether `pathname` is in the studio section at `sectionPath`. */
51
+ const isInSection = (sectionPath, pathname) => pathname === sectionPath || pathname.startsWith(`${sectionPath}/`);
52
+ const isSettingsNavbarPath = (pathname) => isInSection(STUDIO_SETTINGS_PATH, pathname);
50
53
  const Navbar = (t0) => {
51
- const $ = c(19);
54
+ const $ = c(26);
52
55
  const { isWebsite: t1, recordPage } = t0;
53
56
  const isWebsite = t1 === void 0 ? false : t1;
54
57
  const pages = usePageDestinations();
@@ -57,86 +60,104 @@ const Navbar = (t0) => {
57
60
  const { locale } = useViewLocale();
58
61
  const last = useSelector(studioStore, _temp);
59
62
  let t2;
63
+ if ($[0] !== pathname) {
64
+ t2 = isSettingsNavbarPath(pathname);
65
+ $[0] = pathname;
66
+ $[1] = t2;
67
+ } else t2 = $[1];
68
+ const isSettings = t2;
60
69
  let t3;
61
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
62
- t2 = /* @__PURE__ */ jsx(ProjectMenu, {});
63
- t3 = /* @__PURE__ */ jsx(DraftPicker, {});
64
- $[0] = t2;
65
- $[1] = t3;
66
- } else {
67
- t2 = $[0];
68
- t3 = $[1];
69
- }
70
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
71
+ t3 = /* @__PURE__ */ jsx(ProjectMenu, {});
72
+ $[2] = t3;
73
+ } else t3 = $[2];
70
74
  let t4;
71
- if ($[2] !== recordPage) {
72
- t4 = /* @__PURE__ */ jsxs("div", {
75
+ if ($[3] !== isSettings) {
76
+ t4 = /* @__PURE__ */ jsx(DraftPicker, { disabled: isSettings });
77
+ $[3] = isSettings;
78
+ $[4] = t4;
79
+ } else t4 = $[4];
80
+ let t5;
81
+ if ($[5] !== isSettings || $[6] !== recordPage) {
82
+ t5 = /* @__PURE__ */ jsx(LocalePicker, {
83
+ recordPage,
84
+ disabled: isSettings
85
+ });
86
+ $[5] = isSettings;
87
+ $[6] = recordPage;
88
+ $[7] = t5;
89
+ } else t5 = $[7];
90
+ let t6;
91
+ if ($[8] !== t4 || $[9] !== t5) {
92
+ t6 = /* @__PURE__ */ jsxs("div", {
73
93
  className: "flex items-center gap-1",
74
94
  children: [
75
- t2,
76
95
  t3,
77
- /* @__PURE__ */ jsx(LocalePicker, { recordPage })
96
+ t4,
97
+ t5
78
98
  ]
79
99
  });
80
- $[2] = recordPage;
81
- $[3] = t4;
82
- } else t4 = $[3];
83
- let t5;
84
- if ($[4] !== isWebsite || $[5] !== last || $[6] !== locale || $[7] !== localized || $[8] !== pages || $[9] !== pathname) {
85
- t5 = getNavbarLinks().map((link, index) => {
86
- const isWebsiteActive = index === 0 && (isWebsite || pages?.some((page) => page.fullPath === pathname));
87
- const isContentActive = link.to === "/camox/content" && isContentNavbarPath(pathname);
100
+ $[8] = t4;
101
+ $[9] = t5;
102
+ $[10] = t6;
103
+ } else t6 = $[10];
104
+ let t7;
105
+ if ($[11] !== isWebsite || $[12] !== last || $[13] !== locale || $[14] !== localized || $[15] !== pages || $[16] !== pathname) {
106
+ t7 = getNavbarLinks().map((link) => {
107
+ const isActive = link.isWebsite ? isWebsite || !!pages?.some((page) => page.fullPath === pathname) : isInSection(link.to, pathname);
88
108
  return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Link$1, {
89
109
  to: navbarHref(link, last, locale.tag, localized),
90
- className: cn(buttonVariants({ variant: "ghost" }), isWebsiteActive || isContentActive ? "bg-muted text-foreground dark:bg-muted/50" : "text-muted-foreground hover:text-muted-foreground"),
110
+ "aria-current": isActive ? "page" : void 0,
111
+ className: cn(buttonVariants({ variant: "ghost" }), isActive ? "bg-muted text-foreground dark:bg-muted/50" : "text-muted-foreground hover:text-muted-foreground"),
91
112
  activeProps: { className: "bg-muted text-foreground! dark:bg-muted/50" },
92
113
  children: link.children
93
114
  }) }, link.to);
94
115
  });
95
- $[4] = isWebsite;
96
- $[5] = last;
97
- $[6] = locale;
98
- $[7] = localized;
99
- $[8] = pages;
100
- $[9] = pathname;
101
- $[10] = t5;
102
- } else t5 = $[10];
103
- let t6;
104
- if ($[11] !== t5) {
105
- t6 = /* @__PURE__ */ jsx("ul", {
116
+ $[11] = isWebsite;
117
+ $[12] = last;
118
+ $[13] = locale;
119
+ $[14] = localized;
120
+ $[15] = pages;
121
+ $[16] = pathname;
122
+ $[17] = t7;
123
+ } else t7 = $[17];
124
+ let t8;
125
+ if ($[18] !== t7) {
126
+ t8 = /* @__PURE__ */ jsx("ul", {
106
127
  className: "flex items-center gap-1",
107
- children: t5
128
+ children: t7
108
129
  });
109
- $[11] = t5;
110
- $[12] = t6;
111
- } else t6 = $[12];
112
- let t7;
113
- if ($[13] !== t4 || $[14] !== t6) {
114
- t7 = /* @__PURE__ */ jsxs("div", {
130
+ $[18] = t7;
131
+ $[19] = t8;
132
+ } else t8 = $[19];
133
+ let t9;
134
+ if ($[20] !== t6 || $[21] !== t8) {
135
+ t9 = /* @__PURE__ */ jsxs("div", {
115
136
  className: "flex flex-row gap-2",
116
- children: [t4, t6]
137
+ children: [t6, t8]
117
138
  });
118
- $[13] = t4;
119
- $[14] = t6;
120
- $[15] = t7;
121
- } else t7 = $[15];
122
- let t8;
123
- if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
124
- t8 = /* @__PURE__ */ jsxs("div", {
139
+ $[20] = t6;
140
+ $[21] = t8;
141
+ $[22] = t9;
142
+ } else t9 = $[22];
143
+ let t10;
144
+ if ($[23] === Symbol.for("react.memo_cache_sentinel")) {
145
+ t10 = /* @__PURE__ */ jsxs("div", {
125
146
  className: "flex items-center gap-2",
126
147
  children: [/* @__PURE__ */ jsx(PendingChanges, {}), /* @__PURE__ */ jsx(UserButton, {})]
127
148
  });
128
- $[16] = t8;
129
- } else t8 = $[16];
130
- let t9;
131
- if ($[17] !== t7) {
132
- t9 = /* @__PURE__ */ jsxs("nav", {
149
+ $[23] = t10;
150
+ } else t10 = $[23];
151
+ let t11;
152
+ if ($[24] !== t9) {
153
+ t11 = /* @__PURE__ */ jsxs("nav", {
133
154
  className: "bg-background relative flex items-center justify-between gap-4 border-b-2 px-2 py-2",
134
- children: [t7, t8]
155
+ children: [t9, t10]
135
156
  });
136
- $[17] = t7;
137
- $[18] = t9;
138
- } else t9 = $[18];
139
- return t9;
157
+ $[24] = t9;
158
+ $[25] = t11;
159
+ } else t11 = $[25];
160
+ return t11;
140
161
  };
141
162
  function useNavbarActions() {
142
163
  const $ = c(5);
@@ -156,10 +177,27 @@ function useNavbarActions() {
156
177
  const last = studioStore.getSnapshot().context.websiteLocation;
157
178
  navigate({ to: navbarHref(link, last, locale.tag, localized) });
158
179
  },
159
- shortcut: { key: String(index + 1) },
180
+ shortcut: `${index + 1}`,
160
181
  icon: link.icon,
161
182
  aliases: link.aliases
162
183
  }));
184
+ actions.push({
185
+ id: `navigate-to-${STUDIO_SETTINGS_PATH}`,
186
+ label: "Go to Settings",
187
+ groupLabel: "Navigation",
188
+ checkIfAvailable: _temp3,
189
+ execute: () => void navigate({ to: localized(STUDIO_SETTINGS_PATH) }),
190
+ shortcut: `${actions.length + 1}`,
191
+ icon: "Settings",
192
+ aliases: [
193
+ "Settings",
194
+ "Project settings",
195
+ "Project name",
196
+ "Favicon",
197
+ "Social profiles",
198
+ "Analytics"
199
+ ]
200
+ });
163
201
  actionsStore.send({
164
202
  type: "registerManyActions",
165
203
  actions
@@ -167,7 +205,7 @@ function useNavbarActions() {
167
205
  return () => {
168
206
  actionsStore.send({
169
207
  type: "unregisterManyActions",
170
- ids: actions.map(_temp3)
208
+ ids: actions.map(_temp4)
171
209
  });
172
210
  };
173
211
  };
@@ -187,9 +225,12 @@ function useNavbarActions() {
187
225
  }
188
226
  React.useEffect(t0, t1);
189
227
  }
190
- function _temp3(a) {
228
+ function _temp4(a) {
191
229
  return a.id;
192
230
  }
231
+ function _temp3() {
232
+ return true;
233
+ }
193
234
  function _temp2() {
194
235
  return true;
195
236
  }
@@ -198,4 +239,4 @@ function _temp(state) {
198
239
  }
199
240
 
200
241
  //#endregion
201
- export { Navbar, getNavbarLinks, isContentNavbarPath, useNavbarActions };
242
+ export { Navbar, getNavbarLinks, useNavbarActions };
@@ -2,15 +2,15 @@ import { AuthContext } from "../../../lib/auth.js";
2
2
  import { getApiUrl } from "../../../lib/api-client.js";
3
3
  import { Link as Link$1 } from "../../navigation/navigation.js";
4
4
  import { reads, useReadQuery } from "../../../lib/studio-reads.js";
5
+ import { useLocalizedPath } from "../../../lib/view-locale.js";
6
+ import { STUDIO_SETTINGS_PATH } from "../routes.js";
5
7
  import { buildFaviconUrl } from "../../routes/pageRuntime.js";
6
8
  import { version } from "../../../package.js";
7
- import { FaviconDialog } from "./FaviconDialog.js";
8
- import { SocialProfilesDialog } from "./SocialProfilesDialog.js";
9
9
  import { c } from "react/compiler-runtime";
10
10
  import * as React from "react";
11
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
12
  import { Button } from "@camox/ui/button";
13
- import { AtSign, ChevronDown, ImageIcon, Info, Settings, Users } from "lucide-react";
13
+ import { ChevronDown, Info, Settings, Users } from "lucide-react";
14
14
  import { Skeleton } from "@camox/ui/skeleton";
15
15
  import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@camox/ui/dropdown-menu";
16
16
 
@@ -49,7 +49,7 @@ const Favicon = (t0) => {
49
49
  return t4;
50
50
  };
51
51
  const ProjectMenu = () => {
52
- const $ = c(58);
52
+ const $ = c(48);
53
53
  const authCtx = React.useContext(AuthContext);
54
54
  let t0;
55
55
  if ($[0] !== authCtx.projectUuid) {
@@ -58,8 +58,7 @@ const ProjectMenu = () => {
58
58
  $[1] = t0;
59
59
  } else t0 = $[1];
60
60
  const { data: project } = useReadQuery(t0);
61
- const [isFaviconDialogOpen, setIsFaviconDialogOpen] = React.useState(false);
62
- const [isSocialProfilesDialogOpen, setIsSocialProfilesDialogOpen] = React.useState(false);
61
+ const localized = useLocalizedPath();
63
62
  if (!project) {
64
63
  let t1;
65
64
  if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
@@ -118,149 +117,134 @@ const ProjectMenu = () => {
118
117
  $[12] = t4;
119
118
  $[13] = t6;
120
119
  } else t6 = $[13];
121
- const t7 = authCtx ? `${authCtx.authenticationUrl}/${project.organizationSlug}/${project.slug}/overview` : "#";
122
- let t8;
123
- if ($[14] !== t7) {
124
- t8 = /* @__PURE__ */ jsx("a", {
125
- href: t7,
126
- target: "_blank",
127
- rel: "noopener noreferrer"
128
- });
129
- $[14] = t7;
130
- $[15] = t8;
131
- } else t8 = $[15];
120
+ let t7;
121
+ if ($[14] !== localized) {
122
+ t7 = localized(STUDIO_SETTINGS_PATH);
123
+ $[14] = localized;
124
+ $[15] = t7;
125
+ } else t7 = $[15];
126
+ const t8 = t7;
132
127
  let t9;
133
- if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
134
- t9 = /* @__PURE__ */ jsx(Settings, {});
135
- $[16] = t9;
136
- } else t9 = $[16];
128
+ if ($[16] !== t8) {
129
+ t9 = /* @__PURE__ */ jsx(Link$1, { to: t8 });
130
+ $[16] = t8;
131
+ $[17] = t9;
132
+ } else t9 = $[17];
137
133
  let t10;
138
- if ($[17] !== t8) {
139
- t10 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
140
- render: t8,
141
- children: [t9, "Project settings"]
142
- });
143
- $[17] = t8;
134
+ if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
135
+ t10 = /* @__PURE__ */ jsx(Settings, {});
144
136
  $[18] = t10;
145
137
  } else t10 = $[18];
146
138
  let t11;
147
- if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
139
+ if ($[19] !== t9) {
148
140
  t11 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
149
- onClick: () => setIsFaviconDialogOpen(true),
150
- children: [/* @__PURE__ */ jsx(ImageIcon, {}), "Set favicon…"]
141
+ render: t9,
142
+ children: [t10, "Settings"]
151
143
  });
152
- $[19] = t11;
153
- } else t11 = $[19];
144
+ $[19] = t9;
145
+ $[20] = t11;
146
+ } else t11 = $[20];
154
147
  let t12;
148
+ if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
149
+ t12 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
150
+ $[21] = t12;
151
+ } else t12 = $[21];
155
152
  let t13;
156
- if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
157
- t12 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
158
- onClick: () => setIsSocialProfilesDialogOpen(true),
159
- children: [/* @__PURE__ */ jsx(AtSign, {}), "Social profiles…"]
160
- });
161
- t13 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
162
- $[20] = t12;
163
- $[21] = t13;
164
- } else {
165
- t12 = $[20];
166
- t13 = $[21];
167
- }
168
- let t14;
169
153
  if ($[22] !== project.organizationSlug) {
170
- t14 = /* @__PURE__ */ jsx(DropdownMenuLabel, {
154
+ t13 = /* @__PURE__ */ jsx(DropdownMenuLabel, {
171
155
  className: "text-muted-foreground text-xs font-normal",
172
156
  children: project.organizationSlug
173
157
  });
174
158
  $[22] = project.organizationSlug;
175
- $[23] = t14;
176
- } else t14 = $[23];
177
- const t15 = authCtx ? `${authCtx.authenticationUrl}/${project.organizationSlug}/members` : "#";
178
- let t16;
179
- if ($[24] !== t15) {
180
- t16 = /* @__PURE__ */ jsx("a", {
181
- href: t15,
159
+ $[23] = t13;
160
+ } else t13 = $[23];
161
+ const t14 = authCtx ? `${authCtx.authenticationUrl}/${project.organizationSlug}/members` : "#";
162
+ let t15;
163
+ if ($[24] !== t14) {
164
+ t15 = /* @__PURE__ */ jsx("a", {
165
+ href: t14,
182
166
  target: "_blank",
183
167
  rel: "noopener noreferrer"
184
168
  });
185
- $[24] = t15;
186
- $[25] = t16;
187
- } else t16 = $[25];
188
- let t17;
169
+ $[24] = t14;
170
+ $[25] = t15;
171
+ } else t15 = $[25];
172
+ let t16;
189
173
  if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
190
- t17 = /* @__PURE__ */ jsx(Users, {});
191
- $[26] = t17;
192
- } else t17 = $[26];
193
- let t18;
194
- if ($[27] !== t16) {
195
- t18 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
196
- render: t16,
197
- children: [t17, "Team members"]
174
+ t16 = /* @__PURE__ */ jsx(Users, {});
175
+ $[26] = t16;
176
+ } else t16 = $[26];
177
+ let t17;
178
+ if ($[27] !== t15) {
179
+ t17 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
180
+ render: t15,
181
+ children: [t16, "Team members"]
198
182
  });
199
- $[27] = t16;
200
- $[28] = t18;
201
- } else t18 = $[28];
202
- const t19 = authCtx ? `${authCtx.authenticationUrl}/${project.organizationSlug}/settings` : "#";
203
- let t20;
204
- if ($[29] !== t19) {
205
- t20 = /* @__PURE__ */ jsx("a", {
206
- href: t19,
183
+ $[27] = t15;
184
+ $[28] = t17;
185
+ } else t17 = $[28];
186
+ const t18 = authCtx ? `${authCtx.authenticationUrl}/${project.organizationSlug}/settings` : "#";
187
+ let t19;
188
+ if ($[29] !== t18) {
189
+ t19 = /* @__PURE__ */ jsx("a", {
190
+ href: t18,
207
191
  target: "_blank",
208
192
  rel: "noopener noreferrer"
209
193
  });
210
- $[29] = t19;
211
- $[30] = t20;
212
- } else t20 = $[30];
213
- let t21;
194
+ $[29] = t18;
195
+ $[30] = t19;
196
+ } else t19 = $[30];
197
+ let t20;
214
198
  if ($[31] === Symbol.for("react.memo_cache_sentinel")) {
215
- t21 = /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" });
216
- $[31] = t21;
217
- } else t21 = $[31];
218
- let t22;
219
- if ($[32] !== t20) {
220
- t22 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
221
- render: t20,
222
- children: [t21, "Team settings"]
199
+ t20 = /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" });
200
+ $[31] = t20;
201
+ } else t20 = $[31];
202
+ let t21;
203
+ if ($[32] !== t19) {
204
+ t21 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
205
+ render: t19,
206
+ children: [t20, "Team settings"]
223
207
  });
224
- $[32] = t20;
225
- $[33] = t22;
226
- } else t22 = $[33];
227
- let t23;
228
- if ($[34] !== t14 || $[35] !== t18 || $[36] !== t22) {
229
- t23 = /* @__PURE__ */ jsxs(DropdownMenuGroup, { children: [
230
- t14,
231
- t18,
232
- t22
208
+ $[32] = t19;
209
+ $[33] = t21;
210
+ } else t21 = $[33];
211
+ let t22;
212
+ if ($[34] !== t13 || $[35] !== t17 || $[36] !== t21) {
213
+ t22 = /* @__PURE__ */ jsxs(DropdownMenuGroup, { children: [
214
+ t13,
215
+ t17,
216
+ t21
233
217
  ] });
234
- $[34] = t14;
235
- $[35] = t18;
236
- $[36] = t22;
237
- $[37] = t23;
238
- } else t23 = $[37];
239
- let t24;
218
+ $[34] = t13;
219
+ $[35] = t17;
220
+ $[36] = t21;
221
+ $[37] = t22;
222
+ } else t22 = $[37];
223
+ let t23;
240
224
  if ($[38] === Symbol.for("react.memo_cache_sentinel")) {
241
- t24 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
242
- $[38] = t24;
243
- } else t24 = $[38];
225
+ t23 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
226
+ $[38] = t23;
227
+ } else t23 = $[38];
228
+ let t24;
244
229
  let t25;
245
- let t26;
246
230
  if ($[39] === Symbol.for("react.memo_cache_sentinel")) {
247
- t25 = /* @__PURE__ */ jsx(Link$1, {
248
- to: "https://camox.dev",
231
+ t24 = /* @__PURE__ */ jsx(Link$1, {
232
+ to: "https://camox.ai",
249
233
  target: "_blank"
250
234
  });
251
- t26 = /* @__PURE__ */ jsx(Info, { className: "h-4 w-4" });
252
- $[39] = t25;
253
- $[40] = t26;
235
+ t25 = /* @__PURE__ */ jsx(Info, { className: "h-4 w-4" });
236
+ $[39] = t24;
237
+ $[40] = t25;
254
238
  } else {
255
- t25 = $[39];
256
- t26 = $[40];
239
+ t24 = $[39];
240
+ t25 = $[40];
257
241
  }
258
- let t27;
242
+ let t26;
259
243
  if ($[41] === Symbol.for("react.memo_cache_sentinel")) {
260
- t27 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
261
- render: t25,
244
+ t26 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
245
+ render: t24,
262
246
  children: [
263
- t26,
247
+ t25,
264
248
  "Powered by Camox",
265
249
  /* @__PURE__ */ jsxs("span", {
266
250
  className: "text-muted-foreground ml-auto",
@@ -268,70 +252,34 @@ const ProjectMenu = () => {
268
252
  })
269
253
  ]
270
254
  });
271
- $[41] = t27;
272
- } else t27 = $[41];
273
- let t28;
274
- if ($[42] !== t10 || $[43] !== t23) {
275
- t28 = /* @__PURE__ */ jsxs(DropdownMenuContent, {
255
+ $[41] = t26;
256
+ } else t26 = $[41];
257
+ let t27;
258
+ if ($[42] !== t11 || $[43] !== t22) {
259
+ t27 = /* @__PURE__ */ jsxs(DropdownMenuContent, {
276
260
  className: "w-72",
277
261
  align: "start",
278
262
  side: "bottom",
279
263
  children: [
280
- t10,
281
264
  t11,
282
265
  t12,
283
- t13,
266
+ t22,
284
267
  t23,
285
- t24,
286
- t27
268
+ t26
287
269
  ]
288
270
  });
289
- $[42] = t10;
290
- $[43] = t23;
291
- $[44] = t28;
292
- } else t28 = $[44];
293
- let t29;
294
- if ($[45] !== t28 || $[46] !== t6) {
295
- t29 = /* @__PURE__ */ jsxs(DropdownMenu, { children: [t6, t28] });
296
- $[45] = t28;
271
+ $[42] = t11;
272
+ $[43] = t22;
273
+ $[44] = t27;
274
+ } else t27 = $[44];
275
+ let t28;
276
+ if ($[45] !== t27 || $[46] !== t6) {
277
+ t28 = /* @__PURE__ */ jsxs(DropdownMenu, { children: [t6, t27] });
278
+ $[45] = t27;
297
279
  $[46] = t6;
298
- $[47] = t29;
299
- } else t29 = $[47];
300
- let t30;
301
- if ($[48] !== isFaviconDialogOpen || $[49] !== project) {
302
- t30 = /* @__PURE__ */ jsx(FaviconDialog, {
303
- project,
304
- open: isFaviconDialogOpen,
305
- onOpenChange: setIsFaviconDialogOpen
306
- });
307
- $[48] = isFaviconDialogOpen;
308
- $[49] = project;
309
- $[50] = t30;
310
- } else t30 = $[50];
311
- let t31;
312
- if ($[51] !== isSocialProfilesDialogOpen || $[52] !== project) {
313
- t31 = /* @__PURE__ */ jsx(SocialProfilesDialog, {
314
- project,
315
- open: isSocialProfilesDialogOpen,
316
- onOpenChange: setIsSocialProfilesDialogOpen
317
- });
318
- $[51] = isSocialProfilesDialogOpen;
319
- $[52] = project;
320
- $[53] = t31;
321
- } else t31 = $[53];
322
- let t32;
323
- if ($[54] !== t29 || $[55] !== t30 || $[56] !== t31) {
324
- t32 = /* @__PURE__ */ jsxs(Fragment, { children: [
325
- t29,
326
- t30,
327
- t31
328
- ] });
329
- $[54] = t29;
330
- $[55] = t30;
331
- $[56] = t31;
332
- $[57] = t32;
333
- } else t32 = $[57];
334
- return t32;
280
+ $[47] = t28;
281
+ } else t28 = $[47];
282
+ return t28;
335
283
  };
336
284
 
337
285
  //#endregion