scorer-ui-kit 3.0.3 → 3.0.5

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
@@ -12562,19 +12839,20 @@ var Menu = styled_components.default.div`
12562
12839
  flex-direction: column;
12563
12840
  align-items: stretch;
12564
12841
  min-width: 216px;
12565
- padding: 4px 0;
12842
+ padding: 0;
12843
+ overflow: hidden;
12566
12844
  background: var(--grey-1);
12567
- border: 1px solid var(--grey-4);
12845
+ border: 1px solid var(--grey-7);
12568
12846
  border-radius: 4px;
12569
12847
  box-shadow: 0px 5px 25px 0px var(--filter-button-shadow-color);
12570
12848
  `;
12571
12849
  var MenuItem = styled_components.default.button`
12572
12850
  display: flex;
12573
12851
  align-items: center;
12574
- gap: 4px;
12852
+ gap: 12px;
12575
12853
  width: 100%;
12576
12854
  height: var(--button-height, 32px);
12577
- padding: 3px 8px;
12855
+ padding: 0 8px;
12578
12856
  border: none;
12579
12857
  border-bottom: 1px solid var(--grey-7);
12580
12858
  background: transparent;
@@ -12587,11 +12865,15 @@ var MenuItem = styled_components.default.button`
12587
12865
  text-align: left;
12588
12866
  transition: background-color var(--speed-fast) var(--easing-primary-in-out);
12589
12867
 
12590
- & svg [stroke] { stroke: var(--grey-12); }
12868
+ & svg [stroke] { stroke: var(--grey-10); }
12591
12869
 
12592
12870
  &:last-child { border-bottom: none; }
12593
12871
  &:hover:enabled { background-color: var(--grey-3); }
12594
- &:disabled { cursor: not-allowed; opacity: 0.5; }
12872
+ &:disabled {
12873
+ cursor: not-allowed;
12874
+ color: var(--grey-7);
12875
+ & svg [stroke] { stroke: var(--grey-7); }
12876
+ }
12595
12877
 
12596
12878
  ${({ $current }) => $current && styled_components.css`
12597
12879
  background-color: var(--grey-4);
@@ -12601,6 +12883,8 @@ var MenuItem = styled_components.default.button`
12601
12883
  var CheckSlot = styled_components.default.span`
12602
12884
  display: flex;
12603
12885
  margin-left: auto;
12886
+
12887
+ & svg [stroke] { stroke: var(--primary-11); }
12604
12888
  `;
12605
12889
  var ChipDropdown = ({ items, icon = "FilterEllipsis", label, selectedId, checkIcon = "Success", triggerLabel, noDivider = false, disabled = false, onOpenChange, onKeyDown, ...props }) => {
12606
12890
  const [isOpen, setIsOpen] = (0, react.useState)(false);
@@ -12702,6 +12986,11 @@ var Bar = styled_components.default.div`
12702
12986
  & > * {
12703
12987
  flex-shrink: 0;
12704
12988
  }
12989
+
12990
+ ${({ $isCompact }) => $isCompact && styled_components.css`
12991
+ height: 100%;
12992
+ min-height: 32px;
12993
+ `}
12705
12994
  `;
12706
12995
  var NAV_KEYS = [
12707
12996
  "ArrowLeft",
@@ -12709,7 +12998,7 @@ var NAV_KEYS = [
12709
12998
  "Home",
12710
12999
  "End"
12711
13000
  ];
12712
- var ChipBar = ({ children, onKeyDown, onFocus, ...props }) => {
13001
+ var ChipBar = ({ children, isCompact = false, leadingDivider = false, onKeyDown, onFocus, ...props }) => {
12713
13002
  const barRef = (0, react.useRef)(null);
12714
13003
  const [activeIndex, setActiveIndex] = (0, react.useState)(0);
12715
13004
  const getCells = (0, react.useCallback)(() => {
@@ -12758,14 +13047,18 @@ var ChipBar = ({ children, onKeyDown, onFocus, ...props }) => {
12758
13047
  if (e.key === "End") next = focusables.length - 1;
12759
13048
  focusables[next]?.focus();
12760
13049
  }, [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)
13050
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChipCompactContext.Provider, {
13051
+ value: isCompact,
13052
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Bar, {
13053
+ ref: barRef,
13054
+ role: "toolbar",
13055
+ "aria-label": "Chip bar",
13056
+ $isCompact: isCompact,
13057
+ ...props,
13058
+ onFocus: handleFocus,
13059
+ onKeyDown: handleKeyDown,
13060
+ children: cells.map((child, i) => i === 0 && !leadingDivider && typeof child.type !== "string" ? (0, react.cloneElement)(child, { noDivider: true }) : child)
13061
+ })
12769
13062
  });
12770
13063
  };
12771
13064
  //#endregion
@@ -14465,20 +14758,48 @@ var RESERVED_DRAWER_IDS = [
14465
14758
  "notifications",
14466
14759
  "custom"
14467
14760
  ];
14761
+ var TopBarHeightVars = styled_components.createGlobalStyle`
14762
+ :root {
14763
+ --top-bar-bottom-height: ${({ $bottomHeight }) => $bottomHeight};
14764
+ --top-bar-total-height: calc(var(--top-bar-height, 56px) + var(--top-bar-bottom-height, 0px));
14765
+ }
14766
+ `;
14468
14767
  var Container$10 = styled_components.default.div`
14469
14768
  z-index: 9;
14470
14769
  position: sticky;
14471
14770
  top: 0;
14472
- height: 56px;
14473
- padding: 0 16px 0 24px;
14474
14771
  width: 100%;
14475
14772
  display: flex;
14476
- justify-content: space-between;
14773
+ flex-direction: column;
14477
14774
  align-self: flex-start;
14478
- border-bottom: 1px solid var(--dividing-line);
14775
+ border-bottom: var(--top-bar-divider-width, 1px) solid var(--dividing-line);
14479
14776
  background: var(--grey-2);
14480
14777
  box-shadow: 5px 0px 10px 0px var(--primary-a2);
14481
14778
  `;
14779
+ var BarRow = styled_components.default.div`
14780
+ height: calc(var(--top-bar-height, 56px) - var(--top-bar-divider-width, 1px));
14781
+ padding: 0 16px 0 24px;
14782
+ display: flex;
14783
+ justify-content: space-between;
14784
+ `;
14785
+ var BottomArea = styled_components.default.div`
14786
+ position: relative;
14787
+ box-sizing: border-box;
14788
+ height: var(--top-bar-bottom-height, 32px);
14789
+ display: flex;
14790
+ align-items: center;
14791
+ background: var(--global-element-background);
14792
+
14793
+ &::before {
14794
+ content: '';
14795
+ position: absolute;
14796
+ top: 0;
14797
+ left: 0;
14798
+ right: 0;
14799
+ height: 1px;
14800
+ background: var(--dividing-line);
14801
+ }
14802
+ `;
14482
14803
  var RightArea = styled_components.default.div`
14483
14804
  display: flex;
14484
14805
  align-items: center;
@@ -14603,7 +14924,7 @@ var Drawer = styled_components.default.div`
14603
14924
 
14604
14925
  position: fixed;
14605
14926
  right: -10px;
14606
- top: 56px;
14927
+ top: var(--top-bar-total-height, 56px);
14607
14928
  bottom: 0;
14608
14929
  background: var(--global-element-background);
14609
14930
  border-left: var(--dividing-line) 1px solid;
@@ -14634,7 +14955,7 @@ var NotificationsContainer = styled_components.default.div`
14634
14955
  overflow-y: scroll;
14635
14956
  margin-right: -17px;
14636
14957
  `;
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 }) => {
14958
+ 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
14959
  const [internalDrawer, setInternalDrawer] = (0, react.useState)(null);
14639
14960
  const isControlled = activeDrawer !== void 0;
14640
14961
  const openDrawer = isControlled ? activeDrawer : internalDrawer;
@@ -14668,12 +14989,12 @@ var TopBar = ({ hasNotifications = false, hasLanguage = false, selectedLanguageT
14668
14989
  for (const warning of sideDrawerWarnings) console.warn(`TopBar: ${warning}`);
14669
14990
  }, []);
14670
14991
  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, {
14992
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TopBarHeightVars, { $bottomHeight: bottomAreaElement ? bottomAreaHeight : "0px" }),
14993
+ /* @__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
14994
  icon: "Search",
14673
14995
  size: 16,
14674
14996
  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: [
14997
+ }) }), /* @__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
14998
  customDrawer && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DrawerToggle, {
14678
14999
  $isActive: openDrawer === "custom",
14679
15000
  onClick: () => toggleDrawers("custom"),
@@ -14697,7 +15018,8 @@ var TopBar = ({ hasNotifications = false, hasLanguage = false, selectedLanguageT
14697
15018
  color: "dimmed"
14698
15019
  })
14699
15020
  })
14700
- ] })] }),
15021
+ ] })] })] }),
15022
+ bottomAreaElement ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BottomArea, { children: bottomAreaElement }) : null,
14701
15023
  react_dom.default.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DrawerPortalWrapper, { children: [
14702
15024
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Drawer, {
14703
15025
  $isOpen: openDrawer === "user",
@@ -15836,9 +16158,10 @@ var HeaderContainer = styled_components.default.div`
15836
16158
  flex-grow: 3;
15837
16159
  }
15838
16160
  `;
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 }) => {
16161
+ 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
16162
  (0, react.useEffect)(() => {
15841
16163
  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.");
16164
+ if (bottomAreaElement) console.warn("MobileNavbar: `bottomAreaElement` is not supported on mobile and will not render.");
15842
16165
  }, []);
15843
16166
  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
16167
  home,
@@ -16070,6 +16393,7 @@ exports.DebouncedSearcher = DebouncedSearcher;
16070
16393
  exports.DropArea = DropArea;
16071
16394
  exports.DurationSlider = DurationSlider;
16072
16395
  exports.EditCell = EditCell;
16396
+ exports.EditableText = EditableText;
16073
16397
  exports.FilterBar = FilterBar;
16074
16398
  exports.FilterButton = FilterButton;
16075
16399
  exports.FilterDropdown = FilterDropdown;