anteriority-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/.github/workflows/ci.yml +31 -0
  2. package/.github/workflows/publish.yml +45 -0
  3. package/.npmrc.bak +1 -0
  4. package/.storybook/main.js +15 -0
  5. package/.storybook/preview.jsx +26 -0
  6. package/AnteriorityUI.md +2400 -0
  7. package/CLAUDE.md +91 -0
  8. package/README.md +182 -0
  9. package/assets/anteriorityUI/AnteriorityUI.logo.jpeg +0 -0
  10. package/assets/favicon/anteriorityUI.ico +0 -0
  11. package/common/api/client.js +43 -0
  12. package/common/storage/LocalStorage.js +13 -0
  13. package/common/styles/typography.css +5 -0
  14. package/common/styles/variables.css +192 -0
  15. package/common/theme/muiTheme.js +9 -0
  16. package/features/password-reset/api.js +39 -0
  17. package/features/user-profile/api.js +5 -0
  18. package/hooks/useAdminPasswordReset.js +133 -0
  19. package/index.js +57 -0
  20. package/package.json +57 -0
  21. package/pnpm-workspace.yaml +3 -0
  22. package/screens/components/AlertModal/AlertModal.jsx +259 -0
  23. package/screens/components/AlertModal/AlertModal.module.css +185 -0
  24. package/screens/components/AlertModal/AlertModal.stories.jsx +87 -0
  25. package/screens/components/Avatar/index.jsx +0 -0
  26. package/screens/components/Avatar/index.module.css +0 -0
  27. package/screens/components/Avatar/utils.js +0 -0
  28. package/screens/components/Badge/index.jsx +33 -0
  29. package/screens/components/Badge/index.module.css +18 -0
  30. package/screens/components/Badge/index.stories.jsx +40 -0
  31. package/screens/components/Barnner/index.jsx +21 -0
  32. package/screens/components/Barnner/index.module.css +33 -0
  33. package/screens/components/Barnner/index.stories.jsx +39 -0
  34. package/screens/components/Barnner/utils.js +0 -0
  35. package/screens/components/BlueLink/index.jsx +27 -0
  36. package/screens/components/BlueLink/index.module.css +11 -0
  37. package/screens/components/BlueLink/index.stories.jsx +29 -0
  38. package/screens/components/Breadcrumbs/index.jsx +62 -0
  39. package/screens/components/Breadcrumbs/index.module.css +158 -0
  40. package/screens/components/Breadcrumbs/index.stories.jsx +37 -0
  41. package/screens/components/Button/index.jsx +169 -0
  42. package/screens/components/Button/index.module.css +168 -0
  43. package/screens/components/Button/index.stories.jsx +71 -0
  44. package/screens/components/Button/utils.js +28 -0
  45. package/screens/components/CalendarComponent/CustomDatePicker.jsx +248 -0
  46. package/screens/components/CalendarComponent/CustomDatePicker.module.css +323 -0
  47. package/screens/components/CalendarComponent/CustomDatePicker.stories.jsx +45 -0
  48. package/screens/components/CalendarPicker/Constants.js +12 -0
  49. package/screens/components/CalendarPicker/index.jsx +263 -0
  50. package/screens/components/CalendarPicker/index.module.css +147 -0
  51. package/screens/components/CalendarPicker/index.stories.jsx +45 -0
  52. package/screens/components/CalendarPicker/utils.js +42 -0
  53. package/screens/components/CardV1/index.jsx +165 -0
  54. package/screens/components/CardV1/index.module.css +232 -0
  55. package/screens/components/CardV1/index.stories.jsx +62 -0
  56. package/screens/components/CardV1/utils.js +49 -0
  57. package/screens/components/ChatWindow/index.jsx +251 -0
  58. package/screens/components/ChatWindow/index.module.css +311 -0
  59. package/screens/components/ChatWindow/index.stories.jsx +62 -0
  60. package/screens/components/Checks/index.jsx +31 -0
  61. package/screens/components/Checks/index.module.css +32 -0
  62. package/screens/components/Checks/index.stories.jsx +32 -0
  63. package/screens/components/Container/index.jsx +36 -0
  64. package/screens/components/Container/index.module.css +24 -0
  65. package/screens/components/Container/index.stories.jsx +32 -0
  66. package/screens/components/CopyText/index.jsx +42 -0
  67. package/screens/components/CopyText/index.module.css +52 -0
  68. package/screens/components/CopyText/index.stories.jsx +24 -0
  69. package/screens/components/CountdownBar/constants.js +3 -0
  70. package/screens/components/CountdownBar/index.jsx +81 -0
  71. package/screens/components/CountdownBar/index.module.css +45 -0
  72. package/screens/components/CountdownBar/index.stories.jsx +43 -0
  73. package/screens/components/CountdownBar/utils.js +119 -0
  74. package/screens/components/DateTag/index.jsx +33 -0
  75. package/screens/components/DateTag/index.module.css +12 -0
  76. package/screens/components/DateTag/index.stories.jsx +29 -0
  77. package/screens/components/DesplegablePanel/constants.js +0 -0
  78. package/screens/components/DesplegablePanel/index.jsx +61 -0
  79. package/screens/components/DesplegablePanel/index.module.css +120 -0
  80. package/screens/components/DesplegablePanel/index.stories.jsx +44 -0
  81. package/screens/components/DesplegablePanel/utils.js +0 -0
  82. package/screens/components/DrawPanel/index.jsx +217 -0
  83. package/screens/components/DrawPanel/index.module.css +252 -0
  84. package/screens/components/DrawPanel/index.stories.jsx +66 -0
  85. package/screens/components/DrawPanel/utils.js +0 -0
  86. package/screens/components/Filter/index.jsx +105 -0
  87. package/screens/components/Filter/index.module.css +91 -0
  88. package/screens/components/Filter/index.stories.jsx +46 -0
  89. package/screens/components/Filter/utils.js +0 -0
  90. package/screens/components/FormControls/FormControls.module.css +86 -0
  91. package/screens/components/FormControls/index.jsx +51 -0
  92. package/screens/components/FormControls/index.stories.jsx +36 -0
  93. package/screens/components/Frame/index.jsx +54 -0
  94. package/screens/components/Frame/index.module.css +102 -0
  95. package/screens/components/Frame/index.stories.jsx +37 -0
  96. package/screens/components/Frame/utils.js +0 -0
  97. package/screens/components/GreenHighlight/index.jsx +11 -0
  98. package/screens/components/GreenHighlight/index.module.css +7 -0
  99. package/screens/components/GreenHighlight/index.stories.jsx +26 -0
  100. package/screens/components/GreenHighlight/utils.jsx +45 -0
  101. package/screens/components/HoursPicker/Constants.js +26 -0
  102. package/screens/components/HoursPicker/index.jsx +350 -0
  103. package/screens/components/HoursPicker/index.module.css +99 -0
  104. package/screens/components/HoursPicker/index.stories.jsx +44 -0
  105. package/screens/components/HoursPicker/utils.js +48 -0
  106. package/screens/components/InfoTooltip/index.jsx +59 -0
  107. package/screens/components/InfoTooltip/index.module.css +98 -0
  108. package/screens/components/InfoTooltip/index.stories.jsx +35 -0
  109. package/screens/components/Input/index.jsx +36 -0
  110. package/screens/components/Input/index.module.css +49 -0
  111. package/screens/components/Input/index.stories.jsx +37 -0
  112. package/screens/components/Input/utils.js +0 -0
  113. package/screens/components/Loading/index.jsx +76 -0
  114. package/screens/components/Loading/index.module.css +193 -0
  115. package/screens/components/Loading/index.stories.jsx +38 -0
  116. package/screens/components/Loading/utils.js +0 -0
  117. package/screens/components/MarkdownContent/index.jsx +16 -0
  118. package/screens/components/MarkdownContent/index.module.css +149 -0
  119. package/screens/components/MarkdownContent/index.stories.jsx +30 -0
  120. package/screens/components/MarkdownEditor/index.jsx +430 -0
  121. package/screens/components/MarkdownEditor/index.module.css +192 -0
  122. package/screens/components/MarkdownEditor/index.stories.jsx +50 -0
  123. package/screens/components/Material-UI/Components/InputWithIcon/index.jsx +87 -0
  124. package/screens/components/Material-UI/Components/InputWithIcon/index.stories.jsx +49 -0
  125. package/screens/components/Material-UI/Components/MenuPopover/index.jsx +117 -0
  126. package/screens/components/Material-UI/Components/MenuPopover/index.stories.jsx +36 -0
  127. package/screens/components/Material-UI/Components/MultilinePlaceholder/index.jsx +44 -0
  128. package/screens/components/Material-UI/Components/MultilinePlaceholder/index.stories.jsx +45 -0
  129. package/screens/components/Material-UI/Components/Paginador/index.jsx +79 -0
  130. package/screens/components/Material-UI/Components/Paginador/index.stories.jsx +49 -0
  131. package/screens/components/Material-UI/Components/Search/index.jsx +81 -0
  132. package/screens/components/Material-UI/Components/Search/index.stories.jsx +68 -0
  133. package/screens/components/Material-UI/Components/Selector/index.jsx +100 -0
  134. package/screens/components/Material-UI/Components/Selector/index.module.css +0 -0
  135. package/screens/components/Material-UI/Components/Selector/index.stories.jsx +52 -0
  136. package/screens/components/Material-UI/Components/Selector/utils.js +0 -0
  137. package/screens/components/Material-UI/Components/TextField/index.jsx +61 -0
  138. package/screens/components/Material-UI/Components/TextField/index.stories.jsx +53 -0
  139. package/screens/components/ModalTooltip/ModalTooltip.jsx +122 -0
  140. package/screens/components/ModalTooltip/ModalTooltip.module.css +65 -0
  141. package/screens/components/ModalTooltip/ModalTooltip.stories.jsx +39 -0
  142. package/screens/components/Notification/Error/ErrorMessage.jsx +30 -0
  143. package/screens/components/Notification/Error/ErrorMessage.module.css +57 -0
  144. package/screens/components/Notification/Error/ErrorMessage.stories.jsx +37 -0
  145. package/screens/components/PasswordResetPanel/index.jsx +325 -0
  146. package/screens/components/PasswordResetPanel/index.stories.jsx +26 -0
  147. package/screens/components/PlaceholderButton/index.jsx +169 -0
  148. package/screens/components/PlaceholderButton/index.module.css +162 -0
  149. package/screens/components/PlaceholderButton/index.stories.jsx +69 -0
  150. package/screens/components/PlaceholderButton/utils.js +42 -0
  151. package/screens/components/Profile/Avatar/index.jsx +125 -0
  152. package/screens/components/Profile/Avatar/index.module.css +86 -0
  153. package/screens/components/Profile/Avatar/index.stories.jsx +48 -0
  154. package/screens/components/Profile/Avatar/utils.js +18 -0
  155. package/screens/components/Profile/index.jsx +58 -0
  156. package/screens/components/Profile/index.module.css +0 -0
  157. package/screens/components/Profile/index.stories.jsx +38 -0
  158. package/screens/components/Profile/utils.js +0 -0
  159. package/screens/components/ScrollBar/index.jsx +62 -0
  160. package/screens/components/ScrollBar/index.module.css +78 -0
  161. package/screens/components/ScrollBar/index.stories.jsx +64 -0
  162. package/screens/components/ScrollBar/utils.js +127 -0
  163. package/screens/components/Sidebar/constants.js +16 -0
  164. package/screens/components/Sidebar/index.jsx +399 -0
  165. package/screens/components/Sidebar/index.module.css +405 -0
  166. package/screens/components/Sidebar/index.stories.jsx +86 -0
  167. package/screens/components/Sidebar/utils.js +75 -0
  168. package/screens/components/Skeleton/index.jsx +11 -0
  169. package/screens/components/Skeleton/index.module.css +26 -0
  170. package/screens/components/Skeleton/index.stories.jsx +42 -0
  171. package/screens/components/SubSidebarLayout/index.jsx +44 -0
  172. package/screens/components/SubSidebarLayout/index.module.css +80 -0
  173. package/screens/components/SubSidebarLayout/index.stories.jsx +51 -0
  174. package/screens/components/SummaryCard/index.jsx +50 -0
  175. package/screens/components/SummaryCard/index.module.css +30 -0
  176. package/screens/components/SummaryCard/index.stories.jsx +29 -0
  177. package/screens/components/Swich/constants.js +4 -0
  178. package/screens/components/Swich/index.jsx +85 -0
  179. package/screens/components/Swich/index.module.css +68 -0
  180. package/screens/components/Swich/index.stories.jsx +44 -0
  181. package/screens/components/Swich/utils.js +0 -0
  182. package/screens/components/TableA/index.jsx +156 -0
  183. package/screens/components/TableA/index.module.css +105 -0
  184. package/screens/components/TableA/index.stories.jsx +116 -0
  185. package/screens/components/TableA/utils.js +11 -0
  186. package/screens/components/TableB/index.jsx +222 -0
  187. package/screens/components/TableB/index.module.css +295 -0
  188. package/screens/components/TableB/index.stories.jsx +110 -0
  189. package/screens/components/TableB/utils.js +11 -0
  190. package/screens/components/ToggleCard/index.jsx +64 -0
  191. package/screens/components/ToggleCard/index.module.css +111 -0
  192. package/screens/components/ToggleCard/index.stories.jsx +49 -0
  193. package/screens/components/UserEditPopover/index.jsx +102 -0
  194. package/screens/components/UserEditPopover/index.module.css +97 -0
  195. package/screens/components/UserEditPopover/index.stories.jsx +49 -0
  196. package/scripts/build.mjs +129 -0
  197. package/scripts/check-case.mjs +127 -0
  198. package/scripts/verify-dist.mjs +45 -0
  199. package/vitest.config.js +36 -0
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import styles from './index.module.css';
3
+ import { useScrollbar } from './utils';
4
+
5
+ export default function ScrollBar({
6
+ children,
7
+ vertical = true,
8
+ horizontal = true,
9
+ autoHide = true,
10
+ maxHeight,
11
+ className = '',
12
+ contentClassName = '',
13
+ style
14
+ }) {
15
+ const { scrollRef, thumb, visible, handleScroll, handleMouseEnter, handleMouseLeave, startDrag } = useScrollbar({
16
+ vertical,
17
+ horizontal,
18
+ autoHide
19
+ });
20
+
21
+ return (
22
+ <div
23
+ className={`${styles.root} ${className}`}
24
+ style={style}
25
+ onMouseEnter={handleMouseEnter}
26
+ onMouseLeave={handleMouseLeave}
27
+ >
28
+ <div
29
+ ref={scrollRef}
30
+ className={`${styles.scrollArea} ${contentClassName}`}
31
+ style={{
32
+ overflowY: vertical ? 'auto' : 'hidden',
33
+ overflowX: horizontal ? 'auto' : 'hidden',
34
+ maxHeight
35
+ }}
36
+ onScroll={handleScroll}
37
+ >
38
+ {children}
39
+ </div>
40
+
41
+ {vertical && thumb.v.size > 0 && (
42
+ <div className={`${styles.trackVertical} ${visible ? styles.trackVisible : ''}`}>
43
+ <div
44
+ className={styles.thumbVertical}
45
+ style={{ height: thumb.v.size, transform: `translateY(${thumb.v.offset}px)` }}
46
+ onMouseDown={(e) => startDrag('v', e)}
47
+ />
48
+ </div>
49
+ )}
50
+
51
+ {horizontal && thumb.h.size > 0 && (
52
+ <div className={`${styles.trackHorizontal} ${visible ? styles.trackVisible : ''}`}>
53
+ <div
54
+ className={styles.thumbHorizontal}
55
+ style={{ width: thumb.h.size, transform: `translateX(${thumb.h.offset}px)` }}
56
+ onMouseDown={(e) => startDrag('h', e)}
57
+ />
58
+ </div>
59
+ )}
60
+ </div>
61
+ );
62
+ }
@@ -0,0 +1,78 @@
1
+ .root {
2
+ position: relative;
3
+ width: 100%;
4
+ }
5
+
6
+ .scrollArea {
7
+ width: 100%;
8
+ height: 100%;
9
+ scrollbar-width: none;
10
+ -ms-overflow-style: none;
11
+ }
12
+
13
+ .scrollArea::-webkit-scrollbar {
14
+ display: none;
15
+ }
16
+
17
+ .trackVertical {
18
+ position: absolute;
19
+ top: 4px;
20
+ right: 3px;
21
+ bottom: 4px;
22
+ width: 8px;
23
+ border-radius: 999px;
24
+ background-color: rgba(148, 163, 184, 0.12);
25
+ opacity: 0;
26
+ pointer-events: none;
27
+ transition: opacity 0.2s ease;
28
+ z-index: 5;
29
+ }
30
+
31
+ .trackHorizontal {
32
+ position: absolute;
33
+ left: 4px;
34
+ right: 4px;
35
+ bottom: 3px;
36
+ height: 8px;
37
+ border-radius: 999px;
38
+ background-color: rgba(148, 163, 184, 0.12);
39
+ opacity: 0;
40
+ pointer-events: none;
41
+ transition: opacity 0.2s ease;
42
+ z-index: 5;
43
+ }
44
+
45
+ .trackVisible {
46
+ opacity: 1;
47
+ }
48
+
49
+ .thumbVertical {
50
+ position: absolute;
51
+ top: 0;
52
+ right: 0;
53
+ width: 100%;
54
+ border-radius: 999px;
55
+ background-color: rgba(100, 116, 139, 0.45);
56
+ cursor: pointer;
57
+ pointer-events: auto;
58
+ transition: background-color 0.15s ease;
59
+ }
60
+
61
+ .thumbHorizontal {
62
+ position: absolute;
63
+ left: 0;
64
+ top: 0;
65
+ height: 100%;
66
+ border-radius: 999px;
67
+ background-color: rgba(100, 116, 139, 0.45);
68
+ cursor: pointer;
69
+ pointer-events: auto;
70
+ transition: background-color 0.15s ease;
71
+ }
72
+
73
+ .thumbVertical:hover,
74
+ .thumbVertical:active,
75
+ .thumbHorizontal:hover,
76
+ .thumbHorizontal:active {
77
+ background-color: rgba(71, 85, 105, 0.75);
78
+ }
@@ -0,0 +1,64 @@
1
+ import ScrollBar from './index';
2
+
3
+ export default {
4
+ title: 'Components/ScrollBar',
5
+ component: ScrollBar,
6
+ };
7
+
8
+ const LongContent = () => (
9
+ <div style={{ padding: '8px 16px' }}>
10
+ {Array.from({ length: 30 }).map((_, i) => (
11
+ <p key={i}>Line {i + 1} of scrollable content.</p>
12
+ ))}
13
+ </div>
14
+ );
15
+
16
+ const WideContent = () => (
17
+ <div style={{ width: '1600px', padding: '8px 16px' }}>
18
+ This is a very wide line of content that forces horizontal scrolling to appear within the ScrollBar container.
19
+ </div>
20
+ );
21
+
22
+ export const Vertical = {
23
+ args: {
24
+ vertical: true,
25
+ horizontal: false,
26
+ autoHide: true,
27
+ maxHeight: 200,
28
+ children: <LongContent />,
29
+ },
30
+ render: (args) => (
31
+ <div style={{ width: 320 }}>
32
+ <ScrollBar {...args} />
33
+ </div>
34
+ ),
35
+ };
36
+
37
+ export const Horizontal = {
38
+ args: {
39
+ vertical: false,
40
+ horizontal: true,
41
+ autoHide: true,
42
+ children: <WideContent />,
43
+ },
44
+ render: (args) => (
45
+ <div style={{ width: 320 }}>
46
+ <ScrollBar {...args} />
47
+ </div>
48
+ ),
49
+ };
50
+
51
+ export const AlwaysVisible = {
52
+ args: {
53
+ vertical: true,
54
+ horizontal: false,
55
+ autoHide: false,
56
+ maxHeight: 180,
57
+ children: <LongContent />,
58
+ },
59
+ render: (args) => (
60
+ <div style={{ width: 320 }}>
61
+ <ScrollBar {...args} />
62
+ </div>
63
+ ),
64
+ };
@@ -0,0 +1,127 @@
1
+ import { useRef, useState, useCallback, useEffect } from 'react';
2
+
3
+ const HIDE_DELAY = 800;
4
+ const MIN_THUMB_SIZE = 24;
5
+
6
+ const EMPTY_THUMB = { v: { size: 0, offset: 0 }, h: { size: 0, offset: 0 } };
7
+
8
+ export function useScrollbar({ vertical = true, horizontal = true, autoHide = true } = {}) {
9
+ const scrollRef = useRef(null);
10
+ const thumbRef = useRef(EMPTY_THUMB);
11
+ const [thumb, setThumb] = useState(EMPTY_THUMB);
12
+ const [visible, setVisible] = useState(!autoHide);
13
+ const hideTimeoutRef = useRef(null);
14
+ const dragStateRef = useRef(null);
15
+
16
+ const measure = useCallback(() => {
17
+ const el = scrollRef.current;
18
+ if (!el) return;
19
+ const next = { v: { size: 0, offset: 0 }, h: { size: 0, offset: 0 } };
20
+
21
+ if (vertical && el.scrollHeight > el.clientHeight) {
22
+ const ratio = el.clientHeight / el.scrollHeight;
23
+ const size = Math.max(ratio * el.clientHeight, MIN_THUMB_SIZE);
24
+ const travel = el.clientHeight - size;
25
+ const scrollRange = el.scrollHeight - el.clientHeight;
26
+ next.v = { size, offset: scrollRange > 0 ? (el.scrollTop / scrollRange) * travel : 0 };
27
+ }
28
+
29
+ if (horizontal && el.scrollWidth > el.clientWidth) {
30
+ const ratio = el.clientWidth / el.scrollWidth;
31
+ const size = Math.max(ratio * el.clientWidth, MIN_THUMB_SIZE);
32
+ const travel = el.clientWidth - size;
33
+ const scrollRange = el.scrollWidth - el.clientWidth;
34
+ next.h = { size, offset: scrollRange > 0 ? (el.scrollLeft / scrollRange) * travel : 0 };
35
+ }
36
+
37
+ thumbRef.current = next;
38
+ setThumb(next);
39
+ }, [vertical, horizontal]);
40
+
41
+ const showThenHide = useCallback(() => {
42
+ if (!autoHide) return;
43
+ setVisible(true);
44
+ clearTimeout(hideTimeoutRef.current);
45
+ hideTimeoutRef.current = setTimeout(() => setVisible(false), HIDE_DELAY);
46
+ }, [autoHide]);
47
+
48
+ const handleScroll = useCallback(() => {
49
+ measure();
50
+ showThenHide();
51
+ }, [measure, showThenHide]);
52
+
53
+ useEffect(() => {
54
+ const el = scrollRef.current;
55
+ if (!el) return;
56
+
57
+ // ResizeObserver fires an initial callback right after observe(), so it
58
+ // also covers the first measurement without calling setState synchronously here.
59
+ const ro = new ResizeObserver(() => measure());
60
+ ro.observe(el);
61
+ if (el.firstElementChild) ro.observe(el.firstElementChild);
62
+
63
+ return () => ro.disconnect();
64
+ }, [measure]);
65
+
66
+ useEffect(() => () => clearTimeout(hideTimeoutRef.current), []);
67
+
68
+ const handleMouseEnter = useCallback(() => {
69
+ clearTimeout(hideTimeoutRef.current);
70
+ setVisible(true);
71
+ }, []);
72
+
73
+ const handleMouseLeave = useCallback(() => {
74
+ showThenHide();
75
+ }, [showThenHide]);
76
+
77
+ const startDrag = useCallback((axis, event) => {
78
+ const el = scrollRef.current;
79
+ if (!el) return;
80
+ event.preventDefault();
81
+ event.stopPropagation();
82
+
83
+ const size = axis === 'v' ? thumbRef.current.v.size : thumbRef.current.h.size;
84
+ const travel = axis === 'v' ? el.clientHeight - size : el.clientWidth - size;
85
+ const scrollRange = axis === 'v' ? el.scrollHeight - el.clientHeight : el.scrollWidth - el.clientWidth;
86
+ const factor = travel > 0 ? scrollRange / travel : 0;
87
+
88
+ dragStateRef.current = {
89
+ axis,
90
+ startX: event.clientX,
91
+ startY: event.clientY,
92
+ startScrollLeft: el.scrollLeft,
93
+ startScrollTop: el.scrollTop,
94
+ factor
95
+ };
96
+ setVisible(true);
97
+
98
+ const onMove = (ev) => {
99
+ const state = dragStateRef.current;
100
+ const target = scrollRef.current;
101
+ if (!state || !target) return;
102
+ if (state.axis === 'v') {
103
+ target.scrollTop = state.startScrollTop + (ev.clientY - state.startY) * state.factor;
104
+ } else {
105
+ target.scrollLeft = state.startScrollLeft + (ev.clientX - state.startX) * state.factor;
106
+ }
107
+ };
108
+ const onUp = () => {
109
+ dragStateRef.current = null;
110
+ window.removeEventListener('mousemove', onMove);
111
+ window.removeEventListener('mouseup', onUp);
112
+ showThenHide();
113
+ };
114
+ window.addEventListener('mousemove', onMove);
115
+ window.addEventListener('mouseup', onUp);
116
+ }, [showThenHide]);
117
+
118
+ return {
119
+ scrollRef,
120
+ thumb,
121
+ visible,
122
+ handleScroll,
123
+ handleMouseEnter,
124
+ handleMouseLeave,
125
+ startDrag
126
+ };
127
+ }
@@ -0,0 +1,16 @@
1
+ export const TEXTS = {
2
+ searchPlaceholder: "Buscar...",
3
+ expandMenu: "Expandir menú",
4
+ collapseMenu: "Colapsar menú",
5
+ openMenu: "Ctrl + B",
6
+ closeMenu: "Ctrl + B",
7
+ logout: "Cerrar sesión",
8
+ logoutConfirmTitle: "¿Cerrar sesión?",
9
+ logoutConfirmMessage: "¿Estás seguro de que deseas salir del sistema?",
10
+ editItem: "Editar",
11
+ deleteItem: "Eliminar",
12
+ leaveItem: "Salir",
13
+ pinItem: "Fijar",
14
+ unpinItem: "Desfijar",
15
+ collaboratorsItem: "Colaboradores"
16
+ };