react-restyle-components 0.4.39 → 0.4.40

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 (232) hide show
  1. package/lib/index.js +3 -1
  2. package/lib/src/core-components/index.js +1 -1
  3. package/lib/src/core-components/src/components/Accordion/AccordionSection/Accordion.js +15 -1
  4. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionContext.js +6 -1
  5. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionSection.js +39 -1
  6. package/lib/src/core-components/src/components/Accordion/AccordionSection/Header.js +39 -1
  7. package/lib/src/core-components/src/components/Accordion/AccordionSection/elements.js +94 -57
  8. package/lib/src/core-components/src/components/Accordion/AccordionSection/hooks/useCurrentAccordionIndex.js +13 -1
  9. package/lib/src/core-components/src/components/Accordion/AccordionSection/index.js +3 -1
  10. package/lib/src/core-components/src/components/Accordion/AccordionSection/types.js +9 -1
  11. package/lib/src/core-components/src/components/Accordion/Collapsible/Collapsible2.component.js +249 -1
  12. package/lib/src/core-components/src/components/Action/types.js +8 -1
  13. package/lib/src/core-components/src/components/AlertBanner/AlertBanner.js +45 -1
  14. package/lib/src/core-components/src/components/AlertBanner/elements.js +120 -45
  15. package/lib/src/core-components/src/components/AlertBanner/index.js +2 -1
  16. package/lib/src/core-components/src/components/AlertBanner/types.js +10 -1
  17. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-group-by-multiple-select-multiple-fields-display/auto-complete-filter-group-by-multiple-select-multiple-fields-display.component.js +334 -1
  18. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-multi-fields-display-drag-drop/auto-complete-filter-multi-select-multi-fields-display-drag-drop.component.js +229 -1
  19. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-selected-top-display/auto-complete-filter-multi-select-selected-top-display.component.js +174 -1
  20. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +129 -2
  21. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select/auto-complete-filter-single-select.component.js +55 -1
  22. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +308 -2
  23. package/lib/src/core-components/src/components/AutoComplete/auto-complete-group-by/auto-complete-group-by.component.js +115 -1
  24. package/lib/src/core-components/src/components/AutoComplete/autocomplete/autocomplete.js +442 -2
  25. package/lib/src/core-components/src/components/AutoComplete/index.js +8 -1
  26. package/lib/src/core-components/src/components/Avatar/Avatar.js +148 -14
  27. package/lib/src/core-components/src/components/Badge/Badge.js +25 -2
  28. package/lib/src/core-components/src/components/Badge/InnerBadge/Inline.js +25 -1
  29. package/lib/src/core-components/src/components/Badge/InnerBadge/InnerBadge.js +25 -1
  30. package/lib/src/core-components/src/components/Badge/InnerBadge/elements.js +78 -32
  31. package/lib/src/core-components/src/components/Badge/InnerBadge/index.js +1 -1
  32. package/lib/src/core-components/src/components/Badge/index.js +1 -1
  33. package/lib/src/core-components/src/components/Badge/types.js +5 -1
  34. package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.js +83 -1
  35. package/lib/src/core-components/src/components/Breadcrumb/elements.js +166 -94
  36. package/lib/src/core-components/src/components/Breadcrumb/index.js +3 -1
  37. package/lib/src/core-components/src/components/Breadcrumb/types.js +3 -1
  38. package/lib/src/core-components/src/components/Button/button.component.js +18 -1
  39. package/lib/src/core-components/src/components/Button/buttonGroup/buttonGroup.component.js +4 -1
  40. package/lib/src/core-components/src/components/Button/index.js +2 -1
  41. package/lib/src/core-components/src/components/Button/types.js +1 -1
  42. package/lib/src/core-components/src/components/Chip/Chip.js +64 -1
  43. package/lib/src/core-components/src/components/Chip/elements.js +148 -48
  44. package/lib/src/core-components/src/components/Chip/index.js +2 -1
  45. package/lib/src/core-components/src/components/Chip/types.js +4 -1
  46. package/lib/src/core-components/src/components/Divider/Divider.js +25 -1
  47. package/lib/src/core-components/src/components/Divider/elements.js +68 -31
  48. package/lib/src/core-components/src/components/Divider/index.js +2 -1
  49. package/lib/src/core-components/src/components/Divider/types.js +4 -1
  50. package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.js +147 -1
  51. package/lib/src/core-components/src/components/DynamicGrid/GridContainer.js +24 -17
  52. package/lib/src/core-components/src/components/DynamicGrid/elements.js +162 -100
  53. package/lib/src/core-components/src/components/DynamicGrid/index.js +3 -1
  54. package/lib/src/core-components/src/components/DynamicGrid/types.js +28 -1
  55. package/lib/src/core-components/src/components/DynamicGrid/utils.js +193 -1
  56. package/lib/src/core-components/src/components/FormField/FormField.js +103 -1
  57. package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.js +37 -1
  58. package/lib/src/core-components/src/components/FormField/components/CheckboxInput.js +8 -1
  59. package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.js +192 -1
  60. package/lib/src/core-components/src/components/FormField/components/DatePickerInput.js +99 -1
  61. package/lib/src/core-components/src/components/FormField/components/DropdownInput.js +70 -1
  62. package/lib/src/core-components/src/components/FormField/components/OtpInput.js +81 -1
  63. package/lib/src/core-components/src/components/FormField/components/PasswordInput.js +40 -1
  64. package/lib/src/core-components/src/components/FormField/components/PinInput.js +75 -1
  65. package/lib/src/core-components/src/components/FormField/components/RadioInput.js +54 -1
  66. package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.js +94 -1
  67. package/lib/src/core-components/src/components/FormField/components/ToggleInput.js +36 -1
  68. package/lib/src/core-components/src/components/FormField/components/index.js +11 -1
  69. package/lib/src/core-components/src/components/FormField/css-properties.js +161 -1
  70. package/lib/src/core-components/src/components/FormField/index.js +2 -1
  71. package/lib/src/core-components/src/components/Icon/Icon.js +79 -1
  72. package/lib/src/core-components/src/components/Icon/index.js +2 -1
  73. package/lib/src/core-components/src/components/Icon/types.js +9 -1
  74. package/lib/src/core-components/src/components/Loader/loader.component.js +215 -2
  75. package/lib/src/core-components/src/components/Masonry/Masonry.js +73 -1
  76. package/lib/src/core-components/src/components/Masonry/elements.js +46 -29
  77. package/lib/src/core-components/src/components/Masonry/hooks.js +100 -1
  78. package/lib/src/core-components/src/components/Masonry/index.js +3 -1
  79. package/lib/src/core-components/src/components/Masonry/types.js +1 -1
  80. package/lib/src/core-components/src/components/Modal/BasicModal/modal.component.js +116 -1
  81. package/lib/src/core-components/src/components/Modal/index.js +2 -1
  82. package/lib/src/core-components/src/components/Modal/modal-confirm/modal-confirm.component.js +147 -1
  83. package/lib/src/core-components/src/components/Picker/color-picker/color-picker.component.js +12 -1
  84. package/lib/src/core-components/src/components/Picker/color-picker-modal/color-picker-modal.component.js +40 -1
  85. package/lib/src/core-components/src/components/Picker/index.js +2 -1
  86. package/lib/src/core-components/src/components/Selection/index.js +4 -1
  87. package/lib/src/core-components/src/components/Selection/multi-select/multi-select.component.js +49 -1
  88. package/lib/src/core-components/src/components/Selection/multi-select-with-field/multi-select-with-field.component.js +58 -1
  89. package/lib/src/core-components/src/components/Selection/multi-selection-dropdown/multi-selection-dropdown.component.js +43 -1
  90. package/lib/src/core-components/src/components/Selection/single-select/single-select.component.js +87 -1
  91. package/lib/src/core-components/src/components/Skeleton/Skeleton.js +51 -1
  92. package/lib/src/core-components/src/components/Skeleton/elements.js +143 -54
  93. package/lib/src/core-components/src/components/Skeleton/index.js +2 -1
  94. package/lib/src/core-components/src/components/Skeleton/types.js +4 -1
  95. package/lib/src/core-components/src/components/SpeedDial/SpeedDial.js +128 -1
  96. package/lib/src/core-components/src/components/SpeedDial/elements.js +132 -62
  97. package/lib/src/core-components/src/components/SpeedDial/index.js +2 -1
  98. package/lib/src/core-components/src/components/SpeedDial/types.js +3 -1
  99. package/lib/src/core-components/src/components/Stepper2/stepper.component.js +139 -1
  100. package/lib/src/core-components/src/components/Switch/Switch.js +26 -1
  101. package/lib/src/core-components/src/components/Switch/elements.js +103 -34
  102. package/lib/src/core-components/src/components/Switch/index.js +2 -1
  103. package/lib/src/core-components/src/components/Switch/types.js +3 -1
  104. package/lib/src/core-components/src/components/Table/Table.js +1332 -1
  105. package/lib/src/core-components/src/components/Table/columnReorder.d.ts +128 -0
  106. package/lib/src/core-components/src/components/Table/columnReorder.js +530 -0
  107. package/lib/src/core-components/src/components/Table/columnResize.d.ts +99 -0
  108. package/lib/src/core-components/src/components/Table/columnResize.js +399 -0
  109. package/lib/src/core-components/src/components/Table/elements.d.ts +9 -1
  110. package/lib/src/core-components/src/components/Table/elements.js +324 -155
  111. package/lib/src/core-components/src/components/Table/filters.js +555 -30
  112. package/lib/src/core-components/src/components/Table/hooks.js +536 -2
  113. package/lib/src/core-components/src/components/Table/index.d.ts +4 -0
  114. package/lib/src/core-components/src/components/Table/index.js +6 -1
  115. package/lib/src/core-components/src/components/Table/types.d.ts +58 -0
  116. package/lib/src/core-components/src/components/Table/types.js +1 -1
  117. package/lib/src/core-components/src/components/Tabs/tabs.component.js +22 -1
  118. package/lib/src/core-components/src/components/Tags1/Tags.component.js +118 -1
  119. package/lib/src/core-components/src/components/Tags1/types.js +20 -1
  120. package/lib/src/core-components/src/components/Timer1/timer.component.js +76 -1
  121. package/lib/src/core-components/src/components/Toast/Toast.js +50 -1
  122. package/lib/src/core-components/src/components/Toast/elements.js +122 -41
  123. package/lib/src/core-components/src/components/Toast/index.js +2 -1
  124. package/lib/src/core-components/src/components/Toast/types.js +9 -1
  125. package/lib/src/core-components/src/components/Tooltip/Tooltip.js +200 -1
  126. package/lib/src/core-components/src/components/Tooltip/elements.js +117 -55
  127. package/lib/src/core-components/src/components/Tooltip/index.js +2 -1
  128. package/lib/src/core-components/src/components/Tooltip/types.js +17 -1
  129. package/lib/src/core-components/src/components/Tooltip/utils.js +140 -1
  130. package/lib/src/core-components/src/components/TreeSelect/TreeSelect.js +303 -1
  131. package/lib/src/core-components/src/components/TreeSelect/elements.js +216 -117
  132. package/lib/src/core-components/src/components/TreeSelect/hooks.js +252 -1
  133. package/lib/src/core-components/src/components/TreeSelect/index.js +3 -1
  134. package/lib/src/core-components/src/components/TreeSelect/types.js +1 -1
  135. package/lib/src/core-components/src/components/index.js +30 -1
  136. package/lib/src/core-components/src/components/pdf/pdf-images.components.js +7 -1
  137. package/lib/src/core-components/src/components/pdf/pdf-table.components.js +48 -5
  138. package/lib/src/core-components/src/components/pdf/pdf-typography.components.js +70 -1
  139. package/lib/src/core-components/src/components/pdf/pdf-wrapped-view.components.js +50 -1
  140. package/lib/src/core-components/src/core-components/Avatar.js +33 -4
  141. package/lib/src/core-components/src/core-components/CoreButton/CoreButton.js +10 -1
  142. package/lib/src/core-components/src/core-components/CoreButton/elements.js +176 -67
  143. package/lib/src/core-components/src/core-components/CoreButton/index.js +3 -1
  144. package/lib/src/core-components/src/core-components/CoreButton/types.js +6 -1
  145. package/lib/src/core-components/src/core-components/CoreButton/utils.js +12 -1
  146. package/lib/src/core-components/src/core-components/Divider/Divider.js +19 -4
  147. package/lib/src/core-components/src/core-components/Divider/index.js +1 -1
  148. package/lib/src/core-components/src/core-components/SelectionCardStrip/index.js +1 -1
  149. package/lib/src/core-components/src/core-components/SelectionCardStrip/selectionCardStrip.js +33 -10
  150. package/lib/src/core-components/src/core-components/StateLayer.js +5 -3
  151. package/lib/src/core-components/src/core-components/ToggleCore/elements.js +50 -25
  152. package/lib/src/core-components/src/core-components/ToggleCore/index.js +2 -1
  153. package/lib/src/core-components/src/core-components/ToggleCore/toggleCore.js +14 -1
  154. package/lib/src/core-components/src/core-components/atoms/Input/Input.js +22 -1
  155. package/lib/src/core-components/src/core-components/atoms/Label/Label.js +21 -1
  156. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.js +19 -1
  157. package/lib/src/core-components/src/core-components/index.js +3 -1
  158. package/lib/src/core-components/src/helpers/constants.js +11 -1
  159. package/lib/src/core-components/src/hooks/index.js +1 -1
  160. package/lib/src/core-components/src/hooks/outside.hook.js +28 -1
  161. package/lib/src/core-components/src/index.js +12 -1
  162. package/lib/src/core-components/src/tc.global.css +12 -1
  163. package/lib/src/core-components/src/tc.module.css +1 -1
  164. package/lib/src/core-components/src/utils/abstracts/breakpoints/index.js +28 -1
  165. package/lib/src/core-components/src/utils/abstracts/colors/index.js +49 -1
  166. package/lib/src/core-components/src/utils/abstracts/index.js +5 -1
  167. package/lib/src/core-components/src/utils/abstracts/space/index.js +26 -1
  168. package/lib/src/core-components/src/utils/abstracts/theme/ThemeBoundary.js +8 -1
  169. package/lib/src/core-components/src/utils/abstracts/theme/default-themes.js +30 -1
  170. package/lib/src/core-components/src/utils/abstracts/theme/index.js +3 -1
  171. package/lib/src/core-components/src/utils/abstracts/theme/theme.js +30 -1
  172. package/lib/src/core-components/src/utils/abstracts/theme/types.js +1 -1
  173. package/lib/src/core-components/src/utils/abstracts/theme/useTheme.js +17 -1
  174. package/lib/src/core-components/src/utils/abstracts/typography/index.js +25 -1
  175. package/lib/src/core-components/src/utils/context/DefaultsProvider.js +8 -1
  176. package/lib/src/core-components/src/utils/context/InternalProvider.js +24 -1
  177. package/lib/src/core-components/src/utils/context/index.js +2 -1
  178. package/lib/src/core-components/src/utils/designTokens.js +125 -1
  179. package/lib/src/core-components/src/utils/helpers/attachSubComponents.js +23 -1
  180. package/lib/src/core-components/src/utils/helpers/flattenChildren.js +11 -1
  181. package/lib/src/core-components/src/utils/helpers/getChildByType.js +3 -1
  182. package/lib/src/core-components/src/utils/helpers/index.js +5 -1
  183. package/lib/src/core-components/src/utils/helpers/isComponentType.js +16 -1
  184. package/lib/src/core-components/src/utils/helpers/separateChildrenByType.js +12 -1
  185. package/lib/src/core-components/src/utils/hooks/index.js +18 -1
  186. package/lib/src/core-components/src/utils/hooks/useClickOutside.js +18 -1
  187. package/lib/src/core-components/src/utils/hooks/useCombinedRefs.js +17 -1
  188. package/lib/src/core-components/src/utils/hooks/useDebouncedCallback.js +12 -1
  189. package/lib/src/core-components/src/utils/hooks/useDebouncedValue.js +20 -1
  190. package/lib/src/core-components/src/utils/hooks/useDeprecation.js +40 -1
  191. package/lib/src/core-components/src/utils/hooks/useDeviceDetect.js +10 -1
  192. package/lib/src/core-components/src/utils/hooks/useDeviceForm.js +24 -1
  193. package/lib/src/core-components/src/utils/hooks/useDisableBodyScroll.js +16 -1
  194. package/lib/src/core-components/src/utils/hooks/useHoverState.js +36 -1
  195. package/lib/src/core-components/src/utils/hooks/useId.js +7 -1
  196. package/lib/src/core-components/src/utils/hooks/useIsBrowser.js +11 -1
  197. package/lib/src/core-components/src/utils/hooks/useMediaQuery.js +16 -1
  198. package/lib/src/core-components/src/utils/hooks/useOverflow.js +22 -1
  199. package/lib/src/core-components/src/utils/hooks/useSafeLayoutEffect.js +5 -1
  200. package/lib/src/core-components/src/utils/hooks/useScrollingUp.js +18 -1
  201. package/lib/src/core-components/src/utils/hooks/useTrapFocus.js +30 -1
  202. package/lib/src/core-components/src/utils/hooks/useWindowDimensions.js +23 -1
  203. package/lib/src/core-components/src/utils/index.js +9 -1
  204. package/lib/src/core-components/src/utils/stories/Wrappers.js +23 -8
  205. package/lib/src/core-components/src/utils/stories/cleanProps.js +5 -1
  206. package/lib/src/core-components/src/utils/stories/index.js +4 -1
  207. package/lib/src/core-components/src/utils/stories/sleep.js +4 -1
  208. package/lib/src/core-components/src/utils/stories/view-ports.js +50 -1
  209. package/lib/src/core-components/src/utils/styling/calcWidthOfColumns.js +5 -1
  210. package/lib/src/core-components/src/utils/styling/createGridContainer.js +12 -6
  211. package/lib/src/core-components/src/utils/styling/createTransition.js +7 -2
  212. package/lib/src/core-components/src/utils/styling/forwardProps.js +10 -1
  213. package/lib/src/core-components/src/utils/styling/index.js +5 -1
  214. package/lib/src/core-components/src/utils/styling/pxToRem.js +6 -1
  215. package/lib/src/core-components/src/utils/testing/getComputedStyle.js +3 -1
  216. package/lib/src/core-components/src/utils/testing/index.js +1 -1
  217. package/lib/src/core-components/src/utils/utility.util.js +14 -1
  218. package/lib/src/core-components/tailwind.config.js +233 -1
  219. package/lib/src/core-hooks/index.js +3 -1
  220. package/lib/src/core-hooks/src/useClickOutside/useClickOutside.hook.js +46 -1
  221. package/lib/src/core-hooks/src/useDebounce/useDebounce.hook.js +30 -1
  222. package/lib/src/core-hooks/src/usePreventEKey/usePreventEKey.hook.js +8 -1
  223. package/lib/src/core-utils/index.js +7 -1
  224. package/lib/src/core-utils/src/calculation/calculation.util.js +89 -1
  225. package/lib/src/core-utils/src/colors/color.util.js +15 -1
  226. package/lib/src/core-utils/src/convert/numberToWords/numToWords.util.js +145 -1
  227. package/lib/src/core-utils/src/convert/typography/camelCaseToTitleCase.util.js +5 -1
  228. package/lib/src/core-utils/src/form-helper/form-helper.util.js +82 -1
  229. package/lib/src/core-utils/src/index.js +7 -1
  230. package/lib/src/core-utils/src/utility/utility.util.js +12 -1
  231. package/lib/src/core-utils/src/uuid/uuid.util.js +8 -1
  232. package/package.json +1 -1
@@ -1 +1,8 @@
1
- "use strict";"use client";import{jsx as o}from"react/jsx-runtime";import{createContext as s,useContext as n}from"react";export const DefaultsContext=s({}),DefaultsProvider=({value:t,children:e})=>{const r=n(DefaultsContext);return o(DefaultsContext.Provider,{value:{...r,...t},children:e})};
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext } from 'react';
4
+ export const DefaultsContext = createContext({});
5
+ export const DefaultsProvider = ({ value, children, }) => {
6
+ const currentDefaults = useContext(DefaultsContext);
7
+ return (_jsx(DefaultsContext.Provider, { value: { ...currentDefaults, ...value }, children: children }));
8
+ };
@@ -1 +1,24 @@
1
- "use strict";"use client";import{jsx as o}from"react/jsx-runtime";import{useTheme as t}from"../abstracts/theme";import{ThemeProvider as s}from"styled-components";const c=()=>navigator?.userAgent?.includes?.("jsdom");export const InternalProvider=({children:e})=>{const r=t();return o(s,{theme:r,children:e})};
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useTheme } from '../abstracts/theme';
4
+ import { ThemeProvider } from 'styled-components';
5
+ const isJSDOM = () => navigator?.userAgent?.includes?.('jsdom');
6
+ /**
7
+ * Provides internal stuff we need for our components.
8
+ * Injects Styled Components theme prop via context.
9
+ */
10
+ export const InternalProvider = ({ children, }) => {
11
+ const theme = useTheme();
12
+ // useEffect(() => {
13
+ // const style = getComputedStyle(document.body);
14
+ // const globalStylesExists = !!style.getPropertyValue(
15
+ // '--aui-global-styles-exists'
16
+ // );
17
+ // if (!globalStylesExists && isReactDevelopment() && !isJSDOM()) {
18
+ // console.error(
19
+ // 'ERROR: Your techabl UI components WILL BREAK in a future V4 minor version update. You must include GlobalStyles in your DOM.'
20
+ // );
21
+ // }
22
+ // }, []);
23
+ return _jsx(ThemeProvider, { theme: theme, children: children });
24
+ };
@@ -1 +1,2 @@
1
- "use strict";export*from"./DefaultsProvider";export*from"./InternalProvider";
1
+ export * from './DefaultsProvider';
2
+ export * from './InternalProvider';
@@ -1 +1,125 @@
1
- "use strict";const e=require("../../tailwind.config.js"),o=e.theme.extend;export const tokens={surface:o.colors["token-surface"],onSurface:o.colors["token-on-surface"],primary:o.colors["token-primary"],onPrimary:o.colors["token-on-primary"],outline:o.colors["token-outline"],outlineSoft:o.colors["token-outline-soft"],success:o.colors["token-success"],error:o.colors["token-error"],warning:o.colors["token-warning"],red:o.colors.red?.DEFAULT||"#ff0000",darkGray:o.colors.grey_0||"#4a4a4a",white:o.colors.white||"#ffffff",spacing025:o.spacing["token-025"],spacing050:o.spacing["token-050"],spacing075:o.spacing["token-075"],spacing100:o.spacing["token-100"],spacing150:o.spacing["token-150"],spacing200:o.spacing["token-200"],spacing300:o.spacing["token-300"],spacing400:o.spacing["token-400"],spacing500:o.spacing["token-500"],spacing600:o.spacing["token-600"],spacing800:o.spacing["token-800"],spacing1000:o.spacing["token-1000"],spacing1200:o.spacing["token-1200"],borderRadius025:o.borderRadius["token-025"],borderRadius050:o.borderRadius["token-050"],borderRadius100:o.borderRadius["token-100"],borderRadius200:o.borderRadius["token-200"],borderRadius300:o.borderRadius["token-300"],borderRadius400:o.borderRadius["token-400"],borderRadiusNone:o.borderRadius["token-none"],borderRadiusRound:o.borderRadius["token-round"],stateLayerNone:"var(--state-layer-none)",stateLayerHover:"var(--state-layer-hover)",stateLayerPress:"var(--state-layer-press)"};
1
+ const tailwindConfig = require('../../tailwind.config.js');
2
+ // const tailwindConfig = {
3
+ // theme: {
4
+ // extend: {
5
+ // colors: {
6
+ // current: 'currentColor',
7
+ // transparent: 'transparent',
8
+ // 'text-base': '#ffffff',
9
+ // primary: '#454cbf',
10
+ // secondary: '#c57c85',
11
+ // accent: '#422a68',
12
+ // black: '#000000',
13
+ // grey: '#6A727F',
14
+ // grey_0: '#4a4a4a',
15
+ // grey_1: '#707070',
16
+ // light_1: '#ebebeb',
17
+ // white: '#ffffff',
18
+ // background: '#ffffff',
19
+ // light_white: '#f4f6f6',
20
+ // red: {
21
+ // DEFAULT: '#ff0000',
22
+ // },
23
+ // orange: '#ffae1a',
24
+ // mono: '#754c00',
25
+ // 'border-red': '#ff0000',
26
+ // bgGrey: '#808080',
27
+ // stroke: '#E2E8F0',
28
+ // boxdark: '#24303F',
29
+ // 'boxdark-2': '#1A222C',
30
+ // strokedark: '#2E3A47',
31
+ // content: '#000000',
32
+ // 'form-strokedark': '#3d4d60',
33
+ // 'form-input': '#1d2a39',
34
+ // 'meta-1': '#DC3545',
35
+ // 'meta-2': '#EFF2F7',
36
+ // 'meta-3': '#10B981',
37
+ // 'meta-4': '#313D4A',
38
+ // 'meta-5': '#259AE6',
39
+ // 'meta-6': '#FFBA00',
40
+ // 'meta-7': '#FF6766',
41
+ // 'meta-8': '#F0950C',
42
+ // 'meta-9': '#E5E7EB',
43
+ // success: '#219653',
44
+ // danger: '#D34053',
45
+ // warning: '#FFA70B',
46
+ // // Design token colors - extending existing colors
47
+ // 'token-surface': 'var(--surface)',
48
+ // 'token-on-surface': 'var(--on-surface)',
49
+ // 'token-primary': 'var(--primary)',
50
+ // 'token-on-primary': 'var(--on-primary)',
51
+ // 'token-outline': 'var(--outline)',
52
+ // 'token-outline-soft': 'var(--outline-soft)',
53
+ // 'token-success': 'var(--status-success)',
54
+ // 'token-error': 'var(--status-error)',
55
+ // 'token-warning': 'var(--status-warning)',
56
+ // },
57
+ // spacing: {
58
+ // 'token-025': '0.125rem',
59
+ // 'token-050': '0.25rem',
60
+ // 'token-075': '0.375rem',
61
+ // 'token-100': '0.5rem',
62
+ // 'token-150': '0.75rem',
63
+ // 'token-200': '1rem',
64
+ // },
65
+ // borderRadius: {
66
+ // 'token-025': '0.125rem',
67
+ // 'token-050': '0.25rem',
68
+ // 'token-100': '0.5rem',
69
+ // 'token-200': '1rem',
70
+ // 'token-300': '1.5rem',
71
+ // },
72
+ // height: {
73
+ // 'screen/2': '50vh',
74
+ // screen98: '98vh',
75
+ // screen96: '96vh',
76
+ // screen94: '94vh',
77
+ // screen92: '92vh',
78
+ // },
79
+ // },
80
+ // },
81
+ // };
82
+ const theme = tailwindConfig.theme.extend;
83
+ // Extract all design tokens from tailwind.config.js
84
+ export const tokens = {
85
+ // Colors
86
+ surface: theme.colors['token-surface'],
87
+ onSurface: theme.colors['token-on-surface'],
88
+ primary: theme.colors['token-primary'],
89
+ onPrimary: theme.colors['token-on-primary'],
90
+ outline: theme.colors['token-outline'],
91
+ outlineSoft: theme.colors['token-outline-soft'],
92
+ success: theme.colors['token-success'],
93
+ error: theme.colors['token-error'],
94
+ warning: theme.colors['token-warning'],
95
+ red: theme.colors.red?.DEFAULT || '#ff0000',
96
+ darkGray: theme.colors.grey_0 || '#4a4a4a',
97
+ white: theme.colors.white || '#ffffff',
98
+ // Spacing
99
+ spacing025: theme.spacing['token-025'],
100
+ spacing050: theme.spacing['token-050'],
101
+ spacing075: theme.spacing['token-075'],
102
+ spacing100: theme.spacing['token-100'],
103
+ spacing150: theme.spacing['token-150'],
104
+ spacing200: theme.spacing['token-200'],
105
+ spacing300: theme.spacing['token-300'],
106
+ spacing400: theme.spacing['token-400'],
107
+ spacing500: theme.spacing['token-500'],
108
+ spacing600: theme.spacing['token-600'],
109
+ spacing800: theme.spacing['token-800'],
110
+ spacing1000: theme.spacing['token-1000'],
111
+ spacing1200: theme.spacing['token-1200'],
112
+ // Border Radius
113
+ borderRadius025: theme.borderRadius['token-025'],
114
+ borderRadius050: theme.borderRadius['token-050'],
115
+ borderRadius100: theme.borderRadius['token-100'],
116
+ borderRadius200: theme.borderRadius['token-200'],
117
+ borderRadius300: theme.borderRadius['token-300'],
118
+ borderRadius400: theme.borderRadius['token-400'],
119
+ borderRadiusNone: theme.borderRadius['token-none'],
120
+ borderRadiusRound: theme.borderRadius['token-round'],
121
+ // State Layer (from CSS variables, not in tailwind config)
122
+ stateLayerNone: 'var(--state-layer-none)',
123
+ stateLayerHover: 'var(--state-layer-hover)',
124
+ stateLayerPress: 'var(--state-layer-press)',
125
+ };
@@ -1 +1,23 @@
1
- "use strict";export function attachSubComponents(a,e,t){return Object.values(t).forEach(c=>c.displayName=`${a}.${c.displayName}`),Object.assign(e,{displayName:a},t)}
1
+ /**
2
+ * Attaches subcomponents to a parent component for use in
3
+ * composed components. Example:
4
+ * ```tsx
5
+ * <Parent>
6
+ * <Parent.Title>abc</Parent.Title>
7
+ * <Parent.Body prop1="foobar"/>
8
+ * </Parent>
9
+ * ```
10
+ *
11
+ * This function also sets displayname on the parent component
12
+ * and all children component, and has the correct return type
13
+ * for typescript.
14
+ *
15
+ * @param displayName topLevelComponent's displayName
16
+ * @param topLevelComponent the parent element of the composed component
17
+ * @param otherComponents an object of child components (keys are the names of the child components)
18
+ * @returns the top level component with otherComponents as static properties
19
+ */
20
+ export function attachSubComponents(displayName, topLevelComponent, otherComponents) {
21
+ Object.values(otherComponents).forEach((component) => (component.displayName = `${displayName}.${component.displayName}`));
22
+ return Object.assign(topLevelComponent, { displayName }, otherComponents);
23
+ }
@@ -1 +1,11 @@
1
- "use strict";import t from"react";import{isComponentType as o}from"./isComponentType";export const flattenChildren=n=>t.Children.toArray(n).reduce((e,r)=>o(r,t.Fragment)?e.concat(...flattenChildren(r.props.children)):e.concat(r),[]);
1
+ import React from 'react';
2
+ import { isComponentType } from './isComponentType';
3
+ // Source: https://github.com/grrowl/react-keyed-flatten-children/blob/master/index.ts
4
+ export const flattenChildren = (children) => React.Children.toArray(children).reduce((acc, child) => {
5
+ if (isComponentType(child, React.Fragment)) {
6
+ return acc.concat(...flattenChildren(child.props.children));
7
+ }
8
+ else {
9
+ return acc.concat(child);
10
+ }
11
+ }, []);
@@ -1 +1,3 @@
1
- "use strict";import e from"react";import{isComponentType as i}from"./isComponentType";export const getChildByType=(o,r)=>e.Children.toArray(o).find(t=>i(t,r));
1
+ import React from 'react';
2
+ import { isComponentType } from './isComponentType';
3
+ export const getChildByType = (children, componentType) => React.Children.toArray(children).find((element) => isComponentType(element, componentType));
@@ -1 +1,5 @@
1
- "use strict";export*from"./attachSubComponents";export*from"./getChildByType";export*from"./flattenChildren";export*from"./isComponentType";export*from"./separateChildrenByType";
1
+ export * from './attachSubComponents';
2
+ export * from './getChildByType';
3
+ export * from './flattenChildren';
4
+ export * from './isComponentType';
5
+ export * from './separateChildrenByType';
@@ -1 +1,16 @@
1
- "use strict";import i from"react";export const isComponentType=(t,r)=>i.isValidElement(t)?t.type===r||t.type.target===r:!1;
1
+ import React from 'react';
2
+ /**
3
+ * Checks if a ReactNode is an Element of some component.
4
+ * Supports components that are styled using styled-components.
5
+ * Returns false if element is not a ReactElement.
6
+ *
7
+ * @param element a react node to check
8
+ * @param componentType the component type to check
9
+ * @returns true if element is an element with type == componentType
10
+ */
11
+ export const isComponentType = (element, componentType) => {
12
+ if (!React.isValidElement(element))
13
+ return false;
14
+ return (element.type === componentType ||
15
+ element.type.target === componentType);
16
+ };
@@ -1 +1,12 @@
1
- "use strict";import{isComponentType as n}from"./isComponentType";import{flattenChildren as f}from"./flattenChildren";export const separateChildrenByType=(p,...r)=>f(p).reduce((e,t)=>{const i=r.findIndex(d=>n(t,d));return i!==-1?e[i].push(t):e[r.length].push(t),e},[...r.map(()=>[]),[]]);
1
+ import { isComponentType } from './isComponentType';
2
+ import { flattenChildren } from './flattenChildren';
3
+ export const separateChildrenByType = (children, ...componentTypes) => flattenChildren(children).reduce((acc, element) => {
4
+ const typeIndex = componentTypes.findIndex((componentType) => isComponentType(element, componentType));
5
+ if (typeIndex !== -1) {
6
+ acc[typeIndex].push(element);
7
+ }
8
+ else {
9
+ acc[componentTypes.length].push(element);
10
+ }
11
+ return acc;
12
+ }, [...componentTypes.map(() => []), []]);
@@ -1 +1,18 @@
1
- "use strict";"use client";export*from"./useClickOutside";export*from"./useCombinedRefs";export*from"./useDebouncedCallback";export*from"./useDebouncedValue";export*from"./useDeprecation";export*from"./useDeviceDetect";export*from"./useDeviceForm";export*from"./useDisableBodyScroll";export*from"./useHoverState";export*from"./useId";export*from"./useIsBrowser";export*from"./useMediaQuery";export*from"./useOverflow";export*from"./useSafeLayoutEffect";export*from"./useScrollingUp";export*from"./useTrapFocus";export*from"./useWindowDimensions";
1
+ 'use client';
2
+ export * from './useClickOutside';
3
+ export * from './useCombinedRefs';
4
+ export * from './useDebouncedCallback';
5
+ export * from './useDebouncedValue';
6
+ export * from './useDeprecation';
7
+ export * from './useDeviceDetect';
8
+ export * from './useDeviceForm';
9
+ export * from './useDisableBodyScroll';
10
+ export * from './useHoverState';
11
+ export * from './useId';
12
+ export * from './useIsBrowser';
13
+ export * from './useMediaQuery';
14
+ export * from './useOverflow';
15
+ export * from './useSafeLayoutEffect';
16
+ export * from './useScrollingUp';
17
+ export * from './useTrapFocus';
18
+ export * from './useWindowDimensions';
@@ -1 +1,18 @@
1
- "use strict";import{useEffect as s,useRef as f}from"react";const o=["mousedown","touchstart"];export function useClickOutside(n,c){const u=f(null),t=c??u;return s(()=>{const r=e=>{t.current&&!t.current.contains(e.target)&&n()};return o.forEach(e=>document.addEventListener(e,r)),()=>{o.forEach(e=>document.removeEventListener(e,r))}},[t,n]),t}
1
+ import { useEffect, useRef } from 'react';
2
+ const CLICK_EVENTS = ['mousedown', 'touchstart'];
3
+ export function useClickOutside(handler, targetRef) {
4
+ const defaultRef = useRef(null);
5
+ const ref = targetRef ?? defaultRef;
6
+ useEffect(() => {
7
+ const listener = (event) => {
8
+ if (ref.current && !ref.current.contains(event.target)) {
9
+ handler();
10
+ }
11
+ };
12
+ CLICK_EVENTS.forEach((fn) => document.addEventListener(fn, listener));
13
+ return () => {
14
+ CLICK_EVENTS.forEach((fn) => document.removeEventListener(fn, listener));
15
+ };
16
+ }, [ref, handler]);
17
+ return ref;
18
+ }
@@ -1 +1,17 @@
1
- "use strict";import{useCallback as e}from"react";export function useCombinedRefs(...t){return e(o=>{t.forEach(n=>{n&&(typeof n=="function"?n(o):n.current=o)})},[])}
1
+ import { useCallback } from 'react';
2
+ export function useCombinedRefs(
3
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
+ ...refs) {
5
+ return useCallback((value) => {
6
+ refs.forEach((ref) => {
7
+ if (!ref)
8
+ return;
9
+ if (typeof ref === 'function') {
10
+ ref(value);
11
+ }
12
+ else {
13
+ ref.current = value;
14
+ }
15
+ });
16
+ }, []);
17
+ }
@@ -1 +1,12 @@
1
- "use strict";import{useRef as n,useCallback as l}from"react";export function useDebouncedCallback(t,u,r){const e=n();return l((...o)=>{const c=()=>{clearTimeout(e.current),t(...o)};clearTimeout(e.current),e.current=setTimeout(c,r)},[t,r,...u])}
1
+ import { useRef, useCallback } from 'react';
2
+ export function useDebouncedCallback(func, deps, wait) {
3
+ const timeout = useRef();
4
+ return useCallback((...args) => {
5
+ const later = () => {
6
+ clearTimeout(timeout.current);
7
+ func(...args);
8
+ };
9
+ clearTimeout(timeout.current);
10
+ timeout.current = setTimeout(later, wait);
11
+ }, [func, wait, ...deps]);
12
+ }
@@ -1 +1,20 @@
1
- "use strict";import{useEffect as r,useState as f,useRef as o}from"react";export function useDebouncedValue(e,c={wait:300}){const[s,i]=f(e),u=o(!1),n=o(null),t=()=>window.clearTimeout(n.current);return r(()=>{u.current&&(t(),n.current=window.setTimeout(()=>{i(e)},c.wait))},[e]),r(()=>(u.current=!0,t),[]),[s,t]}
1
+ import { useEffect, useState, useRef } from 'react';
2
+ export function useDebouncedValue(value, options = { wait: 300 }) {
3
+ const [debouncedValue, setValue] = useState(value);
4
+ const mountedRef = useRef(false);
5
+ const timeoutRef = useRef(null);
6
+ const cancel = () => window.clearTimeout(timeoutRef.current);
7
+ useEffect(() => {
8
+ if (mountedRef.current) {
9
+ cancel();
10
+ timeoutRef.current = window.setTimeout(() => {
11
+ setValue(value);
12
+ }, options.wait);
13
+ }
14
+ }, [value]);
15
+ useEffect(() => {
16
+ mountedRef.current = true;
17
+ return cancel;
18
+ }, []);
19
+ return [debouncedValue, cancel];
20
+ }
@@ -1 +1,40 @@
1
- "use strict";import i,{useEffect as t}from"react";export const isReactDevelopment=()=>"_self"in i.createElement("div"),useDeprecation=({name:o,message:s,version:e})=>{isReactDevelopment()&&t(()=>{console.warn(`DEPRECATED: ${o} is deprecated and will be removed in version ${e}. ${s}`)},[])},useComponentDeprecation=({name:o,version:s,alternative:e})=>{useDeprecation({name:o,version:s,message:e?`Please use ${e} component instead.`:"Please remove it carefully."})},usePropDeprecation=({name:o,value:s,version:e,alternative:n})=>{s&&useDeprecation({name:o,version:e,message:n?`Please use ${n} prop instead.`:"Please remove it carefully."})},usePropValueDeprecation=({component:o,prop:s,currentValue:e,deprecatedValues:n,version:r})=>{t(()=>{isReactDevelopment()&&n.includes(e)&&console.warn(`DEPRECATED: The ${e} value for the ${s} prop on the ${o} component is deprecated and will be removed in version ${r}.`)},[e])};
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import React, { useEffect } from 'react';
3
+ // Since we have no module bundler it's the only way to detect dev env
4
+ export const isReactDevelopment = () => '_self' in React.createElement('div');
5
+ export const useDeprecation = ({ name, message, version }) => {
6
+ if (!isReactDevelopment())
7
+ return;
8
+ useEffect(() => {
9
+ console.warn(`DEPRECATED: ${name} is deprecated and will be removed in version ${version}. ${message}`);
10
+ }, []);
11
+ };
12
+ export const useComponentDeprecation = ({ name, version, alternative, }) => {
13
+ useDeprecation({
14
+ name,
15
+ version,
16
+ message: alternative
17
+ ? `Please use ${alternative} component instead.`
18
+ : `Please remove it carefully.`,
19
+ });
20
+ };
21
+ export const usePropDeprecation = ({ name, value, version, alternative, }) => {
22
+ if (value) {
23
+ useDeprecation({
24
+ name,
25
+ version,
26
+ message: alternative
27
+ ? `Please use ${alternative} prop instead.`
28
+ : `Please remove it carefully.`,
29
+ });
30
+ }
31
+ };
32
+ export const usePropValueDeprecation = ({ component, prop, currentValue, deprecatedValues, version, }) => {
33
+ useEffect(() => {
34
+ if (!isReactDevelopment())
35
+ return;
36
+ if (deprecatedValues.includes(currentValue)) {
37
+ console.warn(`DEPRECATED: The ${currentValue} value for the ${prop} prop on the ${component} component is deprecated and will be removed in version ${version}.`);
38
+ }
39
+ }, [currentValue]);
40
+ };
@@ -1 +1,10 @@
1
- "use strict";import{useMemo as e}from"react";export const useDeviceDetect=()=>e(()=>typeof window<"u"?{isMobile:!!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i),isFirefox:!!navigator.userAgent.toLowerCase().includes("firefox")}:{isMobile:!1,isFirefox:!1},[]);
1
+ import { useMemo } from 'react';
2
+ export const useDeviceDetect = () => useMemo(() => {
3
+ if (typeof window !== 'undefined') {
4
+ return {
5
+ isMobile: !!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i),
6
+ isFirefox: !!navigator.userAgent.toLowerCase().includes('firefox'),
7
+ };
8
+ }
9
+ return { isMobile: false, isFirefox: false };
10
+ }, []);
@@ -1 +1,24 @@
1
- "use strict";import{useWindowDimensions as o}from"./useWindowDimensions";import{Size as t}from"../abstracts";export var DeviceFormFactor;(function(e){e.Mobile="mobile",e.Tablet="tablet",e.Laptop="laptop",e.Desktop="desktop"})(DeviceFormFactor||(DeviceFormFactor={}));export function useDeviceForm(){const{width:e}=o();return e<t.MD?DeviceFormFactor.Mobile:e<t.MD2?DeviceFormFactor.Tablet:e<t.XL?DeviceFormFactor.Laptop:DeviceFormFactor.Desktop}
1
+ import { useWindowDimensions } from './useWindowDimensions';
2
+ import { Size } from '../abstracts';
3
+ export var DeviceFormFactor;
4
+ (function (DeviceFormFactor) {
5
+ DeviceFormFactor["Mobile"] = "mobile";
6
+ DeviceFormFactor["Tablet"] = "tablet";
7
+ DeviceFormFactor["Laptop"] = "laptop";
8
+ DeviceFormFactor["Desktop"] = "desktop";
9
+ })(DeviceFormFactor || (DeviceFormFactor = {}));
10
+ export function useDeviceForm() {
11
+ const { width } = useWindowDimensions();
12
+ if (width < Size.MD) {
13
+ return DeviceFormFactor.Mobile;
14
+ }
15
+ else if (width < Size.MD2) {
16
+ return DeviceFormFactor.Tablet;
17
+ }
18
+ else if (width < Size.XL) {
19
+ return DeviceFormFactor.Laptop;
20
+ }
21
+ else {
22
+ return DeviceFormFactor.Desktop;
23
+ }
24
+ }
@@ -1 +1,16 @@
1
- "use strict";import{useEffect as t}from"react";import{useId as e}from"./useId";export const useDisableBackgroundScroll=(o,s)=>{const r=e("disable-scroll");t(()=>{if(o)return s??=document.body,s.classList.add(r),()=>{s?.classList.remove(r)}},[o,s])},useDisableBodyScroll=useDisableBackgroundScroll;
1
+ import { useEffect } from 'react';
2
+ import { useId } from './useId';
3
+ export const useDisableBackgroundScroll = (shouldDisableScroll, backgroundElement) => {
4
+ const className = useId('disable-scroll');
5
+ useEffect(() => {
6
+ if (!shouldDisableScroll)
7
+ return;
8
+ backgroundElement ??= document.body;
9
+ backgroundElement.classList.add(className);
10
+ return () => {
11
+ backgroundElement?.classList.remove(className);
12
+ };
13
+ }, [shouldDisableScroll, backgroundElement]);
14
+ };
15
+ /** @deprecated Prefer `useDisableBackgroundScroll` instead */
16
+ export const useDisableBodyScroll = useDisableBackgroundScroll;
@@ -1 +1,36 @@
1
- "use strict";import{useState as r,useCallback as e,useEffect as d}from"react";export const useHoverState=(c=!1)=>{const[a,o]=r(!1),[t,n]=r(!1),v=e(()=>{o(!0)},[]),f=e(()=>{o(!1)},[]),i=e(()=>{n(!0)},[]),s=e(()=>{n(!1)},[]);return d(()=>{const u=()=>{t&&s()};return document.addEventListener("mouseup",u),()=>{document.removeEventListener("mouseup",u)}},[t,s]),{hoverState:c?"disabled":t?"active":a?"hover":"default",onMouseOver:v,onMouseOut:f,onMouseDown:i,onMouseUp:s}};
1
+ import { useState, useCallback, useEffect } from 'react';
2
+ export const useHoverState = (disabled = false) => {
3
+ const [isHovered, setIsHovered] = useState(false);
4
+ const [isActive, setIsActive] = useState(false);
5
+ const onMouseOver = useCallback(() => {
6
+ setIsHovered(true);
7
+ }, []);
8
+ const onMouseOut = useCallback(() => {
9
+ setIsHovered(false);
10
+ }, []);
11
+ const onMouseDown = useCallback(() => {
12
+ setIsActive(true);
13
+ }, []);
14
+ const onMouseUp = useCallback(() => {
15
+ setIsActive(false);
16
+ }, []);
17
+ useEffect(() => {
18
+ const event = () => {
19
+ if (isActive) {
20
+ onMouseUp();
21
+ }
22
+ };
23
+ document.addEventListener('mouseup', event);
24
+ return () => {
25
+ document.removeEventListener('mouseup', event);
26
+ };
27
+ }, [isActive, onMouseUp]);
28
+ const hoverState = disabled
29
+ ? 'disabled'
30
+ : isActive
31
+ ? 'active'
32
+ : isHovered
33
+ ? 'hover'
34
+ : 'default';
35
+ return { hoverState, onMouseOver, onMouseOut, onMouseDown, onMouseUp };
36
+ };
@@ -1 +1,7 @@
1
- "use strict";import{useId as o}from"react";const r="tech-abl-ui";export const useId=(t,e)=>{const s=`${r}-${t}-${o()}`;return e??s};
1
+ // import { useId as useReachId } from '@reach/auto-id';
2
+ import { useId as useReactId } from 'react';
3
+ const PREFIX = 'tech-abl-ui';
4
+ export const useId = (prefix, id) => {
5
+ const randId = `${PREFIX}-${prefix}-${useReactId()}`;
6
+ return id ?? randId;
7
+ };
@@ -1 +1,11 @@
1
- "use strict";import{useEffect as r,useState as t}from"react";export const useIsBrowser=()=>{const[e,s]=t(!1);return r(()=>{s(!0)},[]),e};
1
+ import { useEffect, useState } from 'react';
2
+ // sometimes components cannot be rendered on the server.
3
+ // so using `useEffect` ensures that the code is only rendered on the client side
4
+ // use this hook to avoid hydration errors
5
+ export const useIsBrowser = () => {
6
+ const [isBrowser, setIsBrowser] = useState(false);
7
+ useEffect(() => {
8
+ setIsBrowser(true);
9
+ }, []);
10
+ return isBrowser;
11
+ };
@@ -1 +1,16 @@
1
- "use strict";import{useEffect as r,useState as a}from"react";export const useMediaQuery=s=>{if(typeof window>"u")return!1;const[e,n]=a(!1);return r(()=>{const t=window.matchMedia(s);t.matches!==e&&n(t.matches);const i=()=>n(t.matches);return window.addEventListener("resize",i),()=>window.removeEventListener("resize",i)},[e,s]),e};
1
+ import { useEffect, useState } from 'react';
2
+ export const useMediaQuery = (query) => {
3
+ if (typeof window === 'undefined')
4
+ return false;
5
+ const [matches, setMatches] = useState(false);
6
+ useEffect(() => {
7
+ const media = window.matchMedia(query);
8
+ if (media.matches !== matches) {
9
+ setMatches(media.matches);
10
+ }
11
+ const listener = () => setMatches(media.matches);
12
+ window.addEventListener('resize', listener);
13
+ return () => window.removeEventListener('resize', listener);
14
+ }, [matches, query]);
15
+ return matches;
16
+ };
@@ -1 +1,22 @@
1
- "use strict";import{useState as c}from"react";import{useSafeLayoutEffect as i}from"./useSafeLayoutEffect";export const useOverflow=o=>{const[s,n]=c(!1);return i(()=>{const{current:e}=o,t=()=>{if(!e)return;const f=e.scrollHeight>e.clientHeight;n(f)};let r;return e&&(r=new ResizeObserver(t),r.observe(e),t()),()=>r?.disconnect()}),s};
1
+ import { useState } from 'react';
2
+ import { useSafeLayoutEffect } from './useSafeLayoutEffect';
3
+ export const useOverflow = (ref) => {
4
+ const [isOverflow, setIsOverflow] = useState(false);
5
+ useSafeLayoutEffect(() => {
6
+ const { current } = ref;
7
+ const trigger = () => {
8
+ if (!current)
9
+ return;
10
+ const hasOverflow = current.scrollHeight > current.clientHeight;
11
+ setIsOverflow(hasOverflow);
12
+ };
13
+ let observer;
14
+ if (current) {
15
+ observer = new ResizeObserver(trigger);
16
+ observer.observe(current);
17
+ trigger();
18
+ }
19
+ return () => observer?.disconnect();
20
+ });
21
+ return isOverflow;
22
+ };
@@ -1 +1,5 @@
1
- "use strict";import e from"react";export const useSafeLayoutEffect=typeof window<"u"?e.useLayoutEffect:e.useEffect;
1
+ import React from 'react';
2
+ /**
3
+ * Version of useLayoutEffect that doesn't throw errors in SSR.
4
+ */
5
+ export const useSafeLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
@@ -1 +1,18 @@
1
- "use strict";import{useEffect as c,useRef as i,useState as u}from"react";export const useScrollingUp=(e=!1)=>{if(typeof window>"u")return e;const[s,l]=u(e),r=i(window.scrollY);return c(()=>{const o=()=>{const n=window.pageYOffset,t=r.current>n;l(t),r.current=n};return window.addEventListener("scroll",o,{passive:!0}),()=>window.removeEventListener("scroll",o)},[]),s};
1
+ import { useEffect, useRef, useState } from 'react';
2
+ export const useScrollingUp = (initialState = false) => {
3
+ if (typeof window === 'undefined')
4
+ return initialState;
5
+ const [scrollingUp, setScrollingUp] = useState(initialState);
6
+ const prevScroll = useRef(window.scrollY);
7
+ useEffect(() => {
8
+ const handleScroll = () => {
9
+ const currScroll = window.pageYOffset;
10
+ const isScrolled = prevScroll.current > currScroll;
11
+ setScrollingUp(isScrolled);
12
+ prevScroll.current = currScroll;
13
+ };
14
+ window.addEventListener('scroll', handleScroll, { passive: true });
15
+ return () => window.removeEventListener('scroll', handleScroll);
16
+ }, []);
17
+ return scrollingUp;
18
+ };
@@ -1 +1,30 @@
1
- "use strict";import{useEffect as c}from"react";export const keyDownHandler=(e,n,t)=>{t.key==="Tab"&&(!t.shiftKey&&document.activeElement===n&&(e.focus(),t.preventDefault()),t.shiftKey&&document.activeElement===e&&(n.focus(),t.preventDefault()))};const s=["a[href]","button:not([disabled])","textarea","input","select"];export const useTrapFocus=e=>{c(()=>{const n=e?.current?.querySelectorAll(s.join(", ")),t=n?.[0],r=n?.[n.length-1],o=keyDownHandler.bind(null,t,r);return e?.current?.addEventListener("keydown",o),()=>e?.current?.removeEventListener("keydown",o)},[e?.current])};
1
+ import { useEffect } from 'react';
2
+ export const keyDownHandler = (firstElement, lastElement, e) => {
3
+ if (e.key !== 'Tab')
4
+ return;
5
+ if (!e.shiftKey && document.activeElement === lastElement) {
6
+ firstElement.focus();
7
+ e.preventDefault();
8
+ }
9
+ if (e.shiftKey && document.activeElement === firstElement) {
10
+ lastElement.focus();
11
+ e.preventDefault();
12
+ }
13
+ };
14
+ const selectors = [
15
+ 'a[href]',
16
+ 'button:not([disabled])',
17
+ 'textarea',
18
+ 'input',
19
+ 'select',
20
+ ];
21
+ export const useTrapFocus = (ref) => {
22
+ useEffect(() => {
23
+ const focusableElements = ref?.current?.querySelectorAll(selectors.join(', '));
24
+ const firstElement = focusableElements?.[0];
25
+ const lastElement = focusableElements?.[focusableElements.length - 1];
26
+ const boundKeydownHandler = keyDownHandler.bind(null, firstElement, lastElement);
27
+ ref?.current?.addEventListener('keydown', boundKeydownHandler);
28
+ return () => ref?.current?.removeEventListener('keydown', boundKeydownHandler);
29
+ }, [ref?.current]);
30
+ };