@xanui/ui 1.1.38 → 1.1.41

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 (157) hide show
  1. package/Accordion/index.cjs +96 -0
  2. package/Accordion/index.cjs.map +1 -0
  3. package/Accordion/index.js.map +1 -1
  4. package/Alert/index.cjs +121 -0
  5. package/Alert/index.cjs.map +1 -0
  6. package/Autocomplete/index.cjs +136 -0
  7. package/Autocomplete/index.cjs.map +1 -0
  8. package/Avatar/index.cjs +50 -0
  9. package/Avatar/index.cjs.map +1 -0
  10. package/Badge/index.cjs +109 -0
  11. package/Badge/index.cjs.map +1 -0
  12. package/Box/index.cjs +14 -0
  13. package/Box/index.cjs.map +1 -0
  14. package/Button/index.cjs +94 -0
  15. package/Button/index.cjs.map +1 -0
  16. package/ButtonGroup/index.cjs +58 -0
  17. package/ButtonGroup/index.cjs.map +1 -0
  18. package/Calendar/index.cjs +174 -0
  19. package/Calendar/index.cjs.map +1 -0
  20. package/CalendarInput/index.cjs +34 -0
  21. package/CalendarInput/index.cjs.map +1 -0
  22. package/Checkbox/index.cjs +58 -0
  23. package/Checkbox/index.cjs.map +1 -0
  24. package/Chip/index.cjs +76 -0
  25. package/Chip/index.cjs.map +1 -0
  26. package/CircleProgress/index.cjs +129 -0
  27. package/CircleProgress/index.cjs.map +1 -0
  28. package/ClickOutside/index.cjs +37 -0
  29. package/ClickOutside/index.cjs.map +1 -0
  30. package/Collaps/index.cjs +26 -0
  31. package/Collaps/index.cjs.map +1 -0
  32. package/Container/index.cjs +29 -0
  33. package/Container/index.cjs.map +1 -0
  34. package/DataFilter/index.cjs +78 -0
  35. package/DataFilter/index.cjs.map +1 -0
  36. package/DataFilter/options/DateFilter.cjs +32 -0
  37. package/DataFilter/options/DateFilter.cjs.map +1 -0
  38. package/DataFilter/options/DateRangeFilter.cjs +27 -0
  39. package/DataFilter/options/DateRangeFilter.cjs.map +1 -0
  40. package/DataFilter/options/MultiSelectFilter.cjs +38 -0
  41. package/DataFilter/options/MultiSelectFilter.cjs.map +1 -0
  42. package/DataFilter/options/NumberFilter.cjs +24 -0
  43. package/DataFilter/options/NumberFilter.cjs.map +1 -0
  44. package/DataFilter/options/NumberRangeFilter.cjs +29 -0
  45. package/DataFilter/options/NumberRangeFilter.cjs.map +1 -0
  46. package/DataFilter/options/SelectFilter.cjs +34 -0
  47. package/DataFilter/options/SelectFilter.cjs.map +1 -0
  48. package/DataFilter/options/TextFilter.cjs +24 -0
  49. package/DataFilter/options/TextFilter.cjs.map +1 -0
  50. package/Datatable/FilterBox.cjs +39 -0
  51. package/Datatable/FilterBox.cjs.map +1 -0
  52. package/Datatable/Row.cjs +59 -0
  53. package/Datatable/Row.cjs.map +1 -0
  54. package/Datatable/SelectedBox.cjs +21 -0
  55. package/Datatable/SelectedBox.cjs.map +1 -0
  56. package/Datatable/Table.cjs +23 -0
  57. package/Datatable/Table.cjs.map +1 -0
  58. package/Datatable/TableHead.cjs +61 -0
  59. package/Datatable/TableHead.cjs.map +1 -0
  60. package/Datatable/index.cjs +93 -0
  61. package/Datatable/index.cjs.map +1 -0
  62. package/Divider/index.cjs +31 -0
  63. package/Divider/index.cjs.map +1 -0
  64. package/Drawer/index.cjs +78 -0
  65. package/Drawer/index.cjs.map +1 -0
  66. package/Form/index.cjs +45 -0
  67. package/Form/index.cjs.map +1 -0
  68. package/GridContainer/index.cjs +19 -0
  69. package/GridContainer/index.cjs.map +1 -0
  70. package/GridItem/index.cjs +20 -0
  71. package/GridItem/index.cjs.map +1 -0
  72. package/IconButton/index.cjs +64 -0
  73. package/IconButton/index.cjs.map +1 -0
  74. package/Image/index.cjs +27 -0
  75. package/Image/index.cjs.map +1 -0
  76. package/Input/index.cjs +144 -0
  77. package/Input/index.cjs.map +1 -0
  78. package/InputNumber/index.cjs +32 -0
  79. package/InputNumber/index.cjs.map +1 -0
  80. package/Label/index.cjs +24 -0
  81. package/Label/index.cjs.map +1 -0
  82. package/Layer/index.cjs +62 -0
  83. package/Layer/index.cjs.map +1 -0
  84. package/LineProgress/index.cjs +59 -0
  85. package/LineProgress/index.cjs.map +1 -0
  86. package/List/ListContext.cjs +11 -0
  87. package/List/ListContext.cjs.map +1 -0
  88. package/List/index.cjs +63 -0
  89. package/List/index.cjs.map +1 -0
  90. package/ListItem/index.cjs +54 -0
  91. package/ListItem/index.cjs.map +1 -0
  92. package/LoadingBox/index.cjs +32 -0
  93. package/LoadingBox/index.cjs.map +1 -0
  94. package/Menu/index.cjs +150 -0
  95. package/Menu/index.cjs.map +1 -0
  96. package/Modal/index.cjs +59 -0
  97. package/Modal/index.cjs.map +1 -0
  98. package/NoSSR/index.cjs +15 -0
  99. package/NoSSR/index.cjs.map +1 -0
  100. package/Option/index.cjs +14 -0
  101. package/Option/index.cjs.map +1 -0
  102. package/Paper/index.cjs +15 -0
  103. package/Paper/index.cjs.map +1 -0
  104. package/Portal/index.cjs +27 -0
  105. package/Portal/index.cjs.map +1 -0
  106. package/Radio/index.cjs +16 -0
  107. package/Radio/index.cjs.map +1 -0
  108. package/Scrollbar/index.cjs +59 -0
  109. package/Scrollbar/index.cjs.map +1 -0
  110. package/Select/index.cjs +59 -0
  111. package/Select/index.cjs.map +1 -0
  112. package/Skeleton/index.cjs +60 -0
  113. package/Skeleton/index.cjs.map +1 -0
  114. package/Stack/index.cjs +17 -0
  115. package/Stack/index.cjs.map +1 -0
  116. package/Switch/index.cjs +79 -0
  117. package/Switch/index.cjs.map +1 -0
  118. package/Tab/index.cjs +17 -0
  119. package/Tab/index.cjs.map +1 -0
  120. package/Table/index.cjs +88 -0
  121. package/Table/index.cjs.map +1 -0
  122. package/TableBody/index.cjs +14 -0
  123. package/TableBody/index.cjs.map +1 -0
  124. package/TableCell/index.cjs +14 -0
  125. package/TableCell/index.cjs.map +1 -0
  126. package/TableFooter/index.cjs +14 -0
  127. package/TableFooter/index.cjs.map +1 -0
  128. package/TableHead/index.cjs +14 -0
  129. package/TableHead/index.cjs.map +1 -0
  130. package/TablePagination/index.cjs +59 -0
  131. package/TablePagination/index.cjs.map +1 -0
  132. package/TableRow/index.cjs +14 -0
  133. package/TableRow/index.cjs.map +1 -0
  134. package/Tabs/index.cjs +201 -0
  135. package/Tabs/index.cjs.map +1 -0
  136. package/Text/index.cjs +25 -0
  137. package/Text/index.cjs.map +1 -0
  138. package/Toast/index.cjs +120 -0
  139. package/Toast/index.cjs.map +1 -0
  140. package/Tooltip/index.cjs +40 -0
  141. package/Tooltip/index.cjs.map +1 -0
  142. package/ViewBox/index.cjs +32 -0
  143. package/ViewBox/index.cjs.map +1 -0
  144. package/index.cjs +134 -0
  145. package/index.cjs.map +1 -0
  146. package/package.json +3 -3
  147. package/readme.md +4 -4
  148. package/useAlert/index.cjs +94 -0
  149. package/useAlert/index.cjs.map +1 -0
  150. package/useBlurCss/index.cjs +19 -0
  151. package/useBlurCss/index.cjs.map +1 -0
  152. package/useCorner/index.cjs +22 -0
  153. package/useCorner/index.cjs.map +1 -0
  154. package/useLayer/index.cjs +38 -0
  155. package/useLayer/index.cjs.map +1 -0
  156. package/useModal/index.cjs +37 -0
  157. package/useModal/index.cjs.map +1 -0
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@xanui/core');
8
+ var index = require('../useBlurCss/index.cjs');
9
+ var index$1 = require('../ClickOutside/index.cjs');
10
+
11
+ const Layer = (_a) => {
12
+ var _b, _c, _d;
13
+ var { children, open } = _a, props = tslib.__rest(_a, ["children", "open"]);
14
+ let [{ onClickOutside, placement, transition, zIndex, blur, blurMode, onOpen, onOpened, onClose, onClosed, slotProps }] = core.useInterface("Layer", props, {});
15
+ const _p = {};
16
+ if (blur)
17
+ _p.blur = blur;
18
+ if (blurMode)
19
+ _p.blurMode = blurMode;
20
+ const p = core.useBreakpointProps(_p);
21
+ blur = p.blur;
22
+ blurMode = p.blurMode;
23
+ const [closed, setClosed] = React.useState(!open);
24
+ placement = placement || "bottom-left";
25
+ const blurCss = blur ? index(blur, blurMode) : {};
26
+ React.useEffect(() => {
27
+ if (closed && open) {
28
+ setClosed(false);
29
+ }
30
+ }, [open]);
31
+ if (closed)
32
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
33
+ let duration = ((_b = slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition) === null || _b === void 0 ? void 0 : _b.duration) || 300;
34
+ let delay = ((_c = slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition) === null || _c === void 0 ? void 0 : _c.delay) || 0;
35
+ let content = jsxRuntime.jsx(core.Transition, Object.assign({ duration: duration, delay: delay, easing: "standard", variant: transition || "zoomOver" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition, { open: open, onOpen: onOpen, onOpened: onOpened, onClose: onClose, onClosed: () => {
36
+ setClosed(true);
37
+ onClosed && onClosed();
38
+ }, children: children }));
39
+ return (jsxRuntime.jsx(core.Transition, { duration: duration, delay: delay, easing: "smooth", variant: "fade", open: open, children: jsxRuntime.jsx(core.Tag, Object.assign({ baseClass: "layer" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root, { sxr: Object.assign(Object.assign(Object.assign({}, (_d = slotProps === null || slotProps === void 0 ? void 0 : slotProps.root) === null || _d === void 0 ? void 0 : _d.sx), { position: "fixed", zIndex: 1500 + (zIndex || 0), top: 0, left: 0, bottom: 0, right: 0, width: "100%", height: "100%" }), blurCss), children: onClickOutside ? jsxRuntime.jsx(index$1, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.clickOutside, { onClickOutside: onClickOutside || (() => { }), children: content })) : content })) }));
40
+ };
41
+ Layer.open = (children, props) => {
42
+ const l = core.Renderar.render(Layer, Object.assign(Object.assign({ open: true }, props), { children, onClosed: () => {
43
+ core.Renderar.unrender(Layer);
44
+ if (props === null || props === void 0 ? void 0 : props.onClosed) {
45
+ props.onClosed();
46
+ }
47
+ } }));
48
+ return {
49
+ open: () => {
50
+ l.updateProps({ open: true });
51
+ },
52
+ close: () => {
53
+ l.updateProps({ open: false });
54
+ },
55
+ };
56
+ };
57
+ Layer.close = () => {
58
+ core.Renderar.unrender(Layer);
59
+ };
60
+
61
+ module.exports = Layer;
62
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Layer/index.tsx"],"sourcesContent":["\"use client\";\r\nimport { ReactNode, useEffect, useState } from 'react'\r\nimport { Tag, TagProps, useBreakpointProps, useBreakpointPropsType, useInterface, TransitionProps, Transition } from \"@xanui/core\"\r\nimport useBlurCss from '../useBlurCss';\r\nimport { Renderar } from \"@xanui/core\";\r\nimport ClickOutside, { ClickOutsideProps } from '../ClickOutside';\r\n\r\nexport type LayerProps = {\r\n open: boolean;\r\n children: ReactNode;\r\n transition?: TransitionProps['variant'];\r\n zIndex?: number;\r\n blur?: useBreakpointPropsType<number>\r\n blurMode?: useBreakpointPropsType<\"blur\" | \"transparent\">\r\n onClickOutside?: () => void;\r\n onOpen?: Function;\r\n onOpened?: Function;\r\n onClose?: Function;\r\n onClosed?: Function;\r\n slotProps?: {\r\n root?: Omit<TagProps<\"div\">, \"children\">;\r\n transition?: Omit<TransitionProps, \"children\" | \"open\" | \"variant\" | \"onClose\" | \"onClosed\" | \"onOpen\" | \"onOpened\">;\r\n content?: Omit<TagProps<\"div\">, \"children\">;\r\n clickOutside?: Omit<ClickOutsideProps, \"children\" | \"onClickOutside\">;\r\n }\r\n}\r\n\r\nconst Layer = ({ children, open, ...props }: LayerProps) => {\r\n let [{\r\n onClickOutside,\r\n placement,\r\n transition,\r\n zIndex,\r\n blur,\r\n blurMode,\r\n onOpen,\r\n onOpened,\r\n onClose,\r\n onClosed,\r\n slotProps\r\n }] = useInterface<any>(\"Layer\", props, {})\r\n\r\n const _p: any = {}\r\n if (blur) _p.blur = blur\r\n if (blurMode) _p.blurMode = blurMode\r\n const p: any = useBreakpointProps(_p)\r\n\r\n blur = p.blur\r\n blurMode = p.blurMode\r\n\r\n const [closed, setClosed] = useState(!open)\r\n placement = placement || \"bottom-left\"\r\n const blurCss = blur ? useBlurCss(blur, blurMode) : {}\r\n\r\n useEffect(() => {\r\n if (closed && open) {\r\n setClosed(false)\r\n }\r\n }, [open])\r\n\r\n if (closed) return <></>\r\n let duration = slotProps?.transition?.duration || 300\r\n let delay = slotProps?.transition?.delay || 0\r\n\r\n let content = <Transition\r\n duration={duration}\r\n delay={delay}\r\n easing=\"standard\"\r\n variant={transition || \"zoomOver\"}\r\n {...slotProps?.transition}\r\n open={open}\r\n onOpen={onOpen}\r\n onOpened={onOpened}\r\n onClose={onClose}\r\n onClosed={() => {\r\n setClosed(true)\r\n onClosed && onClosed()\r\n }}\r\n >\r\n {children}\r\n </Transition>\r\n\r\n return (\r\n <Transition\r\n duration={duration}\r\n delay={delay}\r\n easing=\"smooth\"\r\n variant={\"fade\"}\r\n open={open}\r\n >\r\n <Tag\r\n baseClass=\"layer\"\r\n {...slotProps?.root}\r\n sxr={{\r\n ...slotProps?.root?.sx,\r\n position: \"fixed\",\r\n zIndex: 1500 + (zIndex || 0),\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n ...blurCss\r\n }}\r\n >\r\n {\r\n onClickOutside ? <ClickOutside\r\n {...slotProps?.clickOutside}\r\n onClickOutside={onClickOutside || (() => { })}\r\n >\r\n {content}\r\n </ClickOutside> : content\r\n }\r\n </Tag>\r\n </Transition>\r\n )\r\n}\r\n\r\n\r\nLayer.open = (children: LayerProps['children'], props?: Partial<Omit<LayerProps, 'children'>>) => {\r\n const l = Renderar.render(Layer as any, {\r\n open: true,\r\n ...props,\r\n children,\r\n onClosed: () => {\r\n Renderar.unrender(Layer as any)\r\n if (props?.onClosed) {\r\n props.onClosed()\r\n }\r\n }\r\n })\r\n return {\r\n open: () => {\r\n l.updateProps({ open: true })\r\n },\r\n close: () => {\r\n l.updateProps({ open: false })\r\n },\r\n }\r\n}\r\nLayer.close = () => {\r\n Renderar.unrender(Layer as any)\r\n}\r\nexport default Layer"],"names":[],"mappings":";;;;;;;;;;AA2BA;;;AACI;;AAeA;AAAU;AACV;AAAc;AACd;AAEA;AACA;;AAGA;AACA;;AAGI;;;AAGJ;AAEA;AAAY;AACZ;AACA;;;;;AAoBA;AAmCJ;AAGA;AACI;AAKQ;;;;AAIJ;;;;;;;;;AAUR;AACA;AACI;AACJ;;"}
@@ -0,0 +1,59 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@xanui/core');
8
+
9
+ const LineProgress = React.forwardRef((_a, ref) => {
10
+ var _b, _c;
11
+ var { children } = _a, props = tslib.__rest(_a, ["children"]);
12
+ const uid = "line-progress" + React.useId().replace(":", "");
13
+ let [{ color, value, thumbSize, hideTrack, speed }] = core.useInterface("LineProgress", props, {});
14
+ const _p = {};
15
+ if (thumbSize)
16
+ _p.thumbSize = thumbSize;
17
+ if (color)
18
+ _p.color = color;
19
+ if (value)
20
+ _p.value = value;
21
+ if (hideTrack)
22
+ _p.hideTrack = hideTrack;
23
+ if (speed)
24
+ _p.speed = speed;
25
+ const p = core.useBreakpointProps(_p);
26
+ thumbSize = (_b = p.thumbSize) !== null && _b !== void 0 ? _b : 4;
27
+ color = (_c = p.color) !== null && _c !== void 0 ? _c : "brand";
28
+ value = p.value;
29
+ hideTrack = p.hideTrack;
30
+ speed = p.speed;
31
+ let isVal = typeof value === 'number';
32
+ if (isVal && value > 100)
33
+ value = 100;
34
+ return (jsxRuntime.jsx(core.Tag, { baseClass: 'line-progress', sxr: {
35
+ display: "flex",
36
+ alignItems: "center",
37
+ width: '100%',
38
+ height: thumbSize,
39
+ position: "relative",
40
+ overflow: "hidden",
41
+ bgcolor: hideTrack ? "transparent" : (color === 'default' ? `text.primary` : `${color}.soft.primary`),
42
+ radius: 2,
43
+ }, ref: ref, children: jsxRuntime.jsx(core.Tag, { component: "span", baseClass: "line-progress-thumb", sxr: {
44
+ bgcolor: color === 'default' ? `divider` : `${color}`,
45
+ width: isVal ? `${value}%` : "50%",
46
+ height: thumbSize,
47
+ position: "absolute",
48
+ left: 0,
49
+ animation: isVal ? "none" : `${uid} ${speed !== null && speed !== void 0 ? speed : 1}s linear infinite`,
50
+ [`@keyframes ${uid}`]: {
51
+ "0%": { left: "-40%" },
52
+ "50%": { left: "20%", width: "80%" },
53
+ "100%": { left: "100%", width: "100%" }
54
+ }
55
+ } }) }));
56
+ });
57
+
58
+ module.exports = LineProgress;
59
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/LineProgress/index.tsx"],"sourcesContent":["\"use client\";\r\nimport React, { ReactElement, useId } from \"react\"\r\nimport { Tag, useBreakpointProps, UseColorTemplateColor, useInterface, useBreakpointPropsType } from '@xanui/core';\r\n\r\nexport type LineProgressProps = {\r\n children?: ReactElement;\r\n thumbSize?: useBreakpointPropsType<number>;\r\n color?: useBreakpointPropsType<UseColorTemplateColor>;\r\n value?: useBreakpointPropsType<number>;\r\n hideTrack?: useBreakpointPropsType<boolean>;\r\n speed?: useBreakpointPropsType<number>;\r\n}\r\n\r\n\r\nconst LineProgress = React.forwardRef(({ children, ...props }: LineProgressProps, ref: React.Ref<any>) => {\r\n const uid = \"line-progress\" + useId().replace(\":\", \"\")\r\n let [{ color, value, thumbSize, hideTrack, speed }] = useInterface<any>(\"LineProgress\", props, {})\r\n const _p: any = {}\r\n if (thumbSize) _p.thumbSize = thumbSize\r\n if (color) _p.color = color\r\n if (value) _p.value = value\r\n if (hideTrack) _p.hideTrack = hideTrack\r\n if (speed) _p.speed = speed\r\n const p: any = useBreakpointProps(_p)\r\n\r\n thumbSize = p.thumbSize ?? 4\r\n color = p.color ?? \"brand\"\r\n value = p.value\r\n hideTrack = p.hideTrack\r\n speed = p.speed\r\n\r\n let isVal = typeof value === 'number'\r\n if (isVal && (value as number) > 100) value = 100\r\n\r\n return (\r\n <Tag\r\n baseClass='line-progress'\r\n sxr={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: '100%',\r\n height: thumbSize,\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n bgcolor: hideTrack ? \"transparent\" : (color === 'default' ? `text.primary` : `${color}.soft.primary`),\r\n radius: 2,\r\n }}\r\n ref={ref}\r\n >\r\n <Tag\r\n component=\"span\"\r\n baseClass=\"line-progress-thumb\"\r\n sxr={{\r\n bgcolor: color === 'default' ? `divider` : `${color}`,\r\n width: isVal ? `${value}%` : \"50%\",\r\n height: thumbSize,\r\n position: \"absolute\",\r\n left: 0,\r\n animation: isVal ? \"none\" : `${uid} ${speed ?? 1}s linear infinite`,\r\n [`@keyframes ${uid}`]: {\r\n \"0%\": { left: \"-40%\" },\r\n \"50%\": { left: \"20%\", width: \"80%\" },\r\n \"100%\": { left: \"100%\", width: \"100%\" }\r\n }\r\n }}\r\n />\r\n </Tag >\r\n )\r\n})\r\n\r\nexport default LineProgress\r\n\r\n"],"names":[],"mappings":";;;;;;;;AAcA;;AAAuC;AACnC;;;AAGA;AAAe;AACf;AAAW;AACX;AAAW;AACX;AAAe;AACf;AAAW;AACX;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAMY;AACA;AACA;AACA;AACA;AACA;;AAEA;AACH;AAOO;;AAEA;AACA;AACA;AACA;AACA;AACI;;;AAGH;;AAKrB;;"}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ // ListContext.ts
6
+ const ListContext = React.createContext(null);
7
+ const useListContext = () => React.useContext(ListContext);
8
+
9
+ exports.ListContext = ListContext;
10
+ exports.useListContext = useListContext;
11
+ //# sourceMappingURL=ListContext.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListContext.cjs","sources":["../../src/List/ListContext.ts"],"sourcesContent":["// ListContext.ts\r\nimport React from \"react\"\r\n\r\nexport type ListSize = \"small\" | \"medium\" | \"large\"\r\n\r\nexport interface ListContextValue {\r\n size: ListSize\r\n}\r\n\r\nexport const ListContext = React.createContext<ListContextValue | null>(null)\r\n\r\nexport const useListContext = () => React.useContext(ListContext)\r\n"],"names":[],"mappings":";;;;AAAA;AASO,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA0B,IAAI;AAErE,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,WAAW;;;;;"}
package/List/index.cjs ADDED
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var core = require('@xanui/core');
7
+ var ListContext = require('./ListContext.cjs');
8
+
9
+ const List = React.forwardRef((_a, ref) => {
10
+ var _b, _c, _d, _e, _f;
11
+ var { children } = _a, rest = tslib.__rest(_a, ["children"]);
12
+ let [_g] = core.useInterface("List", rest, {}), { sx, color, variant, hoverColor, hoverVariant, size } = _g, props = tslib.__rest(_g, ["sx", "color", "variant", "hoverColor", "hoverVariant", "size"]);
13
+ const _p = {};
14
+ if (color)
15
+ _p.color = color;
16
+ if (variant)
17
+ _p.variant = variant;
18
+ if (hoverColor)
19
+ _p.hoverColor = hoverColor;
20
+ if (hoverVariant)
21
+ _p.hoverVariant = hoverVariant;
22
+ if (size)
23
+ _p.size = size;
24
+ const p = core.useBreakpointProps(_p);
25
+ color = (_b = p.color) !== null && _b !== void 0 ? _b : "brand";
26
+ variant = (_c = p.variant) !== null && _c !== void 0 ? _c : "fill";
27
+ hoverColor = (_d = p.hoverColor) !== null && _d !== void 0 ? _d : "default";
28
+ hoverVariant = (_e = p.hoverVariant) !== null && _e !== void 0 ? _e : "soft";
29
+ size = (_f = p.size) !== null && _f !== void 0 ? _f : "medium";
30
+ const template = core.useColorTemplate(color, variant);
31
+ const hoverTemplate = core.useColorTemplate(hoverColor, hoverVariant);
32
+ let sxOutline = {};
33
+ if (hoverVariant == 'outline' || variant === 'outline') {
34
+ sxOutline = {
35
+ "& .list-item": {
36
+ border: "1px solid",
37
+ borderColor: "transparent"
38
+ }
39
+ };
40
+ }
41
+ return (jsxRuntime.jsx(ListContext.ListContext.Provider, { value: { size }, children: jsxRuntime.jsx(core.Tag, Object.assign({ component: 'ul' }, props, { baseClass: 'list', sxr: Object.assign(Object.assign(Object.assign({ listStyle: "none", p: 0, m: 0 }, sxOutline), { "& .list-item-icon": {
42
+ color: "text.secondary"
43
+ }, "& .list-item-text": {
44
+ color: "text.primary"
45
+ }, "& .list-item-subtitle": {
46
+ color: "text.secondary"
47
+ }, "& .xui-list-item:not(.list-item-selected):hover": Object.assign(Object.assign({}, hoverTemplate.primary), { "& .list-item-icon": {
48
+ color: hoverTemplate.primary.color
49
+ }, "& .list-item-text": {
50
+ color: hoverTemplate.primary.color
51
+ }, "& .list-item-subtitle": {
52
+ color: hoverColor === 'default' ? "text.secondary" : hoverTemplate.primary.color
53
+ } }), "& .xui-list-item.list-item-selected": Object.assign(Object.assign({}, template.primary), { "& .list-item-icon": {
54
+ color: template.primary.color
55
+ }, "& .list-item-text": {
56
+ color: template.primary.color
57
+ }, "& .list-item-subtitle": {
58
+ color: template.primary.color
59
+ } }) }), (sx || {})), ref: ref, children: children })) }));
60
+ });
61
+
62
+ module.exports = List;
63
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/List/index.tsx"],"sourcesContent":["\r\nimport React from 'react'\r\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateType, UseColorTemplateColor, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\r\nimport { ListContext } from './ListContext';\r\n\r\nexport type ListProps<T extends TagComponentType = \"ul\"> = Omit<TagProps<T>, 'color' | \"size\"> & {\r\n color?: useBreakpointPropsType<UseColorTemplateColor>;\r\n variant?: useBreakpointPropsType<UseColorTemplateType>;\r\n hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;\r\n hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;\r\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\r\n}\r\n\r\n\r\nconst List = React.forwardRef(<T extends TagComponentType = \"ul\">({ children, ...rest }: ListProps<T>, ref: React.Ref<any>) => {\r\n let [{ sx, color, variant, hoverColor, hoverVariant, size, ...props }] = useInterface<any>(\"List\", rest, {})\r\n const _p: any = {}\r\n if (color) _p.color = color\r\n if (variant) _p.variant = variant\r\n if (hoverColor) _p.hoverColor = hoverColor\r\n if (hoverVariant) _p.hoverVariant = hoverVariant\r\n if (size) _p.size = size\r\n const p: any = useBreakpointProps(_p)\r\n\r\n color = p.color ?? \"brand\"\r\n variant = p.variant ?? \"fill\"\r\n hoverColor = p.hoverColor ?? \"default\"\r\n hoverVariant = p.hoverVariant ?? \"soft\"\r\n size = p.size ?? \"medium\"\r\n\r\n const template = useColorTemplate(color, variant)\r\n const hoverTemplate = useColorTemplate(hoverColor, hoverVariant)\r\n\r\n let sxOutline: any = {}\r\n if (hoverVariant == 'outline' || variant === 'outline') {\r\n sxOutline = {\r\n \"& .list-item\": {\r\n border: \"1px solid\",\r\n borderColor: \"transparent\"\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <ListContext.Provider value={{ size }}>\r\n <Tag\r\n component='ul'\r\n {...props}\r\n baseClass='list'\r\n sxr={{\r\n listStyle: \"none\",\r\n p: 0,\r\n m: 0,\r\n ...sxOutline,\r\n \"& .list-item-icon\": {\r\n color: \"text.secondary\"\r\n },\r\n \"& .list-item-text\": {\r\n color: \"text.primary\"\r\n },\r\n \"& .list-item-subtitle\": {\r\n color: \"text.secondary\"\r\n },\r\n \"& .xui-list-item:not(.list-item-selected):hover\": {\r\n ...hoverTemplate.primary,\r\n \"& .list-item-icon\": {\r\n color: hoverTemplate.primary.color\r\n },\r\n \"& .list-item-text\": {\r\n color: hoverTemplate.primary.color\r\n },\r\n \"& .list-item-subtitle\": {\r\n color: hoverColor === 'default' ? \"text.secondary\" : hoverTemplate.primary.color\r\n },\r\n },\r\n \"& .xui-list-item.list-item-selected\": {\r\n ...template.primary,\r\n \"& .list-item-icon\": {\r\n color: template.primary.color\r\n },\r\n \"& .list-item-text\": {\r\n color: template.primary.color\r\n },\r\n \"& .list-item-subtitle\": {\r\n color: template.primary.color\r\n },\r\n },\r\n ...(sx || {} as any)\r\n }}\r\n ref={ref}\r\n >\r\n {children}\r\n </Tag>\r\n </ListContext.Provider>\r\n )\r\n})\r\n\r\nexport default List"],"names":["__rest","useInterface","useBreakpointProps","useColorTemplate","_jsx","ListContext","Tag"],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var core = require('@xanui/core');
7
+ var index = require('../Text/index.cjs');
8
+ var ListContext = require('../List/ListContext.cjs');
9
+
10
+ const ListItem = React.forwardRef((_a, ref) => {
11
+ var _b, _c;
12
+ var { children, startIcon, endIcon, subtitle, size } = _a, rest = tslib.__rest(_a, ["children", "startIcon", "endIcon", "subtitle", "size"]);
13
+ let [_d] = core.useInterface("ListItem", rest, {}), { selected } = _d, props = tslib.__rest(_d, ["selected"]);
14
+ const _p = {};
15
+ if (subtitle)
16
+ _p.subtitle = subtitle;
17
+ if (startIcon)
18
+ _p.startIcon = startIcon;
19
+ if (endIcon)
20
+ _p.endIcon = endIcon;
21
+ if (size)
22
+ _p.size = size;
23
+ const p = core.useBreakpointProps(_p);
24
+ const ctx = ListContext.useListContext();
25
+ subtitle = p.subtitle;
26
+ startIcon = p.startIcon;
27
+ endIcon = p.endIcon;
28
+ size = (_c = (_b = p.size) !== null && _b !== void 0 ? _b : ctx === null || ctx === void 0 ? void 0 : ctx.size) !== null && _c !== void 0 ? _c : "medium";
29
+ let sizes = {
30
+ small: {
31
+ fontSize: "button",
32
+ py: 0.5,
33
+ px: 1,
34
+ minHeight: 32,
35
+ },
36
+ medium: {
37
+ fontSize: "text",
38
+ py: 1,
39
+ px: 1.5,
40
+ minHeight: 40,
41
+ },
42
+ large: {
43
+ fontSize: "h6",
44
+ py: 1.5,
45
+ px: 2,
46
+ minHeight: 48,
47
+ }
48
+ };
49
+ return (jsxRuntime.jsxs(core.Tag, Object.assign({ component: 'li' }, props, { sxr: Object.assign({ alignItems: "center", display: "flex", flexDirection: "row", userSelect: "none", cursor: "pointer", lineHeight: 1.4, whiteSpace: "nowrap", flexShrink: "0" }, sizes[size]), baseClass: 'list-item', classNames: [{ "list-item-selected": selected }, ...(props.classNames || [])], ref: ref, children: [startIcon && jsxRuntime.jsx(core.Tag, { mr: 1, component: "span", display: "inline-block", className: 'list-item-icon', children: startIcon }), jsxRuntime.jsxs(core.Tag, { flex: 1, children: [jsxRuntime.jsx(index, { variant: "text", className: 'list-item-text', component: typeof children === "string" || typeof children === "number" ? "p" : "div", children: children }), subtitle && jsxRuntime.jsx(index, { variant: "text", fontSize: "button", className: 'list-item-subtitle', component: typeof subtitle === "string" || typeof subtitle === "number" ? "p" : "div", children: subtitle })] }), endIcon && jsxRuntime.jsx(core.Tag, { ml: 1, component: "span", display: "inline-block", className: 'list-item-icon', children: endIcon })] })));
50
+ });
51
+ ListItem.displayName = "ListItem";
52
+
53
+ module.exports = ListItem;
54
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/ListItem/index.tsx"],"sourcesContent":["\r\nimport React, { ReactElement } from 'react'\r\nimport { Tag, TagProps, TagComponentType, useInterface, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\r\nimport Text from '../Text';\r\nimport { useListContext } from '../List/ListContext';\r\n\r\n\r\nexport type ListItemProps<T extends TagComponentType = \"li\"> = TagProps<T> & {\r\n selected?: boolean;\r\n subtitle?: useBreakpointPropsType<string | ReactElement>;\r\n startIcon?: useBreakpointPropsType<ReactElement>;\r\n endIcon?: useBreakpointPropsType<ReactElement>;\r\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\r\n}\r\n\r\nconst ListItem = React.forwardRef(<T extends TagComponentType = \"li\">({ children, startIcon, endIcon, subtitle, size, ...rest }: ListItemProps<T>, ref: React.Ref<any>) => {\r\n let [{ selected, ...props }] = useInterface<any>(\"ListItem\", rest, {})\r\n const _p: any = {}\r\n if (subtitle) _p.subtitle = subtitle\r\n if (startIcon) _p.startIcon = startIcon\r\n if (endIcon) _p.endIcon = endIcon\r\n if (size) _p.size = size\r\n const p: any = useBreakpointProps(_p)\r\n const ctx = useListContext()\r\n\r\n subtitle = p.subtitle\r\n startIcon = p.startIcon\r\n endIcon = p.endIcon\r\n size = p.size ?? ctx?.size ?? \"medium\"\r\n\r\n let sizes: any = {\r\n small: {\r\n fontSize: \"button\",\r\n py: 0.5,\r\n px: 1,\r\n minHeight: 32,\r\n },\r\n medium: {\r\n fontSize: \"text\",\r\n py: 1,\r\n px: 1.5,\r\n minHeight: 40,\r\n },\r\n large: {\r\n fontSize: \"h6\",\r\n py: 1.5,\r\n px: 2,\r\n minHeight: 48,\r\n }\r\n }\r\n\r\n return (\r\n <Tag\r\n component='li'\r\n {...props}\r\n sxr={{\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n userSelect: \"none\",\r\n cursor: \"pointer\",\r\n lineHeight: 1.4,\r\n whiteSpace: \"nowrap\",\r\n flexShrink: \"0\",\r\n ...sizes[size as any]\r\n }}\r\n baseClass='list-item'\r\n classNames={[{ \"list-item-selected\": selected as boolean }, ...(props.classNames || [])]}\r\n ref={ref}\r\n >\r\n {startIcon && <Tag mr={1} component=\"span\" display=\"inline-block\" className='list-item-icon'>{startIcon as any}</Tag>}\r\n <Tag flex={1}>\r\n <Text\r\n variant=\"text\"\r\n className='list-item-text'\r\n component={typeof children === \"string\" || typeof children === \"number\" ? \"p\" : \"div\"}\r\n >\r\n {children}\r\n </Text>\r\n {\r\n subtitle && <Text\r\n variant=\"text\"\r\n fontSize=\"button\"\r\n className='list-item-subtitle'\r\n component={typeof subtitle === \"string\" || typeof subtitle === \"number\" ? \"p\" : \"div\"}\r\n >{subtitle as any}</Text>\r\n }\r\n </Tag>\r\n {endIcon && <Tag ml={1} component=\"span\" display=\"inline-block\" className='list-item-icon'>{endIcon as any}</Tag>}\r\n </Tag>\r\n )\r\n})\r\n\r\nListItem.displayName = \"ListItem\"\r\n\r\nexport default ListItem"],"names":["__rest","useInterface","useBreakpointProps","useListContext","_jsxs","Tag","_jsx","Text"],"mappings":";;;;;;;;;AAeA,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAoC,EAA2E,EAAE,GAAmB,KAAI;;AAApG,IAAA,IAAA,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAA,GAAA,EAA6B,EAAxB,IAAI,GAAAA,YAAA,CAAA,EAAA,EAAvD,wDAAyD,CAAF;AACzH,IAAA,IAAI,OAA2BC,iBAAY,CAAM,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,EAAjE,EAAE,QAAQ,EAAA,GAAA,EAAY,EAAP,KAAK,GAAAD,YAAA,CAAA,EAAA,EAApB,CAAA,UAAA,CAAsB,CAA2C;IACtE,MAAM,EAAE,GAAQ,EAAE;AAClB,IAAA,IAAI,QAAQ;AAAE,QAAA,EAAE,CAAC,QAAQ,GAAG,QAAQ;AACpC,IAAA,IAAI,SAAS;AAAE,QAAA,EAAE,CAAC,SAAS,GAAG,SAAS;AACvC,IAAA,IAAI,OAAO;AAAE,QAAA,EAAE,CAAC,OAAO,GAAG,OAAO;AACjC,IAAA,IAAI,IAAI;AAAE,QAAA,EAAE,CAAC,IAAI,GAAG,IAAI;AACxB,IAAA,MAAM,CAAC,GAAQE,uBAAkB,CAAC,EAAE,CAAC;AACrC,IAAA,MAAM,GAAG,GAAGC,0BAAc,EAAE;AAE5B,IAAA,QAAQ,GAAG,CAAC,CAAC,QAAQ;AACrB,IAAA,SAAS,GAAG,CAAC,CAAC,SAAS;AACvB,IAAA,OAAO,GAAG,CAAC,CAAC,OAAO;AACnB,IAAA,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,GAAG,KAAA,IAAA,IAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,QAAQ;AAEtC,IAAA,IAAI,KAAK,GAAQ;AACb,QAAA,KAAK,EAAE;AACH,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,EAAE,EAAE,CAAC;AACL,YAAA,SAAS,EAAE,EAAE;AAChB,SAAA;AACD,QAAA,MAAM,EAAE;AACJ,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,EAAE,EAAE,CAAC;AACL,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,SAAS,EAAE,EAAE;AAChB,SAAA;AACD,QAAA,KAAK,EAAE;AACH,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,EAAE,EAAE,CAAC;AACL,YAAA,SAAS,EAAE,EAAE;AAChB;KACJ;IAED,QACIC,gBAACC,QAAG,EAAA,MAAA,CAAA,MAAA,CAAA,EACA,SAAS,EAAC,IAAI,EAAA,EACV,KAAK,EAAA,EACT,GAAG,kBACC,UAAU,EAAE,QAAQ,EACpB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,KAAK,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,GAAG,EACf,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,GAAG,IACZ,KAAK,CAAC,IAAW,CAAC,CAAA,EAEzB,SAAS,EAAC,WAAW,EACrB,UAAU,EAAE,CAAC,EAAE,oBAAoB,EAAE,QAAmB,EAAE,EAAE,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,EACxF,GAAG,EAAE,GAAG,EAAA,QAAA,EAAA,CAEP,SAAS,IAAIC,cAAA,CAACD,QAAG,EAAA,EAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,cAAc,EAAC,SAAS,EAAC,gBAAgB,YAAE,SAAgB,EAAA,CAAO,EACrHD,eAAA,CAACC,QAAG,EAAA,EAAC,IAAI,EAAE,CAAC,aACRC,cAAA,CAACC,KAAI,IACD,OAAO,EAAC,MAAM,EACd,SAAS,EAAC,gBAAgB,EAC1B,SAAS,EAAE,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,GAAG,GAAG,GAAG,KAAK,EAAA,QAAA,EAEpF,QAAQ,EAAA,CACN,EAEH,QAAQ,IAAID,cAAA,CAACC,KAAI,EAAA,EACb,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,QAAQ,EACjB,SAAS,EAAC,oBAAoB,EAC9B,SAAS,EAAE,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,GAAG,GAAG,GAAG,KAAK,EAAA,QAAA,EACvF,QAAe,EAAA,CAAQ,CAAA,EAAA,CAE3B,EACL,OAAO,IAAID,cAAA,CAACD,QAAG,EAAA,EAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,cAAc,EAAC,SAAS,EAAC,gBAAgB,YAAE,OAAc,EAAA,CAAO,CAAA,EAAA,CAAA,CAC/G;AAEd,CAAC;AAED,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var core = require('@xanui/core');
7
+ var index = require('../CircleProgress/index.cjs');
8
+
9
+ const LoadingBox = React.forwardRef((_a, ref) => {
10
+ var _b;
11
+ var { children } = _a, props = tslib.__rest(_a, ["children"]);
12
+ let [_c] = core.useInterface("LoadingBox", props, {}), { loading, color, slotProps } = _c, rest = tslib.__rest(_c, ["loading", "color", "slotProps"]);
13
+ const _p = {};
14
+ if (color)
15
+ _p.color = color;
16
+ const p = core.useBreakpointProps(_p);
17
+ color = (_b = p.color) !== null && _b !== void 0 ? _b : "brand";
18
+ return (jsxRuntime.jsxs(core.Tag, Object.assign({ baseClass: 'loading-box' }, rest, { sxr: Object.assign({ position: "relative", display: "inline-block", overflow: "hidden" }, (rest.sx || {})), ref: ref, children: [loading && jsxRuntime.jsx(core.Tag, { baseClass: "loading-box-container", sxr: {
19
+ position: "absolute",
20
+ top: 0,
21
+ left: 0,
22
+ right: 0,
23
+ bottom: 0,
24
+ zIndex: 1,
25
+ display: "flex",
26
+ justifyContent: "center",
27
+ alignItems: "center",
28
+ }, children: jsxRuntime.jsx(index, Object.assign({ color: "brand", hideTrack: true }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.CircleProgress)) }), jsxRuntime.jsx(core.Tag, { disabled: loading, children: children })] })));
29
+ });
30
+
31
+ module.exports = LoadingBox;
32
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/LoadingBox/index.tsx"],"sourcesContent":["\r\nimport React from 'react';\r\nimport { Tag, TagProps, TagComponentType, UseColorTemplateColor, useInterface, useBreakpointProps, useBreakpointPropsType } from '@xanui/core';\r\nimport CircleProgress, { CircleProgressProps } from '../CircleProgress';\r\n\r\n\r\nexport type LoadingBoxProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"color\"> & {\r\n loading?: boolean;\r\n color?: useBreakpointPropsType<UseColorTemplateColor>;\r\n slotProps?: {\r\n CircleProgress?: Omit<CircleProgressProps, \"value\">\r\n }\r\n\r\n}\r\n\r\nconst LoadingBox = React.forwardRef(<T extends TagComponentType = \"div\">({ children, ...props }: LoadingBoxProps<T>, ref: React.Ref<any>) => {\r\n let [{ loading, color, slotProps, ...rest }] = useInterface<any>(\"LoadingBox\", props, {})\r\n const _p: any = {}\r\n if (color) _p.color = color\r\n const p: any = useBreakpointProps(_p)\r\n color = p.color ?? \"brand\"\r\n\r\n return (\r\n <Tag\r\n baseClass='loading-box'\r\n {...rest}\r\n sxr={{\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n overflow: \"hidden\",\r\n ...((rest as any).sx || {})\r\n }}\r\n ref={ref}\r\n >\r\n {loading && <Tag\r\n baseClass=\"loading-box-container\"\r\n sxr={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 1,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <CircleProgress\r\n color=\"brand\"\r\n hideTrack\r\n {...slotProps?.CircleProgress}\r\n />\r\n </Tag>}\r\n <Tag\r\n disabled={loading}\r\n >\r\n {children}\r\n </Tag>\r\n </Tag>\r\n )\r\n})\r\n\r\nexport default LoadingBox\r\n\r\n"],"names":["__rest","useInterface","useBreakpointProps","_jsxs","Tag","_jsx","CircleProgress"],"mappings":";;;;;;;;AAeA,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAqC,EAA0C,EAAE,GAAmB,KAAI;;AAAnE,IAAA,IAAA,EAAE,QAAQ,EAAA,GAAA,EAAgC,EAA3B,KAAK,GAAAA,YAAA,CAAA,EAAA,EAApB,YAAsB,CAAF;IACzF,IAAI,CAAA,EAAA,CAAA,GAA2CC,iBAAY,CAAM,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,EAApF,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAA,GAAA,EAAW,EAAN,IAAI,GAAAD,YAAA,CAAA,EAAA,EAApC,CAAA,SAAA,EAAA,OAAA,EAAA,WAAA,CAAsC,CAA8C;IACzF,MAAM,EAAE,GAAQ,EAAE;AAClB,IAAA,IAAI,KAAK;AAAE,QAAA,EAAE,CAAC,KAAK,GAAG,KAAK;AAC3B,IAAA,MAAM,CAAC,GAAQE,uBAAkB,CAAC,EAAE,CAAC;AACrC,IAAA,KAAK,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO;IAE1B,QACIC,gBAACC,QAAG,EAAA,MAAA,CAAA,MAAA,CAAA,EACA,SAAS,EAAC,aAAa,IACnB,IAAI,EAAA,EACR,GAAG,EAAA,MAAA,CAAA,MAAA,CAAA,EACC,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,KACb,IAAY,CAAC,EAAE,IAAI,EAAE,EAAC,EAE/B,GAAG,EAAE,GAAG,aAEP,OAAO,IAAIC,eAACD,QAAG,EAAA,EACZ,SAAS,EAAC,uBAAuB,EACjC,GAAG,EAAE;AACD,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,cAAc,EAAE,QAAQ;AACxB,oBAAA,UAAU,EAAE,QAAQ;AACvB,iBAAA,EAAA,QAAA,EAEDC,cAAA,CAACC,KAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EACX,KAAK,EAAC,OAAO,EACb,SAAS,EAAA,IAAA,EAAA,EACL,SAAS,KAAA,IAAA,IAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,CAAA,CAC/B,EAAA,CACA,EACND,cAAA,CAACD,QAAG,EAAA,EACA,QAAQ,EAAE,OAAO,EAAA,QAAA,EAEhB,QAAQ,EAAA,CACP,CAAA,EAAA,CAAA,CACJ;AAEd,CAAC;;;;"}
package/Menu/index.cjs ADDED
@@ -0,0 +1,150 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@xanui/core');
8
+ var index = require('../Portal/index.cjs');
9
+ var index$1 = require('../ClickOutside/index.cjs');
10
+
11
+ const placements = [
12
+ "top",
13
+ "top-left",
14
+ "top-right",
15
+ "bottom",
16
+ "bottom-left",
17
+ "bottom-right",
18
+ "right",
19
+ "right-top",
20
+ "right-bottom",
21
+ "left",
22
+ "left-top",
23
+ "left-bottom",
24
+ ];
25
+ const getTransformOrigin = (placement) => {
26
+ switch (placement) {
27
+ case "top":
28
+ return "bottom";
29
+ case "top-left":
30
+ return "bottom left";
31
+ case "top-right":
32
+ return "bottom right";
33
+ case "bottom":
34
+ return "top";
35
+ case "bottom-left":
36
+ return "top left";
37
+ case "bottom-right":
38
+ return "top right";
39
+ case "left":
40
+ return "right";
41
+ case "left-top":
42
+ return "top right";
43
+ case "left-bottom":
44
+ return "bottom right";
45
+ case "right":
46
+ return "left";
47
+ case "right-top":
48
+ return "top left";
49
+ case "right-bottom":
50
+ return "bottom left";
51
+ default:
52
+ return "top";
53
+ }
54
+ };
55
+ // Compute coordinates for each placement
56
+ const computePosition = (placement, menu, target) => {
57
+ const { width: mw, height: mh } = menu.getBoundingClientRect();
58
+ const { top: tt, left: tl, bottom: tb, right: tr, width: tw, height: th, } = target.getBoundingClientRect();
59
+ const positions = {
60
+ "bottom-left": { top: tb, left: tl },
61
+ "bottom-right": { top: tb, left: tr - mw },
62
+ bottom: { top: tb, left: tl + (tw - mw) / 2 },
63
+ "top-left": { top: tt - mh, left: tl },
64
+ "top-right": { top: tt - mh, left: tr - mw },
65
+ top: { top: tt - mh, left: tl + (tw - mw) / 2 },
66
+ left: { top: tt + (th - mh) / 2, left: tl - mw },
67
+ "left-top": { top: tt, left: tl - mw },
68
+ "left-bottom": { top: tb - mh, left: tl - mw },
69
+ right: { top: tt + (th - mh) / 2, left: tr },
70
+ "right-top": { top: tt, left: tr },
71
+ "right-bottom": { top: tb - mh, left: tr },
72
+ };
73
+ return positions[placement];
74
+ };
75
+ // Check if menu is off-screen
76
+ const isOffScreen = (menu) => {
77
+ const { x, y, width, height } = menu.getBoundingClientRect();
78
+ return x < 0 || y < 0 || x + width > window.innerWidth || y + height > window.innerHeight;
79
+ };
80
+ // Try to place menu and fallback if off-screen
81
+ const placeMenu = (placement, menu, target) => {
82
+ let pos = computePosition(placement, menu, target);
83
+ menu.style.top = pos.top + "px";
84
+ menu.style.left = pos.left + "px";
85
+ if (isOffScreen(menu)) {
86
+ for (const p of placements) {
87
+ const fallbackPos = computePosition(p, menu, target);
88
+ menu.style.top = fallbackPos.top + "px";
89
+ menu.style.left = fallbackPos.left + "px";
90
+ if (!isOffScreen(menu))
91
+ return p;
92
+ }
93
+ }
94
+ return placement;
95
+ };
96
+ const Menu = (_a) => {
97
+ var _b;
98
+ var { children, target } = _a, props = tslib.__rest(_a, ["children", "target"]);
99
+ let [{ onClickOutside, placement, zIndex, slotProps }] = core.useInterface("Menu", props, {});
100
+ const _p = {};
101
+ if (placement)
102
+ _p.placement = placement;
103
+ const p = core.useBreakpointProps(_p);
104
+ placement = p.placement || "bottom-left";
105
+ const isOpen = Boolean(target);
106
+ const [closed, setClosed] = React.useState(!isOpen);
107
+ const [placed, setPlaced] = React.useState(placement);
108
+ const menuRef = React.useRef(null);
109
+ // Open/close effect
110
+ React.useEffect(() => {
111
+ if (closed && isOpen)
112
+ setClosed(false);
113
+ }, [isOpen]);
114
+ React.useEffect(() => {
115
+ if (!closed && target && menuRef.current) {
116
+ const updatePosition = () => {
117
+ if (menuRef.current && target) {
118
+ requestAnimationFrame(() => {
119
+ const p = placeMenu(placement, menuRef.current, target);
120
+ setPlaced(p);
121
+ });
122
+ }
123
+ };
124
+ updatePosition();
125
+ window.addEventListener("resize", updatePosition);
126
+ window.addEventListener("scroll", updatePosition, true);
127
+ return () => {
128
+ window.removeEventListener("resize", updatePosition);
129
+ window.removeEventListener("scroll", updatePosition, true);
130
+ };
131
+ }
132
+ return;
133
+ }, [closed, target, placement]);
134
+ if (closed)
135
+ return null;
136
+ return (jsxRuntime.jsx(index, Object.assign({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.portal, { children: jsxRuntime.jsx(index$1, { onClickOutside: (e) => {
137
+ if (target === null || target === void 0 ? void 0 : target.contains(e.target))
138
+ return;
139
+ if (e.target !== target) {
140
+ onClickOutside && onClickOutside(e);
141
+ }
142
+ }, ref: menuRef, sx: { position: "fixed", zIndex: 1500 + (zIndex || 0) }, children: jsxRuntime.jsx(core.Transition, Object.assign({ duration: 200, easing: "fast", variant: "grow" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition, { open: isOpen, onClosed: () => {
143
+ var _a, _b;
144
+ setClosed(true);
145
+ (_b = (_a = slotProps === null || slotProps === void 0 ? void 0 : slotProps.transition) === null || _a === void 0 ? void 0 : _a.onClosed) === null || _b === void 0 ? void 0 : _b.call(_a);
146
+ }, children: jsxRuntime.jsx(core.Tag, Object.assign({ baseClass: "menu-content" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.content, { sxr: Object.assign({ overflow: "hidden", bgcolor: "background.primary", shadow: 2, radius: 1, transformOrigin: getTransformOrigin(placed) }, (_b = slotProps === null || slotProps === void 0 ? void 0 : slotProps.content) === null || _b === void 0 ? void 0 : _b.sx), children: children })) })) }) })));
147
+ };
148
+
149
+ module.exports = Menu;
150
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Menu/index.tsx"],"sourcesContent":["\"use client\";\r\nimport { ReactNode, useEffect, useState, useRef } from \"react\";\r\nimport { Tag, TagProps, useBreakpointProps, useBreakpointPropsType, useInterface, TransitionProps, Transition } from \"@xanui/core\";\r\nimport Portal, { PortalProps } from \"../Portal\";\r\nimport ClickOutside from \"../ClickOutside\";\r\n\r\nexport type PlacementTypes =\r\n | \"top\"\r\n | \"top-left\"\r\n | \"top-right\"\r\n | \"bottom\"\r\n | \"bottom-left\"\r\n | \"bottom-right\"\r\n | \"right\"\r\n | \"right-top\"\r\n | \"right-bottom\"\r\n | \"left\"\r\n | \"left-top\"\r\n | \"left-bottom\";\r\n\r\nexport type MenuProps = {\r\n children?: ReactNode;\r\n target?: HTMLElement;\r\n placement?: useBreakpointPropsType<PlacementTypes>;\r\n zIndex?: number;\r\n onClickOutside?: (e: MouseEvent) => void;\r\n slotProps?: {\r\n transition?: Omit<TransitionProps, \"open\">;\r\n portal?: Omit<PortalProps, \"children\">;\r\n content?: Omit<TagProps<\"div\">, \"children\">;\r\n };\r\n};\r\n\r\nconst placements: PlacementTypes[] = [\r\n \"top\",\r\n \"top-left\",\r\n \"top-right\",\r\n \"bottom\",\r\n \"bottom-left\",\r\n \"bottom-right\",\r\n \"right\",\r\n \"right-top\",\r\n \"right-bottom\",\r\n \"left\",\r\n \"left-top\",\r\n \"left-bottom\",\r\n];\r\n\r\nconst getTransformOrigin = (placement: PlacementTypes) => {\r\n switch (placement) {\r\n case \"top\":\r\n return \"bottom\";\r\n case \"top-left\":\r\n return \"bottom left\";\r\n case \"top-right\":\r\n return \"bottom right\";\r\n case \"bottom\":\r\n return \"top\";\r\n case \"bottom-left\":\r\n return \"top left\";\r\n case \"bottom-right\":\r\n return \"top right\";\r\n case \"left\":\r\n return \"right\";\r\n case \"left-top\":\r\n return \"top right\";\r\n case \"left-bottom\":\r\n return \"bottom right\";\r\n case \"right\":\r\n return \"left\";\r\n case \"right-top\":\r\n return \"top left\";\r\n case \"right-bottom\":\r\n return \"bottom left\";\r\n default:\r\n return \"top\";\r\n }\r\n};\r\n\r\n// Compute coordinates for each placement\r\nconst computePosition = (\r\n placement: PlacementTypes,\r\n menu: HTMLElement,\r\n target: HTMLElement\r\n) => {\r\n const { width: mw, height: mh } = menu.getBoundingClientRect();\r\n const {\r\n top: tt,\r\n left: tl,\r\n bottom: tb,\r\n right: tr,\r\n width: tw,\r\n height: th,\r\n } = target.getBoundingClientRect();\r\n\r\n const positions: Record<PlacementTypes, { top: number; left: number }> = {\r\n \"bottom-left\": { top: tb, left: tl },\r\n \"bottom-right\": { top: tb, left: tr - mw },\r\n bottom: { top: tb, left: tl + (tw - mw) / 2 },\r\n\r\n \"top-left\": { top: tt - mh, left: tl },\r\n \"top-right\": { top: tt - mh, left: tr - mw },\r\n top: { top: tt - mh, left: tl + (tw - mw) / 2 },\r\n\r\n left: { top: tt + (th - mh) / 2, left: tl - mw },\r\n \"left-top\": { top: tt, left: tl - mw },\r\n \"left-bottom\": { top: tb - mh, left: tl - mw },\r\n\r\n right: { top: tt + (th - mh) / 2, left: tr },\r\n \"right-top\": { top: tt, left: tr },\r\n \"right-bottom\": { top: tb - mh, left: tr },\r\n };\r\n\r\n return positions[placement];\r\n};\r\n\r\n\r\n// Check if menu is off-screen\r\nconst isOffScreen = (menu: HTMLElement) => {\r\n const { x, y, width, height } = menu.getBoundingClientRect();\r\n return x < 0 || y < 0 || x + width > window.innerWidth || y + height > window.innerHeight;\r\n};\r\n\r\n// Try to place menu and fallback if off-screen\r\nconst placeMenu = (placement: PlacementTypes, menu: HTMLElement, target: HTMLElement) => {\r\n let pos = computePosition(placement, menu, target);\r\n menu.style.top = pos.top + \"px\";\r\n menu.style.left = pos.left + \"px\";\r\n\r\n if (isOffScreen(menu)) {\r\n for (const p of placements) {\r\n const fallbackPos = computePosition(p, menu, target);\r\n menu.style.top = fallbackPos.top + \"px\";\r\n menu.style.left = fallbackPos.left + \"px\";\r\n if (!isOffScreen(menu)) return p;\r\n }\r\n }\r\n return placement;\r\n};\r\n\r\nconst Menu = ({ children, target, ...props }: MenuProps) => {\r\n let [{ onClickOutside, placement, zIndex, slotProps }] = useInterface<any>(\"Menu\", props, {});\r\n const _p: any = {};\r\n if (placement) _p.placement = placement;\r\n const p: any = useBreakpointProps(_p);\r\n placement = p.placement || \"bottom-left\";\r\n\r\n const isOpen = Boolean(target);\r\n const [closed, setClosed] = useState(!isOpen);\r\n const [placed, setPlaced] = useState<PlacementTypes>(placement);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n\r\n // Open/close effect\r\n useEffect(() => {\r\n if (closed && isOpen) setClosed(false);\r\n }, [isOpen]);\r\n\r\n\r\n useEffect(() => {\r\n if (!closed && target && menuRef.current) {\r\n const updatePosition = () => {\r\n if (menuRef.current && target) {\r\n requestAnimationFrame(() => {\r\n const p = placeMenu(placement!, menuRef.current as any, target);\r\n setPlaced(p);\r\n });\r\n }\r\n };\r\n\r\n updatePosition();\r\n window.addEventListener(\"resize\", updatePosition);\r\n window.addEventListener(\"scroll\", updatePosition, true);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", updatePosition);\r\n window.removeEventListener(\"scroll\", updatePosition, true);\r\n };\r\n }\r\n return\r\n }, [closed, target, placement]);\r\n\r\n\r\n if (closed) return null;\r\n\r\n return (\r\n <Portal {...slotProps?.portal}>\r\n <ClickOutside\r\n onClickOutside={(e: MouseEvent) => {\r\n if (target?.contains(e.target as any)) return;\r\n if (e.target !== target) {\r\n onClickOutside && onClickOutside(e);\r\n }\r\n }}\r\n ref={menuRef}\r\n sx={{ position: \"fixed\", zIndex: 1500 + (zIndex || 0) }}\r\n >\r\n <Transition\r\n duration={200}\r\n easing=\"fast\"\r\n variant=\"grow\"\r\n {...slotProps?.transition}\r\n open={isOpen}\r\n onClosed={() => {\r\n setClosed(true);\r\n slotProps?.transition?.onClosed?.();\r\n }}\r\n >\r\n <Tag\r\n baseClass=\"menu-content\"\r\n {...slotProps?.content}\r\n sxr={{\r\n overflow: \"hidden\",\r\n bgcolor: \"background.primary\",\r\n shadow: 2,\r\n radius: 1,\r\n transformOrigin: getTransformOrigin(placed),\r\n ...slotProps?.content?.sx,\r\n }}\r\n >\r\n {children}\r\n </Tag>\r\n </Transition>\r\n </ClickOutside>\r\n </Portal>\r\n );\r\n};\r\n\r\nexport default Menu;\r\n"],"names":[],"mappings":";;;;;;;;;;AAiCA;;;;;;;;;;;;;;AAeA;;AAEQ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;AACJ;AACI;;AAEZ;AAEA;AACA;AAKI;AACA;AASA;;;AAGI;;AAGA;AACA;AAEA;;AAEA;AAEA;;;;AAKJ;AACJ;AAGA;AACA;AACI;;AAEJ;AAEA;AACA;;;;AAKI;AACI;;;;AAII;AAAwB;;;AAGhC;AACJ;AAEA;;;;;AAGI;AAAe;AACf;AACA;AAEA;;;AAGA;;;;;AAKA;;;;AAMY;;AAEQ;;AAEJ;;AAER;AAEA;AACA;;AAGA;AACI;;AAEJ;;;;AAMR;AAAY;;;;AAOI;AACI;;;;;;;AAmCxB;;"}
@@ -0,0 +1,59 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var index = require('../useModal/index.cjs');
8
+ var core = require('@xanui/core');
9
+
10
+ const Modal = (_a) => {
11
+ var { children, open } = _a, props = tslib.__rest(_a, ["children", "open"]);
12
+ const ref = React.useRef(null);
13
+ const modal = index(jsxRuntime.jsx(jsxRuntime.Fragment, { children: children }), Object.assign(Object.assign({}, props), { onClickOutside: () => {
14
+ if (props === null || props === void 0 ? void 0 : props.onClickOutside) {
15
+ props.onClickOutside();
16
+ }
17
+ }, slotProps: {
18
+ layer: {
19
+ portal: {
20
+ container: (ref === null || ref === void 0 ? void 0 : ref.current) || undefined
21
+ }
22
+ }
23
+ } }));
24
+ React.useEffect(() => {
25
+ if (open) {
26
+ modal.open();
27
+ }
28
+ else {
29
+ modal.close();
30
+ }
31
+ }, [open]);
32
+ return jsxRuntime.jsx(core.Tag, { ref: ref });
33
+ };
34
+ const ActionModal = (_a) => {
35
+ var { children } = _a, props = tslib.__rest(_a, ["children"]);
36
+ return (jsxRuntime.jsx(Modal, Object.assign({}, props, { children: children })));
37
+ };
38
+ Modal.open = (children, props) => {
39
+ const m = core.Renderar.render(ActionModal, Object.assign(Object.assign({ open: true }, props), { children, onClosed: () => {
40
+ m.unrender();
41
+ if (props === null || props === void 0 ? void 0 : props.onClosed) {
42
+ props.onClosed();
43
+ }
44
+ } }));
45
+ return {
46
+ open: () => {
47
+ m.updateProps({ open: true });
48
+ },
49
+ close: () => {
50
+ m.updateProps({ open: false });
51
+ },
52
+ };
53
+ };
54
+ Modal.close = () => {
55
+ core.Renderar.unrender(ActionModal);
56
+ };
57
+
58
+ module.exports = Modal;
59
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Modal/index.tsx"],"sourcesContent":["\"use client\";\r\nimport { ReactNode, useEffect, useRef } from \"react\";\r\nimport useModal, { UseModalProps } from \"../useModal\";\r\nimport { Renderar, Tag } from \"@xanui/core\";\r\n\r\nexport type ModalProps = UseModalProps & {\r\n children: ReactNode;\r\n open: boolean;\r\n}\r\n\r\nconst Modal = ({ children, open, ...props }: ModalProps) => {\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n const modal = useModal(<>{children}</>, {\r\n ...props,\r\n onClickOutside: () => {\r\n if (props?.onClickOutside) {\r\n props.onClickOutside()\r\n }\r\n },\r\n slotProps: {\r\n layer: {\r\n portal: {\r\n container: ref?.current || undefined\r\n }\r\n }\r\n }\r\n })\r\n\r\n useEffect(() => {\r\n if (open) {\r\n modal.open()\r\n } else {\r\n modal.close()\r\n }\r\n }, [open])\r\n return <Tag ref={ref}></Tag>\r\n}\r\n\r\nconst ActionModal = ({ children, ...props }: ModalProps) => {\r\n return (\r\n <Modal {...props}>\r\n {children}\r\n </Modal>\r\n )\r\n}\r\n\r\nModal.open = (children: ModalProps['children'], props?: Omit<ModalProps, 'children' | \"open\">) => {\r\n const m = Renderar.render(ActionModal as any, {\r\n open: true,\r\n ...props,\r\n children,\r\n onClosed: () => {\r\n m.unrender()\r\n if (props?.onClosed) {\r\n props.onClosed()\r\n }\r\n }\r\n })\r\n\r\n return {\r\n open: () => {\r\n m.updateProps({ open: true })\r\n },\r\n close: () => {\r\n m.updateProps({ open: false })\r\n },\r\n }\r\n};\r\n\r\nModal.close = () => {\r\n Renderar.unrender(ActionModal as any)\r\n}\r\n\r\nexport default Modal;"],"names":[],"mappings":";;;;;;;;;AAUA;;AACG;AAEA;;;;;AAQM;AACG;;AAEC;AACH;AACH;;;;;;;;AASJ;AACA;AACH;AAEA;AAAqB;;AAMrB;AAEA;AACG;;;;;AASG;;;;;;;;;AAWN;AAEA;AACG;AACH;;"}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+
6
+ const NoSSR = ({ children }) => {
7
+ const [isClient, setIsClient] = React.useState(false);
8
+ React.useEffect(() => {
9
+ setIsClient(true);
10
+ }, []);
11
+ return isClient ? children : null;
12
+ };
13
+
14
+ module.exports = NoSSR;
15
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/NoSSR/index.tsx"],"sourcesContent":["\"use client\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nconst NoSSR = ({ children }: any) => {\r\n const [isClient, setIsClient] = useState(false);\r\n useEffect(() => {\r\n setIsClient(true);\r\n }, [])\r\n return isClient ? children : null\r\n}\r\n\r\nexport default NoSSR"],"names":[],"mappings":";;;;;AAGA;;;;;;AAMA;;"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var index = require('../ListItem/index.cjs');
7
+
8
+ const Option = React.forwardRef((_a, ref) => {
9
+ var { value, children } = _a, props = tslib.__rest(_a, ["value", "children"]);
10
+ return (jsxRuntime.jsx(index, Object.assign({}, props, { ref: ref, children: children })));
11
+ });
12
+
13
+ module.exports = Option;
14
+ //# sourceMappingURL=index.cjs.map