scorer-ui-kit 3.0.3 → 3.0.4

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.js CHANGED
@@ -2219,6 +2219,9 @@ var ThemeVariables = styled_components.createGlobalStyle`
2219
2219
  --global-menu-width-closed: 80px;
2220
2220
  --global-menu-width-open: 280px;
2221
2221
 
2222
+ --top-bar-height: 56px;
2223
+ --top-bar-divider-width: 1px;
2224
+
2222
2225
  --input-height: 40px;
2223
2226
  --input-compact-height: 32px;
2224
2227
  --input-required-dot-display: inline-block;
@@ -2420,7 +2423,7 @@ var Arrow$1 = styled_components.default.div`
2420
2423
  &.l { left: 24px; }
2421
2424
  &.r { right: 24px; }
2422
2425
  `;
2423
- var Container$71 = styled_components.default.div`
2426
+ var Container$72 = styled_components.default.div`
2424
2427
  display: flex;
2425
2428
  position: relative;
2426
2429
  flex: 1;
@@ -2435,7 +2438,7 @@ var Container$71 = styled_components.default.div`
2435
2438
  color: var(--grey-10);
2436
2439
  `;
2437
2440
  var FlexContentPlaceholder = ({ title = "Placeholder" }) => {
2438
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$71, { children: [
2441
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$72, { children: [
2439
2442
  title,
2440
2443
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Arrow$1, {
2441
2444
  className: "t l",
@@ -2572,7 +2575,7 @@ var AlertBar = ({ type = "info", message, hideCloseButton = false }) => {
2572
2575
  };
2573
2576
  //#endregion
2574
2577
  //#region src/Alerts/atom/Notification.tsx
2575
- var Container$70 = styled_components.default.div`
2578
+ var Container$71 = styled_components.default.div`
2576
2579
  min-height: 50px;
2577
2580
  border-bottom-left-radius: 3px;
2578
2581
  border-bottom-right-radius: 3px;
@@ -2740,7 +2743,7 @@ var Notification = ({ id, type = "info", message, icon = "", isPinned = false, a
2740
2743
  }
2741
2744
  };
2742
2745
  }, []);
2743
- return message && !dismiss ? react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$70, {
2746
+ return message && !dismiss ? react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$71, {
2744
2747
  $type: type,
2745
2748
  $isClosing: slideUp,
2746
2749
  $isVisible: isVisible,
@@ -3142,7 +3145,7 @@ var Button = ({ design = "primary", size = "normal", shadow = false, noPadding =
3142
3145
  };
3143
3146
  //#endregion
3144
3147
  //#region src/Form/atoms/ButtonWithIcon.tsx
3145
- var Container$69 = styled_components.default.div`
3148
+ var Container$70 = styled_components.default.div`
3146
3149
  display: inline;
3147
3150
  `;
3148
3151
  var TextContainer$3 = styled_components.default.div`
@@ -3258,7 +3261,7 @@ var InnerContainer$3 = styled_components.default.div`
3258
3261
  `};
3259
3262
  `;
3260
3263
  var ButtonWithIcon = ({ design = "primary", size = "normal", loading = false, shadow = false, onClick, disabled, position, icon, weight = "regular", children, ...props }) => {
3261
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$69, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
3264
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$70, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
3262
3265
  noPadding: true,
3263
3266
  disabled: disabled || loading,
3264
3267
  design,
@@ -3290,7 +3293,7 @@ var ButtonWithIcon = ({ design = "primary", size = "normal", loading = false, sh
3290
3293
  };
3291
3294
  //#endregion
3292
3295
  //#region src/Form/atoms/ButtonWithLoading.tsx
3293
- var Container$68 = styled_components.default.div`
3296
+ var Container$69 = styled_components.default.div`
3294
3297
  display: inline;
3295
3298
  `;
3296
3299
  var TextContainer$2 = styled_components.default.div`
@@ -3350,7 +3353,7 @@ var InnerContainer$2 = styled_components.default.div`
3350
3353
  `}
3351
3354
  `;
3352
3355
  var ButtonWithLoading = ({ design = "primary", size = "normal", shadow = false, onClick, disabled, position, loading = false, children, ...rest }) => {
3353
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$68, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
3356
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$69, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
3354
3357
  noPadding: true,
3355
3358
  disabled: disabled || loading,
3356
3359
  design,
@@ -3552,7 +3555,7 @@ var IconWrapper$3 = styled_components.default.div`
3552
3555
  }
3553
3556
  }
3554
3557
  `;
3555
- var Container$67 = styled_components.default.label`
3558
+ var Container$68 = styled_components.default.label`
3556
3559
  display: inline-block;
3557
3560
  user-select: none;
3558
3561
  ${CheckboxOuter}{
@@ -3650,7 +3653,7 @@ var Checkbox = ({ indeterminate: _indeterminate = false, disabled, checked = fal
3650
3653
  setIsChecked(checked);
3651
3654
  }, [checked]);
3652
3655
  const iconWeight = require_LineUIVideoBase.dimensions.icons.weights.regular;
3653
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$67, {
3656
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$68, {
3654
3657
  onChange: customOnChange,
3655
3658
  $disabled: disabled,
3656
3659
  $visualState: visualState,
@@ -3672,7 +3675,7 @@ var Checkbox = ({ indeterminate: _indeterminate = false, disabled, checked = fal
3672
3675
  };
3673
3676
  //#endregion
3674
3677
  //#region src/Form/atoms/DropArea.tsx
3675
- var Container$66 = styled_components.default.div`
3678
+ var Container$67 = styled_components.default.div`
3676
3679
  ${({ $height }) => $height ? `height: ${$height}` : null};
3677
3680
  position: relative;
3678
3681
  `;
@@ -3721,7 +3724,7 @@ var DropArea = ({ height, text, dropCallback, ...props }) => {
3721
3724
  window.removeEventListener("drop", handleWindowDragAndDrop);
3722
3725
  };
3723
3726
  }, [handleWindowDragAndDrop]);
3724
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$66, {
3727
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$67, {
3725
3728
  $height: height,
3726
3729
  ...props,
3727
3730
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DragAndDrop, {
@@ -3864,7 +3867,7 @@ var InputContainer$2 = styled_components.default.div`
3864
3867
  `}
3865
3868
 
3866
3869
  `;
3867
- var Container$65 = styled_components.default.div`
3870
+ var Container$66 = styled_components.default.div`
3868
3871
  ${({ $fieldState, $showFeedback }) => styled_components.css`
3869
3872
 
3870
3873
  display: flex;
@@ -3923,7 +3926,7 @@ var Input = ({ type = "text", placeholder = "", defaultValue, fieldState = "defa
3923
3926
  });
3924
3927
  }
3925
3928
  };
3926
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$65, {
3929
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$66, {
3927
3930
  $fieldState: fieldState || "default",
3928
3931
  $showFeedback: showFeedback,
3929
3932
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(InputContainer$2, {
@@ -3947,7 +3950,7 @@ var Input = ({ type = "text", placeholder = "", defaultValue, fieldState = "defa
3947
3950
  };
3948
3951
  //#endregion
3949
3952
  //#region src/Form/atoms/InputFileButton.tsx
3950
- var Container$64 = styled_components.default.div``;
3953
+ var Container$65 = styled_components.default.div``;
3951
3954
  var HiddenInput$2 = styled_components.default.input`
3952
3955
  display: none;
3953
3956
  `;
@@ -3962,7 +3965,7 @@ var InputFileButton = ({ text, buttonDesign, buttonSize, inputCallback, children
3962
3965
  const forwardClick = (0, react.useCallback)(() => {
3963
3966
  if (fileInputRef.current) fileInputRef.current.click();
3964
3967
  }, []);
3965
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$64, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(HiddenInput$2, {
3968
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$65, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(HiddenInput$2, {
3966
3969
  ...props,
3967
3970
  ref: fileInputRef,
3968
3971
  type: "file",
@@ -4100,7 +4103,7 @@ var HiddenInput$1 = styled_components.default.input`
4100
4103
  padding:0;
4101
4104
  opacity: 0;
4102
4105
  `;
4103
- var Container$63 = styled_components.default.div`
4106
+ var Container$64 = styled_components.default.div`
4104
4107
  position: relative;
4105
4108
  display: inline-block;
4106
4109
  width: 18px;
@@ -4114,7 +4117,7 @@ var RadioButton = ({ id, value, name, currentChecked, disabled = false, required
4114
4117
  onChangeCallback(checkedValue);
4115
4118
  }, [onChangeCallback]);
4116
4119
  const isChecked = currentChecked !== void 0 ? currentChecked === value : false;
4117
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$63, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(HiddenInput$1, {
4120
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$64, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(HiddenInput$1, {
4118
4121
  type: "radio",
4119
4122
  id,
4120
4123
  name,
@@ -4203,7 +4206,7 @@ var StyledSelect = styled_components.default.select`
4203
4206
  display: none;
4204
4207
  }
4205
4208
  `;
4206
- var Container$62 = styled_components.default.div`
4209
+ var Container$63 = styled_components.default.div`
4207
4210
 
4208
4211
  ${({ $activePlaceholder }) => $activePlaceholder && styled_components.css`
4209
4212
  ${StyledSelect} {
@@ -4268,7 +4271,7 @@ var SelectField = ({ fieldState = "default", placeholder, label, icon, isCompact
4268
4271
  })
4269
4272
  })
4270
4273
  ] });
4271
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$62, {
4274
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$63, {
4272
4275
  $isCompact: isCompact,
4273
4276
  $activePlaceholder: activePlaceholder,
4274
4277
  children: label ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
@@ -4626,7 +4629,7 @@ var UnitKey = styled_components.default.div`
4626
4629
  margin-top: 1px;
4627
4630
  white-space: nowrap;
4628
4631
  `;
4629
- var Container$61 = styled_components.default.div`
4632
+ var Container$62 = styled_components.default.div`
4630
4633
  position: relative;
4631
4634
 
4632
4635
  ${({ $fieldState }) => $fieldState && styled_components.css`
@@ -4637,7 +4640,7 @@ var Container$61 = styled_components.default.div`
4637
4640
  `};
4638
4641
  `;
4639
4642
  var SmallInput = ({ unit, label, name, type = "text", placeholder = "", defaultValue, fieldState = "default", required = false, className, children, formAction, ...props }) => {
4640
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$61, {
4643
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$62, {
4641
4644
  className,
4642
4645
  $fieldState: fieldState || "default",
4643
4646
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
@@ -4734,7 +4737,7 @@ var IconWrapper$2 = styled_components.default.div`
4734
4737
  }
4735
4738
  `;
4736
4739
  var SpinnerWrapper = styled_components.default.div``;
4737
- var Container$60 = (0, styled_components.default)(StyledLabel)`
4740
+ var Container$61 = (0, styled_components.default)(StyledLabel)`
4738
4741
  user-select: none;
4739
4742
  display: inline-flex;
4740
4743
  gap: 8px;
@@ -4900,7 +4903,7 @@ var Switch = ({ state = "default", leftTheme = "off", rightTheme = "on", labelTe
4900
4903
  (0, react.useEffect)(() => {
4901
4904
  if (innerRef.current) setInnerSize(parseInt(getComputedStyle(innerRef.current).getPropertyValue("--switch-inner-size"), 10));
4902
4905
  }, []);
4903
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$60, {
4906
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$61, {
4904
4907
  onChange: customOnChange,
4905
4908
  onMouseLeave: () => setJustUpdated(false),
4906
4909
  $activeTheming: activeTheming,
@@ -5015,7 +5018,7 @@ var FeedbackMessage = styled_components.default.div`
5015
5018
  font-weight: 500;
5016
5019
  color: var(--white-1);
5017
5020
  `;
5018
- var Container$59 = styled_components.default.div`
5021
+ var Container$60 = styled_components.default.div`
5019
5022
  ${({ $fieldState, $showFeedback }) => styled_components.css`
5020
5023
  display: flex;
5021
5024
  position: relative;
@@ -5077,7 +5080,7 @@ var TextArea = ({ placeholder = "", fieldState = "default", showFeedback = false
5077
5080
  });
5078
5081
  }
5079
5082
  };
5080
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$59, {
5083
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$60, {
5081
5084
  $fieldState: fieldState || "default",
5082
5085
  $showFeedback: showFeedback,
5083
5086
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledTextArea, {
@@ -5109,7 +5112,7 @@ var Form = ({ children, spacing = "45px;", action, ...props }) => {
5109
5112
  //#endregion
5110
5113
  //#region src/Form/molecules/ActionButtons.tsx
5111
5114
  var StyledIconButton$1 = (0, styled_components.default)(IconButton)``;
5112
- var Container$58 = styled_components.default.div`
5115
+ var Container$59 = styled_components.default.div`
5113
5116
  display: flex;
5114
5117
  ${StyledIconButton$1} {
5115
5118
  margin-left: 15px;
@@ -5131,7 +5134,7 @@ var Container$58 = styled_components.default.div`
5131
5134
  `};
5132
5135
  `;
5133
5136
  var ActionButtons = ({ buttonsConfig, alignment = "right" }) => {
5134
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$58, {
5137
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$59, {
5135
5138
  $alignment: alignment,
5136
5139
  children: buttonsConfig.map((btn) => {
5137
5140
  const { icon, size, weight, color, hoverColor, onClick } = btn;
@@ -5148,7 +5151,7 @@ var ActionButtons = ({ buttonsConfig, alignment = "right" }) => {
5148
5151
  };
5149
5152
  //#endregion
5150
5153
  //#region src/Form/molecules/ButtonsStack.tsx
5151
- var Container$57 = styled_components.default.div`
5154
+ var Container$58 = styled_components.default.div`
5152
5155
  display: flex;
5153
5156
  flex-direction: column;
5154
5157
  gap: 8px;
@@ -5157,7 +5160,7 @@ var Container$57 = styled_components.default.div`
5157
5160
  }
5158
5161
  `;
5159
5162
  var ButtonsStack = ({ buttons }) => {
5160
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$57, { children: buttons.map(({ id, buttonType, icon, text, iconPosition, size, ...buttonProps }) => {
5163
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$58, { children: buttons.map(({ id, buttonType, icon, text, iconPosition, size, ...buttonProps }) => {
5161
5164
  if (buttonType === "icon-button") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ButtonWithIcon, {
5162
5165
  size: size || "small",
5163
5166
  icon: icon || "",
@@ -5530,7 +5533,7 @@ var CropArea = ({ isResizable, hasAspectRatio }) => {
5530
5533
  };
5531
5534
  //#endregion
5532
5535
  //#region src/Form/molecules/CropTool.tsx
5533
- var Container$56 = styled_components.default.div`
5536
+ var Container$57 = styled_components.default.div`
5534
5537
  position: fixed;
5535
5538
  top: 0;
5536
5539
  left: 0;
@@ -5738,7 +5741,7 @@ var CropTool = ({ title = "Crop Image", cancelBtnTxt = "Cancel", cropBtnTxt = "C
5738
5741
  if (!viewDimensions.isResizing) return;
5739
5742
  viewDimensions.isResizing = false;
5740
5743
  }, []);
5741
- return react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$56, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(InnerContainer$1, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ToolHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TextGroup$1, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LineUIVideoBase.Icon, {
5744
+ return react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$57, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(InnerContainer$1, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ToolHeader, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TextGroup$1, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LineUIVideoBase.Icon, {
5742
5745
  icon: "Crop",
5743
5746
  size: 20,
5744
5747
  color: "mono"
@@ -5798,7 +5801,7 @@ var CropTool = ({ title = "Crop Image", cancelBtnTxt = "Cancel", cropBtnTxt = "C
5798
5801
  * Marks could also be handle by it.
5799
5802
  * Providing quantity of marks and generating the marks array based with unit
5800
5803
  */
5801
- var Container$55 = styled_components.default.div``;
5804
+ var Container$56 = styled_components.default.div``;
5802
5805
  var Headers$1 = styled_components.default.div`
5803
5806
  font-size: 14px;
5804
5807
  color: var(--grey-10);
@@ -5881,7 +5884,7 @@ var DurationSlider = ({ max, min, defaultValue = 0, title = "", timeUnit, contro
5881
5884
  if (inputCallback) inputCallback(value);
5882
5885
  setSelectedValue(value);
5883
5886
  }, [inputCallback]);
5884
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$55, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Headers$1, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
5887
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$56, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Headers$1, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
5885
5888
  htmlFor: "duration-slider",
5886
5889
  labelText: title
5887
5890
  }), getValueTitle(controlledValue ? controlledValue : selectedValue, timeUnit, timeFormat)] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SliderInput, {
@@ -5894,83 +5897,6 @@ var DurationSlider = ({ max, min, defaultValue = 0, title = "", timeUnit, contro
5894
5897
  })] });
5895
5898
  };
5896
5899
  //#endregion
5897
- //#region src/Form/molecules/PasswordField.tsx
5898
- var PasswordField = ({ name, label, fieldState, feedbackMessage, required, children, formAction, ...props }) => {
5899
- const [showValue, setShowValue] = (0, react.useState)(false);
5900
- const [actionIcon, setActionIcon] = (0, react.useState)("PasswordHide");
5901
- const actionCallback = () => {
5902
- const newValue = !showValue;
5903
- setShowValue(newValue);
5904
- setActionIcon(newValue ? "PasswordShow" : "PasswordHide");
5905
- };
5906
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
5907
- htmlFor: name,
5908
- labelText: label,
5909
- required,
5910
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Input, {
5911
- type: showValue ? "text" : "password",
5912
- actionCallback,
5913
- actionIcon,
5914
- name,
5915
- fieldState,
5916
- feedbackMessage,
5917
- required,
5918
- ...props
5919
- })
5920
- });
5921
- };
5922
- //#endregion
5923
- //#region src/Form/molecules/PercentageSlider.tsx
5924
- var Container$54 = styled_components.default.div``;
5925
- var Headers = styled_components.default.div`
5926
- font-size: 14px;
5927
- color: var(--grey-10);
5928
- display: flex;
5929
- justify-content: space-between;
5930
- margin-bottom: 20px;
5931
- ${({ $allMarkCentered }) => $allMarkCentered ? `padding: 0;` : `padding: 0 6px;`};
5932
- `;
5933
- var ValueTitle = (0, styled_components.default)(Label)`
5934
- font-family: ${({ theme }) => theme.fontFamily.data};
5935
- `;
5936
- var getThumbColor = (value) => {
5937
- if (value <= 10) return "error";
5938
- if (value > 10 && value <= 30) return "warning";
5939
- return "success";
5940
- };
5941
- var getTitleLevel = (value) => {
5942
- if (value <= 10) return "Critical Level";
5943
- if (value > 10 && value <= 30) return "Warning Level";
5944
- return "Safe Level";
5945
- };
5946
- var PercentageSlider = ({ defaultValue = 0, inputCallback, updateThumbColor, updateTitle, showValue, allMarkCentered, ...props }) => {
5947
- const [selectedValue, setSelectedValue] = (0, react.useState)(defaultValue);
5948
- const handleSelectedValue = (0, react.useCallback)((value) => {
5949
- if (inputCallback) inputCallback(value);
5950
- setSelectedValue(value);
5951
- }, [inputCallback]);
5952
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$54, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Headers, {
5953
- $allMarkCentered: allMarkCentered,
5954
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
5955
- htmlFor: "percentage-slider",
5956
- labelText: updateTitle ? updateTitle(selectedValue) : getTitleLevel(selectedValue)
5957
- }), showValue && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ValueTitle, {
5958
- htmlFor: "percentage-slider",
5959
- labelText: `${selectedValue}%`
5960
- })]
5961
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SliderInput, {
5962
- ...props,
5963
- id: "percentage-slider",
5964
- max: 100,
5965
- min: 0,
5966
- defaultValue,
5967
- showValue,
5968
- onChangeCallback: handleSelectedValue,
5969
- thumbColor: updateThumbColor ? updateThumbColor(selectedValue) : getThumbColor(selectedValue),
5970
- allMarkCentered
5971
- })] });
5972
- };
5973
- //#endregion
5974
5900
  //#region src/hooks/useMediaQuery.ts
5975
5901
  /**
5976
5902
  * Custom hook that tells you whether a given media query is active.
@@ -6224,7 +6150,7 @@ var MediaBox = ({ src: incomingSrc, alt, videoOptions = {}, mediaType, hasModalL
6224
6150
  };
6225
6151
  //#endregion
6226
6152
  //#region src/Modals/Modal.tsx
6227
- var Container$53 = styled_components.default.div`
6153
+ var Container$55 = styled_components.default.div`
6228
6154
  position: fixed;
6229
6155
  top: 0;
6230
6156
  left: 0;
@@ -6299,7 +6225,7 @@ var Modal = ({ isOpen = false, isCloseEnable = true, closeText = "", width = "",
6299
6225
  if (dismissCallback) dismissCallback();
6300
6226
  onDismiss();
6301
6227
  }, [onDismiss, dismissCallback]);
6302
- return isOpen ? react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$53, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(LightBox, {
6228
+ return isOpen ? react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$55, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(LightBox, {
6303
6229
  ref: lightBoxRef,
6304
6230
  $width: width,
6305
6231
  $padding: padding,
@@ -6631,6 +6557,325 @@ var useTo = () => {
6631
6557
  return (0, react.useCallback)((url) => () => navigate(url), [navigate]);
6632
6558
  };
6633
6559
  //#endregion
6560
+ //#region src/Form/molecules/EditableText.tsx
6561
+ var IconSlot = styled_components.default.span`
6562
+ display: flex;
6563
+ flex-shrink: 0;
6564
+ `;
6565
+ var Text = styled_components.default.span`
6566
+ overflow: hidden;
6567
+ white-space: nowrap;
6568
+ text-overflow: ellipsis;
6569
+ `;
6570
+ var Container$54 = styled_components.default.div`
6571
+ display: inline-flex;
6572
+ align-items: center;
6573
+ gap: 8px;
6574
+ min-width: 0;
6575
+ height: 100%;
6576
+ font-family: var(--font-ui);
6577
+ font-size: 14px;
6578
+ font-weight: 500;
6579
+ line-height: 20px;
6580
+ color: var(--grey-12);
6581
+ `;
6582
+ var Trigger$1 = styled_components.default.button`
6583
+ display: inline-flex;
6584
+ align-items: center;
6585
+ gap: 8px;
6586
+ min-width: 0;
6587
+ padding: 0;
6588
+ border: none;
6589
+ background: transparent;
6590
+ cursor: pointer;
6591
+ outline: none;
6592
+ font: inherit;
6593
+ color: inherit;
6594
+ text-align: left;
6595
+
6596
+ & svg [stroke] { stroke: currentColor; }
6597
+
6598
+ ${IconSlot} {
6599
+ opacity: 0;
6600
+ transition: opacity var(--speed-normal) var(--easing-primary-in-out);
6601
+ }
6602
+
6603
+ &:hover ${IconSlot},
6604
+ &:focus-visible ${IconSlot} {
6605
+ opacity: 1;
6606
+ }
6607
+
6608
+ &:focus-visible {
6609
+ outline: 2px solid var(--primary-9);
6610
+ outline-offset: 2px;
6611
+ }
6612
+
6613
+ ${({ $alwaysShowIcon }) => $alwaysShowIcon && styled_components.css`
6614
+ ${IconSlot} { opacity: 1; }
6615
+ `}
6616
+ `;
6617
+ var Field = styled_components.default.input`
6618
+ box-sizing: border-box;
6619
+ height: 24px;
6620
+ width: ${({ $fieldWidth }) => $fieldWidth};
6621
+ max-width: 100%;
6622
+ min-width: 0;
6623
+ padding: 0 8px;
6624
+ border: 1px solid var(--input-default-border-color);
6625
+ border-radius: 3px;
6626
+ background: var(--input-default-background-color);
6627
+ color: var(--input-color-default);
6628
+ font: inherit;
6629
+ outline: none;
6630
+
6631
+ &:focus {
6632
+ border-color: var(--input-default-focused-border-color);
6633
+ box-shadow: 0 3px 3px var(--input-default-focused-shadow-color);
6634
+ }
6635
+
6636
+ &::placeholder {
6637
+ color: var(--input-color-placeholder);
6638
+ font-style: italic;
6639
+ }
6640
+
6641
+ &:lang(ja)::placeholder {
6642
+ font-style: normal;
6643
+ }
6644
+
6645
+ &[readonly] {
6646
+ color: var(--input-color-disabled);
6647
+ }
6648
+ `;
6649
+ var Actions = styled_components.default.div`
6650
+ display: flex;
6651
+ flex-shrink: 0;
6652
+ align-items: center;
6653
+ gap: 8px;
6654
+ `;
6655
+ var EditableText = ({ value, defaultValue, label, onSave, onCancel, onEditingChange, saveOnClickOutside = false, allowEmpty = false, fieldWidth = "240px", editIcon = "Edit", alwaysShowEditIcon = false, editText = "Edit", saveText = "Save", savingText = "Saving", cancelText = "Cancel", disabled = false, type = "text", onKeyDown, ...props }) => {
6656
+ const [isEditing, setIsEditing] = (0, react.useState)(false);
6657
+ const [isSaving, setIsSaving] = (0, react.useState)(false);
6658
+ const [ownText, setOwnText] = (0, react.useState)(defaultValue ?? "");
6659
+ const isControlled = value !== void 0;
6660
+ const text = isControlled ? value : ownText;
6661
+ const [draft, setDraft] = (0, react.useState)(text);
6662
+ const containerRef = (0, react.useRef)(null);
6663
+ const fieldRef = (0, react.useRef)(null);
6664
+ const triggerRef = (0, react.useRef)(null);
6665
+ const restoreFocus = (0, react.useRef)(false);
6666
+ const setEditing = (0, react.useCallback)((next) => {
6667
+ setIsEditing(next);
6668
+ onEditingChange?.(next);
6669
+ }, [onEditingChange]);
6670
+ const open = (0, react.useCallback)(() => {
6671
+ setDraft(text);
6672
+ setEditing(true);
6673
+ }, [text, setEditing]);
6674
+ const close = (0, react.useCallback)((withFocus) => {
6675
+ restoreFocus.current = withFocus;
6676
+ setEditing(false);
6677
+ }, [setEditing]);
6678
+ (0, react.useEffect)(() => {
6679
+ if (!isEditing) return;
6680
+ fieldRef.current?.focus();
6681
+ fieldRef.current?.select();
6682
+ }, [isEditing]);
6683
+ (0, react.useEffect)(() => {
6684
+ if (isEditing || !restoreFocus.current) return;
6685
+ restoreFocus.current = false;
6686
+ triggerRef.current?.focus();
6687
+ }, [isEditing]);
6688
+ (0, react.useEffect)(() => {
6689
+ if (disabled && isEditing) close(false);
6690
+ }, [
6691
+ disabled,
6692
+ isEditing,
6693
+ close
6694
+ ]);
6695
+ const cancel = (0, react.useCallback)((withFocus) => {
6696
+ close(withFocus);
6697
+ onCancel?.();
6698
+ }, [close, onCancel]);
6699
+ const commit = (0, react.useCallback)(async (withFocus) => {
6700
+ if (isSaving) return;
6701
+ const next = draft.trim();
6702
+ if (!next && !allowEmpty) return;
6703
+ if (next === text) {
6704
+ close(withFocus);
6705
+ return;
6706
+ }
6707
+ setIsSaving(true);
6708
+ try {
6709
+ await onSave?.(next);
6710
+ if (!isControlled) setOwnText(next);
6711
+ close(withFocus);
6712
+ } catch {} finally {
6713
+ setIsSaving(false);
6714
+ }
6715
+ }, [
6716
+ isSaving,
6717
+ draft,
6718
+ allowEmpty,
6719
+ text,
6720
+ isControlled,
6721
+ onSave,
6722
+ close
6723
+ ]);
6724
+ useClickOutside(containerRef, (0, react.useCallback)(() => {
6725
+ if (!isEditing || isSaving) return;
6726
+ if (saveOnClickOutside) {
6727
+ commit(false);
6728
+ return;
6729
+ }
6730
+ cancel(false);
6731
+ }, [
6732
+ isEditing,
6733
+ isSaving,
6734
+ saveOnClickOutside,
6735
+ commit,
6736
+ cancel
6737
+ ]));
6738
+ const handleKeyDown = (0, react.useCallback)((e) => {
6739
+ onKeyDown?.(e);
6740
+ if (e.nativeEvent.isComposing) return;
6741
+ if (e.key === "Enter") {
6742
+ e.preventDefault();
6743
+ commit(true);
6744
+ return;
6745
+ }
6746
+ if (e.key === "Escape") cancel(true);
6747
+ }, [
6748
+ onKeyDown,
6749
+ commit,
6750
+ cancel
6751
+ ]);
6752
+ const canSave = allowEmpty || draft.trim().length > 0;
6753
+ if (isEditing) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$54, {
6754
+ ref: containerRef,
6755
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Field, {
6756
+ ...props,
6757
+ ref: fieldRef,
6758
+ type,
6759
+ $fieldWidth: fieldWidth,
6760
+ "aria-label": label,
6761
+ "aria-busy": isSaving,
6762
+ readOnly: isSaving,
6763
+ value: draft,
6764
+ onChange: (e) => setDraft(e.target.value),
6765
+ onKeyDown: handleKeyDown
6766
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Actions, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ButtonWithLoading, {
6767
+ size: "small",
6768
+ loading: isSaving,
6769
+ disabled: !canSave,
6770
+ "aria-label": isSaving ? savingText : saveText,
6771
+ onClick: () => {
6772
+ commit(true);
6773
+ },
6774
+ children: isSaving ? savingText : saveText
6775
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
6776
+ design: "secondary",
6777
+ size: "small",
6778
+ disabled: isSaving,
6779
+ onClick: () => cancel(true),
6780
+ children: cancelText
6781
+ })] })]
6782
+ });
6783
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$54, {
6784
+ ref: containerRef,
6785
+ children: disabled ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Text, { children: text }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Trigger$1, {
6786
+ ref: triggerRef,
6787
+ type: "button",
6788
+ $alwaysShowIcon: alwaysShowEditIcon || text === "",
6789
+ "aria-label": `${text}, ${editText}`,
6790
+ onClick: open,
6791
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Text, { children: text }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconSlot, {
6792
+ "aria-hidden": "true",
6793
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LineUIVideoBase.Icon, {
6794
+ icon: editIcon,
6795
+ size: 12
6796
+ })
6797
+ })]
6798
+ })
6799
+ });
6800
+ };
6801
+ //#endregion
6802
+ //#region src/Form/molecules/PasswordField.tsx
6803
+ var PasswordField = ({ name, label, fieldState, feedbackMessage, required, children, formAction, ...props }) => {
6804
+ const [showValue, setShowValue] = (0, react.useState)(false);
6805
+ const [actionIcon, setActionIcon] = (0, react.useState)("PasswordHide");
6806
+ const actionCallback = () => {
6807
+ const newValue = !showValue;
6808
+ setShowValue(newValue);
6809
+ setActionIcon(newValue ? "PasswordShow" : "PasswordHide");
6810
+ };
6811
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
6812
+ htmlFor: name,
6813
+ labelText: label,
6814
+ required,
6815
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Input, {
6816
+ type: showValue ? "text" : "password",
6817
+ actionCallback,
6818
+ actionIcon,
6819
+ name,
6820
+ fieldState,
6821
+ feedbackMessage,
6822
+ required,
6823
+ ...props
6824
+ })
6825
+ });
6826
+ };
6827
+ //#endregion
6828
+ //#region src/Form/molecules/PercentageSlider.tsx
6829
+ var Container$53 = styled_components.default.div``;
6830
+ var Headers = styled_components.default.div`
6831
+ font-size: 14px;
6832
+ color: var(--grey-10);
6833
+ display: flex;
6834
+ justify-content: space-between;
6835
+ margin-bottom: 20px;
6836
+ ${({ $allMarkCentered }) => $allMarkCentered ? `padding: 0;` : `padding: 0 6px;`};
6837
+ `;
6838
+ var ValueTitle = (0, styled_components.default)(Label)`
6839
+ font-family: ${({ theme }) => theme.fontFamily.data};
6840
+ `;
6841
+ var getThumbColor = (value) => {
6842
+ if (value <= 10) return "error";
6843
+ if (value > 10 && value <= 30) return "warning";
6844
+ return "success";
6845
+ };
6846
+ var getTitleLevel = (value) => {
6847
+ if (value <= 10) return "Critical Level";
6848
+ if (value > 10 && value <= 30) return "Warning Level";
6849
+ return "Safe Level";
6850
+ };
6851
+ var PercentageSlider = ({ defaultValue = 0, inputCallback, updateThumbColor, updateTitle, showValue, allMarkCentered, ...props }) => {
6852
+ const [selectedValue, setSelectedValue] = (0, react.useState)(defaultValue);
6853
+ const handleSelectedValue = (0, react.useCallback)((value) => {
6854
+ if (inputCallback) inputCallback(value);
6855
+ setSelectedValue(value);
6856
+ }, [inputCallback]);
6857
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$53, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Headers, {
6858
+ $allMarkCentered: allMarkCentered,
6859
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Label, {
6860
+ htmlFor: "percentage-slider",
6861
+ labelText: updateTitle ? updateTitle(selectedValue) : getTitleLevel(selectedValue)
6862
+ }), showValue && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ValueTitle, {
6863
+ htmlFor: "percentage-slider",
6864
+ labelText: `${selectedValue}%`
6865
+ })]
6866
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SliderInput, {
6867
+ ...props,
6868
+ id: "percentage-slider",
6869
+ max: 100,
6870
+ min: 0,
6871
+ defaultValue,
6872
+ showValue,
6873
+ onChangeCallback: handleSelectedValue,
6874
+ thumbColor: updateThumbColor ? updateThumbColor(selectedValue) : getThumbColor(selectedValue),
6875
+ allMarkCentered
6876
+ })] });
6877
+ };
6878
+ //#endregion
6634
6879
  //#region src/Form/atoms/SplitButtonOption.tsx
6635
6880
  var StyledButton$5 = styled_components.default.button`
6636
6881
  ${resetButtonStyles}
@@ -12409,10 +12654,15 @@ var TagList = ({ tagsConfig }) => {
12409
12654
  }) });
12410
12655
  };
12411
12656
  //#endregion
12657
+ //#region src/Chips/ChipCompactContext.tsx
12658
+ var ChipCompactContext = (0, react.createContext)(false);
12659
+ //#endregion
12412
12660
  //#region src/Chips/atoms/ChipButton.tsx
12413
12661
  var collapse = styled_components.keyframes`
12414
12662
  to {
12415
12663
  width: 0;
12664
+ padding-left: 0;
12665
+ padding-right: 0;
12416
12666
  opacity: 0;
12417
12667
  border-left-width: 0;
12418
12668
  }
@@ -12422,6 +12672,7 @@ var StyledChip = styled_components.default.button`
12422
12672
  display: flex;
12423
12673
  align-items: center;
12424
12674
  justify-content: center;
12675
+ gap: 8px;
12425
12676
  width: 56px;
12426
12677
  height: 56px;
12427
12678
  padding: 0;
@@ -12460,10 +12711,23 @@ var StyledChip = styled_components.default.button`
12460
12711
  outline-offset: -2px;
12461
12712
  }
12462
12713
 
12463
- ${({ $selected }) => $selected && styled_components.css`
12464
- background-color: var(--primary-a3);
12465
- color: var(--primary-11);
12466
- & svg [stroke] { stroke: var(--primary-11); }
12714
+ ${({ $isCompact }) => $isCompact && styled_components.css`
12715
+ width: auto;
12716
+ height: 100%;
12717
+ min-height: 32px;
12718
+ padding: 0 12px;
12719
+ justify-content: flex-start;
12720
+ white-space: nowrap;
12721
+
12722
+ &::after { height: 2px; }
12723
+ `}
12724
+
12725
+ ${({ $selected, $barOnly }) => $selected && styled_components.css`
12726
+ ${!$barOnly && styled_components.css`
12727
+ background-color: var(--primary-a3);
12728
+ color: var(--primary-11);
12729
+ & svg [stroke] { stroke: var(--primary-11); }
12730
+ `}
12467
12731
  &::after { background-color: var(--primary-9); }
12468
12732
  &:hover:enabled::after { background-color: var(--primary-9); }
12469
12733
  `}
@@ -12479,9 +12743,19 @@ var StyledChip = styled_components.default.button`
12479
12743
  @media (prefers-reduced-motion: reduce) { animation: none; }
12480
12744
  `}
12481
12745
  `;
12482
- var ChipButton = ({ variant = "text", icon, label, selected = false, noDivider = false, leaving = false, onLeaveEnd, onAnimationEnd, children, ...props }) => {
12746
+ var ChipButton = ({ variant = "text", isCompact, barOnly = false, icon, label, selected = false, noDivider = false, leaving = false, onLeaveEnd, onAnimationEnd, children, ...props }) => {
12483
12747
  const showDivider = !noDivider;
12748
+ const barIsCompact = (0, react.useContext)(ChipCompactContext);
12749
+ const compact = isCompact ?? barIsCompact;
12750
+ const showIcon = variant !== "text" && !!icon;
12751
+ const showText = variant !== "icon" || !icon;
12484
12752
  const isMenuButton = props["aria-haspopup"] !== void 0;
12753
+ const chipRef = (0, react.useRef)(null);
12754
+ (0, react.useLayoutEffect)(() => {
12755
+ const chip = chipRef.current;
12756
+ if (!chip) return;
12757
+ chip.style.width = leaving && compact ? `${chip.offsetWidth}px` : "";
12758
+ }, [leaving, compact]);
12485
12759
  const hasFired = (0, react.useRef)(false);
12486
12760
  const fireLeaveEnd = (0, react.useCallback)(() => {
12487
12761
  if (hasFired.current) return;
@@ -12503,18 +12777,21 @@ var ChipButton = ({ variant = "text", icon, label, selected = false, noDivider =
12503
12777
  fireLeaveEnd,
12504
12778
  onAnimationEnd
12505
12779
  ]);
12506
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledChip, {
12780
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(StyledChip, {
12781
+ ref: chipRef,
12507
12782
  type: "button",
12508
12783
  "aria-pressed": isMenuButton ? void 0 : selected,
12509
12784
  $selected: selected,
12510
12785
  $showDivider: showDivider,
12511
12786
  $leaving: leaving,
12787
+ $isCompact: compact,
12788
+ $barOnly: barOnly,
12512
12789
  ...props,
12513
12790
  onAnimationEnd: handleAnimationEnd,
12514
- children: variant === "icon" && icon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LineUIVideoBase.Icon, {
12791
+ children: [showIcon ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LineUIVideoBase.Icon, {
12515
12792
  icon,
12516
12793
  size: 16
12517
- }) : label ?? children
12794
+ }) : null, showText ? label ?? children : null]
12518
12795
  });
12519
12796
  };
12520
12797
  //#endregion
@@ -12702,6 +12979,11 @@ var Bar = styled_components.default.div`
12702
12979
  & > * {
12703
12980
  flex-shrink: 0;
12704
12981
  }
12982
+
12983
+ ${({ $isCompact }) => $isCompact && styled_components.css`
12984
+ height: 100%;
12985
+ min-height: 32px;
12986
+ `}
12705
12987
  `;
12706
12988
  var NAV_KEYS = [
12707
12989
  "ArrowLeft",
@@ -12709,7 +12991,7 @@ var NAV_KEYS = [
12709
12991
  "Home",
12710
12992
  "End"
12711
12993
  ];
12712
- var ChipBar = ({ children, onKeyDown, onFocus, ...props }) => {
12994
+ var ChipBar = ({ children, isCompact = false, leadingDivider = false, onKeyDown, onFocus, ...props }) => {
12713
12995
  const barRef = (0, react.useRef)(null);
12714
12996
  const [activeIndex, setActiveIndex] = (0, react.useState)(0);
12715
12997
  const getCells = (0, react.useCallback)(() => {
@@ -12758,14 +13040,18 @@ var ChipBar = ({ children, onKeyDown, onFocus, ...props }) => {
12758
13040
  if (e.key === "End") next = focusables.length - 1;
12759
13041
  focusables[next]?.focus();
12760
13042
  }, [getCells, onKeyDown]);
12761
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Bar, {
12762
- ref: barRef,
12763
- role: "toolbar",
12764
- "aria-label": "Chip bar",
12765
- ...props,
12766
- onFocus: handleFocus,
12767
- onKeyDown: handleKeyDown,
12768
- children: cells.map((child, i) => i === 0 && typeof child.type !== "string" ? (0, react.cloneElement)(child, { noDivider: true }) : child)
13043
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChipCompactContext.Provider, {
13044
+ value: isCompact,
13045
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Bar, {
13046
+ ref: barRef,
13047
+ role: "toolbar",
13048
+ "aria-label": "Chip bar",
13049
+ $isCompact: isCompact,
13050
+ ...props,
13051
+ onFocus: handleFocus,
13052
+ onKeyDown: handleKeyDown,
13053
+ children: cells.map((child, i) => i === 0 && !leadingDivider && typeof child.type !== "string" ? (0, react.cloneElement)(child, { noDivider: true }) : child)
13054
+ })
12769
13055
  });
12770
13056
  };
12771
13057
  //#endregion
@@ -14465,20 +14751,48 @@ var RESERVED_DRAWER_IDS = [
14465
14751
  "notifications",
14466
14752
  "custom"
14467
14753
  ];
14754
+ var TopBarHeightVars = styled_components.createGlobalStyle`
14755
+ :root {
14756
+ --top-bar-bottom-height: ${({ $bottomHeight }) => $bottomHeight};
14757
+ --top-bar-total-height: calc(var(--top-bar-height, 56px) + var(--top-bar-bottom-height, 0px));
14758
+ }
14759
+ `;
14468
14760
  var Container$10 = styled_components.default.div`
14469
14761
  z-index: 9;
14470
14762
  position: sticky;
14471
14763
  top: 0;
14472
- height: 56px;
14473
- padding: 0 16px 0 24px;
14474
14764
  width: 100%;
14475
14765
  display: flex;
14476
- justify-content: space-between;
14766
+ flex-direction: column;
14477
14767
  align-self: flex-start;
14478
- border-bottom: 1px solid var(--dividing-line);
14768
+ border-bottom: var(--top-bar-divider-width, 1px) solid var(--dividing-line);
14479
14769
  background: var(--grey-2);
14480
14770
  box-shadow: 5px 0px 10px 0px var(--primary-a2);
14481
14771
  `;
14772
+ var BarRow = styled_components.default.div`
14773
+ height: calc(var(--top-bar-height, 56px) - var(--top-bar-divider-width, 1px));
14774
+ padding: 0 16px 0 24px;
14775
+ display: flex;
14776
+ justify-content: space-between;
14777
+ `;
14778
+ var BottomArea = styled_components.default.div`
14779
+ position: relative;
14780
+ box-sizing: border-box;
14781
+ height: var(--top-bar-bottom-height, 32px);
14782
+ display: flex;
14783
+ align-items: center;
14784
+ background: var(--global-element-background);
14785
+
14786
+ &::before {
14787
+ content: '';
14788
+ position: absolute;
14789
+ top: 0;
14790
+ left: 0;
14791
+ right: 0;
14792
+ height: 1px;
14793
+ background: var(--dividing-line);
14794
+ }
14795
+ `;
14482
14796
  var RightArea = styled_components.default.div`
14483
14797
  display: flex;
14484
14798
  align-items: center;
@@ -14603,7 +14917,7 @@ var Drawer = styled_components.default.div`
14603
14917
 
14604
14918
  position: fixed;
14605
14919
  right: -10px;
14606
- top: 56px;
14920
+ top: var(--top-bar-total-height, 56px);
14607
14921
  bottom: 0;
14608
14922
  background: var(--global-element-background);
14609
14923
  border-left: var(--dividing-line) 1px solid;
@@ -14634,7 +14948,7 @@ var NotificationsContainer = styled_components.default.div`
14634
14948
  overflow-y: scroll;
14635
14949
  margin-right: -17px;
14636
14950
  `;
14637
- var TopBar = ({ hasNotifications = false, hasLanguage = false, selectedLanguageText = "", languageOptionsText, selectedLangAttribute, hasLogout = true, logoutLink = "/logout", logoutText = "Logout", hasSearch = false, hasCurrentUser = true, currentUserText = "Current User", accountOptionText = "Account Options", searchPlaceholder = "Search for devices, analysis tasks, etc.", userSubmenu = [], userDrawerBespoke, loggedInUser, notificationsHistory, customDrawer, hasSwitchTheme = false, isLightMode = true, switchThemeText = "SWITCH THEME", selectedThemeText = "", onLogout = () => {}, onLanguageToggle = () => {}, onThemeToggle = () => {}, userDrawerFooter, userDrawerMeta, onUserDrawerMetaClick = () => {}, hasUserDrawerMeta, copySuccessMessage, includeCopyTitle, hasUserDrawerFooter, badge, leftAreaElement, sideDrawers, activeDrawer, onActiveDrawerChange }) => {
14951
+ var TopBar = ({ hasNotifications = false, hasLanguage = false, selectedLanguageText = "", languageOptionsText, selectedLangAttribute, hasLogout = true, logoutLink = "/logout", logoutText = "Logout", hasSearch = false, hasCurrentUser = true, currentUserText = "Current User", accountOptionText = "Account Options", searchPlaceholder = "Search for devices, analysis tasks, etc.", userSubmenu = [], userDrawerBespoke, loggedInUser, notificationsHistory, customDrawer, hasSwitchTheme = false, isLightMode = true, switchThemeText = "SWITCH THEME", selectedThemeText = "", onLogout = () => {}, onLanguageToggle = () => {}, onThemeToggle = () => {}, userDrawerFooter, userDrawerMeta, onUserDrawerMetaClick = () => {}, hasUserDrawerMeta, copySuccessMessage, includeCopyTitle, hasUserDrawerFooter, badge, leftAreaElement, bottomAreaElement, bottomAreaHeight = "32px", sideDrawers, activeDrawer, onActiveDrawerChange }) => {
14638
14952
  const [internalDrawer, setInternalDrawer] = (0, react.useState)(null);
14639
14953
  const isControlled = activeDrawer !== void 0;
14640
14954
  const openDrawer = isControlled ? activeDrawer : internalDrawer;
@@ -14668,12 +14982,12 @@ var TopBar = ({ hasNotifications = false, hasLanguage = false, selectedLanguageT
14668
14982
  for (const warning of sideDrawerWarnings) console.warn(`TopBar: ${warning}`);
14669
14983
  }, []);
14670
14984
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container$10, { children: [
14671
- hasSearch ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(SearchBar, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWrapper, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LineUIVideoBase.Icon, {
14985
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TopBarHeightVars, { $bottomHeight: bottomAreaElement ? bottomAreaHeight : "0px" }),
14986
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(BarRow, { children: [hasSearch ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(SearchBar, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconWrapper, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LineUIVideoBase.Icon, {
14672
14987
  icon: "Search",
14673
14988
  size: 16,
14674
14989
  color: "grey-6"
14675
- }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInput, { placeholder: searchPlaceholder })] }) : leftAreaElement ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LeftArea, { children: leftAreaElement }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {}),
14676
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(RightArea, { children: [badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TopBarBadge, { ...badge }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ButtonArea, { children: [
14990
+ }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInput, { placeholder: searchPlaceholder })] }) : leftAreaElement ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LeftArea, { children: leftAreaElement }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(RightArea, { children: [badge && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TopBarBadge, { ...badge }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ButtonArea, { children: [
14677
14991
  customDrawer && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DrawerToggle, {
14678
14992
  $isActive: openDrawer === "custom",
14679
14993
  onClick: () => toggleDrawers("custom"),
@@ -14697,7 +15011,8 @@ var TopBar = ({ hasNotifications = false, hasLanguage = false, selectedLanguageT
14697
15011
  color: "dimmed"
14698
15012
  })
14699
15013
  })
14700
- ] })] }),
15014
+ ] })] })] }),
15015
+ bottomAreaElement ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BottomArea, { children: bottomAreaElement }) : null,
14701
15016
  react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DrawerPortalWrapper, { children: [
14702
15017
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Drawer, {
14703
15018
  $isOpen: openDrawer === "user",
@@ -15836,9 +16151,10 @@ var HeaderContainer = styled_components.default.div`
15836
16151
  flex-grow: 3;
15837
16152
  }
15838
16153
  `;
15839
- var MobileNavbar = ({ content, home, logoMark, supportUrl, defaultMenuOpen = true, closeText, hasLanguage, hasLogout, logoutLink, hasCurrentUser, hasNotifications, userSubmenu, userDrawerBespoke, loggedInUser, notificationsHistory, customDrawer, sideDrawers, supportText, onLogout, onLanguageToggle, ...props }) => {
16154
+ var MobileNavbar = ({ content, home, logoMark, supportUrl, defaultMenuOpen = true, closeText, hasLanguage, hasLogout, logoutLink, hasCurrentUser, hasNotifications, userSubmenu, userDrawerBespoke, loggedInUser, notificationsHistory, customDrawer, sideDrawers, bottomAreaElement, supportText, onLogout, onLanguageToggle, ...props }) => {
15840
16155
  (0, react.useEffect)(() => {
15841
16156
  if (sideDrawers?.length) console.warn("MobileNavbar: `sideDrawers` are not supported on mobile and will not open. Use `customDrawer` for a drawer that works across breakpoints.");
16157
+ if (bottomAreaElement) console.warn("MobileNavbar: `bottomAreaElement` is not supported on mobile and will not render.");
15842
16158
  }, []);
15843
16159
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Container$1, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Tabs, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(HeaderContainer, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(MobileLogoLink, {
15844
16160
  home,
@@ -16070,6 +16386,7 @@ exports.DebouncedSearcher = DebouncedSearcher;
16070
16386
  exports.DropArea = DropArea;
16071
16387
  exports.DurationSlider = DurationSlider;
16072
16388
  exports.EditCell = EditCell;
16389
+ exports.EditableText = EditableText;
16073
16390
  exports.FilterBar = FilterBar;
16074
16391
  exports.FilterButton = FilterButton;
16075
16392
  exports.FilterDropdown = FilterDropdown;