@helpwave/hightide 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/coloring/shading.cjs +42 -20
  2. package/dist/coloring/shading.cjs.map +1 -1
  3. package/dist/coloring/shading.js +51 -29
  4. package/dist/coloring/shading.js.map +1 -1
  5. package/dist/components/branding/HelpwaveBadge.cjs +2 -2
  6. package/dist/components/branding/HelpwaveBadge.cjs.map +1 -1
  7. package/dist/components/branding/HelpwaveBadge.js +2 -2
  8. package/dist/components/branding/HelpwaveBadge.js.map +1 -1
  9. package/dist/components/date/DatePicker.cjs +30 -9
  10. package/dist/components/date/DatePicker.cjs.map +1 -1
  11. package/dist/components/date/DatePicker.js +37 -16
  12. package/dist/components/date/DatePicker.js.map +1 -1
  13. package/dist/components/date/YearMonthPicker.cjs +30 -9
  14. package/dist/components/date/YearMonthPicker.cjs.map +1 -1
  15. package/dist/components/date/YearMonthPicker.js +36 -15
  16. package/dist/components/date/YearMonthPicker.js.map +1 -1
  17. package/dist/components/layout-and-navigation/Expandable.cjs +37 -9
  18. package/dist/components/layout-and-navigation/Expandable.cjs.map +1 -1
  19. package/dist/components/layout-and-navigation/Expandable.d.cts +20 -3
  20. package/dist/components/layout-and-navigation/Expandable.d.ts +20 -3
  21. package/dist/components/layout-and-navigation/Expandable.js +36 -9
  22. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  23. package/dist/components/layout-and-navigation/FAQSection.cjs +34 -8
  24. package/dist/components/layout-and-navigation/FAQSection.cjs.map +1 -1
  25. package/dist/components/layout-and-navigation/FAQSection.d.cts +1 -1
  26. package/dist/components/layout-and-navigation/FAQSection.d.ts +1 -1
  27. package/dist/components/layout-and-navigation/FAQSection.js +35 -9
  28. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  29. package/dist/components/layout-and-navigation/StepperBar.cjs +47 -19
  30. package/dist/components/layout-and-navigation/StepperBar.cjs.map +1 -1
  31. package/dist/components/layout-and-navigation/StepperBar.d.cts +10 -7
  32. package/dist/components/layout-and-navigation/StepperBar.d.ts +10 -7
  33. package/dist/components/layout-and-navigation/StepperBar.js +45 -18
  34. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  35. package/dist/components/layout-and-navigation/Tile.cjs +2 -2
  36. package/dist/components/layout-and-navigation/Tile.cjs.map +1 -1
  37. package/dist/components/layout-and-navigation/Tile.js +2 -2
  38. package/dist/components/layout-and-navigation/Tile.js.map +1 -1
  39. package/dist/components/user-action/DateAndTimePicker.cjs +30 -9
  40. package/dist/components/user-action/DateAndTimePicker.cjs.map +1 -1
  41. package/dist/components/user-action/DateAndTimePicker.js +36 -15
  42. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  43. package/dist/css/globals.css +0 -6
  44. package/dist/index.cjs +126 -75
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +2 -2
  47. package/dist/index.d.ts +2 -2
  48. package/dist/index.js +142 -93
  49. package/dist/index.js.map +1 -1
  50. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -59,6 +59,7 @@ __export(index_exports, {
59
59
  EaseFunctions: () => EaseFunctions,
60
60
  ErrorComponent: () => ErrorComponent,
61
61
  Expandable: () => Expandable,
62
+ ExpandableUncontrolled: () => ExpandableUncontrolled,
62
63
  FAQSection: () => FAQSection,
63
64
  FormInput: () => FormInput,
64
65
  Helpwave: () => Helpwave,
@@ -107,6 +108,7 @@ __export(index_exports, {
107
108
  SolidButton: () => SolidButton,
108
109
  SortButton: () => SortButton,
109
110
  StepperBar: () => StepperBar,
111
+ StepperBarUncontrolled: () => StepperBarUncontrolled,
110
112
  Table: () => Table,
111
113
  TagIcon: () => TagIcon,
112
114
  TextButton: () => TextButton,
@@ -236,8 +238,8 @@ var Tile = ({
236
238
  }) => {
237
239
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_clsx.default)("row gap-x-4 w-full items-center", className), children: [
238
240
  prefix,
239
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "col w-full", children: [
240
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: (0, import_clsx.default)(title.className), children: title.value }),
241
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "col gap-y-0 w-full", children: [
242
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h4", { className: (0, import_clsx.default)(title.className ?? "textstyle-title-normal"), children: title.value }),
241
243
  !!description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: (0, import_clsx.default)(description.className ?? "textstyle-description"), children: description.value })
242
244
  ] }),
243
245
  suffix
@@ -975,24 +977,24 @@ var import_lucide_react = require("lucide-react");
975
977
  var import_clsx5 = __toESM(require("clsx"), 1);
976
978
  var import_jsx_runtime6 = require("react/jsx-runtime");
977
979
  var DefaultIcon = (expanded) => expanded ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.ChevronUp, { size: 16, className: "min-w-[16px]" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.ChevronDown, { size: 16, className: "min-w-[16px]" });
978
- var Expandable = (0, import_react3.forwardRef)(({
980
+ var Expandable = (0, import_react3.forwardRef)(function Expandable2({
979
981
  children,
980
982
  label,
981
983
  icon,
982
- initialExpansion = false,
984
+ isExpanded = false,
985
+ onChange = noop,
983
986
  clickOnlyOnHeader = true,
984
987
  disabled = false,
985
988
  className = "",
986
989
  headerClassName = ""
987
- }, ref) => {
988
- const [isExpanded, setIsExpanded] = (0, import_react3.useState)(initialExpansion);
990
+ }, ref) {
989
991
  icon ??= DefaultIcon;
990
992
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
991
993
  "div",
992
994
  {
993
995
  ref,
994
996
  className: (0, import_clsx5.default)("col gap-y-0 bg-surface text-on-surface group rounded-lg shadow-sm", { "cursor-pointer": !clickOnlyOnHeader && !disabled }, className),
995
- onClick: () => !clickOnlyOnHeader && !disabled && setIsExpanded(!isExpanded),
997
+ onClick: () => !clickOnlyOnHeader && !disabled && onChange(!isExpanded),
996
998
  children: [
997
999
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
998
1000
  "div",
@@ -1006,7 +1008,7 @@ var Expandable = (0, import_react3.forwardRef)(({
1006
1008
  },
1007
1009
  headerClassName
1008
1010
  ),
1009
- onClick: () => clickOnlyOnHeader && !disabled && setIsExpanded(!isExpanded),
1011
+ onClick: () => clickOnlyOnHeader && !disabled && onChange(!isExpanded),
1010
1012
  children: [
1011
1013
  label,
1012
1014
  icon(isExpanded)
@@ -1018,7 +1020,28 @@ var Expandable = (0, import_react3.forwardRef)(({
1018
1020
  }
1019
1021
  );
1020
1022
  });
1021
- Expandable.displayName = "Expandable";
1023
+ var ExpandableUncontrolled = (0, import_react3.forwardRef)(function ExpandableUncontrolled2({
1024
+ isExpanded,
1025
+ onChange = noop,
1026
+ ...props
1027
+ }, ref) {
1028
+ const [usedIsExpanded, setUsedIsExpanded] = (0, import_react3.useState)(isExpanded);
1029
+ (0, import_react3.useEffect)(() => {
1030
+ setUsedIsExpanded(isExpanded);
1031
+ }, [isExpanded]);
1032
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1033
+ Expandable,
1034
+ {
1035
+ ...props,
1036
+ ref,
1037
+ isExpanded: usedIsExpanded,
1038
+ onChange: (value) => {
1039
+ onChange(value);
1040
+ setUsedIsExpanded(value);
1041
+ }
1042
+ }
1043
+ );
1044
+ });
1022
1045
 
1023
1046
  // src/components/date/YearMonthPicker.tsx
1024
1047
  var import_jsx_runtime7 = require("react/jsx-runtime");
@@ -1052,11 +1075,11 @@ var YearMonthPicker = ({
1052
1075
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: (0, import_clsx6.default)("col select-none", className), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_custom_scrollbars_2.Scrollbars, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "col gap-y-1 mr-3", children: years.map((year) => {
1053
1076
  const selectedYear = displayedYearMonth.getFullYear() === year;
1054
1077
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1055
- Expandable,
1078
+ ExpandableUncontrolled,
1056
1079
  {
1057
1080
  ref: (displayedYearMonth.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear()) === year ? ref : void 0,
1058
1081
  label: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: (0, import_clsx6.default)({ "text-primary font-bold": selectedYear }), children: year }),
1059
- initialExpansion: showValueOpen && selectedYear,
1082
+ isExpanded: showValueOpen && selectedYear,
1060
1083
  children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "col gap-y-1 px-2 pb-2", children: equalSizeGroups([...monthsList], 3).map((monthList, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "row", children: monthList.map((month) => {
1061
1084
  const monthIndex = monthsList.indexOf(month);
1062
1085
  const newDate = new Date(year, monthIndex);
@@ -3056,7 +3079,7 @@ var FAQSection = ({
3056
3079
  }) => {
3057
3080
  const chevronSize = 28;
3058
3081
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "col gap-y-4", children: entries.map(({ id, title, content, ...restProps }) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3059
- Expandable,
3082
+ ExpandableUncontrolled,
3060
3083
  {
3061
3084
  ...restProps,
3062
3085
  label: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h3", { id, className: "textstyle-title-md", children: title }),
@@ -3347,6 +3370,7 @@ var SearchableList = ({
3347
3370
  // src/components/layout-and-navigation/StepperBar.tsx
3348
3371
  var import_lucide_react8 = require("lucide-react");
3349
3372
  var import_clsx25 = __toESM(require("clsx"), 1);
3373
+ var import_react15 = require("react");
3350
3374
  var import_jsx_runtime29 = require("react/jsx-runtime");
3351
3375
  var defaultStepperBarTranslation = {
3352
3376
  en: {
@@ -3360,32 +3384,39 @@ var defaultStepperBarTranslation = {
3360
3384
  confirm: "Erstellen"
3361
3385
  }
3362
3386
  };
3387
+ var defaultState = {
3388
+ currentStep: 0,
3389
+ seenSteps: /* @__PURE__ */ new Set([0])
3390
+ };
3363
3391
  var StepperBar = ({
3364
3392
  overwriteTranslation,
3365
- stepper,
3393
+ state,
3394
+ numberOfSteps,
3395
+ disabledSteps = /* @__PURE__ */ new Set(),
3366
3396
  onChange,
3367
3397
  onFinish,
3398
+ finishText,
3368
3399
  showDots = true,
3369
3400
  className = ""
3370
3401
  }) => {
3371
3402
  const translation = useTranslation(defaultStepperBarTranslation, overwriteTranslation);
3372
- const dots = range(0, stepper.lastStep);
3373
- const { step, seenSteps, lastStep } = stepper;
3403
+ const dots = range(0, numberOfSteps);
3404
+ const { currentStep, seenSteps } = state ?? defaultState;
3374
3405
  const update = (newStep) => {
3375
3406
  seenSteps.add(newStep);
3376
- onChange({ step: newStep, seenSteps, lastStep });
3407
+ onChange({ currentStep: newStep, seenSteps });
3377
3408
  };
3378
3409
  return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3379
3410
  "div",
3380
3411
  {
3381
- className: (0, import_clsx25.default)("sticky row p-2 border-2 justify-between rounded-lg shadow-lg", className),
3412
+ className: (0, import_clsx25.default)("row justify-between", className),
3382
3413
  children: [
3383
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex-[2] justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3414
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "row flex-[2] justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3384
3415
  SolidButton,
3385
3416
  {
3386
- disabled: step === 0,
3417
+ disabled: currentStep === 0 || disabledSteps.has(currentStep),
3387
3418
  onClick: () => {
3388
- update(step - 1);
3419
+ update(currentStep - 1);
3389
3420
  },
3390
3421
  className: "row gap-x-1 items-center justify-center",
3391
3422
  children: [
@@ -3403,39 +3434,40 @@ var StepperBar = ({
3403
3434
  className: (0, import_clsx25.default)(
3404
3435
  "rounded-full w-4 h-4",
3405
3436
  {
3406
- "bg-primary hover:brightness-75": index === step && seen,
3407
- "bg-primary/40 hover:bg-primary": index !== step && seen,
3408
- "bg-gray-200 outline-transparent": !seen
3437
+ "bg-primary hover:brightness-75": index === currentStep && seen && !disabledSteps.has(currentStep),
3438
+ "bg-primary/40 hover:bg-primary": index !== currentStep && seen && !disabledSteps.has(currentStep),
3439
+ "bg-gray-200 outline-transparent": !seen || disabledSteps.has(currentStep)
3409
3440
  },
3410
3441
  {
3411
3442
  "cursor-pointer": seen,
3412
- "cursor-not-allowed": !seen
3443
+ "cursor-not-allowed": !seen || disabledSteps.has(currentStep)
3413
3444
  }
3414
3445
  )
3415
3446
  },
3416
3447
  index
3417
3448
  );
3418
3449
  }) }),
3419
- step !== lastStep && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex-[2] justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3450
+ currentStep !== numberOfSteps && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "row flex-[2] justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3420
3451
  SolidButton,
3421
3452
  {
3422
- onClick: () => update(step + 1),
3453
+ onClick: () => update(currentStep + 1),
3423
3454
  className: "row gap-x-1 items-center justify-center",
3455
+ disabled: disabledSteps.has(currentStep),
3424
3456
  children: [
3425
3457
  translation.next,
3426
3458
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react8.ChevronRight, { size: 14 })
3427
3459
  ]
3428
3460
  }
3429
3461
  ) }),
3430
- step === lastStep && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex-[2] justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3462
+ currentStep === numberOfSteps && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "row flex-[2] justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
3431
3463
  SolidButton,
3432
3464
  {
3433
- disabled: false,
3465
+ disabled: disabledSteps.has(currentStep),
3434
3466
  onClick: onFinish,
3435
3467
  className: "row gap-x-1 items-center justify-center",
3436
3468
  children: [
3437
3469
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react8.Check, { size: 14 }),
3438
- translation.confirm
3470
+ finishText ?? translation.confirm
3439
3471
  ]
3440
3472
  }
3441
3473
  ) })
@@ -3443,13 +3475,30 @@ var StepperBar = ({
3443
3475
  }
3444
3476
  );
3445
3477
  };
3478
+ var StepperBarUncontrolled = ({ state, onChange, ...props }) => {
3479
+ const [usedState, setUsedState] = (0, import_react15.useState)(state ?? defaultState);
3480
+ (0, import_react15.useEffect)(() => {
3481
+ setUsedState(state ?? defaultState);
3482
+ }, [state]);
3483
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3484
+ StepperBar,
3485
+ {
3486
+ ...props,
3487
+ state: usedState,
3488
+ onChange: (newState) => {
3489
+ setUsedState(newState);
3490
+ onChange(newState);
3491
+ }
3492
+ }
3493
+ );
3494
+ };
3446
3495
 
3447
3496
  // src/components/layout-and-navigation/Table.tsx
3448
- var import_react16 = require("react");
3497
+ var import_react17 = require("react");
3449
3498
  var import_react_custom_scrollbars_23 = require("react-custom-scrollbars-2");
3450
3499
 
3451
3500
  // src/components/user-action/Checkbox.tsx
3452
- var import_react15 = require("react");
3501
+ var import_react16 = require("react");
3453
3502
  var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
3454
3503
  var import_lucide_react9 = require("lucide-react");
3455
3504
  var import_clsx26 = __toESM(require("clsx"), 1);
@@ -3526,7 +3575,7 @@ var CheckboxUncontrolled = ({
3526
3575
  defaultValue = false,
3527
3576
  ...props
3528
3577
  }) => {
3529
- const [checked, setChecked] = (0, import_react15.useState)(defaultValue);
3578
+ const [checked, setChecked] = (0, import_react16.useState)(defaultValue);
3530
3579
  const handleChange = (checked2) => {
3531
3580
  if (onChangeTristate) {
3532
3581
  onChangeTristate(checked2);
@@ -3701,8 +3750,8 @@ var Table = ({
3701
3750
  const headerPaddingHead = "pb-2";
3702
3751
  const headerPaddingBody = "pt-2";
3703
3752
  const cellPadding = "py-1 px-2";
3704
- const [scrollbarsAutoHeightMin, setScrollbarsAutoHeightMin] = (0, import_react16.useState)(0);
3705
- const tableRef = (0, import_react16.useRef)(null);
3753
+ const [scrollbarsAutoHeightMin, setScrollbarsAutoHeightMin] = (0, import_react17.useState)(0);
3754
+ const tableRef = (0, import_react17.useRef)(null);
3706
3755
  const calculateHeight = () => {
3707
3756
  if (tableRef.current) {
3708
3757
  const tableHeight = tableRef.current.offsetHeight;
@@ -3710,7 +3759,7 @@ var Table = ({
3710
3759
  setScrollbarsAutoHeightMin(tableHeight + offset);
3711
3760
  }
3712
3761
  };
3713
- (0, import_react16.useEffect)(() => {
3762
+ (0, import_react17.useEffect)(() => {
3714
3763
  calculateHeight();
3715
3764
  const handleResize = () => {
3716
3765
  calculateHeight();
@@ -3916,7 +3965,7 @@ var ErrorComponent = ({
3916
3965
  };
3917
3966
 
3918
3967
  // src/components/loading-states/LoadingAndErrorComponent.tsx
3919
- var import_react17 = require("react");
3968
+ var import_react18 = require("react");
3920
3969
 
3921
3970
  // src/components/loading-states/LoadingAnimation.tsx
3922
3971
  var import_clsx30 = __toESM(require("clsx"), 1);
@@ -3951,8 +4000,8 @@ var LoadingAndErrorComponent = ({
3951
4000
  loadingProps,
3952
4001
  minimumLoadingDuration
3953
4002
  }) => {
3954
- const [isInMinimumLoading, setIsInMinimumLoading] = (0, import_react17.useState)(false);
3955
- const [hasUsedMinimumLoading, setHasUsedMinimumLoading] = (0, import_react17.useState)(false);
4003
+ const [isInMinimumLoading, setIsInMinimumLoading] = (0, import_react18.useState)(false);
4004
+ const [hasUsedMinimumLoading, setHasUsedMinimumLoading] = (0, import_react18.useState)(false);
3956
4005
  if (minimumLoadingDuration && !isInMinimumLoading && !hasUsedMinimumLoading) {
3957
4006
  setIsInMinimumLoading(true);
3958
4007
  setTimeout(() => {
@@ -4168,9 +4217,9 @@ var InputModal = ({
4168
4217
  };
4169
4218
 
4170
4219
  // src/components/user-action/Select.tsx
4171
- var import_react18 = require("@headlessui/react");
4220
+ var import_react19 = require("@headlessui/react");
4172
4221
  var import_lucide_react12 = require("lucide-react");
4173
- var import_react19 = require("react");
4222
+ var import_react20 = require("react");
4174
4223
  var import_clsx33 = __toESM(require("clsx"), 1);
4175
4224
  var import_jsx_runtime42 = require("react/jsx-runtime");
4176
4225
  var Select = ({
@@ -4199,9 +4248,9 @@ var Select = ({
4199
4248
  const borderColor = "border-menu-border";
4200
4249
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: (0, import_clsx33.default)(className), children: [
4201
4250
  label && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Label, { ...label, labelType: label.labelType ?? "labelBig", className: (0, import_clsx33.default)("mb-1", label.className) }),
4202
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react18.Menu, { as: "div", className: "relative text-menu-text", children: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
4251
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react19.Menu, { as: "div", className: "relative text-menu-text", children: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
4203
4252
  /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4204
- import_react18.Menu.Button,
4253
+ import_react19.Menu.Button,
4205
4254
  {
4206
4255
  className: (0, import_clsx33.default)(
4207
4256
  "inline-flex w-full justify-between items-center rounded-t-lg border-2 px-4 py-2 font-medium bg-menu-background text-menu-text",
@@ -4221,7 +4270,7 @@ var Select = ({
4221
4270
  }
4222
4271
  ),
4223
4272
  /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4224
- import_react18.Menu.Items,
4273
+ import_react19.Menu.Items,
4225
4274
  {
4226
4275
  className: "absolute w-full z-10 rounded-b-lg bg-menu-background text-menu-text shadow-lg max-h-[500px] overflow-y-auto",
4227
4276
  children: [
@@ -4235,7 +4284,7 @@ var Select = ({
4235
4284
  },
4236
4285
  `additionalItems${index}`
4237
4286
  )),
4238
- filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react18.Menu.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4287
+ filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react19.Menu.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4239
4288
  "div",
4240
4289
  {
4241
4290
  className: (0, import_clsx33.default)(
@@ -4271,8 +4320,8 @@ var SelectUncontrolled = ({
4271
4320
  hintText,
4272
4321
  ...props
4273
4322
  }) => {
4274
- const [selected, setSelected] = (0, import_react19.useState)(value);
4275
- (0, import_react19.useEffect)(() => {
4323
+ const [selected, setSelected] = (0, import_react20.useState)(value);
4324
+ (0, import_react20.useEffect)(() => {
4276
4325
  if (options.find((options2) => options2.value === value)) {
4277
4326
  setSelected(value);
4278
4327
  }
@@ -4297,7 +4346,7 @@ var SearchableSelect = ({
4297
4346
  searchMapping,
4298
4347
  ...selectProps
4299
4348
  }) => {
4300
- const [search, setSearch] = (0, import_react19.useState)("");
4349
+ const [search, setSearch] = (0, import_react20.useState)("");
4301
4350
  const filteredOptions = MultiSearchWithMapping(search, options, searchMapping);
4302
4351
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
4303
4352
  Select,
@@ -4364,7 +4413,7 @@ var LanguageModal = ({
4364
4413
  };
4365
4414
 
4366
4415
  // src/theming/useTheme.tsx
4367
- var import_react20 = require("react");
4416
+ var import_react21 = require("react");
4368
4417
  var import_jsx_runtime44 = require("react/jsx-runtime");
4369
4418
  var themes = ["light", "dark"];
4370
4419
  var defaultThemeTypeTranslation = {
@@ -4381,24 +4430,24 @@ var ThemeUtil = {
4381
4430
  themes,
4382
4431
  translation: defaultThemeTypeTranslation
4383
4432
  };
4384
- var ThemeContext = (0, import_react20.createContext)({
4433
+ var ThemeContext = (0, import_react21.createContext)({
4385
4434
  theme: "light",
4386
4435
  setTheme: noop
4387
4436
  });
4388
4437
  var ThemeProvider = ({ children, initialTheme = "light" }) => {
4389
- const [theme, setTheme] = (0, import_react20.useState)(initialTheme);
4390
- (0, import_react20.useEffect)(() => {
4438
+ const [theme, setTheme] = (0, import_react21.useState)(initialTheme);
4439
+ (0, import_react21.useEffect)(() => {
4391
4440
  if (theme !== initialTheme) {
4392
4441
  console.warn("ThemeProvider initial state changed: Prefer using useTheme's setTheme instead");
4393
4442
  setTheme(initialTheme);
4394
4443
  }
4395
4444
  }, [initialTheme]);
4396
- (0, import_react20.useEffect)(() => {
4445
+ (0, import_react21.useEffect)(() => {
4397
4446
  document.documentElement.setAttribute("data-theme", theme);
4398
4447
  }, [theme]);
4399
4448
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(ThemeContext.Provider, { value: { theme, setTheme }, children });
4400
4449
  };
4401
- var useTheme = () => (0, import_react20.useContext)(ThemeContext);
4450
+ var useTheme = () => (0, import_react21.useContext)(ThemeContext);
4402
4451
 
4403
4452
  // src/components/modals/ThemeModal.tsx
4404
4453
  var import_jsx_runtime45 = require("react/jsx-runtime");
@@ -4612,18 +4661,18 @@ var import_lucide_react17 = require("lucide-react");
4612
4661
  var import_clsx38 = __toESM(require("clsx"), 1);
4613
4662
 
4614
4663
  // src/components/user-action/MultiSelect.tsx
4615
- var import_react23 = require("react");
4664
+ var import_react24 = require("react");
4616
4665
  var import_lucide_react16 = require("lucide-react");
4617
4666
  var import_clsx37 = __toESM(require("clsx"), 1);
4618
4667
 
4619
4668
  // src/components/user-action/Menu.tsx
4620
- var import_react22 = require("react");
4669
+ var import_react23 = require("react");
4621
4670
  var import_clsx36 = __toESM(require("clsx"), 1);
4622
4671
 
4623
4672
  // src/hooks/useOutsideClick.ts
4624
- var import_react21 = require("react");
4673
+ var import_react22 = require("react");
4625
4674
  var useOutsideClick = (refs, handler) => {
4626
- (0, import_react21.useEffect)(() => {
4675
+ (0, import_react22.useEffect)(() => {
4627
4676
  const listener = (event) => {
4628
4677
  if (event.target === null) return;
4629
4678
  if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
@@ -4666,8 +4715,8 @@ var Menu2 = ({
4666
4715
  menuClassName = ""
4667
4716
  }) => {
4668
4717
  const { isHovered: isOpen, setIsHovered: setIsOpen, handlers } = useHoverState({ isDisabled: !showOnHover });
4669
- const triggerRef = (0, import_react22.useRef)(null);
4670
- const menuRef = (0, import_react22.useRef)(null);
4718
+ const triggerRef = (0, import_react23.useRef)(null);
4719
+ const menuRef = (0, import_react23.useRef)(null);
4671
4720
  useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
4672
4721
  return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
4673
4722
  "div",
@@ -4723,7 +4772,7 @@ var MultiSelect = ({
4723
4772
  triggerClassName = ""
4724
4773
  }) => {
4725
4774
  const translation = useTranslation(defaultMultiSelectTranslation, overwriteTranslation);
4726
- const [searchText, setSearchText] = (0, import_react23.useState)(search?.initialSearch ?? "");
4775
+ const [searchText, setSearchText] = (0, import_react24.useState)(search?.initialSearch ?? "");
4727
4776
  let filteredOptions = options;
4728
4777
  const enableSearch = !!search;
4729
4778
  if (enableSearch && !!searchText) {
@@ -5006,7 +5055,7 @@ var import_lucide_react20 = require("lucide-react");
5006
5055
  var import_clsx42 = __toESM(require("clsx"), 1);
5007
5056
 
5008
5057
  // src/components/user-action/Textarea.tsx
5009
- var import_react24 = require("react");
5058
+ var import_react25 = require("react");
5010
5059
  var import_clsx41 = __toESM(require("clsx"), 1);
5011
5060
  var import_jsx_runtime54 = require("react/jsx-runtime");
5012
5061
  var Textarea = ({
@@ -5023,7 +5072,7 @@ var Textarea = ({
5023
5072
  className,
5024
5073
  ...props
5025
5074
  }) => {
5026
- const [hasFocus, setHasFocus] = (0, import_react24.useState)(false);
5075
+ const [hasFocus, setHasFocus] = (0, import_react25.useState)(false);
5027
5076
  const { restartTimer, clearUpdateTimer } = useSaveDelay(() => void 0, 3e3);
5028
5077
  const onEditCompletedWrapper = (text) => {
5029
5078
  onEditCompleted(text);
@@ -5084,8 +5133,8 @@ var TextareaUncontrolled = ({
5084
5133
  onChangeText = noop,
5085
5134
  ...props
5086
5135
  }) => {
5087
- const [text, setText] = (0, import_react24.useState)(value);
5088
- (0, import_react24.useEffect)(() => {
5136
+ const [text, setText] = (0, import_react25.useState)(value);
5137
+ (0, import_react25.useEffect)(() => {
5089
5138
  setText(value);
5090
5139
  }, [value]);
5091
5140
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
@@ -5270,7 +5319,7 @@ var DateTimePicker = ({
5270
5319
  };
5271
5320
 
5272
5321
  // src/components/user-action/ScrollPicker.tsx
5273
- var import_react25 = require("react");
5322
+ var import_react26 = require("react");
5274
5323
  var import_clsx44 = __toESM(require("clsx"), 1);
5275
5324
  var import_jsx_runtime57 = require("react/jsx-runtime");
5276
5325
  var up = 1;
@@ -5291,7 +5340,7 @@ var ScrollPicker = ({
5291
5340
  transition,
5292
5341
  items,
5293
5342
  lastTimeStamp
5294
- }, setAnimation] = (0, import_react25.useState)({
5343
+ }, setAnimation] = (0, import_react26.useState)({
5295
5344
  targetIndex: selectedIndex,
5296
5345
  currentIndex: disabled ? selectedIndex : 0,
5297
5346
  velocity: 0,
@@ -5307,7 +5356,7 @@ var ScrollPicker = ({
5307
5356
  const itemHeight = 40;
5308
5357
  const distance = 8;
5309
5358
  const containerHeight = itemHeight * (itemsShownCount - 2) + distance * (itemsShownCount - 2 + 1);
5310
- const getDirection = (0, import_react25.useCallback)((targetIndex, currentIndex2, transition2, length) => {
5359
+ const getDirection = (0, import_react26.useCallback)((targetIndex, currentIndex2, transition2, length) => {
5311
5360
  if (targetIndex === currentIndex2) {
5312
5361
  return transition2 > 0 ? up : down;
5313
5362
  }
@@ -5317,7 +5366,7 @@ var ScrollPicker = ({
5317
5366
  }
5318
5367
  return distanceForward >= length / 2 ? down : up;
5319
5368
  }, []);
5320
- const animate = (0, import_react25.useCallback)((timestamp, startTime) => {
5369
+ const animate = (0, import_react26.useCallback)((timestamp, startTime) => {
5321
5370
  setAnimation((prevState) => {
5322
5371
  const {
5323
5372
  targetIndex,
@@ -5390,7 +5439,7 @@ var ScrollPicker = ({
5390
5439
  };
5391
5440
  });
5392
5441
  }, [disabled, getDirection, onChange]);
5393
- (0, import_react25.useEffect)(() => {
5442
+ (0, import_react26.useEffect)(() => {
5394
5443
  requestAnimationFrame((timestamp) => animate(timestamp, lastTimeStamp));
5395
5444
  });
5396
5445
  const opacity = (transition2, index, itemsCount) => {
@@ -5467,7 +5516,7 @@ var ScrollPicker = ({
5467
5516
  };
5468
5517
 
5469
5518
  // src/components/user-action/ToggleableInput.tsx
5470
- var import_react26 = require("react");
5519
+ var import_react27 = require("react");
5471
5520
  var import_lucide_react21 = require("lucide-react");
5472
5521
  var import_clsx45 = __toESM(require("clsx"), 1);
5473
5522
  var import_jsx_runtime58 = require("react/jsx-runtime");
@@ -5484,14 +5533,14 @@ var ToggleableInput = ({
5484
5533
  onBlur,
5485
5534
  ...restProps
5486
5535
  }) => {
5487
- const [isEditing, setIsEditing] = (0, import_react26.useState)(initialState !== "display");
5536
+ const [isEditing, setIsEditing] = (0, import_react27.useState)(initialState !== "display");
5488
5537
  const { restartTimer, clearUpdateTimer } = useSaveDelay(() => void 0, 3e3);
5489
- const ref = (0, import_react26.useRef)(null);
5538
+ const ref = (0, import_react27.useRef)(null);
5490
5539
  const onEditCompletedWrapper = (text) => {
5491
5540
  onEditCompleted(text);
5492
5541
  clearUpdateTimer();
5493
5542
  };
5494
- (0, import_react26.useEffect)(() => {
5543
+ (0, import_react27.useEffect)(() => {
5495
5544
  if (isEditing) {
5496
5545
  ref.current?.focus();
5497
5546
  }
@@ -5556,8 +5605,8 @@ var ToggleableInputUncontrolled = ({
5556
5605
  onChangeText = noop,
5557
5606
  ...restProps
5558
5607
  }) => {
5559
- const [value, setValue] = (0, import_react26.useState)(initialValue);
5560
- (0, import_react26.useEffect)(() => {
5608
+ const [value, setValue] = (0, import_react27.useState)(initialValue);
5609
+ (0, import_react27.useEffect)(() => {
5561
5610
  setValue(initialValue);
5562
5611
  }, [initialValue]);
5563
5612
  return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
@@ -5642,6 +5691,7 @@ var filterNews = (localizedNews, requiredKeys) => {
5642
5691
  EaseFunctions,
5643
5692
  ErrorComponent,
5644
5693
  Expandable,
5694
+ ExpandableUncontrolled,
5645
5695
  FAQSection,
5646
5696
  FormInput,
5647
5697
  Helpwave,
@@ -5690,6 +5740,7 @@ var filterNews = (localizedNews, requiredKeys) => {
5690
5740
  SolidButton,
5691
5741
  SortButton,
5692
5742
  StepperBar,
5743
+ StepperBarUncontrolled,
5693
5744
  Table,
5694
5745
  TagIcon,
5695
5746
  TextButton,