@bitrise/bitkit-v2 0.3.195 → 0.3.197

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.
@@ -0,0 +1,26 @@
1
+ import { BoxProps } from '@chakra-ui/react/box';
2
+ import { ComponentPropsWithoutRef, HTMLAttributeAnchorTarget, MouseEventHandler, ReactNode } from 'react';
3
+ export interface BitkitPageFooterProps extends Omit<BoxProps, 'colorScheme'> {
4
+ children?: ReactNode;
5
+ colorScheme?: 'gray' | 'white';
6
+ severity?: 'none' | 'minor' | 'major' | 'critical' | (string & {});
7
+ size?: 'compact' | 'default';
8
+ statusLabel?: string;
9
+ variant?: 'default' | 'public';
10
+ }
11
+ type LinkItemProps = {
12
+ href: string;
13
+ rel?: string;
14
+ target?: HTMLAttributeAnchorTarget;
15
+ } & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'target' | 'rel'>;
16
+ type ButtonItemProps = {
17
+ href?: never;
18
+ onClick: MouseEventHandler<HTMLButtonElement>;
19
+ } & Omit<ComponentPropsWithoutRef<'button'>, 'onClick'>;
20
+ export type BitkitPageFooterItemProps = (LinkItemProps | ButtonItemProps) & {
21
+ children: ReactNode;
22
+ };
23
+ declare const _default: import('react').ForwardRefExoticComponent<BitkitPageFooterProps & import('react').RefAttributes<HTMLDivElement>> & {
24
+ Item: import('react').ForwardRefExoticComponent<BitkitPageFooterItemProps & import('react').RefAttributes<HTMLButtonElement & HTMLAnchorElement>>;
25
+ };
26
+ export default _default;
@@ -0,0 +1,90 @@
1
+ import IconBitbot from "../../icons/IconBitbot.js";
2
+ import { Box } from "@chakra-ui/react/box";
3
+ import { chakra, useSlotRecipe } from "@chakra-ui/react/styled-system";
4
+ import { forwardRef } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region lib/components/BitkitPageFooter/BitkitPageFooter.tsx
7
+ var SEVERITY_COLOR_MAP = {
8
+ critical: "sys/red/bold",
9
+ major: "sys/orange/bold",
10
+ minor: "sys/yellow/muted",
11
+ none: "sys/green/bold"
12
+ };
13
+ var BitkitPageFooter = forwardRef((props, ref) => {
14
+ const { children, colorScheme, severity = "none", size, statusLabel, variant, ...rest } = props;
15
+ const styles = useSlotRecipe({ key: "pageFooter" })({
16
+ colorScheme,
17
+ size,
18
+ variant
19
+ });
20
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
21
+ const severityColor = SEVERITY_COLOR_MAP[severity] ?? "sys/neutral/bold";
22
+ return /* @__PURE__ */ jsxs(Box, {
23
+ as: "footer",
24
+ ref,
25
+ css: styles.root,
26
+ ...rest,
27
+ children: [
28
+ statusLabel && /* @__PURE__ */ jsxs(chakra.div, {
29
+ css: styles.status,
30
+ children: [/* @__PURE__ */ jsx(chakra.div, {
31
+ css: styles.statusDot,
32
+ background: severityColor
33
+ }), /* @__PURE__ */ jsx(chakra.span, {
34
+ css: styles.statusLabel,
35
+ children: statusLabel
36
+ })]
37
+ }),
38
+ /* @__PURE__ */ jsxs(chakra.div, {
39
+ css: styles.copyright,
40
+ children: [/* @__PURE__ */ jsx(IconBitbot, {
41
+ size: "24",
42
+ color: "icon/secondary"
43
+ }), /* @__PURE__ */ jsxs(chakra.span, {
44
+ css: styles.copyrightText,
45
+ children: [
46
+ "© ",
47
+ year,
48
+ " Bitrise Ltd."
49
+ ]
50
+ })]
51
+ }),
52
+ children && /* @__PURE__ */ jsx(chakra.nav, {
53
+ css: styles.links,
54
+ children
55
+ })
56
+ ]
57
+ });
58
+ });
59
+ BitkitPageFooter.displayName = "BitkitPageFooter";
60
+ var BitkitPageFooterItem = forwardRef((props, ref) => {
61
+ const styles = useSlotRecipe({ key: "pageFooter" })();
62
+ if ("href" in props && props.href) {
63
+ const { children, href, target, rel, ...rest } = props;
64
+ const resolvedRel = target === "_blank" ? [rel, "noopener noreferrer"].filter(Boolean).join(" ") : rel;
65
+ return /* @__PURE__ */ jsx(chakra.a, {
66
+ ref,
67
+ css: styles.link,
68
+ href,
69
+ rel: resolvedRel,
70
+ target,
71
+ ...rest,
72
+ children
73
+ });
74
+ }
75
+ const { children, onClick, ...rest } = props;
76
+ return /* @__PURE__ */ jsx(chakra.button, {
77
+ ref,
78
+ css: styles.link,
79
+ onClick,
80
+ type: "button",
81
+ ...rest,
82
+ children
83
+ });
84
+ });
85
+ BitkitPageFooterItem.displayName = "BitkitPageFooterItem";
86
+ var BitkitPageFooter_default = Object.assign(BitkitPageFooter, { Item: BitkitPageFooterItem });
87
+ //#endregion
88
+ export { BitkitPageFooter_default as default };
89
+
90
+ //# sourceMappingURL=BitkitPageFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitPageFooter.js","names":[],"sources":["../../../lib/components/BitkitPageFooter/BitkitPageFooter.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@chakra-ui/react/box';\nimport { chakra, useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type HTMLAttributeAnchorTarget,\n type MouseEventHandler,\n type ReactNode,\n} from 'react';\n\nimport IconBitbot from '../../icons/IconBitbot';\n\nconst SEVERITY_COLOR_MAP: Record<string, string> = {\n critical: 'sys/red/bold',\n major: 'sys/orange/bold',\n minor: 'sys/yellow/muted',\n none: 'sys/green/bold',\n};\n\n// --- BitkitPageFooter (Root) ---\n\nexport interface BitkitPageFooterProps extends Omit<BoxProps, 'colorScheme'> {\n children?: ReactNode;\n colorScheme?: 'gray' | 'white';\n severity?: 'none' | 'minor' | 'major' | 'critical' | (string & {});\n size?: 'compact' | 'default';\n statusLabel?: string;\n variant?: 'default' | 'public';\n}\n\nconst BitkitPageFooter = forwardRef<HTMLDivElement, BitkitPageFooterProps>((props, ref) => {\n const { children, colorScheme, severity = 'none', size, statusLabel, variant, ...rest } = props;\n\n const recipe = useSlotRecipe({ key: 'pageFooter' });\n const styles = recipe({ colorScheme, size, variant });\n\n const year = new Date().getFullYear();\n\n const severityColor = SEVERITY_COLOR_MAP[severity] ?? 'sys/neutral/bold';\n\n return (\n <Box as=\"footer\" ref={ref} css={styles.root} {...rest}>\n {statusLabel && (\n <chakra.div css={styles.status}>\n <chakra.div css={styles.statusDot} background={severityColor} />\n <chakra.span css={styles.statusLabel}>{statusLabel}</chakra.span>\n </chakra.div>\n )}\n\n <chakra.div css={styles.copyright}>\n <IconBitbot size=\"24\" color=\"icon/secondary\" />\n <chakra.span css={styles.copyrightText}>© {year} Bitrise Ltd.</chakra.span>\n </chakra.div>\n\n {children && <chakra.nav css={styles.links}>{children}</chakra.nav>}\n </Box>\n );\n});\n\nBitkitPageFooter.displayName = 'BitkitPageFooter';\n\n// --- BitkitPageFooterItem ---\n\ntype LinkItemProps = {\n href: string;\n rel?: string;\n target?: HTMLAttributeAnchorTarget;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'target' | 'rel'>;\n\ntype ButtonItemProps = {\n href?: never;\n onClick: MouseEventHandler<HTMLButtonElement>;\n} & Omit<ComponentPropsWithoutRef<'button'>, 'onClick'>;\n\nexport type BitkitPageFooterItemProps = (LinkItemProps | ButtonItemProps) & {\n children: ReactNode;\n};\n\nconst BitkitPageFooterItem = forwardRef<HTMLButtonElement & HTMLAnchorElement, BitkitPageFooterItemProps>(\n (props, ref) => {\n const recipe = useSlotRecipe({ key: 'pageFooter' });\n const styles = recipe();\n\n if ('href' in props && props.href) {\n const { children, href, target, rel, ...rest } = props as LinkItemProps & { children: ReactNode };\n const resolvedRel = target === '_blank' ? [rel, 'noopener noreferrer'].filter(Boolean).join(' ') : rel;\n\n return (\n <chakra.a ref={ref} css={styles.link} href={href} rel={resolvedRel} target={target} {...rest}>\n {children}\n </chakra.a>\n );\n }\n\n const { children, onClick, ...rest } = props as ButtonItemProps & { children: ReactNode };\n\n return (\n <chakra.button ref={ref} css={styles.link} onClick={onClick} type=\"button\" {...rest}>\n {children}\n </chakra.button>\n );\n },\n);\n\nBitkitPageFooterItem.displayName = 'BitkitPageFooterItem';\n\nexport default Object.assign(BitkitPageFooter, { Item: BitkitPageFooterItem });\n"],"mappings":";;;;;;AAYA,IAAM,qBAA6C;CACjD,UAAU;CACV,OAAO;CACP,OAAO;CACP,MAAM;CACP;AAaD,IAAM,mBAAmB,YAAmD,OAAO,QAAQ;CACzF,MAAM,EAAE,UAAU,aAAa,WAAW,QAAQ,MAAM,aAAa,SAAS,GAAG,SAAS;CAG1F,MAAM,SADS,cAAc,EAAE,KAAK,cAAc,CAAC,CAC7B;EAAE;EAAa;EAAM;EAAS,CAAC;CAErD,MAAM,wBAAO,IAAI,MAAM,EAAC,aAAa;CAErC,MAAM,gBAAgB,mBAAmB,aAAa;AAEtD,QACE,qBAAC,KAAD;EAAK,IAAG;EAAc;EAAK,KAAK,OAAO;EAAM,GAAI;YAAjD;GACG,eACC,qBAAC,OAAO,KAAR;IAAY,KAAK,OAAO;cAAxB,CACE,oBAAC,OAAO,KAAR;KAAY,KAAK,OAAO;KAAW,YAAY;KAAiB,CAAA,EAChE,oBAAC,OAAO,MAAR;KAAa,KAAK,OAAO;eAAc;KAA0B,CAAA,CACtD;;GAGf,qBAAC,OAAO,KAAR;IAAY,KAAK,OAAO;cAAxB,CACE,oBAAC,YAAD;KAAY,MAAK;KAAK,OAAM;KAAmB,CAAA,EAC/C,qBAAC,OAAO,MAAR;KAAa,KAAK,OAAO;eAAzB;MAAwC;MAAG;MAAK;MAA2B;OAChE;;GAEZ,YAAY,oBAAC,OAAO,KAAR;IAAY,KAAK,OAAO;IAAQ;IAAsB,CAAA;GAC/D;;EAER;AAEF,iBAAiB,cAAc;AAmB/B,IAAM,uBAAuB,YAC1B,OAAO,QAAQ;CAEd,MAAM,SADS,cAAc,EAAE,KAAK,cAAc,CAAC,EAC5B;AAEvB,KAAI,UAAU,SAAS,MAAM,MAAM;EACjC,MAAM,EAAE,UAAU,MAAM,QAAQ,KAAK,GAAG,SAAS;EACjD,MAAM,cAAc,WAAW,WAAW,CAAC,KAAK,sBAAsB,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,GAAG;AAEnG,SACE,oBAAC,OAAO,GAAR;GAAe;GAAK,KAAK,OAAO;GAAY;GAAM,KAAK;GAAqB;GAAQ,GAAI;GACrF;GACQ,CAAA;;CAIf,MAAM,EAAE,UAAU,SAAS,GAAG,SAAS;AAEvC,QACE,oBAAC,OAAO,QAAR;EAAoB;EAAK,KAAK,OAAO;EAAe;EAAS,MAAK;EAAS,GAAI;EAC5E;EACa,CAAA;EAGrB;AAED,qBAAqB,cAAc;AAEnC,IAAA,2BAAe,OAAO,OAAO,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { TreeViewBranchControlProps, TreeViewItemProps, TreeViewNodeRenderProps, TreeViewRootProps } from '@chakra-ui/react/tree-view';
2
+ import { ReactElement, ReactNode } from 'react';
3
+ import { BitkitIconComponent } from '../../icons';
4
+ export { createTreeCollection } from '@chakra-ui/react/collection';
5
+ export type { TreeViewExpandedChangeDetails as BitkitTreeViewExpandedChangeDetails, TreeViewNodeRenderProps as BitkitTreeViewNodeRenderProps, TreeViewSelectionChangeDetails as BitkitTreeViewSelectionChangeDetails, } from '@chakra-ui/react/tree-view';
6
+ export type BitkitTreeViewVariant = 'files' | 'navigation';
7
+ export interface BitkitTreeViewRootProps extends Omit<TreeViewRootProps, 'children'> {
8
+ children?: ReactNode;
9
+ render: (props: TreeViewNodeRenderProps) => ReactNode;
10
+ variant?: BitkitTreeViewVariant;
11
+ }
12
+ export interface BitkitTreeViewBranchProps extends Omit<TreeViewBranchControlProps, 'children'> {
13
+ actions?: ReactElement[];
14
+ hasWarning?: boolean;
15
+ label: string;
16
+ subtext?: ReactNode;
17
+ suffixIcon?: BitkitIconComponent;
18
+ suffixText?: string;
19
+ }
20
+ export interface BitkitTreeViewLeafProps extends Omit<TreeViewItemProps, 'children'> {
21
+ actions?: ReactElement[];
22
+ badge?: ReactElement;
23
+ hasWarning?: boolean;
24
+ icon?: BitkitIconComponent;
25
+ label: string;
26
+ subtext?: ReactNode;
27
+ suffixIcon?: BitkitIconComponent;
28
+ suffixText?: string;
29
+ }
30
+ declare const BitkitTreeView: import('react').ForwardRefExoticComponent<BitkitTreeViewRootProps & import('react').RefAttributes<HTMLDivElement>> & {
31
+ Branch: import('react').ForwardRefExoticComponent<BitkitTreeViewBranchProps & import('react').RefAttributes<HTMLDivElement>>;
32
+ Leaf: import('react').ForwardRefExoticComponent<BitkitTreeViewLeafProps & import('react').RefAttributes<HTMLDivElement>>;
33
+ };
34
+ export default BitkitTreeView;
@@ -0,0 +1,109 @@
1
+ import IconChevronRight from "../../icons/IconChevronRight.js";
2
+ import IconFolder from "../../icons/IconFolder.js";
3
+ import IconWarningYellow from "../../icons/IconWarningYellow.js";
4
+ import { Box } from "@chakra-ui/react/box";
5
+ import { useSlotRecipe } from "@chakra-ui/react/styled-system";
6
+ import { Text } from "@chakra-ui/react/text";
7
+ import { cloneElement, forwardRef } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { createTreeCollection } from "@chakra-ui/react/collection";
10
+ import { createContext as createContext$1 } from "@chakra-ui/react";
11
+ import { TreeView } from "@chakra-ui/react/tree-view";
12
+ //#region lib/components/BitkitTreeView/BitkitTreeView.tsx
13
+ var [VariantProvider, useVariant] = createContext$1({
14
+ name: "BitkitTreeViewVariantContext",
15
+ defaultValue: { variant: "files" }
16
+ });
17
+ var useCustomSlotStyles = (variant) => {
18
+ return useSlotRecipe({ key: "treeView" })({ variant });
19
+ };
20
+ var Root = forwardRef(({ children, render, variant = "files", ...props }, ref) => {
21
+ const indentGuide = variant === "files" ? /* @__PURE__ */ jsx(TreeView.BranchIndentGuide, {}) : void 0;
22
+ return /* @__PURE__ */ jsx(VariantProvider, {
23
+ value: { variant },
24
+ children: /* @__PURE__ */ jsx(TreeView.Root, {
25
+ ref,
26
+ variant,
27
+ ...props,
28
+ children: /* @__PURE__ */ jsxs(TreeView.Tree, { children: [/* @__PURE__ */ jsx(TreeView.Node, {
29
+ indentGuide,
30
+ render
31
+ }), children] })
32
+ })
33
+ });
34
+ });
35
+ Root.displayName = "BitkitTreeView";
36
+ var Branch = forwardRef((props, ref) => {
37
+ const { actions, hasWarning, label, subtext, suffixIcon: SuffixIcon, suffixText, ...rest } = props;
38
+ const { variant } = useVariant();
39
+ const styles = useCustomSlotStyles(variant);
40
+ const hasSuffix = hasWarning || SuffixIcon || suffixText;
41
+ const hasActions = actions && actions.length > 0;
42
+ const BranchIcon = variant === "navigation" ? IconChevronRight : IconFolder;
43
+ return /* @__PURE__ */ jsxs(TreeView.BranchControl, {
44
+ ref,
45
+ className: hasActions ? "group" : void 0,
46
+ ...rest,
47
+ children: [
48
+ /* @__PURE__ */ jsx(TreeView.BranchIndicator, { children: /* @__PURE__ */ jsx(BranchIcon, { size: "16" }) }),
49
+ /* @__PURE__ */ jsxs(TreeView.BranchText, { children: [label, subtext && /* @__PURE__ */ jsx(Text, {
50
+ css: styles.secondaryText,
51
+ children: subtext
52
+ })] }),
53
+ hasSuffix && /* @__PURE__ */ jsxs(Box, {
54
+ css: styles.suffixGroup,
55
+ children: [
56
+ hasWarning && /* @__PURE__ */ jsx(IconWarningYellow, { size: "16" }),
57
+ SuffixIcon && /* @__PURE__ */ jsx(SuffixIcon, { size: "16" }),
58
+ suffixText && /* @__PURE__ */ jsx("span", { children: suffixText })
59
+ ]
60
+ }),
61
+ hasActions && /* @__PURE__ */ jsx(Box, {
62
+ css: styles.actionGroup,
63
+ children: actions.map((action) => cloneElement(action, { size: "xs" }))
64
+ })
65
+ ]
66
+ });
67
+ });
68
+ Branch.displayName = "BitkitTreeView.Branch";
69
+ var Leaf = forwardRef((props, ref) => {
70
+ const { actions, badge, hasWarning, icon: Icon, label, subtext, suffixIcon: SuffixIcon, suffixText, ...rest } = props;
71
+ const { variant } = useVariant();
72
+ const styles = useCustomSlotStyles(variant);
73
+ const hasSuffix = hasWarning || SuffixIcon || suffixText;
74
+ const hasActions = actions && actions.length > 0;
75
+ return /* @__PURE__ */ jsxs(TreeView.Item, {
76
+ ref,
77
+ className: hasActions ? "group" : void 0,
78
+ ...rest,
79
+ children: [
80
+ Icon && /* @__PURE__ */ jsx(Icon, { size: "16" }),
81
+ badge && cloneElement(badge, { size: "xxs" }),
82
+ /* @__PURE__ */ jsxs(TreeView.ItemText, { children: [label, subtext && /* @__PURE__ */ jsx(Text, {
83
+ css: styles.secondaryText,
84
+ children: subtext
85
+ })] }),
86
+ hasSuffix && /* @__PURE__ */ jsxs(Box, {
87
+ css: styles.suffixGroup,
88
+ children: [
89
+ hasWarning && /* @__PURE__ */ jsx(IconWarningYellow, { size: "16" }),
90
+ SuffixIcon && /* @__PURE__ */ jsx(SuffixIcon, { size: "16" }),
91
+ suffixText && /* @__PURE__ */ jsx("span", { children: suffixText })
92
+ ]
93
+ }),
94
+ hasActions && /* @__PURE__ */ jsx(Box, {
95
+ css: styles.actionGroup,
96
+ children: actions.map((action) => cloneElement(action, { size: "xs" }))
97
+ })
98
+ ]
99
+ });
100
+ });
101
+ Leaf.displayName = "BitkitTreeView.Leaf";
102
+ var BitkitTreeView = Object.assign(Root, {
103
+ Branch,
104
+ Leaf
105
+ });
106
+ //#endregion
107
+ export { createTreeCollection, BitkitTreeView as default };
108
+
109
+ //# sourceMappingURL=BitkitTreeView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitkitTreeView.js","names":[],"sources":["../../../lib/components/BitkitTreeView/BitkitTreeView.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { createContext } from '@chakra-ui/react';\nimport { Box } from '@chakra-ui/react/box';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\nimport { Text } from '@chakra-ui/react/text';\nimport {\n TreeView,\n type TreeViewBranchControlProps,\n type TreeViewItemProps,\n type TreeViewNodeRenderProps,\n type TreeViewRootProps,\n} from '@chakra-ui/react/tree-view';\nimport { cloneElement, forwardRef, type ReactElement, type ReactNode } from 'react';\n\nimport { type BitkitIconComponent, IconChevronRight, IconFolder, IconWarningYellow } from '../../icons';\n\n// Re-export for consumer convenience\nexport { createTreeCollection } from '@chakra-ui/react/collection';\n\n// Re-export useful types\nexport type {\n TreeViewExpandedChangeDetails as BitkitTreeViewExpandedChangeDetails,\n TreeViewNodeRenderProps as BitkitTreeViewNodeRenderProps,\n TreeViewSelectionChangeDetails as BitkitTreeViewSelectionChangeDetails,\n} from '@chakra-ui/react/tree-view';\n\n// --- Variant context ---\n\nexport type BitkitTreeViewVariant = 'files' | 'navigation';\n\nconst [VariantProvider, useVariant] = createContext<{ variant: BitkitTreeViewVariant }>({\n name: 'BitkitTreeViewVariantContext',\n defaultValue: { variant: 'files' },\n});\n\nconst useCustomSlotStyles = (variant: BitkitTreeViewVariant) => {\n const recipe = useSlotRecipe({ key: 'treeView' });\n return recipe({ variant });\n};\n\n// --- Root ---\n\nexport interface BitkitTreeViewRootProps extends Omit<TreeViewRootProps, 'children'> {\n children?: ReactNode;\n render: (props: TreeViewNodeRenderProps) => ReactNode;\n variant?: BitkitTreeViewVariant;\n}\n\nconst Root = forwardRef<HTMLDivElement, BitkitTreeViewRootProps>(\n ({ children, render, variant = 'files', ...props }, ref) => {\n const indentGuide = variant === 'files' ? <TreeView.BranchIndentGuide /> : undefined;\n\n return (\n <VariantProvider value={{ variant }}>\n <TreeView.Root ref={ref} variant={variant} {...props}>\n <TreeView.Tree>\n <TreeView.Node indentGuide={indentGuide} render={render as never} />\n {children}\n </TreeView.Tree>\n </TreeView.Root>\n </VariantProvider>\n );\n },\n);\nRoot.displayName = 'BitkitTreeView';\n\n// --- Branch ---\n\nexport interface BitkitTreeViewBranchProps extends Omit<TreeViewBranchControlProps, 'children'> {\n actions?: ReactElement[];\n hasWarning?: boolean;\n label: string;\n subtext?: ReactNode;\n suffixIcon?: BitkitIconComponent;\n suffixText?: string;\n}\n\nconst Branch = forwardRef<HTMLDivElement, BitkitTreeViewBranchProps>((props, ref) => {\n const { actions, hasWarning, label, subtext, suffixIcon: SuffixIcon, suffixText, ...rest } = props;\n const { variant } = useVariant();\n const styles = useCustomSlotStyles(variant);\n const hasSuffix = hasWarning || SuffixIcon || suffixText;\n const hasActions = actions && actions.length > 0;\n\n const BranchIcon = variant === 'navigation' ? IconChevronRight : IconFolder;\n\n return (\n <TreeView.BranchControl ref={ref} className={hasActions ? 'group' : undefined} {...rest}>\n <TreeView.BranchIndicator>\n <BranchIcon size=\"16\" />\n </TreeView.BranchIndicator>\n <TreeView.BranchText>\n {label}\n {subtext && <Text css={styles.secondaryText}>{subtext}</Text>}\n </TreeView.BranchText>\n {hasSuffix && (\n <Box css={styles.suffixGroup}>\n {hasWarning && <IconWarningYellow size=\"16\" />}\n {SuffixIcon && <SuffixIcon size=\"16\" />}\n {suffixText && <span>{suffixText}</span>}\n </Box>\n )}\n {hasActions && (\n <Box css={styles.actionGroup}>{actions.map((action) => cloneElement(action, { size: 'xs' }))}</Box>\n )}\n </TreeView.BranchControl>\n );\n});\nBranch.displayName = 'BitkitTreeView.Branch';\n\n// --- Leaf ---\n\nexport interface BitkitTreeViewLeafProps extends Omit<TreeViewItemProps, 'children'> {\n actions?: ReactElement[];\n badge?: ReactElement;\n hasWarning?: boolean;\n icon?: BitkitIconComponent;\n label: string;\n subtext?: ReactNode;\n suffixIcon?: BitkitIconComponent;\n suffixText?: string;\n}\n\nconst Leaf = forwardRef<HTMLDivElement, BitkitTreeViewLeafProps>((props, ref) => {\n const { actions, badge, hasWarning, icon: Icon, label, subtext, suffixIcon: SuffixIcon, suffixText, ...rest } = props;\n const { variant } = useVariant();\n const styles = useCustomSlotStyles(variant);\n const hasSuffix = hasWarning || SuffixIcon || suffixText;\n const hasActions = actions && actions.length > 0;\n\n return (\n <TreeView.Item ref={ref} className={hasActions ? 'group' : undefined} {...rest}>\n {Icon && <Icon size=\"16\" />}\n {badge && cloneElement(badge, { size: 'xxs' })}\n <TreeView.ItemText>\n {label}\n {subtext && <Text css={styles.secondaryText}>{subtext}</Text>}\n </TreeView.ItemText>\n {hasSuffix && (\n <Box css={styles.suffixGroup}>\n {hasWarning && <IconWarningYellow size=\"16\" />}\n {SuffixIcon && <SuffixIcon size=\"16\" />}\n {suffixText && <span>{suffixText}</span>}\n </Box>\n )}\n {hasActions && (\n <Box css={styles.actionGroup}>{actions.map((action) => cloneElement(action, { size: 'xs' }))}</Box>\n )}\n </TreeView.Item>\n );\n});\nLeaf.displayName = 'BitkitTreeView.Leaf';\n\n// --- Main export ---\n\nconst BitkitTreeView = Object.assign(Root, {\n Branch,\n Leaf,\n});\n\nexport default BitkitTreeView;\n"],"mappings":"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"}
@@ -42,6 +42,7 @@ export { default as BitkitNumberInput, type BitkitNumberInputProps } from './Bit
42
42
  export { default as BitkitOrderedList, type BitkitOrderedListItemProps, type BitkitOrderedListProps, } from './BitkitOrderedList/BitkitOrderedList';
43
43
  export { default as BitkitOverflowContent, type BitkitOverflowContentProps, } from './BitkitOverflowContent/BitkitOverflowContent';
44
44
  export { default as BitkitOverflowTooltip, type BitkitOverflowTooltipProps, } from './BitkitOverflowTooltip/BitkitOverflowTooltip';
45
+ export { default as BitkitPageFooter, type BitkitPageFooterItemProps, type BitkitPageFooterProps, } from './BitkitPageFooter/BitkitPageFooter';
45
46
  export { default as BitkitPagination, type BitkitPaginationLabels, type BitkitPaginationProps, } from './BitkitPagination/BitkitPagination';
46
47
  export { default as BitkitPaginationLoadMore, type BitkitPaginationLoadMoreProps, } from './BitkitPaginationLoadMore/BitkitPaginationLoadMore';
47
48
  export { default as BitkitRadio, type BitkitRadioProps } from './BitkitRadio/BitkitRadio';
@@ -66,4 +67,5 @@ export { type BitkitToastProps, default as createBitkitToast } from './BitkitToa
66
67
  export { default as BitkitToggle, type BitkitToggleProps } from './BitkitToggle';
67
68
  export { default as BitkitToggleButton, type BitkitToggleButtonProps } from './BitkitToggleButton/BitkitToggleButton';
68
69
  export { default as BitkitTooltip, type BitkitTooltipProps } from './BitkitTooltip/BitkitTooltip';
70
+ export { default as BitkitTreeView, type BitkitTreeViewBranchProps, type BitkitTreeViewExpandedChangeDetails, type BitkitTreeViewLeafProps, type BitkitTreeViewNodeRenderProps, type BitkitTreeViewRootProps, type BitkitTreeViewSelectionChangeDetails, createTreeCollection, } from './BitkitTreeView/BitkitTreeView';
69
71
  export { default as BitkitUnorderedList, type BitkitUnorderedListItemProps, type BitkitUnorderedListProps, } from './BitkitUnorderedList/BitkitUnorderedList';
package/dist/main.js CHANGED
@@ -326,6 +326,7 @@ import BitkitNoteCard from "./components/BitkitNoteCard/BitkitNoteCard.js";
326
326
  import BitkitNumberInput from "./components/BitkitNumberInput/BitkitNumberInput.js";
327
327
  import BitkitOverflowContent from "./components/BitkitOverflowContent/BitkitOverflowContent.js";
328
328
  import BitkitOverflowTooltip from "./components/BitkitOverflowTooltip/BitkitOverflowTooltip.js";
329
+ import BitkitPageFooter_default from "./components/BitkitPageFooter/BitkitPageFooter.js";
329
330
  import BitkitPagination from "./components/BitkitPagination/BitkitPagination.js";
330
331
  import BitkitPaginationLoadMore from "./components/BitkitPaginationLoadMore/BitkitPaginationLoadMore.js";
331
332
  import BitkitRadio from "./components/BitkitRadio/BitkitRadio.js";
@@ -348,6 +349,7 @@ import BitkitTextInput from "./components/BitkitTextInput/BitkitTextInput.js";
348
349
  import createBitkitToast from "./components/BitkitToast/BitkitToast.js";
349
350
  import BitkitToggle from "./components/BitkitToggle/BitkitToggle.js";
350
351
  import BitkitToggleButton from "./components/BitkitToggleButton/BitkitToggleButton.js";
352
+ import BitkitTreeView, { createTreeCollection } from "./components/BitkitTreeView/BitkitTreeView.js";
351
353
  import bitkitTheme from "./theme/index.js";
352
354
  import Provider from "./providers/BitkitProvider.js";
353
- export { BitkitAccordion, BitkitActionBar, BitkitAlert, BitkitAvatar, BitkitBadge, BitkitButton, BitkitCalendar, BitkitCard, BitkitCheckbox, BitkitCheckboxGroup, BitkitCloseButton, BitkitCodeSnippet, BitkitCollapsible, BitkitColorButton, BitkitCombobox, BitkitControlButton, BitkitDefinitionTooltip, BitkitDialog, BitkitDialogBody, BitkitDialogButtons, BitkitDialogContent, BitkitDialogRoot, BitkitDraggableCard, BitkitEmptyState, BitkitExpandableCard, BitkitExplainerList_default as BitkitExplainerList, BitkitField, BitkitFileInput, BitkitGroupHeading, BitkitIconButton, BitkitInlineLoading, BitkitLabel, BitkitLabelTooltip, BitkitLabeledData, BitkitLink, BitkitLinkButton, BitkitMarkdown, BitkitMarkdownCard, BitkitNativeSelect, BitkitNoteCard, BitkitNumberInput, BitkitOrderedList_default as BitkitOrderedList, BitkitOverflowContent, BitkitOverflowTooltip, BitkitPagination, BitkitPaginationLoadMore, Provider as BitkitProvider, BitkitRadio, BitkitRadioGroup, BitkitRibbon, BitkitSearchInput, BitkitSectionHeading, BitkitSegmentedControl_default as BitkitSegmentedControl, BitkitSelect, BitkitSelectMenu, BitkitSelectableTag_default as BitkitSelectableTag, BitkitSidebar_default as BitkitSidebar, BitkitSplitButton_default as BitkitSplitButton, BitkitStat, BitkitSteps_default as BitkitSteps, BitkitStepsCard_default as BitkitStepsCard, BitkitTabs, BitkitTag, BitkitTagsInput, BitkitTextInput, BitkitToggle, BitkitToggleButton, BitkitTooltip, BitkitUnorderedList_default as BitkitUnorderedList, IconAbortCircle, IconAbortCircleFilled, IconAddons, IconAgent, IconAnchor, IconAndroid, IconApp, IconAppSettings, IconAppStore, IconAppStoreColor, IconApple, IconArchive, IconArchiveDelete, IconArchiveRestore, IconArrowBackAndDown, IconArrowBackAndUp, IconArrowDown, IconArrowForwardAndDown, IconArrowForwardAndUp, IconArrowLeft, IconArrowNortheast, IconArrowNorthwest, IconArrowRight, IconArrowUp, IconArrowsHorizontal, IconArrowsVertical, IconAutomation, IconAws, IconAwsColor, IconBadge3RdParty, IconBadgeBitrise, IconBadgeUpgrade, IconBadgeVersionOk, IconBazel, IconBell, IconBitbot, IconBitbotError, IconBitbucket, IconBitbucketColor, IconBitbucketNeutral, IconBitbucketWhite, IconBlockCircle, IconBook, IconBoxArrowDown, IconBoxDot, IconBoxLinesOverflow, IconBoxLinesWrap, IconBranch, IconBrowserstackColor, IconBug, IconBuild, IconBuildCache, IconBuildCacheFilled, IconBuildEnvSetup, IconCalendar, IconChangePlan, IconChat, IconCheck, IconCheckCircle, IconCheckCircleFilled, IconChevronDown, IconChevronLeft, IconChevronRight, IconChevronUp, IconCi, IconCiFilled, IconCircle, IconCircleDashed, IconCircleHalfFilled, IconClaude, IconClaudeColor, IconClock, IconCode, IconCodePush, IconCodeSigning, IconCoffee, IconCommit, IconConfigure, IconConnectedAccounts, IconContainer, IconCopy, IconCordova, IconCpu, IconCreditcard, IconCredits, IconCross, IconCrossCircle, IconCrossCircleFilled, IconCrown, IconCycle, IconDashboard, IconDashboardFilled, IconDeployment, IconDetails, IconDoc, IconDollar, IconDot, IconDotnet, IconDotnetColor, IconDotnetText, IconDotnetTextColor, IconDoubleCircle, IconDownload, IconDragHandle, IconEc2Ami, IconEnterprise, IconErrorCircle, IconErrorCircleFilled, IconExpand, IconExtraBuildCapacity, IconEye, IconEyeSlash, IconFastlane, IconFileDoc, IconFilePdf, IconFilePlist, IconFileZip, IconFilter, IconFlag, IconFlutter, IconFolder, IconFullscreen, IconFullscreenExit, IconGauge, IconGit, IconGithub, IconGitlab, IconGitlabColor, IconGitlabWhite, IconGlobe, IconGo, IconGoogleColor, IconGooglePlay, IconGooglePlayColor, IconGradle, IconGroup, IconHashtag, IconHeadset, IconHeart, IconHistory, IconHourglass, IconImage, IconInfoCircle, IconInfoCircleFilled, IconInsights, IconInsightsFilled, IconInstall, IconInteraction, IconInvoice, IconIonic, IconJapanese, IconJava, IconJavaColor, IconJavaDuke, IconJavaDukeColor, IconKey, IconKotlin, IconKotlinColor, IconKotlinWhite, IconLaptop, IconLaunchdarkly, IconLegacyApp, IconLightbulb, IconLink, IconLinux, IconLock, IconLockOpen, IconLogin, IconLogout, IconMacos, IconMagicWand, IconMagnifier, IconMail, IconMedal, IconMemory, IconMenuGrid, IconMenuHamburger, IconMessage, IconMessageAlert, IconMessageQuestion, IconMicrophone, IconMinus, IconMinusCircle, IconMinusCircleFilled, IconMobile, IconMobileLandscape, IconMonitorChart, IconMoreHorizontal, IconMoreVertical, IconNews, IconNextjs, IconNodejs, IconOpenInNew, IconOther, IconOutsideContributor, IconOverview, IconPause, IconPencil, IconPeople, IconPercent, IconPerson, IconPersonWithDesk, IconPlay, IconPlus, IconPlusCircle, IconPlusCircleFilled, IconPower, IconProject, IconProjectSettings, IconPull, IconPush, IconPuzzle, IconPython, IconPythonColor, IconQuestionCircle, IconQuestionCircleFilled, IconReact, IconRefresh, IconRegex, IconRelease, IconReleaseFilled, IconRemoteAccess, IconReplace, IconResponsiveness, IconReviewerApproved, IconReviewerAssigned, IconReviewerRejected, IconRuby, IconRubyColor, IconSave, IconSecurityShield, IconSettings, IconSettingsFilled, IconShuffle, IconSiren, IconSkip, IconSkipCircle, IconSkipCircleFilled, IconSlack, IconSlackColor, IconSparkle, IconSparkleFilled, IconSpinnerOnDisabled, IconSpinnerPurple, IconSpinnerPurpleDouble, IconSpinnerWhite, IconStability, IconStack, IconStar, IconStep, IconStop, IconStopwatch, IconTag, IconTasks, IconTeams, IconTeamsColor, IconTemplateCode, IconTerminal, IconTestQuarantine, IconThemeDarkToggle, IconThumbDown, IconThumbUp, IconTools, IconTrash, IconTrigger, IconUbuntu, IconUbuntuColor, IconUnity3D, IconUpload, IconValidateShield, IconVideo, IconWarning, IconWarningYellow, IconWebUi, IconWebhooks, IconWorkflow, IconWorkflowFlow, IconXTwitter, IconXamarin, IconXcode, bitkitIcon, bitkitTheme as bitriseTheme, createBitkitToast };
355
+ export { BitkitAccordion, BitkitActionBar, BitkitAlert, BitkitAvatar, BitkitBadge, BitkitButton, BitkitCalendar, BitkitCard, BitkitCheckbox, BitkitCheckboxGroup, BitkitCloseButton, BitkitCodeSnippet, BitkitCollapsible, BitkitColorButton, BitkitCombobox, BitkitControlButton, BitkitDefinitionTooltip, BitkitDialog, BitkitDialogBody, BitkitDialogButtons, BitkitDialogContent, BitkitDialogRoot, BitkitDraggableCard, BitkitEmptyState, BitkitExpandableCard, BitkitExplainerList_default as BitkitExplainerList, BitkitField, BitkitFileInput, BitkitGroupHeading, BitkitIconButton, BitkitInlineLoading, BitkitLabel, BitkitLabelTooltip, BitkitLabeledData, BitkitLink, BitkitLinkButton, BitkitMarkdown, BitkitMarkdownCard, BitkitNativeSelect, BitkitNoteCard, BitkitNumberInput, BitkitOrderedList_default as BitkitOrderedList, BitkitOverflowContent, BitkitOverflowTooltip, BitkitPageFooter_default as BitkitPageFooter, BitkitPagination, BitkitPaginationLoadMore, Provider as BitkitProvider, BitkitRadio, BitkitRadioGroup, BitkitRibbon, BitkitSearchInput, BitkitSectionHeading, BitkitSegmentedControl_default as BitkitSegmentedControl, BitkitSelect, BitkitSelectMenu, BitkitSelectableTag_default as BitkitSelectableTag, BitkitSidebar_default as BitkitSidebar, BitkitSplitButton_default as BitkitSplitButton, BitkitStat, BitkitSteps_default as BitkitSteps, BitkitStepsCard_default as BitkitStepsCard, BitkitTabs, BitkitTag, BitkitTagsInput, BitkitTextInput, BitkitToggle, BitkitToggleButton, BitkitTooltip, BitkitTreeView, BitkitUnorderedList_default as BitkitUnorderedList, IconAbortCircle, IconAbortCircleFilled, IconAddons, IconAgent, IconAnchor, IconAndroid, IconApp, IconAppSettings, IconAppStore, IconAppStoreColor, IconApple, IconArchive, IconArchiveDelete, IconArchiveRestore, IconArrowBackAndDown, IconArrowBackAndUp, IconArrowDown, IconArrowForwardAndDown, IconArrowForwardAndUp, IconArrowLeft, IconArrowNortheast, IconArrowNorthwest, IconArrowRight, IconArrowUp, IconArrowsHorizontal, IconArrowsVertical, IconAutomation, IconAws, IconAwsColor, IconBadge3RdParty, IconBadgeBitrise, IconBadgeUpgrade, IconBadgeVersionOk, IconBazel, IconBell, IconBitbot, IconBitbotError, IconBitbucket, IconBitbucketColor, IconBitbucketNeutral, IconBitbucketWhite, IconBlockCircle, IconBook, IconBoxArrowDown, IconBoxDot, IconBoxLinesOverflow, IconBoxLinesWrap, IconBranch, IconBrowserstackColor, IconBug, IconBuild, IconBuildCache, IconBuildCacheFilled, IconBuildEnvSetup, IconCalendar, IconChangePlan, IconChat, IconCheck, IconCheckCircle, IconCheckCircleFilled, IconChevronDown, IconChevronLeft, IconChevronRight, IconChevronUp, IconCi, IconCiFilled, IconCircle, IconCircleDashed, IconCircleHalfFilled, IconClaude, IconClaudeColor, IconClock, IconCode, IconCodePush, IconCodeSigning, IconCoffee, IconCommit, IconConfigure, IconConnectedAccounts, IconContainer, IconCopy, IconCordova, IconCpu, IconCreditcard, IconCredits, IconCross, IconCrossCircle, IconCrossCircleFilled, IconCrown, IconCycle, IconDashboard, IconDashboardFilled, IconDeployment, IconDetails, IconDoc, IconDollar, IconDot, IconDotnet, IconDotnetColor, IconDotnetText, IconDotnetTextColor, IconDoubleCircle, IconDownload, IconDragHandle, IconEc2Ami, IconEnterprise, IconErrorCircle, IconErrorCircleFilled, IconExpand, IconExtraBuildCapacity, IconEye, IconEyeSlash, IconFastlane, IconFileDoc, IconFilePdf, IconFilePlist, IconFileZip, IconFilter, IconFlag, IconFlutter, IconFolder, IconFullscreen, IconFullscreenExit, IconGauge, IconGit, IconGithub, IconGitlab, IconGitlabColor, IconGitlabWhite, IconGlobe, IconGo, IconGoogleColor, IconGooglePlay, IconGooglePlayColor, IconGradle, IconGroup, IconHashtag, IconHeadset, IconHeart, IconHistory, IconHourglass, IconImage, IconInfoCircle, IconInfoCircleFilled, IconInsights, IconInsightsFilled, IconInstall, IconInteraction, IconInvoice, IconIonic, IconJapanese, IconJava, IconJavaColor, IconJavaDuke, IconJavaDukeColor, IconKey, IconKotlin, IconKotlinColor, IconKotlinWhite, IconLaptop, IconLaunchdarkly, IconLegacyApp, IconLightbulb, IconLink, IconLinux, IconLock, IconLockOpen, IconLogin, IconLogout, IconMacos, IconMagicWand, IconMagnifier, IconMail, IconMedal, IconMemory, IconMenuGrid, IconMenuHamburger, IconMessage, IconMessageAlert, IconMessageQuestion, IconMicrophone, IconMinus, IconMinusCircle, IconMinusCircleFilled, IconMobile, IconMobileLandscape, IconMonitorChart, IconMoreHorizontal, IconMoreVertical, IconNews, IconNextjs, IconNodejs, IconOpenInNew, IconOther, IconOutsideContributor, IconOverview, IconPause, IconPencil, IconPeople, IconPercent, IconPerson, IconPersonWithDesk, IconPlay, IconPlus, IconPlusCircle, IconPlusCircleFilled, IconPower, IconProject, IconProjectSettings, IconPull, IconPush, IconPuzzle, IconPython, IconPythonColor, IconQuestionCircle, IconQuestionCircleFilled, IconReact, IconRefresh, IconRegex, IconRelease, IconReleaseFilled, IconRemoteAccess, IconReplace, IconResponsiveness, IconReviewerApproved, IconReviewerAssigned, IconReviewerRejected, IconRuby, IconRubyColor, IconSave, IconSecurityShield, IconSettings, IconSettingsFilled, IconShuffle, IconSiren, IconSkip, IconSkipCircle, IconSkipCircleFilled, IconSlack, IconSlackColor, IconSparkle, IconSparkleFilled, IconSpinnerOnDisabled, IconSpinnerPurple, IconSpinnerPurpleDouble, IconSpinnerWhite, IconStability, IconStack, IconStar, IconStep, IconStop, IconStopwatch, IconTag, IconTasks, IconTeams, IconTeamsColor, IconTemplateCode, IconTerminal, IconTestQuarantine, IconThemeDarkToggle, IconThumbDown, IconThumbUp, IconTools, IconTrash, IconTrigger, IconUbuntu, IconUbuntuColor, IconUnity3D, IconUpload, IconValidateShield, IconVideo, IconWarning, IconWarningYellow, IconWebUi, IconWebhooks, IconWorkflow, IconWorkflowFlow, IconXTwitter, IconXamarin, IconXcode, bitkitIcon, bitkitTheme as bitriseTheme, createBitkitToast, createTreeCollection };
@@ -0,0 +1,96 @@
1
+ declare const pageFooterSlotRecipe: import('@chakra-ui/react').SlotRecipeDefinition<"link" | "status" | "root" | "statusLabel" | "statusDot" | "copyright" | "copyrightText" | "links", {
2
+ colorScheme: {
3
+ gray: {
4
+ root: {
5
+ background: "background/secondary";
6
+ };
7
+ status: {
8
+ background: "background/tertiary";
9
+ };
10
+ };
11
+ white: {
12
+ root: {
13
+ background: "background/primary";
14
+ };
15
+ status: {
16
+ background: "background/secondary";
17
+ };
18
+ };
19
+ };
20
+ size: {
21
+ compact: {
22
+ root: {
23
+ height: {
24
+ tablet: "32";
25
+ };
26
+ };
27
+ };
28
+ default: {
29
+ root: {
30
+ height: {
31
+ tablet: "64";
32
+ };
33
+ };
34
+ };
35
+ };
36
+ variant: {
37
+ default: {
38
+ root: {
39
+ paddingInlineEnd: {
40
+ base: "16";
41
+ tablet: string;
42
+ };
43
+ position: {
44
+ tablet: "relative";
45
+ };
46
+ };
47
+ copyright: {
48
+ insetInlineStart: {
49
+ tablet: "50%";
50
+ };
51
+ position: {
52
+ tablet: "absolute";
53
+ };
54
+ top: {
55
+ tablet: "50%";
56
+ };
57
+ transform: {
58
+ tablet: "translate(-50%, -50%)";
59
+ };
60
+ };
61
+ links: {
62
+ borderBlockEnd: {
63
+ base: "1px solid {colors.border.minimal}";
64
+ tablet: "none";
65
+ };
66
+ borderBlockStart: {
67
+ base: "1px solid {colors.border.minimal}";
68
+ tablet: "none";
69
+ };
70
+ paddingBlock: {
71
+ base: "16";
72
+ tablet: "0";
73
+ };
74
+ };
75
+ };
76
+ public: {
77
+ root: {
78
+ paddingInlineEnd: {
79
+ base: "16";
80
+ tablet: "40";
81
+ };
82
+ };
83
+ links: {
84
+ borderBlockEnd: {
85
+ base: "1px solid {colors.border.minimal}";
86
+ tablet: "none";
87
+ };
88
+ paddingBlockEnd: {
89
+ base: "16";
90
+ tablet: "0";
91
+ };
92
+ };
93
+ };
94
+ };
95
+ }>;
96
+ export default pageFooterSlotRecipe;
@@ -0,0 +1,191 @@
1
+ import { rem } from "../themeUtils.js";
2
+ import { defineSlotRecipe } from "@chakra-ui/react/styled-system";
3
+ //#region lib/theme/slot-recipes/PageFooter.recipe.ts
4
+ var pageFooterSlotRecipe = defineSlotRecipe({
5
+ className: "page-footer",
6
+ slots: [
7
+ "root",
8
+ "status",
9
+ "statusDot",
10
+ "statusLabel",
11
+ "copyright",
12
+ "copyrightText",
13
+ "links",
14
+ "link"
15
+ ],
16
+ base: {
17
+ root: {
18
+ alignItems: "center",
19
+ display: "flex",
20
+ flexDirection: {
21
+ base: "column",
22
+ tablet: "row"
23
+ },
24
+ gap: {
25
+ base: "16",
26
+ tablet: "0"
27
+ },
28
+ justifyContent: "space-between",
29
+ padding: {
30
+ base: "16",
31
+ tablet: "0"
32
+ },
33
+ paddingInlineStart: {
34
+ base: "16",
35
+ tablet: "20"
36
+ },
37
+ width: "100%"
38
+ },
39
+ status: {
40
+ alignItems: "center",
41
+ borderRadius: "4",
42
+ display: "flex",
43
+ flexShrink: 0,
44
+ gap: "4",
45
+ paddingBlock: "4",
46
+ paddingInlineEnd: "8",
47
+ paddingInlineStart: "4"
48
+ },
49
+ statusDot: {
50
+ borderRadius: "full",
51
+ flexShrink: 0,
52
+ height: "8",
53
+ width: "8",
54
+ marginInline: "4"
55
+ },
56
+ statusLabel: {
57
+ color: "text/secondary",
58
+ textStyle: "comp/badge/sm",
59
+ whiteSpace: "nowrap"
60
+ },
61
+ copyright: {
62
+ alignItems: "center",
63
+ display: "flex",
64
+ gap: "8",
65
+ order: {
66
+ base: 3,
67
+ tablet: 0
68
+ }
69
+ },
70
+ copyrightText: {
71
+ color: "text/secondary",
72
+ textStyle: "body/md/regular",
73
+ whiteSpace: "nowrap"
74
+ },
75
+ links: {
76
+ alignItems: "center",
77
+ display: "flex",
78
+ flexShrink: 0,
79
+ flexWrap: {
80
+ base: "wrap",
81
+ tablet: "nowrap"
82
+ },
83
+ gap: {
84
+ base: "40",
85
+ tablet: "24"
86
+ },
87
+ justifyContent: {
88
+ base: "center",
89
+ tablet: "flex-start"
90
+ },
91
+ order: {
92
+ base: 2,
93
+ tablet: 0
94
+ },
95
+ rowGap: {
96
+ base: "12",
97
+ tablet: "8"
98
+ },
99
+ width: {
100
+ base: "100%",
101
+ tablet: "auto"
102
+ }
103
+ },
104
+ link: {
105
+ background: "transparent",
106
+ border: "none",
107
+ color: "text/secondary",
108
+ cursor: "pointer",
109
+ padding: 0,
110
+ textDecoration: "none",
111
+ textStyle: {
112
+ base: "body/lg/regular",
113
+ tablet: "body/md/regular"
114
+ },
115
+ whiteSpace: "nowrap",
116
+ _hover: { textDecoration: "underline" }
117
+ }
118
+ },
119
+ variants: {
120
+ colorScheme: {
121
+ gray: {
122
+ root: { background: "background/secondary" },
123
+ status: { background: "background/tertiary" }
124
+ },
125
+ white: {
126
+ root: { background: "background/primary" },
127
+ status: { background: "background/secondary" }
128
+ }
129
+ },
130
+ size: {
131
+ compact: { root: { height: { tablet: "32" } } },
132
+ default: { root: { height: { tablet: "64" } } }
133
+ },
134
+ variant: {
135
+ default: {
136
+ root: {
137
+ paddingInlineEnd: {
138
+ base: "16",
139
+ tablet: rem(80)
140
+ },
141
+ position: { tablet: "relative" }
142
+ },
143
+ copyright: {
144
+ insetInlineStart: { tablet: "50%" },
145
+ position: { tablet: "absolute" },
146
+ top: { tablet: "50%" },
147
+ transform: { tablet: "translate(-50%, -50%)" }
148
+ },
149
+ links: {
150
+ borderBlockEnd: {
151
+ base: "1px solid {colors.border.minimal}",
152
+ tablet: "none"
153
+ },
154
+ borderBlockStart: {
155
+ base: "1px solid {colors.border.minimal}",
156
+ tablet: "none"
157
+ },
158
+ paddingBlock: {
159
+ base: "16",
160
+ tablet: "0"
161
+ }
162
+ }
163
+ },
164
+ public: {
165
+ root: { paddingInlineEnd: {
166
+ base: "16",
167
+ tablet: "40"
168
+ } },
169
+ links: {
170
+ borderBlockEnd: {
171
+ base: "1px solid {colors.border.minimal}",
172
+ tablet: "none"
173
+ },
174
+ paddingBlockEnd: {
175
+ base: "16",
176
+ tablet: "0"
177
+ }
178
+ }
179
+ }
180
+ }
181
+ },
182
+ defaultVariants: {
183
+ colorScheme: "gray",
184
+ size: "default",
185
+ variant: "default"
186
+ }
187
+ });
188
+ //#endregion
189
+ export { pageFooterSlotRecipe as default };
190
+
191
+ //# sourceMappingURL=PageFooter.recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageFooter.recipe.js","names":[],"sources":["../../../lib/theme/slot-recipes/PageFooter.recipe.ts"],"sourcesContent":["import { defineSlotRecipe } from '@chakra-ui/react/styled-system';\n\nimport { rem } from '../themeUtils';\n\nconst pageFooterSlotRecipe = defineSlotRecipe({\n className: 'page-footer',\n slots: ['root', 'status', 'statusDot', 'statusLabel', 'copyright', 'copyrightText', 'links', 'link'] as const,\n base: {\n root: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: { base: 'column', tablet: 'row' },\n gap: { base: '16', tablet: '0' },\n justifyContent: 'space-between',\n padding: { base: '16', tablet: '0' },\n paddingInlineStart: { base: '16', tablet: '20' },\n width: '100%',\n },\n status: {\n alignItems: 'center',\n borderRadius: '4',\n display: 'flex',\n flexShrink: 0,\n gap: '4',\n paddingBlock: '4',\n paddingInlineEnd: '8',\n paddingInlineStart: '4',\n },\n statusDot: {\n borderRadius: 'full',\n flexShrink: 0,\n height: '8',\n width: '8',\n marginInline: '4',\n },\n statusLabel: {\n color: 'text/secondary',\n textStyle: 'comp/badge/sm',\n whiteSpace: 'nowrap',\n },\n copyright: {\n alignItems: 'center',\n display: 'flex',\n gap: '8',\n order: { base: 3, tablet: 0 },\n },\n copyrightText: {\n color: 'text/secondary',\n textStyle: 'body/md/regular',\n whiteSpace: 'nowrap',\n },\n links: {\n alignItems: 'center',\n display: 'flex',\n flexShrink: 0,\n flexWrap: { base: 'wrap', tablet: 'nowrap' },\n gap: { base: '40', tablet: '24' },\n justifyContent: { base: 'center', tablet: 'flex-start' },\n order: { base: 2, tablet: 0 },\n rowGap: { base: '12', tablet: '8' },\n width: { base: '100%', tablet: 'auto' },\n },\n link: {\n background: 'transparent',\n border: 'none',\n color: 'text/secondary',\n cursor: 'pointer',\n padding: 0,\n textDecoration: 'none',\n textStyle: { base: 'body/lg/regular', tablet: 'body/md/regular' },\n whiteSpace: 'nowrap',\n _hover: {\n textDecoration: 'underline',\n },\n },\n },\n variants: {\n colorScheme: {\n gray: {\n root: {\n background: 'background/secondary',\n },\n status: {\n background: 'background/tertiary',\n },\n },\n white: {\n root: {\n background: 'background/primary',\n },\n status: {\n background: 'background/secondary',\n },\n },\n },\n size: {\n compact: {\n root: {\n height: { tablet: '32' },\n },\n },\n default: {\n root: {\n height: { tablet: '64' },\n },\n },\n },\n variant: {\n default: {\n root: {\n paddingInlineEnd: { base: '16', tablet: rem(80) },\n position: { tablet: 'relative' },\n },\n copyright: {\n insetInlineStart: { tablet: '50%' },\n position: { tablet: 'absolute' },\n top: { tablet: '50%' },\n transform: { tablet: 'translate(-50%, -50%)' },\n },\n links: {\n borderBlockEnd: { base: '1px solid {colors.border.minimal}', tablet: 'none' },\n borderBlockStart: { base: '1px solid {colors.border.minimal}', tablet: 'none' },\n paddingBlock: { base: '16', tablet: '0' },\n },\n },\n public: {\n root: {\n paddingInlineEnd: { base: '16', tablet: '40' },\n },\n links: {\n borderBlockEnd: { base: '1px solid {colors.border.minimal}', tablet: 'none' },\n paddingBlockEnd: { base: '16', tablet: '0' },\n },\n },\n },\n },\n defaultVariants: {\n colorScheme: 'gray',\n size: 'default',\n variant: 'default',\n },\n});\n\nexport default pageFooterSlotRecipe;\n"],"mappings":";;;AAIA,IAAM,uBAAuB,iBAAiB;CAC5C,WAAW;CACX,OAAO;EAAC;EAAQ;EAAU;EAAa;EAAe;EAAa;EAAiB;EAAS;EAAO;CACpG,MAAM;EACJ,MAAM;GACJ,YAAY;GACZ,SAAS;GACT,eAAe;IAAE,MAAM;IAAU,QAAQ;IAAO;GAChD,KAAK;IAAE,MAAM;IAAM,QAAQ;IAAK;GAChC,gBAAgB;GAChB,SAAS;IAAE,MAAM;IAAM,QAAQ;IAAK;GACpC,oBAAoB;IAAE,MAAM;IAAM,QAAQ;IAAM;GAChD,OAAO;GACR;EACD,QAAQ;GACN,YAAY;GACZ,cAAc;GACd,SAAS;GACT,YAAY;GACZ,KAAK;GACL,cAAc;GACd,kBAAkB;GAClB,oBAAoB;GACrB;EACD,WAAW;GACT,cAAc;GACd,YAAY;GACZ,QAAQ;GACR,OAAO;GACP,cAAc;GACf;EACD,aAAa;GACX,OAAO;GACP,WAAW;GACX,YAAY;GACb;EACD,WAAW;GACT,YAAY;GACZ,SAAS;GACT,KAAK;GACL,OAAO;IAAE,MAAM;IAAG,QAAQ;IAAG;GAC9B;EACD,eAAe;GACb,OAAO;GACP,WAAW;GACX,YAAY;GACb;EACD,OAAO;GACL,YAAY;GACZ,SAAS;GACT,YAAY;GACZ,UAAU;IAAE,MAAM;IAAQ,QAAQ;IAAU;GAC5C,KAAK;IAAE,MAAM;IAAM,QAAQ;IAAM;GACjC,gBAAgB;IAAE,MAAM;IAAU,QAAQ;IAAc;GACxD,OAAO;IAAE,MAAM;IAAG,QAAQ;IAAG;GAC7B,QAAQ;IAAE,MAAM;IAAM,QAAQ;IAAK;GACnC,OAAO;IAAE,MAAM;IAAQ,QAAQ;IAAQ;GACxC;EACD,MAAM;GACJ,YAAY;GACZ,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,SAAS;GACT,gBAAgB;GAChB,WAAW;IAAE,MAAM;IAAmB,QAAQ;IAAmB;GACjE,YAAY;GACZ,QAAQ,EACN,gBAAgB,aACjB;GACF;EACF;CACD,UAAU;EACR,aAAa;GACX,MAAM;IACJ,MAAM,EACJ,YAAY,wBACb;IACD,QAAQ,EACN,YAAY,uBACb;IACF;GACD,OAAO;IACL,MAAM,EACJ,YAAY,sBACb;IACD,QAAQ,EACN,YAAY,wBACb;IACF;GACF;EACD,MAAM;GACJ,SAAS,EACP,MAAM,EACJ,QAAQ,EAAE,QAAQ,MAAM,EACzB,EACF;GACD,SAAS,EACP,MAAM,EACJ,QAAQ,EAAE,QAAQ,MAAM,EACzB,EACF;GACF;EACD,SAAS;GACP,SAAS;IACP,MAAM;KACJ,kBAAkB;MAAE,MAAM;MAAM,QAAQ,IAAI,GAAG;MAAE;KACjD,UAAU,EAAE,QAAQ,YAAY;KACjC;IACD,WAAW;KACT,kBAAkB,EAAE,QAAQ,OAAO;KACnC,UAAU,EAAE,QAAQ,YAAY;KAChC,KAAK,EAAE,QAAQ,OAAO;KACtB,WAAW,EAAE,QAAQ,yBAAyB;KAC/C;IACD,OAAO;KACL,gBAAgB;MAAE,MAAM;MAAqC,QAAQ;MAAQ;KAC7E,kBAAkB;MAAE,MAAM;MAAqC,QAAQ;MAAQ;KAC/E,cAAc;MAAE,MAAM;MAAM,QAAQ;MAAK;KAC1C;IACF;GACD,QAAQ;IACN,MAAM,EACJ,kBAAkB;KAAE,MAAM;KAAM,QAAQ;KAAM,EAC/C;IACD,OAAO;KACL,gBAAgB;MAAE,MAAM;MAAqC,QAAQ;MAAQ;KAC7E,iBAAiB;MAAE,MAAM;MAAM,QAAQ;MAAK;KAC7C;IACF;GACF;EACF;CACD,iBAAiB;EACf,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACF,CAAC"}