@tonyarbor/components 0.2.1 → 0.6.0
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/dist/Avatar.d.mts +42 -0
- package/dist/Avatar.d.ts +42 -0
- package/dist/Avatar.js +158 -0
- package/dist/Avatar.js.map +1 -0
- package/dist/Avatar.mjs +7 -0
- package/dist/Avatar.mjs.map +1 -0
- package/dist/Breadcrumbs.d.mts +51 -0
- package/dist/Breadcrumbs.d.ts +51 -0
- package/dist/Breadcrumbs.js +276 -0
- package/dist/Breadcrumbs.js.map +1 -0
- package/dist/Breadcrumbs.mjs +7 -0
- package/dist/Breadcrumbs.mjs.map +1 -0
- package/dist/ButtonSegmented.d.mts +61 -0
- package/dist/ButtonSegmented.d.ts +61 -0
- package/dist/ButtonSegmented.js +167 -0
- package/dist/ButtonSegmented.js.map +1 -0
- package/dist/ButtonSegmented.mjs +7 -0
- package/dist/ButtonSegmented.mjs.map +1 -0
- package/dist/ListRow.d.mts +72 -0
- package/dist/ListRow.d.ts +72 -0
- package/dist/ListRow.js +194 -0
- package/dist/ListRow.js.map +1 -0
- package/dist/ListRow.mjs +7 -0
- package/dist/ListRow.mjs.map +1 -0
- package/dist/ListRowMultiLine.d.mts +56 -0
- package/dist/ListRowMultiLine.d.ts +56 -0
- package/dist/ListRowMultiLine.js +182 -0
- package/dist/ListRowMultiLine.js.map +1 -0
- package/dist/ListRowMultiLine.mjs +7 -0
- package/dist/ListRowMultiLine.mjs.map +1 -0
- package/dist/Logo.d.mts +39 -0
- package/dist/Logo.d.ts +39 -0
- package/dist/Logo.js +119 -0
- package/dist/Logo.js.map +1 -0
- package/dist/Logo.mjs +7 -0
- package/dist/Logo.mjs.map +1 -0
- package/dist/SearchGlobal.d.mts +45 -0
- package/dist/SearchGlobal.d.ts +45 -0
- package/dist/SearchGlobal.js +209 -0
- package/dist/SearchGlobal.js.map +1 -0
- package/dist/SearchGlobal.mjs +7 -0
- package/dist/SearchGlobal.mjs.map +1 -0
- package/dist/SearchOnPage.d.mts +45 -0
- package/dist/SearchOnPage.d.ts +45 -0
- package/dist/SearchOnPage.js +171 -0
- package/dist/SearchOnPage.js.map +1 -0
- package/dist/SearchOnPage.mjs +7 -0
- package/dist/SearchOnPage.mjs.map +1 -0
- package/dist/Section.d.mts +57 -0
- package/dist/Section.d.ts +57 -0
- package/dist/Section.js +72 -0
- package/dist/Section.js.map +1 -0
- package/dist/Section.mjs +7 -0
- package/dist/Section.mjs.map +1 -0
- package/dist/SectionHeading.d.mts +111 -0
- package/dist/SectionHeading.d.ts +111 -0
- package/dist/SectionHeading.js +385 -0
- package/dist/SectionHeading.js.map +1 -0
- package/dist/SectionHeading.mjs +8 -0
- package/dist/SectionHeading.mjs.map +1 -0
- package/dist/SectionHeadingInteractive.d.mts +67 -0
- package/dist/SectionHeadingInteractive.d.ts +67 -0
- package/dist/SectionHeadingInteractive.js +225 -0
- package/dist/SectionHeadingInteractive.js.map +1 -0
- package/dist/SectionHeadingInteractive.mjs +7 -0
- package/dist/SectionHeadingInteractive.mjs.map +1 -0
- package/dist/SectionIcon.d.mts +35 -0
- package/dist/SectionIcon.d.ts +35 -0
- package/dist/SectionIcon.js +142 -0
- package/dist/SectionIcon.js.map +1 -0
- package/dist/SectionIcon.mjs +7 -0
- package/dist/SectionIcon.mjs.map +1 -0
- package/dist/SubSectionHeading.d.mts +75 -0
- package/dist/SubSectionHeading.d.ts +75 -0
- package/dist/SubSectionHeading.js +225 -0
- package/dist/SubSectionHeading.js.map +1 -0
- package/dist/SubSectionHeading.mjs +7 -0
- package/dist/SubSectionHeading.mjs.map +1 -0
- package/dist/SubSectionInteractive.d.mts +65 -0
- package/dist/SubSectionInteractive.d.ts +65 -0
- package/dist/SubSectionInteractive.js +211 -0
- package/dist/SubSectionInteractive.js.map +1 -0
- package/dist/SubSectionInteractive.mjs +7 -0
- package/dist/SubSectionInteractive.mjs.map +1 -0
- package/dist/chunk-7NYBJKJS.mjs +106 -0
- package/dist/chunk-7NYBJKJS.mjs.map +1 -0
- package/dist/chunk-ALLCJATI.mjs +189 -0
- package/dist/chunk-ALLCJATI.mjs.map +1 -0
- package/dist/chunk-B7RX3TPX.mjs +135 -0
- package/dist/chunk-B7RX3TPX.mjs.map +1 -0
- package/dist/chunk-F6JVEIWC.mjs +158 -0
- package/dist/chunk-F6JVEIWC.mjs.map +1 -0
- package/dist/chunk-GHATS25Y.mjs +249 -0
- package/dist/chunk-GHATS25Y.mjs.map +1 -0
- package/dist/chunk-ILLGBZ6R.mjs +131 -0
- package/dist/chunk-ILLGBZ6R.mjs.map +1 -0
- package/dist/chunk-JSG27ZZS.mjs +122 -0
- package/dist/chunk-JSG27ZZS.mjs.map +1 -0
- package/dist/chunk-NNYU4DPD.mjs +83 -0
- package/dist/chunk-NNYU4DPD.mjs.map +1 -0
- package/dist/chunk-ODKT7LGV.mjs +146 -0
- package/dist/chunk-ODKT7LGV.mjs.map +1 -0
- package/dist/chunk-RL4G7MR3.mjs +189 -0
- package/dist/chunk-RL4G7MR3.mjs.map +1 -0
- package/dist/chunk-RQP6ZGD7.mjs +240 -0
- package/dist/chunk-RQP6ZGD7.mjs.map +1 -0
- package/dist/chunk-UPBHDBAK.mjs +173 -0
- package/dist/chunk-UPBHDBAK.mjs.map +1 -0
- package/dist/chunk-X2CW5GF3.mjs +175 -0
- package/dist/chunk-X2CW5GF3.mjs.map +1 -0
- package/dist/chunk-YJ36ZZJQ.mjs +36 -0
- package/dist/chunk-YJ36ZZJQ.mjs.map +1 -0
- package/dist/index.d.mts +14 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +2102 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +56 -0
- package/package.json +71 -1
package/dist/index.js
CHANGED
|
@@ -30,16 +30,30 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
+
Avatar: () => Avatar,
|
|
33
34
|
Banner: () => Banner,
|
|
35
|
+
Breadcrumbs: () => Breadcrumbs,
|
|
34
36
|
Button: () => Button,
|
|
37
|
+
ButtonSegmented: () => ButtonSegmented,
|
|
35
38
|
Card: () => Card,
|
|
36
39
|
Checkbox: () => Checkbox,
|
|
37
40
|
Combobox: () => Combobox,
|
|
38
41
|
DatePicker: () => DatePicker,
|
|
39
42
|
Input: () => Input,
|
|
43
|
+
ListRow: () => ListRow,
|
|
44
|
+
ListRowMultiLine: () => ListRowMultiLine,
|
|
45
|
+
Logo: () => Logo,
|
|
40
46
|
NumericInput: () => NumericInput,
|
|
41
47
|
Pagination: () => Pagination,
|
|
42
48
|
Radio: () => Radio,
|
|
49
|
+
SearchGlobal: () => SearchGlobal,
|
|
50
|
+
SearchOnPage: () => SearchOnPage,
|
|
51
|
+
Section: () => Section,
|
|
52
|
+
SectionHeading: () => SectionHeading,
|
|
53
|
+
SectionHeadingInteractive: () => SectionHeadingInteractive,
|
|
54
|
+
SectionIcon: () => SectionIcon,
|
|
55
|
+
SubSectionHeading: () => SubSectionHeading,
|
|
56
|
+
SubSectionInteractive: () => SubSectionInteractive,
|
|
43
57
|
Table: () => Table,
|
|
44
58
|
TableControls: () => TableControls,
|
|
45
59
|
TableFooterPagination: () => TableFooterPagination,
|
|
@@ -4042,18 +4056,2106 @@ var Table = React19.forwardRef(
|
|
|
4042
4056
|
}
|
|
4043
4057
|
);
|
|
4044
4058
|
Table.displayName = "Table";
|
|
4059
|
+
|
|
4060
|
+
// src/Avatar/Avatar.tsx
|
|
4061
|
+
var React20 = __toESM(require("react"));
|
|
4062
|
+
var import_lucide_react10 = require("lucide-react");
|
|
4063
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
4064
|
+
var sizeConfig = {
|
|
4065
|
+
small: {
|
|
4066
|
+
size: 20,
|
|
4067
|
+
fontSize: 0,
|
|
4068
|
+
// Too small for initials
|
|
4069
|
+
fontWeight: 400,
|
|
4070
|
+
iconSize: 12,
|
|
4071
|
+
borderRadius: "99px"
|
|
4072
|
+
},
|
|
4073
|
+
medium: {
|
|
4074
|
+
size: 32,
|
|
4075
|
+
fontSize: 13,
|
|
4076
|
+
fontWeight: 400,
|
|
4077
|
+
iconSize: 16,
|
|
4078
|
+
borderRadius: "99px"
|
|
4079
|
+
},
|
|
4080
|
+
large: {
|
|
4081
|
+
size: 48,
|
|
4082
|
+
fontSize: 13,
|
|
4083
|
+
fontWeight: 400,
|
|
4084
|
+
iconSize: 24,
|
|
4085
|
+
borderRadius: "4px"
|
|
4086
|
+
},
|
|
4087
|
+
"extra-large": {
|
|
4088
|
+
size: 96,
|
|
4089
|
+
fontSize: 27,
|
|
4090
|
+
fontWeight: 600,
|
|
4091
|
+
iconSize: 48,
|
|
4092
|
+
borderRadius: "8px"
|
|
4093
|
+
}
|
|
4094
|
+
};
|
|
4095
|
+
var Avatar = React20.forwardRef(
|
|
4096
|
+
({
|
|
4097
|
+
size = "medium",
|
|
4098
|
+
src,
|
|
4099
|
+
initials,
|
|
4100
|
+
alt = "Avatar",
|
|
4101
|
+
className,
|
|
4102
|
+
style,
|
|
4103
|
+
"data-testid": dataTestId
|
|
4104
|
+
}, ref) => {
|
|
4105
|
+
const [isHovered, setIsHovered] = React20.useState(false);
|
|
4106
|
+
const [imageError, setImageError] = React20.useState(false);
|
|
4107
|
+
const config = sizeConfig[size];
|
|
4108
|
+
const hasHoverState = size === "small";
|
|
4109
|
+
const containerStyles6 = {
|
|
4110
|
+
width: `${config.size}px`,
|
|
4111
|
+
height: `${config.size}px`,
|
|
4112
|
+
borderRadius: config.borderRadius,
|
|
4113
|
+
border: "1px solid #efefef",
|
|
4114
|
+
overflow: "hidden",
|
|
4115
|
+
position: "relative",
|
|
4116
|
+
backgroundColor: "#f8f8f8",
|
|
4117
|
+
display: "flex",
|
|
4118
|
+
alignItems: "center",
|
|
4119
|
+
justifyContent: "center",
|
|
4120
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
4121
|
+
cursor: "default",
|
|
4122
|
+
boxSizing: "border-box",
|
|
4123
|
+
...style
|
|
4124
|
+
};
|
|
4125
|
+
const hoverOverlayStyles = {
|
|
4126
|
+
position: "absolute",
|
|
4127
|
+
inset: 0,
|
|
4128
|
+
pointerEvents: "none",
|
|
4129
|
+
boxShadow: isHovered && hasHoverState ? "inset 0px 4px 100px 0px rgba(32, 32, 32, 0.3)" : "none",
|
|
4130
|
+
borderRadius: config.borderRadius,
|
|
4131
|
+
transition: "box-shadow 0.2s ease-in-out"
|
|
4132
|
+
};
|
|
4133
|
+
const imageStyles = {
|
|
4134
|
+
width: "100%",
|
|
4135
|
+
height: "100%",
|
|
4136
|
+
objectFit: "cover"
|
|
4137
|
+
};
|
|
4138
|
+
const initialsStyles = {
|
|
4139
|
+
fontSize: `${config.fontSize}px`,
|
|
4140
|
+
fontWeight: config.fontWeight,
|
|
4141
|
+
color: "#2f2f2f",
|
|
4142
|
+
lineHeight: 1.5,
|
|
4143
|
+
textAlign: "center",
|
|
4144
|
+
userSelect: "none"
|
|
4145
|
+
};
|
|
4146
|
+
const showImage = src && !imageError;
|
|
4147
|
+
const showInitials = !showImage && initials && size !== "small";
|
|
4148
|
+
const showPlaceholder = !showImage && !showInitials;
|
|
4149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
4150
|
+
"div",
|
|
4151
|
+
{
|
|
4152
|
+
ref,
|
|
4153
|
+
className,
|
|
4154
|
+
style: containerStyles6,
|
|
4155
|
+
onMouseEnter: () => setIsHovered(true),
|
|
4156
|
+
onMouseLeave: () => setIsHovered(false),
|
|
4157
|
+
"data-testid": dataTestId,
|
|
4158
|
+
children: [
|
|
4159
|
+
showImage && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4160
|
+
"img",
|
|
4161
|
+
{
|
|
4162
|
+
src,
|
|
4163
|
+
alt,
|
|
4164
|
+
style: imageStyles,
|
|
4165
|
+
onError: () => setImageError(true)
|
|
4166
|
+
}
|
|
4167
|
+
),
|
|
4168
|
+
showInitials && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { style: initialsStyles, children: initials.slice(0, 2).toUpperCase() }),
|
|
4169
|
+
showPlaceholder && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react10.User, { size: config.iconSize, color: "#d1d1d1", strokeWidth: 2 }),
|
|
4170
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { style: hoverOverlayStyles })
|
|
4171
|
+
]
|
|
4172
|
+
}
|
|
4173
|
+
);
|
|
4174
|
+
}
|
|
4175
|
+
);
|
|
4176
|
+
Avatar.displayName = "Avatar";
|
|
4177
|
+
|
|
4178
|
+
// src/SearchGlobal/SearchGlobal.tsx
|
|
4179
|
+
var React21 = __toESM(require("react"));
|
|
4180
|
+
var import_lucide_react11 = require("lucide-react");
|
|
4181
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
4182
|
+
var SearchGlobal = React21.forwardRef(
|
|
4183
|
+
({
|
|
4184
|
+
value = "",
|
|
4185
|
+
onChange,
|
|
4186
|
+
onSubmit,
|
|
4187
|
+
onClear,
|
|
4188
|
+
placeholder = "Search",
|
|
4189
|
+
className,
|
|
4190
|
+
style,
|
|
4191
|
+
"data-testid": dataTestId
|
|
4192
|
+
}, ref) => {
|
|
4193
|
+
const [isFocused, setIsFocused] = React21.useState(false);
|
|
4194
|
+
const [isHovered, setIsHovered] = React21.useState(false);
|
|
4195
|
+
const inputRef = React21.useRef(null);
|
|
4196
|
+
React21.useImperativeHandle(ref, () => inputRef.current);
|
|
4197
|
+
const handleFocus = () => {
|
|
4198
|
+
setIsFocused(true);
|
|
4199
|
+
};
|
|
4200
|
+
const handleBlur = () => {
|
|
4201
|
+
setIsFocused(false);
|
|
4202
|
+
};
|
|
4203
|
+
const handleChange = (e) => {
|
|
4204
|
+
onChange?.(e.target.value);
|
|
4205
|
+
};
|
|
4206
|
+
const handleKeyDown = (e) => {
|
|
4207
|
+
if (e.key === "Enter") {
|
|
4208
|
+
onSubmit?.(value);
|
|
4209
|
+
}
|
|
4210
|
+
};
|
|
4211
|
+
const handleClear = () => {
|
|
4212
|
+
onChange?.("");
|
|
4213
|
+
onClear?.();
|
|
4214
|
+
inputRef.current?.focus();
|
|
4215
|
+
};
|
|
4216
|
+
const containerStyles6 = {
|
|
4217
|
+
position: "relative",
|
|
4218
|
+
width: isFocused ? "300px" : "160px",
|
|
4219
|
+
height: "32px",
|
|
4220
|
+
backgroundColor: isFocused ? "#ffffff" : isHovered ? "#efefef" : "#f8f8f8",
|
|
4221
|
+
borderRadius: "16px",
|
|
4222
|
+
padding: "8px 16px",
|
|
4223
|
+
display: "flex",
|
|
4224
|
+
alignItems: "center",
|
|
4225
|
+
gap: isFocused ? "8px" : "8px",
|
|
4226
|
+
cursor: "text",
|
|
4227
|
+
transition: "all 0.2s ease-in-out",
|
|
4228
|
+
boxSizing: "border-box",
|
|
4229
|
+
border: isFocused ? "1px solid #efefef" : "none",
|
|
4230
|
+
boxShadow: isFocused ? "0px 0px 0px 3px #3cad51" : "none",
|
|
4231
|
+
marginLeft: isFocused ? "-140px" : "0",
|
|
4232
|
+
// Expand to the left
|
|
4233
|
+
...style
|
|
4234
|
+
};
|
|
4235
|
+
const iconContainerStyles2 = {
|
|
4236
|
+
display: "flex",
|
|
4237
|
+
alignItems: "center",
|
|
4238
|
+
justifyContent: "center",
|
|
4239
|
+
flexShrink: 0,
|
|
4240
|
+
padding: "2px"
|
|
4241
|
+
};
|
|
4242
|
+
const inputStyles5 = {
|
|
4243
|
+
border: "none",
|
|
4244
|
+
outline: "none",
|
|
4245
|
+
backgroundColor: "transparent",
|
|
4246
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
4247
|
+
fontSize: "13px",
|
|
4248
|
+
fontWeight: 400,
|
|
4249
|
+
color: "#2f2f2f",
|
|
4250
|
+
lineHeight: "1.5",
|
|
4251
|
+
flex: 1,
|
|
4252
|
+
width: "100%",
|
|
4253
|
+
minWidth: 0
|
|
4254
|
+
};
|
|
4255
|
+
const keyboardShortcutStyles = {
|
|
4256
|
+
display: "flex",
|
|
4257
|
+
alignItems: "center",
|
|
4258
|
+
gap: "0px",
|
|
4259
|
+
flexShrink: 0
|
|
4260
|
+
};
|
|
4261
|
+
const keyStyles = {
|
|
4262
|
+
border: "1px solid #2f2f2f",
|
|
4263
|
+
borderRadius: "5px",
|
|
4264
|
+
padding: "0px 3px",
|
|
4265
|
+
height: "16px",
|
|
4266
|
+
display: "flex",
|
|
4267
|
+
alignItems: "center",
|
|
4268
|
+
justifyContent: "center",
|
|
4269
|
+
fontFamily: "'Work Sans', sans-serif",
|
|
4270
|
+
fontSize: "8px",
|
|
4271
|
+
fontWeight: 400,
|
|
4272
|
+
color: "#2f2f2f",
|
|
4273
|
+
letterSpacing: "-0.08px",
|
|
4274
|
+
lineHeight: "1.5",
|
|
4275
|
+
minWidth: "16px"
|
|
4276
|
+
};
|
|
4277
|
+
const plusStyles = {
|
|
4278
|
+
fontFamily: "'Work Sans', sans-serif",
|
|
4279
|
+
fontSize: "8px",
|
|
4280
|
+
fontWeight: 400,
|
|
4281
|
+
color: "#2f2f2f",
|
|
4282
|
+
letterSpacing: "-0.08px",
|
|
4283
|
+
lineHeight: "1.5",
|
|
4284
|
+
padding: "0 2px"
|
|
4285
|
+
};
|
|
4286
|
+
const clearButtonStyles = {
|
|
4287
|
+
display: "flex",
|
|
4288
|
+
alignItems: "center",
|
|
4289
|
+
justifyContent: "center",
|
|
4290
|
+
flexShrink: 0,
|
|
4291
|
+
width: "16px",
|
|
4292
|
+
height: "16px",
|
|
4293
|
+
cursor: "pointer",
|
|
4294
|
+
border: "none",
|
|
4295
|
+
background: "none",
|
|
4296
|
+
padding: 0
|
|
4297
|
+
};
|
|
4298
|
+
const showKeyboardShortcut = isHovered && !isFocused;
|
|
4299
|
+
const showClearButton = isFocused;
|
|
4300
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
4301
|
+
"div",
|
|
4302
|
+
{
|
|
4303
|
+
className,
|
|
4304
|
+
style: containerStyles6,
|
|
4305
|
+
onMouseEnter: () => setIsHovered(true),
|
|
4306
|
+
onMouseLeave: () => setIsHovered(false),
|
|
4307
|
+
onClick: () => inputRef.current?.focus(),
|
|
4308
|
+
"data-testid": dataTestId,
|
|
4309
|
+
children: [
|
|
4310
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: iconContainerStyles2, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react11.Search, { size: 12, color: "#2f2f2f", strokeWidth: 2 }) }),
|
|
4311
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4312
|
+
"input",
|
|
4313
|
+
{
|
|
4314
|
+
ref: inputRef,
|
|
4315
|
+
type: "text",
|
|
4316
|
+
value,
|
|
4317
|
+
onChange: handleChange,
|
|
4318
|
+
onFocus: handleFocus,
|
|
4319
|
+
onBlur: handleBlur,
|
|
4320
|
+
onKeyDown: handleKeyDown,
|
|
4321
|
+
placeholder: isFocused ? "" : placeholder,
|
|
4322
|
+
style: inputStyles5
|
|
4323
|
+
}
|
|
4324
|
+
),
|
|
4325
|
+
showKeyboardShortcut && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { style: keyboardShortcutStyles, children: [
|
|
4326
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: keyStyles, children: "\u2318" }),
|
|
4327
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { style: plusStyles, children: "+" }),
|
|
4328
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { style: keyStyles, children: "K" })
|
|
4329
|
+
] }),
|
|
4330
|
+
showClearButton && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
4331
|
+
"button",
|
|
4332
|
+
{
|
|
4333
|
+
type: "button",
|
|
4334
|
+
onClick: handleClear,
|
|
4335
|
+
style: clearButtonStyles,
|
|
4336
|
+
"aria-label": "Clear search",
|
|
4337
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react11.X, { size: 13.333, color: "#2f2f2f", strokeWidth: 2 })
|
|
4338
|
+
}
|
|
4339
|
+
)
|
|
4340
|
+
]
|
|
4341
|
+
}
|
|
4342
|
+
);
|
|
4343
|
+
}
|
|
4344
|
+
);
|
|
4345
|
+
SearchGlobal.displayName = "SearchGlobal";
|
|
4346
|
+
|
|
4347
|
+
// src/SearchOnPage/SearchOnPage.tsx
|
|
4348
|
+
var React22 = __toESM(require("react"));
|
|
4349
|
+
var import_lucide_react12 = require("lucide-react");
|
|
4350
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
4351
|
+
var SearchOnPage = React22.forwardRef(
|
|
4352
|
+
({
|
|
4353
|
+
value = "",
|
|
4354
|
+
onChange,
|
|
4355
|
+
onSubmit,
|
|
4356
|
+
onClear,
|
|
4357
|
+
placeholder = "Search Reports",
|
|
4358
|
+
className,
|
|
4359
|
+
style,
|
|
4360
|
+
"data-testid": dataTestId
|
|
4361
|
+
}, ref) => {
|
|
4362
|
+
const [isFocused, setIsFocused] = React22.useState(false);
|
|
4363
|
+
const [isHovered, setIsHovered] = React22.useState(false);
|
|
4364
|
+
const inputRef = React22.useRef(null);
|
|
4365
|
+
React22.useImperativeHandle(ref, () => inputRef.current);
|
|
4366
|
+
const handleFocus = () => {
|
|
4367
|
+
setIsFocused(true);
|
|
4368
|
+
};
|
|
4369
|
+
const handleBlur = () => {
|
|
4370
|
+
setIsFocused(false);
|
|
4371
|
+
};
|
|
4372
|
+
const handleChange = (e) => {
|
|
4373
|
+
onChange?.(e.target.value);
|
|
4374
|
+
};
|
|
4375
|
+
const handleKeyDown = (e) => {
|
|
4376
|
+
if (e.key === "Enter") {
|
|
4377
|
+
onSubmit?.(value);
|
|
4378
|
+
}
|
|
4379
|
+
};
|
|
4380
|
+
const handleClear = () => {
|
|
4381
|
+
onChange?.("");
|
|
4382
|
+
onClear?.();
|
|
4383
|
+
inputRef.current?.focus();
|
|
4384
|
+
};
|
|
4385
|
+
const containerStyles6 = {
|
|
4386
|
+
position: "relative",
|
|
4387
|
+
width: "200px",
|
|
4388
|
+
height: "32px",
|
|
4389
|
+
backgroundColor: isFocused ? "#ffffff" : isHovered ? "#efefef" : "#ffffff",
|
|
4390
|
+
borderRadius: "16px",
|
|
4391
|
+
padding: "8px 16px",
|
|
4392
|
+
display: "flex",
|
|
4393
|
+
alignItems: "center",
|
|
4394
|
+
gap: "8px",
|
|
4395
|
+
cursor: "text",
|
|
4396
|
+
transition: "all 0.2s ease-in-out",
|
|
4397
|
+
boxSizing: "border-box",
|
|
4398
|
+
border: isFocused ? "1px solid #efefef" : "none",
|
|
4399
|
+
boxShadow: isFocused ? "0px 0px 0px 3px #3cad51" : "none",
|
|
4400
|
+
...style
|
|
4401
|
+
};
|
|
4402
|
+
const iconContainerStyles2 = {
|
|
4403
|
+
display: "flex",
|
|
4404
|
+
alignItems: "center",
|
|
4405
|
+
justifyContent: "center",
|
|
4406
|
+
flexShrink: 0,
|
|
4407
|
+
padding: "2px"
|
|
4408
|
+
};
|
|
4409
|
+
const inputStyles5 = {
|
|
4410
|
+
border: "none",
|
|
4411
|
+
outline: "none",
|
|
4412
|
+
backgroundColor: "transparent",
|
|
4413
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
4414
|
+
fontSize: "13px",
|
|
4415
|
+
fontWeight: 400,
|
|
4416
|
+
color: "#2f2f2f",
|
|
4417
|
+
lineHeight: "1.5",
|
|
4418
|
+
flex: 1,
|
|
4419
|
+
width: "100%",
|
|
4420
|
+
minWidth: 0
|
|
4421
|
+
};
|
|
4422
|
+
const clearButtonStyles = {
|
|
4423
|
+
display: "flex",
|
|
4424
|
+
alignItems: "center",
|
|
4425
|
+
justifyContent: "center",
|
|
4426
|
+
flexShrink: 0,
|
|
4427
|
+
width: "16px",
|
|
4428
|
+
height: "16px",
|
|
4429
|
+
cursor: "pointer",
|
|
4430
|
+
border: "none",
|
|
4431
|
+
background: "none",
|
|
4432
|
+
padding: 0
|
|
4433
|
+
};
|
|
4434
|
+
const showClearButton = isFocused && value.length > 0;
|
|
4435
|
+
const iconColor = isFocused || isHovered ? "#2f2f2f" : "#595959";
|
|
4436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
4437
|
+
"div",
|
|
4438
|
+
{
|
|
4439
|
+
className,
|
|
4440
|
+
style: containerStyles6,
|
|
4441
|
+
onMouseEnter: () => setIsHovered(true),
|
|
4442
|
+
onMouseLeave: () => setIsHovered(false),
|
|
4443
|
+
onClick: () => inputRef.current?.focus(),
|
|
4444
|
+
"data-testid": dataTestId,
|
|
4445
|
+
children: [
|
|
4446
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: iconContainerStyles2, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react12.Search, { size: 12, color: iconColor, strokeWidth: 2 }) }),
|
|
4447
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4448
|
+
"input",
|
|
4449
|
+
{
|
|
4450
|
+
ref: inputRef,
|
|
4451
|
+
type: "text",
|
|
4452
|
+
value,
|
|
4453
|
+
onChange: handleChange,
|
|
4454
|
+
onFocus: handleFocus,
|
|
4455
|
+
onBlur: handleBlur,
|
|
4456
|
+
onKeyDown: handleKeyDown,
|
|
4457
|
+
placeholder: isFocused ? "" : placeholder,
|
|
4458
|
+
style: inputStyles5
|
|
4459
|
+
}
|
|
4460
|
+
),
|
|
4461
|
+
showClearButton && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
4462
|
+
"button",
|
|
4463
|
+
{
|
|
4464
|
+
type: "button",
|
|
4465
|
+
onClick: handleClear,
|
|
4466
|
+
style: clearButtonStyles,
|
|
4467
|
+
"aria-label": "Clear search",
|
|
4468
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react12.X, { size: 13.333, color: "#2f2f2f", strokeWidth: 2 })
|
|
4469
|
+
}
|
|
4470
|
+
)
|
|
4471
|
+
]
|
|
4472
|
+
}
|
|
4473
|
+
);
|
|
4474
|
+
}
|
|
4475
|
+
);
|
|
4476
|
+
SearchOnPage.displayName = "SearchOnPage";
|
|
4477
|
+
|
|
4478
|
+
// src/Breadcrumbs/Breadcrumbs.tsx
|
|
4479
|
+
var React23 = __toESM(require("react"));
|
|
4480
|
+
var import_lucide_react13 = require("lucide-react");
|
|
4481
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
4482
|
+
var Breadcrumbs = React23.forwardRef(
|
|
4483
|
+
({
|
|
4484
|
+
items,
|
|
4485
|
+
onCopy,
|
|
4486
|
+
className,
|
|
4487
|
+
style,
|
|
4488
|
+
"data-testid": dataTestId
|
|
4489
|
+
}, ref) => {
|
|
4490
|
+
const [hoveredIndex, setHoveredIndex] = React23.useState(null);
|
|
4491
|
+
const [focusedIndex, setFocusedIndex] = React23.useState(null);
|
|
4492
|
+
const [showCopyTooltip, setShowCopyTooltip] = React23.useState(false);
|
|
4493
|
+
const [ellipsisFocused, setEllipsisFocused] = React23.useState(false);
|
|
4494
|
+
const [ellipsisHovered, setEllipsisHovered] = React23.useState(false);
|
|
4495
|
+
const displayItems = React23.useMemo(() => {
|
|
4496
|
+
if (items.length > 6) {
|
|
4497
|
+
return [items[0], { label: "...", isEllipsis: true }, items[items.length - 1]];
|
|
4498
|
+
}
|
|
4499
|
+
return items;
|
|
4500
|
+
}, [items]);
|
|
4501
|
+
const handleCopy = () => {
|
|
4502
|
+
onCopy?.();
|
|
4503
|
+
const trail = items.map((item) => item.label).join(" / ");
|
|
4504
|
+
navigator.clipboard.writeText(trail);
|
|
4505
|
+
};
|
|
4506
|
+
const containerStyles6 = {
|
|
4507
|
+
display: "flex",
|
|
4508
|
+
alignItems: "center",
|
|
4509
|
+
gap: "8px",
|
|
4510
|
+
...style
|
|
4511
|
+
};
|
|
4512
|
+
const breadcrumbItemStyles = (index, isActive, isEllipsis) => {
|
|
4513
|
+
const isFocused = focusedIndex === index;
|
|
4514
|
+
if (isEllipsis) {
|
|
4515
|
+
return {
|
|
4516
|
+
display: "flex",
|
|
4517
|
+
alignItems: "center",
|
|
4518
|
+
gap: "4px",
|
|
4519
|
+
height: "24px",
|
|
4520
|
+
overflow: "hidden"
|
|
4521
|
+
};
|
|
4522
|
+
}
|
|
4523
|
+
return {
|
|
4524
|
+
display: "flex",
|
|
4525
|
+
alignItems: "center",
|
|
4526
|
+
gap: "4px",
|
|
4527
|
+
height: "24px",
|
|
4528
|
+
overflow: "hidden",
|
|
4529
|
+
backgroundColor: isFocused ? "rgba(255, 255, 255, 0.01)" : "transparent",
|
|
4530
|
+
borderRadius: "99px",
|
|
4531
|
+
boxShadow: isFocused ? "0px 0px 0px 3px #3cad51" : "none",
|
|
4532
|
+
padding: isFocused ? "0 6px" : "0 2px",
|
|
4533
|
+
margin: isFocused ? "0" : "0 4px",
|
|
4534
|
+
cursor: isActive ? "default" : "pointer",
|
|
4535
|
+
textDecoration: "none"
|
|
4536
|
+
};
|
|
4537
|
+
};
|
|
4538
|
+
const linkStyles = (isActive, isHovered) => ({
|
|
4539
|
+
fontFamily: isActive ? "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" : "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
4540
|
+
fontSize: "13px",
|
|
4541
|
+
fontWeight: isActive ? 600 : 400,
|
|
4542
|
+
color: isActive ? isHovered ? "#0e8a0e" : "#2f2f2f" : isHovered ? "#0e8a0e" : "#595959",
|
|
4543
|
+
lineHeight: "1.5",
|
|
4544
|
+
whiteSpace: "nowrap"
|
|
4545
|
+
});
|
|
4546
|
+
const dividerStyles = {
|
|
4547
|
+
fontFamily: "'PT Sans', sans-serif",
|
|
4548
|
+
fontSize: "14px",
|
|
4549
|
+
color: "#595959",
|
|
4550
|
+
lineHeight: "normal",
|
|
4551
|
+
whiteSpace: "nowrap"
|
|
4552
|
+
};
|
|
4553
|
+
const ellipsisButtonStyles = {
|
|
4554
|
+
display: "flex",
|
|
4555
|
+
alignItems: "center",
|
|
4556
|
+
justifyContent: "center",
|
|
4557
|
+
width: "24px",
|
|
4558
|
+
height: "24px",
|
|
4559
|
+
borderRadius: "99px",
|
|
4560
|
+
border: "none",
|
|
4561
|
+
background: "transparent",
|
|
4562
|
+
cursor: "pointer",
|
|
4563
|
+
backgroundColor: ellipsisFocused ? "rgba(255, 255, 255, 0.01)" : ellipsisHovered ? "#efefef" : "transparent",
|
|
4564
|
+
boxShadow: ellipsisFocused ? "0px 0px 0px 3px #3cad51" : "none"
|
|
4565
|
+
};
|
|
4566
|
+
const copyButtonStyles = {
|
|
4567
|
+
display: "flex",
|
|
4568
|
+
alignItems: "center",
|
|
4569
|
+
justifyContent: "center",
|
|
4570
|
+
width: "24px",
|
|
4571
|
+
height: "24px",
|
|
4572
|
+
borderRadius: "99px",
|
|
4573
|
+
border: "none",
|
|
4574
|
+
background: showCopyTooltip ? "#efefef" : "transparent",
|
|
4575
|
+
cursor: "pointer",
|
|
4576
|
+
position: "relative"
|
|
4577
|
+
};
|
|
4578
|
+
const tooltipStyles2 = {
|
|
4579
|
+
position: "absolute",
|
|
4580
|
+
top: "100%",
|
|
4581
|
+
left: "50%",
|
|
4582
|
+
transform: "translateX(-50%)",
|
|
4583
|
+
marginTop: "8px",
|
|
4584
|
+
backgroundColor: "#2f2f2f",
|
|
4585
|
+
color: "white",
|
|
4586
|
+
padding: "12px",
|
|
4587
|
+
borderRadius: "8px",
|
|
4588
|
+
fontSize: "13px",
|
|
4589
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
4590
|
+
fontWeight: 400,
|
|
4591
|
+
lineHeight: "1.5",
|
|
4592
|
+
whiteSpace: "nowrap",
|
|
4593
|
+
boxShadow: "0px 4px 12px rgba(32, 32, 32, 0.08)",
|
|
4594
|
+
zIndex: 1e3
|
|
4595
|
+
};
|
|
4596
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
4597
|
+
"div",
|
|
4598
|
+
{
|
|
4599
|
+
ref,
|
|
4600
|
+
className,
|
|
4601
|
+
style: containerStyles6,
|
|
4602
|
+
"data-testid": dataTestId,
|
|
4603
|
+
children: displayItems.map((item, index) => {
|
|
4604
|
+
const isActive = index === displayItems.length - 1;
|
|
4605
|
+
const isEllipsis = "isEllipsis" in item && item.isEllipsis;
|
|
4606
|
+
if (isEllipsis) {
|
|
4607
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(React23.Fragment, { children: [
|
|
4608
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
4609
|
+
"button",
|
|
4610
|
+
{
|
|
4611
|
+
style: ellipsisButtonStyles,
|
|
4612
|
+
onFocus: () => setEllipsisFocused(true),
|
|
4613
|
+
onBlur: () => setEllipsisFocused(false),
|
|
4614
|
+
onMouseEnter: () => setEllipsisHovered(true),
|
|
4615
|
+
onMouseLeave: () => setEllipsisHovered(false),
|
|
4616
|
+
"aria-label": "More breadcrumbs",
|
|
4617
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
4618
|
+
import_lucide_react13.MoreHorizontal,
|
|
4619
|
+
{
|
|
4620
|
+
size: 12,
|
|
4621
|
+
color: "#2f2f2f",
|
|
4622
|
+
strokeWidth: 2,
|
|
4623
|
+
style: { display: "block", flexShrink: 0 }
|
|
4624
|
+
}
|
|
4625
|
+
)
|
|
4626
|
+
}
|
|
4627
|
+
),
|
|
4628
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { style: dividerStyles, children: " /" })
|
|
4629
|
+
] }, `ellipsis-${index}`);
|
|
4630
|
+
}
|
|
4631
|
+
const breadcrumbItem = item;
|
|
4632
|
+
if (isActive) {
|
|
4633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(React23.Fragment, { children: [
|
|
4634
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
4635
|
+
"div",
|
|
4636
|
+
{
|
|
4637
|
+
style: breadcrumbItemStyles(index, true),
|
|
4638
|
+
onMouseEnter: () => setHoveredIndex(index),
|
|
4639
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
4640
|
+
onFocus: () => setFocusedIndex(index),
|
|
4641
|
+
onBlur: () => setFocusedIndex(null),
|
|
4642
|
+
tabIndex: 0,
|
|
4643
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { style: linkStyles(true, hoveredIndex === index), children: breadcrumbItem.label })
|
|
4644
|
+
}
|
|
4645
|
+
),
|
|
4646
|
+
onCopy && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
4647
|
+
"button",
|
|
4648
|
+
{
|
|
4649
|
+
style: copyButtonStyles,
|
|
4650
|
+
onClick: handleCopy,
|
|
4651
|
+
onMouseEnter: () => setShowCopyTooltip(true),
|
|
4652
|
+
onMouseLeave: () => setShowCopyTooltip(false),
|
|
4653
|
+
"aria-label": "Copy breadcrumb trail",
|
|
4654
|
+
children: [
|
|
4655
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
4656
|
+
import_lucide_react13.Link,
|
|
4657
|
+
{
|
|
4658
|
+
size: 12,
|
|
4659
|
+
color: "#2f2f2f",
|
|
4660
|
+
strokeWidth: 2,
|
|
4661
|
+
style: { display: "block", flexShrink: 0 }
|
|
4662
|
+
}
|
|
4663
|
+
),
|
|
4664
|
+
showCopyTooltip && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { style: tooltipStyles2, children: "Copy breadcrumb trail" })
|
|
4665
|
+
]
|
|
4666
|
+
}
|
|
4667
|
+
)
|
|
4668
|
+
] }, index);
|
|
4669
|
+
}
|
|
4670
|
+
const Element = breadcrumbItem.href ? "a" : "button";
|
|
4671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(React23.Fragment, { children: [
|
|
4672
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
4673
|
+
Element,
|
|
4674
|
+
{
|
|
4675
|
+
...breadcrumbItem.href ? { href: breadcrumbItem.href } : {},
|
|
4676
|
+
style: {
|
|
4677
|
+
...breadcrumbItemStyles(index, false),
|
|
4678
|
+
border: "none",
|
|
4679
|
+
background: "transparent"
|
|
4680
|
+
},
|
|
4681
|
+
onClick: (e) => {
|
|
4682
|
+
if (!breadcrumbItem.href && breadcrumbItem.onClick) {
|
|
4683
|
+
e.preventDefault();
|
|
4684
|
+
breadcrumbItem.onClick();
|
|
4685
|
+
}
|
|
4686
|
+
},
|
|
4687
|
+
onMouseEnter: () => setHoveredIndex(index),
|
|
4688
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
4689
|
+
onFocus: () => setFocusedIndex(index),
|
|
4690
|
+
onBlur: () => setFocusedIndex(null),
|
|
4691
|
+
children: [
|
|
4692
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { style: linkStyles(false, hoveredIndex === index), children: breadcrumbItem.label }),
|
|
4693
|
+
breadcrumbItem.hasDropdown && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
4694
|
+
import_lucide_react13.ChevronDown,
|
|
4695
|
+
{
|
|
4696
|
+
size: 12,
|
|
4697
|
+
color: hoveredIndex === index ? "#0e8a0e" : "#595959",
|
|
4698
|
+
strokeWidth: 2,
|
|
4699
|
+
style: { marginLeft: "2px", display: "inline-block", flexShrink: 0 }
|
|
4700
|
+
}
|
|
4701
|
+
)
|
|
4702
|
+
]
|
|
4703
|
+
}
|
|
4704
|
+
),
|
|
4705
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { style: dividerStyles, children: " /" })
|
|
4706
|
+
] }, index);
|
|
4707
|
+
})
|
|
4708
|
+
}
|
|
4709
|
+
);
|
|
4710
|
+
}
|
|
4711
|
+
);
|
|
4712
|
+
Breadcrumbs.displayName = "Breadcrumbs";
|
|
4713
|
+
|
|
4714
|
+
// src/Logo/Logo.tsx
|
|
4715
|
+
var React24 = __toESM(require("react"));
|
|
4716
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
4717
|
+
var Logo = React24.forwardRef(
|
|
4718
|
+
({
|
|
4719
|
+
withText = true,
|
|
4720
|
+
light = false,
|
|
4721
|
+
width,
|
|
4722
|
+
height,
|
|
4723
|
+
className,
|
|
4724
|
+
style
|
|
4725
|
+
}, ref) => {
|
|
4726
|
+
const defaultWidth = withText ? 66 : 25;
|
|
4727
|
+
const defaultHeight = withText ? 26 : 25;
|
|
4728
|
+
const finalWidth = width ?? defaultWidth;
|
|
4729
|
+
const finalHeight = height ?? defaultHeight;
|
|
4730
|
+
if (!withText) {
|
|
4731
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
4732
|
+
"svg",
|
|
4733
|
+
{
|
|
4734
|
+
ref,
|
|
4735
|
+
width: finalWidth,
|
|
4736
|
+
height: finalHeight,
|
|
4737
|
+
viewBox: "0 0 25 25",
|
|
4738
|
+
fill: "none",
|
|
4739
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4740
|
+
className,
|
|
4741
|
+
style,
|
|
4742
|
+
"aria-label": "Arbor logo",
|
|
4743
|
+
children: [
|
|
4744
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("g", { clipPath: "url(#clip0_logo_icon)", children: [
|
|
4745
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6821 12.448C12.6821 9.06699 15.4229 6.32623 18.8039 6.32623C18.8039 2.94571 16.0631 0.205391 12.6817 0.205391C9.30163 0.205391 6.56086 2.94571 6.56042 6.32623C9.94138 6.32623 12.6817 9.06699 12.6821 12.448Z", fill: "#F7931E" }),
|
|
4746
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.4481C12.6826 15.8286 9.9423 18.5694 6.56178 18.5694C6.56178 21.9503 9.3021 24.6902 12.6826 24.6902C16.064 24.6902 18.8043 21.9499 18.8043 18.5694C15.4229 18.5676 12.6822 15.8281 12.6822 12.4472L12.6826 12.4481Z", fill: "#AFD318" }),
|
|
4747
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M18.8043 6.32631C18.8043 9.70727 16.064 12.448 12.6826 12.448C16.0636 12.448 18.8043 15.1888 18.8043 18.5693C22.1853 18.5693 24.9252 15.8286 24.9252 12.448C24.9252 9.06619 22.1844 6.32543 18.8048 6.32543L18.8043 6.32631Z", fill: "#DEEE21" }),
|
|
4748
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.448C16.064 12.448 18.8043 9.70725 18.8043 6.32673C15.4225 6.32673 12.6822 9.06705 12.6826 12.448Z", fill: "#D58822" }),
|
|
4749
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6822 12.4481C12.6822 15.8286 15.423 18.5693 18.8039 18.5693C18.8039 15.1875 16.0632 12.4472 12.6818 12.4472L12.6822 12.4481Z", fill: "#96BA0F" }),
|
|
4750
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.448C9.30204 12.448 6.56128 9.70725 6.56128 6.32673C3.18076 6.32673 0.440002 9.06705 0.440002 12.448C0.440002 15.8285 3.18076 18.5684 6.56128 18.5693C6.56128 15.1874 9.30204 12.4471 12.6826 12.4471V12.448Z", fill: "#7DBA3C" }),
|
|
4751
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.448C12.6826 9.06705 9.9423 6.32629 6.56178 6.32629L6.56134 6.32673C6.56134 9.70769 9.3021 12.448 12.6826 12.448Z", fill: "#A0861A" }),
|
|
4752
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.4481C9.3021 12.4481 6.56178 15.1888 6.56134 18.5693C9.94186 18.5676 12.6826 15.8281 12.6826 12.4472V12.4481Z", fill: "#68AA22" })
|
|
4753
|
+
] }),
|
|
4754
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("clipPath", { id: "clip0_logo_icon", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("rect", { width: "25", height: "25", fill: "white" }) }) })
|
|
4755
|
+
]
|
|
4756
|
+
}
|
|
4757
|
+
);
|
|
4758
|
+
}
|
|
4759
|
+
const textColor = light ? "#2F2F2F" : "white";
|
|
4760
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
4761
|
+
"svg",
|
|
4762
|
+
{
|
|
4763
|
+
ref,
|
|
4764
|
+
width: finalWidth,
|
|
4765
|
+
height: finalHeight,
|
|
4766
|
+
viewBox: "0 0 66 26",
|
|
4767
|
+
fill: "none",
|
|
4768
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
4769
|
+
className,
|
|
4770
|
+
style,
|
|
4771
|
+
"aria-label": "Arbor",
|
|
4772
|
+
children: [
|
|
4773
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6822 12.4479C12.6822 9.06698 15.423 6.32622 18.8039 6.32622C18.8039 2.9457 16.0632 0.205383 12.6818 0.205383C9.30169 0.205383 6.56093 2.9457 6.56049 6.32622C9.94145 6.32622 12.6818 9.06698 12.6822 12.4479Z", fill: "#F7931E" }),
|
|
4774
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.4481C12.6826 15.8286 9.9423 18.5694 6.56178 18.5694C6.56178 21.9503 9.3021 24.6902 12.6826 24.6902C16.064 24.6902 18.8043 21.9499 18.8043 18.5694C15.4229 18.5676 12.6822 15.8281 12.6822 12.4472L12.6826 12.4481Z", fill: "#AFD318" }),
|
|
4775
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M18.8044 6.3263C18.8044 9.70726 16.0641 12.448 12.6827 12.448C16.0636 12.448 18.8044 15.1888 18.8044 18.5693C22.1854 18.5693 24.9252 15.8285 24.9252 12.448C24.9252 9.06618 22.1845 6.32542 18.8048 6.32542L18.8044 6.3263Z", fill: "#DEEE21" }),
|
|
4776
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6827 12.448C16.0641 12.448 18.8044 9.70725 18.8044 6.32673C15.4226 6.32673 12.6822 9.06705 12.6827 12.448Z", fill: "#D58822" }),
|
|
4777
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6823 12.4481C12.6823 15.8286 15.423 18.5693 18.804 18.5693C18.804 15.1875 16.0632 12.4472 12.6818 12.4472L12.6823 12.4481Z", fill: "#96BA0F" }),
|
|
4778
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.448C9.30204 12.448 6.56128 9.70725 6.56128 6.32673C3.18076 6.32673 0.440002 9.06705 0.440002 12.448C0.440002 15.8285 3.18076 18.5684 6.56128 18.5693C6.56128 15.1875 9.30204 12.4471 12.6826 12.4471V12.448Z", fill: "#7DBA3C" }),
|
|
4779
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.448C12.6826 9.06705 9.9423 6.32629 6.56178 6.32629L6.56134 6.32673C6.56134 9.70769 9.3021 12.448 12.6826 12.448Z", fill: "#A0861A" }),
|
|
4780
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M12.6826 12.4481C9.3021 12.4481 6.56178 15.1888 6.56134 18.5693C9.94186 18.5676 12.6826 15.8281 12.6826 12.4472V12.4481Z", fill: "#68AA22" }),
|
|
4781
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M37.7924 17.8181L36.4913 14.3809H31.9131L30.6604 17.7055H29.1345L33.4716 6.57394H34.9821L39.255 17.4965L37.7924 17.8181ZM34.1936 8.37222L32.4266 13.0459H35.9761L34.195 8.37222H34.1936Z", fill: textColor }),
|
|
4782
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M41.4713 13.1755V17.7053H40.0417V10.0427H41.1822L41.4229 11.6012C41.9689 10.7335 42.8529 9.94635 44.1056 9.88211L44.3308 11.2479C43.0614 11.3121 41.9843 12.1635 41.4708 13.1751L41.4713 13.1755Z", fill: textColor }),
|
|
4783
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M48.2659 17.8016C47.1092 17.8016 46.2903 17.6252 45.2779 17.3194V6.33171L46.707 6.10687V10.942C47.2218 10.4118 47.9601 9.88163 49.0047 9.88163C50.6591 9.88163 52.024 11.1026 52.024 13.6564C52.024 16.4513 50.4822 17.8008 48.2659 17.8008V17.8016ZM48.7957 11.1515C47.9931 11.1515 47.2861 11.6817 46.7079 12.4046V16.3241C47.1897 16.5006 47.5439 16.5811 48.2505 16.5811C49.7443 16.5811 50.5795 15.6971 50.5795 13.722C50.5795 12.0522 49.8231 11.1528 48.7957 11.1528V11.1515Z", fill: textColor }),
|
|
4784
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M56.5064 17.8664C54.467 17.8664 52.9882 16.4042 52.9882 13.8826C52.9882 11.3605 54.467 9.88211 56.5064 9.88211C58.563 9.88211 60.0722 11.3601 60.0722 13.8826C60.0722 16.4038 58.563 17.8664 56.5064 17.8664ZM56.5064 11.0873C55.1248 11.0873 54.4345 12.2762 54.4345 13.8822C54.4345 15.4565 55.1574 16.6775 56.5064 16.6775C57.9202 16.6775 58.6263 15.4886 58.6263 13.8822C58.625 12.3087 57.8845 11.0877 56.5042 11.0877L56.5064 11.0873Z", fill: textColor }),
|
|
4785
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "M62.4495 13.1755V17.7053H61.0199V10.0427H62.1613L62.4019 11.6012C62.948 10.7335 63.8315 9.94635 65.0846 9.88211L65.3099 11.2479C64.0423 11.3121 62.9651 12.1635 62.4517 13.1751L62.4495 13.1755Z", fill: textColor })
|
|
4786
|
+
]
|
|
4787
|
+
}
|
|
4788
|
+
);
|
|
4789
|
+
}
|
|
4790
|
+
);
|
|
4791
|
+
Logo.displayName = "Logo";
|
|
4792
|
+
|
|
4793
|
+
// src/ButtonSegmented/ButtonSegmented.tsx
|
|
4794
|
+
var React25 = __toESM(require("react"));
|
|
4795
|
+
var import_clsx20 = require("clsx");
|
|
4796
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
4797
|
+
var segmentedStyles = {
|
|
4798
|
+
container: {
|
|
4799
|
+
display: "inline-flex",
|
|
4800
|
+
alignItems: "center",
|
|
4801
|
+
gap: "8px",
|
|
4802
|
+
padding: "8px",
|
|
4803
|
+
backgroundColor: "#ffffff",
|
|
4804
|
+
border: "1px solid #efefef",
|
|
4805
|
+
borderRadius: "99px",
|
|
4806
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
4807
|
+
},
|
|
4808
|
+
button: {
|
|
4809
|
+
base: {
|
|
4810
|
+
display: "inline-flex",
|
|
4811
|
+
alignItems: "center",
|
|
4812
|
+
justifyContent: "center",
|
|
4813
|
+
gap: "8px",
|
|
4814
|
+
padding: "8px 16px",
|
|
4815
|
+
borderRadius: "99px",
|
|
4816
|
+
border: "none",
|
|
4817
|
+
cursor: "pointer",
|
|
4818
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
4819
|
+
fontSize: "13px",
|
|
4820
|
+
fontWeight: "600",
|
|
4821
|
+
lineHeight: "1.5",
|
|
4822
|
+
transition: "all 0.15s ease-in-out",
|
|
4823
|
+
outline: "none",
|
|
4824
|
+
whiteSpace: "nowrap"
|
|
4825
|
+
},
|
|
4826
|
+
default: {
|
|
4827
|
+
backgroundColor: "transparent",
|
|
4828
|
+
color: "#595959"
|
|
4829
|
+
},
|
|
4830
|
+
hover: {
|
|
4831
|
+
backgroundColor: "#f8f8f8",
|
|
4832
|
+
color: "#2f2f2f"
|
|
4833
|
+
},
|
|
4834
|
+
active: {
|
|
4835
|
+
backgroundColor: "#0e8a0e",
|
|
4836
|
+
color: "#ffffff"
|
|
4837
|
+
},
|
|
4838
|
+
activeHover: {
|
|
4839
|
+
backgroundColor: "#005700",
|
|
4840
|
+
color: "#ffffff"
|
|
4841
|
+
}
|
|
4842
|
+
}
|
|
4843
|
+
};
|
|
4844
|
+
var ButtonSegmented = React25.forwardRef(
|
|
4845
|
+
({ items, activeIndex = 0, onChange, className, style, ...props }, ref) => {
|
|
4846
|
+
const [hoveredIndex, setHoveredIndex] = React25.useState(null);
|
|
4847
|
+
const validItems = items.slice(0, 4);
|
|
4848
|
+
if (validItems.length < 2) {
|
|
4849
|
+
console.warn("ButtonSegmented requires at least 2 items");
|
|
4850
|
+
}
|
|
4851
|
+
const hasIcons = validItems.some((item) => item.icon);
|
|
4852
|
+
const handleClick = (index) => {
|
|
4853
|
+
if (index !== activeIndex && onChange) {
|
|
4854
|
+
onChange(index, validItems[index]);
|
|
4855
|
+
}
|
|
4856
|
+
};
|
|
4857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
4858
|
+
"div",
|
|
4859
|
+
{
|
|
4860
|
+
ref,
|
|
4861
|
+
className: (0, import_clsx20.clsx)("arbor-button-segmented", className),
|
|
4862
|
+
style: { ...segmentedStyles.container, ...style },
|
|
4863
|
+
role: "group",
|
|
4864
|
+
"aria-label": "Segmented button group",
|
|
4865
|
+
...props,
|
|
4866
|
+
children: validItems.map((item, index) => {
|
|
4867
|
+
const isActive = index === activeIndex;
|
|
4868
|
+
const isHovered = hoveredIndex === index;
|
|
4869
|
+
let buttonStyle = {
|
|
4870
|
+
...segmentedStyles.button.base
|
|
4871
|
+
};
|
|
4872
|
+
if (isActive) {
|
|
4873
|
+
buttonStyle = {
|
|
4874
|
+
...buttonStyle,
|
|
4875
|
+
...segmentedStyles.button.active,
|
|
4876
|
+
...isHovered && segmentedStyles.button.activeHover
|
|
4877
|
+
};
|
|
4878
|
+
} else {
|
|
4879
|
+
buttonStyle = {
|
|
4880
|
+
...buttonStyle,
|
|
4881
|
+
...segmentedStyles.button.default,
|
|
4882
|
+
...isHovered && segmentedStyles.button.hover
|
|
4883
|
+
};
|
|
4884
|
+
}
|
|
4885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
4886
|
+
"button",
|
|
4887
|
+
{
|
|
4888
|
+
type: "button",
|
|
4889
|
+
style: buttonStyle,
|
|
4890
|
+
onClick: () => handleClick(index),
|
|
4891
|
+
onMouseEnter: () => setHoveredIndex(index),
|
|
4892
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
4893
|
+
"aria-pressed": isActive,
|
|
4894
|
+
children: [
|
|
4895
|
+
hasIcons && item.icon && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
4896
|
+
"span",
|
|
4897
|
+
{
|
|
4898
|
+
style: {
|
|
4899
|
+
display: "flex",
|
|
4900
|
+
alignItems: "center",
|
|
4901
|
+
justifyContent: "center",
|
|
4902
|
+
width: "16px",
|
|
4903
|
+
height: "16px"
|
|
4904
|
+
},
|
|
4905
|
+
children: item.icon
|
|
4906
|
+
}
|
|
4907
|
+
),
|
|
4908
|
+
item.label
|
|
4909
|
+
]
|
|
4910
|
+
},
|
|
4911
|
+
item.value || index
|
|
4912
|
+
);
|
|
4913
|
+
})
|
|
4914
|
+
}
|
|
4915
|
+
);
|
|
4916
|
+
}
|
|
4917
|
+
);
|
|
4918
|
+
ButtonSegmented.displayName = "ButtonSegmented";
|
|
4919
|
+
|
|
4920
|
+
// src/SectionHeading/SectionHeading.tsx
|
|
4921
|
+
var React27 = __toESM(require("react"));
|
|
4922
|
+
var import_clsx22 = require("clsx");
|
|
4923
|
+
|
|
4924
|
+
// src/SectionIcon/SectionIcon.tsx
|
|
4925
|
+
var React26 = __toESM(require("react"));
|
|
4926
|
+
var import_clsx21 = require("clsx");
|
|
4927
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
4928
|
+
var WarningIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("svg", { width: "14", height: "12", viewBox: "0 0 14 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
4929
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
4930
|
+
"path",
|
|
4931
|
+
{
|
|
4932
|
+
d: "M7 0.5L13.5 11.5H0.5L7 0.5Z",
|
|
4933
|
+
stroke: color,
|
|
4934
|
+
strokeWidth: "1.2",
|
|
4935
|
+
strokeLinejoin: "round",
|
|
4936
|
+
fill: "none"
|
|
4937
|
+
}
|
|
4938
|
+
),
|
|
4939
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
4940
|
+
"path",
|
|
4941
|
+
{
|
|
4942
|
+
d: "M7 4.5V7",
|
|
4943
|
+
stroke: color,
|
|
4944
|
+
strokeWidth: "1.2",
|
|
4945
|
+
strokeLinecap: "round"
|
|
4946
|
+
}
|
|
4947
|
+
),
|
|
4948
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("circle", { cx: "7", cy: "9", r: "0.75", fill: color })
|
|
4949
|
+
] });
|
|
4950
|
+
var InfoIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
4951
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("circle", { cx: "7", cy: "7", r: "6", stroke: color, strokeWidth: "1.2", fill: "none" }),
|
|
4952
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { d: "M7 6V10", stroke: color, strokeWidth: "1.2", strokeLinecap: "round" }),
|
|
4953
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("circle", { cx: "7", cy: "4", r: "0.75", fill: color })
|
|
4954
|
+
] });
|
|
4955
|
+
var SuccessIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
4956
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("circle", { cx: "7", cy: "7", r: "6", stroke: color, strokeWidth: "1.2", fill: "none" }),
|
|
4957
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { d: "M4 7L6 9L10 5", stroke: color, strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
4958
|
+
] });
|
|
4959
|
+
var variantConfig3 = {
|
|
4960
|
+
warning: {
|
|
4961
|
+
backgroundColor: "#fffaf5",
|
|
4962
|
+
iconColor: "#e4720d"
|
|
4963
|
+
},
|
|
4964
|
+
danger: {
|
|
4965
|
+
backgroundColor: "#fff5f5",
|
|
4966
|
+
iconColor: "#c93232"
|
|
4967
|
+
},
|
|
4968
|
+
info: {
|
|
4969
|
+
backgroundColor: "#f5fbff",
|
|
4970
|
+
iconColor: "#2c8bca"
|
|
4971
|
+
},
|
|
4972
|
+
success: {
|
|
4973
|
+
backgroundColor: "#f5fff8",
|
|
4974
|
+
iconColor: "#16a33d"
|
|
4975
|
+
}
|
|
4976
|
+
};
|
|
4977
|
+
var sectionIconStyles = {
|
|
4978
|
+
container: {
|
|
4979
|
+
display: "inline-flex",
|
|
4980
|
+
alignItems: "center",
|
|
4981
|
+
justifyContent: "center",
|
|
4982
|
+
padding: "4px",
|
|
4983
|
+
borderRadius: "99px"
|
|
4984
|
+
},
|
|
4985
|
+
iconWrapper: {
|
|
4986
|
+
display: "flex",
|
|
4987
|
+
alignItems: "center",
|
|
4988
|
+
justifyContent: "center",
|
|
4989
|
+
width: "16px",
|
|
4990
|
+
height: "16px"
|
|
4991
|
+
}
|
|
4992
|
+
};
|
|
4993
|
+
var SectionIcon = React26.forwardRef(
|
|
4994
|
+
({ variant = "info", className, style, ...props }, ref) => {
|
|
4995
|
+
const config = variantConfig3[variant];
|
|
4996
|
+
const renderIcon = () => {
|
|
4997
|
+
switch (variant) {
|
|
4998
|
+
case "warning":
|
|
4999
|
+
case "danger":
|
|
5000
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(WarningIcon, { color: config.iconColor });
|
|
5001
|
+
case "success":
|
|
5002
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SuccessIcon, { color: config.iconColor });
|
|
5003
|
+
case "info":
|
|
5004
|
+
default:
|
|
5005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(InfoIcon, { color: config.iconColor });
|
|
5006
|
+
}
|
|
5007
|
+
};
|
|
5008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
5009
|
+
"div",
|
|
5010
|
+
{
|
|
5011
|
+
ref,
|
|
5012
|
+
className: (0, import_clsx21.clsx)("arbor-section-icon", className),
|
|
5013
|
+
style: {
|
|
5014
|
+
...sectionIconStyles.container,
|
|
5015
|
+
backgroundColor: config.backgroundColor,
|
|
5016
|
+
...style
|
|
5017
|
+
},
|
|
5018
|
+
...props,
|
|
5019
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { style: sectionIconStyles.iconWrapper, children: renderIcon() })
|
|
5020
|
+
}
|
|
5021
|
+
);
|
|
5022
|
+
}
|
|
5023
|
+
);
|
|
5024
|
+
SectionIcon.displayName = "SectionIcon";
|
|
5025
|
+
|
|
5026
|
+
// src/SectionHeading/SectionHeading.tsx
|
|
5027
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
5028
|
+
var AvatarPlaceholder = () => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("svg", { width: "22", height: "33", viewBox: "0 0 22 33", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
5029
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("circle", { cx: "11", cy: "7", r: "7", fill: "#d1d1d1" }),
|
|
5030
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("ellipse", { cx: "11", cy: "33", rx: "11", ry: "11", fill: "#d1d1d1" })
|
|
5031
|
+
] });
|
|
5032
|
+
var sectionHeadingStyles = {
|
|
5033
|
+
container: {
|
|
5034
|
+
display: "flex",
|
|
5035
|
+
alignItems: "center",
|
|
5036
|
+
gap: "12px",
|
|
5037
|
+
padding: "8px",
|
|
5038
|
+
borderBottom: "1px solid #f8f8f8",
|
|
5039
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
5040
|
+
minHeight: "56px",
|
|
5041
|
+
boxSizing: "border-box"
|
|
5042
|
+
},
|
|
5043
|
+
title: {
|
|
5044
|
+
fontSize: "22px",
|
|
5045
|
+
fontWeight: "600",
|
|
5046
|
+
color: "#2f2f2f",
|
|
5047
|
+
lineHeight: "1.25",
|
|
5048
|
+
flex: 1,
|
|
5049
|
+
overflow: "hidden",
|
|
5050
|
+
textOverflow: "ellipsis",
|
|
5051
|
+
whiteSpace: "nowrap",
|
|
5052
|
+
margin: 0
|
|
5053
|
+
},
|
|
5054
|
+
titleWithIcon: {
|
|
5055
|
+
display: "flex",
|
|
5056
|
+
alignItems: "center",
|
|
5057
|
+
gap: "8px",
|
|
5058
|
+
flex: 1
|
|
5059
|
+
},
|
|
5060
|
+
iconBadge: {
|
|
5061
|
+
display: "flex",
|
|
5062
|
+
alignItems: "center",
|
|
5063
|
+
flexShrink: 0
|
|
5064
|
+
},
|
|
5065
|
+
avatar: {
|
|
5066
|
+
width: "48px",
|
|
5067
|
+
height: "48px",
|
|
5068
|
+
borderRadius: "8px",
|
|
5069
|
+
border: "1px solid #efefef",
|
|
5070
|
+
backgroundColor: "#f8f8f8",
|
|
5071
|
+
flexShrink: 0,
|
|
5072
|
+
overflow: "hidden",
|
|
5073
|
+
display: "flex",
|
|
5074
|
+
alignItems: "center",
|
|
5075
|
+
justifyContent: "center"
|
|
5076
|
+
},
|
|
5077
|
+
avatarImage: {
|
|
5078
|
+
width: "100%",
|
|
5079
|
+
height: "100%",
|
|
5080
|
+
objectFit: "cover"
|
|
5081
|
+
},
|
|
5082
|
+
avatarInitials: {
|
|
5083
|
+
fontSize: "18px",
|
|
5084
|
+
fontWeight: "600",
|
|
5085
|
+
color: "#595959"
|
|
5086
|
+
},
|
|
5087
|
+
button: {
|
|
5088
|
+
display: "inline-flex",
|
|
5089
|
+
alignItems: "center",
|
|
5090
|
+
justifyContent: "center",
|
|
5091
|
+
gap: "8px",
|
|
5092
|
+
height: "32px",
|
|
5093
|
+
padding: "0 16px",
|
|
5094
|
+
backgroundColor: "#0e8a0e",
|
|
5095
|
+
color: "#ffffff",
|
|
5096
|
+
border: "none",
|
|
5097
|
+
borderRadius: "99px",
|
|
5098
|
+
fontSize: "13px",
|
|
5099
|
+
fontWeight: "600",
|
|
5100
|
+
cursor: "pointer",
|
|
5101
|
+
transition: "background-color 0.15s ease-in-out",
|
|
5102
|
+
whiteSpace: "nowrap",
|
|
5103
|
+
flexShrink: 0
|
|
5104
|
+
},
|
|
5105
|
+
buttonHover: {
|
|
5106
|
+
backgroundColor: "#005700"
|
|
5107
|
+
},
|
|
5108
|
+
buttonGroup: {
|
|
5109
|
+
container: {
|
|
5110
|
+
display: "inline-flex",
|
|
5111
|
+
alignItems: "center",
|
|
5112
|
+
gap: "8px",
|
|
5113
|
+
padding: "8px",
|
|
5114
|
+
backgroundColor: "#ffffff",
|
|
5115
|
+
border: "1px solid #efefef",
|
|
5116
|
+
borderRadius: "99px",
|
|
5117
|
+
flexShrink: 0
|
|
5118
|
+
},
|
|
5119
|
+
button: {
|
|
5120
|
+
base: {
|
|
5121
|
+
display: "inline-flex",
|
|
5122
|
+
alignItems: "center",
|
|
5123
|
+
justifyContent: "center",
|
|
5124
|
+
gap: "8px",
|
|
5125
|
+
padding: "8px 16px",
|
|
5126
|
+
borderRadius: "99px",
|
|
5127
|
+
border: "none",
|
|
5128
|
+
cursor: "pointer",
|
|
5129
|
+
fontSize: "13px",
|
|
5130
|
+
fontWeight: "600",
|
|
5131
|
+
lineHeight: "1.5",
|
|
5132
|
+
transition: "all 0.15s ease-in-out",
|
|
5133
|
+
outline: "none",
|
|
5134
|
+
whiteSpace: "nowrap"
|
|
5135
|
+
},
|
|
5136
|
+
default: {
|
|
5137
|
+
backgroundColor: "transparent",
|
|
5138
|
+
color: "#595959"
|
|
5139
|
+
},
|
|
5140
|
+
hover: {
|
|
5141
|
+
backgroundColor: "#f8f8f8",
|
|
5142
|
+
color: "#2f2f2f"
|
|
5143
|
+
},
|
|
5144
|
+
active: {
|
|
5145
|
+
backgroundColor: "#0e8a0e",
|
|
5146
|
+
color: "#ffffff"
|
|
5147
|
+
},
|
|
5148
|
+
activeHover: {
|
|
5149
|
+
backgroundColor: "#005700",
|
|
5150
|
+
color: "#ffffff"
|
|
5151
|
+
}
|
|
5152
|
+
}
|
|
5153
|
+
}
|
|
5154
|
+
};
|
|
5155
|
+
var SectionHeading = React27.forwardRef(
|
|
5156
|
+
({ title, icon, avatar, button, buttonGroup, className, style, ...props }, ref) => {
|
|
5157
|
+
const [buttonHovered, setButtonHovered] = React27.useState(false);
|
|
5158
|
+
const [hoveredGroupIndex, setHoveredGroupIndex] = React27.useState(null);
|
|
5159
|
+
if (button && buttonGroup) {
|
|
5160
|
+
console.warn("SectionHeading: button and buttonGroup are mutually exclusive. Only button will be rendered.");
|
|
5161
|
+
}
|
|
5162
|
+
const renderAvatar = () => {
|
|
5163
|
+
if (!avatar) return null;
|
|
5164
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { style: sectionHeadingStyles.avatar, children: avatar.src ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
5165
|
+
"img",
|
|
5166
|
+
{
|
|
5167
|
+
src: avatar.src,
|
|
5168
|
+
alt: avatar.alt || "Avatar",
|
|
5169
|
+
style: sectionHeadingStyles.avatarImage
|
|
5170
|
+
}
|
|
5171
|
+
) : avatar.initials ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { style: sectionHeadingStyles.avatarInitials, children: avatar.initials }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(AvatarPlaceholder, {}) });
|
|
5172
|
+
};
|
|
5173
|
+
const renderTitle = () => {
|
|
5174
|
+
if (icon) {
|
|
5175
|
+
const iconVariant = typeof icon === "string" ? icon : "info";
|
|
5176
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { style: sectionHeadingStyles.titleWithIcon, children: [
|
|
5177
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("h2", { style: { ...sectionHeadingStyles.title, flex: "none" }, children: title }),
|
|
5178
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { style: sectionHeadingStyles.iconBadge, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SectionIcon, { variant: iconVariant }) })
|
|
5179
|
+
] });
|
|
5180
|
+
}
|
|
5181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("h2", { style: sectionHeadingStyles.title, children: title });
|
|
5182
|
+
};
|
|
5183
|
+
const renderButton = () => {
|
|
5184
|
+
if (!button) return null;
|
|
5185
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
5186
|
+
"button",
|
|
5187
|
+
{
|
|
5188
|
+
type: "button",
|
|
5189
|
+
style: {
|
|
5190
|
+
...sectionHeadingStyles.button,
|
|
5191
|
+
...buttonHovered && sectionHeadingStyles.buttonHover
|
|
5192
|
+
},
|
|
5193
|
+
onClick: button.onClick,
|
|
5194
|
+
onMouseEnter: () => setButtonHovered(true),
|
|
5195
|
+
onMouseLeave: () => setButtonHovered(false),
|
|
5196
|
+
children: [
|
|
5197
|
+
button.icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { style: { display: "flex", alignItems: "center", width: "16px", height: "16px" }, children: button.icon }),
|
|
5198
|
+
button.label
|
|
5199
|
+
]
|
|
5200
|
+
}
|
|
5201
|
+
);
|
|
5202
|
+
};
|
|
5203
|
+
const renderButtonGroup = () => {
|
|
5204
|
+
if (!buttonGroup || button) return null;
|
|
5205
|
+
const { items, activeIndex = 0, onChange } = buttonGroup;
|
|
5206
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { style: sectionHeadingStyles.buttonGroup.container, children: items.slice(0, 4).map((item, index) => {
|
|
5207
|
+
const isActive = index === activeIndex;
|
|
5208
|
+
const isHovered = hoveredGroupIndex === index;
|
|
5209
|
+
let btnStyle = {
|
|
5210
|
+
...sectionHeadingStyles.buttonGroup.button.base
|
|
5211
|
+
};
|
|
5212
|
+
if (isActive) {
|
|
5213
|
+
btnStyle = {
|
|
5214
|
+
...btnStyle,
|
|
5215
|
+
...sectionHeadingStyles.buttonGroup.button.active,
|
|
5216
|
+
...isHovered && sectionHeadingStyles.buttonGroup.button.activeHover
|
|
5217
|
+
};
|
|
5218
|
+
} else {
|
|
5219
|
+
btnStyle = {
|
|
5220
|
+
...btnStyle,
|
|
5221
|
+
...sectionHeadingStyles.buttonGroup.button.default,
|
|
5222
|
+
...isHovered && sectionHeadingStyles.buttonGroup.button.hover
|
|
5223
|
+
};
|
|
5224
|
+
}
|
|
5225
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
5226
|
+
"button",
|
|
5227
|
+
{
|
|
5228
|
+
type: "button",
|
|
5229
|
+
style: btnStyle,
|
|
5230
|
+
onClick: () => {
|
|
5231
|
+
if (index !== activeIndex && onChange) {
|
|
5232
|
+
onChange(index);
|
|
5233
|
+
}
|
|
5234
|
+
},
|
|
5235
|
+
onMouseEnter: () => setHoveredGroupIndex(index),
|
|
5236
|
+
onMouseLeave: () => setHoveredGroupIndex(null),
|
|
5237
|
+
children: [
|
|
5238
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { style: { display: "flex", alignItems: "center", width: "16px", height: "16px" }, children: item.icon }),
|
|
5239
|
+
item.label
|
|
5240
|
+
]
|
|
5241
|
+
},
|
|
5242
|
+
item.value || index
|
|
5243
|
+
);
|
|
5244
|
+
}) });
|
|
5245
|
+
};
|
|
5246
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
5247
|
+
"div",
|
|
5248
|
+
{
|
|
5249
|
+
ref,
|
|
5250
|
+
className: (0, import_clsx22.clsx)("arbor-section-heading", className),
|
|
5251
|
+
style: { ...sectionHeadingStyles.container, ...style },
|
|
5252
|
+
...props,
|
|
5253
|
+
children: [
|
|
5254
|
+
renderAvatar(),
|
|
5255
|
+
renderTitle(),
|
|
5256
|
+
renderButton(),
|
|
5257
|
+
renderButtonGroup()
|
|
5258
|
+
]
|
|
5259
|
+
}
|
|
5260
|
+
);
|
|
5261
|
+
}
|
|
5262
|
+
);
|
|
5263
|
+
SectionHeading.displayName = "SectionHeading";
|
|
5264
|
+
|
|
5265
|
+
// src/ListRow/ListRow.tsx
|
|
5266
|
+
var React28 = __toESM(require("react"));
|
|
5267
|
+
var import_clsx23 = require("clsx");
|
|
5268
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
5269
|
+
var CaretIcon = ({ isHovered }) => {
|
|
5270
|
+
if (isHovered) {
|
|
5271
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
5272
|
+
"path",
|
|
5273
|
+
{
|
|
5274
|
+
d: "M6 4L10 8L6 12",
|
|
5275
|
+
stroke: "#2f2f2f",
|
|
5276
|
+
strokeWidth: "1.2",
|
|
5277
|
+
strokeLinecap: "round",
|
|
5278
|
+
strokeLinejoin: "round"
|
|
5279
|
+
}
|
|
5280
|
+
) });
|
|
5281
|
+
}
|
|
5282
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
5283
|
+
"path",
|
|
5284
|
+
{
|
|
5285
|
+
d: "M6 4L10 8L6 12",
|
|
5286
|
+
stroke: "#b3b3b3",
|
|
5287
|
+
strokeWidth: "1.2",
|
|
5288
|
+
strokeLinecap: "round",
|
|
5289
|
+
strokeLinejoin: "round"
|
|
5290
|
+
}
|
|
5291
|
+
) });
|
|
5292
|
+
};
|
|
5293
|
+
var listRowStyles = {
|
|
5294
|
+
container: {
|
|
5295
|
+
display: "flex",
|
|
5296
|
+
alignItems: "center",
|
|
5297
|
+
width: "100%",
|
|
5298
|
+
borderBottom: "1px solid #f8f8f8",
|
|
5299
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
5300
|
+
boxSizing: "border-box",
|
|
5301
|
+
borderRadius: "8px",
|
|
5302
|
+
transition: "background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out",
|
|
5303
|
+
outline: "none"
|
|
5304
|
+
},
|
|
5305
|
+
containerHover: {
|
|
5306
|
+
backgroundColor: "#f8f8f8"
|
|
5307
|
+
},
|
|
5308
|
+
containerFocus: {
|
|
5309
|
+
outline: "3px solid #3cad51",
|
|
5310
|
+
outlineOffset: "-3px"
|
|
5311
|
+
},
|
|
5312
|
+
containerClickable: {
|
|
5313
|
+
cursor: "pointer"
|
|
5314
|
+
},
|
|
5315
|
+
content: {
|
|
5316
|
+
display: "flex",
|
|
5317
|
+
alignItems: "center",
|
|
5318
|
+
justifyContent: "space-between",
|
|
5319
|
+
width: "100%",
|
|
5320
|
+
padding: "4px 8px",
|
|
5321
|
+
minHeight: "28px"
|
|
5322
|
+
},
|
|
5323
|
+
label: {
|
|
5324
|
+
fontSize: "13px",
|
|
5325
|
+
fontWeight: "600",
|
|
5326
|
+
color: "#2f2f2f",
|
|
5327
|
+
lineHeight: "1.5",
|
|
5328
|
+
width: "190px",
|
|
5329
|
+
flexShrink: 0
|
|
5330
|
+
},
|
|
5331
|
+
valueContainer: {
|
|
5332
|
+
flex: 1,
|
|
5333
|
+
display: "flex",
|
|
5334
|
+
alignItems: "center"
|
|
5335
|
+
},
|
|
5336
|
+
value: {
|
|
5337
|
+
fontSize: "13px",
|
|
5338
|
+
fontWeight: "400",
|
|
5339
|
+
color: "#2f2f2f",
|
|
5340
|
+
lineHeight: "1.5"
|
|
5341
|
+
},
|
|
5342
|
+
rightContainer: {
|
|
5343
|
+
display: "flex",
|
|
5344
|
+
alignItems: "center",
|
|
5345
|
+
justifyContent: "flex-end",
|
|
5346
|
+
gap: "8px",
|
|
5347
|
+
flexShrink: 0
|
|
5348
|
+
},
|
|
5349
|
+
note: {
|
|
5350
|
+
fontSize: "13px",
|
|
5351
|
+
fontWeight: "400",
|
|
5352
|
+
fontStyle: "italic",
|
|
5353
|
+
color: "#2f2f2f",
|
|
5354
|
+
lineHeight: "1.5",
|
|
5355
|
+
textAlign: "right"
|
|
5356
|
+
},
|
|
5357
|
+
iconWrapper: {
|
|
5358
|
+
display: "flex",
|
|
5359
|
+
alignItems: "center",
|
|
5360
|
+
justifyContent: "center",
|
|
5361
|
+
width: "16px",
|
|
5362
|
+
height: "16px",
|
|
5363
|
+
flexShrink: 0
|
|
5364
|
+
}
|
|
5365
|
+
};
|
|
5366
|
+
var ListRow = React28.forwardRef(
|
|
5367
|
+
({ value, label, note, icon = false, onClick, className, style, ...props }, ref) => {
|
|
5368
|
+
const [isHovered, setIsHovered] = React28.useState(false);
|
|
5369
|
+
const [isFocused, setIsFocused] = React28.useState(false);
|
|
5370
|
+
const showHoverState = icon && isHovered;
|
|
5371
|
+
const isClickable = icon && onClick;
|
|
5372
|
+
const containerStyle = {
|
|
5373
|
+
...listRowStyles.container,
|
|
5374
|
+
...showHoverState && listRowStyles.containerHover,
|
|
5375
|
+
...isFocused && listRowStyles.containerFocus,
|
|
5376
|
+
...isClickable && listRowStyles.containerClickable,
|
|
5377
|
+
...style
|
|
5378
|
+
};
|
|
5379
|
+
const handleClick = () => {
|
|
5380
|
+
if (isClickable && onClick) {
|
|
5381
|
+
onClick();
|
|
5382
|
+
}
|
|
5383
|
+
};
|
|
5384
|
+
const handleKeyDown = (event) => {
|
|
5385
|
+
if (isClickable && (event.key === "Enter" || event.key === " ")) {
|
|
5386
|
+
event.preventDefault();
|
|
5387
|
+
onClick?.();
|
|
5388
|
+
}
|
|
5389
|
+
};
|
|
5390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
5391
|
+
"div",
|
|
5392
|
+
{
|
|
5393
|
+
ref,
|
|
5394
|
+
className: (0, import_clsx23.clsx)("arbor-list-row", className),
|
|
5395
|
+
style: containerStyle,
|
|
5396
|
+
onClick: handleClick,
|
|
5397
|
+
onMouseEnter: () => icon && setIsHovered(true),
|
|
5398
|
+
onMouseLeave: () => setIsHovered(false),
|
|
5399
|
+
onFocus: () => setIsFocused(true),
|
|
5400
|
+
onBlur: () => setIsFocused(false),
|
|
5401
|
+
onKeyDown: handleKeyDown,
|
|
5402
|
+
tabIndex: isClickable ? 0 : void 0,
|
|
5403
|
+
role: isClickable ? "button" : void 0,
|
|
5404
|
+
...props,
|
|
5405
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { style: listRowStyles.content, children: [
|
|
5406
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { style: listRowStyles.label, children: label }),
|
|
5407
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { style: listRowStyles.valueContainer, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { style: listRowStyles.value, children: value }) }),
|
|
5408
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { style: listRowStyles.rightContainer, children: [
|
|
5409
|
+
note && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { style: listRowStyles.note, children: note }),
|
|
5410
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { style: listRowStyles.iconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CaretIcon, { isHovered }) })
|
|
5411
|
+
] })
|
|
5412
|
+
] })
|
|
5413
|
+
}
|
|
5414
|
+
);
|
|
5415
|
+
}
|
|
5416
|
+
);
|
|
5417
|
+
ListRow.displayName = "ListRow";
|
|
5418
|
+
|
|
5419
|
+
// src/ListRowMultiLine/ListRowMultiLine.tsx
|
|
5420
|
+
var React29 = __toESM(require("react"));
|
|
5421
|
+
var import_clsx24 = require("clsx");
|
|
5422
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
5423
|
+
var CaretIcon2 = ({ isHovered }) => {
|
|
5424
|
+
if (isHovered) {
|
|
5425
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
5426
|
+
"path",
|
|
5427
|
+
{
|
|
5428
|
+
d: "M6 4L10 8L6 12",
|
|
5429
|
+
stroke: "#2f2f2f",
|
|
5430
|
+
strokeWidth: "1.2",
|
|
5431
|
+
strokeLinecap: "round",
|
|
5432
|
+
strokeLinejoin: "round"
|
|
5433
|
+
}
|
|
5434
|
+
) });
|
|
5435
|
+
}
|
|
5436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
5437
|
+
"path",
|
|
5438
|
+
{
|
|
5439
|
+
d: "M6 4L10 8L6 12",
|
|
5440
|
+
stroke: "#b3b3b3",
|
|
5441
|
+
strokeWidth: "1.2",
|
|
5442
|
+
strokeLinecap: "round",
|
|
5443
|
+
strokeLinejoin: "round"
|
|
5444
|
+
}
|
|
5445
|
+
) });
|
|
5446
|
+
};
|
|
5447
|
+
var listRowMultiLineStyles = {
|
|
5448
|
+
container: {
|
|
5449
|
+
display: "flex",
|
|
5450
|
+
alignItems: "center",
|
|
5451
|
+
width: "100%",
|
|
5452
|
+
borderBottom: "1px solid #f8f8f8",
|
|
5453
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
5454
|
+
boxSizing: "border-box",
|
|
5455
|
+
borderRadius: "8px",
|
|
5456
|
+
transition: "background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out",
|
|
5457
|
+
outline: "none"
|
|
5458
|
+
},
|
|
5459
|
+
containerHover: {
|
|
5460
|
+
backgroundColor: "#f8f8f8"
|
|
5461
|
+
},
|
|
5462
|
+
containerFocus: {
|
|
5463
|
+
outline: "3px solid #3cad51",
|
|
5464
|
+
outlineOffset: "-3px"
|
|
5465
|
+
},
|
|
5466
|
+
containerClickable: {
|
|
5467
|
+
cursor: "pointer"
|
|
5468
|
+
},
|
|
5469
|
+
content: {
|
|
5470
|
+
display: "flex",
|
|
5471
|
+
alignItems: "center",
|
|
5472
|
+
justifyContent: "space-between",
|
|
5473
|
+
width: "100%",
|
|
5474
|
+
padding: "4px 8px",
|
|
5475
|
+
minHeight: "44px"
|
|
5476
|
+
},
|
|
5477
|
+
textContent: {
|
|
5478
|
+
display: "flex",
|
|
5479
|
+
flexDirection: "column",
|
|
5480
|
+
alignItems: "flex-start",
|
|
5481
|
+
justifyContent: "center",
|
|
5482
|
+
flex: 1,
|
|
5483
|
+
gap: "0px"
|
|
5484
|
+
},
|
|
5485
|
+
title: {
|
|
5486
|
+
fontSize: "16px",
|
|
5487
|
+
fontWeight: "600",
|
|
5488
|
+
color: "#2f2f2f",
|
|
5489
|
+
lineHeight: "1.5",
|
|
5490
|
+
margin: 0
|
|
5491
|
+
},
|
|
5492
|
+
description: {
|
|
5493
|
+
fontSize: "13px",
|
|
5494
|
+
fontWeight: "400",
|
|
5495
|
+
color: "#2f2f2f",
|
|
5496
|
+
lineHeight: "1.5",
|
|
5497
|
+
margin: 0
|
|
5498
|
+
},
|
|
5499
|
+
iconWrapper: {
|
|
5500
|
+
display: "flex",
|
|
5501
|
+
alignItems: "center",
|
|
5502
|
+
justifyContent: "center",
|
|
5503
|
+
width: "16px",
|
|
5504
|
+
height: "16px",
|
|
5505
|
+
flexShrink: 0,
|
|
5506
|
+
marginLeft: "8px"
|
|
5507
|
+
}
|
|
5508
|
+
};
|
|
5509
|
+
var ListRowMultiLine = React29.forwardRef(
|
|
5510
|
+
({ title, description, icon = false, onClick, className, style, ...props }, ref) => {
|
|
5511
|
+
const [isHovered, setIsHovered] = React29.useState(false);
|
|
5512
|
+
const [isFocused, setIsFocused] = React29.useState(false);
|
|
5513
|
+
const showHoverState = icon && isHovered;
|
|
5514
|
+
const isClickable = icon && onClick;
|
|
5515
|
+
const containerStyle = {
|
|
5516
|
+
...listRowMultiLineStyles.container,
|
|
5517
|
+
...showHoverState && listRowMultiLineStyles.containerHover,
|
|
5518
|
+
...isFocused && listRowMultiLineStyles.containerFocus,
|
|
5519
|
+
...isClickable && listRowMultiLineStyles.containerClickable,
|
|
5520
|
+
...style
|
|
5521
|
+
};
|
|
5522
|
+
const handleClick = () => {
|
|
5523
|
+
if (isClickable && onClick) {
|
|
5524
|
+
onClick();
|
|
5525
|
+
}
|
|
5526
|
+
};
|
|
5527
|
+
const handleKeyDown = (event) => {
|
|
5528
|
+
if (isClickable && (event.key === "Enter" || event.key === " ")) {
|
|
5529
|
+
event.preventDefault();
|
|
5530
|
+
onClick?.();
|
|
5531
|
+
}
|
|
5532
|
+
};
|
|
5533
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
5534
|
+
"div",
|
|
5535
|
+
{
|
|
5536
|
+
ref,
|
|
5537
|
+
className: (0, import_clsx24.clsx)("arbor-list-row-multi-line", className),
|
|
5538
|
+
style: containerStyle,
|
|
5539
|
+
onClick: handleClick,
|
|
5540
|
+
onMouseEnter: () => icon && setIsHovered(true),
|
|
5541
|
+
onMouseLeave: () => setIsHovered(false),
|
|
5542
|
+
onFocus: () => setIsFocused(true),
|
|
5543
|
+
onBlur: () => setIsFocused(false),
|
|
5544
|
+
onKeyDown: handleKeyDown,
|
|
5545
|
+
tabIndex: isClickable ? 0 : void 0,
|
|
5546
|
+
role: isClickable ? "button" : void 0,
|
|
5547
|
+
...props,
|
|
5548
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { style: listRowMultiLineStyles.content, children: [
|
|
5549
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { style: listRowMultiLineStyles.textContent, children: [
|
|
5550
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { style: listRowMultiLineStyles.title, children: title }),
|
|
5551
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { style: listRowMultiLineStyles.description, children: description })
|
|
5552
|
+
] }),
|
|
5553
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { style: listRowMultiLineStyles.iconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(CaretIcon2, { isHovered }) })
|
|
5554
|
+
] })
|
|
5555
|
+
}
|
|
5556
|
+
);
|
|
5557
|
+
}
|
|
5558
|
+
);
|
|
5559
|
+
ListRowMultiLine.displayName = "ListRowMultiLine";
|
|
5560
|
+
|
|
5561
|
+
// src/SubSectionHeading/SubSectionHeading.tsx
|
|
5562
|
+
var React30 = __toESM(require("react"));
|
|
5563
|
+
var import_clsx25 = require("clsx");
|
|
5564
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
5565
|
+
var InfoIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
5566
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("circle", { cx: "8", cy: "8", r: "6.5", stroke: "#2f2f2f", strokeWidth: "1.2" }),
|
|
5567
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
5568
|
+
"path",
|
|
5569
|
+
{
|
|
5570
|
+
d: "M8 7V11",
|
|
5571
|
+
stroke: "#2f2f2f",
|
|
5572
|
+
strokeWidth: "1.2",
|
|
5573
|
+
strokeLinecap: "round"
|
|
5574
|
+
}
|
|
5575
|
+
),
|
|
5576
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("circle", { cx: "8", cy: "5", r: "0.75", fill: "#2f2f2f" })
|
|
5577
|
+
] });
|
|
5578
|
+
var PlusIcon = ({ color = "#2f2f2f" }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
5579
|
+
"path",
|
|
5580
|
+
{
|
|
5581
|
+
d: "M8 3V13M3 8H13",
|
|
5582
|
+
stroke: color,
|
|
5583
|
+
strokeWidth: "1.2",
|
|
5584
|
+
strokeLinecap: "round",
|
|
5585
|
+
strokeLinejoin: "round"
|
|
5586
|
+
}
|
|
5587
|
+
) });
|
|
5588
|
+
var subSectionHeadingStyles = {
|
|
5589
|
+
container: {
|
|
5590
|
+
display: "flex",
|
|
5591
|
+
alignItems: "center",
|
|
5592
|
+
width: "100%",
|
|
5593
|
+
borderBottom: "1px solid #efefef",
|
|
5594
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
5595
|
+
boxSizing: "border-box"
|
|
5596
|
+
},
|
|
5597
|
+
containerNoButton: {
|
|
5598
|
+
padding: "12px 8px",
|
|
5599
|
+
gap: "0px"
|
|
5600
|
+
},
|
|
5601
|
+
containerWithButton: {
|
|
5602
|
+
padding: "8px",
|
|
5603
|
+
gap: "12px",
|
|
5604
|
+
justifyContent: "space-between"
|
|
5605
|
+
},
|
|
5606
|
+
textContainer: {
|
|
5607
|
+
display: "flex",
|
|
5608
|
+
alignItems: "center",
|
|
5609
|
+
gap: "8px",
|
|
5610
|
+
flex: 1,
|
|
5611
|
+
minHeight: "16px"
|
|
5612
|
+
},
|
|
5613
|
+
title: {
|
|
5614
|
+
fontSize: "18px",
|
|
5615
|
+
fontWeight: "600",
|
|
5616
|
+
color: "#2f2f2f",
|
|
5617
|
+
lineHeight: "1.25",
|
|
5618
|
+
margin: 0,
|
|
5619
|
+
whiteSpace: "nowrap"
|
|
5620
|
+
},
|
|
5621
|
+
iconWrapper: {
|
|
5622
|
+
display: "flex",
|
|
5623
|
+
alignItems: "center",
|
|
5624
|
+
justifyContent: "center",
|
|
5625
|
+
width: "16px",
|
|
5626
|
+
height: "16px",
|
|
5627
|
+
flexShrink: 0
|
|
5628
|
+
},
|
|
5629
|
+
buttonBase: {
|
|
5630
|
+
display: "flex",
|
|
5631
|
+
alignItems: "center",
|
|
5632
|
+
justifyContent: "center",
|
|
5633
|
+
gap: "8px",
|
|
5634
|
+
height: "32px",
|
|
5635
|
+
minHeight: "32px",
|
|
5636
|
+
padding: "0 16px",
|
|
5637
|
+
borderRadius: "99px",
|
|
5638
|
+
border: "none",
|
|
5639
|
+
cursor: "pointer",
|
|
5640
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
5641
|
+
fontSize: "13px",
|
|
5642
|
+
fontWeight: "600",
|
|
5643
|
+
lineHeight: "1.5",
|
|
5644
|
+
whiteSpace: "nowrap",
|
|
5645
|
+
flexShrink: 0,
|
|
5646
|
+
transition: "background-color 0.15s ease-in-out, opacity 0.15s ease-in-out"
|
|
5647
|
+
},
|
|
5648
|
+
buttonPrimary: {
|
|
5649
|
+
backgroundColor: "#0e8a0e",
|
|
5650
|
+
color: "#ffffff"
|
|
5651
|
+
},
|
|
5652
|
+
buttonPrimaryHover: {
|
|
5653
|
+
backgroundColor: "#0a6b0a"
|
|
5654
|
+
},
|
|
5655
|
+
buttonTertiary: {
|
|
5656
|
+
backgroundColor: "#efefef",
|
|
5657
|
+
color: "#2f2f2f"
|
|
5658
|
+
},
|
|
5659
|
+
buttonTertiaryHover: {
|
|
5660
|
+
backgroundColor: "#e5e5e5"
|
|
5661
|
+
},
|
|
5662
|
+
buttonIconWrapper: {
|
|
5663
|
+
display: "flex",
|
|
5664
|
+
alignItems: "center",
|
|
5665
|
+
justifyContent: "center",
|
|
5666
|
+
width: "16px",
|
|
5667
|
+
height: "16px",
|
|
5668
|
+
flexShrink: 0
|
|
5669
|
+
}
|
|
5670
|
+
};
|
|
5671
|
+
var SubSectionHeading = React30.forwardRef(
|
|
5672
|
+
({
|
|
5673
|
+
title,
|
|
5674
|
+
icon = false,
|
|
5675
|
+
button,
|
|
5676
|
+
buttonText = "Button Text",
|
|
5677
|
+
buttonIcon,
|
|
5678
|
+
onButtonClick,
|
|
5679
|
+
className,
|
|
5680
|
+
style,
|
|
5681
|
+
...props
|
|
5682
|
+
}, ref) => {
|
|
5683
|
+
const [isButtonHovered, setIsButtonHovered] = React30.useState(false);
|
|
5684
|
+
const containerStyle = {
|
|
5685
|
+
...subSectionHeadingStyles.container,
|
|
5686
|
+
...button ? subSectionHeadingStyles.containerWithButton : subSectionHeadingStyles.containerNoButton,
|
|
5687
|
+
...style
|
|
5688
|
+
};
|
|
5689
|
+
const getButtonStyle = () => {
|
|
5690
|
+
const baseStyle = { ...subSectionHeadingStyles.buttonBase };
|
|
5691
|
+
if (button === "primary") {
|
|
5692
|
+
return {
|
|
5693
|
+
...baseStyle,
|
|
5694
|
+
...subSectionHeadingStyles.buttonPrimary,
|
|
5695
|
+
...isButtonHovered && subSectionHeadingStyles.buttonPrimaryHover
|
|
5696
|
+
};
|
|
5697
|
+
}
|
|
5698
|
+
if (button === "tertiary") {
|
|
5699
|
+
return {
|
|
5700
|
+
...baseStyle,
|
|
5701
|
+
...subSectionHeadingStyles.buttonTertiary,
|
|
5702
|
+
...isButtonHovered && subSectionHeadingStyles.buttonTertiaryHover
|
|
5703
|
+
};
|
|
5704
|
+
}
|
|
5705
|
+
return baseStyle;
|
|
5706
|
+
};
|
|
5707
|
+
const renderButtonIcon = () => {
|
|
5708
|
+
if (buttonIcon) {
|
|
5709
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { style: subSectionHeadingStyles.buttonIconWrapper, children: buttonIcon });
|
|
5710
|
+
}
|
|
5711
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { style: subSectionHeadingStyles.buttonIconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(PlusIcon, { color: button === "primary" ? "#ffffff" : "#2f2f2f" }) });
|
|
5712
|
+
};
|
|
5713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
5714
|
+
"div",
|
|
5715
|
+
{
|
|
5716
|
+
ref,
|
|
5717
|
+
className: (0, import_clsx25.clsx)("arbor-sub-section-heading", className),
|
|
5718
|
+
style: containerStyle,
|
|
5719
|
+
...props,
|
|
5720
|
+
children: [
|
|
5721
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { style: subSectionHeadingStyles.textContainer, children: [
|
|
5722
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h3", { style: subSectionHeadingStyles.title, children: title }),
|
|
5723
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { style: subSectionHeadingStyles.iconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(InfoIcon2, {}) })
|
|
5724
|
+
] }),
|
|
5725
|
+
button && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
5726
|
+
"button",
|
|
5727
|
+
{
|
|
5728
|
+
type: "button",
|
|
5729
|
+
style: getButtonStyle(),
|
|
5730
|
+
onClick: onButtonClick,
|
|
5731
|
+
onMouseEnter: () => setIsButtonHovered(true),
|
|
5732
|
+
onMouseLeave: () => setIsButtonHovered(false),
|
|
5733
|
+
children: [
|
|
5734
|
+
renderButtonIcon(),
|
|
5735
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: buttonText })
|
|
5736
|
+
]
|
|
5737
|
+
}
|
|
5738
|
+
)
|
|
5739
|
+
]
|
|
5740
|
+
}
|
|
5741
|
+
);
|
|
5742
|
+
}
|
|
5743
|
+
);
|
|
5744
|
+
SubSectionHeading.displayName = "SubSectionHeading";
|
|
5745
|
+
|
|
5746
|
+
// src/SubSectionInteractive/SubSectionInteractive.tsx
|
|
5747
|
+
var React31 = __toESM(require("react"));
|
|
5748
|
+
var import_clsx26 = require("clsx");
|
|
5749
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
5750
|
+
var ChevronIcon = ({ expanded }) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
5751
|
+
"svg",
|
|
5752
|
+
{
|
|
5753
|
+
width: "16",
|
|
5754
|
+
height: "16",
|
|
5755
|
+
viewBox: "0 0 16 16",
|
|
5756
|
+
fill: "none",
|
|
5757
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
5758
|
+
style: {
|
|
5759
|
+
transform: expanded ? "rotate(0deg)" : "rotate(180deg)",
|
|
5760
|
+
transition: "transform 0.2s ease-in-out"
|
|
5761
|
+
},
|
|
5762
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
5763
|
+
"path",
|
|
5764
|
+
{
|
|
5765
|
+
d: "M4 6L8 10L12 6",
|
|
5766
|
+
stroke: "#2f2f2f",
|
|
5767
|
+
strokeWidth: "1.2",
|
|
5768
|
+
strokeLinecap: "round",
|
|
5769
|
+
strokeLinejoin: "round"
|
|
5770
|
+
}
|
|
5771
|
+
)
|
|
5772
|
+
}
|
|
5773
|
+
);
|
|
5774
|
+
var subSectionInteractiveStyles = {
|
|
5775
|
+
container: {
|
|
5776
|
+
display: "flex",
|
|
5777
|
+
flexDirection: "column",
|
|
5778
|
+
width: "100%",
|
|
5779
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
5780
|
+
boxSizing: "border-box"
|
|
5781
|
+
},
|
|
5782
|
+
header: {
|
|
5783
|
+
display: "flex",
|
|
5784
|
+
alignItems: "center",
|
|
5785
|
+
width: "100%",
|
|
5786
|
+
cursor: "pointer",
|
|
5787
|
+
border: "none",
|
|
5788
|
+
background: "transparent",
|
|
5789
|
+
padding: 0,
|
|
5790
|
+
margin: 0,
|
|
5791
|
+
textAlign: "left",
|
|
5792
|
+
outline: "none"
|
|
5793
|
+
},
|
|
5794
|
+
headerContent: {
|
|
5795
|
+
display: "flex",
|
|
5796
|
+
alignItems: "center",
|
|
5797
|
+
justifyContent: "space-between",
|
|
5798
|
+
width: "100%",
|
|
5799
|
+
padding: "12px 8px",
|
|
5800
|
+
borderRadius: "8px",
|
|
5801
|
+
transition: "background-color 0.15s ease-in-out",
|
|
5802
|
+
minHeight: "16px",
|
|
5803
|
+
gap: "12px"
|
|
5804
|
+
},
|
|
5805
|
+
headerContentHover: {
|
|
5806
|
+
backgroundColor: "#f8f8f8"
|
|
5807
|
+
},
|
|
5808
|
+
headerContentFocus: {
|
|
5809
|
+
outline: "3px solid #3cad51",
|
|
5810
|
+
outlineOffset: "-3px"
|
|
5811
|
+
},
|
|
5812
|
+
title: {
|
|
5813
|
+
fontSize: "18px",
|
|
5814
|
+
fontWeight: "600",
|
|
5815
|
+
color: "#2f2f2f",
|
|
5816
|
+
lineHeight: "1.25",
|
|
5817
|
+
margin: 0,
|
|
5818
|
+
flex: 1,
|
|
5819
|
+
whiteSpace: "nowrap"
|
|
5820
|
+
},
|
|
5821
|
+
iconWrapper: {
|
|
5822
|
+
display: "flex",
|
|
5823
|
+
alignItems: "center",
|
|
5824
|
+
justifyContent: "center",
|
|
5825
|
+
width: "16px",
|
|
5826
|
+
height: "16px",
|
|
5827
|
+
flexShrink: 0
|
|
5828
|
+
},
|
|
5829
|
+
content: {
|
|
5830
|
+
overflow: "hidden",
|
|
5831
|
+
transition: "max-height 0.3s ease-in-out, opacity 0.2s ease-in-out"
|
|
5832
|
+
},
|
|
5833
|
+
contentExpanded: {
|
|
5834
|
+
maxHeight: "2000px",
|
|
5835
|
+
opacity: 1
|
|
5836
|
+
},
|
|
5837
|
+
contentCollapsed: {
|
|
5838
|
+
maxHeight: "0px",
|
|
5839
|
+
opacity: 0
|
|
5840
|
+
},
|
|
5841
|
+
contentInner: {
|
|
5842
|
+
borderBottom: "1px solid #f8f8f8"
|
|
5843
|
+
}
|
|
5844
|
+
};
|
|
5845
|
+
var SubSectionInteractive = React31.forwardRef(
|
|
5846
|
+
({
|
|
5847
|
+
title,
|
|
5848
|
+
children,
|
|
5849
|
+
expanded: controlledExpanded,
|
|
5850
|
+
defaultExpanded = true,
|
|
5851
|
+
onExpandedChange,
|
|
5852
|
+
className,
|
|
5853
|
+
style,
|
|
5854
|
+
...props
|
|
5855
|
+
}, ref) => {
|
|
5856
|
+
const [internalExpanded, setInternalExpanded] = React31.useState(defaultExpanded);
|
|
5857
|
+
const isControlled = controlledExpanded !== void 0;
|
|
5858
|
+
const isExpanded = isControlled ? controlledExpanded : internalExpanded;
|
|
5859
|
+
const [isHovered, setIsHovered] = React31.useState(false);
|
|
5860
|
+
const [isFocused, setIsFocused] = React31.useState(false);
|
|
5861
|
+
const handleToggle = () => {
|
|
5862
|
+
const newExpanded = !isExpanded;
|
|
5863
|
+
if (!isControlled) {
|
|
5864
|
+
setInternalExpanded(newExpanded);
|
|
5865
|
+
}
|
|
5866
|
+
onExpandedChange?.(newExpanded);
|
|
5867
|
+
};
|
|
5868
|
+
const handleKeyDown = (event) => {
|
|
5869
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
5870
|
+
event.preventDefault();
|
|
5871
|
+
handleToggle();
|
|
5872
|
+
}
|
|
5873
|
+
};
|
|
5874
|
+
const headerContentStyle = {
|
|
5875
|
+
...subSectionInteractiveStyles.headerContent,
|
|
5876
|
+
...isHovered && subSectionInteractiveStyles.headerContentHover,
|
|
5877
|
+
...isFocused && subSectionInteractiveStyles.headerContentFocus
|
|
5878
|
+
};
|
|
5879
|
+
const contentStyle = {
|
|
5880
|
+
...subSectionInteractiveStyles.content,
|
|
5881
|
+
...isExpanded ? subSectionInteractiveStyles.contentExpanded : subSectionInteractiveStyles.contentCollapsed
|
|
5882
|
+
};
|
|
5883
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
5884
|
+
"div",
|
|
5885
|
+
{
|
|
5886
|
+
ref,
|
|
5887
|
+
className: (0, import_clsx26.clsx)("arbor-sub-section-interactive", className),
|
|
5888
|
+
style: { ...subSectionInteractiveStyles.container, ...style },
|
|
5889
|
+
...props,
|
|
5890
|
+
children: [
|
|
5891
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
5892
|
+
"button",
|
|
5893
|
+
{
|
|
5894
|
+
type: "button",
|
|
5895
|
+
style: subSectionInteractiveStyles.header,
|
|
5896
|
+
onClick: handleToggle,
|
|
5897
|
+
onMouseEnter: () => setIsHovered(true),
|
|
5898
|
+
onMouseLeave: () => setIsHovered(false),
|
|
5899
|
+
onFocus: () => setIsFocused(true),
|
|
5900
|
+
onBlur: () => setIsFocused(false),
|
|
5901
|
+
onKeyDown: handleKeyDown,
|
|
5902
|
+
"aria-expanded": isExpanded,
|
|
5903
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { style: headerContentStyle, children: [
|
|
5904
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("h3", { style: subSectionInteractiveStyles.title, children: title }),
|
|
5905
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { style: subSectionInteractiveStyles.iconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ChevronIcon, { expanded: isExpanded }) })
|
|
5906
|
+
] })
|
|
5907
|
+
}
|
|
5908
|
+
),
|
|
5909
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { style: contentStyle, "aria-hidden": !isExpanded, children: children && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { style: subSectionInteractiveStyles.contentInner, children }) })
|
|
5910
|
+
]
|
|
5911
|
+
}
|
|
5912
|
+
);
|
|
5913
|
+
}
|
|
5914
|
+
);
|
|
5915
|
+
SubSectionInteractive.displayName = "SubSectionInteractive";
|
|
5916
|
+
|
|
5917
|
+
// src/SectionHeadingInteractive/SectionHeadingInteractive.tsx
|
|
5918
|
+
var React32 = __toESM(require("react"));
|
|
5919
|
+
var import_clsx27 = require("clsx");
|
|
5920
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
5921
|
+
var ChevronIcon2 = ({ expanded }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
5922
|
+
"svg",
|
|
5923
|
+
{
|
|
5924
|
+
width: "16",
|
|
5925
|
+
height: "16",
|
|
5926
|
+
viewBox: "0 0 16 16",
|
|
5927
|
+
fill: "none",
|
|
5928
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
5929
|
+
style: {
|
|
5930
|
+
transform: expanded ? "rotate(180deg)" : "rotate(0deg)",
|
|
5931
|
+
transition: "transform 0.2s ease-in-out"
|
|
5932
|
+
},
|
|
5933
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
5934
|
+
"path",
|
|
5935
|
+
{
|
|
5936
|
+
d: "M4 6L8 10L12 6",
|
|
5937
|
+
stroke: "#2f2f2f",
|
|
5938
|
+
strokeWidth: "1.2",
|
|
5939
|
+
strokeLinecap: "round",
|
|
5940
|
+
strokeLinejoin: "round"
|
|
5941
|
+
}
|
|
5942
|
+
)
|
|
5943
|
+
}
|
|
5944
|
+
);
|
|
5945
|
+
var sectionHeadingInteractiveStyles = {
|
|
5946
|
+
container: {
|
|
5947
|
+
display: "flex",
|
|
5948
|
+
flexDirection: "column",
|
|
5949
|
+
width: "100%",
|
|
5950
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
|
|
5951
|
+
boxSizing: "border-box"
|
|
5952
|
+
},
|
|
5953
|
+
header: {
|
|
5954
|
+
display: "flex",
|
|
5955
|
+
alignItems: "center",
|
|
5956
|
+
width: "100%",
|
|
5957
|
+
cursor: "pointer",
|
|
5958
|
+
border: "none",
|
|
5959
|
+
background: "transparent",
|
|
5960
|
+
padding: 0,
|
|
5961
|
+
margin: 0,
|
|
5962
|
+
textAlign: "left",
|
|
5963
|
+
outline: "none"
|
|
5964
|
+
},
|
|
5965
|
+
// When collapsed, no bottom border
|
|
5966
|
+
headerContainerCollapsed: {
|
|
5967
|
+
display: "flex",
|
|
5968
|
+
alignItems: "center",
|
|
5969
|
+
width: "100%"
|
|
5970
|
+
},
|
|
5971
|
+
// When expanded, has bottom border
|
|
5972
|
+
headerContainerExpanded: {
|
|
5973
|
+
display: "flex",
|
|
5974
|
+
alignItems: "center",
|
|
5975
|
+
width: "100%",
|
|
5976
|
+
borderBottom: "1px solid #f8f8f8"
|
|
5977
|
+
},
|
|
5978
|
+
headerContent: {
|
|
5979
|
+
display: "flex",
|
|
5980
|
+
alignItems: "center",
|
|
5981
|
+
justifyContent: "space-between",
|
|
5982
|
+
width: "100%",
|
|
5983
|
+
padding: "12px 8px",
|
|
5984
|
+
borderRadius: "8px",
|
|
5985
|
+
transition: "background-color 0.15s ease-in-out",
|
|
5986
|
+
minHeight: "16px",
|
|
5987
|
+
gap: "12px"
|
|
5988
|
+
},
|
|
5989
|
+
headerContentHover: {
|
|
5990
|
+
backgroundColor: "#f8f8f8"
|
|
5991
|
+
},
|
|
5992
|
+
headerContentFocus: {
|
|
5993
|
+
outline: "3px solid #3cad51",
|
|
5994
|
+
outlineOffset: "-3px"
|
|
5995
|
+
},
|
|
5996
|
+
title: {
|
|
5997
|
+
fontSize: "22px",
|
|
5998
|
+
fontWeight: "600",
|
|
5999
|
+
color: "#2f2f2f",
|
|
6000
|
+
lineHeight: "1.25",
|
|
6001
|
+
margin: 0,
|
|
6002
|
+
flex: 1,
|
|
6003
|
+
whiteSpace: "nowrap"
|
|
6004
|
+
},
|
|
6005
|
+
iconWrapper: {
|
|
6006
|
+
display: "flex",
|
|
6007
|
+
alignItems: "center",
|
|
6008
|
+
justifyContent: "center",
|
|
6009
|
+
width: "16px",
|
|
6010
|
+
height: "16px",
|
|
6011
|
+
flexShrink: 0
|
|
6012
|
+
},
|
|
6013
|
+
content: {
|
|
6014
|
+
overflow: "hidden",
|
|
6015
|
+
transition: "max-height 0.3s ease-in-out, opacity 0.2s ease-in-out"
|
|
6016
|
+
},
|
|
6017
|
+
contentExpanded: {
|
|
6018
|
+
maxHeight: "5000px",
|
|
6019
|
+
opacity: 1
|
|
6020
|
+
},
|
|
6021
|
+
contentCollapsed: {
|
|
6022
|
+
maxHeight: "0px",
|
|
6023
|
+
opacity: 0
|
|
6024
|
+
},
|
|
6025
|
+
contentInner: {
|
|
6026
|
+
// Content area styling - children go here
|
|
6027
|
+
}
|
|
6028
|
+
};
|
|
6029
|
+
var SectionHeadingInteractive = React32.forwardRef(
|
|
6030
|
+
({
|
|
6031
|
+
title,
|
|
6032
|
+
children,
|
|
6033
|
+
expanded: controlledExpanded,
|
|
6034
|
+
defaultExpanded = true,
|
|
6035
|
+
onExpandedChange,
|
|
6036
|
+
className,
|
|
6037
|
+
style,
|
|
6038
|
+
...props
|
|
6039
|
+
}, ref) => {
|
|
6040
|
+
const [internalExpanded, setInternalExpanded] = React32.useState(defaultExpanded);
|
|
6041
|
+
const isControlled = controlledExpanded !== void 0;
|
|
6042
|
+
const isExpanded = isControlled ? controlledExpanded : internalExpanded;
|
|
6043
|
+
const [isHovered, setIsHovered] = React32.useState(false);
|
|
6044
|
+
const [isFocused, setIsFocused] = React32.useState(false);
|
|
6045
|
+
const handleToggle = () => {
|
|
6046
|
+
const newExpanded = !isExpanded;
|
|
6047
|
+
if (!isControlled) {
|
|
6048
|
+
setInternalExpanded(newExpanded);
|
|
6049
|
+
}
|
|
6050
|
+
onExpandedChange?.(newExpanded);
|
|
6051
|
+
};
|
|
6052
|
+
const handleKeyDown = (event) => {
|
|
6053
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
6054
|
+
event.preventDefault();
|
|
6055
|
+
handleToggle();
|
|
6056
|
+
}
|
|
6057
|
+
};
|
|
6058
|
+
const headerContainerStyle = isExpanded ? sectionHeadingInteractiveStyles.headerContainerExpanded : sectionHeadingInteractiveStyles.headerContainerCollapsed;
|
|
6059
|
+
const headerContentStyle = {
|
|
6060
|
+
...sectionHeadingInteractiveStyles.headerContent,
|
|
6061
|
+
...isHovered && sectionHeadingInteractiveStyles.headerContentHover,
|
|
6062
|
+
...isFocused && sectionHeadingInteractiveStyles.headerContentFocus
|
|
6063
|
+
};
|
|
6064
|
+
const contentStyle = {
|
|
6065
|
+
...sectionHeadingInteractiveStyles.content,
|
|
6066
|
+
...isExpanded ? sectionHeadingInteractiveStyles.contentExpanded : sectionHeadingInteractiveStyles.contentCollapsed
|
|
6067
|
+
};
|
|
6068
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
6069
|
+
"div",
|
|
6070
|
+
{
|
|
6071
|
+
ref,
|
|
6072
|
+
className: (0, import_clsx27.clsx)("arbor-section-heading-interactive", className),
|
|
6073
|
+
style: { ...sectionHeadingInteractiveStyles.container, ...style },
|
|
6074
|
+
...props,
|
|
6075
|
+
children: [
|
|
6076
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { style: headerContainerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
6077
|
+
"button",
|
|
6078
|
+
{
|
|
6079
|
+
type: "button",
|
|
6080
|
+
style: sectionHeadingInteractiveStyles.header,
|
|
6081
|
+
onClick: handleToggle,
|
|
6082
|
+
onMouseEnter: () => setIsHovered(true),
|
|
6083
|
+
onMouseLeave: () => setIsHovered(false),
|
|
6084
|
+
onFocus: () => setIsFocused(true),
|
|
6085
|
+
onBlur: () => setIsFocused(false),
|
|
6086
|
+
onKeyDown: handleKeyDown,
|
|
6087
|
+
"aria-expanded": isExpanded,
|
|
6088
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { style: headerContentStyle, children: [
|
|
6089
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("h2", { style: sectionHeadingInteractiveStyles.title, children: title }),
|
|
6090
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { style: sectionHeadingInteractiveStyles.iconWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ChevronIcon2, { expanded: isExpanded }) })
|
|
6091
|
+
] })
|
|
6092
|
+
}
|
|
6093
|
+
) }),
|
|
6094
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { style: contentStyle, "aria-hidden": !isExpanded, children: children && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { style: sectionHeadingInteractiveStyles.contentInner, children }) })
|
|
6095
|
+
]
|
|
6096
|
+
}
|
|
6097
|
+
);
|
|
6098
|
+
}
|
|
6099
|
+
);
|
|
6100
|
+
SectionHeadingInteractive.displayName = "SectionHeadingInteractive";
|
|
6101
|
+
|
|
6102
|
+
// src/Section/Section.tsx
|
|
6103
|
+
var React33 = __toESM(require("react"));
|
|
6104
|
+
var import_clsx28 = require("clsx");
|
|
6105
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
6106
|
+
var sectionStyles = {
|
|
6107
|
+
container: {
|
|
6108
|
+
display: "flex",
|
|
6109
|
+
flexDirection: "column",
|
|
6110
|
+
width: "100%",
|
|
6111
|
+
padding: "8px",
|
|
6112
|
+
borderRadius: "8px",
|
|
6113
|
+
backgroundColor: "#ffffff",
|
|
6114
|
+
boxSizing: "border-box",
|
|
6115
|
+
fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
6116
|
+
}
|
|
6117
|
+
};
|
|
6118
|
+
var Section = React33.forwardRef(
|
|
6119
|
+
({ children, className, style, ...props }, ref) => {
|
|
6120
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
6121
|
+
"div",
|
|
6122
|
+
{
|
|
6123
|
+
ref,
|
|
6124
|
+
className: (0, import_clsx28.clsx)("arbor-section", className),
|
|
6125
|
+
style: { ...sectionStyles.container, ...style },
|
|
6126
|
+
...props,
|
|
6127
|
+
children
|
|
6128
|
+
}
|
|
6129
|
+
);
|
|
6130
|
+
}
|
|
6131
|
+
);
|
|
6132
|
+
Section.displayName = "Section";
|
|
4045
6133
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4046
6134
|
0 && (module.exports = {
|
|
6135
|
+
Avatar,
|
|
4047
6136
|
Banner,
|
|
6137
|
+
Breadcrumbs,
|
|
4048
6138
|
Button,
|
|
6139
|
+
ButtonSegmented,
|
|
4049
6140
|
Card,
|
|
4050
6141
|
Checkbox,
|
|
4051
6142
|
Combobox,
|
|
4052
6143
|
DatePicker,
|
|
4053
6144
|
Input,
|
|
6145
|
+
ListRow,
|
|
6146
|
+
ListRowMultiLine,
|
|
6147
|
+
Logo,
|
|
4054
6148
|
NumericInput,
|
|
4055
6149
|
Pagination,
|
|
4056
6150
|
Radio,
|
|
6151
|
+
SearchGlobal,
|
|
6152
|
+
SearchOnPage,
|
|
6153
|
+
Section,
|
|
6154
|
+
SectionHeading,
|
|
6155
|
+
SectionHeadingInteractive,
|
|
6156
|
+
SectionIcon,
|
|
6157
|
+
SubSectionHeading,
|
|
6158
|
+
SubSectionInteractive,
|
|
4057
6159
|
Table,
|
|
4058
6160
|
TableControls,
|
|
4059
6161
|
TableFooterPagination,
|