@stackframe/stack 2.4.24 → 2.4.26
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/CHANGELOG.md +18 -0
- package/dist/components/selected-team-switcher.d.mts +8 -0
- package/dist/components/selected-team-switcher.d.ts +8 -0
- package/dist/components/{team-switcher.js → selected-team-switcher.js} +7 -7
- package/dist/components/selected-team-switcher.js.map +1 -0
- package/dist/components-core/index.d.mts +4 -4
- package/dist/components-core/index.d.ts +4 -4
- package/dist/components-page/oauth-callback.js +1 -2
- package/dist/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/components/{team-switcher.js → selected-team-switcher.js} +4 -4
- package/dist/esm/components/selected-team-switcher.js.map +1 -0
- package/dist/esm/components-page/oauth-callback.js +1 -2
- package/dist/esm/components-page/oauth-callback.js.map +1 -1
- package/dist/esm/global.d.js +1 -0
- package/dist/esm/global.d.js.map +1 -0
- package/dist/esm/index.js +22 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/auth.js +1 -2
- package/dist/esm/lib/auth.js.map +1 -1
- package/dist/esm/lib/cookie.js +2 -2
- package/dist/esm/lib/cookie.js.map +1 -1
- package/dist/esm/lib/stack-app.js +27 -27
- package/dist/esm/lib/stack-app.js.map +1 -1
- package/dist/esm/providers/styled-components-registry.js +1 -2
- package/dist/esm/providers/styled-components-registry.js.map +1 -1
- package/dist/esm/utils/email.js +1 -2
- package/dist/esm/utils/email.js.map +1 -1
- package/dist/global.d.d.mts +2 -0
- package/dist/global.d.d.ts +2 -0
- package/dist/global.d.js +2 -0
- package/dist/global.d.js.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/auth.js +1 -2
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/cookie.js +2 -2
- package/dist/lib/cookie.js.map +1 -1
- package/dist/lib/stack-app.js +25 -25
- package/dist/lib/stack-app.js.map +1 -1
- package/dist/providers/component-provider.d.mts +6 -6
- package/dist/providers/component-provider.d.ts +6 -6
- package/dist/providers/styled-components-registry.js +1 -2
- package/dist/providers/styled-components-registry.js.map +1 -1
- package/dist/utils/email.js +1 -2
- package/dist/utils/email.js.map +1 -1
- package/package.json +7 -5
- package/dist/components/team-switcher.d.mts +0 -8
- package/dist/components/team-switcher.d.ts +0 -8
- package/dist/components/team-switcher.js.map +0 -1
- package/dist/esm/components/team-switcher.js.map +0 -1
|
@@ -18,13 +18,13 @@ declare const Components: {
|
|
|
18
18
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
19
19
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
20
20
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
21
|
-
size?: "
|
|
21
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
22
22
|
href: string | url.Url;
|
|
23
23
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
24
24
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
25
25
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
26
|
-
as?: "
|
|
27
|
-
size?: "
|
|
26
|
+
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
27
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
28
28
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
29
29
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
30
30
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
@@ -67,13 +67,13 @@ declare function useComponents(): {
|
|
|
67
67
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
68
68
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
69
69
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
70
|
-
size?: "
|
|
70
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
71
71
|
href: string | url.Url;
|
|
72
72
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
73
73
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
74
74
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
75
|
-
as?: "
|
|
76
|
-
size?: "
|
|
75
|
+
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
76
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
77
77
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
78
78
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
79
79
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
@@ -18,13 +18,13 @@ declare const Components: {
|
|
|
18
18
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
19
19
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
20
20
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
21
|
-
size?: "
|
|
21
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
22
22
|
href: string | url.Url;
|
|
23
23
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
24
24
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
25
25
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
26
|
-
as?: "
|
|
27
|
-
size?: "
|
|
26
|
+
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
27
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
28
28
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
29
29
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
30
30
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
@@ -67,13 +67,13 @@ declare function useComponents(): {
|
|
|
67
67
|
readonly Separator: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_separator.SeparatorProps & React__default.RefAttributes<HTMLDivElement>, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
|
|
68
68
|
readonly Label: React__default.ForwardRefExoticComponent<Omit<_radix_ui_react_label.LabelProps & React__default.RefAttributes<HTMLLabelElement>, "ref"> & React__default.RefAttributes<HTMLLabelElement>>;
|
|
69
69
|
readonly Link: React__default.ForwardRefExoticComponent<Omit<{
|
|
70
|
-
size?: "
|
|
70
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
71
71
|
href: string | url.Url;
|
|
72
72
|
} & Omit<React__default.HTMLProps<HTMLLinkElement>, "size" | "href">, "ref"> & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
73
73
|
readonly Text: React__default.ForwardRefExoticComponent<Omit<{
|
|
74
74
|
variant?: "primary" | "secondary" | "warning" | "success" | undefined;
|
|
75
|
-
as?: "
|
|
76
|
-
size?: "
|
|
75
|
+
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | undefined;
|
|
76
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
|
|
77
77
|
} & Omit<React__default.HTMLProps<HTMLParagraphElement>, "size">, "ref"> & React__default.RefAttributes<HTMLParagraphElement>>;
|
|
78
78
|
readonly Popover: React__default.FC<_radix_ui_react_popover.PopoverProps>;
|
|
79
79
|
readonly PopoverTrigger: React__default.ForwardRefExoticComponent<_radix_ui_react_popover.PopoverTriggerProps & React__default.RefAttributes<HTMLButtonElement>>;
|
|
@@ -39,8 +39,7 @@ function StyledComponentsRegistry({
|
|
|
39
39
|
styledComponentsStyleSheet.instance.clearTag();
|
|
40
40
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: styles });
|
|
41
41
|
});
|
|
42
|
-
if ((0, import_env.isBrowserLike)())
|
|
43
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
|
|
42
|
+
if ((0, import_env.isBrowserLike)()) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
|
|
44
43
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled_components.StyleSheetManager, { sheet: styledComponentsStyleSheet.instance, children });
|
|
45
44
|
}
|
|
46
45
|
//# sourceMappingURL=styled-components-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/providers/styled-components-registry.tsx"],"sourcesContent":["'use client';\n \nimport React, { useState } from 'react';\nimport { useServerInsertedHTML } from 'next/navigation';\nimport { ServerStyleSheet, StyleSheetManager } from 'styled-components';\nimport { isBrowserLike } from '@stackframe/stack-shared/dist/utils/env';\n \nexport default function StyledComponentsRegistry({\n children,\n}: {\n children: React.ReactNode,\n}) {\n // Only create stylesheet once with lazy initial state\n // x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state\n const [styledComponentsStyleSheet] = useState(() => new ServerStyleSheet());\n \n useServerInsertedHTML(() => {\n const styles = styledComponentsStyleSheet.getStyleElement();\n styledComponentsStyleSheet.instance.clearTag();\n return <>{styles}</>;\n });\n \n if (isBrowserLike()) return <>{children}</>;\n \n return (\n <StyleSheetManager sheet={styledComponentsStyleSheet.instance}>\n {children}\n </StyleSheetManager>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAgC;AAChC,wBAAsC;AACtC,+BAAoD;AACpD,iBAA8B;AAcnB;AAZI,SAAR,yBAA0C;AAAA,EAC/C;AACF,GAEG;AAGD,QAAM,CAAC,0BAA0B,QAAI,uBAAS,MAAM,IAAI,0CAAiB,CAAC;AAE1E,+CAAsB,MAAM;AAC1B,UAAM,SAAS,2BAA2B,gBAAgB;AAC1D,+BAA2B,SAAS,SAAS;AAC7C,WAAO,2EAAG,kBAAO;AAAA,EACnB,CAAC;AAED,UAAI,0BAAc
|
|
1
|
+
{"version":3,"sources":["../../src/providers/styled-components-registry.tsx"],"sourcesContent":["'use client';\n \nimport React, { useState } from 'react';\nimport { useServerInsertedHTML } from 'next/navigation';\nimport { ServerStyleSheet, StyleSheetManager } from 'styled-components';\nimport { isBrowserLike } from '@stackframe/stack-shared/dist/utils/env';\n \nexport default function StyledComponentsRegistry({\n children,\n}: {\n children: React.ReactNode,\n}) {\n // Only create stylesheet once with lazy initial state\n // x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state\n const [styledComponentsStyleSheet] = useState(() => new ServerStyleSheet());\n \n useServerInsertedHTML(() => {\n const styles = styledComponentsStyleSheet.getStyleElement();\n styledComponentsStyleSheet.instance.clearTag();\n return <>{styles}</>;\n });\n \n if (isBrowserLike()) return <>{children}</>;\n \n return (\n <StyleSheetManager sheet={styledComponentsStyleSheet.instance}>\n {children}\n </StyleSheetManager>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAgC;AAChC,wBAAsC;AACtC,+BAAoD;AACpD,iBAA8B;AAcnB;AAZI,SAAR,yBAA0C;AAAA,EAC/C;AACF,GAEG;AAGD,QAAM,CAAC,0BAA0B,QAAI,uBAAS,MAAM,IAAI,0CAAiB,CAAC;AAE1E,+CAAsB,MAAM;AAC1B,UAAM,SAAS,2BAA2B,gBAAgB;AAC1D,+BAA2B,SAAS,SAAS;AAC7C,WAAO,2EAAG,kBAAO;AAAA,EACnB,CAAC;AAED,UAAI,0BAAc,EAAG,QAAO,2EAAG,UAAS;AAExC,SACE,4CAAC,8CAAkB,OAAO,2BAA2B,UAClD,UACH;AAEJ;","names":[]}
|
package/dist/utils/email.js
CHANGED
|
@@ -35,8 +35,7 @@ __export(email_exports, {
|
|
|
35
35
|
module.exports = __toCommonJS(email_exports);
|
|
36
36
|
var yup = __toESM(require("yup"));
|
|
37
37
|
function validateEmail(email) {
|
|
38
|
-
if (typeof email !== "string")
|
|
39
|
-
throw new Error("Email must be a string");
|
|
38
|
+
if (typeof email !== "string") throw new Error("Email must be a string");
|
|
40
39
|
return yup.string().email().isValidSync(email);
|
|
41
40
|
}
|
|
42
41
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/utils/email.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/email.tsx"],"sourcesContent":["import * as yup from \"yup\";\n\nexport function validateEmail(email: string): boolean {\n if (typeof email !== \"string\") throw new Error(\"Email must be a string\");\n return yup.string().email().isValidSync(email);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAqB;AAEd,SAAS,cAAc,OAAwB;AACpD,MAAI,OAAO,UAAU
|
|
1
|
+
{"version":3,"sources":["../../src/utils/email.tsx"],"sourcesContent":["import * as yup from \"yup\";\n\nexport function validateEmail(email: string): boolean {\n if (typeof email !== \"string\") throw new Error(\"Email must be a string\");\n return yup.string().email().isValidSync(email);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAqB;AAEd,SAAS,cAAc,OAAwB;AACpD,MAAI,OAAO,UAAU,SAAU,OAAM,IAAI,MAAM,wBAAwB;AACvE,SAAW,WAAO,EAAE,MAAM,EAAE,YAAY,KAAK;AAC/C;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackframe/stack",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.26",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -49,13 +49,13 @@
|
|
|
49
49
|
"server-only": "^0.0.1",
|
|
50
50
|
"styled-components": "^6.1.8",
|
|
51
51
|
"yup": "^1.4.0",
|
|
52
|
-
"@stackframe/stack-sc": "2.4.
|
|
53
|
-
"@stackframe/stack-shared": "2.4.
|
|
52
|
+
"@stackframe/stack-sc": "2.4.26",
|
|
53
|
+
"@stackframe/stack-shared": "2.4.26"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"@mui/joy": "^5.0.0-beta.30",
|
|
57
57
|
"next": ">=14.1",
|
|
58
|
-
"react": "
|
|
58
|
+
"react": ">=18.2"
|
|
59
59
|
},
|
|
60
60
|
"peerDependenciesMeta": {
|
|
61
61
|
"@mui/joy": {
|
|
@@ -68,7 +68,9 @@
|
|
|
68
68
|
"@types/js-cookie": "^3.0.6",
|
|
69
69
|
"@types/react": "^18.2.66",
|
|
70
70
|
"esbuild": "^0.20.2",
|
|
71
|
-
"tsup": "^8.0.2"
|
|
71
|
+
"tsup": "^8.0.2",
|
|
72
|
+
"next": "^14.1.0",
|
|
73
|
+
"react": "^18.2.0"
|
|
72
74
|
},
|
|
73
75
|
"scripts": {
|
|
74
76
|
"typecheck": "tsc --noEmit",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
|
|
3
|
-
type TeamSwitcherProps = {
|
|
4
|
-
projectUrlMap?: (projectId: string) => string;
|
|
5
|
-
};
|
|
6
|
-
declare function TeamSwitcher(props: TeamSwitcherProps): react_jsx_runtime.JSX.Element;
|
|
7
|
-
|
|
8
|
-
export { TeamSwitcher as default };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
|
|
3
|
-
type TeamSwitcherProps = {
|
|
4
|
-
projectUrlMap?: (projectId: string) => string;
|
|
5
|
-
};
|
|
6
|
-
declare function TeamSwitcher(props: TeamSwitcherProps): react_jsx_runtime.JSX.Element;
|
|
7
|
-
|
|
8
|
-
export { TeamSwitcher as default };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/team-switcher.tsx"],"sourcesContent":["'use client';\n\nimport {\n useUser,\n Text,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n DropdownMenuLabel,\n useStackApp,\n} from \"..\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Check } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport { useMemo } from \"react\";\n\ntype TeamSwitcherProps = {\n projectUrlMap?: (projectId: string) => string,\n};\n\nfunction TeamIcon(props: { displayName: string }) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: '1.5rem', height: '1.5rem', marginRight: '0.5rem', borderRadius: '0.25rem', backgroundColor: 'rgb(228 228 231)' }}>\n <Text style={{ color: 'black', fontWeight: 400 }}>{props.displayName.slice(0, 1).toUpperCase()}</Text>\n </div>\n );\n}\n\nexport default function TeamSwitcher(props: TeamSwitcherProps) {\n const user = useUser();\n const router = useRouter();\n const selectedTeam = user?.selectedTeam;\n const rawTeams = user?.useTeams();\n const teams = useMemo(() => rawTeams?.sort((a, b) => b.id === selectedTeam?.id ? 1 : -1), [rawTeams, selectedTeam]);\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <TeamIcon displayName={selectedTeam?.displayName || ''} />\n <Text>{selectedTeam?.displayName || 'Select team'}</Text>\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent style={{ zIndex: 1500 }}>\n <DropdownMenuLabel>Teams</DropdownMenuLabel>\n {teams && teams.map(team => (\n <DropdownMenuItem\n key={team.id}\n onClick={() => {\n runAsynchronouslyWithAlert(async () => {\n await user?.setSelectedTeam(team);\n if (props.projectUrlMap) {\n router.push(props.projectUrlMap(team.id));\n }\n });\n }}\n style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <TeamIcon displayName={team.displayName} />\n <Text>{team.displayName}</Text>\n </div>\n <Check style={{ marginLeft: '0.5rem', visibility: team.id === selectedTeam?.id ? 'visible' : 'hidden', height: '1rem', width: '1rem' }} />\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,eASO;AACP,sBAA2C;AAC3C,0BAAsB;AACtB,wBAA0B;AAC1B,mBAAwB;AASlB;AAHN,SAAS,SAAS,OAAgC;AAChD,SACE,4CAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,UAAU,OAAO,UAAU,QAAQ,UAAU,aAAa,UAAU,cAAc,WAAW,iBAAiB,mBAAmB,GACpM,sDAAC,iBAAK,OAAO,EAAE,OAAO,SAAS,YAAY,IAAI,GAAI,gBAAM,YAAY,MAAM,GAAG,CAAC,EAAE,YAAY,GAAE,GACjG;AAEJ;AAEe,SAAR,aAA8B,OAA0B;AAC7D,QAAM,WAAO,kBAAQ;AACrB,QAAM,aAAS,6BAAU;AACzB,QAAM,eAAe,MAAM;AAC3B,QAAM,WAAW,MAAM,SAAS;AAChC,QAAM,YAAQ,sBAAQ,MAAM,UAAU,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,cAAc,KAAK,IAAI,EAAE,GAAG,CAAC,UAAU,YAAY,CAAC;AAElH,SACE,6CAAC,yBACC;AAAA,gDAAC,gCACC,uDAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,SAAS,GAClD;AAAA,kDAAC,YAAS,aAAa,cAAc,eAAe,IAAI;AAAA,MACxD,4CAAC,iBAAM,wBAAc,eAAe,eAAc;AAAA,OACpD,GACF;AAAA,IACA,6CAAC,gCAAoB,OAAO,EAAE,QAAQ,KAAK,GACzC;AAAA,kDAAC,8BAAkB,mBAAK;AAAA,MACvB,SAAS,MAAM,IAAI,UAClB;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM;AACb,4DAA2B,YAAY;AACrC,oBAAM,MAAM,gBAAgB,IAAI;AAChC,kBAAI,MAAM,eAAe;AACvB,uBAAO,KAAK,MAAM,cAAc,KAAK,EAAE,CAAC;AAAA,cAC1C;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,gBAAgB;AAAA,UAEhF;AAAA,yDAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,SAAS,GAClD;AAAA,0DAAC,YAAS,aAAa,KAAK,aAAa;AAAA,cACzC,4CAAC,iBAAM,eAAK,aAAY;AAAA,eAC1B;AAAA,YACA,4CAAC,6BAAM,OAAO,EAAE,YAAY,UAAU,YAAY,KAAK,OAAO,cAAc,KAAK,YAAY,UAAU,QAAQ,QAAQ,OAAO,OAAO,GAAG;AAAA;AAAA;AAAA,QAfnI,KAAK;AAAA,MAgBZ,CACD;AAAA,OACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/team-switcher.tsx"],"sourcesContent":["'use client';\n\nimport {\n useUser,\n Text,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n DropdownMenuLabel,\n useStackApp,\n} from \"..\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Check } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport { useMemo } from \"react\";\n\ntype TeamSwitcherProps = {\n projectUrlMap?: (projectId: string) => string,\n};\n\nfunction TeamIcon(props: { displayName: string }) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: '1.5rem', height: '1.5rem', marginRight: '0.5rem', borderRadius: '0.25rem', backgroundColor: 'rgb(228 228 231)' }}>\n <Text style={{ color: 'black', fontWeight: 400 }}>{props.displayName.slice(0, 1).toUpperCase()}</Text>\n </div>\n );\n}\n\nexport default function TeamSwitcher(props: TeamSwitcherProps) {\n const user = useUser();\n const router = useRouter();\n const selectedTeam = user?.selectedTeam;\n const rawTeams = user?.useTeams();\n const teams = useMemo(() => rawTeams?.sort((a, b) => b.id === selectedTeam?.id ? 1 : -1), [rawTeams, selectedTeam]);\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <TeamIcon displayName={selectedTeam?.displayName || ''} />\n <Text>{selectedTeam?.displayName || 'Select team'}</Text>\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent style={{ zIndex: 1500 }}>\n <DropdownMenuLabel>Teams</DropdownMenuLabel>\n {teams && teams.map(team => (\n <DropdownMenuItem\n key={team.id}\n onClick={() => {\n runAsynchronouslyWithAlert(async () => {\n await user?.setSelectedTeam(team);\n if (props.projectUrlMap) {\n router.push(props.projectUrlMap(team.id));\n }\n });\n }}\n style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <TeamIcon displayName={team.displayName} />\n <Text>{team.displayName}</Text>\n </div>\n <Check style={{ marginLeft: '0.5rem', visibility: team.id === selectedTeam?.id ? 'visible' : 'hidden', height: '1rem', width: '1rem' }} />\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":";;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,kCAAkC;AAC3C,SAAS,aAAa;AACtB,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AASlB,cAeE,YAfF;AAHN,SAAS,SAAS,OAAgC;AAChD,SACE,oBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,UAAU,OAAO,UAAU,QAAQ,UAAU,aAAa,UAAU,cAAc,WAAW,iBAAiB,mBAAmB,GACpM,8BAAC,QAAK,OAAO,EAAE,OAAO,SAAS,YAAY,IAAI,GAAI,gBAAM,YAAY,MAAM,GAAG,CAAC,EAAE,YAAY,GAAE,GACjG;AAEJ;AAEe,SAAR,aAA8B,OAA0B;AAC7D,QAAM,OAAO,QAAQ;AACrB,QAAM,SAAS,UAAU;AACzB,QAAM,eAAe,MAAM;AAC3B,QAAM,WAAW,MAAM,SAAS;AAChC,QAAM,QAAQ,QAAQ,MAAM,UAAU,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,cAAc,KAAK,IAAI,EAAE,GAAG,CAAC,UAAU,YAAY,CAAC;AAElH,SACE,qBAAC,gBACC;AAAA,wBAAC,uBACC,+BAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,SAAS,GAClD;AAAA,0BAAC,YAAS,aAAa,cAAc,eAAe,IAAI;AAAA,MACxD,oBAAC,QAAM,wBAAc,eAAe,eAAc;AAAA,OACpD,GACF;AAAA,IACA,qBAAC,uBAAoB,OAAO,EAAE,QAAQ,KAAK,GACzC;AAAA,0BAAC,qBAAkB,mBAAK;AAAA,MACvB,SAAS,MAAM,IAAI,UAClB;AAAA,QAAC;AAAA;AAAA,UAEC,SAAS,MAAM;AACb,uCAA2B,YAAY;AACrC,oBAAM,MAAM,gBAAgB,IAAI;AAChC,kBAAI,MAAM,eAAe;AACvB,uBAAO,KAAK,MAAM,cAAc,KAAK,EAAE,CAAC;AAAA,cAC1C;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,gBAAgB;AAAA,UAEhF;AAAA,iCAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,SAAS,GAClD;AAAA,kCAAC,YAAS,aAAa,KAAK,aAAa;AAAA,cACzC,oBAAC,QAAM,eAAK,aAAY;AAAA,eAC1B;AAAA,YACA,oBAAC,SAAM,OAAO,EAAE,YAAY,UAAU,YAAY,KAAK,OAAO,cAAc,KAAK,YAAY,UAAU,QAAQ,QAAQ,OAAO,OAAO,GAAG;AAAA;AAAA;AAAA,QAfnI,KAAK;AAAA,MAgBZ,CACD;AAAA,OACH;AAAA,KACF;AAEJ;","names":[]}
|