@majapisoftwares/ui 4.1.16 → 4.2.0

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 (167) hide show
  1. package/base.css +4 -4
  2. package/bootstrap/AppProps.d.ts +4 -5
  3. package/components/Accordion/Accordion.d.ts +1 -1
  4. package/components/Alert/Alert.d.ts +1 -1
  5. package/components/Alert/Alert.jsx +19 -19
  6. package/components/AntiClickjacking/AntiClickjacking.d.ts +1 -0
  7. package/components/AntiClickjacking/AntiClickjacking.jsx +17 -0
  8. package/components/AntiClickjacking/index.d.ts +2 -0
  9. package/components/AntiClickjacking/index.jsx +2 -0
  10. package/components/Autocomplete/Autocomplete.d.ts +1 -1
  11. package/components/Autocomplete/Autocomplete.jsx +3 -3
  12. package/components/Autocomplete/UnstyledAutocomplete.d.ts +2 -2
  13. package/components/Autocomplete/UnstyledAutocomplete.jsx +23 -24
  14. package/components/Badge/Badge.d.ts +1 -1
  15. package/components/Badge/Badge.jsx +9 -9
  16. package/components/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  17. package/components/Button/Button.d.ts +2 -2
  18. package/components/Button/Button.jsx +5 -5
  19. package/components/Carousel/Carousel.d.ts +2 -2
  20. package/components/Carousel/Carousel.jsx +13 -13
  21. package/components/Checkbox/Checkbox.d.ts +1 -1
  22. package/components/Checkbox/Checkbox.jsx +12 -12
  23. package/components/Code/Code.d.ts +1 -1
  24. package/components/Code/Code.jsx +15 -15
  25. package/components/ConfirmationButton/ConfirmationButton.d.ts +3 -3
  26. package/components/ConfirmationButton/ConfirmationButton.jsx +10 -10
  27. package/components/ContextMenu/ContextMenu.d.ts +1 -1
  28. package/components/ContextMenu/ContextMenu.jsx +22 -22
  29. package/components/DateInput/DateInput.d.ts +1 -1
  30. package/components/DateInput/DateInput.jsx +1 -1
  31. package/components/DateInput/DateTimeInput.d.ts +1 -1
  32. package/components/DateInput/DateTimeInput.jsx +1 -1
  33. package/components/DateInput/useRefValue.d.ts +1 -1
  34. package/components/DatePicker/DatePicker.d.ts +3 -3
  35. package/components/DatePicker/DatePicker.jsx +8 -8
  36. package/components/DateRangePicker/DateRangePicker.d.ts +2 -2
  37. package/components/DateRangePicker/DateRangePicker.jsx +8 -8
  38. package/components/Dialog/Dialog.d.ts +2 -2
  39. package/components/Dialog/Dialog.jsx +23 -23
  40. package/components/Dialog/Dialogs.jsx +4 -4
  41. package/components/Dialog/dialogs.state.d.ts +2 -2
  42. package/components/Drawer/Drawer.d.ts +1 -1
  43. package/components/Drawer/Drawer.jsx +41 -41
  44. package/components/DropdownMenu/DropdownMenu.d.ts +1 -1
  45. package/components/DropdownMenu/DropdownMenu.jsx +23 -23
  46. package/components/ErrorBoundary/ErrorBoundary.d.ts +1 -1
  47. package/components/ErrorBoundary/ErrorBoundary.jsx +4 -4
  48. package/components/ErrorPage/ErrorPage.d.ts +1 -1
  49. package/components/ErrorPage/ErrorPage.jsx +16 -16
  50. package/components/FileInput/FileInput.d.ts +4 -4
  51. package/components/FileInput/FileInput.jsx +2 -2
  52. package/components/FileInput/PreviewFile.d.ts +2 -2
  53. package/components/FileSelect/FileSelect.d.ts +1 -1
  54. package/components/FileSelect/FileSelect.jsx +16 -13
  55. package/components/Footer/Footer.d.ts +1 -1
  56. package/components/Footer/Footer.jsx +22 -22
  57. package/components/GridPattern/GridPattern.d.ts +1 -1
  58. package/components/GridPattern/GridPattern.jsx +7 -7
  59. package/components/Header/Header.d.ts +1 -1
  60. package/components/Header/Header.jsx +2 -2
  61. package/components/ImageInput/ImageInput.d.ts +1 -1
  62. package/components/Input/Input.d.ts +1 -1
  63. package/components/Input/Input.jsx +7 -7
  64. package/components/Input/InputIcon.d.ts +1 -1
  65. package/components/Input/MultiSelectInput.d.ts +2 -2
  66. package/components/Input/MultiSelectInput.jsx +15 -15
  67. package/components/Input/NumericInput.d.ts +3 -3
  68. package/components/Input/NumericInput.jsx +1 -1
  69. package/components/Input/PatternInput.d.ts +3 -3
  70. package/components/Input/PatternInput.jsx +1 -1
  71. package/components/Input/UnstyledInput.d.ts +1 -1
  72. package/components/Input/UnstyledInput.jsx +12 -12
  73. package/components/Input2/InputWrapper.d.ts +1 -1
  74. package/components/Input2/InputWrapper.jsx +7 -7
  75. package/components/Link/Link.d.ts +1 -1
  76. package/components/Magnet/Magnet.d.ts +1 -1
  77. package/components/Markdown/Markdown.d.ts +1 -1
  78. package/components/Markdown/Markdown.jsx +2 -2
  79. package/components/Menu/Menu.d.ts +3 -3
  80. package/components/Menu/Menu.jsx +19 -19
  81. package/components/Modal/Modal.d.ts +1 -1
  82. package/components/Modal/Modal.jsx +26 -26
  83. package/components/ModeToggle/ModeToggle.d.ts +1 -1
  84. package/components/ModeToggle/ModeToggle.jsx +3 -3
  85. package/components/MultiSelect/MultiSelect.d.ts +2 -2
  86. package/components/MultiSelect/MultiSelect.jsx +2 -2
  87. package/components/MultiSelect/MultiSelectInput.d.ts +1 -1
  88. package/components/MultiText/MultiText.d.ts +1 -1
  89. package/components/MultiText/MultiText.jsx +0 -1
  90. package/components/NavigationDrawer/NavigationDrawer.d.ts +1 -1
  91. package/components/NavigationDrawer/NavigationDrawer.jsx +11 -11
  92. package/components/NavigationDrawer/NavigationItem.d.ts +1 -1
  93. package/components/NavigationDrawer/NavigationItem.jsx +2 -2
  94. package/components/NoSsr/NoSsr.d.ts +1 -1
  95. package/components/Notifications/Notifications.jsx +29 -29
  96. package/components/Notifications/notifications.state.d.ts +2 -2
  97. package/components/Notifications/notifications.state.js +1 -1
  98. package/components/Pagination/Pagination.jsx +15 -15
  99. package/components/Particles/Particles.jsx +55 -55
  100. package/components/PictureCropInput/PictureCropInput.d.ts +2 -2
  101. package/components/PictureCropInput/PictureCropInput.jsx +39 -39
  102. package/components/PictureCropInput/canvasPreview.d.ts +1 -1
  103. package/components/Popover/Popover.d.ts +1 -1
  104. package/components/Popover/Popover.jsx +6 -6
  105. package/components/Resizable/Resizable.d.ts +1 -1
  106. package/components/Resizable/Resizable.jsx +4 -4
  107. package/components/ScrollArea/ScrollArea.d.ts +1 -1
  108. package/components/ScrollArea/ScrollArea.jsx +11 -11
  109. package/components/Select/Select.d.ts +1 -1
  110. package/components/Select/Select.jsx +21 -21
  111. package/components/Skeleton/Skeleton.d.ts +1 -1
  112. package/components/Skeleton/Skeleton.jsx +4 -4
  113. package/components/StarBorder/StarBorder.d.ts +1 -2
  114. package/components/StarBorder/StarBorder.jsx +1 -1
  115. package/components/Switch/Switch.d.ts +2 -2
  116. package/components/Switch/Switch.jsx +9 -9
  117. package/components/Table/DataTable.d.ts +1 -1
  118. package/components/Table/DataTable.jsx +54 -54
  119. package/components/Table/Table.d.ts +1 -1
  120. package/components/Table/Table.jsx +7 -7
  121. package/components/Table/TableActionButton.d.ts +2 -2
  122. package/components/Table/TableActionButton.jsx +3 -3
  123. package/components/Table/TableBody.d.ts +1 -1
  124. package/components/Table/TableBody.jsx +4 -4
  125. package/components/Table/TableCell.d.ts +1 -1
  126. package/components/Table/TableCell.jsx +4 -4
  127. package/components/Table/TableFooter.d.ts +1 -1
  128. package/components/Table/TableFooter.jsx +2 -2
  129. package/components/Table/TableHead.d.ts +1 -1
  130. package/components/Table/TableHead.jsx +4 -4
  131. package/components/Table/TableHeader.d.ts +1 -1
  132. package/components/Table/TableHeader.jsx +10 -10
  133. package/components/Table/TableRow.d.ts +1 -1
  134. package/components/Table/TableRow.jsx +2 -2
  135. package/components/Tabs/Tabs.d.ts +2 -2
  136. package/components/Tabs/Tabs.jsx +6 -6
  137. package/components/TabsSwitcher/Tab.d.ts +1 -1
  138. package/components/TabsSwitcher/TabsSwitcher.d.ts +1 -1
  139. package/components/Text/Text.d.ts +1 -1
  140. package/components/Text/Text.jsx +1 -0
  141. package/components/Textarea/Textarea.d.ts +2 -2
  142. package/components/Textarea/Textarea.jsx +1 -1
  143. package/components/Tooltip/Tooltip.d.ts +1 -1
  144. package/components/Tooltip/Tooltip.jsx +12 -12
  145. package/components/VisibilityActivatedButton/VisibilityActivatedButton.d.ts +1 -1
  146. package/form.d.ts +4 -4
  147. package/form2.d.ts +1 -1
  148. package/form2.jsx +1 -0
  149. package/hooks/useDebounceEffect.d.ts +1 -1
  150. package/hooks/useDebouncedValue.d.ts +1 -1
  151. package/hooks/useDebouncedValue.js +1 -1
  152. package/hooks/useLagRadar.jsx +19 -19
  153. package/package.json +1 -2
  154. package/tsconfig.tsbuildinfo +1 -1
  155. package/types.d.ts +1 -1
  156. package/types.js +1 -1
  157. package/utils/UseState.d.ts +2 -3
  158. package/utils/csvBlobToJson.d.ts +1 -1
  159. package/utils/csvBlobToJson.js +0 -1
  160. package/utils/ms.d.ts +1 -1
  161. package/utils/ms.js +6 -6
  162. package/utils/recursiveChildrenMap.d.ts +1 -1
  163. package/utils/smoothScrollToHref.d.ts +1 -1
  164. package/utils/smoothScrollToHref.js +7 -3
  165. package/utils/stopPropagation.d.ts +1 -1
  166. package/utils/xlsxBlobToJson.d.ts +1 -1
  167. package/utils/xlsxBlobToJson.js +3 -0
@@ -1,12 +1,12 @@
1
1
  import { useId } from "react";
2
2
  export default function GridPattern(props) {
3
3
  const patternId = useId();
4
- return (<svg aria-hidden="true" className="absolute inset-0 h-full w-full">
5
- <defs>
6
- <pattern id={patternId} width="32" height="32" patternUnits="userSpaceOnUse" {...props}>
7
- <path d="M0 32V.5H32" fill="none" stroke="currentColor"/>
8
- </pattern>
9
- </defs>
10
- <rect width="100%" height="100%" fill={`url(#${patternId})`}/>
4
+ return (<svg aria-hidden="true" className="absolute inset-0 h-full w-full">
5
+ <defs>
6
+ <pattern id={patternId} width="32" height="32" patternUnits="userSpaceOnUse" {...props}>
7
+ <path d="M0 32V.5H32" fill="none" stroke="currentColor"/>
8
+ </pattern>
9
+ </defs>
10
+ <rect width="100%" height="100%" fill={`url(#${patternId})`}/>
11
11
  </svg>);
12
12
  }
@@ -1,4 +1,4 @@
1
- import { DetailedHTMLProps, HTMLAttributes } from "react";
1
+ import { type DetailedHTMLProps, type HTMLAttributes } from "react";
2
2
  export type HeaderProps = {
3
3
  hideOnScroll?: boolean;
4
4
  } & DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
@@ -1,6 +1,6 @@
1
1
  import clsx from "../../utils/clsx";
2
2
  import { useScrollYMovement } from "../../hooks/useScroll";
3
- import { useEffect, useRef } from "react";
3
+ import { useEffect, useRef, } from "react";
4
4
  import useMediaQuery from "../../hooks/useMediaQuery";
5
5
  export default function Header({ className, hideOnScroll, ...props }) {
6
6
  const ref = useRef(null);
@@ -15,5 +15,5 @@ export default function Header({ className, hideOnScroll, ...props }) {
15
15
  ref.current.style.transform = "";
16
16
  }
17
17
  }, [isMobile]);
18
- return (<header ref={ref} {...props} className={clsx("fixed top-0 z-20 flex h-16 w-full items-center px-2.5 shadow-none shadow-slate-900/5 ring-offset-zinc-100 transition-colors duration-500 scrolled:shadow-md sm:px-4 md:px-6", "bg-white/95 backdrop-blur-sm [@supports(backdrop-filter:blur(0))]:bg-white/75", "dark:bg-zinc-900/95 dark:[@supports(backdrop-filter:blur(0))]:bg-zinc-900/75", "not-scrolled:bg-transparent!", className)}/>);
18
+ return (<header ref={ref} {...props} className={clsx("scrolled:shadow-md fixed top-0 z-20 flex h-16 w-full items-center px-2.5 shadow-none shadow-slate-900/5 ring-offset-zinc-100 transition-colors duration-500 sm:px-4 md:px-6", "bg-white/95 backdrop-blur-sm [@supports(backdrop-filter:blur(0))]:bg-white/75", "dark:bg-zinc-900/95 dark:[@supports(backdrop-filter:blur(0))]:bg-zinc-900/75", "not-scrolled:bg-transparent!", className)}/>);
19
19
  }
@@ -1,4 +1,4 @@
1
- import { ComponentProps } from "react";
1
+ import type { ComponentProps } from "react";
2
2
  import FileInput from "../FileInput";
3
3
  declare function ImageInput<PFP extends object>({ icon, uploadAFileText, allowedFileTypes, fileDisplay, ...props }: ComponentProps<typeof FileInput<PFP>>): import("react").JSX.Element;
4
4
  export default ImageInput;
@@ -1,4 +1,4 @@
1
- import { UnstyledInputProps } from "../Input/UnstyledInput";
1
+ import { type UnstyledInputProps } from "../Input/UnstyledInput";
2
2
  export type InputProps<Select extends boolean | undefined> = {
3
3
  loading?: boolean;
4
4
  } & UnstyledInputProps<Select>;
@@ -1,4 +1,4 @@
1
- import UnstyledInput from "../Input/UnstyledInput";
1
+ import UnstyledInput, {} from "../Input/UnstyledInput";
2
2
  import { defaultTextStyles } from "../Text";
3
3
  import { ExclamationCircleIcon } from "@heroicons/react/20/solid";
4
4
  import InputIcon from "./InputIcon";
@@ -16,8 +16,8 @@ export const defaultTrailingInputClassName = "pr-10";
16
16
  function Input({ error, trailing, labelClassName, inputClassName, helpTextClassName, trailingClassName, leadingClassName, leadingInputClassName, trailingInputClassName, required, label, loading, readOnly, children, disabled, helpText, ref, ...props }) {
17
17
  trailing =
18
18
  trailing ||
19
- (error ? (<InputIcon className="text-error-500">
20
- <ExclamationCircleIcon aria-hidden="true"/>
19
+ (error ? (<InputIcon className="text-error-500">
20
+ <ExclamationCircleIcon aria-hidden="true"/>
21
21
  </InputIcon>) : undefined);
22
22
  labelClassName = clsx(defaultLabelClassName, labelClassName);
23
23
  inputClassName = clsx(error ? defaultInputClassNameUncolored : defaultInputClassName, inputClassName, {
@@ -40,18 +40,18 @@ function Input({ error, trailing, labelClassName, inputClassName, helpTextClassN
40
40
  inputClassName = `${inputClassName} border-dashed`;
41
41
  }
42
42
  if (label && required) {
43
- label = (<>
44
- {label} <span className="text-red-500">*</span>
43
+ label = (<>
44
+ {label} <span className="text-red-500">*</span>
45
45
  </>);
46
46
  }
47
47
  return (<UnstyledInput
48
48
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
- {...props} trailing={trailing} labelClassName={labelClassName} inputClassName={inputClassName} helpTextClassName={helpTextClassName} trailingClassName={trailingClassName} leadingClassName={leadingClassName} leadingInputClassName={leadingInputClassName} trailingInputClassName={trailingInputClassName} ref={ref} required={required} label={label} readOnly={readOnly} disabled={disabled} data-disabled={disabled || undefined} helpText={helpText}>
49
+ {...props} trailing={trailing} labelClassName={labelClassName} inputClassName={inputClassName} helpTextClassName={helpTextClassName} trailingClassName={trailingClassName} leadingClassName={leadingClassName} leadingInputClassName={leadingInputClassName} trailingInputClassName={trailingInputClassName} ref={ref} required={required} label={label} readOnly={readOnly} disabled={disabled} data-disabled={disabled || undefined} helpText={helpText}>
50
50
  {recursiveChildrenMap(children, (child) => cloneElement(child, child.type !== Fragment
51
51
  ? {
52
52
  disabled: readOnly || disabled || child.props.disabled,
53
53
  }
54
- : undefined))}
54
+ : undefined))}
55
55
  </UnstyledInput>);
56
56
  }
57
57
  export default Input;
@@ -1,4 +1,4 @@
1
- import { ReactElement } from "react";
1
+ import { type ReactElement } from "react";
2
2
  export default function InputIcon({ className, children, }: {
3
3
  className?: string;
4
4
  children: ReactElement<{
@@ -1,5 +1,5 @@
1
- import { ComponentProps } from "react";
2
- import { InputProps } from "./Input";
1
+ import type { ComponentProps } from "react";
2
+ import { type InputProps } from "./Input";
3
3
  declare function MultiSelectInput({ options, value, onChange, emptyLabel, ref, ...props }: Omit<InputProps<undefined>, "value" | "onChange"> & {
4
4
  options: {
5
5
  value: string;
@@ -1,28 +1,28 @@
1
- import Input from "./Input";
1
+ import Input, {} from "./Input";
2
2
  import DropdownMenu from "../DropdownMenu";
3
3
  import Button from "../Button";
4
4
  import { ChevronDownIcon } from "@heroicons/react/16/solid";
5
5
  import { xor } from "lodash-es";
6
6
  function MultiSelectInput({ options, value, onChange, emptyLabel = "None", ref, ...props }) {
7
- return (<DropdownMenu.Root>
8
- <DropdownMenu.Trigger asChild>
9
- <Input as={Button} {...props} ref={ref} trailing={<ChevronDownIcon />} inputClassName="text-left dark:hover:bg-zinc-700/70">
7
+ return (<DropdownMenu.Root>
8
+ <DropdownMenu.Trigger asChild>
9
+ <Input as={Button} {...props} ref={ref} trailing={<ChevronDownIcon />} inputClassName="text-left dark:hover:bg-zinc-700/70">
10
10
  {value?.length
11
11
  ? options
12
12
  .map((project) => value.includes(project.value) ? project.name : null)
13
13
  .filter(Boolean)
14
14
  .join(", ")
15
- : emptyLabel}
16
- </Input>
17
- </DropdownMenu.Trigger>
18
- <DropdownMenu.Content>
19
- <DropdownMenu.Item onClick={() => onChange?.([])}>
20
- {emptyLabel}
21
- </DropdownMenu.Item>
22
- {options.map((options) => (<DropdownMenu.CheckboxItem key={options.name} checked={value?.includes(options.value)} onClick={() => onChange?.(xor(value, [options.value]))}>
23
- {options.name}
24
- </DropdownMenu.CheckboxItem>))}
25
- </DropdownMenu.Content>
15
+ : emptyLabel}
16
+ </Input>
17
+ </DropdownMenu.Trigger>
18
+ <DropdownMenu.Content>
19
+ <DropdownMenu.Item onClick={() => onChange?.([])}>
20
+ {emptyLabel}
21
+ </DropdownMenu.Item>
22
+ {options.map((options) => (<DropdownMenu.CheckboxItem key={options.name} checked={value?.includes(options.value)} onClick={() => onChange?.(xor(value, [options.value]))}>
23
+ {options.name}
24
+ </DropdownMenu.CheckboxItem>))}
25
+ </DropdownMenu.Content>
26
26
  </DropdownMenu.Root>);
27
27
  }
28
28
  export default MultiSelectInput;
@@ -1,6 +1,6 @@
1
- import { ComponentProps } from "react";
2
- import { InputProps } from "./Input";
3
- import { NumericFormatProps } from "react-number-format";
1
+ import type { ComponentProps } from "react";
2
+ import { type InputProps } from "./Input";
3
+ import { type NumericFormatProps } from "react-number-format";
4
4
  declare function NumericInput({ ref, ...props }: Omit<NumericFormatProps, "customInput"> & InputProps<undefined>): import("react").JSX.Element;
5
5
  export type NumericInputProps = ComponentProps<typeof NumericInput>;
6
6
  export default NumericInput;
@@ -1,4 +1,4 @@
1
- import Input from "./Input";
1
+ import Input, {} from "./Input";
2
2
  import { NumericFormat } from "react-number-format";
3
3
  function NumericInput({ ref, ...props }) {
4
4
  return <NumericFormat getInputRef={ref} customInput={Input} {...props}/>;
@@ -1,6 +1,6 @@
1
- import { ComponentProps } from "react";
2
- import { InputProps } from "./Input";
3
- import { PatternFormatProps } from "react-number-format";
1
+ import type { ComponentProps } from "react";
2
+ import { type InputProps } from "./Input";
3
+ import { type PatternFormatProps } from "react-number-format";
4
4
  declare function PatternInput(props: Omit<PatternFormatProps, "customInput"> & InputProps<undefined>): import("react").JSX.Element;
5
5
  export type PatternInputProps = ComponentProps<typeof PatternInput>;
6
6
  export default PatternInput;
@@ -1,4 +1,4 @@
1
- import Input from "./Input";
1
+ import Input, {} from "./Input";
2
2
  import { PatternFormat } from "react-number-format";
3
3
  function PatternInput(props) {
4
4
  return <PatternFormat customInput={Input} {...props}/>;
@@ -1,4 +1,4 @@
1
- import { ComponentType, DetailedHTMLProps, InputHTMLAttributes, ReactNode } from "react";
1
+ import { type ComponentType, type DetailedHTMLProps, type InputHTMLAttributes, type ReactNode } from "react";
2
2
  export type UnstyledInputCommonProps = {
3
3
  label?: ReactNode;
4
4
  inputClassName?: string;
@@ -9,20 +9,20 @@ function UnstyledInput({ id, label, className, inputClassName, labelClassName, h
9
9
  }, trailingInputClassName && {
10
10
  [trailingInputClassName]: !!trailing,
11
11
  });
12
- return (<div className={className}>
13
- {label && (<label htmlFor={id} className={labelClassName}>
14
- {label}
15
- </label>)}
16
- <div style={{ position: "relative" }} className={innerClassName}>
17
- {leading && <div className={leadingClassName}>{leading}</div>}
12
+ return (<div className={className}>
13
+ {label && (<label htmlFor={id} className={labelClassName}>
14
+ {label}
15
+ </label>)}
16
+ <div style={{ position: "relative" }} className={innerClassName}>
17
+ {leading && <div className={leadingClassName}>{leading}</div>}
18
18
  <Component
19
19
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
20
- {...props} className={inputClassName} id={id} type={type} value={value}>
21
- {children}
22
- </Component>
23
- {trailing && <div className={trailingClassName}>{trailing}</div>}
24
- </div>
25
- {helpText && <div className={helpTextClassName}>{helpText}</div>}
20
+ {...props} className={inputClassName} id={id} type={type} value={value}>
21
+ {children}
22
+ </Component>
23
+ {trailing && <div className={trailingClassName}>{trailing}</div>}
24
+ </div>
25
+ {helpText && <div className={helpTextClassName}>{helpText}</div>}
26
26
  </div>);
27
27
  }
28
28
  export default UnstyledInput;
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import type { ReactNode } from "react";
2
2
  export interface InputWrapperProps {
3
3
  children?: ReactNode;
4
4
  className?: string;
@@ -1,11 +1,11 @@
1
1
  import clsx from "../../utils/clsx";
2
2
  export default function InputWrapper({ children, className, label, id, helpText, error, required, }) {
3
- return (<div className={clsx("ui-input-wrapper", className)} data-error={error ? "" : undefined}>
4
- {label && (<label htmlFor={id} className="ui-input-wrapper-label">
5
- {label}
6
- {required && <span className="text-red-500"> *</span>}
7
- </label>)}
8
- {children}
9
- {helpText && <div className="ui-input-wrapper-help-text">{helpText}</div>}
3
+ return (<div className={clsx("ui-input-wrapper", className)} data-error={error ? "" : undefined}>
4
+ {label && (<label htmlFor={id} className="ui-input-wrapper-label">
5
+ {label}
6
+ {required && <span className="text-red-500"> *</span>}
7
+ </label>)}
8
+ {children}
9
+ {helpText && <div className="ui-input-wrapper-help-text">{helpText}</div>}
10
10
  </div>);
11
11
  }
@@ -1,3 +1,3 @@
1
- import { ComponentProps } from "react";
1
+ import type { ComponentProps } from "react";
2
2
  import NextLink from "next/link";
3
3
  export default function Link({ className, href, ...props }: Partial<ComponentProps<typeof NextLink>>): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import React, { ReactNode, HTMLAttributes } from "react";
1
+ import React, { type ReactNode, type HTMLAttributes } from "react";
2
2
  interface MagnetProps extends HTMLAttributes<HTMLDivElement> {
3
3
  children: ReactNode;
4
4
  padding?: number;
@@ -1,4 +1,4 @@
1
- import React, { ComponentProps } from "react";
1
+ import React, { type ComponentProps } from "react";
2
2
  import ReactMarkdown from "react-markdown";
3
3
  export type MarkdownProps = {
4
4
  children?: string;
@@ -1,9 +1,9 @@
1
- import React from "react";
1
+ import React, {} from "react";
2
2
  import ReactMarkdown from "react-markdown";
3
3
  import clsx from "../../utils/clsx";
4
4
  import remarkGfm from "remark-gfm";
5
5
  export default function Markdown({ children, className, options, }) {
6
- return (<div className={clsx("prose prose-zinc dark:prose-invert max-w-full", "[&_.contains-task-list]:list-none [&_.contains-task-list]:pl-0", "[&_.task-list-item_input[type='checkbox']]:-mt-1", className)}>
6
+ return (<div className={clsx("prose prose-zinc dark:prose-invert max-w-full leading-normal", "[&_.contains-task-list]:list-none [&_.contains-task-list]:pl-0", "[&_.task-list-item_input[type='checkbox']]:-mt-1", "prose-a:break-all", className)}>
7
7
  <ReactMarkdown remarkPlugins={[remarkGfm, ...(options?.remarkPlugins || [])]} {...options}>
8
8
  {children}
9
9
  </ReactMarkdown>
@@ -1,7 +1,7 @@
1
- import { ComponentPropsWithoutRef, ReactElement, ReactNode, Ref } from "react";
1
+ import { type ComponentPropsWithoutRef, type ReactElement, type ReactNode, type Ref } from "react";
2
2
  import Button from "../Button/Button";
3
- import { UnstyledButtonProps } from "../Button/UnstyledButton";
4
- import { TextProps } from "../Text";
3
+ import { type UnstyledButtonProps } from "../Button/UnstyledButton";
4
+ import { type TextProps } from "../Text";
5
5
  export declare const defaultMenuItemsClassName = "z-10 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-hidden dark:bg-zinc-800";
6
6
  export type MenuProps = {
7
7
  className?: string;
@@ -3,21 +3,21 @@ import { Menu as HuiMenu, Transition } from "@headlessui/react";
3
3
  import { ChevronDownIcon } from "@heroicons/react/20/solid";
4
4
  import clsx from "../../utils/clsx";
5
5
  import Button from "../Button/Button";
6
- import UnstyledButton from "../Button/UnstyledButton";
7
- import Text from "../Text";
6
+ import UnstyledButton, {} from "../Button/UnstyledButton";
7
+ import Text, {} from "../Text";
8
8
  import { useMount } from "react-use";
9
9
  export const defaultMenuItemsClassName = "z-10 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-hidden dark:bg-zinc-800";
10
10
  const Item = function MenuItem({ className, icon, children, ...props }) {
11
- return (<HuiMenu.Item>
11
+ return (<HuiMenu.Item>
12
12
  {({ active }) => (<UnstyledButton {...props} type="button" className={clsx("flex w-full items-center text-left", active
13
13
  ? "bg-zinc-100 text-zinc-900 dark:bg-zinc-700/50 dark:text-zinc-100"
14
- : "text-zinc-700 dark:text-zinc-200", "block px-4 py-2 text-sm", className)}>
14
+ : "text-zinc-700 dark:text-zinc-200", "block px-4 py-2 text-sm", className)}>
15
15
  {icon &&
16
16
  cloneElement(icon, {
17
17
  className: clsx("w-5 mr-2", icon.props.className),
18
- })}
19
- {children}
20
- </UnstyledButton>)}
18
+ })}
19
+ {children}
20
+ </UnstyledButton>)}
21
21
  </HuiMenu.Item>);
22
22
  };
23
23
  const Label = function MenuLabel(props) {
@@ -27,16 +27,16 @@ const Menu = function Menu({ className, iconClassName, position = "right", child
27
27
  useMount(() => {
28
28
  console.warn("<Menu> was deprecated and should be replaced with <DropdownMenu>");
29
29
  });
30
- return (<HuiMenu as="div" className={clsx("relative inline-block text-left", className)} {...props}>
31
- <div>
30
+ return (<HuiMenu as="div" className={clsx("relative inline-block text-left", className)} {...props}>
31
+ <div>
32
32
  {button ? (<HuiMenu.Button as={Fragment}>{button}</HuiMenu.Button>) : (<HuiMenu.Button
33
33
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
34
- as={Button} className={clsx("flex w-full", buttonProps?.className)} trailing={<ChevronDownIcon className={iconClassName}/>} {...buttonProps}>
35
- {label}
36
- </HuiMenu.Button>)}
37
- </div>
38
-
39
- <Transition as={Fragment} enter="transition ease-out duration-100" enterFrom="transform opacity-0 scale-95" enterTo="transform opacity-100 scale-100" leave="transition ease-in duration-75" leaveFrom="transform opacity-100 scale-100" leaveTo="transform opacity-0 scale-95">
34
+ as={Button} className={clsx("flex w-full", buttonProps?.className)} trailing={<ChevronDownIcon className={iconClassName}/>} {...buttonProps}>
35
+ {label}
36
+ </HuiMenu.Button>)}
37
+ </div>
38
+
39
+ <Transition as={Fragment} enter="transition ease-out duration-100" enterFrom="transform opacity-0 scale-95" enterTo="transform opacity-100 scale-100" leave="transition ease-in duration-75" leaveFrom="transform opacity-100 scale-100" leaveTo="transform opacity-0 scale-95">
40
40
  <HuiMenu.Items unmount={unmount} className={clsx(defaultMenuItemsClassName, "absolute mt-2 min-w-[14rem]", {
41
41
  "right-0": position.includes("right"),
42
42
  "origin-top-right": position.includes("right") && !position.includes("bottom"),
@@ -45,10 +45,10 @@ const Menu = function Menu({ className, iconClassName, position = "right", child
45
45
  "origin-bottom-left": position.includes("left") && position.includes("bottom"),
46
46
  "left-0": position.includes("left"),
47
47
  "bottom-0": position.includes("bottom"),
48
- }, menuItemsClassName)}>
49
- <div className="py-1">{children}</div>
50
- </HuiMenu.Items>
51
- </Transition>
48
+ }, menuItemsClassName)}>
49
+ <div className="py-1">{children}</div>
50
+ </HuiMenu.Items>
51
+ </Transition>
52
52
  </HuiMenu>);
53
53
  };
54
54
  export default Object.assign(Menu, { Label, Item });
@@ -1,4 +1,4 @@
1
- import { ComponentPropsWithoutRef, CSSProperties, ReactElement, ReactNode } from "react";
1
+ import { type ComponentPropsWithoutRef, type CSSProperties, type ReactElement, type ReactNode } from "react";
2
2
  import Button from "../Button";
3
3
  declare function Modal({ open, onClose, children, overlayClassName, panelClassName, dialogClassName, dialogOuterPanelClassName, dialogOverflowClassName, style, }: {
4
4
  open?: boolean;
@@ -7,40 +7,40 @@ import { XMarkIcon } from "@heroicons/react/24/solid";
7
7
  import clsx from "../../utils/clsx";
8
8
  export default function Modal({ open, onClose, children, overlayClassName, panelClassName, dialogClassName, dialogOuterPanelClassName, dialogOverflowClassName, style, }) {
9
9
  const handleOnClose = useCallback(() => onClose?.(), [onClose]);
10
- return (<Transition.Root show={open} as={Fragment}>
11
- <Dialog as="div" className={clsx("relative z-10", dialogClassName)} onClose={handleOnClose} style={style}>
12
- <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0" enterTo="opacity-100" leave="ease-in duration-200" leaveFrom="opacity-100" leaveTo="opacity-0">
13
- <div className={clsx("fixed inset-0 bg-white/75 transition-opacity dark:bg-black/75", overlayClassName)}/>
14
- </Transition.Child>
15
-
16
- <div className={clsx("fixed inset-0 z-10 overflow-y-auto", dialogOverflowClassName)}>
17
- <div className={clsx("flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0", dialogOuterPanelClassName)}>
18
- <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" enterTo="opacity-100 translate-y-0 sm:scale-100" leave="ease-in duration-200" leaveFrom="opacity-100 translate-y-0 sm:scale-100" leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95">
19
- <Dialog.Panel className={clsx("relative transform overflow-hidden rounded-lg bg-white text-left shadow-xl transition-all dark:bg-zinc-900 dark:ring-1 dark:ring-white/5 sm:my-8 sm:w-full sm:max-w-sm", panelClassName)}>
20
- {children}
21
- </Dialog.Panel>
22
- </Transition.Child>
23
- </div>
24
- </div>
25
- </Dialog>
10
+ return (<Transition.Root show={open} as={Fragment}>
11
+ <Dialog as="div" className={clsx("relative z-10", dialogClassName)} onClose={handleOnClose} style={style}>
12
+ <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0" enterTo="opacity-100" leave="ease-in duration-200" leaveFrom="opacity-100" leaveTo="opacity-0">
13
+ <div className={clsx("fixed inset-0 bg-white/75 transition-opacity dark:bg-black/75", overlayClassName)}/>
14
+ </Transition.Child>
15
+
16
+ <div className={clsx("fixed inset-0 z-10 overflow-y-auto", dialogOverflowClassName)}>
17
+ <div className={clsx("flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0", dialogOuterPanelClassName)}>
18
+ <Transition.Child as={Fragment} enter="ease-out duration-300" enterFrom="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" enterTo="opacity-100 translate-y-0 sm:scale-100" leave="ease-in duration-200" leaveFrom="opacity-100 translate-y-0 sm:scale-100" leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95">
19
+ <Dialog.Panel className={clsx("relative transform overflow-hidden rounded-lg bg-white text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-sm dark:bg-zinc-900 dark:ring-1 dark:ring-white/5", panelClassName)}>
20
+ {children}
21
+ </Dialog.Panel>
22
+ </Transition.Child>
23
+ </div>
24
+ </div>
25
+ </Dialog>
26
26
  </Transition.Root>);
27
27
  }
28
28
  Modal.Container = ModalContainer;
29
29
  function ModalContainer({ children, className, }) {
30
- return (<Stack className={clsx("gap-4! px-4 pb-4 pt-5 sm:p-6", className)}>
31
- {children}
30
+ return (<Stack className={clsx("gap-4! px-4 pt-5 pb-4 sm:p-6", className)}>
31
+ {children}
32
32
  </Stack>);
33
33
  }
34
34
  Modal.Title = ModalTitle;
35
35
  function ModalTitle({ children, className, }) {
36
- return (<Dialog.Title as="h3" className={clsx("text-center text-lg font-medium leading-6 text-zinc-900 dark:text-zinc-100", className)}>
37
- {children}
36
+ return (<Dialog.Title as="h3" className={clsx("text-center text-lg leading-6 font-medium text-zinc-900 dark:text-zinc-100", className)}>
37
+ {children}
38
38
  </Dialog.Title>);
39
39
  }
40
40
  Modal.Content = ModalContent;
41
41
  function ModalContent({ children, className, }) {
42
- return (<div className={clsx("text-center text-sm text-zinc-500 dark:text-zinc-400", className)}>
43
- {children}
42
+ return (<div className={clsx("text-center text-sm text-zinc-500 dark:text-zinc-400", className)}>
43
+ {children}
44
44
  </div>);
45
45
  }
46
46
  Modal.Actions = ModalActions;
@@ -49,17 +49,17 @@ function ModalActions({ children, className, }) {
49
49
  }
50
50
  Modal.Icon = ModalIcon;
51
51
  function ModalIcon({ children, }) {
52
- return (<div className="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100 dark:bg-green-800">
52
+ return (<div className="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100 dark:bg-green-800">
53
53
  {children &&
54
54
  cloneElement(children, {
55
55
  className: "h-6 w-6 text-green-600 dark:text-green-400",
56
56
  "aria-hidden": "true",
57
- })}
57
+ })}
58
58
  </div>);
59
59
  }
60
60
  Modal.CloseButton = ModalCloseButton;
61
61
  function ModalCloseButton({ className, ...props }) {
62
- return (<Button icon className={clsx("absolute right-2 top-2", className)} variant="text" {...props}>
63
- <XMarkIcon />
62
+ return (<Button icon className={clsx("absolute top-2 right-2", className)} variant="text" {...props}>
63
+ <XMarkIcon />
64
64
  </Button>);
65
65
  }
@@ -1,4 +1,4 @@
1
- import { Ref } from "react";
1
+ import type { Ref } from "react";
2
2
  export interface ModeToggleProps {
3
3
  ariaLabel?: string;
4
4
  className?: string;
@@ -4,9 +4,9 @@ import clsx from "../../utils/clsx";
4
4
  import useModeToggle from "./useModeToggle";
5
5
  const ModeToggle = function ModeToggle({ ariaLabel = "Toggle dark mode", className, iconClassName, ref, }) {
6
6
  const toggleMode = useModeToggle();
7
- return (<Button ref={ref} icon variant="text" aria-label={ariaLabel} onClick={toggleMode} className={className}>
8
- <SunIcon className={clsx("dark:hidden", iconClassName)}/>
9
- <MoonIcon className={clsx("hidden dark:block", iconClassName)}/>
7
+ return (<Button ref={ref} icon variant="text" aria-label={ariaLabel} onClick={toggleMode} className={className}>
8
+ <SunIcon className={clsx("dark:hidden", iconClassName)}/>
9
+ <MoonIcon className={clsx("hidden dark:block", iconClassName)}/>
10
10
  </Button>);
11
11
  };
12
12
  export default ModeToggle;
@@ -1,5 +1,5 @@
1
- import { ReactNode } from "react";
2
- import Input, { UnstyledInputProps } from "../Input";
1
+ import { type ReactNode } from "react";
2
+ import Input, { type UnstyledInputProps } from "../Input";
3
3
  export interface MultiSelectProps<T extends object | string> extends Omit<UnstyledInputProps<false>, "as" | "onSelect" | "inputClassName" | "innerClassName" | "value" | "onChange"> {
4
4
  placeholder?: string;
5
5
  emptyText?: string;
@@ -1,7 +1,7 @@
1
1
  import { Combobox } from "@headlessui/react";
2
2
  import Loading from "../Loading";
3
- import { useCallback, useEffect, useMemo, useState } from "react";
4
- import { defaultHelpTextClassName, defaultInputClassName, defaultLabelClassName, defaultLeadingInputClassName, defaultTrailingClassName, defaultTrailingInputClassName, UnstyledInput, } from "../Input";
3
+ import { useCallback, useEffect, useMemo, useState, } from "react";
4
+ import Input, { defaultHelpTextClassName, defaultInputClassName, defaultLabelClassName, defaultLeadingInputClassName, defaultTrailingClassName, defaultTrailingInputClassName, UnstyledInput, } from "../Input";
5
5
  import clsx from "../../utils/clsx";
6
6
  import { isEqual, take } from "lodash-es";
7
7
  import { CheckIcon, ChevronUpDownIcon } from "@heroicons/react/20/solid";
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
2
  export declare function getValue<Id extends string | number, T extends object | string>(id: Id, item: T): string | number;
3
3
  export declare function MultiSelectInput<Id extends string | number, T extends object | string>({ className, selectedItems, doRender, removeItem, valueProperty, readOnly, items, ...props }: {
4
4
  className?: string;
@@ -1,4 +1,4 @@
1
- import { ChangeEventHandler, FocusEventHandler, Ref } from "react";
1
+ import { type ChangeEventHandler, type FocusEventHandler, type Ref } from "react";
2
2
  export interface MultiTextProps {
3
3
  value?: string[];
4
4
  onChangeValue?: (value: string[]) => void;
@@ -58,7 +58,6 @@ function MultiText({ value, onChangeValue, onChange, onBlur, name, id, className
58
58
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
59
  });
60
60
  }
61
- // eslint-disable-next-line react-hooks/exhaustive-deps
62
61
  }, [innerValue]);
63
62
  return (<InputWrapper id={id} className={className} helpText={(invalid ? invalidHelpText : undefined) || helpText} label={label} error={invalid || error} required={required}>
64
63
  <div className="ui-multi-text" onClick={() => inputRef.current?.focus()} data-focused={innerFocused ? "" : undefined} data-error={invalid || error ? "" : undefined} data-loading={loading ? "" : undefined} data-readonly={readOnly ? "" : undefined}>
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
2
  export default function NavigationDrawer({ children, navigationChildren, position, title, noPadding, panelClassName, }: {
3
3
  children: ReactNode;
4
4
  navigationChildren: ReactNode;
@@ -10,20 +10,20 @@ export default function NavigationDrawer({ children, navigationChildren, positio
10
10
  navigationDrawerState.setOpen(open);
11
11
  }
12
12
  }, []);
13
- return (<>
14
- <Drawer open={isOpen} onChangeOpen={handleChangeOpen} className="lg:hidden" position={position} title={title} noPadding={noPadding} panelClassName={panelClassName}>
15
- {navigationChildren}
16
- </Drawer>
17
- <div className={clsx("fixed left-0 top-0 z-10 hidden h-full w-full max-w-xs flex-1 overflow-y-auto px-4 py-4 pt-20 lg:block", "bg-zinc-100/95 backdrop-blur-sm [@supports(backdrop-filter:blur(0))]:bg-zinc-100/75", "dark:bg-zinc-900/95 dark:[@supports(backdrop-filter:blur(0))]:bg-zinc-900/75", "transition-transform", {
13
+ return (<>
14
+ <Drawer open={isOpen} onChangeOpen={handleChangeOpen} className="lg:hidden" position={position} title={title} noPadding={noPadding} panelClassName={panelClassName}>
15
+ {navigationChildren}
16
+ </Drawer>
17
+ <div className={clsx("fixed top-0 left-0 z-10 hidden h-full w-full max-w-xs flex-1 overflow-y-auto px-4 py-4 pt-20 lg:block", "bg-zinc-100/95 backdrop-blur-sm [@supports(backdrop-filter:blur(0))]:bg-zinc-100/75", "dark:bg-zinc-900/95 dark:[@supports(backdrop-filter:blur(0))]:bg-zinc-900/75", "transition-transform", {
18
18
  "translate-x-0": isOpen,
19
19
  "-translate-x-full": !isOpen,
20
- }, panelClassName)}>
21
- {navigationChildren}
22
- </div>
20
+ }, panelClassName)}>
21
+ {navigationChildren}
22
+ </div>
23
23
  <div className={clsx("flex min-h-screen flex-col ring-offset-zinc-100 transition-all duration-300", {
24
24
  "lg:pl-80 lg:duration-150": isOpen,
25
- })}>
26
- {children}
27
- </div>
25
+ })}>
26
+ {children}
27
+ </div>
28
28
  </>);
29
29
  }
@@ -1,4 +1,4 @@
1
- import { ReactElement, ReactNode } from "react";
1
+ import { type ReactElement, type ReactNode } from "react";
2
2
  export default function NavigationItem({ icon, children, href, exact, alternativeActiveHrefs, className, disabled, active, }: {
3
3
  icon?: ReactElement<{
4
4
  className?: string;
@@ -18,7 +18,7 @@ export default function NavigationItem({ icon, children, href, exact, alternativ
18
18
  return (<Button variant={active ? "light" : "text"} color={active ? "primary" : "default"} className={clsx("w-full justify-start border-transparent", className)} leading={icon &&
19
19
  cloneElement(icon, {
20
20
  className: clsx(icon.props?.className, "w-5! mr-3"),
21
- })} href={href} onClick={isMobile ? navigationDrawerState.close : undefined} disabled={disabled}>
22
- {children}
21
+ })} href={href} onClick={isMobile ? navigationDrawerState.close : undefined} disabled={disabled}>
22
+ {children}
23
23
  </Button>);
24
24
  }
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from "react";
1
+ import React, { type ReactNode } from "react";
2
2
  export default function NoSsr({ children }: {
3
3
  children: ReactNode;
4
4
  }): React.JSX.Element | null;