@opengovsg/oui 0.0.29 → 0.0.31

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 (106) hide show
  1. package/dist/cjs/avatar/avatar-context.cjs +12 -0
  2. package/dist/cjs/avatar/avatar-group-context.cjs +88 -0
  3. package/dist/cjs/avatar/avatar-group.cjs +60 -0
  4. package/dist/cjs/avatar/avatar.cjs +132 -0
  5. package/dist/cjs/avatar/hooks/use-img-loading-status.cjs +68 -0
  6. package/dist/cjs/avatar/index.cjs +23 -0
  7. package/dist/cjs/avatar/utils.cjs +9 -0
  8. package/dist/cjs/banner/banner.cjs +1 -1
  9. package/dist/cjs/checkbox/checkbox.cjs +3 -3
  10. package/dist/cjs/combo-box/combo-box.cjs +1 -1
  11. package/dist/cjs/date-field/date-field.cjs +1 -1
  12. package/dist/cjs/date-picker/date-picker.cjs +5 -4
  13. package/dist/cjs/date-range-picker/date-range-picker.cjs +3 -3
  14. package/dist/cjs/file-dropzone/file-dropzone.cjs +12 -8
  15. package/dist/cjs/file-dropzone/file-info.cjs +3 -2
  16. package/dist/cjs/file-dropzone/utils.cjs +4 -4
  17. package/dist/cjs/hooks/use-scroll-position.cjs +53 -0
  18. package/dist/cjs/index.cjs +61 -47
  19. package/dist/cjs/modal/modal-content.cjs +1 -1
  20. package/dist/cjs/navbar/navbar-menu/menu.cjs +2 -2
  21. package/dist/cjs/navbar/navbar-menu/toggle.cjs +3 -2
  22. package/dist/cjs/navbar/navbar.cjs +25 -1
  23. package/dist/cjs/navbar/use-navbar.cjs +42 -32
  24. package/dist/cjs/node_modules/.pnpm/lucide-react@0.475.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/user.cjs +22 -0
  25. package/dist/cjs/number-field/number-field.cjs +2 -2
  26. package/dist/cjs/range-calendar/range-calendar.cjs +1 -1
  27. package/dist/cjs/select/select.cjs +2 -2
  28. package/dist/cjs/tag-field/tag-field.cjs +1 -1
  29. package/dist/cjs/text-area-field/text-area-field.cjs +1 -1
  30. package/dist/cjs/text-field/text-field.cjs +1 -1
  31. package/dist/esm/avatar/avatar-context.js +9 -0
  32. package/dist/esm/avatar/avatar-group-context.js +84 -0
  33. package/dist/esm/avatar/avatar-group.js +58 -0
  34. package/dist/esm/avatar/avatar.js +128 -0
  35. package/dist/esm/avatar/hooks/use-img-loading-status.js +66 -0
  36. package/dist/esm/avatar/index.js +13 -0
  37. package/dist/esm/avatar/utils.js +7 -0
  38. package/dist/esm/banner/banner.js +1 -1
  39. package/dist/esm/checkbox/checkbox.js +3 -3
  40. package/dist/esm/combo-box/combo-box.js +1 -1
  41. package/dist/esm/date-field/date-field.js +1 -1
  42. package/dist/esm/date-picker/date-picker.js +5 -4
  43. package/dist/esm/date-range-picker/date-range-picker.js +3 -3
  44. package/dist/esm/file-dropzone/file-dropzone.js +12 -8
  45. package/dist/esm/file-dropzone/file-info.js +3 -2
  46. package/dist/esm/file-dropzone/utils.js +4 -4
  47. package/dist/esm/hooks/use-scroll-position.js +51 -0
  48. package/dist/esm/index.js +20 -15
  49. package/dist/esm/modal/modal-content.js +1 -1
  50. package/dist/esm/navbar/navbar-menu/menu.js +2 -2
  51. package/dist/esm/navbar/navbar-menu/toggle.js +3 -2
  52. package/dist/esm/navbar/navbar.js +26 -2
  53. package/dist/esm/navbar/use-navbar.js +43 -33
  54. package/dist/esm/node_modules/.pnpm/lucide-react@0.475.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/user.js +17 -0
  55. package/dist/esm/number-field/number-field.js +2 -2
  56. package/dist/esm/range-calendar/range-calendar.js +1 -1
  57. package/dist/esm/select/select.js +2 -2
  58. package/dist/esm/tag-field/tag-field.js +1 -1
  59. package/dist/esm/text-area-field/text-area-field.js +1 -1
  60. package/dist/esm/text-field/text-field.js +1 -1
  61. package/dist/types/avatar/avatar-context.d.ts +12 -0
  62. package/dist/types/avatar/avatar-context.d.ts.map +1 -0
  63. package/dist/types/avatar/avatar-group-context.d.ts +70 -0
  64. package/dist/types/avatar/avatar-group-context.d.ts.map +1 -0
  65. package/dist/types/avatar/avatar-group.d.ts +5 -0
  66. package/dist/types/avatar/avatar-group.d.ts.map +1 -0
  67. package/dist/types/avatar/avatar.d.ts +18 -0
  68. package/dist/types/avatar/avatar.d.ts.map +1 -0
  69. package/dist/types/avatar/hooks/use-img-loading-status.d.ts +4 -0
  70. package/dist/types/avatar/hooks/use-img-loading-status.d.ts.map +1 -0
  71. package/dist/types/avatar/index.d.ts +15 -0
  72. package/dist/types/avatar/index.d.ts.map +1 -0
  73. package/dist/types/avatar/utils.d.ts +2 -0
  74. package/dist/types/avatar/utils.d.ts.map +1 -0
  75. package/dist/types/calendar/calendar.d.ts.map +1 -1
  76. package/dist/types/checkbox/checkbox-group-style-context.d.ts +1 -1
  77. package/dist/types/checkbox/checkbox-group-style-context.d.ts.map +1 -1
  78. package/dist/types/date-field/date-field.d.ts.map +1 -1
  79. package/dist/types/file-dropzone/file-dropzone.d.ts +8 -2
  80. package/dist/types/file-dropzone/file-dropzone.d.ts.map +1 -1
  81. package/dist/types/file-dropzone/file-info.d.ts.map +1 -1
  82. package/dist/types/file-dropzone/types.d.ts +1 -0
  83. package/dist/types/file-dropzone/types.d.ts.map +1 -1
  84. package/dist/types/file-dropzone/utils.d.ts +2 -1
  85. package/dist/types/file-dropzone/utils.d.ts.map +1 -1
  86. package/dist/types/hooks/use-scroll-position.d.ts +29 -0
  87. package/dist/types/hooks/use-scroll-position.d.ts.map +1 -0
  88. package/dist/types/index.d.mts +1 -0
  89. package/dist/types/index.d.ts +1 -0
  90. package/dist/types/index.d.ts.map +1 -1
  91. package/dist/types/menu/menu.d.ts.map +1 -1
  92. package/dist/types/navbar/navbar-context.d.ts +10 -2
  93. package/dist/types/navbar/navbar-context.d.ts.map +1 -1
  94. package/dist/types/navbar/navbar-menu/menu.d.ts.map +1 -1
  95. package/dist/types/navbar/navbar-menu/toggle.d.ts.map +1 -1
  96. package/dist/types/navbar/navbar.d.ts.map +1 -1
  97. package/dist/types/navbar/use-navbar.d.ts +33 -1
  98. package/dist/types/navbar/use-navbar.d.ts.map +1 -1
  99. package/dist/types/range-calendar/range-calendar.d.ts.map +1 -1
  100. package/dist/types/system/react-utils/context.d.ts +4 -4
  101. package/dist/types/system/react-utils/context.d.ts.map +1 -1
  102. package/dist/types/system/utils.d.ts.map +1 -1
  103. package/dist/types/tabs/tabs.d.ts.map +1 -1
  104. package/dist/types/tag-field/tag-field-item.d.ts.map +1 -1
  105. package/dist/types/tag-field/tag-field-list.d.ts.map +1 -1
  106. package/package.json +3 -3
@@ -1,13 +1,28 @@
1
1
  "use strict";
2
2
  "use client";
3
3
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
4
- import { FocusScope } from 'react-aria';
4
+ import { LazyMotion, domAnimation, m } from 'motion/react';
5
+ import { FocusScope, mergeProps } from 'react-aria';
5
6
  import { pickChildren } from '../system/react-utils/children.js';
6
7
  import { forwardRef } from '../system/utils.js';
7
8
  import { NavbarProvider } from './navbar-context.js';
8
9
  import { NavbarMenu } from './navbar-menu/menu.js';
9
10
  import { useNavbar } from './use-navbar.js';
10
11
 
12
+ const showOnScrollUpVariants = {
13
+ visible: {
14
+ y: 0,
15
+ transition: {
16
+ ease: [0, 0, 0.2, 1]
17
+ }
18
+ },
19
+ hidden: {
20
+ y: "-100%",
21
+ transition: {
22
+ ease: [0, 0, 0.2, 1]
23
+ }
24
+ }
25
+ };
11
26
  const Navbar = forwardRef((props, ref) => {
12
27
  const { children, ...otherProps } = props;
13
28
  const context = useNavbar({ ...otherProps, ref });
@@ -17,7 +32,16 @@ const Navbar = forwardRef((props, ref) => {
17
32
  /* @__PURE__ */ jsx("header", { ...context.getWrapperProps(), children: childrenWithoutMenu }),
18
33
  menu
19
34
  ] });
20
- return /* @__PURE__ */ jsx(NavbarProvider, { value: context, children: /* @__PURE__ */ jsx(FocusScope, { contain: context.isMenuOpen, children: /* @__PURE__ */ jsx(Component, { ...context.getBaseProps(), children: content }) }) });
35
+ return /* @__PURE__ */ jsx(NavbarProvider, { value: context, children: /* @__PURE__ */ jsx(FocusScope, { contain: context.isMenuOpen, children: context.shouldShowOnScrollUp ? /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(
36
+ m.nav,
37
+ {
38
+ animate: context.isNavbarHidden ? "hidden" : "visible",
39
+ initial: "visible",
40
+ variants: showOnScrollUpVariants,
41
+ ...mergeProps(context.getBaseProps(), context.motionProps),
42
+ children: content
43
+ }
44
+ ) }) : /* @__PURE__ */ jsx(Component, { ...context.getBaseProps(), children: content }) }) });
21
45
  });
22
46
  Navbar.displayName = "Navbar";
23
47
 
@@ -1,27 +1,33 @@
1
1
  "use strict";
2
2
  "use client";
3
- import { useRef, useCallback, useEffect } from 'react';
3
+ import { useRef, useCallback, useState, useEffect } from 'react';
4
4
  import { usePreventScroll as $49c51c25361d4cd2$export$ee0f7cc6afcd1c18 } from '../node_modules/.pnpm/@react-aria_overlays@3.30.0_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@react-aria/overlays/dist/usePreventScroll.js';
5
5
  import { useResizeObserver, mergeProps } from '@react-aria/utils';
6
6
  import { useControlledState } from '@react-stately/utils';
7
- import { useDeepCompareMemo } from 'use-deep-compare';
8
7
  import { navbarStyles, cn, dataAttr } from '@opengovsg/oui-theme';
8
+ import { useScrollPosition } from '../hooks/use-scroll-position.js';
9
9
  import { mapPropsVariants } from '../system/utils.js';
10
10
  import { useDomRef } from '../system/react-utils/refs.js';
11
11
 
12
+ const NAVBAR_PRESENCE_BUFFER = 10;
12
13
  function useNavbar(originalProps) {
13
14
  const [
14
15
  {
15
16
  ref,
16
17
  as,
18
+ parentRef,
17
19
  height = "4rem",
18
20
  shouldBlockScroll = true,
21
+ shouldShowOnScrollUp = false,
22
+ disableScrollHandler = false,
23
+ onScrollPositionChange,
19
24
  isMenuOpen: isMenuOpenProp,
20
25
  isMenuDefaultOpen,
21
26
  onMenuOpenChange = () => {
22
27
  },
23
28
  className,
24
29
  classNames,
30
+ motionProps,
25
31
  ...otherProps
26
32
  },
27
33
  variantProps
@@ -29,62 +35,62 @@ function useNavbar(originalProps) {
29
35
  const Component = as || "nav";
30
36
  const domRef = useDomRef(ref);
31
37
  const menuRef = useRef(null);
32
- const prevWidth = useRef(0);
33
- const navHeight = useRef(0);
34
38
  const handleMenuOpenChange = useCallback(
35
39
  (isOpen) => {
36
40
  onMenuOpenChange(isOpen || false);
37
41
  },
38
42
  [onMenuOpenChange]
39
43
  );
44
+ const [menuTopOffset, setMenuOffset] = useState(0);
45
+ const [isNavbarHidden, setIsNavbarHidden] = useState(false);
40
46
  const [isMenuOpen, setIsMenuOpen] = useControlledState(
41
47
  isMenuOpenProp,
42
48
  isMenuDefaultOpen ?? false,
43
49
  handleMenuOpenChange
44
50
  );
45
- const updateWidth = useCallback(() => {
46
- if (domRef.current) {
47
- const width = domRef.current.offsetWidth;
48
- if (width !== prevWidth.current) {
49
- prevWidth.current = width;
50
- }
51
- }
52
- }, [domRef]);
53
51
  $49c51c25361d4cd2$export$ee0f7cc6afcd1c18({
54
52
  isDisabled: !(shouldBlockScroll && isMenuOpen)
55
53
  });
56
54
  useResizeObserver({
57
55
  ref: domRef,
58
56
  onResize: () => {
59
- const currentWidth = domRef.current?.offsetWidth;
60
- const scrollWidth = window.innerWidth - document.documentElement.clientWidth;
61
- if (currentWidth && currentWidth + scrollWidth == prevWidth.current) {
62
- return;
63
- }
64
- if (currentWidth !== prevWidth.current) {
65
- updateWidth();
66
- setIsMenuOpen(false);
67
- }
57
+ setMenuOffset(domRef.current?.getBoundingClientRect().top || 0);
68
58
  }
69
59
  });
60
+ const truePosition = variantProps.position ?? "sticky";
61
+ const positionVariantProp = shouldShowOnScrollUp ? "sticky" : truePosition;
62
+ const slots = navbarStyles({
63
+ ...variantProps,
64
+ position: positionVariantProp
65
+ });
66
+ const baseStyles = cn(classNames?.base, className);
67
+ const navHeight = useRef(0);
70
68
  useEffect(() => {
71
- updateWidth();
72
69
  navHeight.current = domRef.current?.offsetHeight || 0;
73
- }, [domRef, updateWidth]);
74
- const slots = useDeepCompareMemo(
75
- () => navbarStyles({
76
- ...variantProps
77
- }),
78
- [variantProps]
79
- );
80
- const baseStyles = cn(classNames?.base, className);
70
+ }, [domRef]);
71
+ useScrollPosition({
72
+ elementRef: parentRef,
73
+ isEnabled: shouldShowOnScrollUp || !disableScrollHandler,
74
+ callback: ({ prevPos, currPos }) => {
75
+ onScrollPositionChange?.(currPos.y);
76
+ if (shouldShowOnScrollUp) {
77
+ setIsNavbarHidden((prev) => {
78
+ const next = currPos.y > prevPos.y + NAVBAR_PRESENCE_BUFFER && currPos.y > navHeight.current;
79
+ return next !== prev ? next : prev;
80
+ });
81
+ }
82
+ }
83
+ });
84
+ const heightPx = typeof height === "number" ? `${height}px` : height;
85
+ const menuTopOffsetPx = `calc(${heightPx} + ${menuTopOffset}px)`;
81
86
  const getBaseProps = (props = {}) => ({
82
87
  ...mergeProps(otherProps, props),
88
+ "data-hidden": dataAttr(isNavbarHidden),
83
89
  "data-menu-open": dataAttr(isMenuOpen),
84
90
  ref: domRef,
85
91
  className: slots.base({ class: cn(baseStyles, props?.className) }),
86
92
  style: {
87
- "--navbar-height": typeof height === "number" ? `${height}px` : height,
93
+ "--navbar-height": heightPx,
88
94
  ...otherProps?.style,
89
95
  ...props?.style
90
96
  }
@@ -100,14 +106,18 @@ function useNavbar(originalProps) {
100
106
  Component,
101
107
  slots,
102
108
  domRef,
103
- height,
109
+ menuTopOffset,
110
+ menuTopOffsetPx,
111
+ isNavbarHidden,
112
+ shouldShowOnScrollUp: shouldShowOnScrollUp && truePosition === "static",
104
113
  isMenuOpen,
105
114
  classNames,
106
115
  setIsMenuOpen,
107
116
  menuRef,
108
117
  getBaseProps,
109
118
  getWrapperProps,
110
- position: variantProps.position ?? "sticky"
119
+ position: positionVariantProp,
120
+ motionProps
111
121
  };
112
122
  }
113
123
 
@@ -0,0 +1,17 @@
1
+ import createLucideIcon from '../createLucideIcon.js';
2
+
3
+ /**
4
+ * @license lucide-react v0.475.0 - ISC
5
+ *
6
+ * This source code is licensed under the ISC license.
7
+ * See the LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+
11
+ const __iconNode = [
12
+ ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
13
+ ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
14
+ ];
15
+ const User = createLucideIcon("User", __iconNode);
16
+
17
+ export { __iconNode, User as default };
@@ -3,12 +3,12 @@
3
3
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
4
  import { NumberField as NumberField$1 } from 'react-aria-components';
5
5
  import { numberFieldStyles, composeTailwindRenderProps, dataAttr, fieldBorderStyles, cn } from '@opengovsg/oui-theme';
6
+ import { Button } from '../button/button.js';
7
+ import { Label, FieldGroup, Description, FieldError } from '../field/field.js';
6
8
  import { Input } from '../input/input.js';
7
9
  import { mapPropsVariants } from '../system/utils.js';
8
10
  import Minus from '../node_modules/.pnpm/lucide-react@0.475.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/minus.js';
9
11
  import Plus from '../node_modules/.pnpm/lucide-react@0.475.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/plus.js';
10
- import { Label, FieldGroup, Description, FieldError } from '../field/field.js';
11
- import { Button } from '../button/button.js';
12
12
 
13
13
  function NumberField(originalProps) {
14
14
  const [
@@ -6,12 +6,12 @@ import { CalendarDate, today, getLocalTimeZone, getDayOfWeek } from '@internatio
6
6
  import { RangeCalendar as RangeCalendar$1, Provider, CalendarGrid, CalendarGridBody, Text, RangeCalendarStateContext, useLocale, CalendarCell } from 'react-aria-components';
7
7
  import { useDeepCompareMemo } from 'use-deep-compare';
8
8
  import { calendarStyles, composeRenderProps, cn, dataAttr } from '@opengovsg/oui-theme';
9
+ import { CalendarStyleContext, useCalendarStyleContext } from '../calendar/calendar-style-context.js';
9
10
  import { AgnosticCalendarStateContext } from '../calendar/agnostic-calendar-state-context.js';
10
11
  import { CalendarBottomContent } from '../calendar/calendar-bottom-content.js';
11
12
  import { CalendarGridHeader } from '../calendar/calendar-grid-header.js';
12
13
  import { CalendarHeader } from '../calendar/calendar-header.js';
13
14
  import { forwardRefGeneric, mapPropsVariants } from '../system/utils.js';
14
- import { CalendarStyleContext, useCalendarStyleContext } from '../calendar/calendar-style-context.js';
15
15
 
16
16
  const RangeCalendar = forwardRefGeneric(function RangeCalendar2(originalProps, ref) {
17
17
  const [props, variantProps] = mapPropsVariants(
@@ -4,12 +4,12 @@ import { jsx, jsxs } from 'react/jsx-runtime';
4
4
  import { useMemo } from 'react';
5
5
  import { Provider, Select as Select$1, SelectValue, Virtualizer, ListLayout, ListBox } from 'react-aria-components';
6
6
  import { selectStyles, composeRenderProps } from '@opengovsg/oui-theme';
7
+ import { Button } from '../button/button.js';
8
+ import { Label, Description, FieldError } from '../field/field.js';
7
9
  import { Popover } from '../popover/popover.js';
8
10
  import { mapPropsVariants } from '../system/utils.js';
9
11
  import { SelectVariantContext } from './select-variant-context.js';
10
- import { Label, Description, FieldError } from '../field/field.js';
11
12
  import ChevronDown from '../node_modules/.pnpm/lucide-react@0.475.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/chevron-down.js';
12
- import { Button } from '../button/button.js';
13
13
 
14
14
  const calculateEstimatedRowHeight = (size) => {
15
15
  switch (size) {
@@ -4,6 +4,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import { createElement } from 'react';
5
5
  import { composeRenderProps } from 'react-aria-components';
6
6
  import { tagFieldStyles } from '@opengovsg/oui-theme';
7
+ import { Label, FieldGroup, Description, FieldError } from '../field/field.js';
7
8
  import { Input } from '../input/input.js';
8
9
  import { Popover } from '../popover/popover.js';
9
10
  import { TagFieldItem } from './tag-field-item.js';
@@ -12,7 +13,6 @@ import { TagFieldRoot } from './tag-field-root.js';
12
13
  import { TagFieldTagList } from './tag-field-tag-list.js';
13
14
  import { TagFieldTrigger } from './tag-field-trigger.js';
14
15
  import ChevronDown from '../node_modules/.pnpm/lucide-react@0.475.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/chevron-down.js';
15
- import { Label, FieldGroup, Description, FieldError } from '../field/field.js';
16
16
 
17
17
  function TagField({
18
18
  classNames,
@@ -3,8 +3,8 @@
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import { TextField } from 'react-aria-components';
5
5
  import { composeTailwindRenderProps } from '@opengovsg/oui-theme';
6
- import { TextArea } from '../text-area/text-area.js';
7
6
  import { Label, Description, FieldError } from '../field/field.js';
7
+ import { TextArea } from '../text-area/text-area.js';
8
8
 
9
9
  function TextAreaField({
10
10
  label,
@@ -3,8 +3,8 @@
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import { TextField as TextField$1 } from 'react-aria-components';
5
5
  import { composeTailwindRenderProps } from '@opengovsg/oui-theme';
6
- import { Input } from '../input/input.js';
7
6
  import { Label, Description, FieldError } from '../field/field.js';
7
+ import { Input } from '../input/input.js';
8
8
 
9
9
  function TextField({
10
10
  label,
@@ -0,0 +1,12 @@
1
+ import type { AvatarSlots, avatarStyles, SlotsToClasses } from "@opengovsg/oui-theme";
2
+ import type { ImageLoadingStatus } from "./hooks/use-img-loading-status";
3
+ export interface UseAvatarContextReturn {
4
+ imageLoadingStatus: ImageLoadingStatus;
5
+ setImageLoadingStatus: React.Dispatch<React.SetStateAction<ImageLoadingStatus>>;
6
+ slots: ReturnType<typeof avatarStyles>;
7
+ classNames?: SlotsToClasses<AvatarSlots>;
8
+ name?: string;
9
+ getInitials: (name: string) => string;
10
+ }
11
+ export declare const AvatarContext: import("react").Context<UseAvatarContextReturn>, useAvatarContext: () => UseAvatarContextReturn;
12
+ //# sourceMappingURL=avatar-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-context.d.ts","sourceRoot":"","sources":["../../../src/avatar/avatar-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAGxE,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,qBAAqB,EAAE,KAAK,CAAC,QAAQ,CACnC,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CACzC,CAAA;IACD,KAAK,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;IACtC,UAAU,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAA;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACtC;AACD,eAAO,MAAO,aAAa,mDAAE,gBAAgB,8BAIzC,CAAA"}
@@ -0,0 +1,70 @@
1
+ import type { ReactNode } from "react";
2
+ import type { AvatarGroupSlots, AvatarGroupVariantProps, AvatarVariantProps, SlotsToClasses } from "@opengovsg/oui-theme";
3
+ import type { ReactRef } from "../system/react-utils";
4
+ import type { HtmlUiProps, PropGetter } from "../system/types";
5
+ import type { AvatarProps } from "./index";
6
+ export type UseAvatarGroupContextReturn = {
7
+ size?: UseAvatarGroupProps["size"];
8
+ color?: UseAvatarGroupProps["color"];
9
+ radius?: UseAvatarGroupProps["radius"];
10
+ prominence?: UseAvatarGroupProps["prominence"];
11
+ };
12
+ export declare const AvatarGroupProvider: import("react").Context<UseAvatarGroupContextReturn | undefined>, useAvatarGroupContext: () => UseAvatarGroupContextReturn | undefined;
13
+ export interface UseAvatarGroupProps extends HtmlUiProps<"div">, AvatarGroupVariantProps, Pick<AvatarVariantProps, "size" | "color" | "prominence" | "radius"> {
14
+ /**
15
+ * Ref to the DOM node.
16
+ */
17
+ ref?: ReactRef<HTMLDivElement | null>;
18
+ /**
19
+ * The maximum number of visible avatars
20
+ * @default 5
21
+ */
22
+ max?: number;
23
+ /**
24
+ * Control the number of avatar not visible
25
+ */
26
+ total?: number;
27
+ /**
28
+ * This allows you to render a custom count component.
29
+ */
30
+ renderCount?: (count: number) => ReactNode;
31
+ /**
32
+ * Props to be passed to the count component.
33
+ */
34
+ countProps?: Partial<AvatarProps>;
35
+ /**
36
+ * Classname or List of classes to change the classNames of the avatar group.
37
+ * if `className` is passed, it will be added to the base slot.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * <AvatarGroup classNames={{
42
+ * base: "base-classes",
43
+ * count: "count-classes"
44
+ * }} />
45
+ * ```
46
+ */
47
+ classNames?: SlotsToClasses<AvatarGroupSlots>;
48
+ }
49
+ export declare function useAvatarGroup(props?: UseAvatarGroupProps): {
50
+ Component: import("../system/types").As<any>;
51
+ context: UseAvatarGroupContextReturn;
52
+ remainingCount: number;
53
+ clones: import("react").DetailedReactHTMLElement<import("react").HTMLAttributes<HTMLElement>, HTMLElement>[];
54
+ renderCount: ((count: number) => ReactNode) | undefined;
55
+ getAvatarGroupProps: PropGetter;
56
+ getAvatarGroupCountProps: () => {
57
+ classNames?: SlotsToClasses<import("@opengovsg/oui-theme").AvatarSlots>;
58
+ className: string;
59
+ name?: string;
60
+ getInitials?: (name: string) => string;
61
+ size?: "md" | "sm" | "xs" | "2xs" | undefined;
62
+ color?: "white" | "primary" | undefined;
63
+ radius?: "none" | "lg" | "md" | "sm" | "full" | undefined;
64
+ prominence?: "subtle" | "strong" | undefined;
65
+ isInGroup?: boolean | undefined;
66
+ children?: ReactNode | undefined;
67
+ };
68
+ };
69
+ export type UseAvatarReturn = ReturnType<typeof useAvatarGroup>;
70
+ //# sourceMappingURL=avatar-group-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-group-context.d.ts","sourceRoot":"","sources":["../../../src/avatar/avatar-group-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACf,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAClC,KAAK,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IACtC,UAAU,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;CAC/C,CAAA;AAED,eAAO,MAAO,mBAAmB,oEAAE,qBAAqB,+CAMtD,CAAA;AAEF,MAAM,WAAW,mBACf,SAAQ,WAAW,CAAC,KAAK,CAAC,EACxB,uBAAuB,EACvB,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;IACtE;;OAEG;IACH,GAAG,CAAC,EAAE,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACrC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;IAE1C;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAEjC;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAA;CAC9C;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,mBAAwB;;;;;0BAtBtC,MAAM,KAAK,SAAS;;;;;;;;;;;;;;EAyG3C;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { UseAvatarGroupProps } from "./avatar-group-context";
2
+ export interface AvatarGroupProps extends UseAvatarGroupProps {
3
+ }
4
+ export declare const AvatarGroup: import("../system/utils").InternalForwardRefRenderFunction<"div", AvatarGroupProps, never>;
5
+ //# sourceMappingURL=avatar-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-group.d.ts","sourceRoot":"","sources":["../../../src/avatar/avatar-group.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAMjE,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;CAAG;AAEhE,eAAO,MAAM,WAAW,4FAoDtB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import type { PropsWithChildren } from "react";
2
+ import type { AvatarSlots, AvatarVariantProps, SlotsToClasses } from "@opengovsg/oui-theme";
3
+ export interface AvatarProps extends AvatarVariantProps, PropsWithChildren {
4
+ classNames?: SlotsToClasses<AvatarSlots>;
5
+ className?: string;
6
+ name?: string;
7
+ getInitials?: (name: string) => string;
8
+ }
9
+ export declare const AvatarRoot: import("../system/utils").InternalForwardRefRenderFunction<"span", AvatarProps, never>;
10
+ export interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
11
+ src?: string;
12
+ }
13
+ export declare const AvatarImage: import("../system/utils").InternalForwardRefRenderFunction<"img", AvatarImageProps, never>;
14
+ export interface AvatarFallbackProps {
15
+ children?: React.ReactNode;
16
+ }
17
+ export declare const AvatarFallback: import("../system/utils").InternalForwardRefRenderFunction<"div", AvatarFallbackProps, never>;
18
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/avatar/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAK9C,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,cAAc,EACf,MAAM,sBAAsB,CAAA;AAW7B,MAAM,WAAW,WAAY,SAAQ,kBAAkB,EAAE,iBAAiB;IACxE,UAAU,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAA;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACvC;AAED,eAAO,MAAM,UAAU,wFA8DtB,CAAA;AAED,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IACjD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,WAAW,4FA8BvB,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AACD,eAAO,MAAM,cAAc,+FAiC1B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { ComponentPropsWithoutRef } from "react";
2
+ export type ImageLoadingStatus = "idle" | "loading" | "loaded" | "error";
3
+ export declare function useImageLoadingStatus(src: string | undefined, { referrerPolicy, crossOrigin }: ComponentPropsWithoutRef<"img">): ImageLoadingStatus;
4
+ //# sourceMappingURL=use-img-loading-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-img-loading-status.d.ts","sourceRoot":"","sources":["../../../../src/avatar/hooks/use-img-loading-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAGrD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;AAiCxE,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,wBAAwB,CAAC,KAAK,CAAC,sBA6CjE"}
@@ -0,0 +1,15 @@
1
+ import { AvatarFallback, AvatarImage, AvatarRoot } from "./avatar";
2
+ export type { AvatarFallbackProps, AvatarImageProps, AvatarProps, } from "./avatar";
3
+ export declare const Avatar: import("../system/utils").InternalForwardRefRenderFunction<"span", import("./avatar").AvatarProps, never> & {
4
+ Root: import("../system/utils").InternalForwardRefRenderFunction<"span", import("./avatar").AvatarProps, never>;
5
+ Image: import("../system/utils").InternalForwardRefRenderFunction<"img", import("./avatar").AvatarImageProps, never>;
6
+ Fallback: import("../system/utils").InternalForwardRefRenderFunction<"div", import("./avatar").AvatarFallbackProps, never>;
7
+ };
8
+ export { AvatarRoot, AvatarImage, AvatarFallback };
9
+ export { AvatarContext, useAvatarContext } from "./avatar-context";
10
+ export type { UseAvatarContextReturn } from "./avatar-context";
11
+ export { AvatarGroup } from "./avatar-group";
12
+ export type { AvatarGroupProps } from "./avatar-group";
13
+ export { AvatarGroupProvider, useAvatarGroup } from "./avatar-group-context";
14
+ export type { UseAvatarGroupContextReturn, UseAvatarGroupProps, } from "./avatar-group-context";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/avatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAElE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAEjB,eAAO,MAAM,MAAM;;;;CAIjB,CAAA;AAGF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA;AAGlD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,YAAY,EACV,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const getInitialsFromText: (text: string, limit?: number) => string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/avatar/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,SAAU,MAAM,qBAAc,MAU7D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/calendar/calendar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAiBtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAQ5C,eAAO,MAAM,QAAQ,GACnB,CAAC,SAAS,SAAS,8EAqCC,MAAO,SAyF3B,CAAA;AAEF,eAAO,MAAM,oBAAoB,kBAE9B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,4CAQA,CAAA"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/calendar/calendar.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAiBtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAQ5C,eAAO,MAAM,QAAQ,GACnB,CAAC,SAAS,SAAS,8EAmCyB,MAAO,SA2FnD,CAAA;AAEF,eAAO,MAAM,oBAAoB,kBAE9B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,4CAQA,CAAA"}
@@ -2,5 +2,5 @@ import type { CheckboxProps } from "./checkbox";
2
2
  export interface UseProvideCheckboxGroupStylesReturn {
3
3
  size: CheckboxProps["size"];
4
4
  }
5
- export declare const CheckboxGroupStyleContext: import("react").Context<UseProvideCheckboxGroupStylesReturn>, useCheckboxGroupStyleContext: () => UseProvideCheckboxGroupStylesReturn;
5
+ export declare const CheckboxGroupStyleContext: import("react").Context<UseProvideCheckboxGroupStylesReturn | undefined>, useCheckboxGroupStyleContext: () => UseProvideCheckboxGroupStylesReturn | undefined;
6
6
  //# sourceMappingURL=checkbox-group-style-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-group-style-context.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox-group-style-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC5B;AAED,eAAO,MAAO,yBAAyB,gEAAE,4BAA4B,2CAOjE,CAAA"}
1
+ {"version":3,"file":"checkbox-group-style-context.d.ts","sourceRoot":"","sources":["../../../src/checkbox/checkbox-group-style-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC5B;AAED,eAAO,MAAO,yBAAyB,4EAAE,4BAA4B,uDAOjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"date-field.d.ts","sourceRoot":"","sources":["../../../src/date-field/date-field.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,IAAI,kBAAkB,EACpC,cAAc,IAAI,kBAAkB,EACpC,SAAS,EACT,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAIL,eAAe,EACf,eAAe,EAChB,MAAM,sBAAsB,CAAA;AAK7B,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS,CAC1C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAA;IAClE,UAAU,CAAC,EAAE,cAAc,CACzB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,CACrD,CAAA;IACD,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3C,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,2CAmDjC;AAED,UAAU,cACR,SAAQ,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAC1C,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAA;IAClE,UAAU,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAC5C;AAED,wBAAgB,SAAS,CAAC,aAAa,EAAE,cAAc,2CA+BtD"}
1
+ {"version":3,"file":"date-field.d.ts","sourceRoot":"","sources":["../../../src/date-field/date-field.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,IAAI,kBAAkB,EACpC,cAAc,IAAI,kBAAkB,EACpC,SAAS,EACT,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAGL,eAAe,EACf,eAAe,EAChB,MAAM,sBAAsB,CAAA;AAK7B,UAAU,cAAc,CAAC,CAAC,SAAS,SAAS,CAC1C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAA;IAClE,UAAU,CAAC,EAAE,cAAc,CACzB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,CACrD,CAAA;IACD,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3C,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,2CAmDjC;AAED,UAAU,cACR,SAAQ,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAC1C,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAA;IAClE,UAAU,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAC5C;AAED,wBAAgB,SAAS,CAAC,aAAa,EAAE,cAAc,2CA+BtD"}
@@ -29,12 +29,18 @@ export interface FileDropzoneProps extends Omit<AriaFieldProps, "validate">, Inp
29
29
  */
30
30
  allowedMimeTypes?: string[];
31
31
  /**
32
- * Maximum upload size of each file allowed in bytes. (e.g 1000 bytes = 1 KB)
32
+ * File size base system: binary or decimal.
33
+ *
34
+ * Defaults to binary (1 KB = 1024 bytes), vs. decimal (1 KB = 1000 bytes)
35
+ */
36
+ fileSizeBase?: "binary" | "decimal";
37
+ /**
38
+ * Maximum upload size of each file allowed in bytes.
33
39
  * @default Number.POSITIVE_INFINITY
34
40
  */
35
41
  maxFileSize?: number;
36
42
  /**
37
- * Minimum upload size of each file allowed in bytes. (e.g 1000 bytes = 1 KB)
43
+ * Minimum upload size of each file allowed in bytes.
38
44
  * @default 0
39
45
  */
40
46
  minFileSize?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"file-dropzone.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/file-dropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,gBAAgB,CAAA;AAe/E,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAY,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAavC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EACtC,SAAS,EACT,UAAU,CAAC,QAAQ,EAAE,CAAC,EACtB,YAAY,CAAC,OAAO,kBAAkB,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAE9B,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACxC,UAAU,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAA;IACtD,sCAAsC;IACtC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;IAClB,wCAAwC;IACxC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAA;IACzB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAA;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAA;IAC9C;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAA;IAE5D;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;CACxC;AAED,eAAO,MAAM,YAAY,kBAAmB,iBAAiB,4CAwQ5D,CAAA"}
1
+ {"version":3,"file":"file-dropzone.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/file-dropzone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,gBAAgB,CAAA;AAe/E,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAY,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAavC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EACtC,SAAS,EACT,UAAU,CAAC,QAAQ,EAAE,CAAC,EACtB,YAAY,CAAC,OAAO,kBAAkB,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAE9B,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACxC,UAAU,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAA;IACtD,sCAAsC;IACtC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;IAClB,wCAAwC;IACxC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAA;IACzB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAA;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAEnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAA;IAC9C;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAA;IAE5D;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;CACxC;AAED,eAAO,MAAM,YAAY,kBAAmB,iBAAiB,4CA4Q5D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-info.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/file-info.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAQvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAA;IACd,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;IACvC,UAAU,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAA;CACnD;AAED,eAAO,MAAM,QAAQ,uCAAwC,aAAa,4CA0HzE,CAAA"}
1
+ {"version":3,"file":"file-info.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/file-info.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAQvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAA;IACd,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;IACvC,UAAU,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAA;CACnD;AAED,eAAO,MAAM,QAAQ,uCAAwC,aAAa,4CA2HzE,CAAA"}
@@ -8,6 +8,7 @@ export interface FileDropzoneState extends Omit<DropzoneState, "getInputProps">
8
8
  isReadOnly?: boolean;
9
9
  inputProps: ReturnType<DropzoneState["getInputProps"]>;
10
10
  triggerFileSelector: () => void | null;
11
+ fileSizeBase: "binary" | "decimal";
11
12
  maxFiles: number;
12
13
  maxFileSize: number;
13
14
  showDropzone: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9D,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAA;AAE7B,MAAM,WAAW,QAAS,SAAQ,IAAI;IACpC,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAA;IACtD,mBAAmB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAA;CAC1C;AAED,MAAM,WAAW,8BACf,SAAQ,wBAAwB;IAChC,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;IAC5C,UAAU,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAA;CACvD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9D,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAA;AAE7B,MAAM,WAAW,QAAS,SAAQ,IAAI;IACpC,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAA;IACtD,mBAAmB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;IACtC,YAAY,EAAE,QAAQ,GAAG,SAAS,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAA;CAC1C;AAED,MAAM,WAAW,8BACf,SAAQ,wBAAwB;IAChC,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;IAC5C,UAAU,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAA;CACvD"}
@@ -1,8 +1,9 @@
1
1
  import type { FileRejection } from "react-dropzone";
2
- export declare const formatBytes: (bytes: number, decimals?: number, size?: "bytes" | "KB" | "MB" | "GB" | "TB" | "PB" | "EB" | "ZB" | "YB") => string;
2
+ export declare const formatBytes: (bytes: number, decimals?: number, base?: "binary" | "decimal", size?: "bytes" | "KB" | "MB" | "GB" | "TB" | "PB" | "EB" | "ZB" | "YB") => string;
3
3
  export declare const formatErrorMessage: (error: FileRejection["errors"][number], config: {
4
4
  maxFileSize: number;
5
5
  minFileSize: number;
6
6
  maxFiles: number;
7
+ fileSizeBase: "binary" | "decimal";
7
8
  }) => string;
8
9
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,eAAO,MAAM,WAAW,UACf,MAAM,4BAEN,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,WAavE,CAAA;AAED,eAAO,MAAM,kBAAkB,UACtB,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAC9B;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,WAgBvE,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/file-dropzone/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAGnD,eAAO,MAAM,WAAW,UACf,MAAM,4BAEP,QAAQ,GAAG,SAAS,SACnB,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,WAavE,CAAA;AAED,eAAO,MAAM,kBAAkB,UACtB,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAC9B;IACN,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,QAAQ,GAAG,SAAS,CAAA;CACnC,WAgBF,CAAA"}
@@ -0,0 +1,29 @@
1
+ export type ScrollValue = {
2
+ x: number;
3
+ y: number;
4
+ };
5
+ export interface UseScrollPositionOptions {
6
+ /**
7
+ * The wait time in milliseconds before triggering the callback.
8
+ * @default 30
9
+ */
10
+ delay?: number;
11
+ /**
12
+ * Whether the scroll position should be tracked or not.
13
+ * @default true
14
+ */
15
+ isEnabled?: boolean;
16
+ /**
17
+ * The element to track the scroll position for.
18
+ */
19
+ elementRef?: React.RefObject<HTMLElement> | null;
20
+ /**
21
+ * The callback function to be called when the scroll position changes.
22
+ */
23
+ callback?: ({ prevPos, currPos, }: {
24
+ prevPos: ScrollValue;
25
+ currPos: ScrollValue;
26
+ }) => void;
27
+ }
28
+ export declare const useScrollPosition: (props: UseScrollPositionOptions) => ScrollValue;
29
+ //# sourceMappingURL=use-scroll-position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-scroll-position.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-scroll-position.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAalD,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;IAChD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EACV,OAAO,EACP,OAAO,GACR,EAAE;QACD,OAAO,EAAE,WAAW,CAAA;QACpB,OAAO,EAAE,WAAW,CAAA;KACrB,KAAK,IAAI,CAAA;CACX;AAED,eAAO,MAAM,iBAAiB,UACrB,wBAAwB,KAC9B,WAiDF,CAAA"}
@@ -30,4 +30,5 @@ export * from "./number-field";
30
30
  export * from "./modal";
31
31
  export * from "./toast";
32
32
  export * from "./navbar";
33
+ export * from "./avatar";
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -30,4 +30,5 @@ export * from "./number-field";
30
30
  export * from "./modal";
31
31
  export * from "./toast";
32
32
  export * from "./navbar";
33
+ export * from "./avatar";
33
34
  //# sourceMappingURL=index.d.ts.map