@popsure/dirty-swan 0.41.0-alpha → 0.41.0-alpha.2

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 (52) hide show
  1. package/dist/cjs/index.js +82 -81
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/lib/components/button/index.d.ts +19 -12
  4. package/dist/cjs/lib/components/button/index.stories.d.ts +57 -0
  5. package/dist/cjs/lib/components/button/index.test.d.ts +1 -0
  6. package/dist/cjs/lib/index.d.ts +1 -1
  7. package/dist/esm/components/button/index.js +20 -17
  8. package/dist/esm/components/button/index.js.map +1 -1
  9. package/dist/esm/components/button/index.stories.js +97 -0
  10. package/dist/esm/components/button/index.stories.js.map +1 -0
  11. package/dist/esm/components/button/index.test.js +50 -0
  12. package/dist/esm/components/button/index.test.js.map +1 -0
  13. package/dist/esm/components/comparisonTable/index.js.map +1 -1
  14. package/dist/esm/components/downloadButton/index.js +5 -6
  15. package/dist/esm/components/downloadButton/index.js.map +1 -1
  16. package/dist/esm/components/downloadButton/index.stories.js +3 -2
  17. package/dist/esm/components/downloadButton/index.stories.js.map +1 -1
  18. package/dist/esm/components/icon/icons/Download.js +2 -2
  19. package/dist/esm/components/icon/icons/Download.js.map +1 -1
  20. package/dist/esm/components/icon/icons.stories.js +3 -3
  21. package/dist/esm/components/icon/icons.stories.js.map +1 -1
  22. package/dist/esm/components/icon/index.stories.js +1 -1
  23. package/dist/esm/components/toast/index.stories.js +2 -2
  24. package/dist/esm/components/toast/index.stories.js.map +1 -1
  25. package/dist/esm/{index-b4cd59e9.js → index-39fa3631.js} +3 -3
  26. package/dist/esm/{index-b4cd59e9.js.map → index-39fa3631.js.map} +1 -1
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/lib/components/button/index.d.ts +19 -12
  29. package/dist/esm/lib/components/button/index.stories.d.ts +57 -0
  30. package/dist/esm/lib/components/button/index.test.d.ts +1 -0
  31. package/dist/esm/lib/index.d.ts +1 -1
  32. package/dist/index.css +84 -27
  33. package/dist/index.css.map +1 -1
  34. package/dist/lib/scss/private/components/_buttons.scss +107 -26
  35. package/package.json +1 -1
  36. package/src/lib/components/button/index.stories.tsx +189 -0
  37. package/src/lib/components/button/index.test.tsx +51 -0
  38. package/src/lib/components/button/index.tsx +78 -59
  39. package/src/lib/components/comparisonTable/index.tsx +1 -1
  40. package/src/lib/components/downloadButton/index.tsx +9 -8
  41. package/src/lib/components/icon/icons.stories.tsx +4 -2
  42. package/src/lib/components/toast/index.stories.tsx +2 -5
  43. package/src/lib/index.tsx +1 -1
  44. package/src/lib/scss/private/components/_buttons.scss +107 -26
  45. package/dist/cjs/lib/components/button/icons/index.d.ts +0 -9
  46. package/dist/esm/lib/components/button/icons/index.d.ts +0 -9
  47. package/src/lib/components/button/icons/index.ts +0 -14
  48. package/src/lib/components/button/icons/send-purple.svg +0 -4
  49. package/src/lib/components/button/icons/send-white.svg +0 -4
  50. package/src/lib/components/button/index.stories.mdx +0 -142
  51. package/src/lib/components/button/styles.module.scss +0 -5
  52. package/src/lib/components/downloadButton/icons/download.svg +0 -5
@@ -1,13 +1,20 @@
1
- import React from 'react';
2
- declare type ButtonType = 'primary' | 'secondary' | 'secondaryGrey' | 'outline' | 'outlineGrey';
3
- interface Icon {
4
- src: string;
5
- alt: string;
6
- }
7
- declare const _default: React.ForwardRefExoticComponent<Pick<{
8
- buttonTitle: string;
9
- buttonType?: ButtonType | undefined;
10
- leftIcon?: Icon | undefined;
1
+ import React, { ReactElement, ReactNode } from 'react';
2
+ declare type ButtonVariant = 'filledColor' | 'filledGray' | 'filledWhite' | 'textColor' | 'textWhite' | 'outlineWhite' | 'filledSuccess' | 'filledError';
3
+ declare type ButtonProps = {
4
+ children: ReactNode;
5
+ variant?: ButtonVariant;
6
+ leftIcon?: ReactElement;
7
+ rightIcon?: ReactElement;
8
+ loading?: boolean;
9
+ hideLabel?: boolean;
10
+ } & Omit<JSX.IntrinsicElements['button'], 'children'>;
11
+ declare const Button: React.ForwardRefExoticComponent<Pick<{
12
+ children: ReactNode;
13
+ variant?: ButtonVariant | undefined;
14
+ leftIcon?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
15
+ rightIcon?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
11
16
  loading?: boolean | undefined;
12
- } & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children">, "className" | "form" | "slot" | "style" | "title" | "onClick" | "color" | "hidden" | "type" | "value" | "onChange" | "dir" | "onBlur" | "onFocus" | "onKeyDown" | "tabIndex" | "leftIcon" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "disabled" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "loading" | "buttonTitle" | "buttonType"> & React.RefAttributes<HTMLButtonElement>>;
13
- export default _default;
17
+ hideLabel?: boolean | undefined;
18
+ } & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children">, "className" | "form" | "slot" | "style" | "title" | "children" | "onClick" | "color" | "hidden" | "type" | "value" | "onChange" | "dir" | "onBlur" | "onFocus" | "onKeyDown" | "tabIndex" | "leftIcon" | "rightIcon" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "disabled" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "hideLabel" | "loading" | "variant"> & React.RefAttributes<HTMLButtonElement>>;
19
+ export { Button };
20
+ export type { ButtonProps, ButtonVariant };
@@ -0,0 +1,57 @@
1
+ /// <reference types="react" />
2
+ import { ButtonProps, ButtonVariant } from '.';
3
+ declare const story: {
4
+ title: string;
5
+ component: import("react").ForwardRefExoticComponent<Pick<{
6
+ children: import("react").ReactNode;
7
+ variant?: ButtonVariant | undefined;
8
+ leftIcon?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
9
+ rightIcon?: import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
10
+ loading?: boolean | undefined;
11
+ hideLabel?: boolean | undefined;
12
+ } & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children">, "className" | "form" | "slot" | "style" | "title" | "children" | "onClick" | "color" | "hidden" | "type" | "value" | "onChange" | "dir" | "onBlur" | "onFocus" | "onKeyDown" | "tabIndex" | "leftIcon" | "rightIcon" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "disabled" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "hideLabel" | "loading" | "variant"> & import("react").RefAttributes<HTMLButtonElement>>;
13
+ argTypes: {
14
+ children: {
15
+ control: {
16
+ type: string;
17
+ };
18
+ defaultValue: string;
19
+ description: string;
20
+ };
21
+ variant: {
22
+ defaultValue: string;
23
+ description: string;
24
+ };
25
+ leftIcon: {
26
+ description: string;
27
+ };
28
+ rightIcon: {
29
+ description: string;
30
+ };
31
+ loading: {
32
+ defaultValue: boolean;
33
+ description: string;
34
+ };
35
+ hideLabel: {
36
+ defaultValue: boolean;
37
+ description: string;
38
+ };
39
+ };
40
+ parameters: {
41
+ design: {
42
+ url: string;
43
+ type: string;
44
+ };
45
+ };
46
+ };
47
+ export declare const ButtonStory: {
48
+ ({ className, loading, children, variant, hideLabel }: ButtonProps): JSX.Element;
49
+ storyName: string;
50
+ };
51
+ export declare const ButtonVariants: ({ children, onClick }: ButtonProps) => JSX.Element;
52
+ export declare const ButtonOnBackgrounds: ({ onClick }: ButtonProps) => JSX.Element;
53
+ export declare const ButtonWithIcons: ({ children, onClick }: ButtonProps) => JSX.Element;
54
+ export declare const ButtonWithIconOnly: ({ children, onClick }: ButtonProps) => JSX.Element;
55
+ export declare const ButtonLoading: ({ children, onClick }: ButtonProps) => JSX.Element;
56
+ export declare const ButtonDisabled: ({ children, onClick }: ButtonProps) => JSX.Element;
57
+ export default story;
@@ -0,0 +1 @@
1
+ export {};
@@ -12,7 +12,7 @@ import { Checkbox } from './components/input/checkbox';
12
12
  import { Radio } from './components/input/radio';
13
13
  import { BottomModal, RegularModal, BottomOrRegularModal } from './components/modal';
14
14
  import { CardWithTopLeftIcon, CardWithLeftIcon, CardWithTopIcon, InfoCard, CardButton } from './components/cards';
15
- import Button from './components/button';
15
+ import { Button } from './components/button';
16
16
  import { AutoSuggestMultiSelect } from './components/input/autoSuggestMultiSelect';
17
17
  import Chip from './components/chip';
18
18
  import { AutoSuggestInput } from './components/input/autoSuggestInput';
@@ -1,26 +1,29 @@
1
1
  import { a as __rest, _ as __assign } from '../../tslib.es6-5bc94358.js';
2
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { c as classNames } from '../../index-6ea95111.js';
3
4
  import require$$0__default from 'react';
4
- import { s as styleInject } from '../../style-inject.es-1f59c1d0.js';
5
-
6
- var css_248z = ".styles-module_content-container__4wuQ0 {\n display: flex;\n justify-content: center;\n align-items: center;\n}";
7
- var styles = {"content-container":"styles-module_content-container__4wuQ0"};
8
- styleInject(css_248z);
9
5
 
10
6
  var buttonTypeClassNameMap = {
11
- primary: 'p-btn--primary',
12
- secondary: 'p-btn--secondary',
13
- secondaryGrey: 'p-btn--secondary-grey',
14
- outline: 'p-btn--outline',
15
- outlineGrey: 'p-btn--outline-grey',
7
+ filledColor: 'p-btn--primary',
8
+ filledGray: 'p-btn--secondary-grey',
9
+ filledWhite: 'p-btn--secondary-white',
10
+ textColor: 'p-btn--secondary',
11
+ textWhite: 'p-btn--secondary-inverted',
12
+ outlineWhite: 'p-btn--outline-white',
13
+ filledSuccess: 'p-btn--success',
14
+ filledError: 'p-btn--danger',
16
15
  };
17
16
  var Button = require$$0__default.forwardRef(function (_a, ref) {
18
- var className = _a.className, _b = _a.loading, loading = _b === void 0 ? false : _b, buttonTitle = _a.buttonTitle, _c = _a.buttonType, buttonType = _c === void 0 ? 'primary' : _c, leftIcon = _a.leftIcon, props = __rest(_a, ["className", "loading", "buttonTitle", "buttonType", "leftIcon"]);
19
- var buttonClassName = buttonTypeClassNameMap[buttonType];
20
- var loadingClassName = loading ? 'p-btn--loading' : '';
21
- return (jsx("button", __assign({ ref: ref, className: buttonClassName + " " + loadingClassName + " " + (className !== null && className !== void 0 ? className : '') }, props, { children: leftIcon ? (jsxs("div", __assign({ className: styles['content-container'] }, { children: [jsx("img", { width: "20px", height: "20px", className: "mr8", src: leftIcon.src, alt: leftIcon.alt }, void 0),
22
- jsx("div", { children: buttonTitle }, void 0)] }), void 0)) : (jsx(Fragment, { children: buttonTitle }, void 0)) }), void 0));
17
+ var className = _a.className, _b = _a.loading, loading = _b === void 0 ? false : _b, children = _a.children, _c = _a.variant, variant = _c === void 0 ? 'filledColor' : _c, leftIcon = _a.leftIcon, rightIcon = _a.rightIcon, hideLabel = _a.hideLabel, props = __rest(_a, ["className", "loading", "children", "variant", "leftIcon", "rightIcon", "hideLabel"]);
18
+ return (jsx("button", __assign({ ref: ref, className: classNames(buttonTypeClassNameMap[variant], className, {
19
+ 'p-btn--loading': loading,
20
+ 'p-btn--icon-only': hideLabel,
21
+ }), "data-testid": "button" }, props, { children: leftIcon || rightIcon ? (jsxs("div", __assign({ className: "d-flex jc-center ai-center" }, { children: [leftIcon && (jsx("span", { children: require$$0__default.cloneElement(leftIcon, { size: 24 }) }, void 0)),
22
+ jsx("div", __assign({ className: classNames('mx8', {
23
+ 'sr-only': hideLabel
24
+ }) }, { children: children }), void 0),
25
+ rightIcon && (jsx("span", { children: require$$0__default.cloneElement(rightIcon, { size: 24 }) }, void 0))] }), void 0)) : children }), void 0));
23
26
  });
24
27
 
25
- export default Button;
28
+ export { Button };
26
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/button/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport styles from './styles.module.scss';\n\ntype ButtonType =\n | 'primary'\n | 'secondary'\n | 'secondaryGrey'\n | 'outline'\n | 'outlineGrey';\n\nconst buttonTypeClassNameMap: { [K in ButtonType]: string } = {\n primary: 'p-btn--primary',\n secondary: 'p-btn--secondary',\n secondaryGrey: 'p-btn--secondary-grey',\n outline: 'p-btn--outline',\n outlineGrey: 'p-btn--outline-grey',\n};\n\ninterface Icon {\n src: string;\n alt: string;\n}\n\ntype ButtonProps = {\n buttonTitle: string;\n buttonType?: ButtonType;\n leftIcon?: Icon;\n loading?: boolean;\n} & Omit<JSX.IntrinsicElements['button'], 'children'>;\n\nexport default React.forwardRef(\n (\n {\n className,\n loading = false,\n buttonTitle,\n buttonType = 'primary',\n leftIcon,\n ...props\n }: ButtonProps,\n ref?: React.ForwardedRef<HTMLButtonElement>\n ) => {\n const buttonClassName = buttonTypeClassNameMap[buttonType];\n const loadingClassName = loading ? 'p-btn--loading' : '';\n return (\n <button\n ref={ref}\n className={`${buttonClassName} ${loadingClassName} ${className ?? ''}`}\n {...props}\n >\n {leftIcon ? (\n <div className={styles['content-container']}>\n <img\n width=\"20px\"\n height=\"20px\"\n className=\"mr8\"\n src={leftIcon.src}\n alt={leftIcon.alt}\n />\n <div>{buttonTitle}</div>\n </div>\n ) : (\n <>{buttonTitle}</>\n )}\n </button>\n );\n }\n);\n"],"names":["React","_jsx","_jsxs"],"mappings":";;;;;;;;;AAWA,IAAM,sBAAsB,GAAkC;IAC5D,OAAO,EAAE,gBAAgB;IACzB,SAAS,EAAE,kBAAkB;IAC7B,aAAa,EAAE,uBAAuB;IACtC,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,qBAAqB;CACnC,CAAC;AAcF,aAAeA,mBAAK,CAAC,UAAU,CAC7B,UACE,EAOc,EACd,GAA2C;IAPzC,IAAA,SAAS,eAAA,EACT,eAAe,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,WAAW,iBAAA,EACX,kBAAsB,EAAtB,UAAU,mBAAG,SAAS,KAAA,EACtB,QAAQ,cAAA,EACL,KAAK,cANV,iEAOC,CADS;IAIV,IAAM,eAAe,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAM,gBAAgB,GAAG,OAAO,GAAG,gBAAgB,GAAG,EAAE,CAAC;IACzD,QACEC,yBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAK,eAAe,SAAI,gBAAgB,UAAI,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAE,IAClE,KAAK,cAER,QAAQ,IACPC,uBAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,iBACzCD,aACE,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,KAAK,EACf,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,GAAG,EAAE,QAAQ,CAAC,GAAG,WACjB;gBACFA,uBAAM,WAAW,WAAO,aACpB,KAENA,0BAAG,WAAW,WAAI,CACnB,YACM,EACT;AACJ,CAAC,CACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/lib/components/button/index.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport React, { ReactElement, ReactNode } from 'react';\n\ntype ButtonVariant =\n | 'filledColor'\n | 'filledGray'\n | 'filledWhite'\n | 'textColor'\n | 'textWhite'\n | 'outlineWhite'\n | 'filledSuccess'\n | 'filledError';\n\nconst buttonTypeClassNameMap: { [K in ButtonVariant]: string } = {\n filledColor: 'p-btn--primary',\n filledGray: 'p-btn--secondary-grey',\n filledWhite: 'p-btn--secondary-white',\n textColor: 'p-btn--secondary',\n textWhite: 'p-btn--secondary-inverted',\n outlineWhite: 'p-btn--outline-white',\n filledSuccess: 'p-btn--success',\n filledError: 'p-btn--danger',\n};\n\ntype ButtonProps = {\n children: ReactNode;\n variant?: ButtonVariant;\n leftIcon?: ReactElement;\n rightIcon?: ReactElement;\n loading?: boolean;\n hideLabel?: boolean;\n} & Omit<JSX.IntrinsicElements['button'], 'children'>;\n\nconst Button = React.forwardRef((\n {\n className,\n loading = false,\n children,\n variant = 'filledColor',\n leftIcon,\n rightIcon,\n hideLabel,\n ...props\n }: ButtonProps,\n ref?: React.ForwardedRef<HTMLButtonElement>\n) => (\n <button\n ref={ref}\n className={classNames(\n buttonTypeClassNameMap[variant], \n className, {\n 'p-btn--loading': loading,\n 'p-btn--icon-only': hideLabel,\n })}\n data-testid=\"button\"\n {...props}\n >\n {leftIcon || rightIcon ? (\n <div className=\"d-flex jc-center ai-center\">\n {leftIcon && (\n <span>\n {React.cloneElement(leftIcon, { size: 24 })}\n </span>\n )}\n \n <div \n className={classNames(\n 'mx8', {\n 'sr-only': hideLabel\n }\n )}\n >\n {children}\n </div>\n\n {rightIcon && (\n <span>\n {React.cloneElement(rightIcon, { size: 24 })}\n </span>\n )}\n </div>\n ) : children}\n </button>\n )\n);\n\nexport { Button };\nexport type { ButtonProps, ButtonVariant };\n"],"names":["React","_jsx","_jsxs"],"mappings":";;;;;AAaA,IAAM,sBAAsB,GAAqC;IAC/D,WAAW,EAAE,gBAAgB;IAC7B,UAAU,EAAE,uBAAuB;IACnC,WAAW,EAAE,wBAAwB;IACrC,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAE,2BAA2B;IACtC,YAAY,EAAE,sBAAsB;IACpC,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,eAAe;CAC7B,CAAC;IAWI,MAAM,GAAGA,mBAAK,CAAC,UAAU,CAAC,UAC9B,EASc,EACd,GAA2C;IATzC,IAAA,SAAS,eAAA,EACT,eAAe,EAAf,OAAO,mBAAG,KAAK,KAAA,EACf,QAAQ,cAAA,EACR,eAAuB,EAAvB,OAAO,mBAAG,aAAa,KAAA,EACvB,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,SAAS,eAAA,EACN,KAAK,cARV,qFASC,CADS;IAGP,QACDC,yBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CACnB,sBAAsB,CAAC,OAAO,CAAC,EAC/B,SAAS,EAAE;YACT,gBAAgB,EAAE,OAAO;YACzB,kBAAkB,EAAE,SAAS;SAC9B,CAAC,iBACQ,QAAQ,IAChB,KAAK,cAER,QAAQ,IAAI,SAAS,IACpBC,uBAAK,SAAS,EAAC,4BAA4B,iBACxC,QAAQ,KACPD,wBACGD,mBAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,WACtC,CACR;gBAEDC,sBACE,SAAS,EAAE,UAAU,CACnB,KAAK,EAAE;wBACL,SAAS,EAAE,SAAS;qBACrB,CACF,gBAEA,QAAQ,YACL;gBAEL,SAAS,KACRA,wBACGD,mBAAK,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,WACvC,CACR,aACG,IACJ,QAAQ,YACL,EACV;CAAA;;;;"}
@@ -0,0 +1,97 @@
1
+ import { _ as __assign } from '../../tslib.es6-5bc94358.js';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { Button } from './index.js';
4
+ import FileIcon from '../icon/icons/File.js';
5
+ import '../../index-6ea95111.js';
6
+ import 'react';
7
+ import '../icon/IconWrapper/IconWrapper.js';
8
+ import '../../style-inject.es-1f59c1d0.js';
9
+
10
+ var story = {
11
+ title: 'JSX/Button',
12
+ component: Button,
13
+ argTypes: {
14
+ children: {
15
+ control: { type: 'text' },
16
+ defaultValue: 'Click me',
17
+ description: 'Text that is displayed inside the button. Hidden when hideLabel is set as true',
18
+ },
19
+ variant: {
20
+ defaultValue: 'filledColor',
21
+ description: 'Variant that defines the style of the Button',
22
+ },
23
+ leftIcon: {
24
+ description: 'Icon to be displayed on the left side of the button. This makes use of [dirty swan Icon component](http://localhost:9009/?path=/docs/jsx-icon--icon-story).',
25
+ },
26
+ rightIcon: {
27
+ description: 'Icon to be displayed on the right side of the button. This makes use of [dirty swan Icon component](http://localhost:9009/?path=/docs/jsx-icon--icon-story).',
28
+ },
29
+ loading: {
30
+ defaultValue: false,
31
+ description: 'Show button on a loading state.',
32
+ },
33
+ hideLabel: {
34
+ defaultValue: false,
35
+ description: 'Show button as an icon only button. This hides the label but still keeps it for accessibility purposes.',
36
+ },
37
+ },
38
+ parameters: {
39
+ design: {
40
+ url: 'https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FMKs4cbojdVOBKUxv7okb93%2FDirty-Swan-Pattern-Library%3Fnode-id%3D251%253A26',
41
+ type: 'figma'
42
+ },
43
+ },
44
+ };
45
+ var ButtonStory = function (_a) {
46
+ var className = _a.className, _b = _a.loading, loading = _b === void 0 ? false : _b, children = _a.children, variant = _a.variant, hideLabel = _a.hideLabel;
47
+ return (jsx("div", __assign({ className: 'wmx6' }, { children: jsx(Button, __assign({ className: className, loading: loading, variant: variant, hideLabel: hideLabel }, { children: children }), void 0) }), void 0));
48
+ };
49
+ ButtonStory.storyName = "Button";
50
+ var ButtonVariants = function (_a) {
51
+ var children = _a.children, onClick = _a.onClick;
52
+ return (jsxs("div", { children: [jsx("h3", __assign({ className: 'p-h3 mb24' }, { children: "Filled variants" }), void 0),
53
+ jsx("div", __assign({ className: 'd-flex gap16 p24 bg-grey-300 br8' }, { children: ["filledColor", "filledGray", "filledWhite"].map(function (variant) { return (jsxs("div", { children: [jsx("h4", __assign({ className: 'p-h4 mb16' }, { children: variant }), void 0),
54
+ jsx(Button, __assign({ onClick: onClick, variant: variant }, { children: children }), void 0)] }, variant)); }) }), void 0),
55
+ jsx("h3", __assign({ className: 'p-h3 my24' }, { children: "Text variants" }), void 0),
56
+ jsx("div", __assign({ className: 'd-flex gap16 p24 bg-grey-300 br8' }, { children: ["textColor", "textWhite"].map(function (variant, index) {
57
+ var _a;
58
+ return (jsxs("div", __assign({ className: variant === "textWhite" ? "bg-primary-500 px32 br8" : "" }, { children: [jsx("h4", __assign({ className: "p-h4 mb16 " + ((_a = variant === "textWhite") !== null && _a !== void 0 ? _a : "tc-white") }, { children: variant }), void 0),
59
+ jsx(Button, __assign({ onClick: onClick, variant: variant }, { children: children }), void 0)] }), variant));
60
+ }) }), void 0),
61
+ jsx("h3", __assign({ className: 'p-h3 my24' }, { children: "Outline variants" }), void 0),
62
+ jsx("div", __assign({ className: 'd-flex gap16 p24 bg-primary-500 br8' }, { children: jsxs("div", { children: [jsx("h4", __assign({ className: 'p-h4 mb16 tc-white' }, { children: "outlineWhite" }), void 0),
63
+ jsx(Button, __assign({ onClick: onClick, variant: 'outlineWhite' }, { children: children }), void 0)] }, void 0) }), void 0),
64
+ jsx("h3", __assign({ className: 'p-h3 my24' }, { children: "State variants" }), void 0),
65
+ jsx("div", __assign({ className: 'd-flex gap16 p24 bg-grey-300 br8' }, { children: ["filledSuccess", "filledError"].map(function (variant) { return (jsxs("div", { children: [jsx("h4", __assign({ className: 'p-h4 mb16' }, { children: variant }), void 0),
66
+ jsx(Button, __assign({ onClick: onClick, variant: variant }, { children: children }), void 0)] }, variant)); }) }), void 0)] }, void 0));
67
+ };
68
+ var ButtonOnBackgrounds = function (_a) {
69
+ var onClick = _a.onClick;
70
+ return (jsxs("div", { children: [jsxs("div", __assign({ className: 'p24 bg-white br8' }, { children: [jsx("h3", __assign({ className: 'p-h3 mb16' }, { children: "On white" }), void 0),
71
+ jsx("div", __assign({ className: 'd-flex gap16' }, { children: ["filledColor", "filledGray", "textColor"].map(function (variant) { return (jsx(Button, __assign({ onClick: onClick, variant: variant }, { children: variant }), variant)); }) }), void 0)] }), void 0),
72
+ jsxs("div", __assign({ className: 'p24 bg-grey-200 br8' }, { children: [jsx("h3", __assign({ className: 'p-h3 mb16' }, { children: "On grey" }), void 0),
73
+ jsx("div", __assign({ className: 'd-flex gap16' }, { children: ["filledColor", "filledWhite", "textColor"].map(function (variant) { return (jsx(Button, __assign({ onClick: onClick, variant: variant }, { children: variant }), variant)); }) }), void 0)] }), void 0),
74
+ jsxs("div", __assign({ className: 'p24 bg-primary-500 br8' }, { children: [jsx("h3", __assign({ className: 'p-h3 mb16 tc-white' }, { children: "On primary" }), void 0),
75
+ jsx("div", __assign({ className: 'd-flex gap16' }, { children: ["filledWhite", "outlineWhite", "textWhite"].map(function (variant) { return (jsx(Button, __assign({ onClick: onClick, variant: variant }, { children: variant }), variant)); }) }), void 0)] }), void 0)] }, void 0));
76
+ };
77
+ var ButtonWithIcons = function (_a) {
78
+ var children = _a.children, onClick = _a.onClick;
79
+ return (jsxs("div", __assign({ className: 'd-flex gap16' }, { children: [jsx(Button, __assign({ leftIcon: jsx(FileIcon, {}, void 0), onClick: onClick }, { children: children }), void 0),
80
+ jsx(Button, __assign({ rightIcon: jsx(FileIcon, {}, void 0), onClick: onClick }, { children: children }), void 0)] }), void 0));
81
+ };
82
+ var ButtonWithIconOnly = function (_a) {
83
+ var children = _a.children, onClick = _a.onClick;
84
+ return (jsx(Button, __assign({ leftIcon: jsx(FileIcon, {}, void 0), hideLabel: true, onClick: onClick }, { children: children }), void 0));
85
+ };
86
+ var ButtonLoading = function (_a) {
87
+ var children = _a.children, onClick = _a.onClick;
88
+ return (jsx(Button, __assign({ loading: true, onClick: onClick }, { children: children }), void 0));
89
+ };
90
+ var ButtonDisabled = function (_a) {
91
+ var children = _a.children, onClick = _a.onClick;
92
+ return (jsx(Button, __assign({ disabled: true, onClick: onClick }, { children: children }), void 0));
93
+ };
94
+
95
+ export default story;
96
+ export { ButtonDisabled, ButtonLoading, ButtonOnBackgrounds, ButtonStory, ButtonVariants, ButtonWithIconOnly, ButtonWithIcons };
97
+ //# sourceMappingURL=index.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.stories.js","sources":["../../../../../src/lib/components/button/index.stories.tsx"],"sourcesContent":["import { Button, ButtonProps, ButtonVariant } from '.';\nimport { FileIcon } from '../icon';\n\nconst story = {\n title: 'JSX/Button',\n component: Button,\n argTypes: {\n children: {\n control: { type: 'text' },\n defaultValue: 'Click me',\n description: 'Text that is displayed inside the button. Hidden when hideLabel is set as true',\n },\n variant: {\n defaultValue: 'filledColor',\n description: 'Variant that defines the style of the Button',\n },\n leftIcon: {\n description: 'Icon to be displayed on the left side of the button. This makes use of [dirty swan Icon component](http://localhost:9009/?path=/docs/jsx-icon--icon-story).',\n },\n rightIcon: {\n description: 'Icon to be displayed on the right side of the button. This makes use of [dirty swan Icon component](http://localhost:9009/?path=/docs/jsx-icon--icon-story).',\n },\n loading: {\n defaultValue: false,\n description: 'Show button on a loading state.',\n },\n hideLabel: {\n defaultValue: false,\n description: 'Show button as an icon only button. This hides the label but still keeps it for accessibility purposes.',\n },\n },\n parameters: {\n design: {\n url: 'https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FMKs4cbojdVOBKUxv7okb93%2FDirty-Swan-Pattern-Library%3Fnode-id%3D251%253A26',\n type: 'figma'\n },\n },\n};\n\nexport const ButtonStory = ({\n className,\n loading = false,\n children,\n variant,\n hideLabel\n}: ButtonProps) => (\n <div className='wmx6'>\n <Button\n className={className}\n loading={loading}\n variant={variant}\n hideLabel={hideLabel}\n >\n {children}\n </Button>\n </div>\n);\n\nButtonStory.storyName = \"Button\";\n\nexport const ButtonVariants = ({ children, onClick }: ButtonProps) => (\n <div>\n <h3 className='p-h3 mb24'>Filled variants</h3>\n <div className='d-flex gap16 p24 bg-grey-300 br8'>\n {[ \"filledColor\", \"filledGray\", \"filledWhite\"].map((variant) => (\n <div key={variant}>\n <h4 className='p-h4 mb16'>\n {variant}\n </h4>\n\n <Button onClick={onClick} variant={variant as ButtonVariant}>\n {children}\n </Button>\n </div>\n ))}\n </div>\n\n <h3 className='p-h3 my24'>Text variants</h3>\n <div className='d-flex gap16 p24 bg-grey-300 br8'>\n {[\"textColor\", \"textWhite\"].map((variant, index) => (\n <div key={variant} className={variant === \"textWhite\" ? \"bg-primary-500 px32 br8\" : \"\"}>\n <h4 className={`p-h4 mb16 ${variant === \"textWhite\" ?? \"tc-white\"}`}>\n {variant}\n </h4>\n\n <Button onClick={onClick} variant={variant as ButtonVariant}>\n {children}\n </Button>\n </div>\n ))}\n </div>\n\n <h3 className='p-h3 my24'>Outline variants</h3>\n <div className='d-flex gap16 p24 bg-primary-500 br8'>\n <div>\n <h4 className='p-h4 mb16 tc-white'>\n outlineWhite\n </h4>\n\n <Button onClick={onClick} variant={'outlineWhite'}>\n {children}\n </Button>\n </div>\n </div>\n \n <h3 className='p-h3 my24'>State variants</h3>\n <div className='d-flex gap16 p24 bg-grey-300 br8'>\n {[\"filledSuccess\", \"filledError\"].map((variant) => (\n <div key={variant}>\n <h4 className='p-h4 mb16'>\n {variant}\n </h4>\n\n <Button onClick={onClick} variant={variant as ButtonVariant}>\n {children}\n </Button>\n </div>\n ))}\n </div>\n </div>\n);\n\nexport const ButtonOnBackgrounds = ({ onClick }: ButtonProps) => (\n <div>\n <div className='p24 bg-white br8'>\n <h3 className='p-h3 mb16'>On white</h3>\n <div className='d-flex gap16'>\n {[ \"filledColor\", \"filledGray\", \"textColor\"].map((variant) => (\n <Button key={variant} onClick={onClick} variant={variant as ButtonVariant}>\n {variant}\n </Button>\n ))}\n </div>\n </div>\n\n <div className='p24 bg-grey-200 br8'>\n <h3 className='p-h3 mb16'>On grey</h3>\n <div className='d-flex gap16'>\n {[ \"filledColor\", \"filledWhite\", \"textColor\"].map((variant) => (\n <Button key={variant} onClick={onClick} variant={variant as ButtonVariant}>\n {variant}\n </Button>\n ))}\n </div>\n </div>\n\n <div className='p24 bg-primary-500 br8'>\n <h3 className='p-h3 mb16 tc-white'>On primary</h3>\n <div className='d-flex gap16'>\n {[\"filledWhite\", \"outlineWhite\", \"textWhite\"].map((variant) => (\n <Button key={variant} onClick={onClick} variant={variant as ButtonVariant}>\n {variant}\n </Button>\n ))}\n </div>\n </div>\n </div>\n);\n\nexport const ButtonWithIcons = ({ children, onClick }: ButtonProps) => (\n <div className='d-flex gap16'>\n <Button leftIcon={<FileIcon />} onClick={onClick}>\n {children}\n </Button>\n <Button rightIcon={<FileIcon />} onClick={onClick}>\n {children}\n </Button>\n </div>\n);\n\nexport const ButtonWithIconOnly = ({ children, onClick }: ButtonProps) => (\n <Button leftIcon={<FileIcon />} hideLabel onClick={onClick}>\n {children}\n </Button>\n);\n\nexport const ButtonLoading = ({ children, onClick }: ButtonProps) => (\n <Button loading onClick={onClick}>\n {children}\n </Button>\n);\n\nexport const ButtonDisabled = ({ children, onClick }: ButtonProps) => (\n <Button disabled onClick={onClick}>\n {children}\n </Button>\n);\n\nexport default story;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { _ as __assign, b as __awaiter, c as __generator } from '../../tslib.es6-5bc94358.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { c as customRender, s as screen } from '../../customRender-9fd06f5b.js';
4
+ import { Button } from './index.js';
5
+ import 'react';
6
+ import 'react-dom';
7
+ import '../../_commonjsHelpers-e7f67fd8.js';
8
+ import 'react-dom/test-utils';
9
+ import '../../index-6ea95111.js';
10
+
11
+ var buttonContent = "Click here";
12
+ var FakeIcon = function () { return (jsx("span", { children: "ABC" }, void 0)); };
13
+ var mockOnClick = jest.fn();
14
+ describe('Button component', function () {
15
+ it('Should render content', function () {
16
+ customRender(jsx(Button, { children: buttonContent }, void 0));
17
+ expect(screen.getByText(buttonContent)).toBeInTheDocument();
18
+ });
19
+ it('Should render leftIcon', function () {
20
+ customRender(jsx(Button, __assign({ leftIcon: jsx(FakeIcon, {}, void 0) }, { children: buttonContent }), void 0));
21
+ expect(screen.getByText("ABC")).toBeInTheDocument();
22
+ });
23
+ it('Should render rightIcon', function () {
24
+ customRender(jsx(Button, __assign({ rightIcon: jsx(FakeIcon, {}, void 0) }, { children: buttonContent }), void 0));
25
+ expect(screen.getByText("ABC")).toBeInTheDocument();
26
+ });
27
+ it('Should be disabled', function () {
28
+ customRender(jsx(Button, __assign({ disabled: true }, { children: buttonContent }), void 0));
29
+ expect(screen.getByTestId("button")).toBeDisabled();
30
+ });
31
+ it('Should show loading state', function () {
32
+ customRender(jsx(Button, __assign({ loading: true }, { children: buttonContent }), void 0));
33
+ expect(screen.getByTestId("button")).toHaveClass('p-btn--loading');
34
+ });
35
+ it('Should call onClick clicked', function () { return __awaiter(void 0, void 0, void 0, function () {
36
+ var user;
37
+ return __generator(this, function (_a) {
38
+ switch (_a.label) {
39
+ case 0:
40
+ user = customRender(jsx(Button, __assign({ onClick: mockOnClick }, { children: buttonContent }), void 0)).user;
41
+ return [4 /*yield*/, user.click(screen.getByText(buttonContent))];
42
+ case 1:
43
+ _a.sent();
44
+ expect(mockOnClick).toHaveBeenCalledTimes(1);
45
+ return [2 /*return*/];
46
+ }
47
+ });
48
+ }); });
49
+ });
50
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/button/index.test.tsx"],"sourcesContent":["import { render, screen } from '../../util/testUtils';\n\nimport { Button } from '.';\n\nconst buttonContent = \"Click here\";\n\nconst FakeIcon = () => (\n <span>ABC</span>\n)\n\nconst mockOnClick = jest.fn();\n\ndescribe('Button component', () => {\n it('Should render content', () => {\n render(<Button>{buttonContent}</Button>);\n\n expect(screen.getByText(buttonContent)).toBeInTheDocument();\n });\n \n it('Should render leftIcon', () => {\n render(<Button leftIcon={<FakeIcon />}>{buttonContent}</Button>);\n\n expect(screen.getByText(\"ABC\")).toBeInTheDocument();\n });\n \n it('Should render rightIcon', () => {\n render(<Button rightIcon={<FakeIcon />}>{buttonContent}</Button>);\n\n expect(screen.getByText(\"ABC\")).toBeInTheDocument();\n });\n \n it('Should be disabled', () => {\n render(<Button disabled>{buttonContent}</Button>);\n\n expect(screen.getByTestId(\"button\")).toBeDisabled();\n });\n \n it('Should show loading state', () => {\n render(<Button loading>{buttonContent}</Button>);\n\n expect(screen.getByTestId(\"button\")).toHaveClass('p-btn--loading');\n });\n \n it('Should call onClick clicked', async () => {\n const { user } = render(<Button onClick={mockOnClick}>{buttonContent}</Button>);\n\n await user.click(screen.getByText(buttonContent));\n\n expect(mockOnClick).toHaveBeenCalledTimes(1)\n });\n});\n"],"names":["_jsx","render"],"mappings":";;;;;;;;;;AAIA,IAAM,aAAa,GAAG,YAAY,CAAC;AAEnC,IAAM,QAAQ,GAAG,cAAM,QACrBA,wCAAgB,IACjB,CAAA;AAED,IAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAE9B,QAAQ,CAAC,kBAAkB,EAAE;IAC3B,EAAE,CAAC,uBAAuB,EAAE;QAC1BC,YAAM,CAACD,IAAC,MAAM,cAAE,aAAa,WAAU,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;KAC7D,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE;QAC3BC,YAAM,CAACD,IAAC,MAAM,aAAC,QAAQ,EAAEA,IAAC,QAAQ,aAAG,gBAAG,aAAa,YAAU,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;KACrD,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE;QAC5BC,YAAM,CAACD,IAAC,MAAM,aAAC,SAAS,EAAEA,IAAC,QAAQ,aAAG,gBAAG,aAAa,YAAU,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;KACrD,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE;QACvBC,YAAM,CAACD,IAAC,MAAM,aAAC,QAAQ,sBAAE,aAAa,YAAU,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;KACrD,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE;QAC9BC,YAAM,CAACD,IAAC,MAAM,aAAC,OAAO,sBAAE,aAAa,YAAU,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;KACpE,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE;;;;;oBACzB,IAAI,GAAKC,YAAM,CAACD,IAAC,MAAM,aAAC,OAAO,EAAE,WAAW,gBAAG,aAAa,YAAU,CAAC,KAAnE,CAAoE;oBAEhF,qBAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,EAAA;;oBAAjD,SAAiD,CAAC;oBAElD,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;;;;SAC7C,CAAC,CAAC;AACL,CAAC,CAAC"}