datocms-react-ui 0.3.15 → 0.3.20

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 (193) hide show
  1. package/dist/cjs/Button/styles.module.css.json +1 -1
  2. package/dist/cjs/ButtonGroup/Button/index.js +19 -0
  3. package/dist/cjs/ButtonGroup/Button/index.js.map +1 -0
  4. package/dist/cjs/ButtonGroup/Button/styles.module.css.json +1 -0
  5. package/dist/cjs/ButtonGroup/Group/index.js +29 -0
  6. package/dist/cjs/ButtonGroup/Group/index.js.map +1 -0
  7. package/dist/cjs/ButtonGroup/Group/styles.module.css.json +1 -0
  8. package/dist/cjs/ButtonGroup/index.js +8 -0
  9. package/dist/cjs/ButtonGroup/index.js.map +1 -0
  10. package/dist/cjs/Canvas/index.js +16 -27
  11. package/dist/cjs/Canvas/index.js.map +1 -1
  12. package/dist/cjs/Canvas/styles.module.css.json +1 -1
  13. package/dist/cjs/Dropdown/Dropdown.js +166 -0
  14. package/dist/cjs/Dropdown/Dropdown.js.map +1 -0
  15. package/dist/cjs/Dropdown/DropdownContext.js +9 -0
  16. package/dist/cjs/Dropdown/DropdownContext.js.map +1 -0
  17. package/dist/cjs/Dropdown/Group.js +16 -0
  18. package/dist/cjs/Dropdown/Group.js.map +1 -0
  19. package/dist/cjs/Dropdown/Menu.js +250 -0
  20. package/dist/cjs/Dropdown/Menu.js.map +1 -0
  21. package/dist/cjs/Dropdown/MenuContext.js +12 -0
  22. package/dist/cjs/Dropdown/MenuContext.js.map +1 -0
  23. package/dist/cjs/Dropdown/Option.js +100 -0
  24. package/dist/cjs/Dropdown/Option.js.map +1 -0
  25. package/dist/cjs/Dropdown/OptionAction.js +29 -0
  26. package/dist/cjs/Dropdown/OptionAction.js.map +1 -0
  27. package/dist/cjs/Dropdown/Portal.js +53 -0
  28. package/dist/cjs/Dropdown/Portal.js.map +1 -0
  29. package/dist/cjs/Dropdown/Separator.js +37 -0
  30. package/dist/cjs/Dropdown/Separator.js.map +1 -0
  31. package/dist/cjs/Dropdown/Text.js +14 -0
  32. package/dist/cjs/Dropdown/Text.js.map +1 -0
  33. package/dist/cjs/Dropdown/index.js +18 -0
  34. package/dist/cjs/Dropdown/index.js.map +1 -0
  35. package/dist/cjs/Dropdown/styles.module.css.json +1 -0
  36. package/dist/cjs/SidebarPanel/index.js +88 -0
  37. package/dist/cjs/SidebarPanel/index.js.map +1 -0
  38. package/dist/cjs/SidebarPanel/styles.module.css.json +1 -0
  39. package/dist/cjs/Spinner/index.js +64 -0
  40. package/dist/cjs/Spinner/index.js.map +1 -0
  41. package/dist/cjs/Spinner/styles.module.css.json +1 -0
  42. package/dist/cjs/Toolbar/Button/index.js +15 -0
  43. package/dist/cjs/Toolbar/Button/index.js.map +1 -0
  44. package/dist/cjs/Toolbar/Button/styles.module.css.json +1 -0
  45. package/dist/cjs/Toolbar/Stack/index.js +19 -0
  46. package/dist/cjs/Toolbar/Stack/index.js.map +1 -0
  47. package/dist/cjs/Toolbar/Stack/styles.module.css.json +1 -0
  48. package/dist/cjs/Toolbar/Title/index.js +15 -0
  49. package/dist/cjs/Toolbar/Title/index.js.map +1 -0
  50. package/dist/cjs/Toolbar/Title/styles.module.css.json +1 -0
  51. package/dist/cjs/Toolbar/Toolbar/index.js +99 -0
  52. package/dist/cjs/Toolbar/Toolbar/index.js.map +1 -0
  53. package/dist/cjs/Toolbar/Toolbar/styles.module.css.json +1 -0
  54. package/dist/cjs/Toolbar/index.js +12 -0
  55. package/dist/cjs/Toolbar/index.js.map +1 -0
  56. package/dist/cjs/generateStyleFromCtx/index.js +32 -0
  57. package/dist/cjs/generateStyleFromCtx/index.js.map +1 -0
  58. package/dist/cjs/icons.js +38 -0
  59. package/dist/cjs/icons.js.map +1 -0
  60. package/dist/cjs/index.js +6 -0
  61. package/dist/cjs/index.js.map +1 -1
  62. package/dist/cjs/mergeRefs/index.js +19 -0
  63. package/dist/cjs/mergeRefs/index.js.map +1 -0
  64. package/dist/cjs/useClickOutside/index.js +24 -0
  65. package/dist/cjs/useClickOutside/index.js.map +1 -0
  66. package/dist/cjs/useMediaQuery/index.js +149 -0
  67. package/dist/cjs/useMediaQuery/index.js.map +1 -0
  68. package/dist/esm/Button/styles.module.css.json +1 -1
  69. package/dist/esm/ButtonGroup/Button/index.d.ts +10 -0
  70. package/dist/esm/ButtonGroup/Button/index.js +12 -0
  71. package/dist/esm/ButtonGroup/Button/index.js.map +1 -0
  72. package/dist/esm/ButtonGroup/Button/styles.module.css.json +1 -0
  73. package/dist/esm/ButtonGroup/Group/index.d.ts +21 -0
  74. package/dist/esm/ButtonGroup/Group/index.js +22 -0
  75. package/dist/esm/ButtonGroup/Group/index.js.map +1 -0
  76. package/dist/esm/ButtonGroup/Group/styles.module.css.json +1 -0
  77. package/dist/esm/ButtonGroup/index.d.ts +4 -0
  78. package/dist/esm/ButtonGroup/index.js +3 -0
  79. package/dist/esm/ButtonGroup/index.js.map +1 -0
  80. package/dist/esm/Canvas/index.d.ts +7 -3
  81. package/dist/esm/Canvas/index.js +16 -28
  82. package/dist/esm/Canvas/index.js.map +1 -1
  83. package/dist/esm/Canvas/styles.module.css.json +1 -1
  84. package/dist/esm/Dropdown/Dropdown.d.ts +113 -0
  85. package/dist/esm/Dropdown/Dropdown.js +140 -0
  86. package/dist/esm/Dropdown/Dropdown.js.map +1 -0
  87. package/dist/esm/Dropdown/DropdownContext.d.ts +6 -0
  88. package/dist/esm/Dropdown/DropdownContext.js +6 -0
  89. package/dist/esm/Dropdown/DropdownContext.js.map +1 -0
  90. package/dist/esm/Dropdown/Group.d.ts +6 -0
  91. package/dist/esm/Dropdown/Group.js +9 -0
  92. package/dist/esm/Dropdown/Group.js.map +1 -0
  93. package/dist/esm/Dropdown/Menu.d.ts +6 -0
  94. package/dist/esm/Dropdown/Menu.js +224 -0
  95. package/dist/esm/Dropdown/Menu.js.map +1 -0
  96. package/dist/esm/Dropdown/MenuContext.d.ts +8 -0
  97. package/dist/esm/Dropdown/MenuContext.js +9 -0
  98. package/dist/esm/Dropdown/MenuContext.js.map +1 -0
  99. package/dist/esm/Dropdown/Option.d.ts +13 -0
  100. package/dist/esm/Dropdown/Option.js +74 -0
  101. package/dist/esm/Dropdown/Option.js.map +1 -0
  102. package/dist/esm/Dropdown/OptionAction.d.ts +11 -0
  103. package/dist/esm/Dropdown/OptionAction.js +22 -0
  104. package/dist/esm/Dropdown/OptionAction.js.map +1 -0
  105. package/dist/esm/Dropdown/Portal.d.ts +4 -0
  106. package/dist/esm/Dropdown/Portal.js +27 -0
  107. package/dist/esm/Dropdown/Portal.js.map +1 -0
  108. package/dist/esm/Dropdown/Separator.d.ts +2 -0
  109. package/dist/esm/Dropdown/Separator.js +11 -0
  110. package/dist/esm/Dropdown/Separator.js.map +1 -0
  111. package/dist/esm/Dropdown/Text.d.ts +5 -0
  112. package/dist/esm/Dropdown/Text.js +7 -0
  113. package/dist/esm/Dropdown/Text.js.map +1 -0
  114. package/dist/esm/Dropdown/index.d.ts +9 -0
  115. package/dist/esm/Dropdown/index.js +9 -0
  116. package/dist/esm/Dropdown/index.js.map +1 -0
  117. package/dist/esm/Dropdown/styles.module.css.json +1 -0
  118. package/dist/esm/SidebarPanel/index.d.ts +43 -0
  119. package/dist/esm/SidebarPanel/index.js +62 -0
  120. package/dist/esm/SidebarPanel/index.js.map +1 -0
  121. package/dist/esm/SidebarPanel/styles.module.css.json +1 -0
  122. package/dist/esm/Spinner/index.d.ts +27 -0
  123. package/dist/esm/Spinner/index.js +57 -0
  124. package/dist/esm/Spinner/index.js.map +1 -0
  125. package/dist/esm/Spinner/styles.module.css.json +1 -0
  126. package/dist/esm/Toolbar/Button/index.d.ts +8 -0
  127. package/dist/esm/Toolbar/Button/index.js +8 -0
  128. package/dist/esm/Toolbar/Button/index.js.map +1 -0
  129. package/dist/esm/Toolbar/Button/styles.module.css.json +1 -0
  130. package/dist/esm/Toolbar/Stack/index.d.ts +8 -0
  131. package/dist/esm/Toolbar/Stack/index.js +12 -0
  132. package/dist/esm/Toolbar/Stack/index.js.map +1 -0
  133. package/dist/esm/Toolbar/Stack/styles.module.css.json +1 -0
  134. package/dist/esm/Toolbar/Title/index.d.ts +7 -0
  135. package/dist/esm/Toolbar/Title/index.js +8 -0
  136. package/dist/esm/Toolbar/Title/index.js.map +1 -0
  137. package/dist/esm/Toolbar/Title/styles.module.css.json +1 -0
  138. package/dist/esm/Toolbar/Toolbar/index.d.ts +91 -0
  139. package/dist/esm/Toolbar/Toolbar/index.js +92 -0
  140. package/dist/esm/Toolbar/Toolbar/index.js.map +1 -0
  141. package/dist/esm/Toolbar/Toolbar/styles.module.css.json +1 -0
  142. package/dist/esm/Toolbar/index.d.ts +8 -0
  143. package/dist/esm/Toolbar/index.js +5 -0
  144. package/dist/esm/Toolbar/index.js.map +1 -0
  145. package/dist/esm/generateStyleFromCtx/index.d.ts +3 -0
  146. package/dist/esm/generateStyleFromCtx/index.js +28 -0
  147. package/dist/esm/generateStyleFromCtx/index.js.map +1 -0
  148. package/dist/esm/icons.d.ts +12 -0
  149. package/dist/esm/icons.js +27 -0
  150. package/dist/esm/icons.js.map +1 -0
  151. package/dist/esm/index.d.ts +6 -0
  152. package/dist/esm/index.js +6 -0
  153. package/dist/esm/index.js.map +1 -1
  154. package/dist/esm/mergeRefs/index.d.ts +2 -0
  155. package/dist/esm/mergeRefs/index.js +15 -0
  156. package/dist/esm/mergeRefs/index.js.map +1 -0
  157. package/dist/esm/useClickOutside/index.d.ts +2 -0
  158. package/dist/esm/useClickOutside/index.js +21 -0
  159. package/dist/esm/useClickOutside/index.js.map +1 -0
  160. package/dist/esm/useMediaQuery/index.d.ts +8 -0
  161. package/dist/esm/useMediaQuery/index.js +140 -0
  162. package/dist/esm/useMediaQuery/index.js.map +1 -0
  163. package/dist/types/ButtonGroup/Button/index.d.ts +10 -0
  164. package/dist/types/ButtonGroup/Group/index.d.ts +21 -0
  165. package/dist/types/ButtonGroup/index.d.ts +4 -0
  166. package/dist/types/Canvas/index.d.ts +7 -3
  167. package/dist/types/Dropdown/Dropdown.d.ts +113 -0
  168. package/dist/types/Dropdown/DropdownContext.d.ts +6 -0
  169. package/dist/types/Dropdown/Group.d.ts +6 -0
  170. package/dist/types/Dropdown/Menu.d.ts +6 -0
  171. package/dist/types/Dropdown/MenuContext.d.ts +8 -0
  172. package/dist/types/Dropdown/Option.d.ts +13 -0
  173. package/dist/types/Dropdown/OptionAction.d.ts +11 -0
  174. package/dist/types/Dropdown/Portal.d.ts +4 -0
  175. package/dist/types/Dropdown/Separator.d.ts +2 -0
  176. package/dist/types/Dropdown/Text.d.ts +5 -0
  177. package/dist/types/Dropdown/index.d.ts +9 -0
  178. package/dist/types/SidebarPanel/index.d.ts +43 -0
  179. package/dist/types/Spinner/index.d.ts +27 -0
  180. package/dist/types/Toolbar/Button/index.d.ts +8 -0
  181. package/dist/types/Toolbar/Stack/index.d.ts +8 -0
  182. package/dist/types/Toolbar/Title/index.d.ts +7 -0
  183. package/dist/types/Toolbar/Toolbar/index.d.ts +91 -0
  184. package/dist/types/Toolbar/index.d.ts +8 -0
  185. package/dist/types/generateStyleFromCtx/index.d.ts +3 -0
  186. package/dist/types/icons.d.ts +12 -0
  187. package/dist/types/index.d.ts +6 -0
  188. package/dist/types/mergeRefs/index.d.ts +2 -0
  189. package/dist/types/useClickOutside/index.d.ts +2 -0
  190. package/dist/types/useMediaQuery/index.d.ts +8 -0
  191. package/package.json +9 -6
  192. package/styles.css +1 -1
  193. package/types.json +4699 -1855
@@ -0,0 +1,92 @@
1
+ import classNames from 'classnames';
2
+ import React from 'react';
3
+ import s from './styles.module.css.json';
4
+ /**
5
+ * - @example Basic example
6
+ *
7
+ * ```js
8
+ * <Canvas ctx={ctx}>
9
+ * <Toolbar>
10
+ * <ToolbarStack stackSize="l">
11
+ * <ToolbarTitle>Media Area</ToolbarTitle>
12
+ * </ToolbarStack>
13
+ * </Toolbar>
14
+ * <div
15
+ * style={{
16
+ * display: 'flex',
17
+ * justifyContent: 'center',
18
+ * alignItems: 'center',
19
+ * background: 'var(--light-bg-color)',
20
+ * height: '150px',
21
+ * }}
22
+ * >
23
+ * Main content
24
+ * </div>
25
+ * </Canvas>;
26
+ * ```
27
+ *
28
+ * @example Buttons and actions
29
+ *
30
+ * ```js
31
+ * <Canvas ctx={ctx}>
32
+ * <Toolbar>
33
+ * <ToolbarButton>
34
+ * <BackIcon />
35
+ * </ToolbarButton>
36
+ * <ToolbarStack stackSize="l">
37
+ * <ToolbarTitle>Media Area</ToolbarTitle>
38
+ * <div style={{ flex: '1' }} />
39
+ * <Button buttonType="primary">Action</Button>
40
+ * </ToolbarStack>
41
+ * <ToolbarButton>
42
+ * <SidebarLeftArrowIcon />
43
+ * </ToolbarButton>
44
+ * </Toolbar>
45
+ * <div
46
+ * style={{
47
+ * display: 'flex',
48
+ * justifyContent: 'center',
49
+ * alignItems: 'center',
50
+ * background: 'var(--light-bg-color)',
51
+ * height: '150px',
52
+ * }}
53
+ * >
54
+ * Main content
55
+ * </div>
56
+ * </Canvas>;
57
+ * ```
58
+ *
59
+ * @example With button group
60
+ *
61
+ * ```js
62
+ * <Canvas ctx={ctx}>
63
+ * <Toolbar>
64
+ * <ToolbarStack stackSize="l">
65
+ * <ToolbarTitle>Media Area</ToolbarTitle>
66
+ * <div style={{ flex: '1' }} />
67
+ * <ButtonGroup>
68
+ * <ButtonGroupButton>First</ButtonGroupButton>
69
+ * <ButtonGroupButton selected>Second</ButtonGroupButton>
70
+ * <ButtonGroupButton>Third</ButtonGroupButton>
71
+ * </ButtonGroup>
72
+ * </ToolbarStack>
73
+ * </Toolbar>
74
+ * <div
75
+ * style={{
76
+ * display: 'flex',
77
+ * justifyContent: 'center',
78
+ * alignItems: 'center',
79
+ * background: 'var(--light-bg-color)',
80
+ * height: '150px',
81
+ * }}
82
+ * >
83
+ * Main content
84
+ * </div>
85
+ * </Canvas>;
86
+ * ```
87
+ */
88
+ export function Toolbar(_a) {
89
+ var children = _a.children, style = _a.style, className = _a.className;
90
+ return (React.createElement("div", { className: classNames(s['Toolbar'], className), style: style }, children));
91
+ }
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Toolbar/Toolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAmC,MAAM,OAAO,CAAC;AACxD,OAAO,CAAC,MAAM,0BAA0B,CAAC;AAQzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,MAAM,UAAU,OAAO,CAAC,EAIT;QAHb,QAAQ,cAAA,EACR,KAAK,WAAA,EACL,SAAS,eAAA;IAET,OAAO,CACL,6BACE,SAAS,EAAE,UAAU,CACnB,CAAC,CAAC,SAAS,CAAC,EAEZ,SAAS,CACV,EACD,KAAK,EAAE,KAAK,IAEX,QAAQ,CACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ { "Toolbar": "_Toolbar_1cwb8_1" }
@@ -0,0 +1,8 @@
1
+ export { Toolbar } from './Toolbar';
2
+ export type { ToolbarProps } from './Toolbar';
3
+ export { Button as ToolbarButton } from './Button';
4
+ export type { ButtonProps as ToolbarButtonProps } from './Button';
5
+ export { Title as ToolbarTitle } from './Title';
6
+ export type { TitleProps as ToolbarTitleProps } from './Title';
7
+ export { Stack as ToolbarStack } from './Stack';
8
+ export type { StackProps as ToolbarStackProps } from './Stack';
@@ -0,0 +1,5 @@
1
+ export { Toolbar } from './Toolbar';
2
+ export { Button as ToolbarButton } from './Button';
3
+ export { Title as ToolbarTitle } from './Title';
4
+ export { Stack as ToolbarStack } from './Stack';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Toolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { RenderProperties } from 'datocms-plugin-sdk';
2
+ import { CSSProperties } from 'react';
3
+ export declare function generateStyleFromCtx(ctx: RenderProperties): CSSProperties;
@@ -0,0 +1,28 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ function camelToDash(str) {
13
+ if (str != str.toLowerCase()) {
14
+ str = str.replace(/[A-Z]/g, function (m) { return '-' + m.toLowerCase(); });
15
+ }
16
+ return str;
17
+ }
18
+ export function generateStyleFromCtx(ctx) {
19
+ return Object.entries(ctx.theme).reduce(function (acc, _a) {
20
+ var _b;
21
+ var _c;
22
+ var k = _a[0], v = _a[1];
23
+ return __assign(__assign({}, acc), (_b = {}, _b["--" + camelToDash(k)] = v, _b["--" + camelToDash(k + "RgbComponents")] = ((_c = v.match(/rgb\((\d+, \d+, \d+)\)/)) === null || _c === void 0 ? void 0 : _c[1]) || undefined, _b));
24
+ }, {
25
+ padding: ctx.bodyPadding.map(function (p) { return p + "px"; }).join(' '),
26
+ });
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generateStyleFromCtx/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE;QAC5B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,EAArB,CAAqB,CAAC,CAAC;KAC3D;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAqB;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CACrC,UAAC,GAAG,EAAE,EAAM;;;YAAL,CAAC,QAAA,EAAE,CAAC,QAAA;QACT,6BACK,GAAG,gBACL,OAAK,WAAW,CAAC,CAAC,CAAG,IAAG,CAAC,KACzB,OAAK,WAAW,CAAI,CAAC,kBAAe,CAAG,IACtC,CAAA,MAAA,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,0CAAG,CAAC,CAAC,KAAI,SAAS,OACrD;IACJ,CAAC,EACD;QACE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAG,CAAC,OAAI,EAAR,CAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACxD,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { CSSProperties } from 'react';
2
+ export declare type IconProps = {
3
+ width?: string | number;
4
+ height?: string | number;
5
+ className?: string;
6
+ style?: CSSProperties;
7
+ };
8
+ export declare function BackIcon({ width, height, style, className, }: IconProps): JSX.Element;
9
+ export declare function SidebarLeftArrowIcon({ width, height, style, className, }: IconProps): JSX.Element;
10
+ export declare function SidebarRightArrowIcon({ width, height, style, className, }: IconProps): JSX.Element;
11
+ export declare function CaretDownIcon({ width, height, style, className, }: IconProps): JSX.Element;
12
+ export declare function CaretUpIcon({ width, height, style, className, }: IconProps): JSX.Element;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ export function BackIcon(_a) {
3
+ var _b = _a.width, width = _b === void 0 ? '1em' : _b, _c = _a.height, height = _c === void 0 ? '1em' : _c, style = _a.style, className = _a.className;
4
+ return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 256 512", width: width, height: height, style: style, className: className },
5
+ React.createElement("path", { d: "M238.475 475.535l7.071-7.07c4.686-4.686 4.686-12.284 0-16.971L50.053 256 245.546 60.506c4.686-4.686 4.686-12.284 0-16.971l-7.071-7.07c-4.686-4.686-12.284-4.686-16.97 0L10.454 247.515c-4.686 4.686-4.686 12.284 0 16.971l211.051 211.05c4.686 4.686 12.284 4.686 16.97-.001z" })));
6
+ }
7
+ export function SidebarLeftArrowIcon(_a) {
8
+ var _b = _a.width, width = _b === void 0 ? '1em' : _b, _c = _a.height, height = _c === void 0 ? '1em' : _c, style = _a.style, className = _a.className;
9
+ return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", width: width, height: height, style: style, className: className },
10
+ React.createElement("path", { d: "M152 412.5L3.5 264.5c-4.7-4.7-4.7-12.3 0-17L152 99.5c4.7-4.7 12.3-4.7 17 0l7.1 7.1c4.7 4.7 4.7 12.3 0 17L60.1 239H372c6.6 0 12 5.4 12 12v10c0 6.6-5.4 12-12 12H60.1L176 388.4c4.7 4.7 4.7 12.3 0 17l-7.1 7.1c-4.6 4.7-12.2 4.7-16.9 0zM436 64h-8c-6.6 0-12 5.4-12 12v360c0 6.6 5.4 12 12 12h8c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12z" })));
11
+ }
12
+ export function SidebarRightArrowIcon(_a) {
13
+ var _b = _a.width, width = _b === void 0 ? '1em' : _b, _c = _a.height, height = _c === void 0 ? '1em' : _c, style = _a.style, className = _a.className;
14
+ return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", width: width, height: height, style: style, className: className },
15
+ React.createElement("path", { d: "M296 99.5l148.5 148c4.7 4.7 4.7 12.3 0 17L296 412.5c-4.7 4.7-12.3 4.7-17 0l-7.1-7.1c-4.7-4.7-4.7-12.3 0-17l116-115.4H76c-6.6 0-12-5.4-12-12v-10c0-6.6 5.4-12 12-12h311.9L272 123.6c-4.7-4.7-4.7-12.3 0-17l7.1-7.1c4.6-4.7 12.2-4.7 16.9 0zM12 448h8c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12h-8C5.4 64 0 69.4 0 76v360c0 6.6 5.4 12 12 12z" })));
16
+ }
17
+ export function CaretDownIcon(_a) {
18
+ var _b = _a.width, width = _b === void 0 ? '1em' : _b, _c = _a.height, height = _c === void 0 ? '1em' : _c, style = _a.style, className = _a.className;
19
+ return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 320 512", width: width, height: height, style: style, className: className },
20
+ React.createElement("path", { d: "M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z" })));
21
+ }
22
+ export function CaretUpIcon(_a) {
23
+ var _b = _a.width, width = _b === void 0 ? '1em' : _b, _c = _a.height, height = _c === void 0 ? '1em' : _c, style = _a.style, className = _a.className;
24
+ return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 320 512", width: width, height: height, style: style, className: className },
25
+ React.createElement("path", { d: "M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z" })));
26
+ }
27
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAS7C,MAAM,UAAU,QAAQ,CAAC,EAKb;QAJV,aAAa,EAAb,KAAK,mBAAG,KAAK,KAAA,EACb,cAAc,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAAK,WAAA,EACL,SAAS,eAAA;IAET,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS;QAEpB,8BAAM,CAAC,EAAC,+QAA+Q,GAAQ,CAC3R,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAKzB;QAJV,aAAa,EAAb,KAAK,mBAAG,KAAK,KAAA,EACb,cAAc,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAAK,WAAA,EACL,SAAS,eAAA;IAET,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS;QAEpB,8BAAM,CAAC,EAAC,yUAAyU,GAAQ,CACrV,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAK1B;QAJV,aAAa,EAAb,KAAK,mBAAG,KAAK,KAAA,EACb,cAAc,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAAK,WAAA,EACL,SAAS,eAAA;IAET,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS;QAEpB,8BAAM,CAAC,EAAC,4UAA4U,GAAQ,CACxV,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAKlB;QAJV,aAAa,EAAb,KAAK,mBAAG,KAAK,KAAA,EACb,cAAc,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAAK,WAAA,EACL,SAAS,eAAA;IAET,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS;QAEpB,8BAAM,CAAC,EAAC,yHAAyH,GAAG,CAChI,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAKhB;QAJV,aAAa,EAAb,KAAK,mBAAG,KAAK,KAAA,EACb,cAAc,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,KAAK,WAAA,EACL,SAAS,eAAA;IAET,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS;QAEpB,8BAAM,CAAC,EAAC,kKAAkK,GAAG,CACzK,CACP,CAAC;AACJ,CAAC"}
@@ -13,3 +13,9 @@ export * from './ContextInspector';
13
13
  export * from './Section';
14
14
  export * from './SelectInput';
15
15
  export * from './SelectField';
16
+ export * from './ButtonGroup';
17
+ export * from './Toolbar';
18
+ export * from './Spinner';
19
+ export * from './SidebarPanel';
20
+ export * from './Dropdown';
21
+ export * from './icons';
package/dist/esm/index.js CHANGED
@@ -13,4 +13,10 @@ export * from './ContextInspector';
13
13
  export * from './Section';
14
14
  export * from './SelectInput';
15
15
  export * from './SelectField';
16
+ export * from './ButtonGroup';
17
+ export * from './Toolbar';
18
+ export * from './Spinner';
19
+ export * from './SidebarPanel';
20
+ export * from './Dropdown';
21
+ export * from './icons';
16
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const mergeRefs: <T extends unknown>(...refs: import("react").Ref<T>[]) => (instance: T | null) => void;
@@ -0,0 +1,15 @@
1
+ export var mergeRefs = function () {
2
+ var refs = [];
3
+ for (var _i = 0; _i < arguments.length; _i++) {
4
+ refs[_i] = arguments[_i];
5
+ }
6
+ return function (element) {
7
+ return refs.forEach(function (ref) {
8
+ if (typeof ref === 'function')
9
+ ref(element);
10
+ else if (ref && typeof ref === 'object')
11
+ ref.current = element;
12
+ });
13
+ };
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mergeRefs/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,SAAS,GAAG;IACvB,cAAuB;SAAvB,UAAuB,EAAvB,qBAAuB,EAAvB,IAAuB;QAAvB,yBAAuB;;IACE,OAAA,UAAC,OAAU;QACpC,OAAA,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;YACf,IAAI,OAAO,GAAG,KAAK,UAAU;gBAAE,GAAG,CAAC,OAAO,CAAC,CAAC;iBACvC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBACpC,GAAiC,CAAC,OAAO,GAAG,OAAO,CAAC;QACzD,CAAC,CAAC;IAJF,CAIE;AALuB,CAKvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export default function useClickOutside<T extends HTMLElement>(handler: (event: MouseEvent | TouchEvent) => void): React.RefObject<T>;
@@ -0,0 +1,21 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ export default function useClickOutside(handler) {
3
+ var ref = useRef(null);
4
+ var handleClick = useCallback(function (event) {
5
+ event.target;
6
+ if (!ref.current || ref.current.contains(event.target)) {
7
+ return;
8
+ }
9
+ handler(event);
10
+ }, [handler]);
11
+ useEffect(function () {
12
+ document.addEventListener('mousedown', handleClick);
13
+ document.addEventListener('touchstart', handleClick);
14
+ return function () {
15
+ document.removeEventListener('mousedown', handleClick);
16
+ document.removeEventListener('touchstart', handleClick);
17
+ };
18
+ }, [handleClick]);
19
+ return ref;
20
+ }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useClickOutside/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,OAAiD;IAEjD,IAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;IAE5B,IAAM,WAAW,GAAG,WAAW,CAC7B,UAAC,KAA8B;QAC7B,KAAK,CAAC,MAAM,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;YAC9D,OAAO;SACR;QACD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,SAAS,CAAC;QACR,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACpD,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAErD,OAAO;YACL,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACvD,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export declare function useMediaQuery(media: string): MediaQueryList;
3
+ export declare type MediaQueryProps = {
4
+ media: string;
5
+ children: (mql: MediaQueryList) => JSX.Element;
6
+ };
7
+ export declare function MediaQuery({ media, children, }: MediaQueryProps): JSX.Element | null;
8
+ export declare function useElementLayout(ref: React.MutableRefObject<Element>): DOMRect;
@@ -0,0 +1,140 @@
1
+ import React from 'react';
2
+ var list = {};
3
+ export function useMediaQuery(media) {
4
+ var mediaQueryList = React.useMemo(function () {
5
+ // We have an existing mediaQueryList for media.
6
+ if (list[media]) {
7
+ return list[media].mql;
8
+ }
9
+ if (typeof window !== 'undefined') {
10
+ return matchMedia(media);
11
+ }
12
+ // Server: use a fallback.
13
+ return { matches: true, media: media };
14
+ }, [list, media]);
15
+ // Since the mediaQueryList is shared we use state to trigger re-renders.
16
+ // This is done with update({}) (a new object instance will force a re-rendering).
17
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
+ var _a = React.useState({}), _ = _a[0], update = _a[1];
19
+ React.useLayoutEffect(function () {
20
+ if (list[media]) {
21
+ list[media].notifiers.push(update);
22
+ }
23
+ else {
24
+ list[media] = {
25
+ mql: mediaQueryList,
26
+ notifiers: [update],
27
+ listener: function (mql) {
28
+ var match = list[mql.media];
29
+ if (match) {
30
+ match.notifiers.forEach(function (updateFn) { return updateFn({}); });
31
+ }
32
+ },
33
+ };
34
+ list[media].mql.addEventListener('change', list[media].listener);
35
+ }
36
+ return function () {
37
+ var notifierIndex = list[media].notifiers.indexOf(update);
38
+ if (notifierIndex > -1) {
39
+ // Remove `update`.
40
+ list[media].notifiers.splice(notifierIndex, 1);
41
+ }
42
+ if (list[media].notifiers.length === 0) {
43
+ list[media].mql.removeEventListener('change', list[media].listener);
44
+ delete list[media];
45
+ }
46
+ };
47
+ }, [list, media, mediaQueryList]);
48
+ return mediaQueryList;
49
+ }
50
+ export function MediaQuery(_a) {
51
+ var media = _a.media, children = _a.children;
52
+ var mql = useMediaQuery(media);
53
+ return typeof children === 'function' ? children(mql) : null;
54
+ }
55
+ var DOM_LAYOUT_HANDLER_NAME = '__reactLayoutHandler';
56
+ var supportsBorderBox = (function () {
57
+ if (typeof document === 'undefined') {
58
+ return false;
59
+ }
60
+ var e = document.body.appendChild(document.createElement('div'));
61
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
62
+ var observer = new ResizeObserver(function () { });
63
+ try {
64
+ observer.observe(e, { box: 'border-box' });
65
+ observer.unobserve(e);
66
+ return false;
67
+ }
68
+ catch (error) {
69
+ return true;
70
+ }
71
+ finally {
72
+ document.body.removeChild(e);
73
+ }
74
+ })();
75
+ var resizeObserver = null;
76
+ function getResizeObserver() {
77
+ if (resizeObserver) {
78
+ return resizeObserver;
79
+ }
80
+ if (typeof ResizeObserver === 'undefined') {
81
+ return;
82
+ }
83
+ resizeObserver = new ResizeObserver(function (entries) {
84
+ entries.forEach(function (entry) {
85
+ var node = entry.target;
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ var onLayout = node[DOM_LAYOUT_HANDLER_NAME];
88
+ if (typeof onLayout !== 'function') {
89
+ return;
90
+ }
91
+ if (supportsBorderBox && entry.borderBoxSize) {
92
+ var boxSize_1 = entry.borderBoxSize[0] || entry.borderBoxSize;
93
+ onLayout(function (prevRect) {
94
+ if (prevRect.width === boxSize_1.inlineSize &&
95
+ prevRect.height === boxSize_1.blockSize) {
96
+ return prevRect;
97
+ }
98
+ return new DOMRect(0, 0, boxSize_1.inlineSize, boxSize_1.blockSize);
99
+ });
100
+ return;
101
+ }
102
+ var elRect = entry.target.getBoundingClientRect();
103
+ onLayout(function (prevRect) {
104
+ if (prevRect.width === elRect.width &&
105
+ prevRect.height === elRect.height) {
106
+ return prevRect;
107
+ }
108
+ return new DOMRect(0, 0, elRect.width, elRect.height);
109
+ });
110
+ });
111
+ });
112
+ return resizeObserver;
113
+ }
114
+ export function useElementLayout(ref) {
115
+ var observer = getResizeObserver();
116
+ var _a = React.useState(new DOMRect()), rect = _a[0], setRect = _a[1];
117
+ React.useLayoutEffect(function () {
118
+ var node = ref.current;
119
+ if (node) {
120
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
+ node[DOM_LAYOUT_HANDLER_NAME] = setRect;
122
+ }
123
+ if (node && observer) {
124
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
125
+ if (typeof node[DOM_LAYOUT_HANDLER_NAME] === 'function') {
126
+ observer.observe(node, supportsBorderBox ? { box: 'border-box' } : undefined);
127
+ }
128
+ else {
129
+ observer.unobserve(node);
130
+ }
131
+ }
132
+ return function () {
133
+ if (node != null && observer != null) {
134
+ observer.unobserve(node);
135
+ }
136
+ };
137
+ }, [ref, observer]);
138
+ return rect;
139
+ }
140
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useMediaQuery/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { CSSProperties, MouseEventHandler, ReactNode } from 'react';
2
+ export declare type ButtonProps = {
3
+ children?: ReactNode;
4
+ className?: string;
5
+ selected?: boolean;
6
+ disabled?: boolean;
7
+ style?: CSSProperties;
8
+ onClick?: MouseEventHandler;
9
+ };
10
+ export declare function Button({ children, style, className, selected, disabled, onClick, }: ButtonProps): JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ export declare type GroupProps = {
3
+ children?: ReactNode;
4
+ className?: string;
5
+ style?: CSSProperties;
6
+ };
7
+ /**
8
+ * @example Basic example
9
+ *
10
+ * ```js
11
+ * <Canvas ctx={ctx}>
12
+ * <ButtonGroup>
13
+ * <ButtonGroupButton>First</ButtonGroupButton>
14
+ * <ButtonGroupButton selected>Second</ButtonGroupButton>
15
+ * <ButtonGroupButton>Third</ButtonGroupButton>
16
+ * <ButtonGroupButton disabled>Fourth</ButtonGroupButton>
17
+ * </ButtonGroup>
18
+ * </Canvas>;
19
+ * ```
20
+ */
21
+ export declare function Group({ children, style, className }: GroupProps): JSX.Element;
@@ -0,0 +1,4 @@
1
+ export { Group as ButtonGroup } from './Group';
2
+ export type { GroupProps as ButtonGroupProps } from './Group';
3
+ export { Button as ButtonGroupButton } from './Button';
4
+ export type { ButtonProps as ButtonGroupButtonProps } from './Button';
@@ -1,7 +1,10 @@
1
- import { ReactNode } from 'react';
2
- import { RenderProperties } from 'datocms-plugin-sdk';
1
+ import React, { ReactNode } from 'react';
2
+ import { RenderMethods, RenderProperties } from 'datocms-plugin-sdk';
3
+ declare type BaseRenderPropertiesAndMethods = RenderProperties & RenderMethods;
4
+ export declare const CtxContext: React.Context<BaseRenderPropertiesAndMethods | null>;
5
+ export declare function useCtx<T extends BaseRenderPropertiesAndMethods>(): T;
3
6
  export declare type CanvasProps = {
4
- ctx: RenderProperties;
7
+ ctx: BaseRenderPropertiesAndMethods;
5
8
  noAutoResizer?: boolean;
6
9
  children: ReactNode;
7
10
  };
@@ -497,3 +500,4 @@ export declare type CanvasProps = {
497
500
  * ```
498
501
  */
499
502
  export declare function Canvas({ ctx, children, noAutoResizer, }: CanvasProps): JSX.Element;
503
+ export {};
@@ -0,0 +1,113 @@
1
+ import React from 'react';
2
+ declare type RenderTriggerCtx = {
3
+ open: boolean;
4
+ onClick: () => void;
5
+ };
6
+ export declare type DropdownProps = {
7
+ renderTrigger: (ctx: RenderTriggerCtx) => JSX.Element;
8
+ children: React.ReactNode;
9
+ };
10
+ /**
11
+ * @example Basic example
12
+ *
13
+ * ```js
14
+ * <Canvas ctx={ctx}>
15
+ * <Dropdown
16
+ * renderTrigger={({ open, onClick }) => (
17
+ * <Button
18
+ * onClick={onClick}
19
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
20
+ * >
21
+ * Options
22
+ * </Button>
23
+ * )}
24
+ * >
25
+ * <DropdownMenu>
26
+ * <DropdownOption onClick={() => {}}>Edit</DropdownOption>
27
+ * <DropdownOption disabled onClick={() => {}}>
28
+ * Duplicate
29
+ * </DropdownOption>
30
+ * <DropdownSeparator />
31
+ * <DropdownOption red onClick={() => {}}>
32
+ * Delete
33
+ * </DropdownOption>
34
+ * </DropdownMenu>
35
+ * </Dropdown>
36
+ * </Canvas>;
37
+ * ```
38
+ *
39
+ * @example Option actions
40
+ *
41
+ * ```js
42
+ * <Canvas ctx={ctx}>
43
+ * <Dropdown
44
+ * renderTrigger={({ open, onClick }) => (
45
+ * <Button
46
+ * onClick={onClick}
47
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
48
+ * >
49
+ * Fields
50
+ * </Button>
51
+ * )}
52
+ * >
53
+ * <DropdownMenu>
54
+ * <DropdownOption>
55
+ * First option
56
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
57
+ * <DropdownOptionAction
58
+ * red
59
+ * icon={<TrashIcon />}
60
+ * onClick={() => {}}
61
+ * />
62
+ * </DropdownOption>
63
+ * <DropdownOption>
64
+ * Second option
65
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
66
+ * <DropdownOptionAction
67
+ * red
68
+ * icon={<TrashIcon />}
69
+ * onClick={() => {}}
70
+ * />
71
+ * </DropdownOption>
72
+ * </DropdownMenu>
73
+ * </Dropdown>
74
+ * </Canvas>;
75
+ * ```
76
+ *
77
+ * @example Option groups
78
+ *
79
+ * ```js
80
+ * <Canvas ctx={ctx}>
81
+ * <Dropdown
82
+ * renderTrigger={({ open, onClick }) => (
83
+ * <Button
84
+ * onClick={onClick}
85
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
86
+ * >
87
+ * Fields
88
+ * </Button>
89
+ * )}
90
+ * >
91
+ * <DropdownMenu>
92
+ * <DropdownGroup name="Group 1">
93
+ * <DropdownOption>Foo</DropdownOption>
94
+ * <DropdownOption>Bar</DropdownOption>
95
+ * <DropdownOption>Qux</DropdownOption>
96
+ * </DropdownGroup>
97
+ * <DropdownGroup name="Group 2">
98
+ * <DropdownOption>Foo</DropdownOption>
99
+ * <DropdownOption>Bar</DropdownOption>
100
+ * <DropdownOption>Qux</DropdownOption>
101
+ * </DropdownGroup>
102
+ * <DropdownGroup name="Group 3">
103
+ * <DropdownOption>Foo</DropdownOption>
104
+ * <DropdownOption>Bar</DropdownOption>
105
+ * <DropdownOption>Qux</DropdownOption>
106
+ * </DropdownGroup>
107
+ * </DropdownMenu>
108
+ * </Dropdown>
109
+ * </Canvas>;
110
+ * ```
111
+ */
112
+ export declare function Dropdown({ renderTrigger, children, }: DropdownProps): JSX.Element;
113
+ export {};
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare type DropdownContextType = {
3
+ closeMenu: () => void;
4
+ };
5
+ export declare const DropdownContext: import("react").Context<DropdownContextType>;
6
+ export {};
@@ -0,0 +1,6 @@
1
+ import React, { ReactNode } from 'react';
2
+ export declare type GroupProps = {
3
+ children: React.ReactNode;
4
+ name: ReactNode;
5
+ };
6
+ export declare const Group: ({ children, name }: GroupProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare type MenuProps = {
3
+ children: React.ReactNode;
4
+ alignment?: 'left' | 'right';
5
+ };
6
+ export declare const Menu: ({ children, alignment, }: MenuProps) => JSX.Element;