@tecsinapse/cortex-react 1.3.0-beta.2 → 1.3.0-beta.21

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 (213) hide show
  1. package/dist/cjs/components/Calendar.js +1 -0
  2. package/dist/cjs/components/CalendarCell.js +1 -0
  3. package/dist/cjs/components/CalendarGrid.js +1 -0
  4. package/dist/cjs/components/DatePickerInput.js +1 -0
  5. package/dist/cjs/components/DatePickerInputBase.js +2 -2
  6. package/dist/cjs/components/DateRangePickerInput.js +1 -0
  7. package/dist/cjs/components/Divider.js +10 -0
  8. package/dist/cjs/components/Input/Box.js +32 -0
  9. package/dist/cjs/components/Input/Face.js +30 -0
  10. package/dist/cjs/components/Input/Left.js +12 -0
  11. package/dist/cjs/components/Input/Mask.js +53 -0
  12. package/dist/cjs/components/Input/Right.js +12 -0
  13. package/dist/cjs/components/Input/Root.js +13 -0
  14. package/dist/cjs/components/Input/Search.js +25 -0
  15. package/dist/cjs/components/Input/index.js +23 -0
  16. package/dist/cjs/components/Masonry.js +49 -0
  17. package/dist/cjs/components/Menubar/Categories.js +10 -0
  18. package/dist/cjs/components/Menubar/Category.js +11 -0
  19. package/dist/cjs/components/Menubar/Dropdown.js +23 -0
  20. package/dist/cjs/components/Menubar/DropdownRoot.js +38 -0
  21. package/dist/cjs/components/Menubar/Header.js +25 -0
  22. package/dist/cjs/components/Menubar/IconControlSubItem.js +19 -0
  23. package/dist/cjs/components/Menubar/Item.js +22 -0
  24. package/dist/cjs/components/Menubar/ItemLink.js +18 -0
  25. package/dist/cjs/components/Menubar/Left.js +11 -0
  26. package/dist/cjs/components/Menubar/MostUsed.js +11 -0
  27. package/dist/cjs/components/Menubar/MostUsedItem.js +31 -0
  28. package/dist/cjs/components/Menubar/MostUsedList.js +63 -0
  29. package/dist/cjs/components/Menubar/Right.js +11 -0
  30. package/dist/cjs/components/Menubar/Root.js +11 -0
  31. package/dist/cjs/components/Menubar/Search.js +21 -0
  32. package/dist/cjs/components/Menubar/SubItem.js +20 -0
  33. package/dist/cjs/components/Menubar/index.js +33 -0
  34. package/dist/cjs/components/Popover/Content.js +31 -0
  35. package/dist/cjs/components/Popover/Context.js +15 -0
  36. package/dist/cjs/components/Popover/Provider.js +19 -0
  37. package/dist/cjs/components/Popover/Root.js +14 -0
  38. package/dist/cjs/components/Popover/Trigger.js +11 -0
  39. package/dist/cjs/components/Popover/index.js +15 -0
  40. package/dist/cjs/components/RadioButton.js +22 -0
  41. package/dist/cjs/components/RangeCalendar.js +1 -0
  42. package/dist/cjs/components/Select/Content.js +21 -0
  43. package/dist/cjs/components/Select/GroupedOptions.js +7 -4
  44. package/dist/cjs/components/Select/MultiCheckAllOptions.js +47 -0
  45. package/dist/cjs/components/Select/MultiGroupedOptions.js +44 -0
  46. package/dist/cjs/components/Select/MultiOption.js +43 -0
  47. package/dist/cjs/components/Select/MultiOptions.js +26 -0
  48. package/dist/cjs/components/Select/Option.js +4 -2
  49. package/dist/cjs/components/Select/Options.js +7 -3
  50. package/dist/cjs/components/Select/Popover.js +2 -5
  51. package/dist/cjs/components/Select/Root.js +3 -17
  52. package/dist/cjs/components/Select/Trigger.js +10 -8
  53. package/dist/cjs/components/Select/context.js +4 -0
  54. package/dist/cjs/components/Select/index.js +9 -1
  55. package/dist/cjs/components/Select/utils.js +16 -0
  56. package/dist/cjs/components/TimeFieldInput.js +2 -2
  57. package/dist/cjs/components/Tooltip.js +55 -0
  58. package/dist/cjs/components/utils.js +5 -0
  59. package/dist/cjs/hooks/useFloatingLogic.js +53 -0
  60. package/dist/cjs/index.js +30 -27
  61. package/dist/cjs/provider/MenubarProvider.js +22 -0
  62. package/dist/cjs/provider/SnackbarProvider.js +56 -0
  63. package/dist/cjs/service/SnackbarSonner.js +25 -5
  64. package/dist/cjs/styles/menubar.js +70 -0
  65. package/dist/esm/components/Calendar.js +1 -0
  66. package/dist/esm/components/CalendarCell.js +1 -0
  67. package/dist/esm/components/CalendarGrid.js +1 -0
  68. package/dist/esm/components/DatePickerInput.js +1 -0
  69. package/dist/esm/components/DatePickerInputBase.js +1 -1
  70. package/dist/esm/components/DateRangePickerInput.js +1 -0
  71. package/dist/esm/components/Divider.js +8 -0
  72. package/dist/esm/components/Input/Box.js +30 -0
  73. package/dist/esm/components/Input/Face.js +28 -0
  74. package/dist/esm/components/Input/Left.js +10 -0
  75. package/dist/esm/components/Input/Mask.js +49 -0
  76. package/dist/esm/components/Input/Right.js +10 -0
  77. package/dist/esm/components/Input/Root.js +11 -0
  78. package/dist/esm/components/Input/Search.js +23 -0
  79. package/dist/esm/components/Input/index.js +21 -0
  80. package/dist/esm/components/Masonry.js +47 -0
  81. package/dist/esm/components/Menubar/Categories.js +8 -0
  82. package/dist/esm/components/Menubar/Category.js +9 -0
  83. package/dist/esm/components/Menubar/Dropdown.js +21 -0
  84. package/dist/esm/components/Menubar/DropdownRoot.js +36 -0
  85. package/dist/esm/components/Menubar/Header.js +23 -0
  86. package/dist/esm/components/Menubar/IconControlSubItem.js +17 -0
  87. package/dist/esm/components/Menubar/Item.js +20 -0
  88. package/dist/esm/components/Menubar/ItemLink.js +16 -0
  89. package/dist/esm/components/Menubar/Left.js +9 -0
  90. package/dist/esm/components/Menubar/MostUsed.js +9 -0
  91. package/dist/esm/components/Menubar/MostUsedItem.js +29 -0
  92. package/dist/esm/components/Menubar/MostUsedList.js +61 -0
  93. package/dist/esm/components/Menubar/Right.js +9 -0
  94. package/dist/esm/components/Menubar/Root.js +9 -0
  95. package/dist/esm/components/Menubar/Search.js +19 -0
  96. package/dist/esm/components/Menubar/SubItem.js +18 -0
  97. package/dist/esm/components/Menubar/index.js +31 -0
  98. package/dist/esm/components/Popover/Content.js +29 -0
  99. package/dist/esm/components/Popover/Context.js +12 -0
  100. package/dist/esm/components/Popover/Provider.js +17 -0
  101. package/dist/esm/components/Popover/Root.js +12 -0
  102. package/dist/esm/components/Popover/Trigger.js +9 -0
  103. package/dist/esm/components/Popover/index.js +13 -0
  104. package/dist/esm/components/RadioButton.js +20 -0
  105. package/dist/esm/components/RangeCalendar.js +1 -0
  106. package/dist/esm/components/Select/Content.js +19 -0
  107. package/dist/esm/components/Select/GroupedOptions.js +7 -4
  108. package/dist/esm/components/Select/MultiCheckAllOptions.js +45 -0
  109. package/dist/esm/components/Select/MultiGroupedOptions.js +42 -0
  110. package/dist/esm/components/Select/MultiOption.js +41 -0
  111. package/dist/esm/components/Select/MultiOptions.js +24 -0
  112. package/dist/esm/components/Select/Option.js +4 -2
  113. package/dist/esm/components/Select/Options.js +7 -3
  114. package/dist/esm/components/Select/Popover.js +3 -6
  115. package/dist/esm/components/Select/Root.js +4 -18
  116. package/dist/esm/components/Select/Trigger.js +10 -8
  117. package/dist/esm/components/Select/context.js +4 -1
  118. package/dist/esm/components/Select/index.js +9 -1
  119. package/dist/esm/components/Select/utils.js +14 -0
  120. package/dist/esm/components/TimeFieldInput.js +1 -1
  121. package/dist/esm/components/Tooltip.js +50 -0
  122. package/dist/esm/components/utils.js +5 -1
  123. package/dist/esm/hooks/useFloatingLogic.js +51 -0
  124. package/dist/esm/index.js +14 -12
  125. package/dist/esm/provider/MenubarProvider.js +19 -0
  126. package/dist/esm/provider/SnackbarProvider.js +54 -0
  127. package/dist/esm/service/SnackbarSonner.js +25 -5
  128. package/dist/esm/styles/menubar.js +62 -0
  129. package/dist/types/components/Card.d.ts +3 -4
  130. package/dist/types/components/Divider.d.ts +5 -0
  131. package/dist/types/components/Drawer.d.ts +1 -2
  132. package/dist/types/components/Input/Box.d.ts +3 -0
  133. package/dist/types/components/Input/Face.d.ts +3 -0
  134. package/dist/types/components/Input/Left.d.ts +3 -0
  135. package/dist/types/components/Input/Mask.d.ts +5 -0
  136. package/dist/types/components/Input/Right.d.ts +3 -0
  137. package/dist/types/components/Input/Root.d.ts +3 -0
  138. package/dist/types/components/Input/Search.d.ts +3 -0
  139. package/dist/types/components/Input/index.d.ts +12 -0
  140. package/dist/types/components/Input/types.d.ts +27 -0
  141. package/dist/types/components/Masonry.d.ts +7 -0
  142. package/dist/types/components/Menubar/Categories.d.ts +3 -0
  143. package/dist/types/components/Menubar/Category.d.ts +8 -0
  144. package/dist/types/components/Menubar/Dropdown.d.ts +3 -0
  145. package/dist/types/components/Menubar/DropdownRoot.d.ts +17 -0
  146. package/dist/types/components/Menubar/Header.d.ts +6 -0
  147. package/dist/types/components/Menubar/IconControlSubItem.d.ts +6 -0
  148. package/dist/types/components/Menubar/Item.d.ts +10 -0
  149. package/dist/types/components/Menubar/ItemLink.d.ts +8 -0
  150. package/dist/types/components/Menubar/Left.d.ts +3 -0
  151. package/dist/types/components/Menubar/MostUsed.d.ts +8 -0
  152. package/dist/types/components/Menubar/MostUsedItem.d.ts +8 -0
  153. package/dist/types/components/Menubar/MostUsedList.d.ts +3 -0
  154. package/dist/types/components/Menubar/Right.d.ts +3 -0
  155. package/dist/types/components/Menubar/Root.d.ts +6 -0
  156. package/dist/types/components/Menubar/Search.d.ts +3 -0
  157. package/dist/types/components/Menubar/SubItem.d.ts +6 -0
  158. package/dist/types/components/Menubar/index.d.ts +15 -0
  159. package/dist/types/components/Menubar/interface.d.ts +4 -0
  160. package/dist/types/components/Popover/Content.d.ts +6 -0
  161. package/dist/types/components/Popover/Context.d.ts +18 -0
  162. package/dist/types/components/Popover/Provider.d.ts +8 -0
  163. package/dist/types/components/Popover/Root.d.ts +8 -0
  164. package/dist/types/components/Popover/Trigger.d.ts +5 -0
  165. package/dist/types/components/Popover/index.d.ts +6 -0
  166. package/dist/types/components/RadioButton.d.ts +6 -0
  167. package/dist/types/components/SearchInput.d.ts +0 -11
  168. package/dist/types/components/Select/Content.d.ts +6 -0
  169. package/dist/types/components/Select/MultiCheckAllOptions.d.ts +4 -0
  170. package/dist/types/components/Select/MultiGroupedOptions.d.ts +8 -0
  171. package/dist/types/components/Select/MultiOption.d.ts +6 -0
  172. package/dist/types/components/Select/MultiOptions.d.ts +7 -0
  173. package/dist/types/components/Select/Option.d.ts +2 -1
  174. package/dist/types/components/Select/Root.d.ts +1 -1
  175. package/dist/types/components/Select/context.d.ts +6 -4
  176. package/dist/types/components/Select/index.d.ts +5 -1
  177. package/dist/types/components/Select/utils.d.ts +1 -0
  178. package/dist/types/components/Tooltip.d.ts +13 -0
  179. package/dist/types/components/index.d.ts +5 -1
  180. package/dist/types/components/utils.d.ts +2 -0
  181. package/dist/types/hooks/index.d.ts +1 -0
  182. package/dist/types/hooks/useFloatingLogic.d.ts +46 -0
  183. package/dist/types/provider/MenubarProvider.d.ts +8 -0
  184. package/dist/types/provider/index.d.ts +2 -0
  185. package/dist/types/styles/menubar.d.ts +350 -0
  186. package/dist/types/tests/Input/Face.test.d.ts +1 -0
  187. package/dist/types/tests/Input/Left.test.d.ts +1 -0
  188. package/dist/types/tests/Input/Mask.test.d.ts +1 -0
  189. package/dist/types/tests/Input/Right.test.d.ts +1 -0
  190. package/dist/types/tests/Input/Root.test.d.ts +1 -0
  191. package/dist/types/tests/Input/Search.test.d.ts +1 -0
  192. package/dist/types/tests/Menubar/Categories.test.d.ts +1 -0
  193. package/dist/types/tests/Menubar/Category.test.d.ts +1 -0
  194. package/dist/types/tests/Menubar/Dropdown.test.d.ts +1 -0
  195. package/dist/types/tests/Menubar/DropdownRoot.test.d.ts +1 -0
  196. package/dist/types/tests/Menubar/Header.test.d.ts +1 -0
  197. package/dist/types/tests/Menubar/HeaderLeft.test.d.ts +1 -0
  198. package/dist/types/tests/Menubar/HeaderRigth.test.d.ts +1 -0
  199. package/dist/types/tests/Menubar/Item.test.d.ts +1 -0
  200. package/dist/types/tests/Menubar/MostUsed.test.d.ts +1 -0
  201. package/dist/types/tests/Menubar/MostUsedItem.test.d.ts +1 -0
  202. package/dist/types/tests/Menubar/MostUsedList.test.d.ts +1 -0
  203. package/dist/types/tests/Menubar/Root.test.d.ts +1 -0
  204. package/dist/types/tests/Menubar/SubItem.test.d.ts +1 -0
  205. package/dist/types/tests/Popover.test.d.ts +1 -0
  206. package/dist/types/tests/RadioButton.test.d.ts +1 -0
  207. package/dist/types/tests/Tooltip.test.d.ts +1 -0
  208. package/package.json +5 -3
  209. package/dist/cjs/components/Input.js +0 -81
  210. package/dist/esm/components/Input.js +0 -74
  211. package/dist/types/components/Input.d.ts +0 -34
  212. /package/dist/types/tests/{Input.test.d.ts → Divider.test.d.ts} +0 -0
  213. /package/dist/types/tests/{SearchInput.test.d.ts → Input/Box.test.d.ts} +0 -0
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var index = require('../Input/index.js');
5
+ var clsx = require('clsx');
6
+ var menubar = require('../../styles/menubar.js');
7
+ var MenubarProvider = require('../../provider/MenubarProvider.js');
8
+ require('../../provider/SnackbarProvider.js');
9
+
10
+ const Search = (props) => {
11
+ const [show] = MenubarProvider.useMenubar();
12
+ return /* @__PURE__ */ React.createElement(
13
+ index.Input.Search,
14
+ {
15
+ ...props,
16
+ className: clsx("mr-tera flex-1", menubar.animate({ show }))
17
+ }
18
+ );
19
+ };
20
+
21
+ module.exports = Search;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var menubar = require('../../styles/menubar.js');
5
+ var ItemLink = require('./ItemLink.js');
6
+
7
+ const { container } = menubar.subItem();
8
+ const SubItem = ({ children, href, className, ...rest }) => {
9
+ return /* @__PURE__ */ React.createElement(ItemLink, { href }, /* @__PURE__ */ React.createElement(
10
+ "div",
11
+ {
12
+ ...rest,
13
+ "data-testid": "sub-item-menubar",
14
+ className: container({ className })
15
+ },
16
+ children
17
+ ));
18
+ };
19
+
20
+ module.exports = SubItem;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var Root = require('./Root.js');
4
+ var Left = require('./Left.js');
5
+ var Search = require('./Search.js');
6
+ var Right = require('./Right.js');
7
+ var Dropdown = require('./Dropdown.js');
8
+ var MostUsed = require('./MostUsed.js');
9
+ var MostUsedItem = require('./MostUsedItem.js');
10
+ var Header = require('./Header.js');
11
+ var Category = require('./Category.js');
12
+ var Item = require('./Item.js');
13
+ var Categories = require('./Categories.js');
14
+ var SubItem = require('./SubItem.js');
15
+ var DropdownRoot = require('./DropdownRoot.js');
16
+
17
+ const Menubar = {
18
+ Root,
19
+ Header,
20
+ HeaderLeft: Left,
21
+ Search,
22
+ HeaderRight: Right,
23
+ Dropdown,
24
+ MostUsed,
25
+ MostUsedItem,
26
+ Category,
27
+ Categories,
28
+ Item,
29
+ SubItem,
30
+ DropdownRoot
31
+ };
32
+
33
+ exports.Menubar = Menubar;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var clsx = require('clsx');
4
+ var React = require('react');
5
+ var Context = require('./Context.js');
6
+
7
+ const PopoverContent = ({
8
+ children,
9
+ className
10
+ }) => {
11
+ const { isOpen, x, y, strategy, floatingStyles, refs } = Context.usePopoverContext();
12
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, isOpen ? /* @__PURE__ */ React.createElement(
13
+ "div",
14
+ {
15
+ ref: refs.setFloating,
16
+ className: clsx(
17
+ "border border-gray-200 bg-black p-[0px] rounded-md shadow-lg z-50",
18
+ className
19
+ ),
20
+ style: {
21
+ position: strategy,
22
+ top: y ?? 0,
23
+ left: x ?? 0,
24
+ ...floatingStyles
25
+ }
26
+ },
27
+ children
28
+ ) : /* @__PURE__ */ React.createElement(React.Fragment, null));
29
+ };
30
+
31
+ exports.PopoverContent = PopoverContent;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ const Context = React.createContext(void 0);
6
+ const usePopoverContext = () => {
7
+ const context = React.useContext(Context);
8
+ if (!context) {
9
+ throw new Error("usePopoverContext must be used within a PopoverProvider");
10
+ }
11
+ return context;
12
+ };
13
+
14
+ exports.Context = Context;
15
+ exports.usePopoverContext = usePopoverContext;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ require('@internationalized/date');
5
+ require('react-aria');
6
+ require('react-stately');
7
+ var useFloatingLogic = require('../../hooks/useFloatingLogic.js');
8
+ var Context = require('./Context.js');
9
+
10
+ const PopoverProvider = ({
11
+ children,
12
+ placement,
13
+ trigger
14
+ }) => {
15
+ const floatingLogic = useFloatingLogic.useFloatingLogic({ placement, trigger });
16
+ return /* @__PURE__ */ React.createElement(Context.Context.Provider, { value: { ...floatingLogic } }, children);
17
+ };
18
+
19
+ exports.PopoverProvider = PopoverProvider;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var index = require('./index.js');
5
+
6
+ const PopoverRoot = ({
7
+ children,
8
+ placement,
9
+ trigger
10
+ }) => {
11
+ return /* @__PURE__ */ React.createElement(index.Popover.Provider, { placement, trigger }, children);
12
+ };
13
+
14
+ exports.PopoverRoot = PopoverRoot;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var Context = require('./Context.js');
4
+ var utils = require('../utils.js');
5
+
6
+ const PopoverTrigger = ({ children }) => {
7
+ const { triggerProps } = Context.usePopoverContext();
8
+ return utils.cloneWithProps(children, triggerProps);
9
+ };
10
+
11
+ exports.PopoverTrigger = PopoverTrigger;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var Root = require('./Root.js');
4
+ var Trigger = require('./Trigger.js');
5
+ var Content = require('./Content.js');
6
+ var Provider = require('./Provider.js');
7
+
8
+ const Popover = {
9
+ Root: Root.PopoverRoot,
10
+ Trigger: Trigger.PopoverTrigger,
11
+ Content: Content.PopoverContent,
12
+ Provider: Provider.PopoverProvider
13
+ };
14
+
15
+ exports.Popover = Popover;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var cortexCore = require('@tecsinapse/cortex-core');
4
+ var React = require('react');
5
+
6
+ const { container, input, label: labelStyle } = cortexCore.radioButtonStyles();
7
+ const RadioButton = React.forwardRef(
8
+ ({ label, reversed, id, ...rest }, ref) => {
9
+ return /* @__PURE__ */ React.createElement(
10
+ "div",
11
+ {
12
+ className: container({ reversed }),
13
+ ref,
14
+ "data-testid": "radio-button-container"
15
+ },
16
+ /* @__PURE__ */ React.createElement("input", { id, type: "radio", className: input(), ...rest }),
17
+ label ? /* @__PURE__ */ React.createElement("label", { htmlFor: id, className: labelStyle() }, label) : /* @__PURE__ */ React.createElement(React.Fragment, null)
18
+ );
19
+ }
20
+ );
21
+
22
+ exports.RadioButton = RadioButton;
@@ -5,6 +5,7 @@ require('@internationalized/date');
5
5
  require('react-aria');
6
6
  require('react-stately');
7
7
  var useRangeCalendar = require('../hooks/useRangeCalendar.js');
8
+ require('@floating-ui/react');
8
9
  var CalendarGrid = require('./CalendarGrid.js');
9
10
  var CalendarHeader = require('./CalendarHeader.js');
10
11
 
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ require('@internationalized/date');
5
+ require('react-aria');
6
+ require('react-stately');
7
+ var useOutsideClickListener = require('../../hooks/useOutsideClickListener.js');
8
+ require('@floating-ui/react');
9
+ var Context = require('../Popover/Context.js');
10
+
11
+ const Content = ({ children }) => {
12
+ const { setIsOpen } = Context.usePopoverContext();
13
+ const ref = React.useRef(null);
14
+ useOutsideClickListener.useOutsideClickListener({
15
+ ref,
16
+ onClickOutside: () => setIsOpen(false)
17
+ });
18
+ return /* @__PURE__ */ React.createElement("div", { className: "w-full relative bg-white", ref }, children);
19
+ };
20
+
21
+ exports.Content = Content;
@@ -3,25 +3,28 @@
3
3
  var cortexCore = require('@tecsinapse/cortex-core');
4
4
  var React = require('react');
5
5
  var index = require('./index.js');
6
+ var Context = require('../Popover/Context.js');
6
7
  var context = require('./context.js');
7
8
 
8
- const { groupedTitle, containerGrouped } = cortexCore.selectVariants();
9
+ const { groupedTitle, list } = cortexCore.selectVariants();
9
10
  const SelectGroupedOptions = ({
10
11
  onSelect,
11
12
  groupedLabelExtractor,
12
13
  options
13
14
  }) => {
14
- const { setOpen, keyExtractor } = React.useContext(context.SelectContext);
15
+ const { keyExtractor } = React.useContext(context.SelectContext);
16
+ const { setIsOpen } = Context.usePopoverContext();
15
17
  const handleSelect = React.useCallback(
16
18
  (option) => {
17
19
  onSelect(option);
18
- setOpen?.(false);
20
+ setIsOpen?.(false);
19
21
  },
20
22
  [onSelect]
21
23
  );
22
- return /* @__PURE__ */ React.createElement("ul", { role: "select", className: containerGrouped() }, [...options ?? []].map(([key, value]) => /* @__PURE__ */ React.createElement("div", { key }, /* @__PURE__ */ React.createElement("span", { className: groupedTitle() }, groupedLabelExtractor?.(key)), value.map((option) => /* @__PURE__ */ React.createElement(
24
+ return /* @__PURE__ */ React.createElement("ul", { role: "select", className: list() }, [...options ?? []].map(([key, value]) => /* @__PURE__ */ React.createElement("div", { key }, /* @__PURE__ */ React.createElement("span", { className: groupedTitle() }, groupedLabelExtractor?.(key)), value.map((option) => /* @__PURE__ */ React.createElement(
23
25
  index.Select.Option,
24
26
  {
27
+ grouped: true,
25
28
  option,
26
29
  key: keyExtractor(option),
27
30
  onSelectOption: handleSelect
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var cortexCore = require('@tecsinapse/cortex-core');
4
+ var React = require('react');
5
+ var context = require('./context.js');
6
+
7
+ const SelectMultiCheckAllOptions = ({
8
+ checkAllLabel = "Select all"
9
+ }) => {
10
+ const { keyExtractor, value: currentValue = [] } = React.useContext(context.SelectContext);
11
+ const { options, onSelect } = React.useContext(context.SelectMultiOptionsContext);
12
+ const isChecked = React.useMemo(
13
+ () => (options ?? []).filter(
14
+ (it) => currentValue.find((value) => keyExtractor(value) === keyExtractor(it))
15
+ ).length == (options ?? []).length,
16
+ [keyExtractor, currentValue, options]
17
+ );
18
+ const checkAll = React.useCallback(() => {
19
+ {
20
+ let updateSelected = [...currentValue];
21
+ if (!isChecked) {
22
+ updateSelected = [
23
+ .../* @__PURE__ */ new Set([...updateSelected, ...options ?? []])
24
+ ];
25
+ } else {
26
+ const optionKeys = new Set(
27
+ options?.map((option2) => keyExtractor(option2))
28
+ );
29
+ updateSelected = updateSelected.filter(
30
+ (item) => !optionKeys.has(keyExtractor(item))
31
+ );
32
+ }
33
+ onSelect(updateSelected);
34
+ }
35
+ }, [options, onSelect]);
36
+ return options?.length ? /* @__PURE__ */ React.createElement("div", { className: cortexCore.option(), onClick: checkAll }, /* @__PURE__ */ React.createElement(
37
+ "input",
38
+ {
39
+ type: "checkbox",
40
+ className: cortexCore.checkbox(),
41
+ onChange: checkAll,
42
+ checked: isChecked
43
+ }
44
+ ), /* @__PURE__ */ React.createElement("span", null, checkAllLabel)) : /* @__PURE__ */ React.createElement(React.Fragment, null);
45
+ };
46
+
47
+ exports.SelectMultiCheckAllOptions = SelectMultiCheckAllOptions;
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var cortexCore = require('@tecsinapse/cortex-core');
4
+ var React = require('react');
5
+ var index = require('./index.js');
6
+ var context = require('./context.js');
7
+ var utils = require('./utils.js');
8
+
9
+ const { groupedTitle, list } = cortexCore.selectVariants();
10
+ const SelectMultiGroupedOptions = ({
11
+ onSelect,
12
+ groupedLabelExtractor,
13
+ options,
14
+ children
15
+ }) => {
16
+ const { value: currentValue = [], keyExtractor } = React.useContext(context.SelectContext);
17
+ const flattenMap = React.useMemo(
18
+ () => options ? Array.from(options?.values()).flatMap((value) => value) : [],
19
+ [options]
20
+ );
21
+ return /* @__PURE__ */ React.createElement("ul", { role: "select", className: list() }, /* @__PURE__ */ React.createElement(
22
+ context.SelectMultiOptionsContext.Provider,
23
+ {
24
+ value: { onSelect, options: flattenMap }
25
+ },
26
+ children,
27
+ [...options ?? []].map(([key, value]) => /* @__PURE__ */ React.createElement("div", { key }, /* @__PURE__ */ React.createElement("span", { className: groupedTitle() }, groupedLabelExtractor?.(key)), value.map((option) => /* @__PURE__ */ React.createElement(
28
+ index.Select.MultiOption,
29
+ {
30
+ grouped: true,
31
+ option,
32
+ key: keyExtractor(option),
33
+ onSelectOption: (option2) => utils.handleSelectMulti(
34
+ option2,
35
+ currentValue,
36
+ onSelect,
37
+ keyExtractor
38
+ )
39
+ }
40
+ ))))
41
+ ));
42
+ };
43
+
44
+ exports.SelectMultiGroupedOptions = SelectMultiGroupedOptions;
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var cortexCore = require('@tecsinapse/cortex-core');
4
+ var React = require('react');
5
+ var context = require('./context.js');
6
+
7
+ const SelectMultiOption = ({
8
+ onSelectOption,
9
+ option,
10
+ grouped = false
11
+ }) => {
12
+ const { keyExtractor, labelExtractor, value } = React.useContext(context.SelectContext);
13
+ const inputRef = React.useRef(null);
14
+ const isChecked = React.useMemo(
15
+ () => value?.length > 0 && value.find((it) => keyExtractor(it) === keyExtractor(option)) !== void 0,
16
+ [value, option]
17
+ );
18
+ const onClickOption = React.useCallback(() => {
19
+ onSelectOption(option);
20
+ inputRef.current?.click();
21
+ }, [onSelectOption, inputRef]);
22
+ return /* @__PURE__ */ React.createElement(
23
+ "li",
24
+ {
25
+ onClick: onClickOption,
26
+ className: cortexCore.option({ grouped }),
27
+ role: "option"
28
+ },
29
+ /* @__PURE__ */ React.createElement(
30
+ "input",
31
+ {
32
+ type: "checkbox",
33
+ checked: isChecked,
34
+ className: cortexCore.checkbox({ className: "pointer-events-none" }),
35
+ onChange: () => false,
36
+ ref: inputRef
37
+ }
38
+ ),
39
+ labelExtractor(option)
40
+ );
41
+ };
42
+
43
+ exports.SelectMultiOption = SelectMultiOption;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var cortexCore = require('@tecsinapse/cortex-core');
4
+ var React = require('react');
5
+ var index = require('./index.js');
6
+ var context = require('./context.js');
7
+ var utils = require('./utils.js');
8
+
9
+ const { list } = cortexCore.selectVariants();
10
+ const SelectMultiOptions = ({
11
+ onSelect,
12
+ options,
13
+ children
14
+ }) => {
15
+ const { keyExtractor, value: currentValue = [] } = React.useContext(context.SelectContext);
16
+ return /* @__PURE__ */ React.createElement(context.SelectMultiOptionsContext.Provider, { value: { onSelect, options } }, /* @__PURE__ */ React.createElement("ul", { role: "select", className: list() }, children, (options ?? []).map((option) => /* @__PURE__ */ React.createElement(
17
+ index.Select.MultiOption,
18
+ {
19
+ option,
20
+ key: keyExtractor(option),
21
+ onSelectOption: (option2) => utils.handleSelectMulti(option2, currentValue, onSelect, keyExtractor)
22
+ }
23
+ ))));
24
+ };
25
+
26
+ exports.SelectMultiOptions = SelectMultiOptions;
@@ -6,7 +6,8 @@ var context = require('./context.js');
6
6
 
7
7
  const SelectOption = ({
8
8
  onSelectOption,
9
- option
9
+ option,
10
+ grouped = false
10
11
  }) => {
11
12
  const { keyExtractor, labelExtractor, value } = React.useContext(context.SelectContext);
12
13
  return /* @__PURE__ */ React.createElement(
@@ -14,7 +15,8 @@ const SelectOption = ({
14
15
  {
15
16
  onClick: () => onSelectOption(option),
16
17
  className: cortexCore.option({
17
- selected: value && keyExtractor(value) === keyExtractor(option)
18
+ selected: value && keyExtractor(value) === keyExtractor(option),
19
+ grouped
18
20
  }),
19
21
  role: "option"
20
22
  },
@@ -1,22 +1,26 @@
1
1
  'use strict';
2
2
 
3
+ var cortexCore = require('@tecsinapse/cortex-core');
3
4
  var React = require('react');
4
5
  var index = require('./index.js');
6
+ var Context = require('../Popover/Context.js');
5
7
  var context = require('./context.js');
6
8
 
9
+ const { list } = cortexCore.selectVariants();
7
10
  const SelectOptions = ({
8
11
  onSelect,
9
12
  options
10
13
  }) => {
11
- const { setOpen, keyExtractor } = React.useContext(context.SelectContext);
14
+ const { keyExtractor } = React.useContext(context.SelectContext);
15
+ const { setIsOpen } = Context.usePopoverContext();
12
16
  const handleSelect = React.useCallback(
13
17
  (option) => {
14
18
  onSelect(option);
15
- setOpen?.(false);
19
+ setIsOpen?.(false);
16
20
  },
17
21
  [onSelect]
18
22
  );
19
- return /* @__PURE__ */ React.createElement("ul", { role: "select" }, (options ?? []).map((option) => /* @__PURE__ */ React.createElement(
23
+ return /* @__PURE__ */ React.createElement("ul", { role: "select", className: list() }, (options ?? []).map((option) => /* @__PURE__ */ React.createElement(
20
24
  index.Select.Option,
21
25
  {
22
26
  option,
@@ -1,13 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var cortexCore = require('@tecsinapse/cortex-core');
4
3
  var React = require('react');
5
- var context = require('./context.js');
4
+ var index = require('../Popover/index.js');
6
5
 
7
- const { dropdown } = cortexCore.selectVariants();
8
6
  const SelectPopover = ({ children }) => {
9
- const { open } = React.useContext(context.SelectContext);
10
- return /* @__PURE__ */ React.createElement("div", { className: dropdown({ open }), "data-testid": "select-popover" }, children);
7
+ return /* @__PURE__ */ React.createElement(index.Popover.Content, { className: "bg-white max-h-[30vh] w-full overflow-y-scroll gap-y-mili flex flex-col p-0" }, children);
11
8
  };
12
9
 
13
10
  exports.SelectPopover = SelectPopover;
@@ -1,10 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- require('@internationalized/date');
5
- require('react-aria');
6
- require('react-stately');
7
- var useOutsideClickListener = require('../../hooks/useOutsideClickListener.js');
4
+ var index = require('../Popover/index.js');
5
+ var Content = require('./Content.js');
8
6
  var context = require('./context.js');
9
7
 
10
8
  const SelectRoot = ({
@@ -13,19 +11,7 @@ const SelectRoot = ({
13
11
  keyExtractor,
14
12
  labelExtractor
15
13
  }) => {
16
- const [open, setOpen] = React.useState(false);
17
- const ref = React.useRef(null);
18
- useOutsideClickListener.useOutsideClickListener({
19
- ref,
20
- onClickOutside: () => setOpen?.(false)
21
- });
22
- return /* @__PURE__ */ React.createElement(
23
- context.SelectContext.Provider,
24
- {
25
- value: { value, open, setOpen, keyExtractor, labelExtractor }
26
- },
27
- /* @__PURE__ */ React.createElement("div", { className: "w-full relative bg-white", ref }, children)
28
- );
14
+ return /* @__PURE__ */ React.createElement(index.Popover.Provider, null, /* @__PURE__ */ React.createElement(index.Popover.Root, { placement: "bottom", trigger: "click" }, /* @__PURE__ */ React.createElement(context.SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React.createElement(Content.Content, null, children))));
29
15
  };
30
16
 
31
17
  exports.SelectRoot = SelectRoot;
@@ -3,26 +3,28 @@
3
3
  var cortexCore = require('@tecsinapse/cortex-core');
4
4
  var React = require('react');
5
5
  var io5 = require('react-icons/io5');
6
+ var index = require('../Popover/index.js');
6
7
  var context = require('./context.js');
7
8
 
8
9
  const { button } = cortexCore.selectVariants();
9
10
  const SelectTrigger = ({ label, disabled }) => {
10
- const { value, setOpen, labelExtractor, open } = React.useContext(context.SelectContext);
11
- const placeholder = React.useMemo(
12
- () => value ? labelExtractor(value) : label,
13
- [label, value]
14
- );
15
- return /* @__PURE__ */ React.createElement(
11
+ const { value, labelExtractor } = React.useContext(context.SelectContext);
12
+ const placeholder = React.useMemo(() => {
13
+ if (value?.length === 0 || !value) return label;
14
+ if (value?.length === 1) return labelExtractor(value[0]);
15
+ if (value?.length > 1) return `${value.length} items selected`;
16
+ return labelExtractor(value);
17
+ }, [label, value]);
18
+ return /* @__PURE__ */ React.createElement(index.Popover.Trigger, null, /* @__PURE__ */ React.createElement(
16
19
  "button",
17
20
  {
18
21
  className: button({ disabled }),
19
- onClick: () => setOpen?.(!open),
20
22
  disabled,
21
23
  role: "button"
22
24
  },
23
25
  /* @__PURE__ */ React.createElement("span", { "data-testid": "select-placeholder" }, placeholder),
24
26
  /* @__PURE__ */ React.createElement(io5.IoChevronDownOutline, null)
25
- );
27
+ ));
26
28
  };
27
29
 
28
30
  exports.SelectTrigger = SelectTrigger;
@@ -6,5 +6,9 @@ const SelectContext = React.createContext({
6
6
  keyExtractor: () => "",
7
7
  labelExtractor: () => ""
8
8
  });
9
+ const SelectMultiOptionsContext = React.createContext({
10
+ onSelect: () => ""
11
+ });
9
12
 
10
13
  exports.SelectContext = SelectContext;
14
+ exports.SelectMultiOptionsContext = SelectMultiOptionsContext;
@@ -1,6 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var GroupedOptions = require('./GroupedOptions.js');
4
+ var MultiCheckAllOptions = require('./MultiCheckAllOptions.js');
5
+ var MultiGroupedOptions = require('./MultiGroupedOptions.js');
6
+ var MultiOption = require('./MultiOption.js');
7
+ var MultiOptions = require('./MultiOptions.js');
4
8
  var Option = require('./Option.js');
5
9
  var Options = require('./Options.js');
6
10
  var Popover = require('./Popover.js');
@@ -13,7 +17,11 @@ const Select = {
13
17
  Popover: Popover.SelectPopover,
14
18
  Options: Options.SelectOptions,
15
19
  GroupedOptions: GroupedOptions.SelectGroupedOptions,
16
- Option: Option.SelectOption
20
+ Option: Option.SelectOption,
21
+ MultiOptions: MultiOptions.SelectMultiOptions,
22
+ MultiGroupedOptions: MultiGroupedOptions.SelectMultiGroupedOptions,
23
+ MultiOption: MultiOption.SelectMultiOption,
24
+ MultiCheckAllOptions: MultiCheckAllOptions.SelectMultiCheckAllOptions
17
25
  };
18
26
 
19
27
  exports.Select = Select;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ const handleSelectMulti = (option, value, onSelect, keyExtractor) => {
4
+ const current = Array.from(value ?? []);
5
+ const indexOf = current.findIndex(
6
+ (it) => keyExtractor(it) === keyExtractor(option)
7
+ );
8
+ if (indexOf === -1) {
9
+ current.push(option);
10
+ } else {
11
+ current.splice(indexOf, 1);
12
+ }
13
+ onSelect(current);
14
+ };
15
+
16
+ exports.handleSelectMulti = handleSelectMulti;
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var Input = require('./Input.js');
4
+ var index = require('./Input/index.js');
5
5
  var cortexCore = require('@tecsinapse/cortex-core');
6
6
  var TimeField = require('./TimeField.js');
7
7
 
8
8
  const TimeFieldInput = (props) => {
9
9
  const { onChange, value, label, variants } = props;
10
10
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
11
- Input.Input.Face,
11
+ index.Input.Face,
12
12
  {
13
13
  variants,
14
14
  className: "flex flex-row",