@stackframe/stack 2.3.4 → 2.3.7
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/README.md +2 -2
- package/dist/components/card-frame.d.mts +9 -0
- package/dist/components/card-frame.d.ts +8 -5
- package/dist/components/card-frame.js +58 -23
- package/dist/components/credential-sign-in.d.mts +5 -0
- package/dist/components/credential-sign-in.d.ts +5 -1
- package/dist/components/credential-sign-in.js +109 -41
- package/dist/components/credential-sign-up.d.mts +5 -0
- package/dist/components/credential-sign-up.d.ts +5 -1
- package/dist/components/credential-sign-up.js +140 -62
- package/dist/components/forgot-password.d.mts +7 -0
- package/dist/components/forgot-password.d.ts +6 -2
- package/dist/components/forgot-password.js +83 -26
- package/dist/components/form-warning.d.mts +7 -0
- package/dist/components/form-warning.d.ts +6 -2
- package/dist/components/form-warning.js +34 -8
- package/dist/components/magic-link-sign-in.d.mts +5 -0
- package/dist/components/magic-link-sign-in.d.ts +5 -1
- package/dist/components/magic-link-sign-in.js +89 -31
- package/dist/components/message-card.d.mts +10 -0
- package/dist/components/message-card.d.ts +8 -4
- package/dist/components/message-card.js +45 -6
- package/dist/components/oauth-button.d.mts +8 -0
- package/dist/components/oauth-button.d.ts +6 -2
- package/dist/components/oauth-button.js +142 -63
- package/dist/components/oauth-group.d.mts +7 -0
- package/dist/components/oauth-group.d.ts +6 -2
- package/dist/components/oauth-group.js +46 -8
- package/dist/components/password-field.d.mts +5 -0
- package/dist/components/password-field.d.ts +5 -3
- package/dist/components/password-field.js +111 -41
- package/dist/components/password-reset-inner.d.mts +8 -0
- package/dist/components/password-reset-inner.d.ts +6 -2
- package/dist/components/password-reset-inner.js +120 -58
- package/dist/components/redirect-message-card.d.mts +8 -0
- package/dist/components/redirect-message-card.d.ts +6 -2
- package/dist/components/redirect-message-card.js +110 -58
- package/dist/components/separator-with-text.d.mts +7 -0
- package/dist/components/separator-with-text.d.ts +6 -2
- package/dist/components/separator-with-text.js +35 -5
- package/dist/components/user-avatar.d.mts +13 -0
- package/dist/components/user-avatar.d.ts +12 -2
- package/dist/components/user-avatar.js +34 -8
- package/dist/components/user-button.d.mts +15 -0
- package/dist/components/user-button.d.ts +14 -3
- package/dist/components/user-button.js +160 -24
- package/dist/components-core/avatar.d.mts +8 -0
- package/dist/components-core/avatar.d.ts +7 -5
- package/dist/components-core/avatar.js +73 -18
- package/dist/components-core/button.d.mts +12 -0
- package/dist/components-core/button.d.ts +8 -6
- package/dist/components-core/button.js +177 -113
- package/dist/components-core/card.d.mts +8 -0
- package/dist/components-core/card.d.ts +4 -2
- package/dist/components-core/card.js +73 -22
- package/dist/components-core/collapsible.d.mts +8 -0
- package/dist/components-core/collapsible.d.ts +8 -6
- package/dist/components-core/collapsible.js +48 -5
- package/dist/components-core/container.d.mts +8 -0
- package/dist/components-core/container.d.ts +5 -3
- package/dist/components-core/container.js +61 -11
- package/dist/components-core/dropdown.d.mts +15 -0
- package/dist/components-core/dropdown.d.ts +10 -8
- package/dist/components-core/dropdown.js +108 -36
- package/dist/components-core/index.d.mts +59 -0
- package/dist/components-core/index.d.ts +52 -38
- package/dist/components-core/index.js +144 -45
- package/dist/components-core/input.d.mts +6 -0
- package/dist/components-core/input.d.ts +5 -3
- package/dist/components-core/input.js +97 -28
- package/dist/components-core/label.d.mts +6 -0
- package/dist/components-core/label.d.ts +5 -3
- package/dist/components-core/label.js +65 -15
- package/dist/components-core/link.d.mts +10 -0
- package/dist/components-core/link.d.ts +7 -6
- package/dist/components-core/link.js +72 -18
- package/dist/components-core/loading-indicator.d.mts +13 -0
- package/dist/components-core/loading-indicator.d.ts +11 -4
- package/dist/components-core/loading-indicator.js +46 -6
- package/dist/components-core/popover.d.mts +8 -0
- package/dist/components-core/popover.d.ts +8 -6
- package/dist/components-core/popover.js +72 -16
- package/dist/components-core/separator.d.mts +6 -0
- package/dist/components-core/separator.d.ts +5 -3
- package/dist/components-core/separator.js +66 -16
- package/dist/components-core/skeleton.d.mts +7 -0
- package/dist/components-core/skeleton.d.ts +7 -0
- package/dist/components-core/skeleton.js +86 -0
- package/dist/components-core/tabs.d.mts +9 -0
- package/dist/components-core/tabs.d.ts +8 -6
- package/dist/components-core/tabs.js +87 -20
- package/dist/components-core/text.d.mts +10 -0
- package/dist/components-core/text.d.ts +5 -3
- package/dist/components-core/text.js +95 -40
- package/dist/components-core-joy/button.d.mts +6 -0
- package/dist/components-core-joy/button.d.ts +6 -2
- package/dist/components-core-joy/button.js +86 -28
- package/dist/components-core-joy/input.d.mts +5 -0
- package/dist/components-core-joy/input.d.ts +5 -2
- package/dist/components-core-joy/input.js +51 -6
- package/dist/components-core-joy/separator.d.mts +6 -0
- package/dist/components-core-joy/separator.d.ts +6 -2
- package/dist/components-core-joy/separator.js +50 -6
- package/dist/components-core-joy/tabs.d.mts +9 -0
- package/dist/components-core-joy/tabs.d.ts +9 -5
- package/dist/components-core-joy/tabs.js +62 -16
- package/dist/components-core-joy/text.d.mts +9 -0
- package/dist/components-core-joy/text.d.ts +6 -3
- package/dist/components-core-joy/text.js +68 -28
- package/dist/components-page/account-settings.d.mts +7 -0
- package/dist/components-page/account-settings.d.ts +6 -2
- package/dist/components-page/account-settings.js +213 -81
- package/dist/components-page/auth-page.d.mts +8 -0
- package/dist/components-page/auth-page.d.ts +6 -2
- package/dist/components-page/auth-page.js +79 -19
- package/dist/components-page/email-verification.d.mts +8 -0
- package/dist/components-page/email-verification.d.ts +6 -2
- package/dist/components-page/email-verification.js +65 -28
- package/dist/components-page/forgot-password.d.mts +7 -0
- package/dist/components-page/forgot-password.d.ts +6 -2
- package/dist/components-page/forgot-password.js +64 -20
- package/dist/components-page/magic-link-callback.d.mts +8 -0
- package/dist/components-page/magic-link-callback.d.ts +6 -2
- package/dist/components-page/magic-link-callback.js +72 -34
- package/dist/components-page/oauth-callback.d.mts +5 -0
- package/dist/components-page/oauth-callback.d.ts +5 -1
- package/dist/components-page/oauth-callback.js +52 -16
- package/dist/components-page/password-reset.d.mts +8 -0
- package/dist/components-page/password-reset.d.ts +6 -2
- package/dist/components-page/password-reset.js +70 -34
- package/dist/components-page/sign-in.d.mts +7 -0
- package/dist/components-page/sign-in.d.ts +6 -2
- package/dist/components-page/sign-in.js +41 -5
- package/dist/components-page/sign-out.d.mts +5 -0
- package/dist/components-page/sign-out.d.ts +5 -1
- package/dist/components-page/sign-out.js +47 -11
- package/dist/components-page/sign-up.d.mts +7 -0
- package/dist/components-page/sign-up.d.ts +6 -2
- package/dist/components-page/sign-up.js +41 -5
- package/dist/components-page/stack-handler.d.mts +16 -0
- package/dist/components-page/stack-handler.d.ts +11 -3
- package/dist/components-page/stack-handler.js +102 -64
- package/dist/esm/components/card-frame.js +39 -0
- package/dist/esm/components/credential-sign-in.js +82 -0
- package/dist/esm/components/credential-sign-up.js +114 -0
- package/dist/esm/components/forgot-password.js +55 -0
- package/dist/esm/components/form-warning.js +15 -0
- package/dist/esm/components/magic-link-sign-in.js +61 -0
- package/dist/esm/components/message-card.js +16 -0
- package/dist/esm/components/oauth-button.js +124 -0
- package/dist/esm/components/oauth-group.js +17 -0
- package/dist/esm/components/password-field.js +82 -0
- package/dist/esm/components/password-reset-inner.js +93 -0
- package/dist/esm/components/redirect-message-card.js +83 -0
- package/dist/esm/components/separator-with-text.js +16 -0
- package/dist/esm/components/user-avatar.js +14 -0
- package/dist/esm/components/user-button.js +133 -0
- package/dist/esm/components-core/avatar.js +56 -0
- package/dist/esm/components-core/button.js +165 -0
- package/dist/esm/components-core/card.js +51 -0
- package/dist/esm/components-core/collapsible.js +13 -0
- package/dist/esm/components-core/container.js +35 -0
- package/dist/esm/components-core/dropdown.js +106 -0
- package/dist/esm/components-core/index.js +93 -0
- package/dist/esm/components-core/input.js +80 -0
- package/dist/esm/components-core/label.js +38 -0
- package/dist/esm/components-core/link.js +38 -0
- package/dist/esm/components-core/loading-indicator.js +27 -0
- package/dist/esm/components-core/popover.js +43 -0
- package/dist/esm/components-core/separator.js +36 -0
- package/dist/esm/components-core/skeleton.js +52 -0
- package/dist/esm/components-core/tabs.js +79 -0
- package/dist/esm/components-core/text.js +63 -0
- package/dist/esm/components-core-joy/button.js +53 -0
- package/dist/esm/components-core-joy/input.js +18 -0
- package/dist/esm/components-core-joy/separator.js +17 -0
- package/dist/esm/components-core-joy/tabs.js +29 -0
- package/dist/esm/components-core-joy/text.js +35 -0
- package/dist/esm/components-page/account-settings.js +197 -0
- package/dist/esm/components-page/auth-page.js +50 -0
- package/dist/esm/components-page/email-verification.js +36 -0
- package/dist/esm/components-page/forgot-password.js +35 -0
- package/dist/esm/components-page/magic-link-callback.js +43 -0
- package/dist/esm/components-page/oauth-callback.js +23 -0
- package/dist/esm/components-page/password-reset.js +42 -0
- package/dist/esm/components-page/sign-in.js +12 -0
- package/dist/esm/components-page/sign-out.js +18 -0
- package/dist/esm/components-page/sign-up.js +12 -0
- package/dist/esm/components-page/stack-handler.js +75 -0
- package/dist/esm/index.js +47 -0
- package/dist/esm/joy.js +5 -0
- package/dist/esm/lib/auth.js +62 -0
- package/dist/esm/lib/cookie.js +185 -0
- package/dist/esm/lib/hooks.js +29 -0
- package/dist/esm/lib/stack-app.js +940 -0
- package/dist/esm/providers/component-provider.js +76 -0
- package/dist/esm/providers/design-provider.js +36 -0
- package/dist/esm/providers/joy-provider.js +35 -0
- package/dist/esm/providers/stack-provider-client.js +31 -0
- package/dist/esm/providers/stack-provider.js +21 -0
- package/dist/esm/providers/styled-components-registry.js +24 -0
- package/dist/esm/providers/theme-provider.js +22 -0
- package/dist/esm/utils/browser-script.js +25 -0
- package/dist/esm/utils/constants.js +34 -0
- package/dist/esm/utils/email.js +10 -0
- package/dist/esm/utils/next.js +7 -0
- package/dist/esm/utils/url.js +21 -0
- package/dist/index.d.mts +37 -0
- package/dist/index.d.ts +37 -22
- package/dist/index.js +106 -21
- package/dist/joy.d.mts +16 -0
- package/dist/joy.d.ts +16 -1
- package/dist/joy.js +30 -1
- package/dist/lib/auth.d.mts +11 -0
- package/dist/lib/auth.d.ts +8 -4
- package/dist/lib/auth.js +83 -57
- package/dist/lib/cookie.d.mts +14 -0
- package/dist/lib/cookie.d.ts +8 -6
- package/dist/lib/cookie.js +217 -45
- package/dist/lib/hooks.d.mts +35 -0
- package/dist/lib/hooks.d.ts +14 -8
- package/dist/lib/hooks.js +53 -28
- package/dist/lib/stack-app.d.mts +227 -0
- package/dist/lib/stack-app.d.ts +45 -44
- package/dist/lib/stack-app.js +937 -861
- package/dist/providers/component-provider.d.mts +113 -0
- package/dist/providers/component-provider.d.ts +97 -73
- package/dist/providers/component-provider.js +92 -56
- package/dist/providers/design-provider.d.mts +34 -0
- package/dist/providers/design-provider.d.ts +16 -21
- package/dist/providers/design-provider.js +57 -64
- package/dist/providers/joy-provider.d.mts +36 -0
- package/dist/providers/joy-provider.d.ts +30 -14
- package/dist/providers/joy-provider.js +58 -30
- package/dist/providers/stack-provider-client.d.mts +20 -0
- package/dist/providers/stack-provider-client.d.ts +18 -7
- package/dist/providers/stack-provider-client.js +65 -12
- package/dist/providers/stack-provider.d.mts +14 -0
- package/dist/providers/stack-provider.d.ts +13 -5
- package/dist/providers/stack-provider.js +41 -5
- package/dist/providers/styled-components-registry.d.mts +8 -0
- package/dist/providers/styled-components-registry.d.ts +8 -4
- package/dist/providers/styled-components-registry.js +43 -17
- package/dist/providers/theme-provider.d.mts +22 -0
- package/dist/providers/theme-provider.d.ts +21 -9
- package/dist/providers/theme-provider.js +55 -19
- package/dist/utils/browser-script.d.mts +5 -0
- package/dist/utils/browser-script.d.ts +5 -0
- package/dist/utils/browser-script.js +50 -0
- package/dist/utils/constants.d.mts +48 -0
- package/dist/utils/constants.d.ts +11 -9
- package/dist/utils/constants.js +66 -21
- package/dist/utils/email.d.mts +3 -0
- package/dist/utils/email.d.ts +3 -1
- package/dist/utils/email.js +44 -6
- package/dist/utils/next.d.mts +3 -0
- package/dist/utils/next.d.ts +3 -1
- package/dist/utils/next.js +31 -3
- package/dist/utils/url.d.mts +4 -0
- package/dist/utils/url.d.ts +4 -2
- package/dist/utils/url.js +44 -13
- package/package.json +20 -11
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// src/components-core/avatar.tsx
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
4
|
+
import styled from "styled-components";
|
|
5
|
+
import { useDesign } from "..";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
var StyledAvatar = styled(AvatarPrimitive.Root)`
|
|
8
|
+
position: relative;
|
|
9
|
+
display: flex;
|
|
10
|
+
height: 2rem;
|
|
11
|
+
width: 2rem;
|
|
12
|
+
flex-shrink: 0;
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
border-radius: 9999px;
|
|
15
|
+
`;
|
|
16
|
+
var Avatar = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(StyledAvatar, { ref, className, ...props }));
|
|
17
|
+
Avatar.displayName = "Avatar";
|
|
18
|
+
var StyledAvatarImage = styled(AvatarPrimitive.Image)`
|
|
19
|
+
aspect-ratio: 1 / 1;
|
|
20
|
+
height: 100%;
|
|
21
|
+
width: 100%;
|
|
22
|
+
`;
|
|
23
|
+
var AvatarImage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(StyledAvatarImage, { ref, className, ...props }));
|
|
24
|
+
AvatarImage.displayName = "AvatarImage";
|
|
25
|
+
var StyledAvatarFallback = styled(AvatarPrimitive.Fallback)`
|
|
26
|
+
display: flex;
|
|
27
|
+
height: 100%;
|
|
28
|
+
width: 100%;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
border-radius: 9999px;
|
|
32
|
+
|
|
33
|
+
background-color: ${({ $colors }) => $colors.light.secondaryColor};
|
|
34
|
+
|
|
35
|
+
html[data-theme='dark'] & {
|
|
36
|
+
background-color: ${({ $colors }) => $colors.dark.secondaryColor};
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
39
|
+
var AvatarFallback = React.forwardRef(({ className, ...props }, ref) => {
|
|
40
|
+
const { colors } = useDesign();
|
|
41
|
+
return /* @__PURE__ */ jsx(
|
|
42
|
+
StyledAvatarFallback,
|
|
43
|
+
{
|
|
44
|
+
ref,
|
|
45
|
+
className,
|
|
46
|
+
$colors: colors,
|
|
47
|
+
...props
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
});
|
|
51
|
+
AvatarFallback.displayName = "AvatarFallback";
|
|
52
|
+
export {
|
|
53
|
+
Avatar,
|
|
54
|
+
AvatarFallback,
|
|
55
|
+
AvatarImage
|
|
56
|
+
};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/button.tsx
|
|
5
|
+
import React, { useMemo } from "react";
|
|
6
|
+
import { useDesign } from "../providers/design-provider";
|
|
7
|
+
import Color from "color";
|
|
8
|
+
import styled from "styled-components";
|
|
9
|
+
import { BORDER_RADIUS, FONT_FAMILY, FONT_SIZES } from "../utils/constants";
|
|
10
|
+
import LoadingIndicator from "./loading-indicator";
|
|
11
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
function getColors({
|
|
13
|
+
propsColor,
|
|
14
|
+
colors,
|
|
15
|
+
variant
|
|
16
|
+
}) {
|
|
17
|
+
let bgColor;
|
|
18
|
+
switch (variant) {
|
|
19
|
+
case "primary": {
|
|
20
|
+
bgColor = colors.primaryColor;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
case "secondary": {
|
|
24
|
+
bgColor = colors.secondaryColor;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
case "warning": {
|
|
28
|
+
bgColor = "#ff4500";
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (propsColor) {
|
|
33
|
+
bgColor = propsColor;
|
|
34
|
+
}
|
|
35
|
+
const c = Color(bgColor);
|
|
36
|
+
const pc = Color(colors.primaryColor);
|
|
37
|
+
const changeColor = (value) => {
|
|
38
|
+
return c.hsl(c.hue(), c.saturationl(), c.lightness() + value).toString();
|
|
39
|
+
};
|
|
40
|
+
const getAlpha = (alpha) => {
|
|
41
|
+
return Color(
|
|
42
|
+
pc.isDark() ? "white" : "black"
|
|
43
|
+
).alpha(alpha).toString();
|
|
44
|
+
};
|
|
45
|
+
if (c.alpha() === 0) {
|
|
46
|
+
return {
|
|
47
|
+
bgColor: "transparent",
|
|
48
|
+
hoverBgColor: getAlpha(0.1),
|
|
49
|
+
activeBgColor: getAlpha(0.2),
|
|
50
|
+
textColor: colors.primaryColor
|
|
51
|
+
};
|
|
52
|
+
} else if (c.isLight()) {
|
|
53
|
+
return {
|
|
54
|
+
bgColor,
|
|
55
|
+
hoverBgColor: changeColor(-10),
|
|
56
|
+
activeBgColor: changeColor(-20),
|
|
57
|
+
textColor: "black"
|
|
58
|
+
};
|
|
59
|
+
} else {
|
|
60
|
+
return {
|
|
61
|
+
bgColor,
|
|
62
|
+
hoverBgColor: changeColor(10),
|
|
63
|
+
activeBgColor: changeColor(20),
|
|
64
|
+
textColor: "white"
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
var StyledButton = styled.button`
|
|
69
|
+
border: 0;
|
|
70
|
+
border-radius: ${BORDER_RADIUS};
|
|
71
|
+
padding: ${(props) => {
|
|
72
|
+
switch (props.$size) {
|
|
73
|
+
case "sm": {
|
|
74
|
+
return "0rem 0.75rem";
|
|
75
|
+
}
|
|
76
|
+
case "md": {
|
|
77
|
+
return "0rem 1rem";
|
|
78
|
+
}
|
|
79
|
+
case "lg": {
|
|
80
|
+
return "0rem 2rem";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}};
|
|
84
|
+
height: ${(props) => {
|
|
85
|
+
switch (props.$size) {
|
|
86
|
+
case "sm": {
|
|
87
|
+
return "2rem";
|
|
88
|
+
}
|
|
89
|
+
case "md": {
|
|
90
|
+
return "2.5rem";
|
|
91
|
+
}
|
|
92
|
+
case "lg": {
|
|
93
|
+
return "3rem";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}};
|
|
97
|
+
font-family: ${FONT_FAMILY};
|
|
98
|
+
font-size: ${FONT_SIZES.md};
|
|
99
|
+
opacity: ${(props) => props.disabled ? 0.5 : 1};
|
|
100
|
+
transition: background-color 0.2s;
|
|
101
|
+
cursor: pointer;
|
|
102
|
+
position: relative;
|
|
103
|
+
&:disabled {
|
|
104
|
+
cursor: auto;
|
|
105
|
+
opacity: 0.5;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
background-color: ${(props) => props.$colors.light.bgColor};
|
|
109
|
+
color: ${(props) => props.$colors.light.textColor};
|
|
110
|
+
&:not([disabled]) {
|
|
111
|
+
&:active,&:hover:active {
|
|
112
|
+
background-color: ${(props) => props.$colors.light.activeBgColor};
|
|
113
|
+
}
|
|
114
|
+
&:hover {
|
|
115
|
+
background-color: ${(props) => props.$colors.light.hoverBgColor};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
html[data-theme='dark'] & {
|
|
120
|
+
background-color: ${(props) => props.$colors.dark.bgColor};
|
|
121
|
+
color: ${(props) => props.$colors.dark.textColor};
|
|
122
|
+
&:not([disabled]) {
|
|
123
|
+
&:active,&:hover:active {
|
|
124
|
+
background-color: ${(props) => props.$colors.dark.activeBgColor};
|
|
125
|
+
}
|
|
126
|
+
&:hover {
|
|
127
|
+
background-color: ${(props) => props.$colors.dark.hoverBgColor};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
`;
|
|
132
|
+
var Button = React.forwardRef(
|
|
133
|
+
({
|
|
134
|
+
variant = "primary",
|
|
135
|
+
size = "md",
|
|
136
|
+
loading = false,
|
|
137
|
+
...props
|
|
138
|
+
}, ref) => {
|
|
139
|
+
const { colors } = useDesign();
|
|
140
|
+
const { dark, light } = useMemo(() => {
|
|
141
|
+
return {
|
|
142
|
+
dark: getColors({ propsColor: props.color, colors: colors.dark, variant }),
|
|
143
|
+
light: getColors({ propsColor: props.color, colors: colors.light, variant })
|
|
144
|
+
};
|
|
145
|
+
}, [props.color, colors, variant]);
|
|
146
|
+
return /* @__PURE__ */ jsxs(
|
|
147
|
+
StyledButton,
|
|
148
|
+
{
|
|
149
|
+
ref,
|
|
150
|
+
$size: size,
|
|
151
|
+
$loading: loading,
|
|
152
|
+
$colors: { dark, light },
|
|
153
|
+
...props,
|
|
154
|
+
children: [
|
|
155
|
+
/* @__PURE__ */ jsx("div", { style: { position: "absolute", top: "50%", left: "50%", transform: "translate(-50%, -50%)", visibility: loading ? "visible" : "hidden" }, children: /* @__PURE__ */ jsx(LoadingIndicator, { color: { light: light.textColor, dark: dark.textColor } }) }),
|
|
156
|
+
/* @__PURE__ */ jsx("div", { style: { visibility: loading ? "hidden" : "visible" }, children: props.children })
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
Button.displayName = "Button";
|
|
163
|
+
export {
|
|
164
|
+
Button
|
|
165
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/card.tsx
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import styled from "styled-components";
|
|
7
|
+
import { useDesign } from "..";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
var StyledCard = styled.div`
|
|
10
|
+
border-radius: 0.5rem;
|
|
11
|
+
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
|
|
12
|
+
padding: 1.5rem;
|
|
13
|
+
|
|
14
|
+
border: 1px solid ${(props) => props.$colors.light.neutralColor};
|
|
15
|
+
background-color: ${(props) => props.$colors.light.backgroundColor};
|
|
16
|
+
|
|
17
|
+
html[data-theme='dark'] & {
|
|
18
|
+
border-color: ${(props) => props.$colors.dark.neutralColor};
|
|
19
|
+
background-color: ${(props) => props.$colors.dark.backgroundColor};
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
var StyledCardHeader = styled.div`
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: column;
|
|
25
|
+
gap: 0.375rem;
|
|
26
|
+
margin-bottom: 1.5rem;
|
|
27
|
+
`;
|
|
28
|
+
var StyledCardContent = styled.div`
|
|
29
|
+
`;
|
|
30
|
+
var StyledCardFooter = styled.div`
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
margin-top: 1.5rem;
|
|
34
|
+
`;
|
|
35
|
+
var Card = React.forwardRef((props, ref) => {
|
|
36
|
+
const { colors } = useDesign();
|
|
37
|
+
return /* @__PURE__ */ jsx(StyledCard, { ref, ...props, $colors: colors });
|
|
38
|
+
});
|
|
39
|
+
Card.displayName = "Card";
|
|
40
|
+
var CardHeader = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(StyledCardHeader, { ref, ...props }));
|
|
41
|
+
CardHeader.displayName = "CardHeader";
|
|
42
|
+
var CardContent = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(StyledCardContent, { ref, ...props }));
|
|
43
|
+
CardContent.displayName = "CardContent";
|
|
44
|
+
var CardFooter = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(StyledCardFooter, { ref, ...props }));
|
|
45
|
+
CardFooter.displayName = "CardFooter";
|
|
46
|
+
export {
|
|
47
|
+
Card,
|
|
48
|
+
CardContent,
|
|
49
|
+
CardFooter,
|
|
50
|
+
CardHeader
|
|
51
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/collapsible.tsx
|
|
5
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
6
|
+
var Collapsible = CollapsiblePrimitive.Root;
|
|
7
|
+
var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
|
|
8
|
+
var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
|
|
9
|
+
export {
|
|
10
|
+
Collapsible,
|
|
11
|
+
CollapsibleContent2 as CollapsibleContent,
|
|
12
|
+
CollapsibleTrigger2 as CollapsibleTrigger
|
|
13
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/container.tsx
|
|
5
|
+
import { useDesign } from "../providers/design-provider";
|
|
6
|
+
import styled from "styled-components";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
var OuterContainer = styled.div`
|
|
9
|
+
display: flex;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
width: 100%;
|
|
12
|
+
`;
|
|
13
|
+
var InnerContainer = styled.div`
|
|
14
|
+
width: 100%;
|
|
15
|
+
@media (min-width: ${(props) => props.$breakpoint}px) {
|
|
16
|
+
width: ${(props) => props.$breakpoint}px;
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
function Container({
|
|
20
|
+
size = "md",
|
|
21
|
+
...props
|
|
22
|
+
}) {
|
|
23
|
+
const { breakpoints } = useDesign();
|
|
24
|
+
return /* @__PURE__ */ jsx(OuterContainer, { children: /* @__PURE__ */ jsx(
|
|
25
|
+
InnerContainer,
|
|
26
|
+
{
|
|
27
|
+
$breakpoint: typeof size === "number" ? size : breakpoints[size],
|
|
28
|
+
...props,
|
|
29
|
+
children: props.children
|
|
30
|
+
}
|
|
31
|
+
) });
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
Container
|
|
35
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/dropdown.tsx
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import styled from "styled-components";
|
|
7
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
8
|
+
import { useDesign } from "..";
|
|
9
|
+
import { SELECTED_BACKGROUND_COLORS } from "../utils/constants";
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
12
|
+
var StyledTrigger = styled(DropdownMenuPrimitive.Trigger)`
|
|
13
|
+
all: unset;
|
|
14
|
+
&:focus {
|
|
15
|
+
outline: none;
|
|
16
|
+
box-shadow: 0;
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
var DropdownMenuTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(StyledTrigger, { ref, ...props }));
|
|
20
|
+
var StyledContent = styled(DropdownMenuPrimitive.Content)`
|
|
21
|
+
z-index: 50;
|
|
22
|
+
min-width: 8rem;
|
|
23
|
+
overflow: hidden;
|
|
24
|
+
border-radius: 4px;
|
|
25
|
+
padding: 0.25rem;
|
|
26
|
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
27
|
+
|
|
28
|
+
border: 1px solid ${({ $colors }) => $colors.light.neutralColor};
|
|
29
|
+
background: ${({ $colors }) => $colors.light.backgroundColor};
|
|
30
|
+
|
|
31
|
+
html[data-theme='dark'] & {
|
|
32
|
+
border-color: ${({ $colors }) => $colors.dark.neutralColor};
|
|
33
|
+
background: ${({ $colors }) => $colors.dark.backgroundColor};
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
var DropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => {
|
|
37
|
+
const { colors } = useDesign();
|
|
38
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
39
|
+
StyledContent,
|
|
40
|
+
{
|
|
41
|
+
$colors: colors,
|
|
42
|
+
sideOffset,
|
|
43
|
+
ref,
|
|
44
|
+
...props
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
47
|
+
});
|
|
48
|
+
DropdownMenuContent.displayName = "DropdownMenuContent";
|
|
49
|
+
var StyledItem = styled(DropdownMenuPrimitive.Item)`
|
|
50
|
+
display: flex;
|
|
51
|
+
cursor: default;
|
|
52
|
+
align-items: center;
|
|
53
|
+
border-radius: 4px;
|
|
54
|
+
padding: 0.375rem 0.5rem;
|
|
55
|
+
font-size: 0.875rem;
|
|
56
|
+
outline: none;
|
|
57
|
+
transition: color 0.2s ease;
|
|
58
|
+
&:focus {
|
|
59
|
+
background-color: var(--accent);
|
|
60
|
+
color: var(--accent-foreground);
|
|
61
|
+
}
|
|
62
|
+
${({ $inset }) => $inset && "padding-left: 2rem;"}
|
|
63
|
+
|
|
64
|
+
&:hover {
|
|
65
|
+
background-color: ${SELECTED_BACKGROUND_COLORS.light};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
html[data-theme='dark'] & {
|
|
69
|
+
&:hover {
|
|
70
|
+
background-color: ${SELECTED_BACKGROUND_COLORS.dark};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
`;
|
|
74
|
+
var DropdownMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => {
|
|
75
|
+
return /* @__PURE__ */ jsx(StyledItem, { ref, ...props, $inset: inset });
|
|
76
|
+
});
|
|
77
|
+
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
78
|
+
var StyledLabel = styled(DropdownMenuPrimitive.Label)`
|
|
79
|
+
padding: 0.375rem 0.5rem;
|
|
80
|
+
font-size: 0.875rem;
|
|
81
|
+
${({ inset }) => inset && "padding-left: 2rem;"}
|
|
82
|
+
`;
|
|
83
|
+
var DropdownMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(StyledLabel, { ref, ...props, inset }));
|
|
84
|
+
DropdownMenuLabel.displayName = "DropdownMenuLabel";
|
|
85
|
+
var StyledSeparator = styled(DropdownMenuPrimitive.Separator)`
|
|
86
|
+
margin: 0.25rem -0.25rem;
|
|
87
|
+
height: 1px;
|
|
88
|
+
background-color: ${({ $colors }) => $colors.light.neutralColor};
|
|
89
|
+
|
|
90
|
+
html[data-theme='dark'] & {
|
|
91
|
+
background-color: ${({ $colors }) => $colors.dark.neutralColor};
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
94
|
+
var DropdownMenuSeparator = React.forwardRef(({ className, ...props }, ref) => {
|
|
95
|
+
const { colors } = useDesign();
|
|
96
|
+
return /* @__PURE__ */ jsx(StyledSeparator, { ref, ...props, $colors: colors });
|
|
97
|
+
});
|
|
98
|
+
DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
|
|
99
|
+
export {
|
|
100
|
+
DropdownMenu,
|
|
101
|
+
DropdownMenuContent,
|
|
102
|
+
DropdownMenuItem,
|
|
103
|
+
DropdownMenuLabel,
|
|
104
|
+
DropdownMenuSeparator,
|
|
105
|
+
DropdownMenuTrigger
|
|
106
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/index.tsx
|
|
5
|
+
import { forwardRef } from "react";
|
|
6
|
+
import { useComponents } from "../providers/component-provider";
|
|
7
|
+
import { useAsyncCallbackWithLoggedError } from "@stackframe/stack-shared/dist/hooks/use-async-callback";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
var Button = forwardRef((props, ref) => {
|
|
10
|
+
const { Button: Button2 } = useComponents();
|
|
11
|
+
const [onClick, onClickLoading] = useAsyncCallbackWithLoggedError(async () => {
|
|
12
|
+
return await props.onClick?.();
|
|
13
|
+
}, [props.onClick]);
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
Button2,
|
|
16
|
+
{
|
|
17
|
+
...props,
|
|
18
|
+
onClick: props.onClick && onClick,
|
|
19
|
+
loading: props.loading || onClickLoading,
|
|
20
|
+
disabled: props.disabled || onClickLoading,
|
|
21
|
+
ref
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
});
|
|
25
|
+
function createDynamicComponent(component) {
|
|
26
|
+
return forwardRef((props, ref) => {
|
|
27
|
+
const Component = useComponents()[component];
|
|
28
|
+
return /* @__PURE__ */ jsx(Component, { ...props, ref });
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
var Input = createDynamicComponent("Input");
|
|
32
|
+
var Container = createDynamicComponent("Container");
|
|
33
|
+
var Separator = createDynamicComponent("Separator");
|
|
34
|
+
var Label = createDynamicComponent("Label");
|
|
35
|
+
var Link = createDynamicComponent("Link");
|
|
36
|
+
var Text = createDynamicComponent("Text");
|
|
37
|
+
var Popover = createDynamicComponent("Popover");
|
|
38
|
+
var PopoverTrigger = createDynamicComponent("PopoverTrigger");
|
|
39
|
+
var PopoverContent = createDynamicComponent("PopoverContent");
|
|
40
|
+
var DropdownMenu = createDynamicComponent("DropdownMenu");
|
|
41
|
+
var DropdownMenuTrigger = createDynamicComponent("DropdownMenuTrigger");
|
|
42
|
+
var DropdownMenuContent = createDynamicComponent("DropdownMenuContent");
|
|
43
|
+
var DropdownMenuItem = createDynamicComponent("DropdownMenuItem");
|
|
44
|
+
var DropdownMenuLabel = createDynamicComponent("DropdownMenuLabel");
|
|
45
|
+
var DropdownMenuSeparator = createDynamicComponent("DropdownMenuSeparator");
|
|
46
|
+
var Avatar = createDynamicComponent("Avatar");
|
|
47
|
+
var AvatarFallback = createDynamicComponent("AvatarFallback");
|
|
48
|
+
var AvatarImage = createDynamicComponent("AvatarImage");
|
|
49
|
+
var Collapsible = createDynamicComponent("Collapsible");
|
|
50
|
+
var CollapsibleTrigger = createDynamicComponent("CollapsibleTrigger");
|
|
51
|
+
var CollapsibleContent = createDynamicComponent("CollapsibleContent");
|
|
52
|
+
var Card = createDynamicComponent("Card");
|
|
53
|
+
var CardHeader = createDynamicComponent("CardHeader");
|
|
54
|
+
var CardContent = createDynamicComponent("CardContent");
|
|
55
|
+
var CardFooter = createDynamicComponent("CardFooter");
|
|
56
|
+
var Tabs = createDynamicComponent("Tabs");
|
|
57
|
+
var TabsList = createDynamicComponent("TabsList");
|
|
58
|
+
var TabsContent = createDynamicComponent("TabsContent");
|
|
59
|
+
var TabsTrigger = createDynamicComponent("TabsTrigger");
|
|
60
|
+
var Skeleton = createDynamicComponent("Skeleton");
|
|
61
|
+
export {
|
|
62
|
+
Avatar,
|
|
63
|
+
AvatarFallback,
|
|
64
|
+
AvatarImage,
|
|
65
|
+
Button,
|
|
66
|
+
Card,
|
|
67
|
+
CardContent,
|
|
68
|
+
CardFooter,
|
|
69
|
+
CardHeader,
|
|
70
|
+
Collapsible,
|
|
71
|
+
CollapsibleContent,
|
|
72
|
+
CollapsibleTrigger,
|
|
73
|
+
Container,
|
|
74
|
+
DropdownMenu,
|
|
75
|
+
DropdownMenuContent,
|
|
76
|
+
DropdownMenuItem,
|
|
77
|
+
DropdownMenuLabel,
|
|
78
|
+
DropdownMenuSeparator,
|
|
79
|
+
DropdownMenuTrigger,
|
|
80
|
+
Input,
|
|
81
|
+
Label,
|
|
82
|
+
Link,
|
|
83
|
+
Popover,
|
|
84
|
+
PopoverContent,
|
|
85
|
+
PopoverTrigger,
|
|
86
|
+
Separator,
|
|
87
|
+
Skeleton,
|
|
88
|
+
Tabs,
|
|
89
|
+
TabsContent,
|
|
90
|
+
TabsList,
|
|
91
|
+
TabsTrigger,
|
|
92
|
+
Text
|
|
93
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/input.tsx
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { useDesign } from "../providers/design-provider";
|
|
7
|
+
import styled from "styled-components";
|
|
8
|
+
import { BORDER_RADIUS, FONT_FAMILY, FONT_SIZES, PRIMARY_FONT_COLORS, SECONDARY_FONT_COLORS } from "../utils/constants";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
var StyledInput = styled.input`
|
|
11
|
+
font-family: ${FONT_FAMILY};
|
|
12
|
+
font-size: ${FONT_SIZES.md};
|
|
13
|
+
height: 2.5rem;
|
|
14
|
+
border-radius: ${BORDER_RADIUS};
|
|
15
|
+
background-color: transparent;
|
|
16
|
+
border: 1px solid;
|
|
17
|
+
padding: 0rem 1rem;
|
|
18
|
+
&:disabled {
|
|
19
|
+
cursor: auto;
|
|
20
|
+
opacity: 0.5;
|
|
21
|
+
}
|
|
22
|
+
&[type=file]::file-selector-button{
|
|
23
|
+
border: none;
|
|
24
|
+
background-color: transparent;
|
|
25
|
+
height: 2.5rem;
|
|
26
|
+
margin-right: 0.5rem;
|
|
27
|
+
padding: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
border-color: ${(props) => props.$colors.light.neutralColor};
|
|
31
|
+
color: ${PRIMARY_FONT_COLORS.light};
|
|
32
|
+
&::placeholder {
|
|
33
|
+
color: ${SECONDARY_FONT_COLORS.light};
|
|
34
|
+
}
|
|
35
|
+
&:focus-visible {
|
|
36
|
+
outline: none;
|
|
37
|
+
box-shadow: 0 0 0 2px ${(props) => props.$colors.light.primaryColor};
|
|
38
|
+
}
|
|
39
|
+
&[type=file] {
|
|
40
|
+
color: ${SECONDARY_FONT_COLORS.light};
|
|
41
|
+
}
|
|
42
|
+
&[type=file]::file-selector-button{
|
|
43
|
+
color: ${PRIMARY_FONT_COLORS.light};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
html[data-theme='dark'] & {
|
|
47
|
+
border-color: ${(props) => props.$colors.dark.neutralColor};
|
|
48
|
+
color: ${PRIMARY_FONT_COLORS.dark};
|
|
49
|
+
&::placeholder {
|
|
50
|
+
color: ${SECONDARY_FONT_COLORS.dark};
|
|
51
|
+
}
|
|
52
|
+
&:focus-visible {
|
|
53
|
+
outline: none;
|
|
54
|
+
box-shadow: 0 0 0 2px ${(props) => props.$colors.dark.primaryColor};
|
|
55
|
+
}
|
|
56
|
+
&[type=file] {
|
|
57
|
+
color: ${SECONDARY_FONT_COLORS.dark};
|
|
58
|
+
}
|
|
59
|
+
&[type=file]::file-selector-button{
|
|
60
|
+
color: ${PRIMARY_FONT_COLORS.dark};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
`;
|
|
64
|
+
var Input = React.forwardRef(
|
|
65
|
+
(props, ref) => {
|
|
66
|
+
const { colors } = useDesign();
|
|
67
|
+
return /* @__PURE__ */ jsx(
|
|
68
|
+
StyledInput,
|
|
69
|
+
{
|
|
70
|
+
ref,
|
|
71
|
+
$colors: colors,
|
|
72
|
+
...props
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
Input.displayName = "Input";
|
|
78
|
+
export {
|
|
79
|
+
Input
|
|
80
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/label.tsx
|
|
5
|
+
import React from "react";
|
|
6
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
7
|
+
import styled from "styled-components";
|
|
8
|
+
import { FONT_FAMILY, FONT_SIZES, SECONDARY_FONT_COLORS } from "../utils/constants";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
var Primitive = styled(LabelPrimitive.Root)`
|
|
11
|
+
font-size: ${FONT_SIZES.sm};
|
|
12
|
+
line-height: 1;
|
|
13
|
+
font-weight: 500;
|
|
14
|
+
font-family: ${FONT_FAMILY};
|
|
15
|
+
display: block;
|
|
16
|
+
margin-bottom: 0.5rem;
|
|
17
|
+
|
|
18
|
+
color: ${SECONDARY_FONT_COLORS.light};
|
|
19
|
+
|
|
20
|
+
html[data-theme='dark'] & {
|
|
21
|
+
color: ${SECONDARY_FONT_COLORS.dark};
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
var Label = React.forwardRef(
|
|
25
|
+
(props, ref) => {
|
|
26
|
+
return /* @__PURE__ */ jsx(
|
|
27
|
+
Primitive,
|
|
28
|
+
{
|
|
29
|
+
ref,
|
|
30
|
+
...props
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
Label.displayName = LabelPrimitive.Root.displayName;
|
|
36
|
+
export {
|
|
37
|
+
Label
|
|
38
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
// src/components-core/link.tsx
|
|
5
|
+
import NextLink from "next/link";
|
|
6
|
+
import { FONT_FAMILY, FONT_SIZES, LINE_HEIGHTS, LINK_COLORS } from "../utils/constants";
|
|
7
|
+
import React from "react";
|
|
8
|
+
import styled from "styled-components";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
var StyledNextLink = styled(NextLink)`
|
|
11
|
+
font-size: ${(props) => FONT_SIZES[props.$size]};
|
|
12
|
+
line-height: ${(props) => LINE_HEIGHTS[props.$size]};
|
|
13
|
+
font-weight: 500;
|
|
14
|
+
font-family: ${FONT_FAMILY};
|
|
15
|
+
text-decoration: underline;
|
|
16
|
+
margin: 0;
|
|
17
|
+
padding: 0;
|
|
18
|
+
|
|
19
|
+
color: ${LINK_COLORS.light};
|
|
20
|
+
|
|
21
|
+
html[data-theme='dark'] & {
|
|
22
|
+
color: ${LINK_COLORS.dark};
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
var Link = React.forwardRef(({ size = "md", href, ...props }, ref) => {
|
|
26
|
+
return /* @__PURE__ */ jsx(
|
|
27
|
+
StyledNextLink,
|
|
28
|
+
{
|
|
29
|
+
$size: size,
|
|
30
|
+
href,
|
|
31
|
+
style: props.style,
|
|
32
|
+
children: props.children
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
});
|
|
36
|
+
export {
|
|
37
|
+
Link
|
|
38
|
+
};
|