@artsy/palette 29.5.0 → 29.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,9 +22,10 @@ export interface PopoverActions {
22
22
  }
23
23
  export interface PopoverProps extends BoxProps {
24
24
  children: ({ anchorRef, onVisible, onHide }: PopoverActions) => JSX.Element;
25
+ ignoreClickOutside?: boolean;
26
+ manageFocus?: boolean;
25
27
  offset?: number;
26
28
  onClose?: () => void;
27
- ignoreClickOutside?: boolean;
28
29
  placement?: Position;
29
30
  /** Display triangular pointer back to anchor node */
30
31
  pointer?: boolean;
@@ -27,7 +27,7 @@ var _Clickable = require("../Clickable");
27
27
 
28
28
  var _Pointer = require("../Pointer");
29
29
 
30
- var _excluded = ["children", "onClose", "offset", "ignoreClickOutside", "placement", "pointer", "popover", "variant", "visible", "zIndex"];
30
+ var _excluded = ["children", "ignoreClickOutside", "manageFocus", "offset", "onClose", "placement", "pointer", "popover", "variant", "visible", "zIndex"];
31
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
@@ -71,11 +71,13 @@ exports.POPOVER_VARIANTS = POPOVER_VARIANTS;
71
71
  */
72
72
  var Popover = function Popover(_ref) {
73
73
  var children = _ref.children,
74
- onClose = _ref.onClose,
75
- _ref$offset = _ref.offset,
76
- offset = _ref$offset === void 0 ? 10 : _ref$offset,
77
74
  _ref$ignoreClickOutsi = _ref.ignoreClickOutside,
78
75
  ignoreClickOutside = _ref$ignoreClickOutsi === void 0 ? false : _ref$ignoreClickOutsi,
76
+ _ref$manageFocus = _ref.manageFocus,
77
+ manageFocus = _ref$manageFocus === void 0 ? true : _ref$manageFocus,
78
+ _ref$offset = _ref.offset,
79
+ offset = _ref$offset === void 0 ? 10 : _ref$offset,
80
+ onClose = _ref.onClose,
79
81
  _ref$placement = _ref.placement,
80
82
  placement = _ref$placement === void 0 ? "top" : _ref$placement,
81
83
  _ref$pointer = _ref.pointer,
@@ -100,6 +102,8 @@ var Popover = function Popover(_ref) {
100
102
  }, [_visible]); // Yields focus back and forth between popover and anchor
101
103
 
102
104
  (0, _useUpdateEffect.useUpdateEffect)(function () {
105
+ if (!manageFocus) return;
106
+
103
107
  if (visible && tooltipRef.current) {
104
108
  tooltipRef.current.focus();
105
109
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Popover/Popover.tsx"],"names":["POPOVER_VARIANTS","defaultLight","backgroundColor","color","defaultDark","Popover","children","onClose","offset","ignoreClickOutside","placement","pointer","popover","variant","visible","_visible","zIndex","rest","setVisible","tooltipRef","current","focus","anchorRef","onVisible","onHide","handleHide","handleKeydown","event","key","document","addEventListener","removeEventListener","position","active","isFlipped","state","ref","onClickOutside","when","type","createPortal","Tip","Box","DROP_SHADOW","variants","Panel","Close","Clickable"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { variant } from \"styled-system\"\nimport { DROP_SHADOW } from \"../../helpers\"\nimport { CloseIcon } from \"../../svgs\"\nimport { Position, useClickOutside, usePortal, usePosition } from \"../../utils\"\nimport { useUpdateEffect } from \"../../utils/useUpdateEffect\"\nimport { Box, BoxProps } from \"../Box\"\nimport { Clickable } from \"../Clickable\"\nimport { Pointer } from \"../Pointer\"\n\nexport const POPOVER_VARIANTS = {\n defaultLight: {\n backgroundColor: \"white100\",\n color: \"black100\",\n },\n defaultDark: {\n backgroundColor: \"black100\",\n color: \"white100\",\n },\n}\n\nexport type PopoverVariant = keyof typeof POPOVER_VARIANTS\n\nexport interface PopoverActions {\n /** Call to show popover */\n onVisible(): void\n /** Call to hide popover */\n onHide(): void\n /** Pass ref to element you want the popover to be anchored to */\n anchorRef: React.MutableRefObject<HTMLElement>\n}\n\nexport interface PopoverProps extends BoxProps {\n children: ({ anchorRef, onVisible, onHide }: PopoverActions) => JSX.Element\n offset?: number\n onClose?: () => void\n ignoreClickOutside?: boolean\n placement?: Position\n /** Display triangular pointer back to anchor node */\n pointer?: boolean\n popover: React.ReactNode\n variant?: PopoverVariant\n /** Initial default visibility */\n visible?: boolean\n}\n\n/**\n * A `Popover` is a small modal-type element which is anchored, and can be\n * positioned relative to, another element.\n */\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n onClose,\n offset = 10,\n ignoreClickOutside = false,\n placement = \"top\",\n pointer = false,\n popover,\n variant = \"defaultLight\",\n visible: _visible = false,\n zIndex = 1,\n ...rest\n}) => {\n const [visible, setVisible] = useState(false)\n\n // If prop updates/set initial visibility.\n useEffect(() => {\n setVisible(_visible)\n }, [_visible])\n\n // Yields focus back and forth between popover and anchor\n useUpdateEffect(() => {\n if (visible && tooltipRef.current) {\n tooltipRef.current.focus()\n return\n }\n\n if (!anchorRef.current) return\n anchorRef.current.focus()\n }, [visible])\n\n const onVisible = useCallback(() => {\n setVisible(true)\n }, [])\n\n const onHide = useCallback(() => {\n setVisible(false)\n }, [])\n\n const handleHide = useCallback(() => {\n onHide()\n onClose?.()\n }, [onHide, onClose])\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleHide()\n }\n }\n\n document.addEventListener(\"keydown\", handleKeydown)\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown)\n }\n }, [handleHide])\n\n const {\n anchorRef,\n tooltipRef,\n state: { isFlipped },\n } = usePosition({\n position: placement,\n offset,\n active: visible,\n })\n\n useClickOutside({\n ref: tooltipRef,\n onClickOutside: handleHide,\n when: visible && !ignoreClickOutside,\n type: \"click\",\n })\n\n const { createPortal } = usePortal()\n\n return (\n <>\n {children({ anchorRef: anchorRef as any, onVisible, onHide })}\n\n {visible &&\n createPortal(\n <Tip\n tabIndex={0}\n ref={tooltipRef as any}\n zIndex={zIndex}\n display=\"inline-block\"\n position=\"relative\"\n variant={variant}\n >\n {pointer && (\n <Pointer\n anchorRef={anchorRef}\n tooltipRef={tooltipRef}\n variant={variant}\n placement={placement}\n isFlipped={isFlipped}\n />\n )}\n\n <Close\n position=\"relative\"\n zIndex={2}\n p={1}\n onClick={handleHide}\n aria-label=\"Close\"\n >\n <CloseIcon fill=\"currentColor\" display=\"block\" />\n </Close>\n\n <Panel\n variant={variant}\n position=\"relative\"\n py={2}\n px={1}\n zIndex={1}\n {...rest}\n >\n {popover}\n </Panel>\n </Tip>\n )}\n </>\n )\n}\n\nconst Tip = styled(Box)<{ variant?: PopoverVariant }>`\n position: fixed;\n text-align: left;\n transition: opacity 250ms ease-out;\n box-shadow: ${DROP_SHADOW};\n ${variant({ variants: POPOVER_VARIANTS })}\n`\n\nconst Panel = styled(Box)<{ variant?: PopoverVariant }>`\n ${variant({ variants: POPOVER_VARIANTS })}\n`\n\nconst Close = styled(Clickable)`\n float: right;\n`\n"],"file":"Popover.js"}
1
+ {"version":3,"sources":["../../../src/elements/Popover/Popover.tsx"],"names":["POPOVER_VARIANTS","defaultLight","backgroundColor","color","defaultDark","Popover","children","ignoreClickOutside","manageFocus","offset","onClose","placement","pointer","popover","variant","visible","_visible","zIndex","rest","setVisible","tooltipRef","current","focus","anchorRef","onVisible","onHide","handleHide","handleKeydown","event","key","document","addEventListener","removeEventListener","position","active","isFlipped","state","ref","onClickOutside","when","type","createPortal","Tip","Box","DROP_SHADOW","variants","Panel","Close","Clickable"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\"\nimport styled from \"styled-components\"\nimport { variant } from \"styled-system\"\nimport { DROP_SHADOW } from \"../../helpers\"\nimport { CloseIcon } from \"../../svgs\"\nimport { Position, useClickOutside, usePortal, usePosition } from \"../../utils\"\nimport { useUpdateEffect } from \"../../utils/useUpdateEffect\"\nimport { Box, BoxProps } from \"../Box\"\nimport { Clickable } from \"../Clickable\"\nimport { Pointer } from \"../Pointer\"\n\nexport const POPOVER_VARIANTS = {\n defaultLight: {\n backgroundColor: \"white100\",\n color: \"black100\",\n },\n defaultDark: {\n backgroundColor: \"black100\",\n color: \"white100\",\n },\n}\n\nexport type PopoverVariant = keyof typeof POPOVER_VARIANTS\n\nexport interface PopoverActions {\n /** Call to show popover */\n onVisible(): void\n /** Call to hide popover */\n onHide(): void\n /** Pass ref to element you want the popover to be anchored to */\n anchorRef: React.MutableRefObject<HTMLElement>\n}\n\nexport interface PopoverProps extends BoxProps {\n children: ({ anchorRef, onVisible, onHide }: PopoverActions) => JSX.Element\n ignoreClickOutside?: boolean\n manageFocus?: boolean\n offset?: number\n onClose?: () => void\n placement?: Position\n /** Display triangular pointer back to anchor node */\n pointer?: boolean\n popover: React.ReactNode\n variant?: PopoverVariant\n /** Initial default visibility */\n visible?: boolean\n}\n\n/**\n * A `Popover` is a small modal-type element which is anchored, and can be\n * positioned relative to, another element.\n */\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n ignoreClickOutside = false,\n manageFocus = true,\n offset = 10,\n onClose,\n placement = \"top\",\n pointer = false,\n popover,\n variant = \"defaultLight\",\n visible: _visible = false,\n zIndex = 1,\n ...rest\n}) => {\n const [visible, setVisible] = useState(false)\n\n // If prop updates/set initial visibility.\n useEffect(() => {\n setVisible(_visible)\n }, [_visible])\n\n // Yields focus back and forth between popover and anchor\n useUpdateEffect(() => {\n if (!manageFocus) return\n\n if (visible && tooltipRef.current) {\n tooltipRef.current.focus()\n return\n }\n\n if (!anchorRef.current) return\n anchorRef.current.focus()\n }, [visible])\n\n const onVisible = useCallback(() => {\n setVisible(true)\n }, [])\n\n const onHide = useCallback(() => {\n setVisible(false)\n }, [])\n\n const handleHide = useCallback(() => {\n onHide()\n onClose?.()\n }, [onHide, onClose])\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleHide()\n }\n }\n\n document.addEventListener(\"keydown\", handleKeydown)\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown)\n }\n }, [handleHide])\n\n const {\n anchorRef,\n tooltipRef,\n state: { isFlipped },\n } = usePosition({\n position: placement,\n offset,\n active: visible,\n })\n\n useClickOutside({\n ref: tooltipRef,\n onClickOutside: handleHide,\n when: visible && !ignoreClickOutside,\n type: \"click\",\n })\n\n const { createPortal } = usePortal()\n\n return (\n <>\n {children({ anchorRef: anchorRef as any, onVisible, onHide })}\n\n {visible &&\n createPortal(\n <Tip\n tabIndex={0}\n ref={tooltipRef as any}\n zIndex={zIndex}\n display=\"inline-block\"\n position=\"relative\"\n variant={variant}\n >\n {pointer && (\n <Pointer\n anchorRef={anchorRef}\n tooltipRef={tooltipRef}\n variant={variant}\n placement={placement}\n isFlipped={isFlipped}\n />\n )}\n\n <Close\n position=\"relative\"\n zIndex={2}\n p={1}\n onClick={handleHide}\n aria-label=\"Close\"\n >\n <CloseIcon fill=\"currentColor\" display=\"block\" />\n </Close>\n\n <Panel\n variant={variant}\n position=\"relative\"\n py={2}\n px={1}\n zIndex={1}\n {...rest}\n >\n {popover}\n </Panel>\n </Tip>\n )}\n </>\n )\n}\n\nconst Tip = styled(Box)<{ variant?: PopoverVariant }>`\n position: fixed;\n text-align: left;\n transition: opacity 250ms ease-out;\n box-shadow: ${DROP_SHADOW};\n ${variant({ variants: POPOVER_VARIANTS })}\n`\n\nconst Panel = styled(Box)<{ variant?: PopoverVariant }>`\n ${variant({ variants: POPOVER_VARIANTS })}\n`\n\nconst Close = styled(Clickable)`\n float: right;\n`\n"],"file":"Popover.js"}
@@ -22,3 +22,4 @@ export declare const Placement: {
22
22
  };
23
23
  };
24
24
  };
25
+ export declare const ManageFocus: () => JSX.Element;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.Placement = exports.Default = void 0;
6
+ exports.default = exports.Placement = exports.ManageFocus = exports.Default = void 0;
7
7
 
8
8
  var _addonActions = require("@storybook/addon-actions");
9
9
 
@@ -135,4 +135,36 @@ Placement.story = {
135
135
  }
136
136
  }
137
137
  };
138
+
139
+ var ManageFocus = function ManageFocus() {
140
+ return /*#__PURE__*/_react.default.createElement(_storybookStates.States, {
141
+ states: [{
142
+ visible: true,
143
+ manageFocus: false
144
+ }, {
145
+ visible: true,
146
+ manageFocus: true
147
+ }]
148
+ }, /*#__PURE__*/_react.default.createElement(_Popover.Popover, {
149
+ placement: "bottom",
150
+ popover: /*#__PURE__*/_react.default.createElement(_Text.Text, {
151
+ variant: "xs",
152
+ width: 300
153
+ }, CONTENT)
154
+ }, function (_ref3) {
155
+ var onVisible = _ref3.onVisible,
156
+ anchorRef = _ref3.anchorRef;
157
+ return /*#__PURE__*/_react.default.createElement(_Box.Box, {
158
+ textAlign: "center"
159
+ }, /*#__PURE__*/_react.default.createElement(_Button.Button, {
160
+ ref: anchorRef,
161
+ variant: "secondaryBlack",
162
+ size: "small",
163
+ onClick: onVisible
164
+ }, "Click to display popover"));
165
+ }));
166
+ };
167
+
168
+ exports.ManageFocus = ManageFocus;
169
+ ManageFocus.displayName = "ManageFocus";
138
170
  //# sourceMappingURL=Popover.story.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Popover/Popover.story.tsx"],"names":["CONTENT","title","Default","visible","onClose","popover","pointer","p","Array","fill","map","_","i","variant","placement","zIndex","ignoreClickOutside","onVisible","anchorRef","story","parameters","chromatic","disable","Placement","Object","keys","POSITION","props","JSON","stringify"],"mappings":"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","sourcesContent":["import { action } from \"@storybook/addon-actions\"\nimport React from \"react\"\nimport { States } from \"storybook-states\"\nimport { Position, POSITION } from \"../../utils\"\nimport { Box } from \"../Box\"\nimport { Button } from \"../Button\"\nimport { Text } from \"../Text\"\nimport { Popover, PopoverProps } from \"./Popover\"\n\nconst CONTENT =\n \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi eius autem aliquid cumque, mollitia incidunt totam. Id ut quae hic in quisquam, cupiditate iure nobis, provident minus voluptatem tenetur consequatur.\"\n\nexport default {\n title: \"Components/Popover\",\n}\n\nexport const Default = () => {\n return (\n <States<Partial<PopoverProps>>\n states={[\n {},\n { visible: true },\n { onClose: action(\"onClose\") },\n {\n visible: true,\n popover: (\n <Text variant=\"xs\" width={300}>\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | — (Content interaction with close button.)\n </Text>\n ),\n },\n {\n pointer: true,\n visible: true,\n p: 0,\n popover: (\n <>\n {new Array(4).fill(0).map((_, i) => (\n <Text\n key={i}\n variant=\"sm-display\"\n overflowEllipsis\n bg=\"red10\"\n px={1}\n py={0.5}\n >\n Example Item\n </Text>\n ))}\n </>\n ),\n },\n {\n variant: \"defaultDark\",\n placement: \"bottom\",\n visible: true,\n pointer: true,\n zIndex: 99,\n },\n {\n ignoreClickOutside: true,\n },\n ]}\n >\n <Popover\n placement=\"bottom\"\n popover={\n <Text variant=\"xs\" width={300}>\n {CONTENT}\n </Text>\n }\n >\n {({ onVisible, anchorRef }) => {\n return (\n <Box textAlign=\"center\">\n <Button\n ref={anchorRef}\n variant=\"secondaryBlack\"\n size=\"small\"\n onClick={onVisible}\n >\n Click to display popover\n </Button>\n </Box>\n )\n }}\n </Popover>\n </States>\n )\n}\n\nDefault.story = {\n parameters: { chromatic: { disable: true } },\n}\n\nexport const Placement = () => {\n return (\n <States<Partial<PopoverProps>>\n states={Object.keys(POSITION).map((placement) => ({\n placement: placement as Position,\n }))}\n >\n {(props) => {\n return (\n <Popover\n popover={<Text variant=\"xs\">{JSON.stringify(props)}</Text>}\n visible\n variant=\"defaultDark\"\n pointer\n {...props}\n >\n {({ anchorRef }) => {\n return (\n <Text\n ref={anchorRef as any}\n variant=\"xs\"\n textAlign=\"center\"\n p={1}\n maxWidth=\"50%\"\n mx=\"auto\"\n bg=\"black10\"\n >\n {JSON.stringify(props)}\n </Text>\n )\n }}\n </Popover>\n )\n }}\n </States>\n )\n}\n\nPlacement.story = {\n parameters: { chromatic: { disable: true } },\n}\n"],"file":"Popover.story.js"}
1
+ {"version":3,"sources":["../../../src/elements/Popover/Popover.story.tsx"],"names":["CONTENT","title","Default","visible","onClose","popover","pointer","p","Array","fill","map","_","i","variant","placement","zIndex","ignoreClickOutside","onVisible","anchorRef","story","parameters","chromatic","disable","Placement","Object","keys","POSITION","props","JSON","stringify","ManageFocus","manageFocus"],"mappings":"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","sourcesContent":["import { action } from \"@storybook/addon-actions\"\nimport React from \"react\"\nimport { States } from \"storybook-states\"\nimport { Position, POSITION } from \"../../utils\"\nimport { Box } from \"../Box\"\nimport { Button } from \"../Button\"\nimport { Text } from \"../Text\"\nimport { Popover, PopoverProps } from \"./Popover\"\n\nconst CONTENT =\n \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Modi eius autem aliquid cumque, mollitia incidunt totam. Id ut quae hic in quisquam, cupiditate iure nobis, provident minus voluptatem tenetur consequatur.\"\n\nexport default {\n title: \"Components/Popover\",\n}\n\nexport const Default = () => {\n return (\n <States<Partial<PopoverProps>>\n states={[\n {},\n { visible: true },\n { onClose: action(\"onClose\") },\n {\n visible: true,\n popover: (\n <Text variant=\"xs\" width={300}>\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |\n | | | — (Content interaction with close button.)\n </Text>\n ),\n },\n {\n pointer: true,\n visible: true,\n p: 0,\n popover: (\n <>\n {new Array(4).fill(0).map((_, i) => (\n <Text\n key={i}\n variant=\"sm-display\"\n overflowEllipsis\n bg=\"red10\"\n px={1}\n py={0.5}\n >\n Example Item\n </Text>\n ))}\n </>\n ),\n },\n {\n variant: \"defaultDark\",\n placement: \"bottom\",\n visible: true,\n pointer: true,\n zIndex: 99,\n },\n {\n ignoreClickOutside: true,\n },\n ]}\n >\n <Popover\n placement=\"bottom\"\n popover={\n <Text variant=\"xs\" width={300}>\n {CONTENT}\n </Text>\n }\n >\n {({ onVisible, anchorRef }) => {\n return (\n <Box textAlign=\"center\">\n <Button\n ref={anchorRef}\n variant=\"secondaryBlack\"\n size=\"small\"\n onClick={onVisible}\n >\n Click to display popover\n </Button>\n </Box>\n )\n }}\n </Popover>\n </States>\n )\n}\n\nDefault.story = {\n parameters: { chromatic: { disable: true } },\n}\n\nexport const Placement = () => {\n return (\n <States<Partial<PopoverProps>>\n states={Object.keys(POSITION).map((placement) => ({\n placement: placement as Position,\n }))}\n >\n {(props) => {\n return (\n <Popover\n popover={<Text variant=\"xs\">{JSON.stringify(props)}</Text>}\n visible\n variant=\"defaultDark\"\n pointer\n {...props}\n >\n {({ anchorRef }) => {\n return (\n <Text\n ref={anchorRef as any}\n variant=\"xs\"\n textAlign=\"center\"\n p={1}\n maxWidth=\"50%\"\n mx=\"auto\"\n bg=\"black10\"\n >\n {JSON.stringify(props)}\n </Text>\n )\n }}\n </Popover>\n )\n }}\n </States>\n )\n}\n\nPlacement.story = {\n parameters: { chromatic: { disable: true } },\n}\n\nexport const ManageFocus = () => {\n return (\n <States<Partial<PopoverProps>>\n states={[\n { visible: true, manageFocus: false },\n { visible: true, manageFocus: true },\n ]}\n >\n <Popover\n placement=\"bottom\"\n popover={\n <Text variant=\"xs\" width={300}>\n {CONTENT}\n </Text>\n }\n >\n {({ onVisible, anchorRef }) => {\n return (\n <Box textAlign=\"center\">\n <Button\n ref={anchorRef}\n variant=\"secondaryBlack\"\n size=\"small\"\n onClick={onVisible}\n >\n Click to display popover\n </Button>\n </Box>\n )\n }}\n </Popover>\n </States>\n )\n}\n"],"file":"Popover.story.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artsy/palette",
3
- "version": "29.5.0",
3
+ "version": "29.6.0",
4
4
  "description": "Design system library for react components",
5
5
  "main": "dist/index.js",
6
6
  "publishConfig": {
@@ -174,5 +174,5 @@
174
174
  "<rootDir>/www/"
175
175
  ]
176
176
  },
177
- "gitHead": "e7d12034e70880369aabdbd993b3678207374eb1"
177
+ "gitHead": "4354aba022beee99688856fb9754be7550b21888"
178
178
  }