@ceed/ads 1.15.0 → 1.16.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -4409,17 +4409,200 @@ var InsetDrawer = styled19(JoyDrawer)(({ theme }) => ({
4409
4409
  }
4410
4410
  }));
4411
4411
 
4412
+ // src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
4413
+ import React30, { useCallback as useCallback13, useEffect as useEffect8, useMemo as useMemo12, useRef as useRef8, useState as useState10 } from "react";
4414
+ import { Input as Input2, Stack as Stack2 } from "@mui/joy";
4415
+ import SearchIcon from "@mui/icons-material/Search";
4416
+ import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
4417
+ function FilterableCheckboxGroup(props) {
4418
+ const { value, options, label, placeholder, helperText, size = "md", required, onChange, maxHeight = 300 } = props;
4419
+ const [searchTerm, setSearchTerm] = useState10("");
4420
+ const [sortedOptions, setSortedOptions] = useState10(options);
4421
+ const [internalValue, setInternalValue] = useControlledState(
4422
+ value,
4423
+ value ?? [],
4424
+ useCallback13((newValue) => onChange?.(newValue), [onChange])
4425
+ );
4426
+ const parentRef = useRef8(null);
4427
+ const isInitialSortRef = useRef8(false);
4428
+ const filteredOptions = useMemo12(() => {
4429
+ if (!searchTerm) return sortedOptions;
4430
+ return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
4431
+ }, [sortedOptions, searchTerm]);
4432
+ const itemSize = useMemo12(() => {
4433
+ switch (size) {
4434
+ case "sm":
4435
+ return 28;
4436
+ case "md":
4437
+ return 32;
4438
+ case "lg":
4439
+ return 36;
4440
+ }
4441
+ }, [size]);
4442
+ const noOptionsFontSize = useMemo12(() => {
4443
+ switch (size) {
4444
+ case "sm":
4445
+ return "14px";
4446
+ case "md":
4447
+ return "16px";
4448
+ case "lg":
4449
+ return "18px";
4450
+ }
4451
+ }, [size]);
4452
+ const virtualizer = useVirtualizer3({
4453
+ count: filteredOptions.length,
4454
+ estimateSize: () => itemSize,
4455
+ measureElement: (element) => element.clientHeight,
4456
+ getScrollElement: () => parentRef.current,
4457
+ overscan: 5
4458
+ });
4459
+ const items = virtualizer.getVirtualItems();
4460
+ useEffect8(() => {
4461
+ if (isInitialSortRef.current) return;
4462
+ const initialValue = value ?? [];
4463
+ const sorted = [...options].sort((a, b) => {
4464
+ const aSelected = initialValue.includes(a.value);
4465
+ const bSelected = initialValue.includes(b.value);
4466
+ if (aSelected !== bSelected) {
4467
+ return aSelected ? -1 : 1;
4468
+ }
4469
+ const aIsAlpha = /^[a-zA-Z]/.test(a.label);
4470
+ const bIsAlpha = /^[a-zA-Z]/.test(b.label);
4471
+ if (aIsAlpha !== bIsAlpha) {
4472
+ return aIsAlpha ? -1 : 1;
4473
+ }
4474
+ return a.label.localeCompare(b.label);
4475
+ });
4476
+ setSortedOptions(sorted);
4477
+ isInitialSortRef.current = true;
4478
+ }, [options, value]);
4479
+ useEffect8(() => {
4480
+ virtualizer.measure();
4481
+ }, [virtualizer, filteredOptions]);
4482
+ const handleSearchChange = useCallback13((event) => {
4483
+ setSearchTerm(event.target.value);
4484
+ }, []);
4485
+ const handleCheckboxChange = useCallback13(
4486
+ (optionValue) => (event) => {
4487
+ const checked = event.target.checked;
4488
+ const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
4489
+ setInternalValue(newValue);
4490
+ },
4491
+ [internalValue, setInternalValue]
4492
+ );
4493
+ const handleSelectAll = useCallback13(
4494
+ (event) => {
4495
+ const checked = event.target.checked;
4496
+ if (checked) {
4497
+ setInternalValue(filteredOptions.map((option) => option.value));
4498
+ } else {
4499
+ setInternalValue([]);
4500
+ }
4501
+ },
4502
+ [filteredOptions, setInternalValue]
4503
+ );
4504
+ const isAllSelected = filteredOptions.length > 0 && filteredOptions.every((option) => internalValue.includes(option.value));
4505
+ const isIndeterminate = !isAllSelected && filteredOptions.some((option) => internalValue.includes(option.value));
4506
+ return /* @__PURE__ */ React30.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ React30.createElement(FormControl_default, { required, size }, label && /* @__PURE__ */ React30.createElement(FormLabel_default, null, label), /* @__PURE__ */ React30.createElement(
4507
+ Input2,
4508
+ {
4509
+ variant: "outlined",
4510
+ color: "neutral",
4511
+ placeholder,
4512
+ value: searchTerm,
4513
+ onChange: handleSearchChange,
4514
+ size,
4515
+ endDecorator: /* @__PURE__ */ React30.createElement(SearchIcon, null)
4516
+ }
4517
+ ), helperText && /* @__PURE__ */ React30.createElement(FormHelperText_default, null, helperText)), filteredOptions.length === 0 ? /* @__PURE__ */ React30.createElement(
4518
+ Stack2,
4519
+ {
4520
+ sx: {
4521
+ padding: "20px 12px",
4522
+ justifyContent: "center",
4523
+ alignItems: "center",
4524
+ fontSize: noOptionsFontSize,
4525
+ color: "#A2AAB8"
4526
+ }
4527
+ },
4528
+ "No options found."
4529
+ ) : /* @__PURE__ */ React30.createElement(
4530
+ "div",
4531
+ {
4532
+ ref: parentRef,
4533
+ style: {
4534
+ overflow: "auto",
4535
+ maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight,
4536
+ padding: "8px 0px",
4537
+ marginTop: "8px"
4538
+ }
4539
+ },
4540
+ !searchTerm && /* @__PURE__ */ React30.createElement(
4541
+ Checkbox_default,
4542
+ {
4543
+ label: "Select all",
4544
+ checked: isAllSelected,
4545
+ indeterminate: isIndeterminate,
4546
+ onChange: handleSelectAll,
4547
+ size,
4548
+ slotProps: {
4549
+ action: {
4550
+ sx: { top: 0, left: 0, bottom: 0, right: 0 }
4551
+ }
4552
+ },
4553
+ sx: { width: "100%", height: itemSize }
4554
+ }
4555
+ ),
4556
+ /* @__PURE__ */ React30.createElement(
4557
+ Stack2,
4558
+ {
4559
+ sx: {
4560
+ height: `${virtualizer.getTotalSize()}px`,
4561
+ position: "relative"
4562
+ }
4563
+ },
4564
+ items.map((virtualRow) => {
4565
+ const option = filteredOptions[virtualRow.index];
4566
+ return /* @__PURE__ */ React30.createElement(
4567
+ Checkbox_default,
4568
+ {
4569
+ key: virtualRow.key,
4570
+ label: option.label,
4571
+ checked: internalValue.includes(option.value),
4572
+ onChange: handleCheckboxChange(option.value),
4573
+ size,
4574
+ slotProps: {
4575
+ action: {
4576
+ sx: { top: 0, left: 0, bottom: 0, right: 0 }
4577
+ }
4578
+ },
4579
+ sx: {
4580
+ position: "absolute",
4581
+ top: 0,
4582
+ left: 0,
4583
+ width: "100%",
4584
+ height: `${virtualRow.size}px`,
4585
+ transform: `translateY(${virtualRow.start}px)`
4586
+ }
4587
+ }
4588
+ );
4589
+ })
4590
+ )
4591
+ ));
4592
+ }
4593
+ FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
4594
+
4412
4595
  // src/components/FilterMenu/FilterMenu.tsx
4413
- import React39, { useCallback as useCallback21 } from "react";
4414
- import { Button as Button2, Stack as Stack10 } from "@mui/joy";
4596
+ import React40, { useCallback as useCallback22 } from "react";
4597
+ import { Button as Button2, Stack as Stack11 } from "@mui/joy";
4415
4598
 
4416
4599
  // src/components/FilterMenu/components/CheckboxGroup.tsx
4417
- import React30, { useCallback as useCallback13 } from "react";
4418
- import { Stack as Stack2 } from "@mui/joy";
4600
+ import React31, { useCallback as useCallback14 } from "react";
4601
+ import { Stack as Stack3 } from "@mui/joy";
4419
4602
  function CheckboxGroup(props) {
4420
4603
  const { id, label, options, value, onChange, hidden } = props;
4421
4604
  const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
4422
- const handleCheckboxChange = useCallback13(
4605
+ const handleCheckboxChange = useCallback14(
4423
4606
  (optionValue) => (event) => {
4424
4607
  const checked = event.target.checked;
4425
4608
  let newValue;
@@ -4435,7 +4618,7 @@ function CheckboxGroup(props) {
4435
4618
  if (hidden) {
4436
4619
  return null;
4437
4620
  }
4438
- return /* @__PURE__ */ React30.createElement(Stack2, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React30.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ React30.createElement(
4621
+ return /* @__PURE__ */ React31.createElement(Stack3, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React31.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ React31.createElement(
4439
4622
  Checkbox_default,
4440
4623
  {
4441
4624
  key: `${id}-${option.value}`,
@@ -4448,7 +4631,7 @@ function CheckboxGroup(props) {
4448
4631
  CheckboxGroup.displayName = "CheckboxGroup";
4449
4632
 
4450
4633
  // src/components/FilterMenu/components/RadioGroup.tsx
4451
- import React31, { useCallback as useCallback14 } from "react";
4634
+ import React32, { useCallback as useCallback15 } from "react";
4452
4635
 
4453
4636
  // src/components/Radio/Radio.tsx
4454
4637
  import { Radio as JoyRadio, RadioGroup as JoyRadioGroup } from "@mui/joy";
@@ -4461,11 +4644,11 @@ var RadioGroup = MotionRadioGroup;
4461
4644
  RadioGroup.displayName = "RadioGroup";
4462
4645
 
4463
4646
  // src/components/FilterMenu/components/RadioGroup.tsx
4464
- import { Stack as Stack3 } from "@mui/joy";
4647
+ import { Stack as Stack4 } from "@mui/joy";
4465
4648
  function RadioGroup2(props) {
4466
4649
  const { id, label, options, value, onChange, hidden } = props;
4467
4650
  const [internalValue, setInternalValue] = useControlledState(value, value ?? "", onChange);
4468
- const handleRadioChange = useCallback14(
4651
+ const handleRadioChange = useCallback15(
4469
4652
  (event) => {
4470
4653
  const newValue = event.target.value;
4471
4654
  const option = options.find((opt) => opt.value.toString() === newValue);
@@ -4477,13 +4660,13 @@ function RadioGroup2(props) {
4477
4660
  if (hidden) {
4478
4661
  return null;
4479
4662
  }
4480
- return /* @__PURE__ */ React31.createElement(Stack3, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React31.createElement(Stack3, { spacing: 1 }, /* @__PURE__ */ React31.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ React31.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ React31.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
4663
+ return /* @__PURE__ */ React32.createElement(Stack4, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React32.createElement(Stack4, { spacing: 1 }, /* @__PURE__ */ React32.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ React32.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ React32.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
4481
4664
  }
4482
4665
  RadioGroup2.displayName = "RadioGroup";
4483
4666
 
4484
4667
  // src/components/FilterMenu/components/DateRange.tsx
4485
- import React32, { useCallback as useCallback15, useMemo as useMemo12, useState as useState10, useEffect as useEffect8 } from "react";
4486
- import { Stack as Stack4 } from "@mui/joy";
4668
+ import React33, { useCallback as useCallback16, useMemo as useMemo13, useState as useState11, useEffect as useEffect9 } from "react";
4669
+ import { Stack as Stack5 } from "@mui/joy";
4487
4670
  function DateRange(props) {
4488
4671
  const {
4489
4672
  id,
@@ -4501,8 +4684,8 @@ function DateRange(props) {
4501
4684
  hideClearButton
4502
4685
  } = props;
4503
4686
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
4504
- const [selectedOption, setSelectedOption] = useState10("all-time");
4505
- const dateRangeOptions = useMemo12(
4687
+ const [selectedOption, setSelectedOption] = useState11("all-time");
4688
+ const dateRangeOptions = useMemo13(
4506
4689
  () => [
4507
4690
  { label: "All Time", value: "all-time" },
4508
4691
  { label: "This Month", value: "this-month" },
@@ -4512,7 +4695,7 @@ function DateRange(props) {
4512
4695
  ],
4513
4696
  []
4514
4697
  );
4515
- const getDateRangeForOption = useCallback15(
4698
+ const getDateRangeForOption = useCallback16(
4516
4699
  (option) => {
4517
4700
  const now = /* @__PURE__ */ new Date();
4518
4701
  const currentYear = now.getFullYear();
@@ -4551,7 +4734,7 @@ function DateRange(props) {
4551
4734
  },
4552
4735
  [internalValue]
4553
4736
  );
4554
- const determineOptionFromValue = useCallback15(
4737
+ const determineOptionFromValue = useCallback16(
4555
4738
  (value2) => {
4556
4739
  if (!value2) {
4557
4740
  return "all-time";
@@ -4567,17 +4750,17 @@ function DateRange(props) {
4567
4750
  },
4568
4751
  [getDateRangeForOption]
4569
4752
  );
4570
- const customDateRangeValue = useMemo12(() => {
4753
+ const customDateRangeValue = useMemo13(() => {
4571
4754
  if (selectedOption === "custom" && internalValue) {
4572
4755
  return `${internalValue[0]} - ${internalValue[1]}`;
4573
4756
  }
4574
4757
  return "";
4575
4758
  }, [selectedOption, internalValue]);
4576
- useEffect8(() => {
4759
+ useEffect9(() => {
4577
4760
  const newOption = determineOptionFromValue(internalValue);
4578
4761
  setSelectedOption(newOption);
4579
4762
  }, [internalValue, determineOptionFromValue]);
4580
- const handleOptionChange = useCallback15(
4763
+ const handleOptionChange = useCallback16(
4581
4764
  (event) => {
4582
4765
  const newOption = event.target.value;
4583
4766
  setSelectedOption(newOption);
@@ -4586,7 +4769,7 @@ function DateRange(props) {
4586
4769
  },
4587
4770
  [getDateRangeForOption, setInternalValue]
4588
4771
  );
4589
- const handleCustomDateChange = useCallback15(
4772
+ const handleCustomDateChange = useCallback16(
4590
4773
  (event) => {
4591
4774
  const dateRangeString = event.target.value;
4592
4775
  if (dateRangeString && dateRangeString.includes(" - ")) {
@@ -4604,7 +4787,7 @@ function DateRange(props) {
4604
4787
  if (hidden) {
4605
4788
  return null;
4606
4789
  }
4607
- return /* @__PURE__ */ React32.createElement(Stack4, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React32.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React32.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ React32.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ React32.createElement(
4790
+ return /* @__PURE__ */ React33.createElement(Stack5, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React33.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React33.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ React33.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ React33.createElement(
4608
4791
  DateRangePicker,
4609
4792
  {
4610
4793
  value: customDateRangeValue,
@@ -4623,12 +4806,12 @@ function DateRange(props) {
4623
4806
  DateRange.displayName = "DateRange";
4624
4807
 
4625
4808
  // src/components/FilterMenu/components/CurrencyInput.tsx
4626
- import React33, { useCallback as useCallback16 } from "react";
4627
- import { Stack as Stack5 } from "@mui/joy";
4809
+ import React34, { useCallback as useCallback17 } from "react";
4810
+ import { Stack as Stack6 } from "@mui/joy";
4628
4811
  function CurrencyInput3(props) {
4629
4812
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
4630
4813
  const [internalValue, setInternalValue] = useControlledState(value, value, onChange);
4631
- const handleCurrencyChange = useCallback16(
4814
+ const handleCurrencyChange = useCallback17(
4632
4815
  (event) => {
4633
4816
  const newValue = event.target.value;
4634
4817
  setInternalValue(newValue);
@@ -4638,7 +4821,7 @@ function CurrencyInput3(props) {
4638
4821
  if (hidden) {
4639
4822
  return null;
4640
4823
  }
4641
- return /* @__PURE__ */ React33.createElement(Stack5, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React33.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React33.createElement(
4824
+ return /* @__PURE__ */ React34.createElement(Stack6, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React34.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React34.createElement(
4642
4825
  CurrencyInput,
4643
4826
  {
4644
4827
  value: internalValue,
@@ -4654,14 +4837,14 @@ function CurrencyInput3(props) {
4654
4837
  CurrencyInput3.displayName = "CurrencyInput";
4655
4838
 
4656
4839
  // src/components/FilterMenu/components/CurrencyRange.tsx
4657
- import React34, { useCallback as useCallback17 } from "react";
4658
- import { Stack as Stack6 } from "@mui/joy";
4840
+ import React35, { useCallback as useCallback18 } from "react";
4841
+ import { Stack as Stack7 } from "@mui/joy";
4659
4842
  function CurrencyRange(props) {
4660
4843
  const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
4661
4844
  const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
4662
4845
  const minValue = internalValue?.[0];
4663
4846
  const maxValue = internalValue?.[1];
4664
- const handleMinChange = useCallback17(
4847
+ const handleMinChange = useCallback18(
4665
4848
  (event) => {
4666
4849
  const newMinValue = event.target.value;
4667
4850
  const currentMaxValue = maxValue;
@@ -4675,7 +4858,7 @@ function CurrencyRange(props) {
4675
4858
  },
4676
4859
  [maxValue, setInternalValue]
4677
4860
  );
4678
- const handleMaxChange = useCallback17(
4861
+ const handleMaxChange = useCallback18(
4679
4862
  (event) => {
4680
4863
  const newMaxValue = event.target.value;
4681
4864
  const currentMinValue = minValue;
@@ -4692,7 +4875,7 @@ function CurrencyRange(props) {
4692
4875
  if (hidden) {
4693
4876
  return null;
4694
4877
  }
4695
- return /* @__PURE__ */ React34.createElement(Stack6, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React34.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React34.createElement(Stack6, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ React34.createElement(
4878
+ return /* @__PURE__ */ React35.createElement(Stack7, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React35.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React35.createElement(Stack7, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ React35.createElement(
4696
4879
  CurrencyInput,
4697
4880
  {
4698
4881
  label: "Minimum",
@@ -4705,7 +4888,7 @@ function CurrencyRange(props) {
4705
4888
  "aria-labelledby": label ? id : void 0,
4706
4889
  "aria-label": "Minimum amount"
4707
4890
  }
4708
- ), /* @__PURE__ */ React34.createElement(
4891
+ ), /* @__PURE__ */ React35.createElement(
4709
4892
  CurrencyInput,
4710
4893
  {
4711
4894
  label: "Maximum",
@@ -4723,20 +4906,20 @@ function CurrencyRange(props) {
4723
4906
  CurrencyRange.displayName = "CurrencyRange";
4724
4907
 
4725
4908
  // src/components/FilterMenu/components/PercentageInput.tsx
4726
- import React36 from "react";
4727
- import { Stack as Stack7, Typography as Typography2 } from "@mui/joy";
4909
+ import React37 from "react";
4910
+ import { Stack as Stack8, Typography as Typography2 } from "@mui/joy";
4728
4911
 
4729
4912
  // src/components/PercentageInput/PercentageInput.tsx
4730
- import React35, { useCallback as useCallback18, useMemo as useMemo13, useState as useState11 } from "react";
4913
+ import React36, { useCallback as useCallback19, useMemo as useMemo14, useState as useState12 } from "react";
4731
4914
  import { NumericFormat as NumericFormat2 } from "react-number-format";
4732
4915
  import { styled as styled20, useThemeProps as useThemeProps6 } from "@mui/joy";
4733
4916
  var padDecimal = (value, decimalScale) => {
4734
4917
  const [integer, decimal = ""] = `${value}`.split(".");
4735
4918
  return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
4736
4919
  };
4737
- var TextMaskAdapter7 = React35.forwardRef(function TextMaskAdapter8(props, ref) {
4920
+ var TextMaskAdapter7 = React36.forwardRef(function TextMaskAdapter8(props, ref) {
4738
4921
  const { onChange, min, max, ...innerProps } = props;
4739
- return /* @__PURE__ */ React35.createElement(
4922
+ return /* @__PURE__ */ React36.createElement(
4740
4923
  NumericFormat2,
4741
4924
  {
4742
4925
  ...innerProps,
@@ -4761,7 +4944,7 @@ var PercentageInputRoot = styled20(Input_default, {
4761
4944
  slot: "Root",
4762
4945
  overridesResolver: (props, styles) => styles.root
4763
4946
  })({});
4764
- var PercentageInput = React35.forwardRef(
4947
+ var PercentageInput = React36.forwardRef(
4765
4948
  function PercentageInput2(inProps, ref) {
4766
4949
  const props = useThemeProps6({ props: inProps, name: "PercentageInput" });
4767
4950
  const {
@@ -4784,18 +4967,18 @@ var PercentageInput = React35.forwardRef(
4784
4967
  const [_value, setValue] = useControlledState(
4785
4968
  props.value,
4786
4969
  props.defaultValue,
4787
- useCallback18((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
4970
+ useCallback19((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
4788
4971
  );
4789
- const [internalError, setInternalError] = useState11(
4972
+ const [internalError, setInternalError] = useState12(
4790
4973
  max && _value && _value > max || min && _value && _value < min
4791
4974
  );
4792
- const value = useMemo13(() => {
4975
+ const value = useMemo14(() => {
4793
4976
  if (_value && useMinorUnit) {
4794
4977
  return _value / Math.pow(10, maxDecimalScale);
4795
4978
  }
4796
4979
  return _value;
4797
4980
  }, [_value, useMinorUnit, maxDecimalScale]);
4798
- const handleChange = useCallback18(
4981
+ const handleChange = useCallback19(
4799
4982
  (event) => {
4800
4983
  if (event.target.value === "") {
4801
4984
  setValue(void 0);
@@ -4812,7 +4995,7 @@ var PercentageInput = React35.forwardRef(
4812
4995
  },
4813
4996
  [setValue, useMinorUnit, maxDecimalScale, min, max]
4814
4997
  );
4815
- return /* @__PURE__ */ React35.createElement(
4998
+ return /* @__PURE__ */ React36.createElement(
4816
4999
  PercentageInputRoot,
4817
5000
  {
4818
5001
  ...innerProps,
@@ -4859,7 +5042,7 @@ var PercentageInput3 = ({
4859
5042
  if (hidden) {
4860
5043
  return null;
4861
5044
  }
4862
- return /* @__PURE__ */ React36.createElement(Stack7, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React36.createElement(Typography2, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React36.createElement(
5045
+ return /* @__PURE__ */ React37.createElement(Stack8, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React37.createElement(Typography2, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React37.createElement(
4863
5046
  PercentageInput,
4864
5047
  {
4865
5048
  value: _value,
@@ -4874,8 +5057,8 @@ var PercentageInput3 = ({
4874
5057
  };
4875
5058
 
4876
5059
  // src/components/FilterMenu/components/PercentageRange.tsx
4877
- import React37, { useCallback as useCallback19 } from "react";
4878
- import { Stack as Stack8 } from "@mui/joy";
5060
+ import React38, { useCallback as useCallback20 } from "react";
5061
+ import { Stack as Stack9 } from "@mui/joy";
4879
5062
  function PercentageRange(props) {
4880
5063
  const { id, label, value, onChange, hidden, useMinorUnit, maxDecimalScale, min, max } = props;
4881
5064
  const [internalValue, setInternalValue] = useControlledState(
@@ -4885,7 +5068,7 @@ function PercentageRange(props) {
4885
5068
  );
4886
5069
  const minValue = internalValue?.[0];
4887
5070
  const maxValue = internalValue?.[1];
4888
- const handleMinChange = useCallback19(
5071
+ const handleMinChange = useCallback20(
4889
5072
  (event) => {
4890
5073
  const newMinValue = event.target.value;
4891
5074
  const currentMaxValue = maxValue;
@@ -4897,7 +5080,7 @@ function PercentageRange(props) {
4897
5080
  },
4898
5081
  [maxValue, setInternalValue]
4899
5082
  );
4900
- const handleMaxChange = useCallback19(
5083
+ const handleMaxChange = useCallback20(
4901
5084
  (event) => {
4902
5085
  const newMaxValue = event.target.value;
4903
5086
  const currentMinValue = minValue;
@@ -4912,7 +5095,7 @@ function PercentageRange(props) {
4912
5095
  if (hidden) {
4913
5096
  return null;
4914
5097
  }
4915
- return /* @__PURE__ */ React37.createElement(Stack8, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React37.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React37.createElement(Stack8, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ React37.createElement(
5098
+ return /* @__PURE__ */ React38.createElement(Stack9, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React38.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React38.createElement(Stack9, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ React38.createElement(
4916
5099
  PercentageInput,
4917
5100
  {
4918
5101
  label: "Minimum",
@@ -4926,7 +5109,7 @@ function PercentageRange(props) {
4926
5109
  "aria-label": "Minimum percentage",
4927
5110
  placeholder: "0%"
4928
5111
  }
4929
- ), /* @__PURE__ */ React37.createElement(
5112
+ ), /* @__PURE__ */ React38.createElement(
4930
5113
  PercentageInput,
4931
5114
  {
4932
5115
  label: "Maximum",
@@ -4945,13 +5128,13 @@ function PercentageRange(props) {
4945
5128
  PercentageRange.displayName = "PercentageRange";
4946
5129
 
4947
5130
  // src/components/FilterMenu/components/Autocomplete.tsx
4948
- import React38, { useCallback as useCallback20 } from "react";
4949
- import { Stack as Stack9 } from "@mui/joy";
5131
+ import React39, { useCallback as useCallback21 } from "react";
5132
+ import { Stack as Stack10 } from "@mui/joy";
4950
5133
  function Autocomplete2(props) {
4951
5134
  const { id, label, value, onChange, options, multiple, hidden, placeholder } = props;
4952
5135
  const [internalValue, setInternalValue] = useControlledState(value, void 0, onChange);
4953
5136
  const autocompleteValue = typeof internalValue === "string" || typeof internalValue === "number" ? String(internalValue) : void 0;
4954
- const handleChange = useCallback20(
5137
+ const handleChange = useCallback21(
4955
5138
  (event) => {
4956
5139
  const val = event.target.value;
4957
5140
  if (val) {
@@ -4966,7 +5149,7 @@ function Autocomplete2(props) {
4966
5149
  if (hidden) {
4967
5150
  return null;
4968
5151
  }
4969
- return /* @__PURE__ */ React38.createElement(Stack9, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React38.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React38.createElement(
5152
+ return /* @__PURE__ */ React39.createElement(Stack10, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React39.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React39.createElement(
4970
5153
  Autocomplete,
4971
5154
  {
4972
5155
  value: autocompleteValue,
@@ -4999,7 +5182,7 @@ function FilterMenu(props) {
4999
5182
  void 0
5000
5183
  // onChange는 Apply 버튼에서만 호출
5001
5184
  );
5002
- const handleFilterChange = useCallback21(
5185
+ const handleFilterChange = useCallback22(
5003
5186
  (filterId, value) => {
5004
5187
  setInternalValues((prev) => ({
5005
5188
  ...prev,
@@ -5008,17 +5191,17 @@ function FilterMenu(props) {
5008
5191
  },
5009
5192
  [setInternalValues]
5010
5193
  );
5011
- const handleApply = useCallback21(() => {
5194
+ const handleApply = useCallback22(() => {
5012
5195
  onChange?.(internalValues);
5013
5196
  onClose?.();
5014
5197
  }, [onChange, onClose, internalValues]);
5015
- const handleClear = useCallback21(() => {
5198
+ const handleClear = useCallback22(() => {
5016
5199
  const clearedValues = resetValues || {};
5017
5200
  setInternalValues(clearedValues);
5018
5201
  onChange?.(clearedValues);
5019
5202
  onClose?.();
5020
5203
  }, [resetValues, setInternalValues, onChange, onClose]);
5021
- return /* @__PURE__ */ React39.createElement(
5204
+ return /* @__PURE__ */ React40.createElement(
5022
5205
  ModalDialog,
5023
5206
  {
5024
5207
  sx: {
@@ -5028,9 +5211,9 @@ function FilterMenu(props) {
5028
5211
  top: "initial"
5029
5212
  }
5030
5213
  },
5031
- /* @__PURE__ */ React39.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ React39.createElement(Stack10, { spacing: 6 }, filters?.map((filter) => {
5214
+ /* @__PURE__ */ React40.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ React40.createElement(Stack11, { spacing: 6 }, filters?.map((filter) => {
5032
5215
  const FilterComponent = componentMap[filter.type];
5033
- return FilterComponent ? /* @__PURE__ */ React39.createElement(
5216
+ return FilterComponent ? /* @__PURE__ */ React40.createElement(
5034
5217
  FilterComponent,
5035
5218
  {
5036
5219
  key: filter.id,
@@ -5042,14 +5225,14 @@ function FilterMenu(props) {
5042
5225
  }
5043
5226
  ) : null;
5044
5227
  }))),
5045
- /* @__PURE__ */ React39.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ React39.createElement(Button2, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ React39.createElement(Button2, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Reset"), /* @__PURE__ */ React39.createElement(Button2, { variant: "solid", color: "primary", size: "md", onClick: handleApply }, "Apply"))
5228
+ /* @__PURE__ */ React40.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ React40.createElement(Button2, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ React40.createElement(Button2, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Reset"), /* @__PURE__ */ React40.createElement(Button2, { variant: "solid", color: "primary", size: "md", onClick: handleApply }, "Apply"))
5046
5229
  );
5047
5230
  }
5048
5231
  FilterMenu.displayName = "FilterMenu";
5049
5232
 
5050
5233
  // src/components/Uploader/Uploader.tsx
5051
- import React40, { useCallback as useCallback22, useEffect as useEffect9, useMemo as useMemo14, useRef as useRef8, useState as useState12 } from "react";
5052
- import { styled as styled21, Input as Input2 } from "@mui/joy";
5234
+ import React41, { useCallback as useCallback23, useEffect as useEffect10, useMemo as useMemo15, useRef as useRef9, useState as useState13 } from "react";
5235
+ import { styled as styled21, Input as Input3 } from "@mui/joy";
5053
5236
  import MuiFileUploadIcon from "@mui/icons-material/CloudUploadRounded";
5054
5237
  import MuiUploadFileIcon from "@mui/icons-material/UploadFileRounded";
5055
5238
  import MuiClearIcon from "@mui/icons-material/ClearRounded";
@@ -5071,7 +5254,7 @@ var esmFiles = {
5071
5254
  "@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
5072
5255
  )
5073
5256
  };
5074
- var VisuallyHiddenInput = styled21(Input2)({
5257
+ var VisuallyHiddenInput = styled21(Input3)({
5075
5258
  width: "1px",
5076
5259
  height: "1px",
5077
5260
  overflow: "hidden",
@@ -5125,7 +5308,7 @@ var getFileSize = (n) => {
5125
5308
  };
5126
5309
  var Preview = (props) => {
5127
5310
  const { files, uploaded, onDelete } = props;
5128
- return /* @__PURE__ */ React40.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React40.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React40.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React40.createElement(UploadFileIcon, null), /* @__PURE__ */ React40.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ React40.createElement(
5311
+ return /* @__PURE__ */ React41.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React41.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React41.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React41.createElement(UploadFileIcon, null), /* @__PURE__ */ React41.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ React41.createElement(
5129
5312
  Typography_default,
5130
5313
  {
5131
5314
  level: "body-sm",
@@ -5137,7 +5320,7 @@ var Preview = (props) => {
5137
5320
  }
5138
5321
  },
5139
5322
  file.name
5140
- ), !!file.size && /* @__PURE__ */ React40.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ React40.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React40.createElement(ClearIcon2, null))))));
5323
+ ), !!file.size && /* @__PURE__ */ React41.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ React41.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React41.createElement(ClearIcon2, null))))));
5141
5324
  };
5142
5325
  var UploaderRoot = styled21(Stack_default, {
5143
5326
  name: "Uploader",
@@ -5180,7 +5363,7 @@ var UploaderIcon = styled21(MuiFileUploadIcon, {
5180
5363
  }
5181
5364
  })
5182
5365
  );
5183
- var Uploader = React40.memo(
5366
+ var Uploader = React41.memo(
5184
5367
  (props) => {
5185
5368
  const {
5186
5369
  accept,
@@ -5197,14 +5380,14 @@ var Uploader = React40.memo(
5197
5380
  error: errorProp,
5198
5381
  helperText: helperTextProp
5199
5382
  } = props;
5200
- const dropZoneRef = useRef8(null);
5201
- const inputRef = useRef8(null);
5202
- const [errorText, setErrorText] = useState12();
5203
- const [files, setFiles] = useState12([]);
5204
- const [uploaded, setUploaded] = useState12(props.uploaded || []);
5205
- const [previewState, setPreviewState] = useState12("idle");
5206
- const accepts = useMemo14(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
5207
- const parsedAccepts = useMemo14(
5383
+ const dropZoneRef = useRef9(null);
5384
+ const inputRef = useRef9(null);
5385
+ const [errorText, setErrorText] = useState13();
5386
+ const [files, setFiles] = useState13([]);
5387
+ const [uploaded, setUploaded] = useState13(props.uploaded || []);
5388
+ const [previewState, setPreviewState] = useState13("idle");
5389
+ const accepts = useMemo15(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
5390
+ const parsedAccepts = useMemo15(
5208
5391
  () => accepts.flatMap((type) => {
5209
5392
  if (["image/*", "video/*", "audio/*"].includes(type)) {
5210
5393
  return ALL_EXTENSIONS_BY_TYPE[type];
@@ -5213,7 +5396,7 @@ var Uploader = React40.memo(
5213
5396
  }),
5214
5397
  [accepts]
5215
5398
  );
5216
- const helperText = useMemo14(() => {
5399
+ const helperText = useMemo15(() => {
5217
5400
  if (helperTextProp) {
5218
5401
  return helperTextProp;
5219
5402
  }
@@ -5243,12 +5426,12 @@ var Uploader = React40.memo(
5243
5426
  }
5244
5427
  return helperTexts.join(", ");
5245
5428
  }, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
5246
- const error = useMemo14(() => !!errorText || errorProp, [errorProp, errorText]);
5247
- const showDropZone = useMemo14(
5429
+ const error = useMemo15(() => !!errorText || errorProp, [errorProp, errorText]);
5430
+ const showDropZone = useMemo15(
5248
5431
  () => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
5249
5432
  [files, maxCount, uploaded]
5250
5433
  );
5251
- const addFiles = useCallback22(
5434
+ const addFiles = useCallback23(
5252
5435
  (uploads) => {
5253
5436
  try {
5254
5437
  const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
@@ -5293,7 +5476,7 @@ var Uploader = React40.memo(
5293
5476
  },
5294
5477
  [files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
5295
5478
  );
5296
- useEffect9(() => {
5479
+ useEffect10(() => {
5297
5480
  if (!dropZoneRef.current || disabled) {
5298
5481
  return;
5299
5482
  }
@@ -5331,7 +5514,7 @@ var Uploader = React40.memo(
5331
5514
  );
5332
5515
  return () => cleanup?.();
5333
5516
  }, [disabled, addFiles]);
5334
- useEffect9(() => {
5517
+ useEffect10(() => {
5335
5518
  if (inputRef.current && minCount) {
5336
5519
  if (files.length < minCount) {
5337
5520
  inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
@@ -5340,14 +5523,14 @@ var Uploader = React40.memo(
5340
5523
  }
5341
5524
  }
5342
5525
  }, [inputRef, files, minCount]);
5343
- const handleFileChanged = useCallback22(
5526
+ const handleFileChanged = useCallback23(
5344
5527
  (event) => {
5345
5528
  const files2 = Array.from(event.target.files || []);
5346
5529
  addFiles(files2);
5347
5530
  },
5348
5531
  [addFiles]
5349
5532
  );
5350
- const handleDeleteFile = useCallback22(
5533
+ const handleDeleteFile = useCallback23(
5351
5534
  (deletedFile) => {
5352
5535
  if (deletedFile instanceof File) {
5353
5536
  setFiles((current) => {
@@ -5367,10 +5550,10 @@ var Uploader = React40.memo(
5367
5550
  },
5368
5551
  [name, onChange, onDelete]
5369
5552
  );
5370
- const handleUploaderButtonClick = useCallback22(() => {
5553
+ const handleUploaderButtonClick = useCallback23(() => {
5371
5554
  inputRef.current?.click();
5372
5555
  }, []);
5373
- const uploader = /* @__PURE__ */ React40.createElement(
5556
+ const uploader = /* @__PURE__ */ React41.createElement(
5374
5557
  FileDropZone,
5375
5558
  {
5376
5559
  state: previewState,
@@ -5379,8 +5562,8 @@ var Uploader = React40.memo(
5379
5562
  ref: dropZoneRef,
5380
5563
  onClick: handleUploaderButtonClick
5381
5564
  },
5382
- /* @__PURE__ */ React40.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React40.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
5383
- /* @__PURE__ */ React40.createElement(
5565
+ /* @__PURE__ */ React41.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React41.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
5566
+ /* @__PURE__ */ React41.createElement(
5384
5567
  VisuallyHiddenInput,
5385
5568
  {
5386
5569
  disabled,
@@ -5403,7 +5586,7 @@ var Uploader = React40.memo(
5403
5586
  }
5404
5587
  )
5405
5588
  );
5406
- return /* @__PURE__ */ React40.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React40.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ React40.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ React40.createElement(FormHelperText_default, null, /* @__PURE__ */ React40.createElement(Stack_default, null, errorText && /* @__PURE__ */ React40.createElement("div", null, errorText), /* @__PURE__ */ React40.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React40.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
5589
+ return /* @__PURE__ */ React41.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React41.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ React41.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ React41.createElement(FormHelperText_default, null, /* @__PURE__ */ React41.createElement(Stack_default, null, errorText && /* @__PURE__ */ React41.createElement("div", null, errorText), /* @__PURE__ */ React41.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React41.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
5407
5590
  }
5408
5591
  );
5409
5592
  Uploader.displayName = "Uploader";
@@ -5412,7 +5595,7 @@ Uploader.displayName = "Uploader";
5412
5595
  import { Grid } from "@mui/joy";
5413
5596
 
5414
5597
  // src/components/IconMenuButton/IconMenuButton.tsx
5415
- import React41 from "react";
5598
+ import React42 from "react";
5416
5599
  import { MenuButton as JoyMenuButton2, IconButton as JoyIconButton2 } from "@mui/joy";
5417
5600
  function IconMenuButton(props) {
5418
5601
  const {
@@ -5426,7 +5609,7 @@ function IconMenuButton(props) {
5426
5609
  placement = "bottom"
5427
5610
  } = props;
5428
5611
  if (!items.length) {
5429
- return /* @__PURE__ */ React41.createElement(
5612
+ return /* @__PURE__ */ React42.createElement(
5430
5613
  JoyIconButton2,
5431
5614
  {
5432
5615
  component: props.buttonComponent ?? "button",
@@ -5440,7 +5623,7 @@ function IconMenuButton(props) {
5440
5623
  icon
5441
5624
  );
5442
5625
  }
5443
- return /* @__PURE__ */ React41.createElement(Dropdown_default, null, /* @__PURE__ */ React41.createElement(
5626
+ return /* @__PURE__ */ React42.createElement(Dropdown_default, null, /* @__PURE__ */ React42.createElement(
5444
5627
  JoyMenuButton2,
5445
5628
  {
5446
5629
  slots: { root: JoyIconButton2 },
@@ -5457,19 +5640,19 @@ function IconMenuButton(props) {
5457
5640
  }
5458
5641
  },
5459
5642
  icon
5460
- ), /* @__PURE__ */ React41.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React41.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5643
+ ), /* @__PURE__ */ React42.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React42.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5461
5644
  }
5462
5645
  IconMenuButton.displayName = "IconMenuButton";
5463
5646
 
5464
5647
  // src/components/Markdown/Markdown.tsx
5465
- import React42, { lazy, Suspense, useEffect as useEffect10, useState as useState13 } from "react";
5648
+ import React43, { lazy, Suspense, useEffect as useEffect11, useState as useState14 } from "react";
5466
5649
  import { Skeleton } from "@mui/joy";
5467
5650
  import { Link as Link2 } from "@mui/joy";
5468
5651
  import remarkGfm from "remark-gfm";
5469
5652
  var LazyReactMarkdown = lazy(() => import("react-markdown"));
5470
5653
  var Markdown = (props) => {
5471
- const [rehypeAccent2, setRehypeAccent] = useState13(null);
5472
- useEffect10(() => {
5654
+ const [rehypeAccent2, setRehypeAccent] = useState14(null);
5655
+ useEffect11(() => {
5473
5656
  const loadRehypeAccent = async () => {
5474
5657
  const module = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
5475
5658
  setRehypeAccent(() => module.rehypeAccent);
@@ -5491,12 +5674,12 @@ var Markdown = (props) => {
5491
5674
  if (!rehypeAccent2) {
5492
5675
  return null;
5493
5676
  }
5494
- return /* @__PURE__ */ React42.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ React42.createElement(
5677
+ return /* @__PURE__ */ React43.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ React43.createElement(
5495
5678
  Suspense,
5496
5679
  {
5497
- fallback: fallback || /* @__PURE__ */ React42.createElement(Typography, null, /* @__PURE__ */ React42.createElement(Skeleton, null, content || ""))
5680
+ fallback: fallback || /* @__PURE__ */ React43.createElement(Typography, null, /* @__PURE__ */ React43.createElement(Skeleton, null, content || ""))
5498
5681
  },
5499
- /* @__PURE__ */ React42.createElement(
5682
+ /* @__PURE__ */ React43.createElement(
5500
5683
  LazyReactMarkdown,
5501
5684
  {
5502
5685
  ...markdownOptions,
@@ -5504,15 +5687,15 @@ var Markdown = (props) => {
5504
5687
  rehypePlugins: [[rehypeAccent2, { accentColor }]],
5505
5688
  remarkPlugins: [remarkGfm],
5506
5689
  components: {
5507
- h1: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h1" }, children),
5508
- h2: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h2" }, children),
5509
- h3: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h3" }, children),
5510
- h4: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h4" }, children),
5511
- p: ({ children, node }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
5512
- a: ({ children, href }) => /* @__PURE__ */ React42.createElement(Link2, { href, target: defaultLinkAction }, children),
5513
- hr: () => /* @__PURE__ */ React42.createElement(Divider, null),
5514
- b: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { fontWeight: boldFontWeight }, children),
5515
- strong: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { fontWeight: boldFontWeight }, children),
5690
+ h1: ({ children }) => /* @__PURE__ */ React43.createElement(Typography, { color, textColor, level: "h1" }, children),
5691
+ h2: ({ children }) => /* @__PURE__ */ React43.createElement(Typography, { color, textColor, level: "h2" }, children),
5692
+ h3: ({ children }) => /* @__PURE__ */ React43.createElement(Typography, { color, textColor, level: "h3" }, children),
5693
+ h4: ({ children }) => /* @__PURE__ */ React43.createElement(Typography, { color, textColor, level: "h4" }, children),
5694
+ p: ({ children, node }) => /* @__PURE__ */ React43.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
5695
+ a: ({ children, href }) => /* @__PURE__ */ React43.createElement(Link2, { href, target: defaultLinkAction }, children),
5696
+ hr: () => /* @__PURE__ */ React43.createElement(Divider, null),
5697
+ b: ({ children }) => /* @__PURE__ */ React43.createElement(Typography, { fontWeight: boldFontWeight }, children),
5698
+ strong: ({ children }) => /* @__PURE__ */ React43.createElement(Typography, { fontWeight: boldFontWeight }, children),
5516
5699
  ...markdownOptions?.components
5517
5700
  }
5518
5701
  }
@@ -5522,7 +5705,7 @@ var Markdown = (props) => {
5522
5705
  Markdown.displayName = "Markdown";
5523
5706
 
5524
5707
  // src/components/MenuButton/MenuButton.tsx
5525
- import React43 from "react";
5708
+ import React44 from "react";
5526
5709
  import { MenuButton as JoyMenuButton3, Button as JoyButton2 } from "@mui/joy";
5527
5710
  import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
5528
5711
  function MenuButton(props) {
@@ -5540,7 +5723,7 @@ function MenuButton(props) {
5540
5723
  placement = "bottom"
5541
5724
  } = props;
5542
5725
  if (!items.length) {
5543
- return /* @__PURE__ */ React43.createElement(
5726
+ return /* @__PURE__ */ React44.createElement(
5544
5727
  JoyButton2,
5545
5728
  {
5546
5729
  component: props.buttonComponent ?? "button",
@@ -5551,12 +5734,12 @@ function MenuButton(props) {
5551
5734
  loading,
5552
5735
  startDecorator,
5553
5736
  ...props.buttonComponentProps ?? {},
5554
- endDecorator: showIcon ? /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator, /* @__PURE__ */ React43.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator)
5737
+ endDecorator: showIcon ? /* @__PURE__ */ React44.createElement(React44.Fragment, null, endDecorator, /* @__PURE__ */ React44.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React44.createElement(React44.Fragment, null, endDecorator)
5555
5738
  },
5556
5739
  buttonText
5557
5740
  );
5558
5741
  }
5559
- return /* @__PURE__ */ React43.createElement(Dropdown_default, null, /* @__PURE__ */ React43.createElement(
5742
+ return /* @__PURE__ */ React44.createElement(Dropdown_default, null, /* @__PURE__ */ React44.createElement(
5560
5743
  JoyMenuButton3,
5561
5744
  {
5562
5745
  component: props.buttonComponent ?? "button",
@@ -5567,15 +5750,15 @@ function MenuButton(props) {
5567
5750
  loading,
5568
5751
  startDecorator,
5569
5752
  ...props.buttonComponentProps ?? {},
5570
- endDecorator: showIcon ? /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator, /* @__PURE__ */ React43.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator)
5753
+ endDecorator: showIcon ? /* @__PURE__ */ React44.createElement(React44.Fragment, null, endDecorator, /* @__PURE__ */ React44.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React44.createElement(React44.Fragment, null, endDecorator)
5571
5754
  },
5572
5755
  buttonText
5573
- ), /* @__PURE__ */ React43.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React43.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5756
+ ), /* @__PURE__ */ React44.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React44.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
5574
5757
  }
5575
5758
  MenuButton.displayName = "MenuButton";
5576
5759
 
5577
5760
  // src/components/MonthPicker/MonthPicker.tsx
5578
- import React44, { forwardRef as forwardRef9, useCallback as useCallback23, useEffect as useEffect11, useImperativeHandle as useImperativeHandle4, useRef as useRef9, useState as useState14 } from "react";
5761
+ import React45, { forwardRef as forwardRef9, useCallback as useCallback24, useEffect as useEffect12, useImperativeHandle as useImperativeHandle4, useRef as useRef10, useState as useState15 } from "react";
5579
5762
  import CalendarTodayIcon3 from "@mui/icons-material/CalendarToday";
5580
5763
  import { styled as styled22, useThemeProps as useThemeProps7 } from "@mui/joy";
5581
5764
  import { FocusTrap as FocusTrap3, ClickAwayListener as ClickAwayListener3, Popper as Popper4 } from "@mui/base";
@@ -5657,14 +5840,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5657
5840
  locale,
5658
5841
  ...innerProps
5659
5842
  } = props;
5660
- const innerRef = useRef9(null);
5661
- const buttonRef = useRef9(null);
5843
+ const innerRef = useRef10(null);
5844
+ const buttonRef = useRef10(null);
5662
5845
  const [value, setValue, isControlled] = useControlledState(
5663
5846
  props.value,
5664
5847
  props.defaultValue || "",
5665
- useCallback23((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5848
+ useCallback24((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5666
5849
  );
5667
- const getFormattedDisplayValue = useCallback23(
5850
+ const getFormattedDisplayValue = useCallback24(
5668
5851
  (inputValue) => {
5669
5852
  if (!inputValue) return "";
5670
5853
  try {
@@ -5675,19 +5858,19 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5675
5858
  },
5676
5859
  [format, displayFormat, locale]
5677
5860
  );
5678
- const [displayValue, setDisplayValue] = useState14(() => getFormattedDisplayValue(value));
5679
- const [anchorEl, setAnchorEl] = useState14(null);
5861
+ const [displayValue, setDisplayValue] = useState15(() => getFormattedDisplayValue(value));
5862
+ const [anchorEl, setAnchorEl] = useState15(null);
5680
5863
  const open = Boolean(anchorEl);
5681
- useEffect11(() => {
5864
+ useEffect12(() => {
5682
5865
  if (!anchorEl) {
5683
5866
  innerRef.current?.blur();
5684
5867
  }
5685
5868
  }, [anchorEl, innerRef]);
5686
5869
  useImperativeHandle4(ref, () => innerRef.current, [innerRef]);
5687
- useEffect11(() => {
5870
+ useEffect12(() => {
5688
5871
  setDisplayValue(getFormattedDisplayValue(value));
5689
5872
  }, [value, getFormattedDisplayValue]);
5690
- const handleChange = useCallback23(
5873
+ const handleChange = useCallback24(
5691
5874
  (event) => {
5692
5875
  const newValue = event.target.value;
5693
5876
  setValue(newValue);
@@ -5697,21 +5880,21 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5697
5880
  },
5698
5881
  [setValue, getFormattedDisplayValue, isControlled]
5699
5882
  );
5700
- const handleCalendarToggle = useCallback23(
5883
+ const handleCalendarToggle = useCallback24(
5701
5884
  (event) => {
5702
5885
  setAnchorEl(anchorEl ? null : event.currentTarget);
5703
5886
  innerRef.current?.focus();
5704
5887
  },
5705
5888
  [anchorEl, setAnchorEl, innerRef]
5706
5889
  );
5707
- const handleInputMouseDown = useCallback23(
5890
+ const handleInputMouseDown = useCallback24(
5708
5891
  (event) => {
5709
5892
  event.preventDefault();
5710
5893
  buttonRef.current?.focus();
5711
5894
  },
5712
5895
  [buttonRef]
5713
5896
  );
5714
- return /* @__PURE__ */ React44.createElement(MonthPickerRoot, null, /* @__PURE__ */ React44.createElement(FocusTrap3, { open: true }, /* @__PURE__ */ React44.createElement(React44.Fragment, null, /* @__PURE__ */ React44.createElement(
5897
+ return /* @__PURE__ */ React45.createElement(MonthPickerRoot, null, /* @__PURE__ */ React45.createElement(FocusTrap3, { open: true }, /* @__PURE__ */ React45.createElement(React45.Fragment, null, /* @__PURE__ */ React45.createElement(
5715
5898
  Input_default,
5716
5899
  {
5717
5900
  ...innerProps,
@@ -5741,7 +5924,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5741
5924
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5742
5925
  fontFamily: "monospace"
5743
5926
  },
5744
- endDecorator: /* @__PURE__ */ React44.createElement(
5927
+ endDecorator: /* @__PURE__ */ React45.createElement(
5745
5928
  IconButton_default,
5746
5929
  {
5747
5930
  ref: buttonRef,
@@ -5753,12 +5936,12 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5753
5936
  "aria-expanded": open,
5754
5937
  disabled
5755
5938
  },
5756
- /* @__PURE__ */ React44.createElement(CalendarTodayIcon3, null)
5939
+ /* @__PURE__ */ React45.createElement(CalendarTodayIcon3, null)
5757
5940
  ),
5758
5941
  label,
5759
5942
  helperText
5760
5943
  }
5761
- ), open && /* @__PURE__ */ React44.createElement(ClickAwayListener3, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React44.createElement(
5944
+ ), open && /* @__PURE__ */ React45.createElement(ClickAwayListener3, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React45.createElement(
5762
5945
  StyledPopper3,
5763
5946
  {
5764
5947
  id: "month-picker-popper",
@@ -5777,7 +5960,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5777
5960
  "aria-label": "Calendar Tooltip",
5778
5961
  "aria-expanded": open
5779
5962
  },
5780
- /* @__PURE__ */ React44.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React44.createElement(
5963
+ /* @__PURE__ */ React45.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React45.createElement(
5781
5964
  Calendar_default,
5782
5965
  {
5783
5966
  view: "month",
@@ -5798,14 +5981,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5798
5981
  disablePast,
5799
5982
  locale
5800
5983
  }
5801
- ), /* @__PURE__ */ React44.createElement(
5984
+ ), /* @__PURE__ */ React45.createElement(
5802
5985
  DialogActions_default,
5803
5986
  {
5804
5987
  sx: {
5805
5988
  p: 1
5806
5989
  }
5807
5990
  },
5808
- /* @__PURE__ */ React44.createElement(
5991
+ /* @__PURE__ */ React45.createElement(
5809
5992
  Button_default,
5810
5993
  {
5811
5994
  size,
@@ -5828,7 +6011,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
5828
6011
  });
5829
6012
 
5830
6013
  // src/components/MonthRangePicker/MonthRangePicker.tsx
5831
- import React45, { forwardRef as forwardRef10, useCallback as useCallback24, useEffect as useEffect12, useImperativeHandle as useImperativeHandle5, useMemo as useMemo15, useRef as useRef10, useState as useState15 } from "react";
6014
+ import React46, { forwardRef as forwardRef10, useCallback as useCallback25, useEffect as useEffect13, useImperativeHandle as useImperativeHandle5, useMemo as useMemo16, useRef as useRef11, useState as useState16 } from "react";
5832
6015
  import { IMaskInput as IMaskInput3, IMask as IMask3 } from "react-imask";
5833
6016
  import CalendarTodayIcon4 from "@mui/icons-material/CalendarToday";
5834
6017
  import { styled as styled23, useThemeProps as useThemeProps8 } from "@mui/joy";
@@ -5886,9 +6069,9 @@ var parseDates2 = (str) => {
5886
6069
  var formatToPattern3 = (format) => {
5887
6070
  return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
5888
6071
  };
5889
- var TextMaskAdapter9 = React45.forwardRef(function TextMaskAdapter10(props, ref) {
6072
+ var TextMaskAdapter9 = React46.forwardRef(function TextMaskAdapter10(props, ref) {
5890
6073
  const { onChange, format, ...other } = props;
5891
- return /* @__PURE__ */ React45.createElement(
6074
+ return /* @__PURE__ */ React46.createElement(
5892
6075
  IMaskInput3,
5893
6076
  {
5894
6077
  ...other,
@@ -5936,35 +6119,35 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
5936
6119
  size,
5937
6120
  ...innerProps
5938
6121
  } = props;
5939
- const innerRef = useRef10(null);
6122
+ const innerRef = useRef11(null);
5940
6123
  const [value, setValue] = useControlledState(
5941
6124
  props.value,
5942
6125
  props.defaultValue || "",
5943
- useCallback24((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
6126
+ useCallback25((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
5944
6127
  );
5945
- const [anchorEl, setAnchorEl] = useState15(null);
6128
+ const [anchorEl, setAnchorEl] = useState16(null);
5946
6129
  const open = Boolean(anchorEl);
5947
- const calendarValue = useMemo15(() => value ? parseDates2(value) : void 0, [value]);
5948
- useEffect12(() => {
6130
+ const calendarValue = useMemo16(() => value ? parseDates2(value) : void 0, [value]);
6131
+ useEffect13(() => {
5949
6132
  if (!anchorEl) {
5950
6133
  innerRef.current?.blur();
5951
6134
  }
5952
6135
  }, [anchorEl, innerRef]);
5953
6136
  useImperativeHandle5(ref, () => innerRef.current, [innerRef]);
5954
- const handleChange = useCallback24(
6137
+ const handleChange = useCallback25(
5955
6138
  (event) => {
5956
6139
  setValue(event.target.value);
5957
6140
  },
5958
6141
  [setValue]
5959
6142
  );
5960
- const handleCalendarToggle = useCallback24(
6143
+ const handleCalendarToggle = useCallback25(
5961
6144
  (event) => {
5962
6145
  setAnchorEl(anchorEl ? null : event.currentTarget);
5963
6146
  innerRef.current?.focus();
5964
6147
  },
5965
6148
  [anchorEl, setAnchorEl, innerRef]
5966
6149
  );
5967
- const handleCalendarChange = useCallback24(
6150
+ const handleCalendarChange = useCallback25(
5968
6151
  ([date1, date2]) => {
5969
6152
  if (!date1 || !date2) return;
5970
6153
  setValue(formatValueString4([date1, date2], format));
@@ -5972,7 +6155,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
5972
6155
  },
5973
6156
  [setValue, setAnchorEl, format]
5974
6157
  );
5975
- return /* @__PURE__ */ React45.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ React45.createElement(FocusTrap4, { open: true }, /* @__PURE__ */ React45.createElement(React45.Fragment, null, /* @__PURE__ */ React45.createElement(
6158
+ return /* @__PURE__ */ React46.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ React46.createElement(FocusTrap4, { open: true }, /* @__PURE__ */ React46.createElement(React46.Fragment, null, /* @__PURE__ */ React46.createElement(
5976
6159
  Input_default,
5977
6160
  {
5978
6161
  ...innerProps,
@@ -5994,7 +6177,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
5994
6177
  // NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
5995
6178
  fontFamily: "monospace"
5996
6179
  },
5997
- endDecorator: /* @__PURE__ */ React45.createElement(
6180
+ endDecorator: /* @__PURE__ */ React46.createElement(
5998
6181
  IconButton_default,
5999
6182
  {
6000
6183
  variant: "plain",
@@ -6004,12 +6187,12 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
6004
6187
  "aria-haspopup": "dialog",
6005
6188
  "aria-expanded": open
6006
6189
  },
6007
- /* @__PURE__ */ React45.createElement(CalendarTodayIcon4, null)
6190
+ /* @__PURE__ */ React46.createElement(CalendarTodayIcon4, null)
6008
6191
  ),
6009
6192
  label,
6010
6193
  helperText
6011
6194
  }
6012
- ), open && /* @__PURE__ */ React45.createElement(ClickAwayListener4, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React45.createElement(
6195
+ ), open && /* @__PURE__ */ React46.createElement(ClickAwayListener4, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React46.createElement(
6013
6196
  StyledPopper4,
6014
6197
  {
6015
6198
  id: "month-range-picker-popper",
@@ -6028,7 +6211,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
6028
6211
  "aria-label": "Calendar Tooltip",
6029
6212
  "aria-expanded": open
6030
6213
  },
6031
- /* @__PURE__ */ React45.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React45.createElement(
6214
+ /* @__PURE__ */ React46.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React46.createElement(
6032
6215
  Calendar_default,
6033
6216
  {
6034
6217
  view: "month",
@@ -6041,14 +6224,14 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
6041
6224
  disableFuture,
6042
6225
  disablePast
6043
6226
  }
6044
- ), /* @__PURE__ */ React45.createElement(
6227
+ ), /* @__PURE__ */ React46.createElement(
6045
6228
  DialogActions_default,
6046
6229
  {
6047
6230
  sx: {
6048
6231
  p: 1
6049
6232
  }
6050
6233
  },
6051
- /* @__PURE__ */ React45.createElement(
6234
+ /* @__PURE__ */ React46.createElement(
6052
6235
  Button_default,
6053
6236
  {
6054
6237
  size,
@@ -6067,14 +6250,14 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
6067
6250
  MonthRangePicker.displayName = "MonthRangePicker";
6068
6251
 
6069
6252
  // src/components/NavigationGroup/NavigationGroup.tsx
6070
- import React46 from "react";
6253
+ import React47 from "react";
6071
6254
  import {
6072
6255
  Accordion as JoyAccordion2,
6073
6256
  AccordionSummary as JoyAccordionSummary2,
6074
6257
  AccordionDetails as JoyAccordionDetails2,
6075
6258
  styled as styled24,
6076
6259
  accordionSummaryClasses,
6077
- Stack as Stack11
6260
+ Stack as Stack12
6078
6261
  } from "@mui/joy";
6079
6262
  var AccordionSummary2 = styled24(JoyAccordionSummary2, {
6080
6263
  name: "NavigationGroup",
@@ -6098,11 +6281,11 @@ var AccordionDetails2 = styled24(JoyAccordionDetails2, {
6098
6281
  }));
6099
6282
  function NavigationGroup(props) {
6100
6283
  const { title, children, startDecorator, level, ...rest } = props;
6101
- return /* @__PURE__ */ React46.createElement(JoyAccordion2, { ...rest }, /* @__PURE__ */ React46.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ React46.createElement(Stack11, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ React46.createElement(AccordionDetails2, null, children));
6284
+ return /* @__PURE__ */ React47.createElement(JoyAccordion2, { ...rest }, /* @__PURE__ */ React47.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ React47.createElement(Stack12, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ React47.createElement(AccordionDetails2, null, children));
6102
6285
  }
6103
6286
 
6104
6287
  // src/components/NavigationItem/NavigationItem.tsx
6105
- import React47 from "react";
6288
+ import React48 from "react";
6106
6289
  import {
6107
6290
  ListItem as JoyListItem,
6108
6291
  ListItemButton as JoyListItemButton,
@@ -6137,7 +6320,7 @@ function NavigationItem(props) {
6137
6320
  const handleClick = () => {
6138
6321
  onClick?.(id);
6139
6322
  };
6140
- return /* @__PURE__ */ React47.createElement(JoyListItem, { ...rest }, /* @__PURE__ */ React47.createElement(
6323
+ return /* @__PURE__ */ React48.createElement(JoyListItem, { ...rest }, /* @__PURE__ */ React48.createElement(
6141
6324
  ListItemButton,
6142
6325
  {
6143
6326
  level,
@@ -6146,21 +6329,21 @@ function NavigationItem(props) {
6146
6329
  "aria-current": selected,
6147
6330
  onClick: handleClick
6148
6331
  },
6149
- startDecorator && /* @__PURE__ */ React47.createElement(JoyListItemDecorator, null, startDecorator),
6332
+ startDecorator && /* @__PURE__ */ React48.createElement(JoyListItemDecorator, null, startDecorator),
6150
6333
  children
6151
6334
  ));
6152
6335
  }
6153
6336
 
6154
6337
  // src/components/Navigator/Navigator.tsx
6155
- import React48 from "react";
6338
+ import React49 from "react";
6156
6339
  function Navigator(props) {
6157
6340
  const { items, level = 0, onSelect } = props;
6158
6341
  const handleItemClick = (id) => {
6159
6342
  onSelect?.(id);
6160
6343
  };
6161
- return /* @__PURE__ */ React48.createElement("div", null, items.map((item, index) => {
6344
+ return /* @__PURE__ */ React49.createElement("div", null, items.map((item, index) => {
6162
6345
  if (item.type === "item") {
6163
- return /* @__PURE__ */ React48.createElement(
6346
+ return /* @__PURE__ */ React49.createElement(
6164
6347
  NavigationItem,
6165
6348
  {
6166
6349
  key: item.id,
@@ -6173,7 +6356,7 @@ function Navigator(props) {
6173
6356
  item.title
6174
6357
  );
6175
6358
  } else if (item.type === "group") {
6176
- return /* @__PURE__ */ React48.createElement(
6359
+ return /* @__PURE__ */ React49.createElement(
6177
6360
  NavigationGroup,
6178
6361
  {
6179
6362
  key: `${item.title}-${index}`,
@@ -6191,7 +6374,7 @@ function Navigator(props) {
6191
6374
  Navigator.displayName = "Navigator";
6192
6375
 
6193
6376
  // src/components/ProfileMenu/ProfileMenu.tsx
6194
- import React49, { useCallback as useCallback25, useMemo as useMemo16 } from "react";
6377
+ import React50, { useCallback as useCallback26, useMemo as useMemo17 } from "react";
6195
6378
  import { Dropdown as Dropdown2, ListDivider, menuItemClasses, styled as styled26, MenuButton as MenuButton2 } from "@mui/joy";
6196
6379
  import { ClickAwayListener as ClickAwayListener5 } from "@mui/base";
6197
6380
  import DropdownIcon from "@mui/icons-material/ArrowDropDown";
@@ -6201,9 +6384,9 @@ var StyledProfileCard = styled26(Stack, {
6201
6384
  })({});
6202
6385
  function ProfileCard(props) {
6203
6386
  const { children, chip, caption, size } = props;
6204
- const captionLevel = useMemo16(() => size === "sm" ? "body-xs" : "body-sm", [size]);
6205
- const nameLevel = useMemo16(() => size === "sm" ? "body-sm" : "body-md", [size]);
6206
- return /* @__PURE__ */ React49.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ React49.createElement(Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ React49.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ React49.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ React49.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
6387
+ const captionLevel = useMemo17(() => size === "sm" ? "body-xs" : "body-sm", [size]);
6388
+ const nameLevel = useMemo17(() => size === "sm" ? "body-sm" : "body-md", [size]);
6389
+ return /* @__PURE__ */ React50.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ React50.createElement(Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ React50.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ React50.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ React50.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
6207
6390
  }
6208
6391
  ProfileCard.displayName = "ProfileCard";
6209
6392
  var StyledProfileMenuButton = styled26(MenuButton2, {
@@ -6215,16 +6398,16 @@ var StyledProfileMenuButton = styled26(MenuButton2, {
6215
6398
  }));
6216
6399
  function ProfileMenuButton(props) {
6217
6400
  const { size = "md", src, alt, children, getInitial, ...innerProps } = props;
6218
- return /* @__PURE__ */ React49.createElement(
6401
+ return /* @__PURE__ */ React50.createElement(
6219
6402
  StyledProfileMenuButton,
6220
6403
  {
6221
6404
  variant: "plain",
6222
6405
  color: "neutral",
6223
6406
  size,
6224
- endDecorator: /* @__PURE__ */ React49.createElement(DropdownIcon, null),
6407
+ endDecorator: /* @__PURE__ */ React50.createElement(DropdownIcon, null),
6225
6408
  ...innerProps
6226
6409
  },
6227
- /* @__PURE__ */ React49.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
6410
+ /* @__PURE__ */ React50.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
6228
6411
  );
6229
6412
  }
6230
6413
  ProfileMenuButton.displayName = "ProfileMenuButton";
@@ -6243,9 +6426,9 @@ function ProfileMenu(props) {
6243
6426
  const [open, setOpen] = useControlledState(
6244
6427
  _open,
6245
6428
  defaultOpen ?? false,
6246
- useCallback25((value) => onOpenChange?.(value), [onOpenChange])
6429
+ useCallback26((value) => onOpenChange?.(value), [onOpenChange])
6247
6430
  );
6248
- return /* @__PURE__ */ React49.createElement(ClickAwayListener5, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ React49.createElement("div", null, /* @__PURE__ */ React49.createElement(Dropdown2, { open }, /* @__PURE__ */ React49.createElement(
6431
+ return /* @__PURE__ */ React50.createElement(ClickAwayListener5, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ React50.createElement("div", null, /* @__PURE__ */ React50.createElement(Dropdown2, { open }, /* @__PURE__ */ React50.createElement(
6249
6432
  ProfileMenuButton,
6250
6433
  {
6251
6434
  size,
@@ -6255,7 +6438,7 @@ function ProfileMenu(props) {
6255
6438
  getInitial
6256
6439
  },
6257
6440
  profile.name
6258
- ), /* @__PURE__ */ React49.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ React49.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ React49.createElement(ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ React49.createElement(
6441
+ ), /* @__PURE__ */ React50.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ React50.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ React50.createElement(ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ React50.createElement(
6259
6442
  MenuItem,
6260
6443
  {
6261
6444
  key: label,
@@ -6271,7 +6454,7 @@ function ProfileMenu(props) {
6271
6454
  ProfileMenu.displayName = "ProfileMenu";
6272
6455
 
6273
6456
  // src/components/RadioTileGroup/RadioTileGroup.tsx
6274
- import React50 from "react";
6457
+ import React51 from "react";
6275
6458
  import { styled as styled27, radioClasses, sheetClasses } from "@mui/joy";
6276
6459
  var RadioTileGroupRoot = styled27(RadioGroup, {
6277
6460
  name: "RadioTileGroup",
@@ -6359,7 +6542,7 @@ function RadioTileGroup(props) {
6359
6542
  error,
6360
6543
  required
6361
6544
  } = props;
6362
- const radioGroup = /* @__PURE__ */ React50.createElement(
6545
+ const radioGroup = /* @__PURE__ */ React51.createElement(
6363
6546
  RadioTileGroupRoot,
6364
6547
  {
6365
6548
  overlay: true,
@@ -6370,7 +6553,7 @@ function RadioTileGroup(props) {
6370
6553
  flex,
6371
6554
  columns
6372
6555
  },
6373
- options.map((option) => /* @__PURE__ */ React50.createElement(
6556
+ options.map((option) => /* @__PURE__ */ React51.createElement(
6374
6557
  RadioTileSheet,
6375
6558
  {
6376
6559
  key: option.value,
@@ -6380,7 +6563,7 @@ function RadioTileGroup(props) {
6380
6563
  flex,
6381
6564
  textAlign
6382
6565
  },
6383
- /* @__PURE__ */ React50.createElement(
6566
+ /* @__PURE__ */ React51.createElement(
6384
6567
  Radio,
6385
6568
  {
6386
6569
  id: `${option.value}`,
@@ -6408,7 +6591,7 @@ function RadioTileGroup(props) {
6408
6591
  }
6409
6592
  }
6410
6593
  ),
6411
- option.startDecorator && /* @__PURE__ */ React50.createElement(
6594
+ option.startDecorator && /* @__PURE__ */ React51.createElement(
6412
6595
  Box_default,
6413
6596
  {
6414
6597
  sx: {
@@ -6429,20 +6612,20 @@ function RadioTileGroup(props) {
6429
6612
  )
6430
6613
  ))
6431
6614
  );
6432
- return /* @__PURE__ */ React50.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ React50.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ React50.createElement(FormHelperText_default, null, helperText));
6615
+ return /* @__PURE__ */ React51.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ React51.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ React51.createElement(FormHelperText_default, null, helperText));
6433
6616
  }
6434
6617
  RadioTileGroup.displayName = "RadioTileGroup";
6435
6618
 
6436
6619
  // src/components/RadioList/RadioList.tsx
6437
- import React51 from "react";
6620
+ import React52 from "react";
6438
6621
  function RadioList(props) {
6439
6622
  const { items, ...innerProps } = props;
6440
- return /* @__PURE__ */ React51.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ React51.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
6623
+ return /* @__PURE__ */ React52.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ React52.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
6441
6624
  }
6442
6625
  RadioList.displayName = "RadioList";
6443
6626
 
6444
6627
  // src/components/Stepper/Stepper.tsx
6445
- import React52 from "react";
6628
+ import React53 from "react";
6446
6629
  import {
6447
6630
  Stepper as JoyStepper,
6448
6631
  Step as JoyStep,
@@ -6478,7 +6661,7 @@ function Stepper(props) {
6478
6661
  stepOrientation = "horizontal"
6479
6662
  } = props;
6480
6663
  const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
6481
- return /* @__PURE__ */ React52.createElement(
6664
+ return /* @__PURE__ */ React53.createElement(
6482
6665
  MotionStepper,
6483
6666
  {
6484
6667
  orientation,
@@ -6517,23 +6700,23 @@ function Stepper(props) {
6517
6700
  const completed = activeStep > i + 1;
6518
6701
  const disabled = activeStep < i + 1;
6519
6702
  const hasContent = step.label || step.extraContent;
6520
- return /* @__PURE__ */ React52.createElement(
6703
+ return /* @__PURE__ */ React53.createElement(
6521
6704
  Step,
6522
6705
  {
6523
6706
  key: `step-${i}`,
6524
- indicator: /* @__PURE__ */ React52.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ React52.createElement(CheckIcon, null) : step.indicatorContent),
6707
+ indicator: /* @__PURE__ */ React53.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ React53.createElement(CheckIcon, null) : step.indicatorContent),
6525
6708
  active,
6526
6709
  completed,
6527
6710
  disabled,
6528
6711
  orientation: effectiveStepOrientation
6529
6712
  },
6530
- hasContent && /* @__PURE__ */ React52.createElement(
6713
+ hasContent && /* @__PURE__ */ React53.createElement(
6531
6714
  Stack_default,
6532
6715
  {
6533
6716
  sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
6534
6717
  },
6535
- step.label && /* @__PURE__ */ React52.createElement(Typography_default, { level: "title-sm" }, step.label),
6536
- step.extraContent && /* @__PURE__ */ React52.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
6718
+ step.label && /* @__PURE__ */ React53.createElement(Typography_default, { level: "title-sm" }, step.label),
6719
+ step.extraContent && /* @__PURE__ */ React53.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
6537
6720
  )
6538
6721
  );
6539
6722
  })
@@ -6542,7 +6725,7 @@ function Stepper(props) {
6542
6725
  Stepper.displayName = "Stepper";
6543
6726
 
6544
6727
  // src/components/Switch/Switch.tsx
6545
- import React53 from "react";
6728
+ import React54 from "react";
6546
6729
  import { Switch as JoySwitch, styled as styled29, switchClasses } from "@mui/joy";
6547
6730
  import { motion as motion27 } from "framer-motion";
6548
6731
  var MotionSwitch = motion27(JoySwitch);
@@ -6564,14 +6747,14 @@ var StyledThumb = styled29(motion27.div)({
6564
6747
  right: "var(--Switch-thumbOffset)"
6565
6748
  }
6566
6749
  });
6567
- var Thumb = (props) => /* @__PURE__ */ React53.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6750
+ var Thumb = (props) => /* @__PURE__ */ React54.createElement(StyledThumb, { ...props, layout: true, transition: spring });
6568
6751
  var spring = {
6569
6752
  type: "spring",
6570
6753
  stiffness: 700,
6571
6754
  damping: 30
6572
6755
  };
6573
6756
  var Switch = (props) => {
6574
- return /* @__PURE__ */ React53.createElement(
6757
+ return /* @__PURE__ */ React54.createElement(
6575
6758
  MotionSwitch,
6576
6759
  {
6577
6760
  ...props,
@@ -6585,7 +6768,7 @@ var Switch = (props) => {
6585
6768
  Switch.displayName = "Switch";
6586
6769
 
6587
6770
  // src/components/Tabs/Tabs.tsx
6588
- import React54, { forwardRef as forwardRef11 } from "react";
6771
+ import React55, { forwardRef as forwardRef11 } from "react";
6589
6772
  import {
6590
6773
  Tabs as JoyTabs,
6591
6774
  Tab as JoyTab,
@@ -6609,14 +6792,14 @@ var StyledTab = styled30(JoyTab)(({ theme }) => ({
6609
6792
  }
6610
6793
  }));
6611
6794
  var Tab = forwardRef11(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
6612
- return /* @__PURE__ */ React54.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6795
+ return /* @__PURE__ */ React55.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
6613
6796
  });
6614
6797
  Tab.displayName = "Tab";
6615
6798
  var TabList = JoyTabList;
6616
6799
  var TabPanel = JoyTabPanel;
6617
6800
 
6618
6801
  // src/components/ThemeProvider/ThemeProvider.tsx
6619
- import React55 from "react";
6802
+ import React56 from "react";
6620
6803
  import { CssBaseline, CssVarsProvider, checkboxClasses, extendTheme, inputClasses } from "@mui/joy";
6621
6804
  var colorScheme = {
6622
6805
  palette: {
@@ -6895,7 +7078,7 @@ var defaultTheme = extendTheme({
6895
7078
  });
6896
7079
  function ThemeProvider(props) {
6897
7080
  const theme = props.theme || defaultTheme;
6898
- return /* @__PURE__ */ React55.createElement(React55.Fragment, null, /* @__PURE__ */ React55.createElement(CssVarsProvider, { theme }, /* @__PURE__ */ React55.createElement(CssBaseline, null), props.children));
7081
+ return /* @__PURE__ */ React56.createElement(React56.Fragment, null, /* @__PURE__ */ React56.createElement(CssVarsProvider, { theme }, /* @__PURE__ */ React56.createElement(CssBaseline, null), props.children));
6899
7082
  }
6900
7083
  ThemeProvider.displayName = "ThemeProvider";
6901
7084
  export {
@@ -6938,6 +7121,7 @@ export {
6938
7121
  Drawer,
6939
7122
  Dropdown,
6940
7123
  FilterMenu,
7124
+ FilterableCheckboxGroup,
6941
7125
  FormControl,
6942
7126
  FormHelperText,
6943
7127
  FormLabel,