jcicl 1.0.78 → 1.1.1
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/.chunks/chevron-down.js +11 -0
- package/.chunks/user.js +41 -0
- package/Button/Button.d.ts +2 -3
- package/Button/Button.js +20 -20
- package/ChevronOval/ChevronOval.d.ts +8 -0
- package/ChevronOval/ChevronOval.js +22 -0
- package/ChevronOval/index.d.ts +3 -0
- package/ChevronOval/index.js +5 -0
- package/ClientMatchCard/ClientMatchCard.d.ts +21 -0
- package/ClientMatchCard/ClientMatchCard.js +121 -0
- package/ClientMatchCard/index.d.ts +3 -0
- package/ClientMatchCard/index.js +5 -0
- package/ContactCard/ContactCard.js +18 -52
- package/DefaultTemplate/DefaultTemplate.js +81 -72
- package/DetailPageComponents/DetailPageComponents.d.ts +21 -2
- package/DetailPageComponents/DetailPageComponents.js +80 -44
- package/ExpandableSection/ExpandableSection.d.ts +19 -0
- package/ExpandableSection/ExpandableSection.js +23 -0
- package/ExpandableSection/index.d.ts +3 -0
- package/ExpandableSection/index.js +5 -0
- package/FormFields/FormFields.js +19 -13
- package/Pill/Pill.d.ts +13 -0
- package/Pill/Pill.js +36 -38
- package/README.md +22 -3
- package/Table/Table.js +81 -87
- package/assets/style.css +1 -1
- package/assets/tailwind.css +1 -1
- package/camelToKebab.d.ts +12 -0
- package/camelToKebab.js +4 -0
- package/format.d.ts +48 -0
- package/format.js +31 -0
- package/index.d.ts +17 -0
- package/index.js +103 -64
- package/package.json +1 -1
- package/theme.d.ts +0 -2
- package/theme.js +0 -2
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { n as
|
|
4
|
-
import { c as
|
|
5
|
-
import o, { defaultTheme as
|
|
6
|
-
import { getHueFromHex as
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { jsx as i, jsxs as u, Fragment as L } from "react/jsx-runtime";
|
|
2
|
+
import { useState as S, useMemo as y } from "react";
|
|
3
|
+
import { n as T } from "../.chunks/emotion-styled.browser.esm.js";
|
|
4
|
+
import { c as k } from "../.chunks/emotion-react.browser.esm.js";
|
|
5
|
+
import o, { defaultTheme as v } from "../theme.js";
|
|
6
|
+
import { getHueFromHex as p, updateTheme as f } from "../themeUtils.js";
|
|
7
|
+
import { camelToKebab as D } from "../camelToKebab.js";
|
|
8
|
+
import { ThemeContext as W } from "../ThemeContext.js";
|
|
9
|
+
import B from "../AppContainer/AppContainer.js";
|
|
10
|
+
import H from "../WithLoading/WithLoading.js";
|
|
11
|
+
import { TopFade as G, BottomFade as N } from "../Overlays/Overlays.js";
|
|
12
|
+
import { SiteBanner as Q } from "../SiteBanner/SiteBanner.js";
|
|
13
|
+
import { P as K } from "../.chunks/AppHeader.js";
|
|
14
|
+
import { u as C } from "../.chunks/useMediaQuery.js";
|
|
15
|
+
const V = ["loading", "hasPagination", "loadingColor", "hasFade", "isTablet"], q = T("div", { shouldForwardProp: (r) => !V.includes(r) })(({ loading: r, hasPagination: m, hasFade: h, loadingColor: n = o.colors.green }) => ({
|
|
16
|
+
...k`
|
|
16
17
|
color: ${o.colors.midnight};
|
|
17
|
-
height: ${
|
|
18
|
+
height: ${r ? "100%" : "auto"};
|
|
18
19
|
padding: 19px;
|
|
19
20
|
padding-top: 36px;
|
|
20
21
|
display: flex;
|
|
21
22
|
flex-direction: column;
|
|
22
|
-
justify-content: ${
|
|
23
|
+
justify-content: ${r ? "center" : "start"};
|
|
23
24
|
align-items: center;
|
|
24
25
|
width: 100%;
|
|
25
26
|
min-height: 100%;
|
|
26
27
|
box-sizing: border-box;
|
|
27
|
-
padding-bottom: ${
|
|
28
|
+
padding-bottom: ${h ? m ? "114px" : "72px" : "19px"};
|
|
28
29
|
> * div {
|
|
29
30
|
box-sizing: border-box;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
.MuiCircularProgress-svg {
|
|
33
|
-
color: ${
|
|
34
|
+
color: ${n};
|
|
34
35
|
}
|
|
35
36
|
`
|
|
36
|
-
})),
|
|
37
|
-
...
|
|
37
|
+
})), E = T("div")(() => ({
|
|
38
|
+
...k`
|
|
38
39
|
border-radius: 8px;
|
|
39
40
|
padding: 0;
|
|
40
41
|
display: flex;
|
|
@@ -47,48 +48,48 @@ const Q = ["loading", "hasPagination", "loadingColor", "hasFade", "isTablet"], N
|
|
|
47
48
|
box-sizing: border-box;
|
|
48
49
|
`
|
|
49
50
|
}));
|
|
50
|
-
function
|
|
51
|
-
return
|
|
51
|
+
function J(r, m) {
|
|
52
|
+
return r == "green" ? v : f(m);
|
|
52
53
|
}
|
|
53
|
-
const
|
|
54
|
-
children:
|
|
55
|
-
loading:
|
|
56
|
-
hasPagination:
|
|
57
|
-
fade:
|
|
58
|
-
siteBannerText:
|
|
54
|
+
const ne = ({
|
|
55
|
+
children: r,
|
|
56
|
+
loading: m = !1,
|
|
57
|
+
hasPagination: h = !1,
|
|
58
|
+
fade: n = !0,
|
|
59
|
+
siteBannerText: l,
|
|
59
60
|
siteBannerBackgroundColor: w,
|
|
60
|
-
siteBannerTextColor:
|
|
61
|
-
userProfileMenuItems:
|
|
61
|
+
siteBannerTextColor: I,
|
|
62
|
+
userProfileMenuItems: M,
|
|
62
63
|
...s
|
|
63
64
|
}) => {
|
|
64
|
-
const
|
|
65
|
-
() =>
|
|
66
|
-
), [
|
|
65
|
+
const P = localStorage.getItem("theme") || "green", b = localStorage.getItem("hue") || p(o.themeOptions.green).toString(), x = C(`(max-width: ${o.screenSizes.mobile})`), F = C(`(max-width: ${o.screenSizes.tablet})`), [e, d] = S(
|
|
66
|
+
() => J(P, parseFloat(b))
|
|
67
|
+
), [$, g] = S({ h: Math.max(parseFloat(b), 0) * 360, s: 0, v: 68, a: 1 }), O = [
|
|
67
68
|
{
|
|
68
69
|
label: "Default Theme",
|
|
69
70
|
onClick: () => {
|
|
70
|
-
localStorage.setItem("theme", "green"), localStorage.setItem("hue",
|
|
71
|
+
localStorage.setItem("theme", "green"), localStorage.setItem("hue", p(o.themeOptions.green).toString()), g((a) => ({ ...a, h: p(o.themeOptions.green) * 360 })), d(v);
|
|
71
72
|
}
|
|
72
73
|
},
|
|
73
74
|
{
|
|
74
75
|
label: "Grayscale",
|
|
75
76
|
onClick: () => {
|
|
76
|
-
localStorage.setItem("theme", "grayscale"), localStorage.setItem("hue", "-1"),
|
|
77
|
-
const
|
|
78
|
-
d(
|
|
77
|
+
localStorage.setItem("theme", "grayscale"), localStorage.setItem("hue", "-1"), g((a) => ({ ...a, h: 0 }));
|
|
78
|
+
const t = f(-1);
|
|
79
|
+
d(t);
|
|
79
80
|
}
|
|
80
81
|
},
|
|
81
82
|
{
|
|
82
83
|
label: "Hue",
|
|
83
|
-
hue:
|
|
84
|
-
onChange: (
|
|
85
|
-
localStorage.setItem("theme", "custom"), localStorage.setItem("hue", (
|
|
86
|
-
const
|
|
87
|
-
d(
|
|
84
|
+
hue: $.h,
|
|
85
|
+
onChange: (t) => {
|
|
86
|
+
localStorage.setItem("theme", "custom"), localStorage.setItem("hue", (t.h / 360).toString()), g((c) => ({ ...c, h: t.h }));
|
|
87
|
+
const a = f(t.h / 360);
|
|
88
|
+
d(a);
|
|
88
89
|
}
|
|
89
90
|
},
|
|
90
|
-
...
|
|
91
|
-
],
|
|
91
|
+
...M || []
|
|
92
|
+
], j = y(
|
|
92
93
|
() => ({
|
|
93
94
|
backgroundPrimary: e.themeLight,
|
|
94
95
|
backgroundSecondary: e.themeLightA,
|
|
@@ -102,7 +103,7 @@ const ie = ({
|
|
|
102
103
|
scrollColor: e.themeShadowA,
|
|
103
104
|
loadingColor: e.themeColor,
|
|
104
105
|
iconColors: {
|
|
105
|
-
icon: /* @__PURE__ */
|
|
106
|
+
icon: /* @__PURE__ */ i(K, {}),
|
|
106
107
|
iconColor: e.themeDark ?? o.colors.darkGreen,
|
|
107
108
|
backgroundColor: e.themeMediumA ?? o.colors.mint
|
|
108
109
|
},
|
|
@@ -111,47 +112,55 @@ const ie = ({
|
|
|
111
112
|
highlightTertiary: e.highlightTertiary
|
|
112
113
|
}),
|
|
113
114
|
[e]
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
), z = y(() => {
|
|
116
|
+
const t = {};
|
|
117
|
+
for (const [a, c] of Object.entries(e)) {
|
|
118
|
+
if (typeof c != "string") continue;
|
|
119
|
+
const A = D(a).replace(/^theme-?/, "");
|
|
120
|
+
t[`--jc-theme-${A}`] = c;
|
|
121
|
+
}
|
|
122
|
+
return t;
|
|
123
|
+
}, [e]);
|
|
124
|
+
return /* @__PURE__ */ i(W.Provider, { value: e, children: /* @__PURE__ */ u("div", { className: "contents", style: z, children: [
|
|
125
|
+
l && /* @__PURE__ */ i(
|
|
126
|
+
Q,
|
|
118
127
|
{
|
|
119
|
-
text:
|
|
128
|
+
text: l,
|
|
120
129
|
backgroundColor: w,
|
|
121
|
-
textColor:
|
|
130
|
+
textColor: I
|
|
122
131
|
}
|
|
123
132
|
),
|
|
124
|
-
/* @__PURE__ */
|
|
125
|
-
|
|
133
|
+
/* @__PURE__ */ i(
|
|
134
|
+
B,
|
|
126
135
|
{
|
|
127
136
|
...s,
|
|
128
|
-
userProfileMenuItems:
|
|
129
|
-
themeColors:
|
|
130
|
-
hasSiteBanner: !!
|
|
131
|
-
children: /* @__PURE__ */
|
|
132
|
-
|
|
137
|
+
userProfileMenuItems: O,
|
|
138
|
+
themeColors: j ?? (s == null ? void 0 : s.themeColors),
|
|
139
|
+
hasSiteBanner: !!l,
|
|
140
|
+
children: /* @__PURE__ */ i(
|
|
141
|
+
q,
|
|
133
142
|
{
|
|
134
143
|
className: "jcPageWrapper",
|
|
135
|
-
loading:
|
|
144
|
+
loading: m,
|
|
136
145
|
loadingColor: e.themeColor,
|
|
137
|
-
hasPagination:
|
|
138
|
-
hasFade:
|
|
139
|
-
isTablet:
|
|
140
|
-
children: /* @__PURE__ */
|
|
141
|
-
|
|
142
|
-
/* @__PURE__ */
|
|
143
|
-
/* @__PURE__ */
|
|
146
|
+
hasPagination: h,
|
|
147
|
+
hasFade: n,
|
|
148
|
+
isTablet: F,
|
|
149
|
+
children: /* @__PURE__ */ u(H, { loading: m, size: x ? 114 : 201, children: [
|
|
150
|
+
n && /* @__PURE__ */ u(L, { children: [
|
|
151
|
+
/* @__PURE__ */ i(G, { color: e.themeLight, hasSiteBanner: !!l }),
|
|
152
|
+
/* @__PURE__ */ i(N, { hasPagination: h, isMobile: x, color: e.themeLight })
|
|
144
153
|
] }),
|
|
145
|
-
/* @__PURE__ */
|
|
154
|
+
/* @__PURE__ */ i(E, { children: r })
|
|
146
155
|
] })
|
|
147
156
|
}
|
|
148
157
|
)
|
|
149
158
|
}
|
|
150
159
|
)
|
|
151
|
-
] });
|
|
160
|
+
] }) });
|
|
152
161
|
};
|
|
153
162
|
export {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
163
|
+
E as MainContentContainer,
|
|
164
|
+
q as PageWrapper,
|
|
165
|
+
ne as default
|
|
157
166
|
};
|
|
@@ -3,6 +3,18 @@ import { PropsWithChildren } from 'react';
|
|
|
3
3
|
interface WithCustomTheme {
|
|
4
4
|
customTheme: CustomThemeProps;
|
|
5
5
|
}
|
|
6
|
+
interface DetailItemContainerProps {
|
|
7
|
+
/** Override the default grey hover shadow with a custom value (e.g. `customTheme.themeShadowC` for a theme-primary glow). */
|
|
8
|
+
hoverShadow?: string;
|
|
9
|
+
/** Disable the hover slide + shadow entirely. Useful for static header cards. */
|
|
10
|
+
disableHover?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
role?: string;
|
|
13
|
+
tabIndex?: number;
|
|
14
|
+
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
15
|
+
onKeyDown?: (e: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
}
|
|
6
18
|
export declare const DetailHeader: import('@emotion/styled').StyledComponent<{
|
|
7
19
|
theme?: import('@emotion/react').Theme;
|
|
8
20
|
as?: React.ElementType;
|
|
@@ -15,11 +27,18 @@ export declare const DetailItemHeader: import('@emotion/styled').StyledComponent
|
|
|
15
27
|
theme?: import('@emotion/react').Theme;
|
|
16
28
|
as?: React.ElementType;
|
|
17
29
|
}, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, {}>;
|
|
18
|
-
export declare const DetailItemContainer: React.FC<PropsWithChildren
|
|
30
|
+
export declare const DetailItemContainer: React.FC<PropsWithChildren<DetailItemContainerProps>>;
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated Prefer the `DetailItemContainer` wrapper. This Emotion-based styled
|
|
33
|
+
* component is kept for backward compatibility with consumers that pass a `customTheme`
|
|
34
|
+
* directly. New code should use `<DetailItemContainer>`.
|
|
35
|
+
*/
|
|
19
36
|
export declare const DetailItemContainerStyles: import('@emotion/styled').StyledComponent<{
|
|
20
37
|
theme?: import('@emotion/react').Theme;
|
|
21
38
|
as?: React.ElementType;
|
|
22
|
-
} & WithCustomTheme
|
|
39
|
+
} & WithCustomTheme & {
|
|
40
|
+
hoverShadow?: string;
|
|
41
|
+
}, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
23
42
|
export interface DetailiconProps {
|
|
24
43
|
iconColor?: string;
|
|
25
44
|
backgroundColor?: string;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { n as
|
|
3
|
-
import { c as
|
|
4
|
-
import
|
|
5
|
-
import { useThemeColors as
|
|
6
|
-
const
|
|
7
|
-
...
|
|
1
|
+
import { jsxs as m, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { n as r } from "../.chunks/emotion-styled.browser.esm.js";
|
|
3
|
+
import { c as n } from "../.chunks/emotion-react.browser.esm.js";
|
|
4
|
+
import o from "../theme.js";
|
|
5
|
+
import { useThemeColors as d } from "../ThemeContext.js";
|
|
6
|
+
const k = r("div")(() => ({
|
|
7
|
+
...n`
|
|
8
8
|
display: flex;
|
|
9
9
|
flex-direction: column;
|
|
10
10
|
padding: 27px 0;
|
|
@@ -14,7 +14,7 @@ const f = i("div")(() => ({
|
|
|
14
14
|
font-size: 36px;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
border-bottom: 1px solid ${
|
|
17
|
+
border-bottom: 1px solid ${o.colors.gray2};
|
|
18
18
|
|
|
19
19
|
button {
|
|
20
20
|
font-size: 1rem;
|
|
@@ -26,9 +26,9 @@ const f = i("div")(() => ({
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
`
|
|
29
|
-
})),
|
|
30
|
-
...
|
|
31
|
-
color: ${
|
|
29
|
+
})), I = r("p")(() => ({
|
|
30
|
+
...n`
|
|
31
|
+
color: ${o.colors.gray};
|
|
32
32
|
line-height: 1;
|
|
33
33
|
display: flex;
|
|
34
34
|
align-items: flex-end;
|
|
@@ -39,8 +39,8 @@ const f = i("div")(() => ({
|
|
|
39
39
|
width: 18px;
|
|
40
40
|
}
|
|
41
41
|
`
|
|
42
|
-
})),
|
|
43
|
-
...
|
|
42
|
+
})), D = r("h2")(() => ({
|
|
43
|
+
...n`
|
|
44
44
|
font-size: 27px;
|
|
45
45
|
font-weight: 600;
|
|
46
46
|
text-align: left;
|
|
@@ -53,18 +53,54 @@ const f = i("div")(() => ({
|
|
|
53
53
|
margin-right: 9px;
|
|
54
54
|
}
|
|
55
55
|
`
|
|
56
|
-
})),
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
...
|
|
63
|
-
|
|
56
|
+
})), f = "relative overflow-hidden flex flex-col gap-[13px] bg-jc-very-light-gray rounded-md p-[21px] mb-[15px] transition-all duration-[313ms] ease-out", u = "hover:translate-x-[5px] hover:shadow-[var(--detail-hover-shadow)]", A = ({
|
|
57
|
+
children: e,
|
|
58
|
+
hoverShadow: t,
|
|
59
|
+
disableHover: i = !1,
|
|
60
|
+
className: a = "",
|
|
61
|
+
style: p,
|
|
62
|
+
...c
|
|
63
|
+
}) => {
|
|
64
|
+
const s = d(), g = `linear-gradient(90deg, ${o.colors.gold}, ${s.themeIconBackgroundA})`, x = `linear-gradient(180deg, ${o.colors.gold}, ${s.themeIconBackgroundA})`, h = {
|
|
65
|
+
...p ?? {},
|
|
66
|
+
"--detail-hover-shadow": t ?? "0 5px 15px rgba(0, 0, 0, 0.1)"
|
|
67
|
+
};
|
|
68
|
+
return /* @__PURE__ */ m(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
...c,
|
|
72
|
+
className: [f, i ? "" : u, a].join(" "),
|
|
73
|
+
style: h,
|
|
74
|
+
children: [
|
|
75
|
+
/* @__PURE__ */ l(
|
|
76
|
+
"div",
|
|
77
|
+
{
|
|
78
|
+
"aria-hidden": !0,
|
|
79
|
+
className: "absolute top-0 left-0 w-full h-[3px] pointer-events-none",
|
|
80
|
+
style: { background: g }
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
/* @__PURE__ */ l(
|
|
84
|
+
"div",
|
|
85
|
+
{
|
|
86
|
+
"aria-hidden": !0,
|
|
87
|
+
className: "absolute top-0 left-0 w-[3px] h-full pointer-events-none",
|
|
88
|
+
style: { background: x }
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
e
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}, j = r("div", {
|
|
96
|
+
shouldForwardProp: (e) => !["customTheme", "hoverShadow"].includes(e)
|
|
97
|
+
})(({ customTheme: e, hoverShadow: t }) => ({
|
|
98
|
+
...n`
|
|
99
|
+
font-family: ${o.fonts.roboto};
|
|
64
100
|
display: flex;
|
|
65
101
|
flex-direction: column;
|
|
66
102
|
gap: 13px;
|
|
67
|
-
background: ${
|
|
103
|
+
background: ${o.colors.veryLightGray};
|
|
68
104
|
border-radius: 6px;
|
|
69
105
|
padding: 21px;
|
|
70
106
|
margin-bottom: 15px;
|
|
@@ -73,7 +109,7 @@ const f = i("div")(() => ({
|
|
|
73
109
|
overflow: hidden;
|
|
74
110
|
|
|
75
111
|
p {
|
|
76
|
-
color: ${
|
|
112
|
+
color: ${o.colors.gray};
|
|
77
113
|
font-size: 18px;
|
|
78
114
|
line-height: 1;
|
|
79
115
|
display: flex;
|
|
@@ -87,17 +123,17 @@ const f = i("div")(() => ({
|
|
|
87
123
|
|
|
88
124
|
&:hover {
|
|
89
125
|
transform: translateX(5px);
|
|
90
|
-
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
|
|
126
|
+
box-shadow: ${t ?? "0 5px 15px rgba(0, 0, 0, 0.1)"};
|
|
91
127
|
}
|
|
92
128
|
|
|
93
129
|
&::before {
|
|
94
130
|
content: '';
|
|
95
131
|
position: absolute;
|
|
96
|
-
top:
|
|
132
|
+
top: 0;
|
|
97
133
|
left: 0;
|
|
98
134
|
width: 100%;
|
|
99
|
-
height:
|
|
100
|
-
background: linear-gradient(90deg, ${
|
|
135
|
+
height: 3px;
|
|
136
|
+
background: linear-gradient(90deg, ${o.colors.gold}, ${e.themeIconBackgroundA});
|
|
101
137
|
}
|
|
102
138
|
|
|
103
139
|
&::after {
|
|
@@ -107,22 +143,22 @@ const f = i("div")(() => ({
|
|
|
107
143
|
left: 0;
|
|
108
144
|
width: 3px;
|
|
109
145
|
height: 100%;
|
|
110
|
-
background: linear-gradient(180deg, ${
|
|
146
|
+
background: linear-gradient(180deg, ${o.colors.gold}, ${e.themeIconBackgroundA});
|
|
111
147
|
}
|
|
112
148
|
`
|
|
113
|
-
})),
|
|
149
|
+
})), B = ({
|
|
114
150
|
backgroundColor: e,
|
|
115
|
-
iconColor:
|
|
116
|
-
children:
|
|
151
|
+
iconColor: t,
|
|
152
|
+
children: i
|
|
117
153
|
}) => {
|
|
118
|
-
const
|
|
119
|
-
return /* @__PURE__ */
|
|
120
|
-
},
|
|
121
|
-
({ iconColor: e =
|
|
122
|
-
...
|
|
154
|
+
const a = d();
|
|
155
|
+
return /* @__PURE__ */ l(b, { backgroundColor: e, iconColor: t, customTheme: a, children: i });
|
|
156
|
+
}, b = r("div")(
|
|
157
|
+
({ iconColor: e = o.colors.white, backgroundColor: t, customTheme: i }) => ({
|
|
158
|
+
...n`
|
|
123
159
|
width: 72px;
|
|
124
160
|
height: 72px;
|
|
125
|
-
background-color: ${
|
|
161
|
+
background-color: ${t || i.themeDark};
|
|
126
162
|
color: ${e};
|
|
127
163
|
border-radius: 36px;
|
|
128
164
|
display: flex;
|
|
@@ -133,11 +169,11 @@ const f = i("div")(() => ({
|
|
|
133
169
|
})
|
|
134
170
|
);
|
|
135
171
|
export {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
172
|
+
k as DetailHeader,
|
|
173
|
+
B as DetailHeaderIcon,
|
|
174
|
+
b as DetailHeaderIconStyles,
|
|
175
|
+
A as DetailItemContainer,
|
|
176
|
+
j as DetailItemContainerStyles,
|
|
177
|
+
D as DetailItemHeader,
|
|
178
|
+
I as DetailSubtext
|
|
143
179
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { default as React, PropsWithChildren } from 'react';
|
|
2
|
+
export interface ExpandableSectionProps {
|
|
3
|
+
/** When true, the section animates from 0fr to 1fr (collapsed to expanded). */
|
|
4
|
+
expanded: boolean;
|
|
5
|
+
/** Optional top margin when expanded. Defaults to '0.25rem'. */
|
|
6
|
+
expandedMarginTop?: string;
|
|
7
|
+
/** Duration of the expand/collapse transition. Defaults to '300ms'. */
|
|
8
|
+
duration?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Smooth height-animated expand/collapse using the grid-template-rows 0fr ↔ 1fr
|
|
12
|
+
* trick. Renders children inside an overflow-hidden wrapper so they're clipped
|
|
13
|
+
* during collapse without an explicit max-height calculation.
|
|
14
|
+
*
|
|
15
|
+
* Used by ClientMatchCard, IntakeMatchHeader, and similar cards that toggle
|
|
16
|
+
* expanded body content via a chevron.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ExpandableSection: React.FC<PropsWithChildren<ExpandableSectionProps>>;
|
|
19
|
+
export default ExpandableSection;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
const r = ({
|
|
3
|
+
expanded: e,
|
|
4
|
+
expandedMarginTop: t = "0.25rem",
|
|
5
|
+
duration: o = "300ms",
|
|
6
|
+
children: a
|
|
7
|
+
}) => /* @__PURE__ */ s(
|
|
8
|
+
"div",
|
|
9
|
+
{
|
|
10
|
+
className: "grid",
|
|
11
|
+
style: {
|
|
12
|
+
gridTemplateRows: e ? "1fr" : "0fr",
|
|
13
|
+
opacity: e ? 1 : 0,
|
|
14
|
+
marginTop: e ? t : 0,
|
|
15
|
+
transition: `grid-template-rows ${o} ease-out, opacity ${o} ease-out, margin-top ${o} ease-out`
|
|
16
|
+
},
|
|
17
|
+
children: /* @__PURE__ */ s("div", { className: "overflow-hidden", children: a })
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
export {
|
|
21
|
+
r as ExpandableSection,
|
|
22
|
+
r as default
|
|
23
|
+
};
|
package/FormFields/FormFields.js
CHANGED
|
@@ -22,15 +22,21 @@ import "../InfoCard/InfoCard.js";
|
|
|
22
22
|
import "../LabeledInput/LabeledInput.js";
|
|
23
23
|
import "../List/List.js";
|
|
24
24
|
import "../LogoLoop/LogoLoop.js";
|
|
25
|
+
import "../Pagination/Pagination.js";
|
|
25
26
|
import "../SiteBanner/SiteBanner.js";
|
|
26
27
|
import "../WithLabel/WithLabel.js";
|
|
27
28
|
import "../WithLoading/WithLoading.js";
|
|
28
29
|
import "../RecordCard/RecordCard.js";
|
|
30
|
+
import "../theme.js";
|
|
31
|
+
import "../ThemeContext.js";
|
|
32
|
+
import "../DetailPageComponents/DetailPageComponents.js";
|
|
33
|
+
import "../Toast/Toast.js";
|
|
29
34
|
import "../.chunks/AppHeader.js";
|
|
30
35
|
import "../EditableInfoCard/EditableInfoCard.js";
|
|
31
36
|
import "../Nav/Nav.js";
|
|
32
37
|
import "../AppContainer/AppContainer.js";
|
|
33
|
-
|
|
38
|
+
import "../DefaultTemplate/DefaultTemplate.js";
|
|
39
|
+
const Fo = ({
|
|
34
40
|
title: a,
|
|
35
41
|
fields: h,
|
|
36
42
|
columns: f,
|
|
@@ -39,20 +45,20 @@ const eo = ({
|
|
|
39
45
|
noLabel: x = !1,
|
|
40
46
|
checkboxContainer: F = !1,
|
|
41
47
|
compact: v = !1,
|
|
42
|
-
formDefaults:
|
|
48
|
+
formDefaults: l,
|
|
43
49
|
onChange: d
|
|
44
50
|
}) => {
|
|
45
51
|
const D = G();
|
|
46
52
|
return /* @__PURE__ */ b(T, { children: [
|
|
47
53
|
a && /* @__PURE__ */ m(g, { children: a }),
|
|
48
|
-
!F && /* @__PURE__ */ m(j, { columns: f ?? (D ? 2 : 3), columnsOverride: w, gap: C, children: h.map(({ key: r, label:
|
|
49
|
-
const i =
|
|
54
|
+
!F && /* @__PURE__ */ m(j, { columns: f ?? (D ? 2 : 3), columnsOverride: w, gap: C, children: h.map(({ key: r, label: n, type: o, limit: c, options: e, defaultValue: t, ...u }) => {
|
|
55
|
+
const i = l[r] !== void 0 ? l[r] : t !== void 0 ? t : o === "multiDropdown" ? [] : o === "checkbox" ? !1 : "";
|
|
50
56
|
return v ? /* @__PURE__ */ b(V, { column: !0, gap: "21px", children: [
|
|
51
|
-
/* @__PURE__ */ m(I, { children:
|
|
57
|
+
/* @__PURE__ */ m(I, { children: n }),
|
|
52
58
|
/* @__PURE__ */ m(
|
|
53
59
|
s,
|
|
54
60
|
{
|
|
55
|
-
onChange: (
|
|
61
|
+
onChange: (p) => d(r, p, o),
|
|
56
62
|
type: o,
|
|
57
63
|
limit: c,
|
|
58
64
|
...o === "checkbox" ? { checked: !!i } : { value: i },
|
|
@@ -65,8 +71,8 @@ const eo = ({
|
|
|
65
71
|
] }, r) : /* @__PURE__ */ m(
|
|
66
72
|
s,
|
|
67
73
|
{
|
|
68
|
-
onChange: (
|
|
69
|
-
label:
|
|
74
|
+
onChange: (p) => d(r, p, o),
|
|
75
|
+
label: n,
|
|
70
76
|
type: o,
|
|
71
77
|
limit: c,
|
|
72
78
|
...o === "checkbox" ? { checked: !!i } : { value: i },
|
|
@@ -78,13 +84,13 @@ const eo = ({
|
|
|
78
84
|
r
|
|
79
85
|
);
|
|
80
86
|
}) }),
|
|
81
|
-
F && /* @__PURE__ */ m(L, { children: h.map(({ key: r, label:
|
|
82
|
-
const i =
|
|
87
|
+
F && /* @__PURE__ */ m(L, { children: h.map(({ key: r, label: n, type: o, limit: c, options: e, defaultValue: t, ...u }) => {
|
|
88
|
+
const i = l[r] !== void 0 ? l[r] : t !== void 0 ? t : o === "multiDropdown" ? [] : o === "checkbox" ? !1 : "";
|
|
83
89
|
return /* @__PURE__ */ m(
|
|
84
90
|
s,
|
|
85
91
|
{
|
|
86
|
-
onChange: (
|
|
87
|
-
label:
|
|
92
|
+
onChange: (p) => d(r, p, o),
|
|
93
|
+
label: n,
|
|
88
94
|
type: o,
|
|
89
95
|
limit: c,
|
|
90
96
|
...o === "checkbox" ? { checked: !!i } : { defaultValue: i },
|
|
@@ -99,5 +105,5 @@ const eo = ({
|
|
|
99
105
|
] });
|
|
100
106
|
};
|
|
101
107
|
export {
|
|
102
|
-
|
|
108
|
+
Fo as default
|
|
103
109
|
};
|
package/Pill/Pill.d.ts
CHANGED
|
@@ -3,6 +3,19 @@ export interface PillProps {
|
|
|
3
3
|
textColor?: string;
|
|
4
4
|
type?: 'primary' | 'secondary';
|
|
5
5
|
squared?: boolean;
|
|
6
|
+
/** Optional icon rendered before the children. */
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Size variant.
|
|
10
|
+
* - `'sm'` (default): 13px text, 3px×13px padding — original Pill size.
|
|
11
|
+
* - `'md'`: 16px text, 8px×14px padding — for prominent badges (e.g. "Currently assigned to client #N").
|
|
12
|
+
*/
|
|
13
|
+
size?: 'sm' | 'md';
|
|
14
|
+
/**
|
|
15
|
+
* Optional 1px ring around the pill, using the textColor (or a custom color string).
|
|
16
|
+
* Use `true` for the default textColor-based ring, or pass a CSS color for a custom ring.
|
|
17
|
+
*/
|
|
18
|
+
ring?: boolean | string;
|
|
6
19
|
}
|
|
7
20
|
export declare const Pill: React.FC<PillProps & {
|
|
8
21
|
children: React.ReactNode;
|