@bwp-web/components 1.10.1 → 1.10.2

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/index.cjs CHANGED
@@ -160,8 +160,8 @@ var require_randomColor = __commonJS({
160
160
  return "hsl(" + hsl[0] + ", " + hsl[1] + "%, " + hsl[2] + "%)";
161
161
  case "hsla":
162
162
  var hslColor = HSVtoHSL(hsv);
163
- var alpha6 = options.alpha || Math.random();
164
- return "hsla(" + hslColor[0] + ", " + hslColor[1] + "%, " + hslColor[2] + "%, " + alpha6 + ")";
163
+ var alpha7 = options.alpha || Math.random();
164
+ return "hsla(" + hslColor[0] + ", " + hslColor[1] + "%, " + hslColor[2] + "%, " + alpha7 + ")";
165
165
  case "rgbArray":
166
166
  return HSVtoRGB(hsv);
167
167
  case "rgb":
@@ -169,8 +169,8 @@ var require_randomColor = __commonJS({
169
169
  return "rgb(" + rgb.join(", ") + ")";
170
170
  case "rgba":
171
171
  var rgbColor = HSVtoRGB(hsv);
172
- var alpha6 = options.alpha || Math.random();
173
- return "rgba(" + rgbColor.join(", ") + ", " + alpha6 + ")";
172
+ var alpha7 = options.alpha || Math.random();
173
+ return "rgba(" + rgbColor.join(", ") + ", " + alpha7 + ")";
174
174
  default:
175
175
  return HSVtoHex(hsv);
176
176
  }
@@ -452,11 +452,19 @@ __export(index_exports, {
452
452
  BiampTableTruncatedCell: () => BiampTableTruncatedCell,
453
453
  BiampWrapper: () => BiampWrapper,
454
454
  DynamicSvgIcon: () => DynamicSvgIcon,
455
+ LandingFormActions: () => LandingFormActions,
456
+ LandingFormCheckbox: () => LandingFormCheckbox,
457
+ LandingFormField: () => LandingFormField,
458
+ LandingFormPanel: () => LandingFormPanel,
455
459
  OrganizationItem: () => OrganizationItem,
456
460
  OrganizationItemList: () => OrganizationItemList,
461
+ OrganizationRow: () => OrganizationRow,
462
+ OrganizationRowGroup: () => OrganizationRowGroup,
457
463
  OrganizationSelector: () => OrganizationSelector,
458
464
  OrganizationSelectorButton: () => OrganizationSelectorButton,
459
465
  OrganizationSelectorPopover: () => OrganizationSelectorPopover,
466
+ OrganizationsEmptyState: () => OrganizationsEmptyState,
467
+ OrganizationsPanel: () => OrganizationsPanel,
460
468
  SegmentedButton: () => SegmentedButton,
461
469
  SegmentedButtonGroup: () => SegmentedButtonGroup,
462
470
  UserInitialsIcon: () => UserInitialsIcon,
@@ -2105,7 +2113,7 @@ function BiampTableTruncatedCell({
2105
2113
  );
2106
2114
  }
2107
2115
 
2108
- // src/BiampTable/slotProps.ts
2116
+ // src/slotProps.ts
2109
2117
  function resolveSlot(slot, ctx) {
2110
2118
  if (!slot) return void 0;
2111
2119
  return typeof slot === "function" ? slot(ctx) : slot;
@@ -2113,6 +2121,12 @@ function resolveSlot(slot, ctx) {
2113
2121
  function mergeSx(...inputs) {
2114
2122
  return inputs.filter((v) => Boolean(v)).flatMap((v) => Array.isArray(v) ? v : [v]);
2115
2123
  }
2124
+ function mergeSlotProps(ownProps, userProps) {
2125
+ return typeof userProps === "function" ? (ownerState) => ({
2126
+ ...ownProps,
2127
+ ...userProps(ownerState)
2128
+ }) : { ...ownProps, ...userProps };
2129
+ }
2116
2130
 
2117
2131
  // src/BiampTable/cellSx.ts
2118
2132
  var stickyHoverBg = {
@@ -3909,11 +3923,427 @@ function OrganizationSelectorPopover({
3909
3923
  );
3910
3924
  }
3911
3925
 
3912
- // src/UserInitialsIcon/UserInitialsIcon.tsx
3926
+ // src/LandingPage/LandingFormPanel.tsx
3913
3927
  var import_material27 = require("@mui/material");
3928
+ var import_react17 = require("react");
3929
+ var import_jsx_runtime31 = require("react/jsx-runtime");
3930
+ function LandingFormPanel({
3931
+ children,
3932
+ onSubmit,
3933
+ width = 441,
3934
+ noValidate = true,
3935
+ sx,
3936
+ ...stackProps
3937
+ }) {
3938
+ const handleSubmit = (event) => {
3939
+ event.preventDefault();
3940
+ onSubmit?.();
3941
+ };
3942
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3943
+ import_material27.Stack,
3944
+ {
3945
+ component: "form",
3946
+ onSubmit: handleSubmit,
3947
+ noValidate,
3948
+ gap: 2,
3949
+ p: 1.5,
3950
+ borderRadius: 4,
3951
+ width,
3952
+ maxWidth: "100%",
3953
+ sx: mergeSx(
3954
+ {
3955
+ // Figma's `background_default` (#F5F5F5) is `grey[100]` here, not
3956
+ // `palette.background.default` — that token is #FFFFFF in light mode.
3957
+ backgroundColor: ({ palette }) => palette.mode === "dark" ? palette.grey[700] : palette.grey[100]
3958
+ },
3959
+ sx
3960
+ ),
3961
+ ...stackProps,
3962
+ children
3963
+ }
3964
+ );
3965
+ }
3966
+ var fieldSx = {
3967
+ "& .MuiOutlinedInput-root": {
3968
+ backgroundColor: "background.paper"
3969
+ },
3970
+ // `Mui-disabled` is deliberately not excluded: the theme has no disabled
3971
+ // outline colour, so dropping it here would fall back to MUI's faint default.
3972
+ "& .MuiOutlinedInput-root:not(.Mui-error):not(.Mui-focused) .MuiOutlinedInput-notchedOutline": {
3973
+ borderColor: ({ palette }) => palette.dividers.secondary
3974
+ }
3975
+ };
3976
+ function LandingFormField({
3977
+ label,
3978
+ id,
3979
+ slotProps,
3980
+ sx,
3981
+ ...textFieldProps
3982
+ }) {
3983
+ const {
3984
+ container: containerSlotProps,
3985
+ label: labelSlotProps,
3986
+ ...fieldSlotProps
3987
+ } = slotProps ?? {};
3988
+ const generatedId = (0, import_react17.useId)();
3989
+ const fieldId = id ?? generatedId;
3990
+ const labelId = labelSlotProps?.id ?? `${fieldId}-label`;
3991
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_material27.Stack, { gap: 0.5, width: "100%", ...containerSlotProps, children: [
3992
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3993
+ import_material27.Typography,
3994
+ {
3995
+ component: "label",
3996
+ id: labelId,
3997
+ htmlFor: fieldId,
3998
+ fontSize: 12,
3999
+ fontWeight: 600,
4000
+ color: "text.primary",
4001
+ ...labelSlotProps,
4002
+ children: label
4003
+ }
4004
+ ),
4005
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4006
+ import_material27.TextField,
4007
+ {
4008
+ id: fieldId,
4009
+ fullWidth: true,
4010
+ variant: "outlined",
4011
+ slotProps: {
4012
+ ...fieldSlotProps,
4013
+ // `select` renders a `div[role="combobox"]`, which `<label for>`
4014
+ // cannot name — and MUI points its `aria-labelledby` at the div
4015
+ // itself, so the name would come out as the selected value. Naming
4016
+ // the label explicitly is what MUI's own floating label does.
4017
+ // Inert on a text field: `slotProps.select` only reaches a `Select`.
4018
+ select: mergeSlotProps({ labelId }, fieldSlotProps.select)
4019
+ },
4020
+ sx: mergeSx(fieldSx, sx),
4021
+ ...textFieldProps
4022
+ }
4023
+ )
4024
+ ] });
4025
+ }
4026
+ function LandingFormActions(props) {
4027
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_material27.Stack, { direction: "row", gap: 1, width: "100%", ...props });
4028
+ }
4029
+ function LandingFormCheckbox({
4030
+ label,
4031
+ slotProps,
4032
+ sx,
4033
+ ...formControlLabelProps
4034
+ }) {
4035
+ const { checkbox, ...labelSlotProps } = slotProps ?? {};
4036
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4037
+ import_material27.FormControlLabel,
4038
+ {
4039
+ control: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4040
+ import_material27.Checkbox,
4041
+ {
4042
+ ...checkbox,
4043
+ sx: mergeSx({ p: 0 }, checkbox?.sx)
4044
+ }
4045
+ ),
4046
+ label,
4047
+ slotProps: {
4048
+ ...labelSlotProps,
4049
+ typography: mergeSlotProps(
4050
+ { variant: "body2" },
4051
+ labelSlotProps.typography
4052
+ )
4053
+ },
4054
+ ...formControlLabelProps,
4055
+ sx: mergeSx({ m: 0, gap: 1, alignItems: "center" }, sx)
4056
+ }
4057
+ );
4058
+ }
4059
+
4060
+ // src/LandingPage/OrganizationsPanel.tsx
4061
+ var import_material28 = require("@mui/material");
4062
+ var import_react18 = require("react");
4063
+ var import_assets15 = require("@bwp-web/assets");
4064
+ var import_jsx_runtime32 = require("react/jsx-runtime");
4065
+ function OrganizationRow({
4066
+ primaryText,
4067
+ secondaryText,
4068
+ logo,
4069
+ logoBackground = true,
4070
+ disabled = false,
4071
+ sx,
4072
+ ...props
4073
+ }) {
4074
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
4075
+ import_material28.ListItemButton,
4076
+ {
4077
+ disabled,
4078
+ disableRipple: true,
4079
+ sx: mergeSx(
4080
+ {
4081
+ p: 1.5,
4082
+ gap: 2,
4083
+ backgroundColor: ({ palette }) => palette.mode === "dark" ? palette.grey[700] : palette.grey[100],
4084
+ // Disabled rows keep full opacity; only the logo dims (below).
4085
+ "&.Mui-disabled": { opacity: 1 },
4086
+ ...!disabled && {
4087
+ "&:hover": { backgroundColor: "action.hover" }
4088
+ }
4089
+ },
4090
+ sx
4091
+ ),
4092
+ ...props,
4093
+ children: [
4094
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4095
+ import_material28.Box,
4096
+ {
4097
+ sx: {
4098
+ width: 40,
4099
+ height: 40,
4100
+ borderRadius: "6px",
4101
+ overflow: "hidden",
4102
+ flexShrink: 0,
4103
+ display: "flex",
4104
+ alignItems: "center",
4105
+ justifyContent: "center",
4106
+ opacity: disabled ? 0.5 : 1,
4107
+ backgroundColor: ({ palette }) => logoBackground ? palette.mode === "dark" ? palette.grey[800] : palette.grey[200] : "transparent"
4108
+ },
4109
+ children: typeof logo === "string" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4110
+ import_material28.Box,
4111
+ {
4112
+ component: "img",
4113
+ src: logo,
4114
+ alt: "",
4115
+ sx: { width: "100%", height: "100%", objectFit: "cover" }
4116
+ }
4117
+ ) : logo
4118
+ }
4119
+ ),
4120
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_material28.Stack, { sx: { minWidth: 0, flex: 1, textAlign: "left" }, children: [
4121
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4122
+ import_material28.Typography,
4123
+ {
4124
+ noWrap: true,
4125
+ variant: "body2",
4126
+ fontWeight: 600,
4127
+ color: disabled ? "text.secondary" : "text.primary",
4128
+ children: primaryText
4129
+ }
4130
+ ),
4131
+ secondaryText && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_material28.Typography, { noWrap: true, variant: "caption", color: "text.secondary", children: secondaryText })
4132
+ ] }),
4133
+ !disabled && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4134
+ import_assets15.ChevronRightIcon,
4135
+ {
4136
+ variant: "xs",
4137
+ sx: {
4138
+ width: 16,
4139
+ height: 16,
4140
+ flexShrink: 0,
4141
+ color: "text.primary"
4142
+ }
4143
+ }
4144
+ )
4145
+ ]
4146
+ }
4147
+ );
4148
+ }
4149
+ var outlineSx = {
4150
+ border: 0.6,
4151
+ borderColor: ({ palette }) => palette.dividers.secondary,
4152
+ borderRadius: "6px",
4153
+ boxShadow: ({ palette }) => `0px 1px 1px 0px ${(0, import_material28.alpha)(palette.common.black, 0.05)}`
4154
+ };
4155
+ function OrganizationRowGroup({
4156
+ children,
4157
+ maxHeight,
4158
+ sx,
4159
+ ...boxProps
4160
+ }) {
4161
+ const items = import_react18.Children.toArray(children).filter(import_react18.isValidElement);
4162
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4163
+ import_material28.Box,
4164
+ {
4165
+ sx: mergeSx(
4166
+ {
4167
+ width: "100%",
4168
+ ...outlineSx,
4169
+ backgroundColor: ({ palette }) => palette.mode === "dark" ? palette.grey[700] : palette.grey[100],
4170
+ overflow: "hidden",
4171
+ ...maxHeight !== void 0 && { overflowY: "auto", maxHeight }
4172
+ },
4173
+ sx
4174
+ ),
4175
+ ...boxProps,
4176
+ children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_react18.Fragment, { children: [
4177
+ item,
4178
+ i !== items.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_material28.Divider, {})
4179
+ ] }, item.key ?? i))
4180
+ }
4181
+ );
4182
+ }
4183
+ function TextDivider({ children, sx, ...props }) {
4184
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4185
+ import_material28.Divider,
4186
+ {
4187
+ sx: mergeSx(
4188
+ {
4189
+ width: "100%",
4190
+ userSelect: "none",
4191
+ color: "text.primary",
4192
+ fontWeight: 600,
4193
+ fontSize: 14
4194
+ },
4195
+ sx
4196
+ ),
4197
+ ...props,
4198
+ children
4199
+ }
4200
+ );
4201
+ }
4202
+ function OrganizationsEmptyState({
4203
+ icon = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_assets15.SearchIcon, {}),
4204
+ title = "No results found",
4205
+ description,
4206
+ ...stackProps
4207
+ }) {
4208
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
4209
+ import_material28.Stack,
4210
+ {
4211
+ role: "status",
4212
+ alignItems: "center",
4213
+ gap: 0.5,
4214
+ width: "100%",
4215
+ py: 2,
4216
+ px: 2,
4217
+ ...stackProps,
4218
+ children: [
4219
+ (0, import_react18.cloneElement)(icon, {
4220
+ "aria-hidden": true,
4221
+ sx: {
4222
+ width: 24,
4223
+ height: 24,
4224
+ mb: 0.5,
4225
+ color: "text.secondary",
4226
+ ...icon.props.sx
4227
+ }
4228
+ }),
4229
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4230
+ import_material28.Typography,
4231
+ {
4232
+ variant: "body2",
4233
+ fontWeight: 600,
4234
+ color: "text.primary",
4235
+ textAlign: "center",
4236
+ children: title
4237
+ }
4238
+ ),
4239
+ description && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_material28.Typography, { variant: "caption", color: "text.secondary", textAlign: "center", children: description })
4240
+ ]
4241
+ }
4242
+ );
4243
+ }
4244
+ var DEFAULT_MAX_LIST_HEIGHT = 3 * 64 + 2;
4245
+ function OrganizationsPanel({
4246
+ search,
4247
+ personalOrgItem,
4248
+ organizationsLabel,
4249
+ organizationItems,
4250
+ orLabel,
4251
+ empty = false,
4252
+ joinAction,
4253
+ createAction,
4254
+ width = 441,
4255
+ maxListHeight = DEFAULT_MAX_LIST_HEIGHT,
4256
+ slotProps,
4257
+ sx,
4258
+ ...stackProps
4259
+ }) {
4260
+ const {
4261
+ sx: searchSx,
4262
+ slotProps: searchFieldSlotProps,
4263
+ ...searchSlotProps
4264
+ } = slotProps?.search ?? {};
4265
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
4266
+ import_material28.Stack,
4267
+ {
4268
+ gap: 2,
4269
+ alignItems: "center",
4270
+ justifyContent: "center",
4271
+ p: 1.5,
4272
+ borderRadius: 4,
4273
+ width,
4274
+ maxWidth: "100%",
4275
+ sx: mergeSx(
4276
+ {
4277
+ // Figma's `background_default` (#F5F5F5) is `grey[100]` here, not
4278
+ // `palette.background.default` — that token is #FFFFFF in light mode.
4279
+ backgroundColor: ({ palette }) => palette.mode === "dark" ? palette.grey[700] : palette.grey[100]
4280
+ },
4281
+ sx
4282
+ ),
4283
+ ...stackProps,
4284
+ children: [
4285
+ search && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4286
+ import_material28.TextField,
4287
+ {
4288
+ variant: "outlined",
4289
+ placeholder: search.placeholder,
4290
+ value: search.value,
4291
+ onChange: search.onChange,
4292
+ fullWidth: true,
4293
+ sx: mergeSx(
4294
+ {
4295
+ "& .MuiOutlinedInput-root": {
4296
+ backgroundColor: "background.paper"
4297
+ },
4298
+ "& .MuiOutlinedInput-notchedOutline": {
4299
+ borderColor: ({ palette }) => palette.dividers.secondary
4300
+ }
4301
+ },
4302
+ searchSx
4303
+ ),
4304
+ slotProps: {
4305
+ ...searchFieldSlotProps,
4306
+ input: mergeSlotProps(
4307
+ {
4308
+ startAdornment: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_material28.InputAdornment, { position: "start", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_assets15.SearchIcon, { sx: { ml: 1 } }) })
4309
+ },
4310
+ searchFieldSlotProps?.input
4311
+ ),
4312
+ htmlInput: mergeSlotProps(
4313
+ { "aria-label": search.placeholder },
4314
+ searchFieldSlotProps?.htmlInput
4315
+ )
4316
+ },
4317
+ ...searchSlotProps
4318
+ }
4319
+ ),
4320
+ personalOrgItem && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(OrganizationRowGroup, { ...slotProps?.personalOrgGroup, children: personalOrgItem }),
4321
+ organizationItems && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
4322
+ organizationsLabel && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TextDivider, { ...slotProps?.organizationsLabel, children: organizationsLabel }),
4323
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4324
+ OrganizationRowGroup,
4325
+ {
4326
+ maxHeight: maxListHeight,
4327
+ ...slotProps?.organizationsGroup,
4328
+ children: organizationItems
4329
+ }
4330
+ )
4331
+ ] }),
4332
+ empty ? empty === true ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(OrganizationsEmptyState, {}) : empty : orLabel && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(TextDivider, { ...slotProps?.orLabel, children: orLabel }),
4333
+ (joinAction || createAction) && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_material28.Stack, { gap: 1, width: "100%", ...slotProps?.actions, children: [
4334
+ joinAction && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(OrganizationRowGroup, { ...slotProps?.joinGroup, children: joinAction }),
4335
+ createAction && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(OrganizationRowGroup, { ...slotProps?.createGroup, children: createAction })
4336
+ ] })
4337
+ ]
4338
+ }
4339
+ );
4340
+ }
4341
+
4342
+ // src/UserInitialsIcon/UserInitialsIcon.tsx
4343
+ var import_material29 = require("@mui/material");
3914
4344
  var import_styles2 = require("@mui/material/styles");
3915
4345
  var import_randomcolor = __toESM(require_randomColor(), 1);
3916
- var import_jsx_runtime31 = require("react/jsx-runtime");
4346
+ var import_jsx_runtime33 = require("react/jsx-runtime");
3917
4347
  var DEFAULT_SIZE = 40;
3918
4348
  var DEFAULT_BORDER_RADIUS = 1.5;
3919
4349
  var TEXT_RATIO = 0.4;
@@ -3931,8 +4361,8 @@ function UserInitialsIcon({
3931
4361
  const textColor = (0, import_styles2.darken)((0, import_randomcolor.default)({ luminosity: "dark", seed: id }), 0.3);
3932
4362
  const size = typeof width === "number" ? width : DEFAULT_SIZE;
3933
4363
  const fontSize = size * TEXT_RATIO;
3934
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3935
- import_material27.Box,
4364
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4365
+ import_material29.Box,
3936
4366
  {
3937
4367
  minWidth: width,
3938
4368
  width,
@@ -3945,8 +4375,8 @@ function UserInitialsIcon({
3945
4375
  justifyContent: "center",
3946
4376
  sx: { ...sx },
3947
4377
  ...props,
3948
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3949
- import_material27.Typography,
4378
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4379
+ import_material29.Typography,
3950
4380
  {
3951
4381
  variant: "h3",
3952
4382
  color: textColor,
@@ -3968,9 +4398,9 @@ var getInitials = (name) => {
3968
4398
  };
3969
4399
 
3970
4400
  // src/DynamicSvgIcon/DynamicSvgIcon.tsx
3971
- var import_material28 = require("@mui/material");
3972
- var import_react17 = require("react");
3973
- var import_jsx_runtime32 = require("react/jsx-runtime");
4401
+ var import_material30 = require("@mui/material");
4402
+ var import_react19 = require("react");
4403
+ var import_jsx_runtime34 = require("react/jsx-runtime");
3974
4404
  var svgCache = /* @__PURE__ */ new Map();
3975
4405
  function clearDynamicSvgIconCache() {
3976
4406
  svgCache.clear();
@@ -3981,17 +4411,17 @@ function applyCurrentColor(svg) {
3981
4411
  function useDynamicSvgIcon(url, options = {}) {
3982
4412
  const { replaceColors = false, onLoad, onError } = options;
3983
4413
  const transform = replaceColors ? applyCurrentColor : (s) => s;
3984
- const [svgContent, setSvgContent] = (0, import_react17.useState)(() => {
4414
+ const [svgContent, setSvgContent] = (0, import_react19.useState)(() => {
3985
4415
  const cached = svgCache.get(url);
3986
4416
  return cached ? transform(cached.innerContent) : null;
3987
4417
  });
3988
- const [svgViewBox, setSvgViewBox] = (0, import_react17.useState)(() => {
4418
+ const [svgViewBox, setSvgViewBox] = (0, import_react19.useState)(() => {
3989
4419
  const cached = svgCache.get(url);
3990
4420
  return cached?.viewBox ?? null;
3991
4421
  });
3992
- const [loading, setLoading] = (0, import_react17.useState)(() => !svgCache.has(url));
3993
- const [error, setError] = (0, import_react17.useState)(null);
3994
- (0, import_react17.useEffect)(() => {
4422
+ const [loading, setLoading] = (0, import_react19.useState)(() => !svgCache.has(url));
4423
+ const [error, setError] = (0, import_react19.useState)(null);
4424
+ (0, import_react19.useEffect)(() => {
3995
4425
  if (!url) {
3996
4426
  setLoading(false);
3997
4427
  setError("No URL provided");
@@ -4072,8 +4502,8 @@ function DynamicSvgIcon({
4072
4502
  onError
4073
4503
  });
4074
4504
  if (loading) {
4075
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4076
- import_material28.Skeleton,
4505
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4506
+ import_material30.Skeleton,
4077
4507
  {
4078
4508
  variant: skeletonVariant,
4079
4509
  animation: skeletonAnimation,
@@ -4082,8 +4512,8 @@ function DynamicSvgIcon({
4082
4512
  );
4083
4513
  }
4084
4514
  if (error || !svgContent) {
4085
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4086
- import_material28.Box,
4515
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4516
+ import_material30.Box,
4087
4517
  {
4088
4518
  sx: {
4089
4519
  width,
@@ -4102,8 +4532,8 @@ function DynamicSvgIcon({
4102
4532
  }
4103
4533
  );
4104
4534
  }
4105
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4106
- import_material28.SvgIcon,
4535
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4536
+ import_material30.SvgIcon,
4107
4537
  {
4108
4538
  ...svgIconProps,
4109
4539
  ...svgViewBox && { viewBox: svgViewBox },
@@ -4112,7 +4542,7 @@ function DynamicSvgIcon({
4112
4542
  width,
4113
4543
  height
4114
4544
  },
4115
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("g", { dangerouslySetInnerHTML: { __html: svgContent } })
4545
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("g", { dangerouslySetInnerHTML: { __html: svgContent } })
4116
4546
  }
4117
4547
  );
4118
4548
  }
@@ -4170,11 +4600,19 @@ function DynamicSvgIcon({
4170
4600
  BiampTableTruncatedCell,
4171
4601
  BiampWrapper,
4172
4602
  DynamicSvgIcon,
4603
+ LandingFormActions,
4604
+ LandingFormCheckbox,
4605
+ LandingFormField,
4606
+ LandingFormPanel,
4173
4607
  OrganizationItem,
4174
4608
  OrganizationItemList,
4609
+ OrganizationRow,
4610
+ OrganizationRowGroup,
4175
4611
  OrganizationSelector,
4176
4612
  OrganizationSelectorButton,
4177
4613
  OrganizationSelectorPopover,
4614
+ OrganizationsEmptyState,
4615
+ OrganizationsPanel,
4178
4616
  SegmentedButton,
4179
4617
  SegmentedButtonGroup,
4180
4618
  UserInitialsIcon,