@plumile/ui 0.1.63 → 0.1.64
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/lib/esm/atomic/molecules/markdown/components/MarkdownArticleContainer.css.js +1 -0
- package/lib/esm/atomic/molecules/markdown/components/MarkdownFootnoteReference.css.js +0 -1
- package/lib/esm/atomic/organisms/sidebar/NavigationSidebar.js +191 -0
- package/lib/esm/atomic/organisms/sidebar/NavigationSidebar.js.map +1 -0
- package/lib/esm/atomic/organisms/sidebar/navigationSidebar.css.js +49 -0
- package/lib/esm/atomic/organisms/sidebar/navigationSidebar.css.js.map +1 -0
- package/lib/esm/index.js +64 -63
- package/lib/esm/style.css +1 -1
- package/lib/types/atomic/organisms/sidebar/NavigationSidebar.d.ts +37 -0
- package/lib/types/atomic/organisms/sidebar/NavigationSidebar.d.ts.map +1 -0
- package/lib/types/atomic/organisms/sidebar/navigationSidebar.css.d.ts +70 -0
- package/lib/types/atomic/organisms/sidebar/navigationSidebar.css.d.ts.map +1 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/i18n/locales/en/ui.json +7 -0
- package/src/i18n/locales/fr/ui.json +7 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { cx as e } from "../../../theme/tools.js";
|
|
2
|
+
import { useUiTranslation as t } from "../../../i18n/useUiTranslation.js";
|
|
3
|
+
import { SidebarContainer as n } from "./SidebarContainer.js";
|
|
4
|
+
import { ChevronLeftIcon as r, ChevronRightIcon as i } from "./icons.js";
|
|
5
|
+
import { childIcon as a, childLabel as o, childLinkRecipe as s, collapseButton as c, collapseButtonLabel as l, collapseButtonStateRecipe as u, collapsibleContent as d, collapsibleItem as f, collapsibleSection as p, collapsibleStateRecipe as m, iconBaseLayer as h, iconHiddenOnHover as g, iconVisibleOnHover as _, iconWrapper as v, itemWrapper as y, label as b, navButton as x, navGapRecipe as ee, navLinkRecipe as S, navWithTrailingAction as C, trailingActionButton as w, trailingActionIconHidden as T, trailingActionIconVisible as E, trailingActionIconWrapper as D, trailingIconWrapper as te } from "./navigationSidebar.css.js";
|
|
6
|
+
import { Fragment as O, jsx as k, jsxs as A } from "react/jsx-runtime";
|
|
7
|
+
import { useCallback as j, useMemo as M, useState as N } from "react";
|
|
8
|
+
import { Link as P, useLocation as F } from "@plumile/router";
|
|
9
|
+
//#region src/atomic/organisms/sidebar/NavigationSidebar.tsx
|
|
10
|
+
var I = ({ id: t, isExpanded: n, children: r }) => {
|
|
11
|
+
let i = "collapsed";
|
|
12
|
+
return n && (i = "expanded"), /* @__PURE__ */ k("div", {
|
|
13
|
+
id: t,
|
|
14
|
+
"aria-hidden": !n,
|
|
15
|
+
className: e(p, m({ state: i })),
|
|
16
|
+
children: /* @__PURE__ */ k("div", {
|
|
17
|
+
className: d,
|
|
18
|
+
children: r
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
}, L = ({ items: d, headerSlot: p, isCollapsed: m, onCollapsedChange: L, showCollapseToggle: R = !0 }) => {
|
|
22
|
+
let { t: z } = t(), [B, V] = N(!1), [H, U] = N({}), W = m != null, G = m ?? B, { pathname: K } = F(), q = (e, t) => t === !0 ? K === e : K === e ? !0 : K.startsWith(`${e}/`), J = j((e, t) => {
|
|
23
|
+
U((n) => ({
|
|
24
|
+
...n,
|
|
25
|
+
[e]: t
|
|
26
|
+
}));
|
|
27
|
+
}, []), Y = j(() => {
|
|
28
|
+
let e = !G;
|
|
29
|
+
W || V(e), L?.(e);
|
|
30
|
+
}, [
|
|
31
|
+
G,
|
|
32
|
+
W,
|
|
33
|
+
L
|
|
34
|
+
]), X;
|
|
35
|
+
G || (X = p ?? void 0);
|
|
36
|
+
let Z = M(() => {
|
|
37
|
+
if (!R) return null;
|
|
38
|
+
let t = r, n = z("navigation.sidebar.actions.collapseAriaLabel");
|
|
39
|
+
G && (t = i, n = z("navigation.sidebar.actions.expandAriaLabel"));
|
|
40
|
+
let a = "expanded";
|
|
41
|
+
G && (a = "collapsed");
|
|
42
|
+
let o = null;
|
|
43
|
+
return G || (o = /* @__PURE__ */ k("span", {
|
|
44
|
+
className: l,
|
|
45
|
+
children: z("navigation.sidebar.actions.collapse")
|
|
46
|
+
})), /* @__PURE__ */ A("button", {
|
|
47
|
+
type: "button",
|
|
48
|
+
onClick: Y,
|
|
49
|
+
className: e(c, u({ state: a })),
|
|
50
|
+
"aria-label": n,
|
|
51
|
+
children: [/* @__PURE__ */ k(t, { size: 20 }), o]
|
|
52
|
+
});
|
|
53
|
+
}, [
|
|
54
|
+
Y,
|
|
55
|
+
G,
|
|
56
|
+
R,
|
|
57
|
+
z
|
|
58
|
+
]);
|
|
59
|
+
return /* @__PURE__ */ k(n, {
|
|
60
|
+
headerSlot: X,
|
|
61
|
+
footerSlot: Z,
|
|
62
|
+
isCollapsed: G,
|
|
63
|
+
showDefaultHeaderAction: !1,
|
|
64
|
+
children: d.map((t) => {
|
|
65
|
+
let n = t.childItems ?? null, r = n != null && n.length > 0, i = H[t.key] ?? t.defaultExpanded ?? !1, c = !i, l, u = !G && r;
|
|
66
|
+
u && (l = `navigation-sidebar-${t.key}-children`), r && n.some((e) => q(e.to)) && (i = !0);
|
|
67
|
+
let d = null;
|
|
68
|
+
!G && t.trailingAction != null && (d = t.trailingAction);
|
|
69
|
+
let p = d != null, m = t.hoverIcon !== void 0 && t.hoverIcon !== null, j = t.trailingIcon !== void 0 && t.trailingIcon !== null, M = t.trailingHoverIcon !== void 0 && t.trailingHoverIcon !== null, N = !G && !p && (j || M), F;
|
|
70
|
+
G && (F = t.label);
|
|
71
|
+
let L = "expanded";
|
|
72
|
+
G && (L = "collapsed");
|
|
73
|
+
let R = ee({ state: L }), z;
|
|
74
|
+
p && (z = C);
|
|
75
|
+
let B = null;
|
|
76
|
+
G || (B = /* @__PURE__ */ k("span", {
|
|
77
|
+
className: b,
|
|
78
|
+
children: t.label
|
|
79
|
+
}));
|
|
80
|
+
let V = null;
|
|
81
|
+
m && (V = /* @__PURE__ */ k("span", {
|
|
82
|
+
className: _,
|
|
83
|
+
children: t.hoverIcon
|
|
84
|
+
}));
|
|
85
|
+
let U = /* @__PURE__ */ A("span", {
|
|
86
|
+
className: v,
|
|
87
|
+
children: [/* @__PURE__ */ k("span", {
|
|
88
|
+
className: e(h, { [g]: m }),
|
|
89
|
+
children: t.icon
|
|
90
|
+
}), V]
|
|
91
|
+
}), W = null;
|
|
92
|
+
if (N) {
|
|
93
|
+
let n = null;
|
|
94
|
+
j && (n = /* @__PURE__ */ k("span", {
|
|
95
|
+
className: e(h, { [g]: M }),
|
|
96
|
+
children: t.trailingIcon
|
|
97
|
+
}));
|
|
98
|
+
let r = null;
|
|
99
|
+
M && (r = /* @__PURE__ */ k("span", {
|
|
100
|
+
className: _,
|
|
101
|
+
children: t.trailingHoverIcon
|
|
102
|
+
})), W = /* @__PURE__ */ A("span", {
|
|
103
|
+
className: te,
|
|
104
|
+
children: [n, r]
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
let K = /* @__PURE__ */ A(O, { children: [
|
|
108
|
+
U,
|
|
109
|
+
B,
|
|
110
|
+
W
|
|
111
|
+
] }), Y = () => {
|
|
112
|
+
!r || G || J(t.key, c);
|
|
113
|
+
}, X;
|
|
114
|
+
if (r) X = e(x, R, z);
|
|
115
|
+
else {
|
|
116
|
+
let n = "default";
|
|
117
|
+
q(t.to, t.exact) && (n = "active"), X = e(S({ state: n }), R, z);
|
|
118
|
+
}
|
|
119
|
+
let Z;
|
|
120
|
+
Z = r ? /* @__PURE__ */ k("button", {
|
|
121
|
+
type: "button",
|
|
122
|
+
className: X,
|
|
123
|
+
"aria-expanded": i,
|
|
124
|
+
"aria-controls": l,
|
|
125
|
+
"aria-label": F,
|
|
126
|
+
onClick: Y,
|
|
127
|
+
children: K
|
|
128
|
+
}) : /* @__PURE__ */ k(P, {
|
|
129
|
+
to: t.to,
|
|
130
|
+
className: X,
|
|
131
|
+
exact: t.exact,
|
|
132
|
+
"aria-label": F,
|
|
133
|
+
children: K
|
|
134
|
+
});
|
|
135
|
+
let Q = null;
|
|
136
|
+
if (d != null) {
|
|
137
|
+
let e = (e) => {
|
|
138
|
+
e.preventDefault(), e.stopPropagation(), d.onClick();
|
|
139
|
+
}, t = d.hoverIcon, n = t != null, r = null;
|
|
140
|
+
n && (r = /* @__PURE__ */ k("span", {
|
|
141
|
+
className: E,
|
|
142
|
+
children: t
|
|
143
|
+
})), Q = /* @__PURE__ */ k("button", {
|
|
144
|
+
type: "button",
|
|
145
|
+
"aria-label": d.label,
|
|
146
|
+
onClick: e,
|
|
147
|
+
className: w,
|
|
148
|
+
children: /* @__PURE__ */ A("span", {
|
|
149
|
+
className: D,
|
|
150
|
+
children: [/* @__PURE__ */ k("span", {
|
|
151
|
+
className: T,
|
|
152
|
+
children: d.icon
|
|
153
|
+
}), r]
|
|
154
|
+
})
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
let $ = null;
|
|
158
|
+
return u && l != null && ($ = /* @__PURE__ */ k(I, {
|
|
159
|
+
id: l,
|
|
160
|
+
isExpanded: i,
|
|
161
|
+
children: n.map((e) => {
|
|
162
|
+
let t = null;
|
|
163
|
+
e.icon != null && (t = /* @__PURE__ */ k("span", {
|
|
164
|
+
className: a,
|
|
165
|
+
children: e.icon
|
|
166
|
+
}));
|
|
167
|
+
let n = "default";
|
|
168
|
+
return q(e.to) && (n = "active"), /* @__PURE__ */ k("div", {
|
|
169
|
+
className: f,
|
|
170
|
+
children: /* @__PURE__ */ A(P, {
|
|
171
|
+
to: e.to,
|
|
172
|
+
className: s({ state: n }),
|
|
173
|
+
"aria-label": e.label,
|
|
174
|
+
children: [t, /* @__PURE__ */ k("span", {
|
|
175
|
+
className: o,
|
|
176
|
+
children: e.label
|
|
177
|
+
})]
|
|
178
|
+
})
|
|
179
|
+
}, e.key);
|
|
180
|
+
})
|
|
181
|
+
})), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ A("div", {
|
|
182
|
+
className: y,
|
|
183
|
+
children: [Z, Q]
|
|
184
|
+
}), $] }, t.key);
|
|
185
|
+
})
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
//#endregion
|
|
189
|
+
export { L as NavigationSidebar };
|
|
190
|
+
|
|
191
|
+
//# sourceMappingURL=NavigationSidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationSidebar.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/NavigationSidebar.tsx"],"sourcesContent":["import {\n type JSX,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { Link, useLocation } from '@plumile/router';\nimport type { RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { useUiTranslation } from '../../../i18n/useUiTranslation.js';\nimport { cx } from '../../../theme/tools.js';\nimport { ChevronLeftIcon, ChevronRightIcon } from './icons.js';\nimport * as styles from './navigationSidebar.css.js';\nimport { SidebarContainer } from './SidebarContainer.js';\n\ntype SidebarItemTrailingAction = {\n icon: ReactNode;\n hoverIcon?: ReactNode;\n label: string;\n onClick: () => void;\n};\n\ntype SidebarItem = {\n key: string;\n to: string;\n label: string;\n icon: ReactNode;\n exact?: boolean;\n hoverIcon?: ReactNode;\n trailingIcon?: ReactNode;\n trailingHoverIcon?: ReactNode;\n trailingAction?: SidebarItemTrailingAction;\n childItems?: SidebarChildItem[];\n defaultExpanded?: boolean;\n};\n\ntype SidebarChildItem = {\n key: string;\n to: string;\n label: string;\n icon?: ReactNode;\n};\n\ntype NavigationSidebarProps = {\n items: SidebarItem[];\n headerSlot?: ReactNode;\n isCollapsed?: boolean;\n onCollapsedChange?: (nextCollapsed: boolean) => void;\n showCollapseToggle?: boolean;\n};\n\nconst CollapsibleSection = ({\n id,\n isExpanded,\n children,\n}: {\n id: string;\n isExpanded: boolean;\n children: ReactNode;\n}): JSX.Element => {\n let collapsibleStateKey: NonNullable<\n NonNullable<RecipeVariants<typeof styles.collapsibleStateRecipe>>['state']\n > = 'collapsed';\n if (isExpanded) {\n collapsibleStateKey = 'expanded';\n }\n\n return (\n <div\n id={id}\n aria-hidden={!isExpanded}\n className={cx(\n styles.collapsibleSection,\n styles.collapsibleStateRecipe({ state: collapsibleStateKey }),\n )}\n >\n <div className={styles.collapsibleContent}>{children}</div>\n </div>\n );\n};\n\nconst NavigationSidebar = ({\n items,\n headerSlot,\n isCollapsed: isCollapsedProp,\n onCollapsedChange,\n showCollapseToggle = true,\n}: NavigationSidebarProps): JSX.Element => {\n const { t } = useUiTranslation();\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const [expandedState, setExpandedState] = useState<Record<string, boolean>>(\n {},\n );\n const isControlled = isCollapsedProp != null;\n const isCollapsed = isCollapsedProp ?? internalCollapsed;\n const { pathname } = useLocation();\n\n const isPathActive = (target: string, exact?: boolean): boolean => {\n if (exact === true) {\n return pathname === target;\n }\n if (pathname === target) {\n return true;\n }\n return pathname.startsWith(`${target}/`);\n };\n\n const handleToggle = useCallback((key: string, nextState: boolean) => {\n setExpandedState((prev) => {\n return {\n ...prev,\n [key]: nextState,\n };\n });\n }, []);\n\n const handleCollapseToggle = useCallback(() => {\n const nextState = !isCollapsed;\n if (!isControlled) {\n setInternalCollapsed(nextState);\n }\n onCollapsedChange?.(nextState);\n }, [isCollapsed, isControlled, onCollapsedChange]);\n\n let headerContent: ReactNode | undefined;\n if (!isCollapsed) {\n headerContent = headerSlot ?? undefined;\n }\n\n const collapseButton = useMemo(() => {\n if (!showCollapseToggle) {\n return null;\n }\n\n let CollapseIcon = ChevronLeftIcon;\n let buttonLabel = t('navigation.sidebar.actions.collapseAriaLabel');\n if (isCollapsed) {\n CollapseIcon = ChevronRightIcon;\n buttonLabel = t('navigation.sidebar.actions.expandAriaLabel');\n }\n\n let collapseState: NonNullable<\n NonNullable<\n RecipeVariants<typeof styles.collapseButtonStateRecipe>\n >['state']\n > = 'expanded';\n if (isCollapsed) {\n collapseState = 'collapsed';\n }\n\n let collapseLabel: JSX.Element | null = null;\n if (!isCollapsed) {\n collapseLabel = (\n <span className={styles.collapseButtonLabel}>\n {t('navigation.sidebar.actions.collapse')}\n </span>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleCollapseToggle}\n className={cx(\n styles.collapseButton,\n styles.collapseButtonStateRecipe({ state: collapseState }),\n )}\n aria-label={buttonLabel}\n >\n <CollapseIcon size={20} />\n {collapseLabel}\n </button>\n );\n }, [handleCollapseToggle, isCollapsed, showCollapseToggle, t]);\n\n return (\n <SidebarContainer\n headerSlot={headerContent}\n footerSlot={collapseButton}\n isCollapsed={isCollapsed}\n showDefaultHeaderAction={false}\n >\n {items.map((item) => {\n const childItems = item.childItems ?? null;\n const hasChildren = childItems != null && childItems.length > 0;\n const storedExpanded = expandedState[item.key];\n let isExpanded = storedExpanded ?? item.defaultExpanded ?? false;\n const nextExpanded = !isExpanded;\n let childSectionId: string | undefined;\n const shouldRenderChildren = !isCollapsed && hasChildren;\n if (shouldRenderChildren) {\n childSectionId = `navigation-sidebar-${item.key}-children`;\n }\n\n if (hasChildren) {\n const hasActiveChild = childItems.some((child) => {\n return isPathActive(child.to);\n });\n\n if (hasActiveChild) {\n isExpanded = true;\n }\n }\n\n let trailingAction: SidebarItemTrailingAction | null = null;\n if (!isCollapsed && item.trailingAction != null) {\n trailingAction = item.trailingAction;\n }\n const showTrailingAction = trailingAction != null;\n const hasHoverIcon =\n item.hoverIcon !== undefined && item.hoverIcon !== null;\n const hasTrailingIcon =\n item.trailingIcon !== undefined && item.trailingIcon !== null;\n const hasTrailingHoverIcon =\n item.trailingHoverIcon !== undefined &&\n item.trailingHoverIcon !== null;\n const showTrailing =\n !isCollapsed &&\n !showTrailingAction &&\n (hasTrailingIcon || hasTrailingHoverIcon);\n\n let itemAriaLabel: string | undefined;\n if (isCollapsed) {\n itemAriaLabel = item.label;\n }\n\n let gapState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.navGapRecipe>>['state']\n > = 'expanded';\n if (isCollapsed) {\n gapState = 'collapsed';\n }\n const gapClassName = styles.navGapRecipe({ state: gapState });\n\n let paddingClassName: string | undefined;\n if (showTrailingAction) {\n paddingClassName = styles.navWithTrailingAction;\n }\n\n let labelNode: JSX.Element | null = null;\n if (!isCollapsed) {\n labelNode = <span className={styles.label}>{item.label}</span>;\n }\n\n let hoverLayer: JSX.Element | null = null;\n if (hasHoverIcon) {\n hoverLayer = (\n <span className={styles.iconVisibleOnHover}>{item.hoverIcon}</span>\n );\n }\n\n const leadingIcon = (\n <span className={styles.iconWrapper}>\n <span\n className={cx(styles.iconBaseLayer, {\n [styles.iconHiddenOnHover]: hasHoverIcon,\n })}\n >\n {item.icon}\n </span>\n {hoverLayer}\n </span>\n );\n\n let trailingIcons: JSX.Element | null = null;\n if (showTrailing) {\n let trailingBaseLayer: JSX.Element | null = null;\n if (hasTrailingIcon) {\n trailingBaseLayer = (\n <span\n className={cx(styles.iconBaseLayer, {\n [styles.iconHiddenOnHover]: hasTrailingHoverIcon,\n })}\n >\n {item.trailingIcon}\n </span>\n );\n }\n\n let trailingHoverLayer: JSX.Element | null = null;\n if (hasTrailingHoverIcon) {\n trailingHoverLayer = (\n <span className={styles.iconVisibleOnHover}>\n {item.trailingHoverIcon}\n </span>\n );\n }\n\n trailingIcons = (\n <span className={styles.trailingIconWrapper}>\n {trailingBaseLayer}\n {trailingHoverLayer}\n </span>\n );\n }\n\n const commonContent = (\n <>\n {leadingIcon}\n {labelNode}\n {trailingIcons}\n </>\n );\n\n const handleClick = (): void => {\n if (!hasChildren || isCollapsed) {\n return;\n }\n handleToggle(item.key, nextExpanded);\n };\n\n let interactiveClassName: string;\n if (hasChildren) {\n interactiveClassName = cx(\n styles.navButton,\n gapClassName,\n paddingClassName,\n );\n } else {\n let navState: NonNullable<\n NonNullable<RecipeVariants<typeof styles.navLinkRecipe>>['state']\n > = 'default';\n if (isPathActive(item.to, item.exact)) {\n navState = 'active';\n }\n interactiveClassName = cx(\n styles.navLinkRecipe({ state: navState }),\n gapClassName,\n paddingClassName,\n );\n }\n\n let itemNode: JSX.Element;\n if (hasChildren) {\n itemNode = (\n <button\n type=\"button\"\n className={interactiveClassName}\n aria-expanded={isExpanded}\n aria-controls={childSectionId}\n aria-label={itemAriaLabel}\n onClick={handleClick}\n >\n {commonContent}\n </button>\n );\n } else {\n itemNode = (\n <Link\n to={item.to}\n className={interactiveClassName}\n exact={item.exact}\n aria-label={itemAriaLabel}\n >\n {commonContent}\n </Link>\n );\n }\n\n let trailingActionNode: JSX.Element | null = null;\n if (trailingAction != null) {\n const handleTrailingClick = (\n event: MouseEvent<HTMLButtonElement>,\n ): void => {\n event.preventDefault();\n event.stopPropagation();\n trailingAction.onClick();\n };\n\n const trailingHoverIcon = trailingAction.hoverIcon;\n const showTrailingHoverIcon =\n trailingHoverIcon !== undefined && trailingHoverIcon !== null;\n let trailingHoverContent: JSX.Element | null = null;\n if (showTrailingHoverIcon) {\n trailingHoverContent = (\n <span className={styles.trailingActionIconVisible}>\n {trailingHoverIcon}\n </span>\n );\n }\n\n trailingActionNode = (\n <button\n type=\"button\"\n aria-label={trailingAction.label}\n onClick={handleTrailingClick}\n className={styles.trailingActionButton}\n >\n <span className={styles.trailingActionIconWrapper}>\n <span className={styles.trailingActionIconHidden}>\n {trailingAction.icon}\n </span>\n {trailingHoverContent}\n </span>\n </button>\n );\n }\n\n let childList: JSX.Element | null = null;\n if (shouldRenderChildren && childSectionId != null) {\n childList = (\n <CollapsibleSection id={childSectionId} isExpanded={isExpanded}>\n {childItems.map((child) => {\n let leading: JSX.Element | null = null;\n if (child.icon != null) {\n leading = (\n <span className={styles.childIcon}>{child.icon}</span>\n );\n }\n\n let childState: NonNullable<\n NonNullable<\n RecipeVariants<typeof styles.childLinkRecipe>\n >['state']\n > = 'default';\n if (isPathActive(child.to)) {\n childState = 'active';\n }\n\n return (\n <div key={child.key} className={styles.collapsibleItem}>\n <Link\n to={child.to}\n className={styles.childLinkRecipe({ state: childState })}\n aria-label={child.label}\n >\n {leading}\n <span className={styles.childLabel}>{child.label}</span>\n </Link>\n </div>\n );\n })}\n </CollapsibleSection>\n );\n }\n\n return (\n <div key={item.key}>\n <div className={styles.itemWrapper}>\n {itemNode}\n {trailingActionNode}\n </div>\n {childList}\n </div>\n );\n })}\n </SidebarContainer>\n );\n};\n\nexport { NavigationSidebar };\nexport type {\n NavigationSidebarProps,\n SidebarChildItem,\n SidebarItem,\n SidebarItemTrailingAction,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
4
|
+
//#region src/atomic/organisms/sidebar/navigationSidebar.css.ts
|
|
5
|
+
var t = "w6b4r71 w6b4r70 txvbqb9io txvbqbco txvbqbdnx txvbqb1ro txvbqb1co txvbqb1qf txvbqb106 txvbqbv9p txvbqbv4h txvbqbc76 txvbqb77 txvbqb6z txvbqb7k", n = e({
|
|
6
|
+
defaultClassName: "w6b4r72",
|
|
7
|
+
variantClassNames: { state: {
|
|
8
|
+
collapsed: "w6b4r73",
|
|
9
|
+
expanded: "w6b4r74"
|
|
10
|
+
} },
|
|
11
|
+
defaultVariants: { state: "expanded" },
|
|
12
|
+
compoundVariants: []
|
|
13
|
+
}), r = "w6b4r75 txvbqbgmo txvbqb8x txvbqbamf", i = "w6b4r76 txvbqb9ix txvbqb7b txvbqb70 txvbqb7m", a = e({
|
|
14
|
+
defaultClassName: "w6b4r77",
|
|
15
|
+
variantClassNames: { state: {
|
|
16
|
+
expanded: "w6b4r78",
|
|
17
|
+
collapsed: "w6b4r79"
|
|
18
|
+
} },
|
|
19
|
+
defaultVariants: { state: "collapsed" },
|
|
20
|
+
compoundVariants: []
|
|
21
|
+
}), o = "w6b4r7a txvbqbhwx txvbqbgnf txvbqb6gf txvbqb1qf txvbqb106 txvbqbnv6 txvbqbl6f", s = "w6b4r7b", c = "w6b4r7c txvbqbpsf", l = "w6b4r7g w6b4r7e w6b4r7d txvbqbnv6 txvbqboif txvbqbp5f txvbqblx6 txvbqb9io txvbqbco txvbqbdof txvbqbu6f txvbqb1ro txvbqb8x txvbqbf3x txvbqbt5o txvbqbuzj txvbqb77 txvbqb6z txvbqb7k w6b4r7f txvbqbamx txvbqbva3", u = e({
|
|
22
|
+
defaultClassName: "w6b4r7l w6b4r7i w6b4r7e w6b4r7d txvbqbnv6 txvbqboif txvbqbp5f txvbqblx6 txvbqb9io txvbqbco txvbqbdof txvbqbu6f txvbqb1ro txvbqb8x txvbqbf3x txvbqbt5o txvbqbuzj txvbqb77 txvbqb6z txvbqb7k w6b4r7h txvbqbamo txvbqb3b",
|
|
23
|
+
variantClassNames: { state: {
|
|
24
|
+
default: "w6b4r7m w6b4r7j txvbqbva3",
|
|
25
|
+
active: "w6b4r7n w6b4r7k txvbqbuy6 txvbqbv9z txvbqb106 txvbqb1rx"
|
|
26
|
+
} },
|
|
27
|
+
defaultVariants: { state: "default" },
|
|
28
|
+
compoundVariants: []
|
|
29
|
+
}), d = e({
|
|
30
|
+
defaultClassName: "w6b4r7q",
|
|
31
|
+
variantClassNames: { state: {
|
|
32
|
+
collapsed: "w6b4r7r w6b4r7o txvbqb8uo",
|
|
33
|
+
expanded: "w6b4r7s w6b4r7p txvbqb8vf"
|
|
34
|
+
} },
|
|
35
|
+
defaultVariants: { state: "expanded" },
|
|
36
|
+
compoundVariants: []
|
|
37
|
+
}), f = "w6b4r7t txvbqboko", p = "w6b4r7u txvbqb9mx txvbqbk4x txvbqbuw6 txvbqbl6f txvbqbt6f txvbqb7d txvbqb6z txvbqb7k", m = "w6b4r7v txvbqbpsf txvbqb9io txvbqbco txvbqbdnx txvbqbtwf txvbqbc5x txvbqbaj6", h = "w6b4r7w txvbqb7d txvbqb6z txvbqb7k", g = "w6b4r7x w6b4r7w txvbqb7d txvbqb6z txvbqb7k", _ = "w6b4r7z w6b4r7w txvbqb7d txvbqb6z txvbqb7k w6b4r7y txvbqbvab", v = "w6b4r710 txvbqbpsf txvbqbgwf txvbqb9io txvbqbco txvbqbdnx txvbqbtwf txvbqbc5x", y = "w6b4r712 w6b4r711 txvbqbps6 txvbqbtu6 txvbqbptx txvbqb9io txvbqbco txvbqbdnx txvbqbtx6 txvbqbc6o txvbqb1rf txvbqbv4h txvbqbv9p txvbqbvab txvbqb77 txvbqb6z txvbqb7k", b = "w6b4r713 txvbqbpsf txvbqb9io txvbqbco txvbqbdnx txvbqbtw6 txvbqbc5o", x = "w6b4r715 w6b4r714 txvbqb7d txvbqb6z txvbqb7k", S = "w6b4r717 w6b4r716 txvbqbvab txvbqb7d txvbqb6z txvbqb7k", C = e({
|
|
38
|
+
defaultClassName: "w6b4r71c w6b4r719 w6b4r718 txvbqbnv6 txvbqboif txvbqbp5f txvbqblx6 txvbqb9io txvbqbco txvbqbao6 txvbqb1ro txvbqb8x txvbqbamf txvbqbf3x txvbqb3b txvbqb78 txvbqb6z txvbqb7k",
|
|
39
|
+
variantClassNames: { state: {
|
|
40
|
+
default: "w6b4r71d w6b4r71a txvbqbva3",
|
|
41
|
+
active: "w6b4r71e w6b4r71b txvbqbv49 txvbqbv9z txvbqbamo"
|
|
42
|
+
} },
|
|
43
|
+
defaultVariants: { state: "default" },
|
|
44
|
+
compoundVariants: []
|
|
45
|
+
}), w = "w6b4r71f txvbqb9io txvbqbco txvbqbdnx txvbqbtw6 txvbqbc5o txvbqbaj6 txvbqbv9p", T = "w6b4r71g txvbqb9mx txvbqbk4x txvbqbuw6 txvbqbl6f txvbqbt6f";
|
|
46
|
+
//#endregion
|
|
47
|
+
export { w as childIcon, T as childLabel, C as childLinkRecipe, t as collapseButton, r as collapseButtonLabel, n as collapseButtonStateRecipe, o as collapsibleContent, s as collapsibleItem, i as collapsibleSection, a as collapsibleStateRecipe, h as iconBaseLayer, g as iconHiddenOnHover, _ as iconVisibleOnHover, m as iconWrapper, c as itemWrapper, p as label, l as navButton, d as navGapRecipe, u as navLinkRecipe, f as navWithTrailingAction, y as trailingActionButton, x as trailingActionIconHidden, S as trailingActionIconVisible, b as trailingActionIconWrapper, v as trailingIconWrapper };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=navigationSidebar.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigationSidebar.css.js","names":[],"sources":["../../../../../src/atomic/organisms/sidebar/navigationSidebar.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { recipe, type RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { sprinkles } from '../../../theme/sprinkles.css.js';\nimport { vars } from '../../../theme/themeContract.js';\n\nexport const collapseButton = style([\n sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'brandPrimaryRed',\n color: 'brandPrimaryRed',\n backgroundColor: 'brandWhite',\n height: 10,\n transitionProperty: 'default',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:hover': {\n backgroundColor: vars.colors.brandSecondaryOrange,\n color: vars.colors.brandWhite,\n boxShadow: vars.boxShadow.brandGlow,\n },\n '&:focus-visible': {\n outline: 'none',\n boxShadow: `0 0 0 2px ${vars.colors.brandSecondaryOrange}`,\n },\n },\n },\n]);\n\nexport const collapseButtonStateRecipe = recipe({\n variants: {\n state: {\n collapsed: {\n width: vars.spacing[10],\n paddingInline: 0,\n },\n expanded: {\n paddingInline: vars.spacing[3],\n width: 'auto',\n },\n },\n },\n defaultVariants: {\n state: 'expanded',\n },\n});\n\nexport type CollapseButtonStateVariants = RecipeVariants<\n typeof collapseButtonStateRecipe\n>;\n\nexport const collapseButtonLabel = sprinkles({\n marginLeft: 2,\n fontSize: 'sm',\n fontWeight: 'medium',\n});\n\nexport const collapsibleSection = sprinkles({\n display: 'grid',\n transitionProperty: 'gridTemplateRowsOpacity',\n transitionDuration: 300,\n transitionTimingFunction: 'ease-in-out',\n});\n\nexport const collapsibleStateRecipe = recipe({\n variants: {\n state: {\n expanded: {\n gridTemplateRows: '1fr',\n opacity: 1,\n },\n collapsed: {\n gridTemplateRows: '0fr',\n opacity: 0,\n pointerEvents: 'none',\n },\n },\n },\n defaultVariants: {\n state: 'collapsed',\n },\n});\n\nexport type CollapsibleStateVariants = RecipeVariants<\n typeof collapsibleStateRecipe\n>;\n\nexport const collapsibleContent = sprinkles({\n marginTop: 1,\n marginLeft: 5,\n borderLeftWidth: 2,\n borderStyle: 'solid',\n borderColor: 'brandPrimaryRed',\n paddingLeft: 3,\n overflow: 'hidden',\n});\n\nexport const collapsibleItem = style({\n selectors: {\n '&:not(:first-child)': {\n marginTop: vars.spacing[1],\n },\n },\n});\n\nexport const itemWrapper = sprinkles({\n position: 'relative',\n});\n\nconst interactiveBase = style([\n sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n width: 'full',\n borderRadius: 'lg',\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n lineHeight: 1.2,\n textAlign: 'left',\n backgroundColor: 'transparent',\n transitionProperty: 'default',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:hover': {\n backgroundColor: vars.colors.brandLightGray,\n borderColor: vars.colors.brandSecondaryOrange,\n },\n '&:focus-visible': {\n outline: 'none',\n },\n },\n },\n]);\n\nexport const navButton = style([\n interactiveBase,\n sprinkles({ fontWeight: 'bold', color: 'brandDarkGray' }),\n]);\n\nconst navLinkBase = style([\n interactiveBase,\n sprinkles({ fontWeight: 'semibold', textDecoration: 'none' }),\n]);\n\nexport const navLinkRecipe = recipe({\n base: navLinkBase,\n variants: {\n state: {\n default: sprinkles({\n color: 'brandDarkGray',\n }),\n active: sprinkles({\n backgroundImage: 'brandDiagonal',\n color: 'brandWhite',\n borderColor: 'brandPrimaryRed',\n borderRadius: 'xl',\n }),\n },\n },\n defaultVariants: {\n state: 'default',\n },\n});\n\nexport type NavLinkVariants = RecipeVariants<typeof navLinkRecipe>;\n\nexport const navGapRecipe = recipe({\n variants: {\n state: {\n collapsed: sprinkles({ columnGap: 0 }),\n expanded: sprinkles({ columnGap: 3 }),\n },\n },\n defaultVariants: {\n state: 'expanded',\n },\n});\n\nexport type NavGapVariants = RecipeVariants<typeof navGapRecipe>;\n\nexport const navWithTrailingAction = sprinkles({\n paddingRight: 12,\n});\n\nexport const label = sprinkles({\n flex: 1,\n minWidth: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n});\n\nexport const iconWrapper = sprinkles({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 5,\n height: 5,\n flexShrink: 0,\n});\n\nconst fadingLayer = sprinkles({\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n});\n\nexport const iconBaseLayer = fadingLayer;\n\nexport const iconHiddenOnHover = style([\n fadingLayer,\n {\n selectors: {\n [`${itemWrapper}:hover &`]: { opacity: 0 },\n [`${itemWrapper}:focus-visible &`]: { opacity: 0 },\n [`${itemWrapper}:focus-within &`]: { opacity: 0 },\n },\n },\n]);\n\nexport const iconVisibleOnHover = style([\n fadingLayer,\n sprinkles({ opacity: 0 }),\n {\n selectors: {\n [`${itemWrapper}:hover &`]: { opacity: 1 },\n [`${itemWrapper}:focus-visible &`]: { opacity: 1 },\n [`${itemWrapper}:focus-within &`]: { opacity: 1 },\n },\n },\n]);\n\nexport const trailingIconWrapper = sprinkles({\n position: 'relative',\n marginLeft: 'auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 5,\n height: 5,\n});\n\nexport const trailingActionButton = style([\n sprinkles({\n position: 'absolute',\n top: '1/2',\n right: 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 8,\n height: 8,\n borderRadius: 'md',\n backgroundColor: 'brandWhite',\n color: 'brandPrimaryRed',\n opacity: 0,\n transitionProperty: 'default',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n transform: 'translateY(-50%)',\n selectors: {\n [`${itemWrapper}:hover &`]: { opacity: 1 },\n [`${itemWrapper}:focus-within &`]: { opacity: 1 },\n '&:hover': {\n backgroundColor: vars.colors.brandSecondaryOrange,\n color: vars.colors.brandWhite,\n },\n '&:focus-visible': {\n outline: 'none',\n boxShadow: `0 0 0 2px ${vars.colors.brandSecondaryOrange}`,\n opacity: 1,\n },\n },\n },\n]);\n\nexport const trailingActionIconWrapper = sprinkles({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 4,\n height: 4,\n});\n\nexport const trailingActionIconHidden = style([\n sprinkles({\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n [`${trailingActionButton}:hover &`]: { opacity: 0 },\n [`${trailingActionButton}:focus-visible &`]: { opacity: 0 },\n },\n },\n]);\n\nexport const trailingActionIconVisible = style([\n sprinkles({\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n [`${trailingActionButton}:hover &`]: { opacity: 1 },\n [`${trailingActionButton}:focus-visible &`]: { opacity: 1 },\n },\n },\n]);\n\nconst childLinkBase = style([\n sprinkles({\n display: 'flex',\n alignItems: 'center',\n gap: 2,\n borderRadius: 'lg',\n paddingY: 2,\n paddingX: 3,\n fontSize: 'sm',\n fontWeight: 'medium',\n lineHeight: 1.2,\n textDecoration: 'none',\n transitionProperty: 'colors',\n transitionDuration: 200,\n transitionTimingFunction: 'ease',\n }),\n {\n selectors: {\n '&:hover': {\n backgroundColor: vars.colors.brandLightGray,\n color: vars.colors.brandDarkGray,\n },\n },\n },\n]);\n\nexport const childLinkRecipe = recipe({\n base: childLinkBase,\n variants: {\n state: {\n default: sprinkles({\n color: 'brandDarkGray',\n }),\n active: sprinkles({\n backgroundColor: 'brandSecondaryOrange',\n color: 'brandWhite',\n fontWeight: 'semibold',\n }),\n },\n },\n defaultVariants: {\n state: 'default',\n },\n});\n\nexport type ChildLinkVariants = RecipeVariants<typeof childLinkRecipe>;\n\nexport const childIcon = sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 4,\n height: 4,\n flexShrink: 0,\n color: 'brandPrimaryRed',\n});\n\nexport const childLabel = sprinkles({\n flex: 1,\n minWidth: 0,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n});\n"],"mappings":""}
|
package/lib/esm/index.js
CHANGED
|
@@ -37,66 +37,67 @@ import { useLoginForm as H } from "./atomic/organisms/login_form/useLoginForm.js
|
|
|
37
37
|
import { SidebarContainer as U } from "./atomic/organisms/sidebar/SidebarContainer.js";
|
|
38
38
|
import "./atomic/organisms/sidebar/Sidebar.js";
|
|
39
39
|
import { ChevronLeftIcon as W, ChevronRightIcon as G, DocumentationIcon as K, HomeIcon as q, InitiativesIcon as J, PlusIcon as Y, ProjectsIcon as X, SearchIcon as Z, SettingsIcon as Q, TasksIcon as ne, TeamIcon as re } from "./atomic/organisms/sidebar/icons.js";
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
66
|
-
import {
|
|
67
|
-
import {
|
|
68
|
-
import {
|
|
69
|
-
import {
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
import {
|
|
78
|
-
import {
|
|
79
|
-
import {
|
|
80
|
-
import {
|
|
81
|
-
import {
|
|
82
|
-
import {
|
|
83
|
-
import {
|
|
84
|
-
import {
|
|
85
|
-
import {
|
|
86
|
-
import {
|
|
87
|
-
import {
|
|
88
|
-
import {
|
|
89
|
-
import {
|
|
90
|
-
import {
|
|
91
|
-
import {
|
|
92
|
-
import {
|
|
93
|
-
import {
|
|
94
|
-
import {
|
|
95
|
-
import {
|
|
96
|
-
import {
|
|
97
|
-
import {
|
|
98
|
-
import {
|
|
99
|
-
import {
|
|
100
|
-
import {
|
|
101
|
-
import {
|
|
102
|
-
|
|
40
|
+
import { NavigationSidebar as ie } from "./atomic/organisms/sidebar/NavigationSidebar.js";
|
|
41
|
+
import { AuthLayout as ae } from "./atomic/templates/auth_layout/AuthLayout.js";
|
|
42
|
+
import { BillingUsageLineChart as oe } from "./components/charts/BillingUsageLineChart.js";
|
|
43
|
+
import { DataTable as se } from "./components/data-table/DataTable.js";
|
|
44
|
+
import { ContentLayout as ce } from "./components/layout/ContentLayout.js";
|
|
45
|
+
import { PageShell as le } from "./components/layout/PageShell.js";
|
|
46
|
+
import { SimpleSelect as ue } from "./components/select/SimpleSelect.js";
|
|
47
|
+
import { RefetchNeededBanner as $ } from "./components/subscriptions/RefetchNeededBanner.js";
|
|
48
|
+
import { TabsContentLayout as de } from "./components/layout/TabsContentLayout.js";
|
|
49
|
+
import { InfoTile as fe } from "./components/tile/InfoTile.js";
|
|
50
|
+
import { VirtualizedConnectionTable as pe } from "./components/data-table/VirtualizedConnectionTable.js";
|
|
51
|
+
import { CopyableText as me } from "./backoffice/atoms/copyable_text/CopyableText.js";
|
|
52
|
+
import { BackofficeIdBadge as he } from "./backoffice/atoms/backoffice_id_badge/BackofficeIdBadge.js";
|
|
53
|
+
import { EnvironmentBadge as ge } from "./backoffice/atoms/environment_badge/EnvironmentBadge.js";
|
|
54
|
+
import { ShortcutHint as _e } from "./backoffice/atoms/shortcut_hint/ShortcutHint.js";
|
|
55
|
+
import { Skeleton as ve } from "./backoffice/atoms/skeleton/Skeleton.js";
|
|
56
|
+
import { Spinner as ye } from "./backoffice/atoms/spinner/Spinner.js";
|
|
57
|
+
import { StatusBadge as be } from "./backoffice/atoms/status_badge/StatusBadge.js";
|
|
58
|
+
import { Tag as xe } from "./backoffice/atoms/tag/Tag.js";
|
|
59
|
+
import { BackofficeDetailLayout as Se } from "./backoffice/molecules/backoffice_detail_layout/BackofficeDetailLayout.js";
|
|
60
|
+
import { BackofficeEmptyState as Ce } from "./backoffice/molecules/backoffice_empty_state/BackofficeEmptyState.js";
|
|
61
|
+
import { BackofficeFilterDrawer as we } from "./backoffice/molecules/backoffice_filter_drawer/BackofficeFilterDrawer.js";
|
|
62
|
+
import { BackofficeFilterField as Te } from "./backoffice/molecules/backoffice_filter_field/BackofficeFilterField.js";
|
|
63
|
+
import { BackofficeFiltersBar as Ee } from "./backoffice/molecules/backoffice_filters_bar/BackofficeFiltersBar.js";
|
|
64
|
+
import { BackofficeFormSection as De } from "./backoffice/molecules/backoffice_form_section/BackofficeFormSection.js";
|
|
65
|
+
import { ConfirmDialog as Oe } from "./backoffice/molecules/confirm_dialog/ConfirmDialog.js";
|
|
66
|
+
import { BackofficeJsonViewer as ke } from "./backoffice/molecules/backoffice_json_viewer/BackofficeJsonViewer.js";
|
|
67
|
+
import { BackofficeKeyValueList as Ae } from "./backoffice/molecules/backoffice_key_value_list/BackofficeKeyValueList.js";
|
|
68
|
+
import { BackofficeLoadMore as je } from "./backoffice/molecules/backoffice_load_more/BackofficeLoadMore.js";
|
|
69
|
+
import { BackofficePageHeader as Me } from "./backoffice/molecules/backoffice_page_header/BackofficePageHeader.js";
|
|
70
|
+
import { BackofficeRelationsMenu as Ne } from "./backoffice/molecules/backoffice_relations_menu/BackofficeRelationsMenu.js";
|
|
71
|
+
import { BackofficeTableSkeleton as Pe } from "./backoffice/molecules/backoffice_table_skeleton/BackofficeTableSkeleton.js";
|
|
72
|
+
import { BackofficeTableToolbar as Fe } from "./backoffice/molecules/backoffice_table_toolbar/BackofficeTableToolbar.js";
|
|
73
|
+
import { BackofficeTabs as Ie } from "./backoffice/molecules/backoffice_tabs/BackofficeTabs.js";
|
|
74
|
+
import { BulkActionsBar as Le } from "./backoffice/molecules/bulk_actions_bar/BulkActionsBar.js";
|
|
75
|
+
import { FilterChipRow as Re } from "./backoffice/molecules/filter_chip_row/FilterChipRow.js";
|
|
76
|
+
import { GlobalSearchInput as ze } from "./backoffice/molecules/global_search_input/GlobalSearchInput.js";
|
|
77
|
+
import { InlineBanner as Be } from "./backoffice/molecules/inline_banner/InlineBanner.js";
|
|
78
|
+
import { SidebarNavItem as Ve } from "./backoffice/molecules/sidebar_nav_item/SidebarNavItem.js";
|
|
79
|
+
import { SidebarNavSection as He } from "./backoffice/molecules/sidebar_nav_section/SidebarNavSection.js";
|
|
80
|
+
import { BackofficeSidebarProfileMenu as Ue } from "./backoffice/molecules/sidebar_profile_menu/BackofficeSidebarProfileMenu.js";
|
|
81
|
+
import { SidebarCollapseToggle as We } from "./backoffice/molecules/sidebar_collapse_toggle/SidebarCollapseToggle.js";
|
|
82
|
+
import { TableToolbar as Ge } from "./backoffice/molecules/table_toolbar/TableToolbar.js";
|
|
83
|
+
import { BackofficeAppShell as Ke } from "./backoffice/organisms/backoffice_app_shell/BackofficeAppShell.js";
|
|
84
|
+
import { AuditTimeline as qe } from "./backoffice/organisms/audit_timeline/AuditTimeline.js";
|
|
85
|
+
import { BackofficeDataTable as Je } from "./backoffice/organisms/backoffice_data_table/BackofficeDataTable.js";
|
|
86
|
+
import { BackofficeSidebar as Ye } from "./backoffice/organisms/backoffice_sidebar/BackofficeSidebar.js";
|
|
87
|
+
import { BackofficeTopbar as Xe } from "./backoffice/organisms/backoffice_topbar/BackofficeTopbar.js";
|
|
88
|
+
import { BackofficeVirtualizedConnectionTable as Ze } from "./backoffice/organisms/backoffice_virtualized_connection_table/BackofficeVirtualizedConnectionTable.js";
|
|
89
|
+
import { EntityHeader as Qe } from "./backoffice/organisms/entity_header/EntityHeader.js";
|
|
90
|
+
import { BackofficeShellTemplate as $e } from "./backoffice/templates/backoffice_shell_template/BackofficeShellTemplate.js";
|
|
91
|
+
import { DetailPageTemplate as et } from "./backoffice/templates/detail_page_template/DetailPageTemplate.js";
|
|
92
|
+
import { ListPageTemplate as tt } from "./backoffice/templates/list_page_template/ListPageTemplate.js";
|
|
93
|
+
import { SettingsTemplate as nt } from "./backoffice/templates/settings_template/SettingsTemplate.js";
|
|
94
|
+
import { SplitViewTemplate as rt } from "./backoffice/templates/split_view_template/SplitViewTemplate.js";
|
|
95
|
+
import { backofficeThemeClass as it } from "./backoffice/theme/backofficeTheme.css.js";
|
|
96
|
+
import { BackofficeThemeProvider as at } from "./backoffice/theme/BackofficeThemeProvider.js";
|
|
97
|
+
import { FALLBACK_REFERENCE as ot, formatNullableCurrency as st, formatNullableNumber as ct, formatNullableString as lt, formatStringList as ut } from "./shared/agentJobRequestFormatting.js";
|
|
98
|
+
import { sanitizeAgentAnswer as dt, sanitizeAgentMarkdown as ft } from "./shared/agentText.js";
|
|
99
|
+
import { denseTableClass as pt } from "./shared/backofficeTableDensity.css.js";
|
|
100
|
+
import { WrapperPage as mt } from "./pages/WrapperPage.js";
|
|
101
|
+
import { ChevronDownIcon as ht } from "./svg/ChevronDownIcon.js";
|
|
102
|
+
import { LoginForm as gt } from "./atomic/organisms/login_form/LoginForm.js";
|
|
103
|
+
export { qe as AuditTimeline, ae as AuthLayout, Ke as BackofficeAppShell, Je as BackofficeDataTable, Se as BackofficeDetailLayout, Ce as BackofficeEmptyState, we as BackofficeFilterDrawer, Te as BackofficeFilterField, Ee as BackofficeFiltersBar, De as BackofficeFormSection, he as BackofficeIdBadge, ke as BackofficeJsonViewer, Ae as BackofficeKeyValueList, je as BackofficeLoadMore, Me as BackofficePageHeader, Ne as BackofficeRelationsMenu, $e as BackofficeShellTemplate, Ye as BackofficeSidebar, Ue as BackofficeSidebarProfileMenu, Pe as BackofficeTableSkeleton, Fe as BackofficeTableToolbar, Ie as BackofficeTabs, at as BackofficeThemeProvider, Xe as BackofficeTopbar, Ze as BackofficeVirtualizedConnectionTable, e as Badge, oe as BillingUsageLineChart, f as BreadcrumbNavigation, Le as BulkActionsBar, t as Button, p as Card, a as Checkbox, m as CheckboxField, ht as ChevronDownIcon, W as ChevronLeftIcon, G as ChevronRightIcon, Oe as ConfirmDialog, ce as ContentLayout, me as CopyableText, se as DataTable, et as DetailPageTemplate, K as DocumentationIcon, Qe as EntityHeader, ge as EnvironmentBadge, o as ErrorMessage, ot as FALLBACK_REFERENCE, Re as FilterChipRow, h as Form, v as FormActions, y as FormError, g as FormErrorBanner, b as FormField, _ as FormGroup, s as FormattedDate, ze as GlobalSearchInput, x as HighlightCode, q as HomeIcon, c as IconMenuButton, fe as InfoTile, J as InitiativesIcon, Be as InlineBanner, r as Input, i as Label, S as LazyMarkdownRenderer, n as LinkButton, tt as ListPageTemplate, gt as LoginForm, u as Modal, ie as NavigationSidebar, l as Overlay, le as PageShell, Y as PlusIcon, X as ProjectsIcon, $ as RefetchNeededBanner, Z as SearchIcon, Q as SettingsIcon, nt as SettingsTemplate, _e as ShortcutHint, U as Sidebar, We as SidebarCollapseToggle, U as SidebarContainer, Ve as SidebarNavItem, He as SidebarNavSection, ue as SimpleSelect, ve as Skeleton, ye as Spinner, rt as SplitViewTemplate, be as StatusBadge, j as THEME_KEY, Ge as TableToolbar, D as Tabs, de as TabsContentLayout, xe as Tag, ne as TasksIcon, re as TeamIcon, d as Textarea, M as ThemeProvider, k as ToastProvider, O as ToastViewport, pe as VirtualizedConnectionTable, P as VisuallyHidden, mt as WrapperPage, it as backofficeThemeClass, w as colors, F as containerQueries, ee as cx, pt as denseTableClass, I as firstChildSprinkles, st as formatNullableCurrency, ct as formatNullableNumber, lt as formatNullableString, ut as formatStringList, L as hoverSprinkles, te as onlyDefinedStyles, z as opacity, dt as sanitizeAgentAnswer, ft as sanitizeAgentMarkdown, B as screens, T as spacing, R as sprinkles, C as themeColorValues, V as themeSpacingValues, H as useLoginForm, N as useTheme, A as useToast, E as vars };
|