@fuf-stack/pixels 0.2.5 → 0.3.1

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 (164) hide show
  1. package/dist/Button/index.cjs +3 -112
  2. package/dist/Button/index.cjs.map +1 -1
  3. package/dist/Button/index.d.cts +3 -3
  4. package/dist/Button/index.d.ts +3 -3
  5. package/dist/Button/index.js +5 -5
  6. package/dist/{Button/Button.d.cts → Button-B0H0w1eR.d.cts} +1 -1
  7. package/dist/{Button/Button.d.ts → Button-B0H0w1eR.d.ts} +1 -1
  8. package/dist/Card/index.cjs +5 -133
  9. package/dist/Card/index.cjs.map +1 -1
  10. package/dist/Card/index.d.cts +3 -3
  11. package/dist/Card/index.d.ts +3 -3
  12. package/dist/Card/index.js +4 -5
  13. package/dist/Card/index.js.map +1 -1
  14. package/dist/{Card/Card.d.ts → Card-Cl_I4L8G.d.cts} +1 -1
  15. package/dist/{Card/Card.d.cts → Card-Cl_I4L8G.d.ts} +1 -1
  16. package/dist/Json/index.cjs +4 -203
  17. package/dist/Json/index.cjs.map +1 -1
  18. package/dist/Json/index.d.cts +3 -3
  19. package/dist/Json/index.d.ts +3 -3
  20. package/dist/Json/index.js +5 -8
  21. package/dist/Json/index.js.map +1 -1
  22. package/dist/{Json/Json.d.cts → Json-ClGDcbcp.d.cts} +1 -1
  23. package/dist/{Json/Json.d.ts → Json-ClGDcbcp.d.ts} +1 -1
  24. package/dist/Label/index.cjs +5 -59
  25. package/dist/Label/index.cjs.map +1 -1
  26. package/dist/Label/index.d.cts +3 -3
  27. package/dist/Label/index.d.ts +3 -3
  28. package/dist/Label/index.js +4 -5
  29. package/dist/Label/index.js.map +1 -1
  30. package/dist/{Label/Label.d.cts → Label-DzZDW95M.d.cts} +1 -1
  31. package/dist/{Label/Label.d.ts → Label-DzZDW95M.d.ts} +1 -1
  32. package/dist/Menu/index.cjs +5 -105
  33. package/dist/Menu/index.cjs.map +1 -1
  34. package/dist/Menu/index.d.cts +3 -3
  35. package/dist/Menu/index.d.ts +3 -3
  36. package/dist/Menu/index.js +4 -5
  37. package/dist/Menu/index.js.map +1 -1
  38. package/dist/{Menu/Menu.d.cts → Menu-CG5mVVnv.d.cts} +1 -1
  39. package/dist/{Menu/Menu.d.ts → Menu-CG5mVVnv.d.ts} +1 -1
  40. package/dist/Modal/index.cjs +5 -81
  41. package/dist/Modal/index.cjs.map +1 -1
  42. package/dist/Modal/index.d.cts +3 -3
  43. package/dist/Modal/index.d.ts +3 -3
  44. package/dist/Modal/index.js +4 -5
  45. package/dist/Modal/index.js.map +1 -1
  46. package/dist/{Modal/Modal.d.cts → Modal-CSxNe0bS.d.cts} +1 -1
  47. package/dist/{Modal/Modal.d.ts → Modal-CSxNe0bS.d.ts} +1 -1
  48. package/dist/Popover/index.cjs +5 -73
  49. package/dist/Popover/index.cjs.map +1 -1
  50. package/dist/Popover/index.d.cts +3 -3
  51. package/dist/Popover/index.d.ts +3 -3
  52. package/dist/Popover/index.js +4 -5
  53. package/dist/Popover/index.js.map +1 -1
  54. package/dist/{Popover/Popover.d.cts → Popover-DbTTk7_N.d.cts} +1 -1
  55. package/dist/{Popover/Popover.d.ts → Popover-DbTTk7_N.d.ts} +1 -1
  56. package/dist/Tooltip/index.cjs +3 -63
  57. package/dist/Tooltip/index.cjs.map +1 -1
  58. package/dist/Tooltip/index.d.cts +2 -2
  59. package/dist/Tooltip/index.d.ts +2 -2
  60. package/dist/Tooltip/index.js +2 -5
  61. package/dist/Tooltip/index.js.map +1 -1
  62. package/dist/{Tooltip/Tooltip.d.cts → Tooltip-D0yEMBnv.d.cts} +1 -1
  63. package/dist/{Tooltip/Tooltip.d.ts → Tooltip-D0yEMBnv.d.ts} +1 -1
  64. package/dist/chunk-2UJJIIMU.js +87 -0
  65. package/dist/chunk-2UJJIIMU.js.map +1 -0
  66. package/dist/{chunk-WBAURF6J.js → chunk-7ERBBFDC.js} +38 -5
  67. package/dist/chunk-7ERBBFDC.js.map +1 -0
  68. package/dist/chunk-BMKGS5PK.cjs +32 -0
  69. package/dist/chunk-BMKGS5PK.cjs.map +1 -0
  70. package/dist/chunk-I76NWOB3.cjs +87 -0
  71. package/dist/chunk-I76NWOB3.cjs.map +1 -0
  72. package/dist/{chunk-ONXXZTZY.js → chunk-J47IOXCU.js} +5 -4
  73. package/dist/chunk-J47IOXCU.js.map +1 -0
  74. package/dist/chunk-JD3BEOSK.cjs +35 -0
  75. package/dist/chunk-JD3BEOSK.cjs.map +1 -0
  76. package/dist/chunk-L5OZDDU7.cjs +84 -0
  77. package/dist/chunk-L5OZDDU7.cjs.map +1 -0
  78. package/dist/{chunk-EYUTNORZ.js → chunk-MBQA3LPM.js} +6 -4
  79. package/dist/chunk-MBQA3LPM.js.map +1 -0
  80. package/dist/chunk-PI7CBPUS.cjs +127 -0
  81. package/dist/chunk-PI7CBPUS.cjs.map +1 -0
  82. package/dist/{chunk-CEUL4NWH.js → chunk-S2WOGSQV.js} +6 -2
  83. package/dist/chunk-S2WOGSQV.js.map +1 -0
  84. package/dist/chunk-STEC6TAQ.cjs +60 -0
  85. package/dist/chunk-STEC6TAQ.cjs.map +1 -0
  86. package/dist/{chunk-SGAWYTO7.js → chunk-V2C3KFMP.js} +6 -2
  87. package/dist/chunk-V2C3KFMP.js.map +1 -0
  88. package/dist/{chunk-XPTSDDXG.js → chunk-VQ5Q33MY.js} +6 -3
  89. package/dist/chunk-VQ5Q33MY.js.map +1 -0
  90. package/dist/{chunk-Y35GJHOR.js → chunk-VZW4TVTX.js} +6 -2
  91. package/dist/chunk-VZW4TVTX.js.map +1 -0
  92. package/dist/chunk-WTKZJFQV.cjs +111 -0
  93. package/dist/chunk-WTKZJFQV.cjs.map +1 -0
  94. package/dist/chunk-YUOFNPJO.cjs +46 -0
  95. package/dist/chunk-YUOFNPJO.cjs.map +1 -0
  96. package/dist/index.cjs +102 -0
  97. package/dist/index.cjs.map +1 -0
  98. package/dist/index.d.cts +21 -0
  99. package/dist/index.d.ts +21 -0
  100. package/dist/{hooks/useLocalStorage.js → index.js} +56 -6
  101. package/dist/index.js.map +1 -0
  102. package/package.json +54 -11
  103. package/dist/Button/Button.cjs +0 -113
  104. package/dist/Button/Button.cjs.map +0 -1
  105. package/dist/Button/Button.js +0 -8
  106. package/dist/Button/Button.js.map +0 -1
  107. package/dist/Button/subcomponents/LoadingSpinner.cjs +0 -57
  108. package/dist/Button/subcomponents/LoadingSpinner.cjs.map +0 -1
  109. package/dist/Button/subcomponents/LoadingSpinner.d.cts +0 -9
  110. package/dist/Button/subcomponents/LoadingSpinner.d.ts +0 -9
  111. package/dist/Button/subcomponents/LoadingSpinner.js +0 -7
  112. package/dist/Button/subcomponents/LoadingSpinner.js.map +0 -1
  113. package/dist/Card/Card.cjs +0 -137
  114. package/dist/Card/Card.cjs.map +0 -1
  115. package/dist/Card/Card.js +0 -9
  116. package/dist/Card/Card.js.map +0 -1
  117. package/dist/Json/Json.cjs +0 -204
  118. package/dist/Json/Json.cjs.map +0 -1
  119. package/dist/Json/Json.js +0 -10
  120. package/dist/Json/Json.js.map +0 -1
  121. package/dist/Label/Label.cjs +0 -58
  122. package/dist/Label/Label.cjs.map +0 -1
  123. package/dist/Label/Label.js +0 -7
  124. package/dist/Label/Label.js.map +0 -1
  125. package/dist/Menu/Menu.cjs +0 -104
  126. package/dist/Menu/Menu.cjs.map +0 -1
  127. package/dist/Menu/Menu.js +0 -7
  128. package/dist/Menu/Menu.js.map +0 -1
  129. package/dist/Modal/Modal.cjs +0 -86
  130. package/dist/Modal/Modal.cjs.map +0 -1
  131. package/dist/Modal/Modal.js +0 -9
  132. package/dist/Modal/Modal.js.map +0 -1
  133. package/dist/Popover/Popover.cjs +0 -72
  134. package/dist/Popover/Popover.cjs.map +0 -1
  135. package/dist/Popover/Popover.js +0 -7
  136. package/dist/Popover/Popover.js.map +0 -1
  137. package/dist/Tooltip/Tooltip.cjs +0 -68
  138. package/dist/Tooltip/Tooltip.cjs.map +0 -1
  139. package/dist/Tooltip/Tooltip.js +0 -9
  140. package/dist/Tooltip/Tooltip.js.map +0 -1
  141. package/dist/chunk-4WCKFSLX.js +0 -11
  142. package/dist/chunk-4WCKFSLX.js.map +0 -1
  143. package/dist/chunk-6QVKZ4AT.js +0 -52
  144. package/dist/chunk-6QVKZ4AT.js.map +0 -1
  145. package/dist/chunk-CEUL4NWH.js.map +0 -1
  146. package/dist/chunk-EYUTNORZ.js.map +0 -1
  147. package/dist/chunk-ONXXZTZY.js.map +0 -1
  148. package/dist/chunk-SGAWYTO7.js.map +0 -1
  149. package/dist/chunk-WBAURF6J.js.map +0 -1
  150. package/dist/chunk-XPTSDDXG.js.map +0 -1
  151. package/dist/chunk-Y35GJHOR.js.map +0 -1
  152. package/dist/chunk-ZFEVTQWW.js +0 -37
  153. package/dist/chunk-ZFEVTQWW.js.map +0 -1
  154. package/dist/hooks/useDebounce.cjs +0 -43
  155. package/dist/hooks/useDebounce.cjs.map +0 -1
  156. package/dist/hooks/useDebounce.d.cts +0 -3
  157. package/dist/hooks/useDebounce.d.ts +0 -3
  158. package/dist/hooks/useDebounce.js +0 -22
  159. package/dist/hooks/useDebounce.js.map +0 -1
  160. package/dist/hooks/useLocalStorage.cjs +0 -73
  161. package/dist/hooks/useLocalStorage.cjs.map +0 -1
  162. package/dist/hooks/useLocalStorage.d.cts +0 -5
  163. package/dist/hooks/useLocalStorage.d.ts +0 -5
  164. package/dist/hooks/useLocalStorage.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/Tooltip/Tooltip.tsx
2
+ var _tooltip = require('@nextui-org/tooltip');
3
+ var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);
4
+ var _jsxruntime = require('react/jsx-runtime');
5
+ var Tooltip = ({
6
+ children,
7
+ className = void 0,
8
+ content,
9
+ placement = "top",
10
+ defaultOpen = false,
11
+ onOpenChange = void 0,
12
+ containerPadding = 0
13
+ }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
14
+ _tooltip.Tooltip,
15
+ {
16
+ className: _classnames2.default.call(void 0, className),
17
+ containerPadding,
18
+ content,
19
+ defaultOpen,
20
+ onOpenChange,
21
+ placement,
22
+ shouldFlip: true,
23
+ showArrow: true,
24
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "cursor-pointer", children })
25
+ }
26
+ );
27
+ var Tooltip_default = Tooltip;
28
+
29
+ // src/Tooltip/index.ts
30
+ var Tooltip_default2 = Tooltip_default;
31
+
32
+
33
+
34
+ exports.Tooltip_default = Tooltip_default2;
35
+ //# sourceMappingURL=chunk-JD3BEOSK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Tooltip/Tooltip.tsx","../src/Tooltip/index.ts"],"names":["Tooltip_default"],"mappings":";AAEA,SAAS,WAAW,mBAAmB;AACvC,OAAO,QAAQ;AA4CX;AAnBJ,IAAM,UAAU,CAAC;AAAA,EACf;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,mBAAmB;AACrB,MACE;AAAA,EAAC;AAAA;AAAA,IACC,WAAW,GAAG,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAU;AAAA,IACV,WAAS;AAAA,IAET,8BAAC,UAAK,WAAU,kBAAkB,UAAS;AAAA;AAC7C;AAGF,IAAO,kBAAQ;;;AC9Cf,IAAOA,mBAAQ","sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Tooltip as NextTooltip } from '@nextui-org/tooltip';\nimport cn from 'classnames';\n\nexport const PlacementOptions = ['top', 'bottom', 'left', 'right'] as const;\nexport type Placement = (typeof PlacementOptions)[number];\n\nexport interface TooltipProps {\n /** trigger child components */\n children: ReactNode;\n /** CSS class name */\n className?: string;\n /** placement padding in px */\n containerPadding?: number;\n /** content displayed in the tooltip */\n content: ReactNode;\n /** open overlay initially when uncontrolled */\n defaultOpen?: boolean;\n /** handler that is called when the overlay's open state changes */\n onOpenChange?: (isOpen: boolean) => void;\n /** placement if the tooltip */\n placement?: Placement;\n}\n\n/**\n * Tooltip component based on [NextUI Tooltip](https://nextui.org/docs/components/tooltip)\n */\nconst Tooltip = ({\n children,\n className = undefined,\n content,\n placement = 'top',\n defaultOpen = false,\n onOpenChange = undefined,\n containerPadding = 0,\n}: TooltipProps) => (\n <NextTooltip\n className={cn(className)}\n containerPadding={containerPadding}\n content={content}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n placement={placement}\n shouldFlip\n showArrow\n >\n <span className=\"cursor-pointer\">{children}</span>\n </NextTooltip>\n);\n\nexport default Tooltip;\n","import type { TooltipProps } from './Tooltip';\n\nimport Tooltip from './Tooltip';\n\nexport type { TooltipProps };\nexport default Tooltip;\n"]}
@@ -0,0 +1,84 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/Menu/Menu.tsx
2
+ var _fa6 = require('react-icons/fa6');
3
+ var _button = require('@nextui-org/button');
4
+
5
+
6
+
7
+
8
+
9
+
10
+ var _dropdown = require('@nextui-org/dropdown');
11
+ var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);
12
+ var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
13
+ var _jsxruntime = require('react/jsx-runtime');
14
+ var debug = _debug2.default.call(void 0, "component:Menu");
15
+ var getDisabledKeys = (items) => {
16
+ return items.map((item) => typeof _optionalChain([item, 'optionalAccess', _ => _.items]) === "undefined" ? item : item.items).flat().filter((item) => {
17
+ return Object.hasOwn(item, "disabled") && item.disabled === true;
18
+ }).map((item) => item.key);
19
+ };
20
+ var renderMenuItem = (item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21
+ _dropdown.DropdownItem,
22
+ {
23
+ className: item.className,
24
+ "data-testid": item.testId || item.key,
25
+ description: item.description,
26
+ onClick: item.onClick,
27
+ startContent: item.icon,
28
+ children: item.label
29
+ },
30
+ item.key
31
+ );
32
+ var Menu = ({
33
+ children = null,
34
+ className = void 0,
35
+ onAction = void 0,
36
+ testId = void 0,
37
+ isDisabled = false,
38
+ items
39
+ }) => {
40
+ debug("Menu", { items });
41
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _dropdown.Dropdown, { isDisabled, children: [
42
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _dropdown.DropdownTrigger, { className: _classnames2.default.call(void 0, className), "data-testid": testId, children: children ? (
43
+ // eslint-disable-next-line react/button-has-type
44
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "button", { children })
45
+ ) : (
46
+ // INFO: we use next button here so that ref passing works
47
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _button.Button, { size: "sm", variant: "flat", className: "min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _fa6.FaEllipsisVertical, {}) })
48
+ ) }),
49
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
50
+ _dropdown.DropdownMenu,
51
+ {
52
+ items,
53
+ disabledKeys: getDisabledKeys(items),
54
+ onAction,
55
+ children: (item) => {
56
+ if ("items" in item) {
57
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
58
+ _dropdown.DropdownSection,
59
+ {
60
+ items: item.items,
61
+ title: item.label,
62
+ children: (sectionItem) => {
63
+ return renderMenuItem(sectionItem);
64
+ }
65
+ },
66
+ item.key
67
+ );
68
+ }
69
+ return renderMenuItem(item);
70
+ }
71
+ }
72
+ )
73
+ ] });
74
+ };
75
+ var Menu_default = Menu;
76
+
77
+ // src/Menu/index.ts
78
+ var Menu_default2 = Menu_default;
79
+
80
+
81
+
82
+
83
+ exports.Menu_default = Menu_default; exports.Menu_default2 = Menu_default2;
84
+ //# sourceMappingURL=chunk-L5OZDDU7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Menu/Menu.tsx","../src/Menu/index.ts"],"names":["Menu_default"],"mappings":";AAGA,SAAS,0BAA0B;AAEnC,SAAS,cAAc;AACvB;AAAA,EACE,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,OACd;AACP,OAAO,QAAQ;AACf,OAAO,iBAAiB;AAoEtB,cA0BE,YA1BF;AAlEF,IAAM,QAAQ,YAAY,gBAAgB;AAoD1C,IAAM,kBAAkB,CAAC,UAAsC;AAC7D,SACE,MAEG,IAAI,CAAC,SAAU,OAAO,MAAM,UAAU,cAAc,OAAO,KAAK,KAAM,EACtE,KAAiB,EACjB,OAAO,CAAC,SAAS;AAChB,WAAO,OAAO,OAAO,MAAM,UAAU,KAAK,KAAK,aAAa;AAAA,EAC9D,CAAC,EACA,IAAI,CAAC,SAAS,KAAK,GAAG;AAE7B;AAEA,IAAM,iBAAiB,CAAC,SACtB;AAAA,EAAC;AAAA;AAAA,IACC,WAAW,KAAK;AAAA,IAChB,eAAa,KAAK,UAAU,KAAK;AAAA,IACjC,aAAa,KAAK;AAAA,IAElB,SAAS,KAAK;AAAA,IACd,cAAc,KAAK;AAAA,IAElB,eAAK;AAAA;AAAA,EAJD,KAAK;AAKZ;AAMF,IAAM,OAAO,CAAC;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,aAAa;AAAA,EACb;AACF,MAAiB;AACf,QAAM,QAAQ,EAAE,MAAM,CAAC;AAEvB,SACE,qBAAC,gBAAa,YACZ;AAAA,wBAAC,uBAAoB,WAAW,GAAG,SAAS,GAAG,eAAa,QACzD;AAAA;AAAA,MAEC,oBAAC,YAAQ,UAAS;AAAA;AAAA;AAAA,MAGlB,oBAAC,UAAO,MAAK,MAAK,SAAQ,QAAO,WAAU,WACzC,8BAAC,sBAAmB,GACtB;AAAA,OAEJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA,cAAc,gBAAgB,KAAK;AAAA,QACnC;AAAA,QAEC,WAAC,SAAS;AACT,cAAI,WAAW,MAAM;AACnB,mBACE;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,KAAK;AAAA,gBACZ,OAAO,KAAK;AAAA,gBAIX,WAAC,gBAAgB;AAChB,yBAAO,eAAe,WAAW;AAAA,gBACnC;AAAA;AAAA,cALK,KAAK;AAAA,YAMZ;AAAA,UAEJ;AACA,iBAAO,eAAe,IAAI;AAAA,QAC5B;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,eAAQ;;;AC9If,IAAOA,gBAAQ","sourcesContent":["import type { DropdownSectionProps } from '@nextui-org/dropdown';\nimport type { Key, MouseEventHandler, ReactNode } from 'react';\n\nimport { FaEllipsisVertical } from 'react-icons/fa6';\n\nimport { Button } from '@nextui-org/button';\nimport {\n Dropdown as NextDropdown,\n DropdownItem as NextDropdownItem,\n DropdownMenu as NextDropdownMenu,\n DropdownSection as NextDropdownSection,\n DropdownTrigger as NextDropdownTrigger,\n} from '@nextui-org/dropdown';\nimport cn from 'classnames';\nimport createDebug from 'debug';\n\nconst debug = createDebug('component:Menu');\n\n/**\n * Menu item type\n */\nexport interface MenuItem {\n /** unique identifier */\n key: string;\n /** CSS class name */\n className?: string;\n /** additional description shown under the label */\n description?: string;\n /** disables the menu item */\n disabled?: boolean;\n /** menu item icon */\n icon?: ReactNode;\n /** menu item name */\n label: ReactNode;\n /** click event handler */\n onClick?: MouseEventHandler<HTMLLIElement>;\n /** e2e test identifier */\n testId?: string;\n}\n\n/**\n * Menu section type\n */\nexport interface MenuSection {\n /** unique identifier */\n key: string;\n /** section label */\n label: ReactNode;\n /** section items (array of MenuItem) */\n items: MenuItem[];\n}\n\nexport interface MenuProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string | string[];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** menu item structure */\n items: (MenuSection | MenuItem)[];\n /** disable menu trigger */\n isDisabled?: boolean;\n /** called if item is selected */\n onAction?: (key: Key) => void;\n}\n\n/** returns String[] of disabled items/keys */\nconst getDisabledKeys = (items: (MenuSection | MenuItem)[]) => {\n return (\n items\n // @ts-expect-error typing issue with MenuSection | MenuItem\n .map((item) => (typeof item?.items === 'undefined' ? item : item.items))\n .flat<MenuItem[]>()\n .filter((item) => {\n return Object.hasOwn(item, 'disabled') && item.disabled === true;\n })\n .map((item) => item.key)\n );\n};\n\nconst renderMenuItem = (item: MenuItem) => (\n <NextDropdownItem\n className={item.className}\n data-testid={item.testId || item.key}\n description={item.description}\n key={item.key}\n onClick={item.onClick}\n startContent={item.icon}\n >\n {item.label}\n </NextDropdownItem>\n);\n\n/**\n * Dropdown menu component based on [NextUI Dropdown](https://nextui.org/docs/components/dropdown)\n */\nconst Menu = ({\n children = null,\n className = undefined,\n onAction = undefined,\n testId = undefined,\n isDisabled = false,\n items,\n}: MenuProps) => {\n debug('Menu', { items });\n\n return (\n <NextDropdown isDisabled={isDisabled}>\n <NextDropdownTrigger className={cn(className)} data-testid={testId}>\n {children ? (\n // eslint-disable-next-line react/button-has-type\n <button>{children}</button>\n ) : (\n // INFO: we use next button here so that ref passing works\n <Button size=\"sm\" variant=\"flat\" className=\"min-w-0\">\n <FaEllipsisVertical />\n </Button>\n )}\n </NextDropdownTrigger>\n <NextDropdownMenu\n // aria-label=\"Dynamic Actions\"\n items={items}\n disabledKeys={getDisabledKeys(items)}\n onAction={onAction}\n >\n {(item) => {\n if ('items' in item) {\n return (\n <NextDropdownSection\n items={item.items as MenuSection['items']}\n title={item.label as DropdownSectionProps['title']}\n key={item.key}\n >\n {/* @ts-expect-error ts problem here with render fn */}\n {(sectionItem) => {\n return renderMenuItem(sectionItem);\n }}\n </NextDropdownSection>\n );\n }\n return renderMenuItem(item);\n }}\n </NextDropdownMenu>\n </NextDropdown>\n );\n};\n\nexport default Menu;\n","import Menu from './Menu';\n\nexport type { MenuProps, MenuItem, MenuSection } from './Menu';\n\nexport { Menu };\n\nexport default Menu;\n"]}
@@ -10,7 +10,6 @@ import cn from "classnames";
10
10
  import createDebug from "debug";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
12
  var debug = createDebug("component:Modal");
13
- var ModalSizeOptions = ["sm", "md", "lg"];
14
13
  var Modal = ({
15
14
  children = null,
16
15
  className = void 0,
@@ -51,8 +50,11 @@ var Modal = ({
51
50
  };
52
51
  var Modal_default = Modal;
53
52
 
53
+ // src/Modal/index.ts
54
+ var Modal_default2 = Modal_default;
55
+
54
56
  export {
55
- ModalSizeOptions,
56
- Modal_default
57
+ Modal_default,
58
+ Modal_default2
57
59
  };
58
- //# sourceMappingURL=chunk-EYUTNORZ.js.map
60
+ //# sourceMappingURL=chunk-MBQA3LPM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Modal/Modal.tsx","../src/Modal/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport {\n Modal as NextModal,\n ModalBody as NextModalBody,\n ModalContent as NextModalContent,\n ModalFooter as NextModalFooter,\n ModalHeader as NextModalHeader,\n} from '@nextui-org/modal';\nimport cn from 'classnames';\nimport createDebug from 'debug';\n\nconst debug = createDebug('component:Modal');\n\nexport const ModalSizeOptions = ['sm', 'md', 'lg'] as const;\ntype ModalSize = (typeof ModalSizeOptions)[number];\n\nexport interface ModalProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string | string[];\n /** HTML data-testid attribute used in e2e tests */\n footer?: ReactNode;\n /** open state (controlled) */\n isOpen: boolean;\n /** close event handler */\n onClose: () => void;\n /** modal size */\n size?: ModalSize;\n /** e2e test id */\n testId?: string;\n /** modal header */\n title?: ReactNode;\n}\n\n/**\n * Modal component based on [NextUI Modal](https://nextui.org/docs/components/modal)\n */\nconst Modal = ({\n children = null,\n className = undefined,\n footer = undefined,\n isOpen,\n onClose,\n size = 'md',\n testId = undefined,\n title = undefined,\n}: ModalProps) => {\n debug('Modal', { size });\n return (\n <div className={cn(className)} data-testid={testId}>\n <NextModal\n backdrop=\"opaque\"\n classNames={{\n base: cn(\n {\n 'lg:w-11/12': size === 'lg',\n 'w-2/12': size === 'sm',\n 'w-6/12': size === 'md',\n },\n // overwrite !rounded-none from nextui\n '!rounded-lg',\n ),\n }}\n isOpen={isOpen}\n onClose={onClose}\n scrollBehavior=\"inside\"\n size=\"full\"\n >\n <NextModalContent data-testid={testId ? `${testId}_modal` : 'modal'}>\n {() => (\n <>\n {title && <NextModalHeader>{title}</NextModalHeader>}\n <NextModalBody className=\"bg-ex-background\">\n {children}\n </NextModalBody>\n {footer && <NextModalFooter>{footer}</NextModalFooter>}\n </>\n )}\n </NextModalContent>\n </NextModal>\n </div>\n );\n};\n\nexport default Modal;\n","import Modal from './Modal';\n\nexport type { ModalProps } from './Modal';\n\nexport { Modal };\n\nexport default Modal;\n"],"mappings":";AAEA;AAAA,EACE,SAAS;AAAA,EACT,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,OACV;AACP,OAAO,QAAQ;AACf,OAAO,iBAAiB;AA8DZ,mBACY,KADZ;AA5DZ,IAAM,QAAQ,YAAY,iBAAiB;AA2B3C,IAAM,QAAQ,CAAC;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACV,MAAkB;AAChB,QAAM,SAAS,EAAE,KAAK,CAAC;AACvB,SACE,oBAAC,SAAI,WAAW,GAAG,SAAS,GAAG,eAAa,QAC1C;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,YAAY;AAAA,QACV,MAAM;AAAA,UACJ;AAAA,YACE,cAAc,SAAS;AAAA,YACvB,UAAU,SAAS;AAAA,YACnB,UAAU,SAAS;AAAA,UACrB;AAAA;AAAA,UAEA;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAe;AAAA,MACf,MAAK;AAAA,MAEL,8BAAC,oBAAiB,eAAa,SAAS,GAAG,MAAM,WAAW,SACzD,gBACC,iCACG;AAAA,iBAAS,oBAAC,mBAAiB,iBAAM;AAAA,QAClC,oBAAC,iBAAc,WAAU,oBACtB,UACH;AAAA,QACC,UAAU,oBAAC,mBAAiB,kBAAO;AAAA,SACtC,GAEJ;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAO,gBAAQ;;;AChFf,IAAOA,iBAAQ;","names":["Modal_default"]}
@@ -0,0 +1,127 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkI76NWOB3cjs = require('./chunk-I76NWOB3.cjs');
4
+
5
+ // src/Json/Json.tsx
6
+ var _react = require('react');
7
+ var _fa = require('react-icons/fa');
8
+ var _hi = require('react-icons/hi');
9
+ var _reactjsonview = require('@uiw/react-json-view'); var _reactjsonview2 = _interopRequireDefault(_reactjsonview);
10
+ var _light = require('@uiw/react-json-view/light');
11
+ var _vscode = require('@uiw/react-json-view/vscode');
12
+ var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);
13
+ var _jsxruntime = require('react/jsx-runtime');
14
+ var getValue = (value) => {
15
+ if (typeof value === "string") {
16
+ return JSON.parse(value);
17
+ }
18
+ if (typeof value === "object") {
19
+ return value;
20
+ }
21
+ throw new Error(`${typeof value} can not be visualized`);
22
+ };
23
+ var Json = ({ className = null, collapsed = false, value }) => {
24
+ const isDarkMode = document.body.classList.contains("dark");
25
+ let content = null;
26
+ let error = null;
27
+ const [showDetails, setShowDetails] = _react.useState.call(void 0, false);
28
+ try {
29
+ content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30
+ _reactjsonview2.default,
31
+ {
32
+ className: "pr-5",
33
+ collapsed,
34
+ displayDataTypes: false,
35
+ style: {
36
+ ...isDarkMode ? _vscode.vscodeTheme : _light.lightTheme,
37
+ backgroundColor: "unset"
38
+ },
39
+ value: getValue(value),
40
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
41
+ _reactjsonview2.default.Copied,
42
+ {
43
+ render: ({
44
+ // @ts-expect-error this should be fine
45
+ "data-copied": copied,
46
+ style,
47
+ ...elmProps
48
+ }) => {
49
+ const elmClasses = _classnames2.default.call(void 0,
50
+ elmProps.className,
51
+ "absolute -right-4 -top-[2px] h-4 w-4 !fill-transparent pl-1",
52
+ { "text-success": copied }
53
+ );
54
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "relative !ml-0 !h-[1em] !w-0", style, children: copied ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
55
+ _hi.HiOutlineClipboardCheck,
56
+ {
57
+ ...elmProps,
58
+ className: elmClasses
59
+ }
60
+ ) : (
61
+ // eslint-disable-next-line react/jsx-props-no-spreading
62
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _hi.HiOutlineClipboard, { ...elmProps, className: elmClasses })
63
+ ) });
64
+ }
65
+ }
66
+ )
67
+ }
68
+ );
69
+ } catch (err) {
70
+ error = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
71
+ "div",
72
+ {
73
+ className: "mb-4 flex flex-col items-center rounded-lg border border-danger bg-danger-50 p-4 text-sm text-danger",
74
+ role: "alert",
75
+ children: [
76
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full justify-between gap-6", children: [
77
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center", children: [
78
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _fa.FaTimesCircle, { className: "mr-2" }),
79
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-medium", children: "Failed to parse JSON data" })
80
+ ] }),
81
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
82
+ _chunkI76NWOB3cjs.Button_default2,
83
+ {
84
+ color: "danger",
85
+ size: "sm",
86
+ variant: "light",
87
+ onClick: () => setShowDetails(!showDetails),
88
+ children: showDetails ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
89
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _fa.FaChevronUp, {}),
90
+ " Hide Details"
91
+ ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
92
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _fa.FaChevronDown, {}),
93
+ " Show Details"
94
+ ] })
95
+ }
96
+ )
97
+ ] }),
98
+ showDetails && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-4 w-full text-left", children: [
99
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
100
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "strong", { children: "Error:" }),
101
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "pre", { children: [
102
+ _optionalChain([err, 'optionalAccess', _ => _.name]),
103
+ ": ",
104
+ _optionalChain([err, 'optionalAccess', _2 => _2.message])
105
+ ] })
106
+ ] }),
107
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-4", children: [
108
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "strong", { children: "Data:" }),
109
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "pre", { children: typeof value !== "string" ? JSON.stringify(value, null, 2) : value })
110
+ ] })
111
+ ] })
112
+ ]
113
+ }
114
+ );
115
+ }
116
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _classnames2.default.call(void 0, className), children: error || content });
117
+ };
118
+ var Json_default = Json;
119
+
120
+ // src/Json/index.ts
121
+ var Json_default2 = Json_default;
122
+
123
+
124
+
125
+
126
+ exports.Json_default = Json_default; exports.Json_default2 = Json_default2;
127
+ //# sourceMappingURL=chunk-PI7CBPUS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Json/Json.tsx","../src/Json/index.ts"],"names":["Json_default"],"mappings":";;;;;AAEA,SAAS,gBAAgB;AACzB,SAAS,eAAe,aAAa,qBAAqB;AAC1D,SAAS,oBAAoB,+BAA+B;AAE5D,OAAO,cAAc;AACrB,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,OAAO,QAAQ;AAiEG,SAiCJ,UAjCI,KAsBR,YAtBQ;AA1DlB,IAAM,WAAW,CAAC,UAA2B;AAC3C,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,GAAG,OAAO,KAAK,wBAAwB;AACzD;AAcA,IAAM,OAAO,CAAC,EAAE,YAAY,MAAM,YAAY,OAAO,MAAM,MAAiB;AAC1E,QAAM,aAAa,SAAS,KAAK,UAAU,SAAS,MAAM;AAE1D,MAAI,UAAqB;AACzB,MAAI,QAAmB;AAEvB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAEpD,MAAI;AACF,cACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV;AAAA,QACA,kBAAkB;AAAA,QAClB,OAAO;AAAA,UACL,GAAI,aAAa,cAAc;AAAA,UAC/B,iBAAiB;AAAA,QACnB;AAAA,QACA,OAAO,SAAS,KAAK;AAAA,QAGrB;AAAA,UAAC,SAAS;AAAA,UAAT;AAAA,YACC,QAAQ,CAAC;AAAA;AAAA,cAEP,eAAe;AAAA,cACf;AAAA,cACA,GAAG;AAAA,YACL,MAAM;AACJ,oBAAM,aAAa;AAAA,gBACjB,SAAS;AAAA,gBACT;AAAA,gBACA,EAAE,gBAAgB,OAAO;AAAA,cAC3B;AACA,qBACE,oBAAC,UAAK,WAAU,gCAA+B,OAC5C,mBACC;AAAA,gBAAC;AAAA;AAAA,kBAEE,GAAG;AAAA,kBACJ,WAAW;AAAA;AAAA,cACb;AAAA;AAAA,gBAGA,oBAAC,sBAAoB,GAAG,UAAU,WAAW,YAAY;AAAA,iBAE7D;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,EAEJ,SAAS,KAAK;AACZ,YACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QAEL;AAAA,+BAAC,SAAI,WAAU,qCACb;AAAA,iCAAC,SAAI,WAAU,qBACb;AAAA,kCAAC,iBAAc,WAAU,QAAO;AAAA,cAChC,oBAAC,UAAK,WAAU,eAAc,uCAAyB;AAAA,eACzD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAS,MAAM,eAAe,CAAC,WAAW;AAAA,gBAEzC,wBACC,iCACE;AAAA,sCAAC,eAAY;AAAA,kBAAE;AAAA,mBACjB,IAEA,iCACE;AAAA,sCAAC,iBAAc;AAAA,kBAAE;AAAA,mBACnB;AAAA;AAAA,YAEJ;AAAA,aACF;AAAA,UACC,eACC,qBAAC,SAAI,WAAU,yBACb;AAAA,iCAAC,SACC;AAAA,kCAAC,YAAO,oBAAM;AAAA,cACd,qBAAC,SAEE;AAAA,qBAAK;AAAA,gBAAK;AAAA,gBAAG,KAAK;AAAA,iBACrB;AAAA,eACF;AAAA,YACA,qBAAC,SAAI,WAAU,QACb;AAAA,kCAAC,YAAO,mBAAK;AAAA,cACb,oBAAC,SACE,iBAAO,UAAU,WACd,KAAK,UAAU,OAAO,MAAM,CAAC,IAC7B,OACN;AAAA,eACF;AAAA,aACF;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACA,SAAO,oBAAC,SAAI,WAAW,GAAG,SAAS,GAAI,mBAAS,SAAQ;AAC1D;AAEA,IAAO,eAAQ;;;ACxIf,IAAOA,gBAAQ","sourcesContent":["import type { ReactNode } from 'react';\n\nimport { useState } from 'react';\nimport { FaChevronDown, FaChevronUp, FaTimesCircle } from 'react-icons/fa';\nimport { HiOutlineClipboard, HiOutlineClipboardCheck } from 'react-icons/hi';\n\nimport JsonView from '@uiw/react-json-view';\nimport { lightTheme } from '@uiw/react-json-view/light';\nimport { vscodeTheme } from '@uiw/react-json-view/vscode';\nimport cn from 'classnames';\n\nimport Button from '../Button';\n\n/**\n * returns the value (JSON string or object) as object\n */\nconst getValue = (value: string | object) => {\n if (typeof value === 'string') {\n return JSON.parse(value);\n }\n if (typeof value === 'object') {\n return value;\n }\n throw new Error(`${typeof value} can not be visualized`);\n};\n\nexport interface JsonProps {\n /** CSS class name */\n className?: string | string[] | null;\n /** When set to true, all nodes will be collapsed by default. Use an integer value to collapse at a particular depth. */\n collapsed?: boolean | number;\n /** Object to be visualized JSON string or object */\n value: string | object;\n}\n\n/**\n * Json renderer based on [react-json-view](https://mac-s-g.github.io/react-json-view/demo/dist/)\n */\nconst Json = ({ className = null, collapsed = false, value }: JsonProps) => {\n const isDarkMode = document.body.classList.contains('dark');\n\n let content: ReactNode = null;\n let error: ReactNode = null;\n\n const [showDetails, setShowDetails] = useState(false);\n\n try {\n content = (\n <JsonView\n className=\"pr-5\"\n collapsed={collapsed}\n displayDataTypes={false}\n style={{\n ...(isDarkMode ? vscodeTheme : lightTheme),\n backgroundColor: 'unset',\n }}\n value={getValue(value)}\n >\n {/* FIX: overwrite Copied component to fix flickering copy button */}\n <JsonView.Copied\n render={({\n // @ts-expect-error this should be fine\n 'data-copied': copied,\n style,\n ...elmProps\n }) => {\n const elmClasses = cn(\n elmProps.className,\n 'absolute -right-4 -top-[2px] h-4 w-4 !fill-transparent pl-1',\n { 'text-success': copied },\n );\n return (\n <span className=\"relative !ml-0 !h-[1em] !w-0\" style={style}>\n {copied ? (\n <HiOutlineClipboardCheck\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...elmProps}\n className={elmClasses}\n />\n ) : (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <HiOutlineClipboard {...elmProps} className={elmClasses} />\n )}\n </span>\n );\n }}\n />\n </JsonView>\n );\n } catch (err) {\n error = (\n <div\n className=\"mb-4 flex flex-col items-center rounded-lg border border-danger bg-danger-50 p-4 text-sm text-danger\"\n role=\"alert\"\n >\n <div className=\"flex w-full justify-between gap-6\">\n <div className=\"flex items-center\">\n <FaTimesCircle className=\"mr-2\" />\n <span className=\"font-medium\">Failed to parse JSON data</span>\n </div>\n <Button\n color=\"danger\"\n size=\"sm\"\n variant=\"light\"\n onClick={() => setShowDetails(!showDetails)}\n >\n {showDetails ? (\n <>\n <FaChevronUp /> Hide Details\n </>\n ) : (\n <>\n <FaChevronDown /> Show Details\n </>\n )}\n </Button>\n </div>\n {showDetails && (\n <div className=\"mt-4 w-full text-left\">\n <div>\n <strong>Error:</strong>\n <pre>\n {/* @ts-expect-error is ok */}\n {err?.name}: {err?.message}\n </pre>\n </div>\n <div className=\"mt-4\">\n <strong>Data:</strong>\n <pre>\n {typeof value !== 'string'\n ? JSON.stringify(value, null, 2)\n : value}\n </pre>\n </div>\n </div>\n )}\n </div>\n );\n }\n return <div className={cn(className)}>{error || content}</div>;\n};\n\nexport default Json;\n","import Json from './Json';\n\nexport type { JsonProps } from './Json';\n\nexport { Json };\n\nexport default Json;\n"]}
@@ -22,7 +22,11 @@ var Label = ({
22
22
  );
23
23
  var Label_default = Label;
24
24
 
25
+ // src/Label/index.ts
26
+ var Label_default2 = Label_default;
27
+
25
28
  export {
26
- Label_default
29
+ Label_default,
30
+ Label_default2
27
31
  };
28
- //# sourceMappingURL=chunk-CEUL4NWH.js.map
32
+ //# sourceMappingURL=chunk-S2WOGSQV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Label/Label.tsx","../src/Label/index.ts"],"sourcesContent":["import type { ChipProps } from '@nextui-org/chip';\nimport type { ReactNode } from 'react';\n\nimport { Chip as NextLabel } from '@nextui-org/chip';\nimport cn from 'classnames';\n\nexport interface LabelProps {\n /** content of the label */\n children: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the label */\n color?: ChipProps['color'];\n /** element to be rendered in the right side of the label */\n endContent?: ChipProps['endContent'];\n /** size of the label */\n size?: ChipProps['size'];\n /** element to be rendered in the left side of the label */\n startContent?: ChipProps['startContent'];\n}\n\n/**\n * Label component based on [NextUI Chip](https://nextui.org/docs/components/chip)\n */\nconst Label = ({\n children,\n className = undefined,\n color = 'default',\n endContent = undefined,\n size = 'md',\n startContent = undefined,\n}: LabelProps) => (\n <NextLabel\n className={cn(className)}\n color={color}\n endContent={endContent}\n size={size}\n startContent={startContent}\n >\n {children}\n </NextLabel>\n);\n\nexport default Label;\n","import Label from './Label';\n\nexport type { LabelProps } from './Label';\n\nexport { Label };\n\nexport default Label;\n"],"mappings":";AAGA,SAAS,QAAQ,iBAAiB;AAClC,OAAO,QAAQ;AA4Bb;AARF,IAAM,QAAQ,CAAC;AAAA,EACb;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,OAAO;AAAA,EACP,eAAe;AACjB,MACE;AAAA,EAAC;AAAA;AAAA,IACC,WAAW,GAAG,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEC;AAAA;AACH;AAGF,IAAO,gBAAQ;;;ACrCf,IAAOA,iBAAQ;","names":["Label_default"]}
@@ -0,0 +1,60 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/Modal/Modal.tsx
2
+
3
+
4
+
5
+
6
+
7
+
8
+ var _modal = require('@nextui-org/modal');
9
+ var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);
10
+ var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
11
+ var _jsxruntime = require('react/jsx-runtime');
12
+ var debug = _debug2.default.call(void 0, "component:Modal");
13
+ var Modal = ({
14
+ children = null,
15
+ className = void 0,
16
+ footer = void 0,
17
+ isOpen,
18
+ onClose,
19
+ size = "md",
20
+ testId = void 0,
21
+ title = void 0
22
+ }) => {
23
+ debug("Modal", { size });
24
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _classnames2.default.call(void 0, className), "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25
+ _modal.Modal,
26
+ {
27
+ backdrop: "opaque",
28
+ classNames: {
29
+ base: _classnames2.default.call(void 0,
30
+ {
31
+ "lg:w-11/12": size === "lg",
32
+ "w-2/12": size === "sm",
33
+ "w-6/12": size === "md"
34
+ },
35
+ // overwrite !rounded-none from nextui
36
+ "!rounded-lg"
37
+ )
38
+ },
39
+ isOpen,
40
+ onClose,
41
+ scrollBehavior: "inside",
42
+ size: "full",
43
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _modal.ModalContent, { "data-testid": testId ? `${testId}_modal` : "modal", children: () => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
44
+ title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _modal.ModalHeader, { children: title }),
45
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _modal.ModalBody, { className: "bg-ex-background", children }),
46
+ footer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _modal.ModalFooter, { children: footer })
47
+ ] }) })
48
+ }
49
+ ) });
50
+ };
51
+ var Modal_default = Modal;
52
+
53
+ // src/Modal/index.ts
54
+ var Modal_default2 = Modal_default;
55
+
56
+
57
+
58
+
59
+ exports.Modal_default = Modal_default; exports.Modal_default2 = Modal_default2;
60
+ //# sourceMappingURL=chunk-STEC6TAQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Modal/Modal.tsx","../src/Modal/index.ts"],"names":["Modal_default"],"mappings":";AAEA;AAAA,EACE,SAAS;AAAA,EACT,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,OACV;AACP,OAAO,QAAQ;AACf,OAAO,iBAAiB;AA8DZ,mBACY,KADZ;AA5DZ,IAAM,QAAQ,YAAY,iBAAiB;AA2B3C,IAAM,QAAQ,CAAC;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACV,MAAkB;AAChB,QAAM,SAAS,EAAE,KAAK,CAAC;AACvB,SACE,oBAAC,SAAI,WAAW,GAAG,SAAS,GAAG,eAAa,QAC1C;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,YAAY;AAAA,QACV,MAAM;AAAA,UACJ;AAAA,YACE,cAAc,SAAS;AAAA,YACvB,UAAU,SAAS;AAAA,YACnB,UAAU,SAAS;AAAA,UACrB;AAAA;AAAA,UAEA;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAe;AAAA,MACf,MAAK;AAAA,MAEL,8BAAC,oBAAiB,eAAa,SAAS,GAAG,MAAM,WAAW,SACzD,gBACC,iCACG;AAAA,iBAAS,oBAAC,mBAAiB,iBAAM;AAAA,QAClC,oBAAC,iBAAc,WAAU,oBACtB,UACH;AAAA,QACC,UAAU,oBAAC,mBAAiB,kBAAO;AAAA,SACtC,GAEJ;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAO,gBAAQ;;;AChFf,IAAOA,iBAAQ","sourcesContent":["import type { ReactNode } from 'react';\n\nimport {\n Modal as NextModal,\n ModalBody as NextModalBody,\n ModalContent as NextModalContent,\n ModalFooter as NextModalFooter,\n ModalHeader as NextModalHeader,\n} from '@nextui-org/modal';\nimport cn from 'classnames';\nimport createDebug from 'debug';\n\nconst debug = createDebug('component:Modal');\n\nexport const ModalSizeOptions = ['sm', 'md', 'lg'] as const;\ntype ModalSize = (typeof ModalSizeOptions)[number];\n\nexport interface ModalProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string | string[];\n /** HTML data-testid attribute used in e2e tests */\n footer?: ReactNode;\n /** open state (controlled) */\n isOpen: boolean;\n /** close event handler */\n onClose: () => void;\n /** modal size */\n size?: ModalSize;\n /** e2e test id */\n testId?: string;\n /** modal header */\n title?: ReactNode;\n}\n\n/**\n * Modal component based on [NextUI Modal](https://nextui.org/docs/components/modal)\n */\nconst Modal = ({\n children = null,\n className = undefined,\n footer = undefined,\n isOpen,\n onClose,\n size = 'md',\n testId = undefined,\n title = undefined,\n}: ModalProps) => {\n debug('Modal', { size });\n return (\n <div className={cn(className)} data-testid={testId}>\n <NextModal\n backdrop=\"opaque\"\n classNames={{\n base: cn(\n {\n 'lg:w-11/12': size === 'lg',\n 'w-2/12': size === 'sm',\n 'w-6/12': size === 'md',\n },\n // overwrite !rounded-none from nextui\n '!rounded-lg',\n ),\n }}\n isOpen={isOpen}\n onClose={onClose}\n scrollBehavior=\"inside\"\n size=\"full\"\n >\n <NextModalContent data-testid={testId ? `${testId}_modal` : 'modal'}>\n {() => (\n <>\n {title && <NextModalHeader>{title}</NextModalHeader>}\n <NextModalBody className=\"bg-ex-background\">\n {children}\n </NextModalBody>\n {footer && <NextModalFooter>{footer}</NextModalFooter>}\n </>\n )}\n </NextModalContent>\n </NextModal>\n </div>\n );\n};\n\nexport default Modal;\n","import Modal from './Modal';\n\nexport type { ModalProps } from './Modal';\n\nexport { Modal };\n\nexport default Modal;\n"]}
@@ -36,7 +36,11 @@ var Popover_default = ({
36
36
  );
37
37
  };
38
38
 
39
+ // src/Popover/index.ts
40
+ var Popover_default2 = Popover_default;
41
+
39
42
  export {
40
- Popover_default
43
+ Popover_default,
44
+ Popover_default2
41
45
  };
42
- //# sourceMappingURL=chunk-SGAWYTO7.js.map
46
+ //# sourceMappingURL=chunk-V2C3KFMP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Popover/Popover.tsx","../src/Popover/index.ts"],"sourcesContent":["import type { PopoverProps as NextPopoverProps } from '@nextui-org/popover';\nimport type { ReactNode } from 'react';\n\nimport { Popover, PopoverContent, PopoverTrigger } from '@nextui-org/popover';\nimport cn from 'classnames';\nimport createDebug from 'debug';\n\nconst debug = createDebug('component:Popover');\n\nexport interface PopoverProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string | string[];\n /** content of the popover */\n content: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n contentTestId?: string;\n /** placement of the popover relative to its trigger reference */\n placement?: NextPopoverProps['placement'];\n /** use as controlled component */\n openControlled?: { open: boolean; setOpen: (open: boolean) => void };\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** popover title */\n title?: ReactNode;\n}\n\n/**\n * Popover component based on [NextUI Card](https://nextui.org/docs/components/popover)\n */\nexport default ({\n children = null,\n className = undefined,\n content,\n contentTestId = undefined,\n placement = 'top',\n openControlled = undefined,\n testId = undefined,\n title = undefined,\n}: PopoverProps) => {\n debug('Popover');\n\n return (\n <Popover\n placement={placement}\n radius=\"sm\"\n showArrow\n {...(openControlled\n ? { isOpen: openControlled.open, onOpenChange: openControlled.setOpen }\n : {})}\n >\n <PopoverTrigger className={cn(className)} data-testid={testId}>\n {/* NOTE: type and aria properties are injected by PopoverTrigger */}\n {/* eslint-disable-next-line react/button-has-type */}\n <button>{children}</button>\n </PopoverTrigger>\n <PopoverContent data-testid={contentTestId}>\n <div className=\"max-h-[80vh] overflow-y-auto\">\n {title && (\n <div>\n {title}\n <hr />\n </div>\n )}\n {content}\n </div>\n </PopoverContent>\n </Popover>\n );\n};\n","import Popover from './Popover';\n\nexport type { PopoverProps } from './Popover';\n\nexport { Popover };\n\nexport default Popover;\n"],"mappings":";AAGA,SAAS,SAAS,gBAAgB,sBAAsB;AACxD,OAAO,QAAQ;AACf,OAAO,iBAAiB;AAkDhB,cAKI,YALJ;AAhDR,IAAM,QAAQ,YAAY,mBAAmB;AAwB7C,IAAO,kBAAQ,CAAC;AAAA,EACd,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ;AACV,MAAoB;AAClB,QAAM,SAAS;AAEf,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,QAAO;AAAA,MACP,WAAS;AAAA,MACR,GAAI,iBACD,EAAE,QAAQ,eAAe,MAAM,cAAc,eAAe,QAAQ,IACpE,CAAC;AAAA,MAEL;AAAA,4BAAC,kBAAe,WAAW,GAAG,SAAS,GAAG,eAAa,QAGrD,8BAAC,YAAQ,UAAS,GACpB;AAAA,QACA,oBAAC,kBAAe,eAAa,eAC3B,+BAAC,SAAI,WAAU,gCACZ;AAAA,mBACC,qBAAC,SACE;AAAA;AAAA,YACD,oBAAC,QAAG;AAAA,aACN;AAAA,UAED;AAAA,WACH,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AChEA,IAAOA,mBAAQ;","names":["Popover_default"]}
@@ -101,8 +101,11 @@ var Card = ({
101
101
  };
102
102
  var Card_default = Card;
103
103
 
104
+ // src/Card/index.ts
105
+ var Card_default2 = Card_default;
106
+
104
107
  export {
105
- cardVariants,
106
- Card_default
108
+ Card_default,
109
+ Card_default2
107
110
  };
108
- //# sourceMappingURL=chunk-XPTSDDXG.js.map
111
+ //# sourceMappingURL=chunk-VQ5Q33MY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Card/Card.tsx","../src/Card/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport {\n Card as NextCard,\n CardBody as NextCardBody,\n CardFooter as NextCardFooter,\n CardHeader as NextCardHeader,\n} from '@nextui-org/card';\nimport { Divider as NextDivider } from '@nextui-org/divider';\nimport createDebug from 'debug';\nimport { tv } from 'tailwind-variants';\n\nconst debug = createDebug('component:Card');\n\n// card styling variants\nexport const cardVariants = tv({\n slots: {\n base: 'border border-slate-300',\n body: '',\n divider: 'my-0 bg-slate-300',\n footer: '',\n header: 'text-base font-semibold',\n },\n});\n\ntype CardVariantProps = VariantProps<typeof cardVariants>;\ntype CardVariantSlots = Partial<\n Record<keyof ReturnType<typeof cardVariants>, string>\n>;\n\nexport interface CardProps extends CardVariantProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string | CardVariantSlots;\n /** footer content */\n footer?: ReactNode;\n /** header content */\n header?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Card component based on [NextUI Card](https://nextui.org/docs/components/card)\n */\nconst Card = ({\n children = null,\n className = undefined,\n testId = undefined,\n header = undefined,\n footer = undefined,\n}: CardProps) => {\n debug('Card', { className, testId });\n const {\n base: baseSlot,\n body: bodySlot,\n divider: dividerSlot,\n footer: footerSlot,\n header: headerSlot,\n } = cardVariants();\n\n return (\n <NextCard\n data-testid={testId && `card_${testId}`}\n className={baseSlot({\n className: typeof className === 'object' ? className.base : className,\n })}\n fullWidth\n radius=\"sm\"\n shadow=\"none\"\n >\n {header && (\n <>\n <NextCardHeader\n data-testid={testId && `card_header_${testId}`}\n className={headerSlot({\n className: typeof className === 'object' && className.header,\n })}\n >\n {header}\n </NextCardHeader>\n <NextDivider\n className={dividerSlot({\n className: typeof className === 'object' && className.divider,\n })}\n />\n </>\n )}\n <NextCardBody\n data-testid={testId && `card_body_${testId}`}\n className={bodySlot({\n className: typeof className === 'object' && className.body,\n })}\n >\n {children}\n </NextCardBody>\n {footer && (\n <>\n <NextDivider\n className={dividerSlot({\n className: typeof className === 'object' && className.divider,\n })}\n />\n <NextCardFooter\n data-testid={testId && `card_footer_${testId}`}\n className={footerSlot({\n className: typeof className === 'object' && className.footer,\n })}\n >\n {footer}\n </NextCardFooter>\n </>\n )}\n </NextCard>\n );\n};\n\nexport default Card;\n","import Card from './Card';\n\nexport type { CardProps } from './Card';\n\nexport { Card };\n\nexport default Card;\n"],"mappings":";AAGA;AAAA,EACE,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,OACT;AACP,SAAS,WAAW,mBAAmB;AACvC,OAAO,iBAAiB;AACxB,SAAS,UAAU;AA+DX,mBACE,KADF;AA7DR,IAAM,QAAQ,YAAY,gBAAgB;AAGnC,IAAM,eAAe,GAAG;AAAA,EAC7B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AACF,CAAC;AAuBD,IAAM,OAAO,CAAC;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX,MAAiB;AACf,QAAM,QAAQ,EAAE,WAAW,OAAO,CAAC;AACnC,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,IAAI,aAAa;AAEjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,UAAU,QAAQ,MAAM;AAAA,MACrC,WAAW,SAAS;AAAA,QAClB,WAAW,OAAO,cAAc,WAAW,UAAU,OAAO;AAAA,MAC9D,CAAC;AAAA,MACD,WAAS;AAAA,MACT,QAAO;AAAA,MACP,QAAO;AAAA,MAEN;AAAA,kBACC,iCACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,eAAa,UAAU,eAAe,MAAM;AAAA,cAC5C,WAAW,WAAW;AAAA,gBACpB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA,cAEA;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,YAAY;AAAA,gBACrB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA;AAAA,UACH;AAAA,WACF;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC,eAAa,UAAU,aAAa,MAAM;AAAA,YAC1C,WAAW,SAAS;AAAA,cAClB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,YACxD,CAAC;AAAA,YAEA;AAAA;AAAA,QACH;AAAA,QACC,UACC,iCACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,YAAY;AAAA,gBACrB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,eAAa,UAAU,eAAe,MAAM;AAAA,cAC5C,WAAW,WAAW;AAAA,gBACpB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA,cAEA;AAAA;AAAA,UACH;AAAA,WACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,eAAQ;;;ACjHf,IAAOA,gBAAQ;","names":["Card_default"]}
@@ -74,7 +74,11 @@ var Menu = ({
74
74
  };
75
75
  var Menu_default = Menu;
76
76
 
77
+ // src/Menu/index.ts
78
+ var Menu_default2 = Menu_default;
79
+
77
80
  export {
78
- Menu_default
81
+ Menu_default,
82
+ Menu_default2
79
83
  };
80
- //# sourceMappingURL=chunk-Y35GJHOR.js.map
84
+ //# sourceMappingURL=chunk-VZW4TVTX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Menu/Menu.tsx","../src/Menu/index.ts"],"sourcesContent":["import type { DropdownSectionProps } from '@nextui-org/dropdown';\nimport type { Key, MouseEventHandler, ReactNode } from 'react';\n\nimport { FaEllipsisVertical } from 'react-icons/fa6';\n\nimport { Button } from '@nextui-org/button';\nimport {\n Dropdown as NextDropdown,\n DropdownItem as NextDropdownItem,\n DropdownMenu as NextDropdownMenu,\n DropdownSection as NextDropdownSection,\n DropdownTrigger as NextDropdownTrigger,\n} from '@nextui-org/dropdown';\nimport cn from 'classnames';\nimport createDebug from 'debug';\n\nconst debug = createDebug('component:Menu');\n\n/**\n * Menu item type\n */\nexport interface MenuItem {\n /** unique identifier */\n key: string;\n /** CSS class name */\n className?: string;\n /** additional description shown under the label */\n description?: string;\n /** disables the menu item */\n disabled?: boolean;\n /** menu item icon */\n icon?: ReactNode;\n /** menu item name */\n label: ReactNode;\n /** click event handler */\n onClick?: MouseEventHandler<HTMLLIElement>;\n /** e2e test identifier */\n testId?: string;\n}\n\n/**\n * Menu section type\n */\nexport interface MenuSection {\n /** unique identifier */\n key: string;\n /** section label */\n label: ReactNode;\n /** section items (array of MenuItem) */\n items: MenuItem[];\n}\n\nexport interface MenuProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string | string[];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** menu item structure */\n items: (MenuSection | MenuItem)[];\n /** disable menu trigger */\n isDisabled?: boolean;\n /** called if item is selected */\n onAction?: (key: Key) => void;\n}\n\n/** returns String[] of disabled items/keys */\nconst getDisabledKeys = (items: (MenuSection | MenuItem)[]) => {\n return (\n items\n // @ts-expect-error typing issue with MenuSection | MenuItem\n .map((item) => (typeof item?.items === 'undefined' ? item : item.items))\n .flat<MenuItem[]>()\n .filter((item) => {\n return Object.hasOwn(item, 'disabled') && item.disabled === true;\n })\n .map((item) => item.key)\n );\n};\n\nconst renderMenuItem = (item: MenuItem) => (\n <NextDropdownItem\n className={item.className}\n data-testid={item.testId || item.key}\n description={item.description}\n key={item.key}\n onClick={item.onClick}\n startContent={item.icon}\n >\n {item.label}\n </NextDropdownItem>\n);\n\n/**\n * Dropdown menu component based on [NextUI Dropdown](https://nextui.org/docs/components/dropdown)\n */\nconst Menu = ({\n children = null,\n className = undefined,\n onAction = undefined,\n testId = undefined,\n isDisabled = false,\n items,\n}: MenuProps) => {\n debug('Menu', { items });\n\n return (\n <NextDropdown isDisabled={isDisabled}>\n <NextDropdownTrigger className={cn(className)} data-testid={testId}>\n {children ? (\n // eslint-disable-next-line react/button-has-type\n <button>{children}</button>\n ) : (\n // INFO: we use next button here so that ref passing works\n <Button size=\"sm\" variant=\"flat\" className=\"min-w-0\">\n <FaEllipsisVertical />\n </Button>\n )}\n </NextDropdownTrigger>\n <NextDropdownMenu\n // aria-label=\"Dynamic Actions\"\n items={items}\n disabledKeys={getDisabledKeys(items)}\n onAction={onAction}\n >\n {(item) => {\n if ('items' in item) {\n return (\n <NextDropdownSection\n items={item.items as MenuSection['items']}\n title={item.label as DropdownSectionProps['title']}\n key={item.key}\n >\n {/* @ts-expect-error ts problem here with render fn */}\n {(sectionItem) => {\n return renderMenuItem(sectionItem);\n }}\n </NextDropdownSection>\n );\n }\n return renderMenuItem(item);\n }}\n </NextDropdownMenu>\n </NextDropdown>\n );\n};\n\nexport default Menu;\n","import Menu from './Menu';\n\nexport type { MenuProps, MenuItem, MenuSection } from './Menu';\n\nexport { Menu };\n\nexport default Menu;\n"],"mappings":";AAGA,SAAS,0BAA0B;AAEnC,SAAS,cAAc;AACvB;AAAA,EACE,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,OACd;AACP,OAAO,QAAQ;AACf,OAAO,iBAAiB;AAoEtB,cA0BE,YA1BF;AAlEF,IAAM,QAAQ,YAAY,gBAAgB;AAoD1C,IAAM,kBAAkB,CAAC,UAAsC;AAC7D,SACE,MAEG,IAAI,CAAC,SAAU,OAAO,MAAM,UAAU,cAAc,OAAO,KAAK,KAAM,EACtE,KAAiB,EACjB,OAAO,CAAC,SAAS;AAChB,WAAO,OAAO,OAAO,MAAM,UAAU,KAAK,KAAK,aAAa;AAAA,EAC9D,CAAC,EACA,IAAI,CAAC,SAAS,KAAK,GAAG;AAE7B;AAEA,IAAM,iBAAiB,CAAC,SACtB;AAAA,EAAC;AAAA;AAAA,IACC,WAAW,KAAK;AAAA,IAChB,eAAa,KAAK,UAAU,KAAK;AAAA,IACjC,aAAa,KAAK;AAAA,IAElB,SAAS,KAAK;AAAA,IACd,cAAc,KAAK;AAAA,IAElB,eAAK;AAAA;AAAA,EAJD,KAAK;AAKZ;AAMF,IAAM,OAAO,CAAC;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,aAAa;AAAA,EACb;AACF,MAAiB;AACf,QAAM,QAAQ,EAAE,MAAM,CAAC;AAEvB,SACE,qBAAC,gBAAa,YACZ;AAAA,wBAAC,uBAAoB,WAAW,GAAG,SAAS,GAAG,eAAa,QACzD;AAAA;AAAA,MAEC,oBAAC,YAAQ,UAAS;AAAA;AAAA;AAAA,MAGlB,oBAAC,UAAO,MAAK,MAAK,SAAQ,QAAO,WAAU,WACzC,8BAAC,sBAAmB,GACtB;AAAA,OAEJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA,cAAc,gBAAgB,KAAK;AAAA,QACnC;AAAA,QAEC,WAAC,SAAS;AACT,cAAI,WAAW,MAAM;AACnB,mBACE;AAAA,cAAC;AAAA;AAAA,gBACC,OAAO,KAAK;AAAA,gBACZ,OAAO,KAAK;AAAA,gBAIX,WAAC,gBAAgB;AAChB,yBAAO,eAAe,WAAW;AAAA,gBACnC;AAAA;AAAA,cALK,KAAK;AAAA,YAMZ;AAAA,UAEJ;AACA,iBAAO,eAAe,IAAI;AAAA,QAC5B;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,eAAQ;;;AC9If,IAAOA,gBAAQ;","names":["Menu_default"]}
@@ -0,0 +1,111 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/Card/Card.tsx
2
+
3
+
4
+
5
+
6
+
7
+ var _card = require('@nextui-org/card');
8
+ var _divider = require('@nextui-org/divider');
9
+ var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug);
10
+ var _tailwindvariants = require('tailwind-variants');
11
+ var _jsxruntime = require('react/jsx-runtime');
12
+ var debug = _debug2.default.call(void 0, "component:Card");
13
+ var cardVariants = _tailwindvariants.tv.call(void 0, {
14
+ slots: {
15
+ base: "border border-slate-300",
16
+ body: "",
17
+ divider: "my-0 bg-slate-300",
18
+ footer: "",
19
+ header: "text-base font-semibold"
20
+ }
21
+ });
22
+ var Card = ({
23
+ children = null,
24
+ className = void 0,
25
+ testId = void 0,
26
+ header = void 0,
27
+ footer = void 0
28
+ }) => {
29
+ debug("Card", { className, testId });
30
+ const {
31
+ base: baseSlot,
32
+ body: bodySlot,
33
+ divider: dividerSlot,
34
+ footer: footerSlot,
35
+ header: headerSlot
36
+ } = cardVariants();
37
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
38
+ _card.Card,
39
+ {
40
+ "data-testid": testId && `card_${testId}`,
41
+ className: baseSlot({
42
+ className: typeof className === "object" ? className.base : className
43
+ }),
44
+ fullWidth: true,
45
+ radius: "sm",
46
+ shadow: "none",
47
+ children: [
48
+ header && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
49
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
50
+ _card.CardHeader,
51
+ {
52
+ "data-testid": testId && `card_header_${testId}`,
53
+ className: headerSlot({
54
+ className: typeof className === "object" && className.header
55
+ }),
56
+ children: header
57
+ }
58
+ ),
59
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
60
+ _divider.Divider,
61
+ {
62
+ className: dividerSlot({
63
+ className: typeof className === "object" && className.divider
64
+ })
65
+ }
66
+ )
67
+ ] }),
68
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
69
+ _card.CardBody,
70
+ {
71
+ "data-testid": testId && `card_body_${testId}`,
72
+ className: bodySlot({
73
+ className: typeof className === "object" && className.body
74
+ }),
75
+ children
76
+ }
77
+ ),
78
+ footer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
79
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
80
+ _divider.Divider,
81
+ {
82
+ className: dividerSlot({
83
+ className: typeof className === "object" && className.divider
84
+ })
85
+ }
86
+ ),
87
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
88
+ _card.CardFooter,
89
+ {
90
+ "data-testid": testId && `card_footer_${testId}`,
91
+ className: footerSlot({
92
+ className: typeof className === "object" && className.footer
93
+ }),
94
+ children: footer
95
+ }
96
+ )
97
+ ] })
98
+ ]
99
+ }
100
+ );
101
+ };
102
+ var Card_default = Card;
103
+
104
+ // src/Card/index.ts
105
+ var Card_default2 = Card_default;
106
+
107
+
108
+
109
+
110
+ exports.Card_default = Card_default; exports.Card_default2 = Card_default2;
111
+ //# sourceMappingURL=chunk-WTKZJFQV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Card/Card.tsx","../src/Card/index.ts"],"names":["Card_default"],"mappings":";AAGA;AAAA,EACE,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,OACT;AACP,SAAS,WAAW,mBAAmB;AACvC,OAAO,iBAAiB;AACxB,SAAS,UAAU;AA+DX,mBACE,KADF;AA7DR,IAAM,QAAQ,YAAY,gBAAgB;AAGnC,IAAM,eAAe,GAAG;AAAA,EAC7B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AACF,CAAC;AAuBD,IAAM,OAAO,CAAC;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX,MAAiB;AACf,QAAM,QAAQ,EAAE,WAAW,OAAO,CAAC;AACnC,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,IAAI,aAAa;AAEjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,UAAU,QAAQ,MAAM;AAAA,MACrC,WAAW,SAAS;AAAA,QAClB,WAAW,OAAO,cAAc,WAAW,UAAU,OAAO;AAAA,MAC9D,CAAC;AAAA,MACD,WAAS;AAAA,MACT,QAAO;AAAA,MACP,QAAO;AAAA,MAEN;AAAA,kBACC,iCACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,eAAa,UAAU,eAAe,MAAM;AAAA,cAC5C,WAAW,WAAW;AAAA,gBACpB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA,cAEA;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,YAAY;AAAA,gBACrB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA;AAAA,UACH;AAAA,WACF;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC,eAAa,UAAU,aAAa,MAAM;AAAA,YAC1C,WAAW,SAAS;AAAA,cAClB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,YACxD,CAAC;AAAA,YAEA;AAAA;AAAA,QACH;AAAA,QACC,UACC,iCACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,YAAY;AAAA,gBACrB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA;AAAA,UACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,eAAa,UAAU,eAAe,MAAM;AAAA,cAC5C,WAAW,WAAW;AAAA,gBACpB,WAAW,OAAO,cAAc,YAAY,UAAU;AAAA,cACxD,CAAC;AAAA,cAEA;AAAA;AAAA,UACH;AAAA,WACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,eAAQ;;;ACjHf,IAAOA,gBAAQ","sourcesContent":["import type { ReactNode } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport {\n Card as NextCard,\n CardBody as NextCardBody,\n CardFooter as NextCardFooter,\n CardHeader as NextCardHeader,\n} from '@nextui-org/card';\nimport { Divider as NextDivider } from '@nextui-org/divider';\nimport createDebug from 'debug';\nimport { tv } from 'tailwind-variants';\n\nconst debug = createDebug('component:Card');\n\n// card styling variants\nexport const cardVariants = tv({\n slots: {\n base: 'border border-slate-300',\n body: '',\n divider: 'my-0 bg-slate-300',\n footer: '',\n header: 'text-base font-semibold',\n },\n});\n\ntype CardVariantProps = VariantProps<typeof cardVariants>;\ntype CardVariantSlots = Partial<\n Record<keyof ReturnType<typeof cardVariants>, string>\n>;\n\nexport interface CardProps extends CardVariantProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string | CardVariantSlots;\n /** footer content */\n footer?: ReactNode;\n /** header content */\n header?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Card component based on [NextUI Card](https://nextui.org/docs/components/card)\n */\nconst Card = ({\n children = null,\n className = undefined,\n testId = undefined,\n header = undefined,\n footer = undefined,\n}: CardProps) => {\n debug('Card', { className, testId });\n const {\n base: baseSlot,\n body: bodySlot,\n divider: dividerSlot,\n footer: footerSlot,\n header: headerSlot,\n } = cardVariants();\n\n return (\n <NextCard\n data-testid={testId && `card_${testId}`}\n className={baseSlot({\n className: typeof className === 'object' ? className.base : className,\n })}\n fullWidth\n radius=\"sm\"\n shadow=\"none\"\n >\n {header && (\n <>\n <NextCardHeader\n data-testid={testId && `card_header_${testId}`}\n className={headerSlot({\n className: typeof className === 'object' && className.header,\n })}\n >\n {header}\n </NextCardHeader>\n <NextDivider\n className={dividerSlot({\n className: typeof className === 'object' && className.divider,\n })}\n />\n </>\n )}\n <NextCardBody\n data-testid={testId && `card_body_${testId}`}\n className={bodySlot({\n className: typeof className === 'object' && className.body,\n })}\n >\n {children}\n </NextCardBody>\n {footer && (\n <>\n <NextDivider\n className={dividerSlot({\n className: typeof className === 'object' && className.divider,\n })}\n />\n <NextCardFooter\n data-testid={testId && `card_footer_${testId}`}\n className={footerSlot({\n className: typeof className === 'object' && className.footer,\n })}\n >\n {footer}\n </NextCardFooter>\n </>\n )}\n </NextCard>\n );\n};\n\nexport default Card;\n","import Card from './Card';\n\nexport type { CardProps } from './Card';\n\nexport { Card };\n\nexport default Card;\n"]}