@opengovsg/oui 0.0.23 → 0.0.25

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 (148) hide show
  1. package/dist/cjs/badge/badge.cjs +4 -4
  2. package/dist/cjs/badge/use-badge.cjs +6 -6
  3. package/dist/cjs/banner/banner.cjs +3 -3
  4. package/dist/cjs/button/button.cjs +3 -3
  5. package/dist/cjs/calendar/calendar-bottom-content.cjs +3 -3
  6. package/dist/cjs/calendar/calendar-header.cjs +2 -2
  7. package/dist/cjs/calendar/calendar-month-day-selector.cjs +2 -2
  8. package/dist/cjs/calendar/calendar.cjs +4 -4
  9. package/dist/cjs/calendar/hooks/use-calendar-selectors.cjs +4 -4
  10. package/dist/cjs/calendar/utils.cjs +3 -3
  11. package/dist/cjs/checkbox/checkbox.cjs +1 -1
  12. package/dist/cjs/combo-box/combo-box-fuzzy.cjs +6 -6
  13. package/dist/cjs/combo-box/combo-box-item.cjs +2 -2
  14. package/dist/cjs/combo-box/combo-box.cjs +5 -5
  15. package/dist/cjs/date-field/date-field.cjs +4 -4
  16. package/dist/cjs/date-picker/date-picker.cjs +7 -6
  17. package/dist/cjs/date-range-picker/date-range-picker.cjs +7 -7
  18. package/dist/cjs/field/field.cjs +2 -2
  19. package/dist/cjs/file-dropzone/file-dropzone.cjs +12 -12
  20. package/dist/cjs/file-dropzone/file-info.cjs +3 -3
  21. package/dist/cjs/govt-banner/govt-banner.cjs +3 -3
  22. package/dist/cjs/hooks/index.cjs +2 -0
  23. package/dist/cjs/hooks/use-callback-ref.cjs +4 -4
  24. package/dist/cjs/hooks/use-controllable-state.cjs +2 -2
  25. package/dist/cjs/hooks/use-draggable.cjs +88 -0
  26. package/dist/cjs/index.cjs +54 -39
  27. package/dist/cjs/input/input.cjs +2 -2
  28. package/dist/cjs/menu/menu.cjs +7 -7
  29. package/dist/cjs/modal/i18n.cjs +19 -0
  30. package/dist/cjs/modal/index.cjs +19 -0
  31. package/dist/cjs/modal/modal-body.cjs +26 -0
  32. package/dist/cjs/modal/modal-content.cjs +54 -0
  33. package/dist/cjs/modal/modal-footer.cjs +27 -0
  34. package/dist/cjs/modal/modal-header.cjs +25 -0
  35. package/dist/cjs/modal/modal-variant-context.cjs +13 -0
  36. package/dist/cjs/modal/modal.cjs +66 -0
  37. package/dist/cjs/node_modules/.pnpm/lucide-react@0.475.0_react@19.0.0/node_modules/lucide-react/dist/esm/Icon.cjs +4 -4
  38. package/dist/cjs/node_modules/.pnpm/lucide-react@0.475.0_react@19.0.0/node_modules/lucide-react/dist/esm/createLucideIcon.cjs +3 -3
  39. package/dist/cjs/number-field/number-field.cjs +2 -2
  40. package/dist/cjs/pagination/hooks/use-pagination.cjs +7 -7
  41. package/dist/cjs/pagination/pagination.cjs +6 -6
  42. package/dist/cjs/pagination/use-pagination-item.cjs +7 -8
  43. package/dist/cjs/pagination/use-pagination.cjs +8 -8
  44. package/dist/cjs/range-calendar/range-calendar.cjs +7 -7
  45. package/dist/cjs/ripple/use-ripple.cjs +4 -4
  46. package/dist/cjs/select/select.cjs +4 -4
  47. package/dist/cjs/spinner/use-spinner.cjs +3 -3
  48. package/dist/cjs/system/react-utils/context.cjs +3 -3
  49. package/dist/cjs/system/react-utils/refs.cjs +3 -3
  50. package/dist/cjs/system/utils.cjs +3 -3
  51. package/dist/cjs/tabs/tabs.cjs +2 -2
  52. package/dist/cjs/tag-field/tag-field-item.cjs +2 -2
  53. package/dist/cjs/tag-field/tag-field-list.cjs +4 -4
  54. package/dist/cjs/tag-field/tag-field-root.cjs +14 -14
  55. package/dist/cjs/tag-field/tag-field-state-context.cjs +2 -2
  56. package/dist/cjs/tag-field/tag-field-tag-list.cjs +3 -3
  57. package/dist/cjs/tag-field/tag-field-trigger.cjs +2 -2
  58. package/dist/cjs/tag-field/tag-field.cjs +5 -5
  59. package/dist/cjs/tag-field/use-tag-field-state.cjs +6 -6
  60. package/dist/cjs/tag-field/use-tag-field.cjs +4 -4
  61. package/dist/cjs/text-area/text-area.cjs +2 -2
  62. package/dist/cjs/text-area-field/text-area-field.cjs +1 -1
  63. package/dist/cjs/text-field/text-field.cjs +1 -1
  64. package/dist/cjs/toggle/toggle.cjs +3 -3
  65. package/dist/esm/checkbox/checkbox.js +1 -1
  66. package/dist/esm/combo-box/combo-box.js +2 -2
  67. package/dist/esm/date-field/date-field.js +1 -1
  68. package/dist/esm/date-picker/date-picker.js +5 -4
  69. package/dist/esm/date-range-picker/date-range-picker.js +4 -4
  70. package/dist/esm/file-dropzone/file-dropzone.js +2 -2
  71. package/dist/esm/hooks/index.js +1 -0
  72. package/dist/esm/hooks/use-draggable.js +86 -0
  73. package/dist/esm/index.js +18 -11
  74. package/dist/esm/menu/menu.js +1 -1
  75. package/dist/esm/modal/i18n.js +17 -0
  76. package/dist/esm/modal/index.js +7 -0
  77. package/dist/esm/modal/modal-body.js +24 -0
  78. package/dist/esm/modal/modal-content.js +52 -0
  79. package/dist/esm/modal/modal-footer.js +25 -0
  80. package/dist/esm/modal/modal-header.js +23 -0
  81. package/dist/esm/modal/modal-variant-context.js +10 -0
  82. package/dist/esm/modal/modal.js +64 -0
  83. package/dist/esm/number-field/number-field.js +2 -2
  84. package/dist/esm/pagination/use-pagination-item.js +5 -6
  85. package/dist/esm/range-calendar/range-calendar.js +1 -1
  86. package/dist/esm/select/select.js +2 -2
  87. package/dist/esm/tag-field/tag-field.js +3 -3
  88. package/dist/esm/text-area-field/text-area-field.js +1 -1
  89. package/dist/esm/text-field/text-field.js +1 -1
  90. package/dist/types/badge/use-badge.d.ts +12 -12
  91. package/dist/types/hooks/index.d.ts +4 -1
  92. package/dist/types/hooks/index.d.ts.map +1 -1
  93. package/dist/types/hooks/use-draggable.d.ts +24 -0
  94. package/dist/types/hooks/use-draggable.d.ts.map +1 -0
  95. package/dist/types/index.d.mts +1 -0
  96. package/dist/types/index.d.ts +1 -0
  97. package/dist/types/index.d.ts.map +1 -1
  98. package/dist/types/menu/menu.d.ts.map +1 -1
  99. package/dist/types/modal/i18n.d.ts +3 -0
  100. package/dist/types/modal/i18n.d.ts.map +1 -0
  101. package/dist/types/modal/index.d.ts +12 -0
  102. package/dist/types/modal/index.d.ts.map +1 -0
  103. package/dist/types/modal/modal-body.d.ts +5 -0
  104. package/dist/types/modal/modal-body.d.ts.map +1 -0
  105. package/dist/types/modal/modal-content.d.ts +10 -0
  106. package/dist/types/modal/modal-content.d.ts.map +1 -0
  107. package/dist/types/modal/modal-footer.d.ts +5 -0
  108. package/dist/types/modal/modal-footer.d.ts.map +1 -0
  109. package/dist/types/modal/modal-header.d.ts +5 -0
  110. package/dist/types/modal/modal-header.d.ts.map +1 -0
  111. package/dist/types/modal/modal-variant-context.d.ts +8 -0
  112. package/dist/types/modal/modal-variant-context.d.ts.map +1 -0
  113. package/dist/types/modal/modal.d.ts +8 -0
  114. package/dist/types/modal/modal.d.ts.map +1 -0
  115. package/dist/types/pagination/use-pagination.d.ts +36 -36
  116. package/package.json +13 -10
  117. package/dist/cjs/node_modules/.pnpm/@react-aria_focus@3.20.5_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/focus/dist/useFocusRing.cjs +0 -45
  118. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/context.cjs +0 -21
  119. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/textSelection.cjs +0 -72
  120. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useFocus.cjs +0 -60
  121. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs +0 -210
  122. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs +0 -100
  123. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useHover.cjs +0 -152
  124. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/usePress.cjs +0 -676
  125. package/dist/cjs/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/utils.cjs +0 -160
  126. package/dist/cjs/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs +0 -9
  127. package/dist/cjs/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs +0 -9
  128. package/dist/cjs/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs +0 -16
  129. package/dist/cjs/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs +0 -9
  130. package/dist/cjs/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_private_field_get.cjs +0 -11
  131. package/dist/cjs/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_private_field_init.cjs +0 -10
  132. package/dist/cjs/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_private_field_set.cjs +0 -12
  133. package/dist/esm/node_modules/.pnpm/@react-aria_focus@3.20.5_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/focus/dist/useFocusRing.js +0 -43
  134. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/context.js +0 -19
  135. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/textSelection.js +0 -69
  136. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useFocus.js +0 -58
  137. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useFocusVisible.js +0 -205
  138. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useFocusWithin.js +0 -98
  139. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/useHover.js +0 -150
  140. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/usePress.js +0 -674
  141. package/dist/esm/node_modules/.pnpm/@react-aria_interactions@3.25.3_react-dom@19.0.0_react@19.0.0__react@19.0.0/node_modules/@react-aria/interactions/dist/utils.js +0 -155
  142. package/dist/esm/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_check_private_redeclaration.js +0 -7
  143. package/dist/esm/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js +0 -7
  144. package/dist/esm/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js +0 -14
  145. package/dist/esm/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js +0 -7
  146. package/dist/esm/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_private_field_get.js +0 -9
  147. package/dist/esm/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_private_field_init.js +0 -8
  148. package/dist/esm/node_modules/.pnpm/@swc_helpers@0.5.17/node_modules/@swc/helpers/esm/_class_private_field_set.js +0 -10
@@ -2,7 +2,9 @@
2
2
  'use strict';
3
3
 
4
4
  var useControllableState = require('./use-controllable-state.cjs');
5
+ var useDraggable = require('./use-draggable.cjs');
5
6
 
6
7
 
7
8
 
8
9
  exports.useControllableState = useControllableState.useControllableState;
10
+ exports.useDraggable = useDraggable.useDraggable;
@@ -2,16 +2,16 @@
2
2
  "use client";
3
3
  'use strict';
4
4
 
5
- var $670gB$react = require('react');
5
+ var react = require('react');
6
6
 
7
7
  function useCallbackRef(callback, deps = []) {
8
- const callbackRef = $670gB$react.useRef(() => {
8
+ const callbackRef = react.useRef(() => {
9
9
  throw new Error("Cannot call an event handler while rendering.");
10
10
  });
11
- $670gB$react.useInsertionEffect(() => {
11
+ react.useInsertionEffect(() => {
12
12
  callbackRef.current = callback;
13
13
  });
14
- return $670gB$react.useCallback((...args) => callbackRef.current?.(...args), deps);
14
+ return react.useCallback((...args) => callbackRef.current?.(...args), deps);
15
15
  }
16
16
 
17
17
  exports.useCallbackRef = useCallbackRef;
@@ -2,7 +2,7 @@
2
2
  "use client";
3
3
  'use strict';
4
4
 
5
- var $670gB$react = require('react');
5
+ var react = require('react');
6
6
  var useCallbackRef = require('./use-callback-ref.cjs');
7
7
 
8
8
  function useControllableState(props) {
@@ -14,7 +14,7 @@ function useControllableState(props) {
14
14
  } = props;
15
15
  const onChangeProp = useCallbackRef.useCallbackRef(onChange);
16
16
  const shouldUpdateProp = useCallbackRef.useCallbackRef(shouldUpdate);
17
- const [uncontrolledState, setUncontrolledState] = $670gB$react.useState(defaultValue);
17
+ const [uncontrolledState, setUncontrolledState] = react.useState(defaultValue);
18
18
  const controlled = valueProp !== void 0;
19
19
  const value = controlled ? valueProp : uncontrolledState;
20
20
  const setValue = useCallbackRef.useCallbackRef(
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ "use client";
3
+ 'use strict';
4
+
5
+ var react = require('react');
6
+ var interactions = require('@react-aria/interactions');
7
+
8
+ function useDraggable(props) {
9
+ const { targetRef, isDisabled = false, canOverflow = false } = props;
10
+ const boundary = react.useRef({ minLeft: 0, minTop: 0, maxLeft: 0, maxTop: 0 });
11
+ const isDragging = react.useRef(false);
12
+ let transform = { offsetX: 0, offsetY: 0 };
13
+ const onMoveStart = react.useCallback(() => {
14
+ isDragging.current = true;
15
+ const { offsetX, offsetY } = transform;
16
+ const targetRect = targetRef?.current?.getBoundingClientRect();
17
+ const targetLeft = targetRect?.left ?? 0;
18
+ const targetTop = targetRect?.top ?? 0;
19
+ const targetWidth = targetRect?.width ?? 0;
20
+ const targetHeight = targetRect?.height ?? 0;
21
+ const clientWidth = document.documentElement.clientWidth;
22
+ const clientHeight = document.documentElement.clientHeight;
23
+ const minLeft = -targetLeft + offsetX;
24
+ const minTop = -targetTop + offsetY;
25
+ const maxLeft = clientWidth - targetLeft - targetWidth + offsetX;
26
+ const maxTop = clientHeight - targetTop - targetHeight + offsetY;
27
+ boundary.current = {
28
+ minLeft,
29
+ minTop,
30
+ maxLeft,
31
+ maxTop
32
+ };
33
+ }, [transform, targetRef?.current]);
34
+ const onMove = react.useCallback(
35
+ (e) => {
36
+ if (isDisabled) {
37
+ return;
38
+ }
39
+ const { offsetX, offsetY } = transform;
40
+ const { minLeft, minTop, maxLeft, maxTop } = boundary.current;
41
+ let moveX = offsetX + e.deltaX;
42
+ let moveY = offsetY + e.deltaY;
43
+ if (!canOverflow) {
44
+ moveX = Math.min(Math.max(moveX, minLeft), maxLeft);
45
+ moveY = Math.min(Math.max(moveY, minTop), maxTop);
46
+ }
47
+ transform = {
48
+ offsetX: moveX,
49
+ offsetY: moveY
50
+ };
51
+ if (targetRef?.current) {
52
+ targetRef.current.style.transform = `translate(${moveX}px, ${moveY}px)`;
53
+ }
54
+ },
55
+ [isDisabled, transform, boundary.current, canOverflow, targetRef?.current]
56
+ );
57
+ const onMoveEnd = react.useCallback(() => {
58
+ isDragging.current = false;
59
+ }, []);
60
+ const { moveProps } = interactions.useMove({
61
+ onMoveStart,
62
+ onMove,
63
+ onMoveEnd
64
+ });
65
+ const preventDefault = react.useCallback((e) => {
66
+ if (isDragging.current) {
67
+ e.preventDefault();
68
+ }
69
+ }, []);
70
+ react.useEffect(() => {
71
+ if (!isDisabled) {
72
+ document.body.addEventListener("touchmove", preventDefault, {
73
+ passive: false
74
+ });
75
+ }
76
+ return () => {
77
+ document.body.removeEventListener("touchmove", preventDefault);
78
+ };
79
+ }, [isDisabled, preventDefault]);
80
+ return {
81
+ moveProps: {
82
+ ...moveProps,
83
+ style: { cursor: !isDisabled ? "move" : void 0 }
84
+ }
85
+ };
86
+ }
87
+
88
+ exports.useDraggable = useDraggable;
@@ -1,13 +1,18 @@
1
1
  "use strict";
2
2
  'use strict';
3
3
 
4
+ var useControllableState = require('./hooks/use-controllable-state.cjs');
5
+ var useDraggable = require('./hooks/use-draggable.cjs');
6
+ var govtBanner = require('./govt-banner/govt-banner.cjs');
4
7
  var ripple = require('./ripple/ripple.cjs');
5
8
  var useRipple = require('./ripple/use-ripple.cjs');
6
9
  var spinner = require('./spinner/spinner.cjs');
7
10
  var useSpinner = require('./spinner/use-spinner.cjs');
8
11
  var toggle = require('./toggle/toggle.cjs');
9
12
  var skipNavLink = require('./skip-nav-link/skip-nav-link.cjs');
13
+ var input = require('./input/input.cjs');
10
14
  var textField = require('./text-field/text-field.cjs');
15
+ var field = require('./field/field.cjs');
11
16
  var textArea = require('./text-area/text-area.cjs');
12
17
  var textAreaField = require('./text-area-field/text-area-field.cjs');
13
18
  var comboBox = require('./combo-box/combo-box.cjs');
@@ -19,45 +24,56 @@ var tagFieldItem = require('./tag-field/tag-field-item.cjs');
19
24
  var select = require('./select/select.cjs');
20
25
  var selectItem = require('./select/select-item.cjs');
21
26
  var selectVariantContext = require('./select/select-variant-context.cjs');
22
- var menu = require('./menu/menu.cjs');
23
- var tabs = require('./tabs/tabs.cjs');
24
- var useControllableState = require('./hooks/use-controllable-state.cjs');
25
- var button = require('./button/button.cjs');
26
- var govtBanner = require('./govt-banner/govt-banner.cjs');
27
- var input = require('./input/input.cjs');
28
- var field = require('./field/field.cjs');
29
- var banner = require('./banner/banner.cjs');
30
- var badge = require('./badge/badge.cjs');
31
- var date = require('@internationalized/date');
32
27
  var calendar = require('./calendar/calendar.cjs');
33
28
  var calendarStyleContext = require('./calendar/calendar-style-context.cjs');
34
29
  var utils = require('./calendar/utils.cjs');
30
+ var date = require('@internationalized/date');
35
31
  var rangeCalendar = require('./range-calendar/range-calendar.cjs');
32
+ var menu = require('./menu/menu.cjs');
36
33
  var popover = require('./popover/popover.cjs');
34
+ var tabs = require('./tabs/tabs.cjs');
37
35
  var dateField = require('./date-field/date-field.cjs');
38
36
  var datePicker = require('./date-picker/date-picker.cjs');
39
37
  var dateRangePicker = require('./date-range-picker/date-range-picker.cjs');
40
38
  var checkbox = require('./checkbox/checkbox.cjs');
41
39
  var checkboxGroupStyleContext = require('./checkbox/checkbox-group-style-context.cjs');
42
- var usePagination = require('./pagination/hooks/use-pagination.cjs');
43
40
  var pagination = require('./pagination/pagination.cjs');
44
41
  var paginationCursor = require('./pagination/pagination-cursor.cjs');
45
42
  var paginationItem = require('./pagination/pagination-item.cjs');
43
+ var usePagination = require('./pagination/hooks/use-pagination.cjs');
46
44
  var usePagination$1 = require('./pagination/use-pagination.cjs');
47
45
  var fileDropzone = require('./file-dropzone/file-dropzone.cjs');
48
46
  var fileInfo = require('./file-dropzone/file-info.cjs');
49
47
  var utils$1 = require('./file-dropzone/utils.cjs');
50
48
  var numberField = require('./number-field/number-field.cjs');
49
+ var modal = require('./modal/modal.cjs');
50
+ var modalContent = require('./modal/modal-content.cjs');
51
+ var modalFooter = require('./modal/modal-footer.cjs');
52
+ var modalBody = require('./modal/modal-body.cjs');
53
+ var modalHeader = require('./modal/modal-header.cjs');
54
+ var modalVariantContext = require('./modal/modal-variant-context.cjs');
55
+ var button = require('./button/button.cjs');
56
+ var banner = require('./banner/banner.cjs');
57
+ var badge = require('./badge/badge.cjs');
51
58
 
52
59
 
53
60
 
61
+ exports.useControllableState = useControllableState.useControllableState;
62
+ exports.useDraggable = useDraggable.useDraggable;
63
+ exports.GovtBanner = govtBanner.GovtBanner;
54
64
  exports.Ripple = ripple.Ripple;
55
65
  exports.useRipple = useRipple.useRipple;
56
66
  exports.Spinner = spinner.Spinner;
57
67
  exports.useSpinner = useSpinner.useSpinner;
58
68
  exports.Toggle = toggle.Toggle;
59
69
  exports.SkipNavLink = skipNavLink.SkipNavLink;
70
+ exports.Input = input.Input;
60
71
  exports.TextField = textField.TextField;
72
+ exports.Description = field.Description;
73
+ exports.FieldError = field.FieldError;
74
+ exports.FieldErrorIcon = field.FieldErrorIcon;
75
+ exports.FieldGroup = field.FieldGroup;
76
+ exports.Label = field.Label;
61
77
  exports.TextArea = textArea.TextArea;
62
78
  exports.TextAreaField = textAreaField.TextAreaField;
63
79
  exports.ComboBox = comboBox.ComboBox;
@@ -72,6 +88,21 @@ exports.Select = select.Select;
72
88
  exports.SelectItem = selectItem.SelectItem;
73
89
  exports.SelectVariantContext = selectVariantContext.SelectVariantContext;
74
90
  exports.useSelectVariantContext = selectVariantContext.useSelectVariantContext;
91
+ exports.Calendar = calendar.Calendar;
92
+ exports.CalendarStateWrapper = calendar.CalendarStateWrapper;
93
+ exports.CalendarStyleContext = calendarStyleContext.CalendarStyleContext;
94
+ exports.useCalendarStyleContext = calendarStyleContext.useCalendarStyleContext;
95
+ exports.getEraFormat = utils.getEraFormat;
96
+ exports.useGenerateLocalizedMonths = utils.useGenerateLocalizedMonths;
97
+ exports.useGenerateLocalizedYears = utils.useGenerateLocalizedYears;
98
+ exports.useLocalizedMonthYear = utils.useLocalizedMonthYear;
99
+ Object.defineProperty(exports, "CalendarDate", {
100
+ enumerable: true,
101
+ get: function () { return date.CalendarDate; }
102
+ });
103
+ exports.RangeCalendar = rangeCalendar.RangeCalendar;
104
+ exports.RangeCalendarCell = rangeCalendar.RangeCalendarCell;
105
+ exports.RangeCalendarStateWrapper = rangeCalendar.RangeCalendarStateWrapper;
75
106
  exports.Menu = menu.Menu;
76
107
  exports.MenuItem = menu.MenuItem;
77
108
  exports.MenuSection = menu.MenuSection;
@@ -80,39 +111,13 @@ exports.MenuTrigger = menu.MenuTrigger;
80
111
  exports.MenuVariantContext = menu.MenuVariantContext;
81
112
  exports.SubmenuTrigger = menu.SubmenuTrigger;
82
113
  exports.useMenuVariantContext = menu.useMenuVariantContext;
114
+ exports.Popover = popover.Popover;
83
115
  exports.Tab = tabs.Tab;
84
116
  exports.TabList = tabs.TabList;
85
117
  exports.TabPanel = tabs.TabPanel;
86
118
  exports.Tabs = tabs.Tabs;
87
119
  exports.TabsVariantContext = tabs.TabsVariantContext;
88
120
  exports.useTabsVariantContext = tabs.useTabsVariantContext;
89
- exports.useControllableState = useControllableState.useControllableState;
90
- exports.Button = button.Button;
91
- exports.GovtBanner = govtBanner.GovtBanner;
92
- exports.Input = input.Input;
93
- exports.Description = field.Description;
94
- exports.FieldError = field.FieldError;
95
- exports.FieldErrorIcon = field.FieldErrorIcon;
96
- exports.FieldGroup = field.FieldGroup;
97
- exports.Label = field.Label;
98
- exports.Banner = banner.Banner;
99
- exports.Badge = badge.Badge;
100
- Object.defineProperty(exports, "CalendarDate", {
101
- enumerable: true,
102
- get: function () { return date.CalendarDate; }
103
- });
104
- exports.Calendar = calendar.Calendar;
105
- exports.CalendarStateWrapper = calendar.CalendarStateWrapper;
106
- exports.CalendarStyleContext = calendarStyleContext.CalendarStyleContext;
107
- exports.useCalendarStyleContext = calendarStyleContext.useCalendarStyleContext;
108
- exports.getEraFormat = utils.getEraFormat;
109
- exports.useGenerateLocalizedMonths = utils.useGenerateLocalizedMonths;
110
- exports.useGenerateLocalizedYears = utils.useGenerateLocalizedYears;
111
- exports.useLocalizedMonthYear = utils.useLocalizedMonthYear;
112
- exports.RangeCalendar = rangeCalendar.RangeCalendar;
113
- exports.RangeCalendarCell = rangeCalendar.RangeCalendarCell;
114
- exports.RangeCalendarStateWrapper = rangeCalendar.RangeCalendarStateWrapper;
115
- exports.Popover = popover.Popover;
116
121
  exports.DateField = dateField.DateField;
117
122
  exports.DateInput = dateField.DateInput;
118
123
  exports.DatePicker = datePicker.DatePicker;
@@ -121,10 +126,10 @@ exports.Checkbox = checkbox.Checkbox;
121
126
  exports.CheckboxGroup = checkbox.CheckboxGroup;
122
127
  exports.CheckboxGroupStyleContext = checkboxGroupStyleContext.CheckboxGroupStyleContext;
123
128
  exports.useCheckboxGroupStyleContext = checkboxGroupStyleContext.useCheckboxGroupStyleContext;
124
- exports.PaginationItemType = usePagination.PaginationItemType;
125
129
  exports.Pagination = pagination.Pagination;
126
130
  exports.PaginationCursor = paginationCursor.PaginationCursor;
127
131
  exports.PaginationItem = paginationItem.PaginationItem;
132
+ exports.PaginationItemType = usePagination.PaginationItemType;
128
133
  exports.CURSOR_TRANSITION_TIMEOUT = usePagination$1.CURSOR_TRANSITION_TIMEOUT;
129
134
  exports.usePagination = usePagination$1.usePagination;
130
135
  exports.FileDropzone = fileDropzone.FileDropzone;
@@ -132,3 +137,13 @@ exports.FileInfo = fileInfo.FileInfo;
132
137
  exports.formatBytes = utils$1.formatBytes;
133
138
  exports.formatErrorMessage = utils$1.formatErrorMessage;
134
139
  exports.NumberField = numberField.NumberField;
140
+ exports.Modal = modal.Modal;
141
+ exports.ModalContent = modalContent.ModalContent;
142
+ exports.ModalFooter = modalFooter.ModalFooter;
143
+ exports.ModalBody = modalBody.ModalBody;
144
+ exports.ModalHeader = modalHeader.ModalHeader;
145
+ exports.ModalVariantContext = modalVariantContext.ModalVariantContext;
146
+ exports.useModalVariantContext = modalVariantContext.useModalVariantContext;
147
+ exports.Button = button.Button;
148
+ exports.Banner = banner.Banner;
149
+ exports.Badge = badge.Badge;
@@ -3,11 +3,11 @@
3
3
  'use strict';
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var $670gB$react = require('react');
6
+ var react = require('react');
7
7
  var reactAriaComponents = require('react-aria-components');
8
8
  var ouiTheme = require('@opengovsg/oui-theme');
9
9
 
10
- const Input = $670gB$react.forwardRef(
10
+ const Input = react.forwardRef(
11
11
  ({ size, variant, isDisabled, ...props }, ref) => {
12
12
  return /* @__PURE__ */ jsxRuntime.jsx(
13
13
  reactAriaComponents.Input,
@@ -3,14 +3,14 @@
3
3
  'use strict';
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
- var $670gB$react = require('react');
6
+ var react = require('react');
7
7
  var reactAriaComponents = require('react-aria-components');
8
8
  var ouiTheme = require('@opengovsg/oui-theme');
9
+ var popover = require('../popover/popover.cjs');
9
10
  var utils = require('../system/utils.cjs');
10
11
  var check = require('../node_modules/.pnpm/lucide-react@0.475.0_react@19.0.0/node_modules/lucide-react/dist/esm/icons/check.cjs');
11
12
  var chevronRight = require('../node_modules/.pnpm/lucide-react@0.475.0_react@19.0.0/node_modules/lucide-react/dist/esm/icons/chevron-right.cjs');
12
13
  var context = require('../system/react-utils/context.cjs');
13
- var popover = require('../popover/popover.cjs');
14
14
 
15
15
  const [MenuVariantContext, useMenuVariantContext] = context.createContext({
16
16
  name: "MenuVariantContext",
@@ -51,7 +51,7 @@ function MenuInner(originalProps, ref) {
51
51
  ) });
52
52
  }
53
53
  const Menu = utils.forwardRefGeneric(MenuInner);
54
- const MenuItem = $670gB$react.forwardRef(function MenuItem2(originalProps, ref) {
54
+ const MenuItem = react.forwardRef(function MenuItem2(originalProps, ref) {
55
55
  [originalProps, ref] = reactAriaComponents.useContextProps(
56
56
  originalProps,
57
57
  ref,
@@ -70,7 +70,7 @@ const MenuItem = $670gB$react.forwardRef(function MenuItem2(originalProps, ref)
70
70
  variantProps
71
71
  ] = utils.mapPropsVariants(originalProps, ouiTheme.listBoxItemStyles.variantKeys);
72
72
  const styles = ouiTheme.menuItemStyles(variantProps);
73
- const multipleSelectionIcon = $670gB$react.useMemo(() => {
73
+ const multipleSelectionIcon = react.useMemo(() => {
74
74
  if (multipleSelectionIconProp !== void 0) {
75
75
  return multipleSelectionIconProp;
76
76
  }
@@ -82,7 +82,7 @@ const MenuItem = $670gB$react.forwardRef(function MenuItem2(originalProps, ref)
82
82
  }
83
83
  );
84
84
  }, [classNames?.icon, multipleSelectionIconProp, styles]);
85
- const singleSelectionIcon = $670gB$react.useMemo(() => {
85
+ const singleSelectionIcon = react.useMemo(() => {
86
86
  if (singleSelectionIconProp !== void 0) {
87
87
  return singleSelectionIconProp;
88
88
  }
@@ -94,7 +94,7 @@ const MenuItem = $670gB$react.forwardRef(function MenuItem2(originalProps, ref)
94
94
  }
95
95
  );
96
96
  }, [classNames?.icon, singleSelectionIconProp, styles]);
97
- const showIconContainer = $670gB$react.useCallback(
97
+ const showIconContainer = react.useCallback(
98
98
  (selectionMode) => {
99
99
  switch (selectionMode) {
100
100
  case "none":
@@ -107,7 +107,7 @@ const MenuItem = $670gB$react.forwardRef(function MenuItem2(originalProps, ref)
107
107
  },
108
108
  [multipleSelectionIcon, singleSelectionIcon]
109
109
  );
110
- const defaultTextValue = $670gB$react.useMemo(() => {
110
+ const defaultTextValue = react.useMemo(() => {
111
111
  if (props.textValue) {
112
112
  return props.textValue;
113
113
  }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ 'use strict';
3
+
4
+ const i18nStrings = {
5
+ "en-SG": {
6
+ dismiss: "Dismiss"
7
+ },
8
+ "zh-SG": {
9
+ dismiss: "\u53D6\u6D88"
10
+ },
11
+ "ms-SG": {
12
+ dismiss: "Tutup"
13
+ },
14
+ "ta-SG": {
15
+ dismiss: "\u0BAE\u0BC2\u0B9F\u0BC1"
16
+ }
17
+ };
18
+
19
+ exports.i18nStrings = i18nStrings;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ 'use strict';
3
+
4
+ var modal = require('./modal.cjs');
5
+ var modalContent = require('./modal-content.cjs');
6
+ var modalFooter = require('./modal-footer.cjs');
7
+ var modalBody = require('./modal-body.cjs');
8
+ var modalHeader = require('./modal-header.cjs');
9
+ var modalVariantContext = require('./modal-variant-context.cjs');
10
+
11
+
12
+
13
+ exports.Modal = modal.Modal;
14
+ exports.ModalContent = modalContent.ModalContent;
15
+ exports.ModalFooter = modalFooter.ModalFooter;
16
+ exports.ModalBody = modalBody.ModalBody;
17
+ exports.ModalHeader = modalHeader.ModalHeader;
18
+ exports.ModalVariantContext = modalVariantContext.ModalVariantContext;
19
+ exports.useModalVariantContext = modalVariantContext.useModalVariantContext;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ "use client";
3
+ 'use strict';
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var ouiTheme = require('@opengovsg/oui-theme');
8
+ var utils = require('../system/utils.cjs');
9
+ var modalVariantContext = require('./modal-variant-context.cjs');
10
+
11
+ const ModalBody = utils.forwardRef(function ModalBody2({ as, ...props }, ref) {
12
+ const { slots, classNames } = react.useContext(modalVariantContext.ModalVariantContext);
13
+ const Component = as || "div";
14
+ return /* @__PURE__ */ jsxRuntime.jsx(
15
+ Component,
16
+ {
17
+ ref,
18
+ className: slots.body({
19
+ className: ouiTheme.cn(classNames?.body, props.className)
20
+ }),
21
+ ...props
22
+ }
23
+ );
24
+ });
25
+
26
+ exports.ModalBody = ModalBody;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ "use client";
3
+ 'use strict';
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var reactAria = require('react-aria');
8
+ var reactAriaComponents = require('react-aria-components');
9
+ var ouiTheme = require('@opengovsg/oui-theme');
10
+ var i18n = require('./i18n.cjs');
11
+ var modalVariantContext = require('./modal-variant-context.cjs');
12
+ var x = require('../node_modules/.pnpm/lucide-react@0.475.0_react@19.0.0/node_modules/lucide-react/dist/esm/icons/x.cjs');
13
+ var button = require('../button/button.cjs');
14
+
15
+ function ModalContent({
16
+ closeButtonContent: closeButtonContentProp,
17
+ hideCloseButton,
18
+ closeButtonProps,
19
+ ...props
20
+ }) {
21
+ const { slots, classNames, buttonSize } = react.useContext(modalVariantContext.ModalVariantContext);
22
+ const formatMessage = reactAria.useMessageFormatter(i18n.i18nStrings);
23
+ const closeButtonContent = react.isValidElement(closeButtonContentProp) ? closeButtonContentProp : /* @__PURE__ */ jsxRuntime.jsx(x.default, {});
24
+ return /* @__PURE__ */ jsxRuntime.jsx(
25
+ reactAriaComponents.Dialog,
26
+ {
27
+ ...props,
28
+ className: slots.dialog({
29
+ className: props.className ?? classNames?.dialog
30
+ }),
31
+ children: ({ close }) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32
+ !hideCloseButton && /* @__PURE__ */ jsxRuntime.jsx(
33
+ button.Button,
34
+ {
35
+ slot: "close",
36
+ isIconOnly: true,
37
+ "aria-label": formatMessage("dismiss"),
38
+ size: buttonSize,
39
+ variant: "clear",
40
+ color: "neutral",
41
+ ...closeButtonProps,
42
+ className: slots.closeButton({
43
+ className: ouiTheme.cn(classNames?.closeButton, props.className)
44
+ }),
45
+ children: closeButtonContent
46
+ }
47
+ ),
48
+ typeof props.children === "function" ? props.children(close) : props.children
49
+ ] })
50
+ }
51
+ );
52
+ }
53
+
54
+ exports.ModalContent = ModalContent;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ "use client";
3
+ 'use strict';
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var ouiTheme = require('@opengovsg/oui-theme');
8
+ var utils = require('../system/utils.cjs');
9
+ var modalVariantContext = require('./modal-variant-context.cjs');
10
+
11
+ const ModalFooter = utils.forwardRef(function ModalFooter2({ as, ...props }, ref) {
12
+ const { slots, classNames } = react.useContext(modalVariantContext.ModalVariantContext);
13
+ const Component = as || "footer";
14
+ return /* @__PURE__ */ jsxRuntime.jsx(
15
+ Component,
16
+ {
17
+ ref,
18
+ className: slots.footer({
19
+ className: ouiTheme.cn(classNames?.footer, props.className)
20
+ }),
21
+ ...props
22
+ }
23
+ );
24
+ });
25
+ ModalFooter.displayName = "ModalFooter";
26
+
27
+ exports.ModalFooter = ModalFooter;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ "use client";
3
+ 'use strict';
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var reactAriaComponents = require('react-aria-components');
8
+ var ouiTheme = require('@opengovsg/oui-theme');
9
+ var modalVariantContext = require('./modal-variant-context.cjs');
10
+
11
+ function ModalHeader(props) {
12
+ const { slots, classNames } = react.useContext(modalVariantContext.ModalVariantContext);
13
+ return /* @__PURE__ */ jsxRuntime.jsx(
14
+ reactAriaComponents.Heading,
15
+ {
16
+ slot: "title",
17
+ ...props,
18
+ className: slots.header({
19
+ className: ouiTheme.cn(classNames?.header, props.className)
20
+ })
21
+ }
22
+ );
23
+ }
24
+
25
+ exports.ModalHeader = ModalHeader;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ "use client";
3
+ 'use strict';
4
+
5
+ var context = require('../system/react-utils/context.cjs');
6
+
7
+ const [ModalVariantContext, useModalVariantContext] = context.createContext({
8
+ name: "ModalVariantContext",
9
+ strict: true
10
+ });
11
+
12
+ exports.ModalVariantContext = ModalVariantContext;
13
+ exports.useModalVariantContext = useModalVariantContext;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ "use client";
3
+ 'use strict';
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var reactAriaComponents = require('react-aria-components');
8
+ var ouiTheme = require('@opengovsg/oui-theme');
9
+ var utils = require('../system/utils.cjs');
10
+ var modalVariantContext = require('./modal-variant-context.cjs');
11
+
12
+ const Modal = react.forwardRef(function Modal2(originalProps, ref) {
13
+ const [{ classNames, ...props }, variantProps] = utils.mapPropsVariants(
14
+ originalProps,
15
+ ouiTheme.modalStyles.variantKeys
16
+ );
17
+ const { isDismissable = true } = props;
18
+ const slots = ouiTheme.modalStyles(variantProps);
19
+ const buttonSize = react.useMemo(() => {
20
+ switch (variantProps.size) {
21
+ case "mobile":
22
+ return "md";
23
+ default: {
24
+ return "lg";
25
+ }
26
+ }
27
+ }, [variantProps.size]);
28
+ return /* @__PURE__ */ jsxRuntime.jsx(
29
+ reactAriaComponents.Provider,
30
+ {
31
+ values: [
32
+ [
33
+ modalVariantContext.ModalVariantContext,
34
+ { ...variantProps, classNames, buttonSize, slots }
35
+ ]
36
+ ],
37
+ children: /* @__PURE__ */ jsxRuntime.jsx(
38
+ reactAriaComponents.ModalOverlay,
39
+ {
40
+ ...props,
41
+ isDismissable,
42
+ className: ouiTheme.composeRenderProps(
43
+ classNames?.overlay,
44
+ (className, renderProps) => slots.overlay({ className, ...renderProps })
45
+ ),
46
+ children: /* @__PURE__ */ jsxRuntime.jsx(
47
+ reactAriaComponents.Modal,
48
+ {
49
+ ...props,
50
+ ref,
51
+ isDismissable,
52
+ "data-placement": variantProps.placement,
53
+ className: ouiTheme.composeRenderProps(
54
+ props.className ?? classNames?.base,
55
+ (className, renderProps) => slots.base({ className, ...renderProps })
56
+ )
57
+ }
58
+ )
59
+ }
60
+ )
61
+ }
62
+ );
63
+ });
64
+ Modal.displayName = "Modal";
65
+
66
+ exports.Modal = Modal;