@purpurds/button 3.0.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.
@@ -0,0 +1,45 @@
1
+ Name: @purpurds/action
2
+ Version: 2.8.0
3
+ License: AGPL-3.0-only
4
+ Private: false
5
+
6
+ ---
7
+
8
+ Name: @purpurds/spinner
9
+ Version: 2.8.0
10
+ License: AGPL-3.0-only
11
+ Private: false
12
+
13
+ ---
14
+
15
+ Name: classnames
16
+ Version: 2.5.1
17
+ License: MIT
18
+ Private: false
19
+ Description: A simple utility for conditionally joining classNames together
20
+ Repository: git+https://github.com/JedWatson/classnames.git
21
+ Author: Jed Watson
22
+ License Copyright:
23
+ ===
24
+
25
+ The MIT License (MIT)
26
+
27
+ Copyright (c) 2018 Jed Watson
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining a copy
30
+ of this software and associated documentation files (the "Software"), to deal
31
+ in the Software without restriction, including without limitation the rights
32
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
33
+ copies of the Software, and to permit persons to whom the Software is
34
+ furnished to do so, subject to the following conditions:
35
+
36
+ The above copyright notice and this permission notice shall be included in all
37
+ copies or substantial portions of the Software.
38
+
39
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
40
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
42
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
43
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
44
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
45
+ SOFTWARE.
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("react/jsx-runtime"),h=require("react"),V={PRIMARY:"primary",PRIMARY_NEGATIVE:"primary-negative",SECONDARY:"secondary",SECONDARY_NEGATIVE:"secondary-negative",EXPRESSIVE:"expressive",EXPRESSIVE_NEGATIVE:"expressive-negative"},g={SM:"sm",MD:"md",LG:"lg"};function j(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var m={exports:{}};/*!
2
+ Copyright (c) 2018 Jed Watson.
3
+ Licensed under the MIT License (MIT), see
4
+ http://jedwatson.github.io/classnames
5
+ */(function(e){(function(){var s={}.hasOwnProperty;function u(){for(var t="",r=0;r<arguments.length;r++){var n=arguments[r];n&&(t=i(t,p(n)))}return t}function p(t){if(typeof t=="string"||typeof t=="number")return t;if(typeof t!="object")return"";if(Array.isArray(t))return u.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var r="";for(var n in t)s.call(t,n)&&t[n]&&(r=i(r,n));return r}function i(t,r){return r?t?t+" "+r:t+r:t}e.exports?(u.default=u,e.exports=u):window.classNames=u})()})(m);var P=m.exports;const y=j(P),O="_rotate_7s2g1_1",D="_dash_7s2g1_1",l={"purpur-spinner":"_purpur-spinner_7s2g1_1",rotate:O,"purpur-spinner--xxs":"_purpur-spinner--xxs_7s2g1_4","purpur-spinner--xs":"_purpur-spinner--xs_7s2g1_8","purpur-spinner--sm":"_purpur-spinner--sm_7s2g1_12","purpur-spinner--md":"_purpur-spinner--md_7s2g1_16","purpur-spinner--lg":"_purpur-spinner--lg_7s2g1_20","purpur-spinner__circle":"_purpur-spinner__circle_7s2g1_24",dash:D,"purpur-spinner__circle--disabled":"_purpur-spinner__circle--disabled_7s2g1_33","purpur-spinner__circle--negative":"_purpur-spinner__circle--negative_7s2g1_36","purpur-spinner__circle--negative-disabled":"_purpur-spinner__circle--negative-disabled_7s2g1_39"},d="purpur-spinner",M={PRIMARY:"primary",DISABLED:"disabled",NEGATIVE:"negative",NEGATIVE_DISABLED:"negative-disabled"},$={XXS:"xxs",XS:"xs",SM:"sm",MD:"md",LG:"lg"},w=({["data-testid"]:e,size:s=$.SM,variant:u=M.PRIMARY,...p})=>_.jsx("div",{className:y([l[d],l[`${d}--${s}`]]),"data-testid":e,...p,children:_.jsx("svg",{viewBox:"0 0 50 50",children:_.jsx("circle",{className:y(l[`${d}__circle`],l[`${d}__circle--${u}`]),cx:"25",cy:"25",r:"20"})})});function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var x={exports:{}};/*!
6
+ Copyright (c) 2018 Jed Watson.
7
+ Licensed under the MIT License (MIT), see
8
+ http://jedwatson.github.io/classnames
9
+ */(function(e){(function(){var s={}.hasOwnProperty;function u(){for(var t="",r=0;r<arguments.length;r++){var n=arguments[r];n&&(t=i(t,p(n)))}return t}function p(t){if(typeof t=="string"||typeof t=="number")return t;if(typeof t!="object")return"";if(Array.isArray(t))return u.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var r="";for(var n in t)s.call(t,n)&&t[n]&&(r=i(r,n));return r}function i(t,r){return r?t?t+" "+r:t+r:t}e.exports?(u.default=u,e.exports=u):window.classNames=u})()})(x);var B=x.exports;const Y=G(B),a={"purpur-button":"_purpur-button_1fna2_1","purpur-button--sm":"_purpur-button--sm_1fna2_33","purpur-button--icon-only":"_purpur-button--icon-only_1fna2_36","purpur-button--md":"_purpur-button--md_1fna2_39","purpur-button--lg":"_purpur-button--lg_1fna2_45","purpur-button--full-width":"_purpur-button--full-width_1fna2_51","purpur-button--primary":"_purpur-button--primary_1fna2_54","purpur-button--disabled":"_purpur-button--disabled_1fna2_58","purpur-button--primary-negative":"_purpur-button--primary-negative_1fna2_64","purpur-button--secondary":"_purpur-button--secondary_1fna2_76","purpur-button--secondary-negative":"_purpur-button--secondary-negative_1fna2_87","purpur-button--expressive":"_purpur-button--expressive_1fna2_98","purpur-button--expressive-negative":"_purpur-button--expressive-negative_1fna2_108","purpur-button--negative":"_purpur-button--negative_1fna2_120","purpur-button--destructive":"_purpur-button--destructive_1fna2_127","purpur-button--destructive-negative":"_purpur-button--destructive-negative_1fna2_137","purpur-button--tertiary-purple":"_purpur-button--tertiary-purple_1fna2_147","purpur-button--tertiary-purple-negative":"_purpur-button--tertiary-purple-negative_1fna2_160","purpur-button--text-negative":"_purpur-button--text-negative_1fna2_175","purpur-button--text":"_purpur-button--text_1fna2_175"},E={...V,DESTRUCTIVE:"destructive",DESTRUCTIVE_NEGATIVE:"destructive-negative",TERTIARY_PURPLE:"tertiary-purple",TERTIARY_PURPLE_NEGATVIE:"tertiary-purple-negative",TEXT:"text",TEXT_NEGATIVE:"text-negative"},C=Object.values(E),o="purpur-button",L=({children:e,className:s,["data-testid"]:u,disabled:p=!1,fullWidth:i=!1,iconOnly:t,loading:r=!1,onClick:n,size:f=g.MD,variant:c,type:T="button",...b},A)=>{if(t&&c==="destructive")return null;const R=Y([a[o],a[`${o}--${c}`],a[`${o}--${f}`]],{[a[`${o}--icon-only`]]:t,[a[`${o}--negative`]]:c.endsWith("negative"),[a[`${o}--full-width`]]:i,[a[`${o}--disabled`]]:p||r},s),I=v=>{p||r?v.preventDefault():n&&n(v)},N=()=>c.endsWith("negative")?"negative-disabled":"disabled";return _.jsxs("button",{className:R,"data-testid":u,type:T,ref:A,"aria-disabled":b["aria-disabled"]||p||r,onClick:I,...b,children:[r&&_.jsx(w,{size:f===g.LG?"xs":"xxs",variant:N()})," ",e]})},S=h.forwardRef(L);S.displayName="Button";exports.BUTTON_VARIANT=E;exports.Button=S;exports.buttonVariants=C;
10
+ //# sourceMappingURL=button.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.cjs.js","sources":["../../../libraries/action/dist/action.es.js","../../spinner/dist/spinner.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/button.tsx"],"sourcesContent":["const e = {\n PRIMARY: \"primary\",\n PRIMARY_NEGATIVE: \"primary-negative\",\n SECONDARY: \"secondary\",\n SECONDARY_NEGATIVE: \"secondary-negative\",\n EXPRESSIVE: \"expressive\",\n EXPRESSIVE_NEGATIVE: \"expressive-negative\"\n}, E = Object.values(e), s = {\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\"\n}, a = Object.values(s);\nexport {\n s as SIZE,\n e as VARIANT,\n a as sizes,\n E as variants\n};\n//# sourceMappingURL=action.es.js.map\n","import { jsx as c } from \"react/jsx-runtime\";\nfunction g(s) {\n return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nvar l = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n(function(s) {\n (function() {\n var u = {}.hasOwnProperty;\n function n() {\n for (var r = \"\", e = 0; e < arguments.length; e++) {\n var t = arguments[e];\n t && (r = a(r, _(t)));\n }\n return r;\n }\n function _(r) {\n if (typeof r == \"string\" || typeof r == \"number\")\n return r;\n if (typeof r != \"object\")\n return \"\";\n if (Array.isArray(r))\n return n.apply(null, r);\n if (r.toString !== Object.prototype.toString && !r.toString.toString().includes(\"[native code]\"))\n return r.toString();\n var e = \"\";\n for (var t in r)\n u.call(r, t) && r[t] && (e = a(e, t));\n return e;\n }\n function a(r, e) {\n return e ? r ? r + \" \" + e : r + e : r;\n }\n s.exports ? (n.default = n, s.exports = n) : window.classNames = n;\n })();\n})(l);\nvar m = l.exports;\nconst o = /* @__PURE__ */ g(m), v = \"_rotate_7s2g1_1\", S = \"_dash_7s2g1_1\", p = {\n \"purpur-spinner\": \"_purpur-spinner_7s2g1_1\",\n rotate: v,\n \"purpur-spinner--xxs\": \"_purpur-spinner--xxs_7s2g1_4\",\n \"purpur-spinner--xs\": \"_purpur-spinner--xs_7s2g1_8\",\n \"purpur-spinner--sm\": \"_purpur-spinner--sm_7s2g1_12\",\n \"purpur-spinner--md\": \"_purpur-spinner--md_7s2g1_16\",\n \"purpur-spinner--lg\": \"_purpur-spinner--lg_7s2g1_20\",\n \"purpur-spinner__circle\": \"_purpur-spinner__circle_7s2g1_24\",\n dash: S,\n \"purpur-spinner__circle--disabled\": \"_purpur-spinner__circle--disabled_7s2g1_33\",\n \"purpur-spinner__circle--negative\": \"_purpur-spinner__circle--negative_7s2g1_36\",\n \"purpur-spinner__circle--negative-disabled\": \"_purpur-spinner__circle--negative-disabled_7s2g1_39\"\n}, i = \"purpur-spinner\", d = {\n PRIMARY: \"primary\",\n DISABLED: \"disabled\",\n NEGATIVE: \"negative\",\n NEGATIVE_DISABLED: \"negative-disabled\"\n}, b = Object.values(d), f = {\n XXS: \"xxs\",\n XS: \"xs\",\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\"\n}, N = Object.values(f), y = ({\n [\"data-testid\"]: s,\n size: u = f.SM,\n variant: n = d.PRIMARY,\n ..._\n}) => /* @__PURE__ */ c(\n \"div\",\n {\n className: o([p[i], p[`${i}--${u}`]]),\n \"data-testid\": s,\n ..._,\n children: /* @__PURE__ */ c(\"svg\", { viewBox: \"0 0 50 50\", children: /* @__PURE__ */ c(\n \"circle\",\n {\n className: o(\n p[`${i}__circle`],\n p[`${i}__circle--${n}`]\n ),\n cx: \"25\",\n cy: \"25\",\n r: \"20\"\n }\n ) })\n }\n);\nexport {\n f as SPINNER_SIZE,\n d as SPINNER_VARIANT,\n y as Spinner,\n N as spinnerSizes,\n b as spinnerVariants\n};\n//# sourceMappingURL=spinner.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { ButtonHTMLAttributes, ForwardedRef, forwardRef, MouseEvent } from \"react\";\nimport { ActionProps, SIZE as BUTTON_SIZE, VARIANT } from \"@purpurds/action\";\nimport { Spinner } from \"@purpurds/spinner\";\nimport c from \"classnames\";\n\nimport styles from \"./button.module.scss\";\n\nexport const BUTTON_VARIANT = {\n ...VARIANT,\n DESTRUCTIVE: \"destructive\",\n DESTRUCTIVE_NEGATIVE: \"destructive-negative\",\n TERTIARY_PURPLE: \"tertiary-purple\",\n TERTIARY_PURPLE_NEGATVIE: \"tertiary-purple-negative\",\n TEXT: \"text\",\n TEXT_NEGATIVE: \"text-negative\",\n} as const;\n\nexport const buttonVariants = Object.values(BUTTON_VARIANT);\nexport type ButtonVariant = (typeof BUTTON_VARIANT)[keyof typeof BUTTON_VARIANT];\n\nconst rootClassName = \"purpur-button\";\n\nexport type ButtonProps = ActionProps<ButtonVariant> &\n ButtonHTMLAttributes<HTMLButtonElement> & { loading?: boolean };\n\nconst ButtonComponent = (\n {\n children,\n className,\n [\"data-testid\"]: dataTestid,\n disabled = false,\n fullWidth = false,\n iconOnly,\n loading = false,\n onClick,\n size = BUTTON_SIZE.MD,\n variant,\n type = \"button\",\n ...props\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) => {\n if (iconOnly && variant === \"destructive\") {\n return null;\n }\n\n const classes = c(\n [\n styles[rootClassName],\n styles[`${rootClassName}--${variant}`],\n styles[`${rootClassName}--${size}`],\n ],\n {\n [styles[`${rootClassName}--icon-only`]]: iconOnly,\n [styles[`${rootClassName}--negative`]]: variant.endsWith(\"negative\"),\n [styles[`${rootClassName}--full-width`]]: fullWidth,\n [styles[`${rootClassName}--disabled`]]: disabled || loading,\n },\n className\n );\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled || loading) {\n e.preventDefault();\n } else if (onClick) {\n onClick(e);\n }\n };\n\n const getSpinnerVariant = () => (variant.endsWith(\"negative\") ? \"negative-disabled\" : \"disabled\");\n\n return (\n <button\n className={classes}\n data-testid={dataTestid}\n // eslint-disable-next-line react/button-has-type\n type={type}\n ref={ref}\n aria-disabled={props[\"aria-disabled\"] || disabled || loading}\n onClick={handleClick}\n {...props}\n >\n {loading && (\n <Spinner size={size === BUTTON_SIZE.LG ? \"xs\" : \"xxs\"} variant={getSpinnerVariant()} />\n )}{\" \"}\n {children}\n </button>\n );\n};\n\nexport const Button = forwardRef(ButtonComponent);\nButton.displayName = \"Button\";\n"],"names":["e","s","g","l","u","n","r","t","a","_","m","o","v","S","p","i","d","f","y","c","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","BUTTON_VARIANT","VARIANT","buttonVariants","rootClassName","ButtonComponent","children","className","dataTestid","disabled","fullWidth","iconOnly","loading","onClick","size","BUTTON_SIZE","variant","type","props","ref","styles","handleClick","getSpinnerVariant","jsxs","jsx","Spinner","Button","forwardRef"],"mappings":"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","x_google_ignoreList":[2]}
@@ -0,0 +1,23 @@
1
+ import React, { ButtonHTMLAttributes } from "react";
2
+ import { ActionProps } from "@purpurds/action";
3
+ export declare const BUTTON_VARIANT: {
4
+ readonly DESTRUCTIVE: "destructive";
5
+ readonly DESTRUCTIVE_NEGATIVE: "destructive-negative";
6
+ readonly TERTIARY_PURPLE: "tertiary-purple";
7
+ readonly TERTIARY_PURPLE_NEGATVIE: "tertiary-purple-negative";
8
+ readonly TEXT: "text";
9
+ readonly TEXT_NEGATIVE: "text-negative";
10
+ readonly PRIMARY: "primary";
11
+ readonly PRIMARY_NEGATIVE: "primary-negative";
12
+ readonly SECONDARY: "secondary";
13
+ readonly SECONDARY_NEGATIVE: "secondary-negative";
14
+ readonly EXPRESSIVE: "expressive";
15
+ readonly EXPRESSIVE_NEGATIVE: "expressive-negative";
16
+ };
17
+ export declare const buttonVariants: ("destructive" | "destructive-negative" | "tertiary-purple" | "tertiary-purple-negative" | "text" | "text-negative" | "primary" | "primary-negative" | "secondary" | "secondary-negative" | "expressive" | "expressive-negative")[];
18
+ export type ButtonVariant = (typeof BUTTON_VARIANT)[keyof typeof BUTTON_VARIANT];
19
+ export type ButtonProps = ActionProps<ButtonVariant> & ButtonHTMLAttributes<HTMLButtonElement> & {
20
+ loading?: boolean;
21
+ };
22
+ export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
23
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../src/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,oBAAoB,EAAwC,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAgC,MAAM,kBAAkB,CAAC;AAM7E,eAAO,MAAM,cAAc;;;;;;;;;;;;;CAQjB,CAAC;AAEX,eAAO,MAAM,cAAc,qOAAgC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAIjF,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,GAClD,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAmElE,eAAO,MAAM,MAAM,uFAA8B,CAAC"}
@@ -0,0 +1,229 @@
1
+ import { jsx as f, jsxs as I } from "react/jsx-runtime";
2
+ import { forwardRef as N } from "react";
3
+ const h = {
4
+ PRIMARY: "primary",
5
+ PRIMARY_NEGATIVE: "primary-negative",
6
+ SECONDARY: "secondary",
7
+ SECONDARY_NEGATIVE: "secondary-negative",
8
+ EXPRESSIVE: "expressive",
9
+ EXPRESSIVE_NEGATIVE: "expressive-negative"
10
+ }, g = {
11
+ SM: "sm",
12
+ MD: "md",
13
+ LG: "lg"
14
+ };
15
+ function V(e) {
16
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
17
+ }
18
+ var m = { exports: {} };
19
+ /*!
20
+ Copyright (c) 2018 Jed Watson.
21
+ Licensed under the MIT License (MIT), see
22
+ http://jedwatson.github.io/classnames
23
+ */
24
+ (function(e) {
25
+ (function() {
26
+ var s = {}.hasOwnProperty;
27
+ function u() {
28
+ for (var t = "", r = 0; r < arguments.length; r++) {
29
+ var n = arguments[r];
30
+ n && (t = i(t, p(n)));
31
+ }
32
+ return t;
33
+ }
34
+ function p(t) {
35
+ if (typeof t == "string" || typeof t == "number")
36
+ return t;
37
+ if (typeof t != "object")
38
+ return "";
39
+ if (Array.isArray(t))
40
+ return u.apply(null, t);
41
+ if (t.toString !== Object.prototype.toString && !t.toString.toString().includes("[native code]"))
42
+ return t.toString();
43
+ var r = "";
44
+ for (var n in t)
45
+ s.call(t, n) && t[n] && (r = i(r, n));
46
+ return r;
47
+ }
48
+ function i(t, r) {
49
+ return r ? t ? t + " " + r : t + r : t;
50
+ }
51
+ e.exports ? (u.default = u, e.exports = u) : window.classNames = u;
52
+ })();
53
+ })(m);
54
+ var P = m.exports;
55
+ const y = /* @__PURE__ */ V(P), D = "_rotate_7s2g1_1", $ = "_dash_7s2g1_1", c = {
56
+ "purpur-spinner": "_purpur-spinner_7s2g1_1",
57
+ rotate: D,
58
+ "purpur-spinner--xxs": "_purpur-spinner--xxs_7s2g1_4",
59
+ "purpur-spinner--xs": "_purpur-spinner--xs_7s2g1_8",
60
+ "purpur-spinner--sm": "_purpur-spinner--sm_7s2g1_12",
61
+ "purpur-spinner--md": "_purpur-spinner--md_7s2g1_16",
62
+ "purpur-spinner--lg": "_purpur-spinner--lg_7s2g1_20",
63
+ "purpur-spinner__circle": "_purpur-spinner__circle_7s2g1_24",
64
+ dash: $,
65
+ "purpur-spinner__circle--disabled": "_purpur-spinner__circle--disabled_7s2g1_33",
66
+ "purpur-spinner__circle--negative": "_purpur-spinner__circle--negative_7s2g1_36",
67
+ "purpur-spinner__circle--negative-disabled": "_purpur-spinner__circle--negative-disabled_7s2g1_39"
68
+ }, l = "purpur-spinner", w = {
69
+ PRIMARY: "primary",
70
+ DISABLED: "disabled",
71
+ NEGATIVE: "negative",
72
+ NEGATIVE_DISABLED: "negative-disabled"
73
+ }, M = {
74
+ XXS: "xxs",
75
+ XS: "xs",
76
+ SM: "sm",
77
+ MD: "md",
78
+ LG: "lg"
79
+ }, O = ({
80
+ ["data-testid"]: e,
81
+ size: s = M.SM,
82
+ variant: u = w.PRIMARY,
83
+ ...p
84
+ }) => /* @__PURE__ */ f(
85
+ "div",
86
+ {
87
+ className: y([c[l], c[`${l}--${s}`]]),
88
+ "data-testid": e,
89
+ ...p,
90
+ children: /* @__PURE__ */ f("svg", { viewBox: "0 0 50 50", children: /* @__PURE__ */ f(
91
+ "circle",
92
+ {
93
+ className: y(
94
+ c[`${l}__circle`],
95
+ c[`${l}__circle--${u}`]
96
+ ),
97
+ cx: "25",
98
+ cy: "25",
99
+ r: "20"
100
+ }
101
+ ) })
102
+ }
103
+ );
104
+ function G(e) {
105
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
106
+ }
107
+ var E = { exports: {} };
108
+ /*!
109
+ Copyright (c) 2018 Jed Watson.
110
+ Licensed under the MIT License (MIT), see
111
+ http://jedwatson.github.io/classnames
112
+ */
113
+ (function(e) {
114
+ (function() {
115
+ var s = {}.hasOwnProperty;
116
+ function u() {
117
+ for (var t = "", r = 0; r < arguments.length; r++) {
118
+ var n = arguments[r];
119
+ n && (t = i(t, p(n)));
120
+ }
121
+ return t;
122
+ }
123
+ function p(t) {
124
+ if (typeof t == "string" || typeof t == "number")
125
+ return t;
126
+ if (typeof t != "object")
127
+ return "";
128
+ if (Array.isArray(t))
129
+ return u.apply(null, t);
130
+ if (t.toString !== Object.prototype.toString && !t.toString.toString().includes("[native code]"))
131
+ return t.toString();
132
+ var r = "";
133
+ for (var n in t)
134
+ s.call(t, n) && t[n] && (r = i(r, n));
135
+ return r;
136
+ }
137
+ function i(t, r) {
138
+ return r ? t ? t + " " + r : t + r : t;
139
+ }
140
+ e.exports ? (u.default = u, e.exports = u) : window.classNames = u;
141
+ })();
142
+ })(E);
143
+ var j = E.exports;
144
+ const Y = /* @__PURE__ */ G(j), a = {
145
+ "purpur-button": "_purpur-button_1fna2_1",
146
+ "purpur-button--sm": "_purpur-button--sm_1fna2_33",
147
+ "purpur-button--icon-only": "_purpur-button--icon-only_1fna2_36",
148
+ "purpur-button--md": "_purpur-button--md_1fna2_39",
149
+ "purpur-button--lg": "_purpur-button--lg_1fna2_45",
150
+ "purpur-button--full-width": "_purpur-button--full-width_1fna2_51",
151
+ "purpur-button--primary": "_purpur-button--primary_1fna2_54",
152
+ "purpur-button--disabled": "_purpur-button--disabled_1fna2_58",
153
+ "purpur-button--primary-negative": "_purpur-button--primary-negative_1fna2_64",
154
+ "purpur-button--secondary": "_purpur-button--secondary_1fna2_76",
155
+ "purpur-button--secondary-negative": "_purpur-button--secondary-negative_1fna2_87",
156
+ "purpur-button--expressive": "_purpur-button--expressive_1fna2_98",
157
+ "purpur-button--expressive-negative": "_purpur-button--expressive-negative_1fna2_108",
158
+ "purpur-button--negative": "_purpur-button--negative_1fna2_120",
159
+ "purpur-button--destructive": "_purpur-button--destructive_1fna2_127",
160
+ "purpur-button--destructive-negative": "_purpur-button--destructive-negative_1fna2_137",
161
+ "purpur-button--tertiary-purple": "_purpur-button--tertiary-purple_1fna2_147",
162
+ "purpur-button--tertiary-purple-negative": "_purpur-button--tertiary-purple-negative_1fna2_160",
163
+ "purpur-button--text-negative": "_purpur-button--text-negative_1fna2_175",
164
+ "purpur-button--text": "_purpur-button--text_1fna2_175"
165
+ }, B = {
166
+ ...h,
167
+ DESTRUCTIVE: "destructive",
168
+ DESTRUCTIVE_NEGATIVE: "destructive-negative",
169
+ TERTIARY_PURPLE: "tertiary-purple",
170
+ TERTIARY_PURPLE_NEGATVIE: "tertiary-purple-negative",
171
+ TEXT: "text",
172
+ TEXT_NEGATIVE: "text-negative"
173
+ }, W = Object.values(B), o = "purpur-button", C = ({
174
+ children: e,
175
+ className: s,
176
+ ["data-testid"]: u,
177
+ disabled: p = !1,
178
+ fullWidth: i = !1,
179
+ iconOnly: t,
180
+ loading: r = !1,
181
+ onClick: n,
182
+ size: d = g.MD,
183
+ variant: _,
184
+ type: x = "button",
185
+ ...b
186
+ }, S) => {
187
+ if (t && _ === "destructive")
188
+ return null;
189
+ const A = Y(
190
+ [
191
+ a[o],
192
+ a[`${o}--${_}`],
193
+ a[`${o}--${d}`]
194
+ ],
195
+ {
196
+ [a[`${o}--icon-only`]]: t,
197
+ [a[`${o}--negative`]]: _.endsWith("negative"),
198
+ [a[`${o}--full-width`]]: i,
199
+ [a[`${o}--disabled`]]: p || r
200
+ },
201
+ s
202
+ ), T = (v) => {
203
+ p || r ? v.preventDefault() : n && n(v);
204
+ }, R = () => _.endsWith("negative") ? "negative-disabled" : "disabled";
205
+ return /* @__PURE__ */ I(
206
+ "button",
207
+ {
208
+ className: A,
209
+ "data-testid": u,
210
+ type: x,
211
+ ref: S,
212
+ "aria-disabled": b["aria-disabled"] || p || r,
213
+ onClick: T,
214
+ ...b,
215
+ children: [
216
+ r && /* @__PURE__ */ f(O, { size: d === g.LG ? "xs" : "xxs", variant: R() }),
217
+ " ",
218
+ e
219
+ ]
220
+ }
221
+ );
222
+ }, L = N(C);
223
+ L.displayName = "Button";
224
+ export {
225
+ B as BUTTON_VARIANT,
226
+ L as Button,
227
+ W as buttonVariants
228
+ };
229
+ //# sourceMappingURL=button.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.es.js","sources":["../../../libraries/action/dist/action.es.js","../../spinner/dist/spinner.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/button.tsx"],"sourcesContent":["const e = {\n PRIMARY: \"primary\",\n PRIMARY_NEGATIVE: \"primary-negative\",\n SECONDARY: \"secondary\",\n SECONDARY_NEGATIVE: \"secondary-negative\",\n EXPRESSIVE: \"expressive\",\n EXPRESSIVE_NEGATIVE: \"expressive-negative\"\n}, E = Object.values(e), s = {\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\"\n}, a = Object.values(s);\nexport {\n s as SIZE,\n e as VARIANT,\n a as sizes,\n E as variants\n};\n//# sourceMappingURL=action.es.js.map\n","import { jsx as c } from \"react/jsx-runtime\";\nfunction g(s) {\n return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nvar l = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n(function(s) {\n (function() {\n var u = {}.hasOwnProperty;\n function n() {\n for (var r = \"\", e = 0; e < arguments.length; e++) {\n var t = arguments[e];\n t && (r = a(r, _(t)));\n }\n return r;\n }\n function _(r) {\n if (typeof r == \"string\" || typeof r == \"number\")\n return r;\n if (typeof r != \"object\")\n return \"\";\n if (Array.isArray(r))\n return n.apply(null, r);\n if (r.toString !== Object.prototype.toString && !r.toString.toString().includes(\"[native code]\"))\n return r.toString();\n var e = \"\";\n for (var t in r)\n u.call(r, t) && r[t] && (e = a(e, t));\n return e;\n }\n function a(r, e) {\n return e ? r ? r + \" \" + e : r + e : r;\n }\n s.exports ? (n.default = n, s.exports = n) : window.classNames = n;\n })();\n})(l);\nvar m = l.exports;\nconst o = /* @__PURE__ */ g(m), v = \"_rotate_7s2g1_1\", S = \"_dash_7s2g1_1\", p = {\n \"purpur-spinner\": \"_purpur-spinner_7s2g1_1\",\n rotate: v,\n \"purpur-spinner--xxs\": \"_purpur-spinner--xxs_7s2g1_4\",\n \"purpur-spinner--xs\": \"_purpur-spinner--xs_7s2g1_8\",\n \"purpur-spinner--sm\": \"_purpur-spinner--sm_7s2g1_12\",\n \"purpur-spinner--md\": \"_purpur-spinner--md_7s2g1_16\",\n \"purpur-spinner--lg\": \"_purpur-spinner--lg_7s2g1_20\",\n \"purpur-spinner__circle\": \"_purpur-spinner__circle_7s2g1_24\",\n dash: S,\n \"purpur-spinner__circle--disabled\": \"_purpur-spinner__circle--disabled_7s2g1_33\",\n \"purpur-spinner__circle--negative\": \"_purpur-spinner__circle--negative_7s2g1_36\",\n \"purpur-spinner__circle--negative-disabled\": \"_purpur-spinner__circle--negative-disabled_7s2g1_39\"\n}, i = \"purpur-spinner\", d = {\n PRIMARY: \"primary\",\n DISABLED: \"disabled\",\n NEGATIVE: \"negative\",\n NEGATIVE_DISABLED: \"negative-disabled\"\n}, b = Object.values(d), f = {\n XXS: \"xxs\",\n XS: \"xs\",\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\"\n}, N = Object.values(f), y = ({\n [\"data-testid\"]: s,\n size: u = f.SM,\n variant: n = d.PRIMARY,\n ..._\n}) => /* @__PURE__ */ c(\n \"div\",\n {\n className: o([p[i], p[`${i}--${u}`]]),\n \"data-testid\": s,\n ..._,\n children: /* @__PURE__ */ c(\"svg\", { viewBox: \"0 0 50 50\", children: /* @__PURE__ */ c(\n \"circle\",\n {\n className: o(\n p[`${i}__circle`],\n p[`${i}__circle--${n}`]\n ),\n cx: \"25\",\n cy: \"25\",\n r: \"20\"\n }\n ) })\n }\n);\nexport {\n f as SPINNER_SIZE,\n d as SPINNER_VARIANT,\n y as Spinner,\n N as spinnerSizes,\n b as spinnerVariants\n};\n//# sourceMappingURL=spinner.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { ButtonHTMLAttributes, ForwardedRef, forwardRef, MouseEvent } from \"react\";\nimport { ActionProps, SIZE as BUTTON_SIZE, VARIANT } from \"@purpurds/action\";\nimport { Spinner } from \"@purpurds/spinner\";\nimport c from \"classnames\";\n\nimport styles from \"./button.module.scss\";\n\nexport const BUTTON_VARIANT = {\n ...VARIANT,\n DESTRUCTIVE: \"destructive\",\n DESTRUCTIVE_NEGATIVE: \"destructive-negative\",\n TERTIARY_PURPLE: \"tertiary-purple\",\n TERTIARY_PURPLE_NEGATVIE: \"tertiary-purple-negative\",\n TEXT: \"text\",\n TEXT_NEGATIVE: \"text-negative\",\n} as const;\n\nexport const buttonVariants = Object.values(BUTTON_VARIANT);\nexport type ButtonVariant = (typeof BUTTON_VARIANT)[keyof typeof BUTTON_VARIANT];\n\nconst rootClassName = \"purpur-button\";\n\nexport type ButtonProps = ActionProps<ButtonVariant> &\n ButtonHTMLAttributes<HTMLButtonElement> & { loading?: boolean };\n\nconst ButtonComponent = (\n {\n children,\n className,\n [\"data-testid\"]: dataTestid,\n disabled = false,\n fullWidth = false,\n iconOnly,\n loading = false,\n onClick,\n size = BUTTON_SIZE.MD,\n variant,\n type = \"button\",\n ...props\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) => {\n if (iconOnly && variant === \"destructive\") {\n return null;\n }\n\n const classes = c(\n [\n styles[rootClassName],\n styles[`${rootClassName}--${variant}`],\n styles[`${rootClassName}--${size}`],\n ],\n {\n [styles[`${rootClassName}--icon-only`]]: iconOnly,\n [styles[`${rootClassName}--negative`]]: variant.endsWith(\"negative\"),\n [styles[`${rootClassName}--full-width`]]: fullWidth,\n [styles[`${rootClassName}--disabled`]]: disabled || loading,\n },\n className\n );\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled || loading) {\n e.preventDefault();\n } else if (onClick) {\n onClick(e);\n }\n };\n\n const getSpinnerVariant = () => (variant.endsWith(\"negative\") ? \"negative-disabled\" : \"disabled\");\n\n return (\n <button\n className={classes}\n data-testid={dataTestid}\n // eslint-disable-next-line react/button-has-type\n type={type}\n ref={ref}\n aria-disabled={props[\"aria-disabled\"] || disabled || loading}\n onClick={handleClick}\n {...props}\n >\n {loading && (\n <Spinner size={size === BUTTON_SIZE.LG ? \"xs\" : \"xxs\"} variant={getSpinnerVariant()} />\n )}{\" \"}\n {children}\n </button>\n );\n};\n\nexport const Button = forwardRef(ButtonComponent);\nButton.displayName = \"Button\";\n"],"names":["e","s","g","l","u","n","r","t","a","_","m","o","v","S","p","i","d","f","y","c","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","BUTTON_VARIANT","VARIANT","buttonVariants","rootClassName","ButtonComponent","children","className","dataTestid","disabled","fullWidth","iconOnly","loading","onClick","size","BUTTON_SIZE","variant","type","props","ref","styles","handleClick","getSpinnerVariant","jsxs","jsx","Spinner","Button","forwardRef"],"mappings":"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","x_google_ignoreList":[2]}
@@ -0,0 +1,10 @@
1
+ System.register(["react","react/jsx-runtime"],function(b,X){"use strict";var g,v,c;return{setters:[_=>{g=_.forwardRef,v=_.default},_=>{c=_.jsx}],execute:function(){const _={PRIMARY:"primary",PRIMARY_NEGATIVE:"primary-negative",SECONDARY:"secondary",SECONDARY_NEGATIVE:"secondary-negative",EXPRESSIVE:"expressive",EXPRESSIVE_NEGATIVE:"expressive-negative"},y={SM:"sm",MD:"md",LG:"lg"};function R(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var m={exports:{}};/*!
2
+ Copyright (c) 2018 Jed Watson.
3
+ Licensed under the MIT License (MIT), see
4
+ http://jedwatson.github.io/classnames
5
+ */(function(e){(function(){var a={}.hasOwnProperty;function u(){for(var t="",r=0;r<arguments.length;r++){var n=arguments[r];n&&(t=o(t,p(n)))}return t}function p(t){if(typeof t=="string"||typeof t=="number")return t;if(typeof t!="object")return"";if(Array.isArray(t))return u.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var r="";for(var n in t)a.call(t,n)&&t[n]&&(r=o(r,n));return r}function o(t,r){return r?t?t+" "+r:t+r:t}e.exports?(u.default=u,e.exports=u):window.classNames=u})()})(m);var I=m.exports;const E=R(I),N="_rotate_7s2g1_1",V="_dash_7s2g1_1",l={"purpur-spinner":"_purpur-spinner_7s2g1_1",rotate:N,"purpur-spinner--xxs":"_purpur-spinner--xxs_7s2g1_4","purpur-spinner--xs":"_purpur-spinner--xs_7s2g1_8","purpur-spinner--sm":"_purpur-spinner--sm_7s2g1_12","purpur-spinner--md":"_purpur-spinner--md_7s2g1_16","purpur-spinner--lg":"_purpur-spinner--lg_7s2g1_20","purpur-spinner__circle":"_purpur-spinner__circle_7s2g1_24",dash:V,"purpur-spinner__circle--disabled":"_purpur-spinner__circle--disabled_7s2g1_33","purpur-spinner__circle--negative":"_purpur-spinner__circle--negative_7s2g1_36","purpur-spinner__circle--negative-disabled":"_purpur-spinner__circle--negative-disabled_7s2g1_39"},f="purpur-spinner",h={PRIMARY:"primary",DISABLED:"disabled",NEGATIVE:"negative",NEGATIVE_DISABLED:"negative-disabled"},P={XXS:"xxs",XS:"xs",SM:"sm",MD:"md",LG:"lg"},w=({["data-testid"]:e,size:a=P.SM,variant:u=h.PRIMARY,...p})=>c("div",{className:E([l[f],l[`${f}--${a}`]]),"data-testid":e,...p,children:c("svg",{viewBox:"0 0 50 50",children:c("circle",{className:E(l[`${f}__circle`],l[`${f}__circle--${u}`]),cx:"25",cy:"25",r:"20"})})});function D(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var x={exports:{}};/*!
6
+ Copyright (c) 2018 Jed Watson.
7
+ Licensed under the MIT License (MIT), see
8
+ http://jedwatson.github.io/classnames
9
+ */(function(e){(function(){var a={}.hasOwnProperty;function u(){for(var t="",r=0;r<arguments.length;r++){var n=arguments[r];n&&(t=o(t,p(n)))}return t}function p(t){if(typeof t=="string"||typeof t=="number")return t;if(typeof t!="object")return"";if(Array.isArray(t))return u.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var r="";for(var n in t)a.call(t,n)&&t[n]&&(r=o(r,n));return r}function o(t,r){return r?t?t+" "+r:t+r:t}e.exports?(u.default=u,e.exports=u):window.classNames=u})()})(x);var O=x.exports;const $=D(O),s={"purpur-button":"_purpur-button_1fna2_1","purpur-button--sm":"_purpur-button--sm_1fna2_33","purpur-button--icon-only":"_purpur-button--icon-only_1fna2_36","purpur-button--md":"_purpur-button--md_1fna2_39","purpur-button--lg":"_purpur-button--lg_1fna2_45","purpur-button--full-width":"_purpur-button--full-width_1fna2_51","purpur-button--primary":"_purpur-button--primary_1fna2_54","purpur-button--disabled":"_purpur-button--disabled_1fna2_58","purpur-button--primary-negative":"_purpur-button--primary-negative_1fna2_64","purpur-button--secondary":"_purpur-button--secondary_1fna2_76","purpur-button--secondary-negative":"_purpur-button--secondary-negative_1fna2_87","purpur-button--expressive":"_purpur-button--expressive_1fna2_98","purpur-button--expressive-negative":"_purpur-button--expressive-negative_1fna2_108","purpur-button--negative":"_purpur-button--negative_1fna2_120","purpur-button--destructive":"_purpur-button--destructive_1fna2_127","purpur-button--destructive-negative":"_purpur-button--destructive-negative_1fna2_137","purpur-button--tertiary-purple":"_purpur-button--tertiary-purple_1fna2_147","purpur-button--tertiary-purple-negative":"_purpur-button--tertiary-purple-negative_1fna2_160","purpur-button--text-negative":"_purpur-button--text-negative_1fna2_175","purpur-button--text":"_purpur-button--text_1fna2_175"},M=b("BUTTON_VARIANT",{..._,DESTRUCTIVE:"destructive",DESTRUCTIVE_NEGATIVE:"destructive-negative",TERTIARY_PURPLE:"tertiary-purple",TERTIARY_PURPLE_NEGATVIE:"tertiary-purple-negative",TEXT:"text",TEXT_NEGATIVE:"text-negative"}),U=b("buttonVariants",Object.values(M)),i="purpur-button",j=b("Button",g(({children:e,className:a,["data-testid"]:u,disabled:p=!1,fullWidth:o=!1,iconOnly:t,loading:r=!1,onClick:n,size:S=y.MD,variant:d,type:G="button",...A},B)=>{if(t&&d==="destructive")return null;const C=$([s[i],s[`${i}--${d}`],s[`${i}--${S}`]],{[s[`${i}--icon-only`]]:t,[s[`${i}--negative`]]:d.endsWith("negative"),[s[`${i}--full-width`]]:o,[s[`${i}--disabled`]]:p||r},a),Y=T=>{p||r?T.preventDefault():n&&n(T)},L=()=>d.endsWith("negative")?"negative-disabled":"disabled";return v.createElement("button",{className:C,"data-testid":u,type:G,ref:B,"aria-disabled":A["aria-disabled"]||p||r,onClick:Y,...A},r&&v.createElement(w,{size:S===y.LG?"xs":"xxs",variant:L()})," ",e)}));j.displayName="Button"}}});
10
+ //# sourceMappingURL=button.system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.system.js","sources":["../../../libraries/action/dist/action.es.js","../../spinner/dist/spinner.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/button.tsx"],"sourcesContent":["const e = {\n PRIMARY: \"primary\",\n PRIMARY_NEGATIVE: \"primary-negative\",\n SECONDARY: \"secondary\",\n SECONDARY_NEGATIVE: \"secondary-negative\",\n EXPRESSIVE: \"expressive\",\n EXPRESSIVE_NEGATIVE: \"expressive-negative\"\n}, E = Object.values(e), s = {\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\"\n}, a = Object.values(s);\nexport {\n s as SIZE,\n e as VARIANT,\n a as sizes,\n E as variants\n};\n//# sourceMappingURL=action.es.js.map\n","import { jsx as c } from \"react/jsx-runtime\";\nfunction g(s) {\n return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nvar l = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n(function(s) {\n (function() {\n var u = {}.hasOwnProperty;\n function n() {\n for (var r = \"\", e = 0; e < arguments.length; e++) {\n var t = arguments[e];\n t && (r = a(r, _(t)));\n }\n return r;\n }\n function _(r) {\n if (typeof r == \"string\" || typeof r == \"number\")\n return r;\n if (typeof r != \"object\")\n return \"\";\n if (Array.isArray(r))\n return n.apply(null, r);\n if (r.toString !== Object.prototype.toString && !r.toString.toString().includes(\"[native code]\"))\n return r.toString();\n var e = \"\";\n for (var t in r)\n u.call(r, t) && r[t] && (e = a(e, t));\n return e;\n }\n function a(r, e) {\n return e ? r ? r + \" \" + e : r + e : r;\n }\n s.exports ? (n.default = n, s.exports = n) : window.classNames = n;\n })();\n})(l);\nvar m = l.exports;\nconst o = /* @__PURE__ */ g(m), v = \"_rotate_7s2g1_1\", S = \"_dash_7s2g1_1\", p = {\n \"purpur-spinner\": \"_purpur-spinner_7s2g1_1\",\n rotate: v,\n \"purpur-spinner--xxs\": \"_purpur-spinner--xxs_7s2g1_4\",\n \"purpur-spinner--xs\": \"_purpur-spinner--xs_7s2g1_8\",\n \"purpur-spinner--sm\": \"_purpur-spinner--sm_7s2g1_12\",\n \"purpur-spinner--md\": \"_purpur-spinner--md_7s2g1_16\",\n \"purpur-spinner--lg\": \"_purpur-spinner--lg_7s2g1_20\",\n \"purpur-spinner__circle\": \"_purpur-spinner__circle_7s2g1_24\",\n dash: S,\n \"purpur-spinner__circle--disabled\": \"_purpur-spinner__circle--disabled_7s2g1_33\",\n \"purpur-spinner__circle--negative\": \"_purpur-spinner__circle--negative_7s2g1_36\",\n \"purpur-spinner__circle--negative-disabled\": \"_purpur-spinner__circle--negative-disabled_7s2g1_39\"\n}, i = \"purpur-spinner\", d = {\n PRIMARY: \"primary\",\n DISABLED: \"disabled\",\n NEGATIVE: \"negative\",\n NEGATIVE_DISABLED: \"negative-disabled\"\n}, b = Object.values(d), f = {\n XXS: \"xxs\",\n XS: \"xs\",\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\"\n}, N = Object.values(f), y = ({\n [\"data-testid\"]: s,\n size: u = f.SM,\n variant: n = d.PRIMARY,\n ..._\n}) => /* @__PURE__ */ c(\n \"div\",\n {\n className: o([p[i], p[`${i}--${u}`]]),\n \"data-testid\": s,\n ..._,\n children: /* @__PURE__ */ c(\"svg\", { viewBox: \"0 0 50 50\", children: /* @__PURE__ */ c(\n \"circle\",\n {\n className: o(\n p[`${i}__circle`],\n p[`${i}__circle--${n}`]\n ),\n cx: \"25\",\n cy: \"25\",\n r: \"20\"\n }\n ) })\n }\n);\nexport {\n f as SPINNER_SIZE,\n d as SPINNER_VARIANT,\n y as Spinner,\n N as spinnerSizes,\n b as spinnerVariants\n};\n//# sourceMappingURL=spinner.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { ButtonHTMLAttributes, ForwardedRef, forwardRef, MouseEvent } from \"react\";\nimport { ActionProps, SIZE as BUTTON_SIZE, VARIANT } from \"@purpurds/action\";\nimport { Spinner } from \"@purpurds/spinner\";\nimport c from \"classnames\";\n\nimport styles from \"./button.module.scss\";\n\nexport const BUTTON_VARIANT = {\n ...VARIANT,\n DESTRUCTIVE: \"destructive\",\n DESTRUCTIVE_NEGATIVE: \"destructive-negative\",\n TERTIARY_PURPLE: \"tertiary-purple\",\n TERTIARY_PURPLE_NEGATVIE: \"tertiary-purple-negative\",\n TEXT: \"text\",\n TEXT_NEGATIVE: \"text-negative\",\n} as const;\n\nexport const buttonVariants = Object.values(BUTTON_VARIANT);\nexport type ButtonVariant = (typeof BUTTON_VARIANT)[keyof typeof BUTTON_VARIANT];\n\nconst rootClassName = \"purpur-button\";\n\nexport type ButtonProps = ActionProps<ButtonVariant> &\n ButtonHTMLAttributes<HTMLButtonElement> & { loading?: boolean };\n\nconst ButtonComponent = (\n {\n children,\n className,\n [\"data-testid\"]: dataTestid,\n disabled = false,\n fullWidth = false,\n iconOnly,\n loading = false,\n onClick,\n size = BUTTON_SIZE.MD,\n variant,\n type = \"button\",\n ...props\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) => {\n if (iconOnly && variant === \"destructive\") {\n return null;\n }\n\n const classes = c(\n [\n styles[rootClassName],\n styles[`${rootClassName}--${variant}`],\n styles[`${rootClassName}--${size}`],\n ],\n {\n [styles[`${rootClassName}--icon-only`]]: iconOnly,\n [styles[`${rootClassName}--negative`]]: variant.endsWith(\"negative\"),\n [styles[`${rootClassName}--full-width`]]: fullWidth,\n [styles[`${rootClassName}--disabled`]]: disabled || loading,\n },\n className\n );\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled || loading) {\n e.preventDefault();\n } else if (onClick) {\n onClick(e);\n }\n };\n\n const getSpinnerVariant = () => (variant.endsWith(\"negative\") ? \"negative-disabled\" : \"disabled\");\n\n return (\n <button\n className={classes}\n data-testid={dataTestid}\n // eslint-disable-next-line react/button-has-type\n type={type}\n ref={ref}\n aria-disabled={props[\"aria-disabled\"] || disabled || loading}\n onClick={handleClick}\n {...props}\n >\n {loading && (\n <Spinner size={size === BUTTON_SIZE.LG ? \"xs\" : \"xxs\"} variant={getSpinnerVariant()} />\n )}{\" \"}\n {children}\n </button>\n );\n};\n\nexport const Button = forwardRef(ButtonComponent);\nButton.displayName = \"Button\";\n"],"names":["e","s","g","l","u","n","r","t","a","_","m","o","v","S","p","i","d","f","y","c","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","BUTTON_VARIANT","exports","VARIANT","buttonVariants","rootClassName","Button","forwardRef","children","className","dataTestid","disabled","fullWidth","iconOnly","loading","onClick","size","BUTTON_SIZE","variant","type","props","ref","styles","handleClick","getSpinnerVariant","React","Spinner"],"mappings":"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","x_google_ignoreList":[2]}
@@ -0,0 +1 @@
1
+ ._purpur-button_1fna2_1{align-items:center;border-radius:var(--purpur-border-radius-full);border-width:0;cursor:pointer;display:inline-flex;font-size:var(--purpur-typography-scale-100);font-family:var(--purpur-typography-family-default),Helvetica,Arial,"Lucida Grande",sans-serif;font-weight:var(--purpur-typography-weight-medium);gap:var(--purpur-spacing-100);justify-content:center;line-height:var(--purpur-spacing-300);outline:0;position:relative;text-decoration:none;transition:all var(--purpur-motion-duration-100) ease;width:auto}._purpur-button_1fna2_1:focus:before{border-radius:var(--purpur-border-radius-full);box-shadow:0 0 0 var(--purpur-border-width-sm) var(--purpur-color-border-interactive-focus);content:"";display:block;inset:calc(var(--purpur-spacing-25) * -1);position:absolute}._purpur-button_1fna2_1:focus:not(:focus-visible):before{box-shadow:none}._purpur-button_1fna2_1 svg{display:block}._purpur-button--sm_1fna2_33{padding:var(--purpur-spacing-100) var(--purpur-spacing-250)}._purpur-button--sm_1fna2_33._purpur-button--icon-only_1fna2_36{padding:var(--purpur-spacing-100)}._purpur-button--md_1fna2_39{padding:var(--purpur-spacing-150) var(--purpur-spacing-300)}._purpur-button--md_1fna2_39._purpur-button--icon-only_1fna2_36{padding:var(--purpur-spacing-150)}._purpur-button--lg_1fna2_45{padding:var(--purpur-spacing-200) var(--purpur-spacing-400)}._purpur-button--lg_1fna2_45._purpur-button--icon-only_1fna2_36{padding:var(--purpur-spacing-200)}._purpur-button--full-width_1fna2_51{width:100%}._purpur-button--primary_1fna2_54{background-color:var(--purpur-color-background-interactive-primary);color:var(--purpur-color-text-interactive-on-primary)}._purpur-button--primary_1fna2_54:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-primary-hover)}._purpur-button--primary_1fna2_54:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-primary-active)}._purpur-button--primary-negative_1fna2_64{background-color:var(--purpur-color-background-interactive-primary-negative);color:var(--purpur-color-text-interactive-on-primary-negative)}._purpur-button--primary-negative_1fna2_64:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-primary-negative-hover);border-color:var(--purpur-color-background-interactive-primary-negative-hover)}._purpur-button--primary-negative_1fna2_64:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-primary-negative-active);border-color:var(--purpur-color-background-interactive-primary-negative-active)}._purpur-button--secondary_1fna2_76{background-color:var(--purpur-color-background-interactive-transparent);box-shadow:inset 0 0 0 var(--purpur-border-width-xs) var(--purpur-color-border-interactive-primary);color:var(--purpur-color-text-interactive-primary)}._purpur-button--secondary_1fna2_76:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-hover)}._purpur-button--secondary_1fna2_76:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-active)}._purpur-button--secondary-negative_1fna2_87{background-color:var(--purpur-color-background-interactive-transparent);box-shadow:inset 0 0 0 var(--purpur-border-width-xs) var(--purpur-color-border-interactive-primary-negative);color:var(--purpur-color-text-interactive-primary-negative)}._purpur-button--secondary-negative_1fna2_87:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-negative-hover)}._purpur-button--secondary-negative_1fna2_87:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-negative-active)}._purpur-button--expressive_1fna2_98{background-color:var(--purpur-color-background-interactive-expressive);color:var(--purpur-color-text-interactive-on-expressive)}._purpur-button--expressive_1fna2_98:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-expressive-hover)}._purpur-button--expressive_1fna2_98:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-expressive-active)}._purpur-button--expressive-negative_1fna2_108{background-color:var(--purpur-color-background-interactive-expressive-negative);color:var(--purpur-color-text-interactive-on-expressive-negative)}._purpur-button--expressive-negative_1fna2_108:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-expressive-negative-hover);color:var(--purpur-color-text-interactive-on-expressive-negative-hover)}._purpur-button--expressive-negative_1fna2_108:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-expressive-negative-active);color:var(--purpur-color-text-interactive-on-expressive-negative-active)}._purpur-button--negative_1fna2_120._purpur-button--disabled_1fna2_58{background-color:var(--purpur-color-background-interactive-disabled-negative);color:var(--purpur-color-text-weak-negative)}._purpur-button--secondary_1fna2_76._purpur-button--disabled_1fna2_58,._purpur-button--secondary-negative_1fna2_87._purpur-button--disabled_1fna2_58{box-shadow:none}._purpur-button--destructive_1fna2_127{background-color:var(--purpur-color-background-interactive-destructive);color:var(--purpur-color-text-interactive-on-destructive)}._purpur-button--destructive_1fna2_127:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-destructive-hover)}._purpur-button--destructive_1fna2_127:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-destructive-active)}._purpur-button--destructive-negative_1fna2_137{background-color:var(--purpur-color-background-interactive-destructive);color:var(--purpur-color-text-interactive-on-destructive)}._purpur-button--destructive-negative_1fna2_137:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-destructive-hover)}._purpur-button--destructive-negative_1fna2_137:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-destructive-active)}._purpur-button--tertiary-purple_1fna2_147{background-color:var(--purpur-color-background-interactive-transparent);color:var(--purpur-color-text-interactive-primary)}._purpur-button--tertiary-purple_1fna2_147._purpur-button--disabled_1fna2_58{background-color:var(--purpur-color-background-interactive-transparent)}._purpur-button--tertiary-purple_1fna2_147:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-hover)}._purpur-button--tertiary-purple_1fna2_147:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-active)}._purpur-button--tertiary-purple-negative_1fna2_160{background-color:var(--purpur-color-background-interactive-transparent);color:var(--purpur-color-text-interactive-primary-negative)}._purpur-button--tertiary-purple-negative_1fna2_160._purpur-button--disabled_1fna2_58{background-color:var(--purpur-color-background-interactive-transparent)}._purpur-button--tertiary-purple-negative_1fna2_160:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-negative-hover);color:var(--purpur-color-text-interactive-primary-negative-hover)}._purpur-button--tertiary-purple-negative_1fna2_160:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-negative-active);color:var(--purpur-color-text-interactive-primary-negative-active)}._purpur-button--text-negative_1fna2_175{border-radius:0;padding-left:0;padding-right:0;background-color:var(--purpur-color-background-interactive-transparent);color:var(--purpur-color-text-interactive-primary-negative)}._purpur-button--text-negative_1fna2_175:focus-visible:before{border-radius:0}._purpur-button--text-negative_1fna2_175._purpur-button--disabled_1fna2_58{background-color:var(--purpur-color-background-interactive-transparent)}._purpur-button--text-negative_1fna2_175:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-negative-hover);color:var(--purpur-color-text-interactive-primary-negative-hover)}._purpur-button--text-negative_1fna2_175:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-negative-active);color:var(--purpur-color-text-interactive-primary-negative-active)}._purpur-button--text_1fna2_175{border-radius:0;padding-left:0;padding-right:0;background-color:var(--purpur-color-background-interactive-transparent);color:var(--purpur-color-text-interactive-primary)}._purpur-button--text_1fna2_175:focus-visible:before{border-radius:0}._purpur-button--text_1fna2_175._purpur-button--disabled_1fna2_58{background-color:var(--purpur-color-background-interactive-transparent);color:var(--purpur-color-text-weak)}._purpur-button--text_1fna2_175:hover:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-hover)}._purpur-button--text_1fna2_175:active:not(._purpur-button--disabled_1fna2_58){background-color:var(--purpur-color-background-interactive-transparent-active)}._purpur-button--disabled_1fna2_58{background-color:var(--purpur-color-background-interactive-disabled);color:var(--purpur-color-text-weak);cursor:not-allowed}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@purpurds/button",
3
+ "version": "3.0.0",
4
+ "license": "AGPL-3.0-only",
5
+ "main": "./dist/button.cjs.js",
6
+ "types": "./dist/button.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "require": "./dist/button.cjs.js",
10
+ "systemjs": "./dist/button.system.js",
11
+ "types": "./dist/button.d.ts",
12
+ "default": "./dist/button.es.js"
13
+ },
14
+ "./styles": "./dist/styles.css"
15
+ },
16
+ "source": "src/button.tsx",
17
+ "dependencies": {
18
+ "classnames": "~2.5.0",
19
+ "@purpurds/action": "3.0.0",
20
+ "@purpurds/icon": "3.0.0",
21
+ "@purpurds/tokens": "3.0.0",
22
+ "@purpurds/spinner": "3.0.0"
23
+ },
24
+ "devDependencies": {
25
+ "@rushstack/eslint-patch": "~1.7.0",
26
+ "@storybook/blocks": "~7.6.0",
27
+ "@storybook/react": "~7.6.0",
28
+ "@telia/base-rig": "~8.2.0",
29
+ "@telia/react-rig": "~3.2.0",
30
+ "@testing-library/dom": "~9.3.3",
31
+ "@testing-library/jest-dom": "~6.3.0",
32
+ "@testing-library/react": "~14.1.2",
33
+ "@types/node": "18",
34
+ "@types/react-dom": "~18.2.17",
35
+ "@types/react": "~18.2.42",
36
+ "eslint-plugin-testing-library": "~6.2.0",
37
+ "eslint": "~8.56.0",
38
+ "jsdom": "~22.1.0",
39
+ "lint-staged": "~10.5.3",
40
+ "prettier": "~2.8.8",
41
+ "react-dom": "~18.2.0",
42
+ "react": "~18.2.0",
43
+ "typescript": "~5.2.2",
44
+ "vite": "~5.0.6",
45
+ "vitest": "~1.2.0",
46
+ "@purpurds/component-rig": "1.0.0",
47
+ "@purpurds/icon": "3.0.0"
48
+ },
49
+ "scripts": {
50
+ "build:dev": "vite",
51
+ "build:watch": "vite build --watch",
52
+ "build": "rm -rf dist && vite build && vite build --mode systemjs",
53
+ "ci:build": "rushx build",
54
+ "coverage": "vitest run --coverage",
55
+ "lint:fix": "eslint . --fix",
56
+ "lint": "lint-staged --no-stash 2>&1",
57
+ "sbdev": "rush sbdev",
58
+ "test:unit": "vitest run --passWithNoTests",
59
+ "test:watch": "vitest --watch",
60
+ "test": "rushx test:unit",
61
+ "typecheck": "tsc -p ./tsconfig.json"
62
+ }
63
+ }
package/readme.mdx ADDED
@@ -0,0 +1,56 @@
1
+ import { Meta, Stories, ArgTypes, Primary, Subtitle } from "@storybook/blocks";
2
+
3
+ import * as ButtonStories from "./src/button.stories";
4
+ import packageInfo from "./package.json";
5
+
6
+ <Meta name="Docs" title="Components/Button" of={ButtonStories} />
7
+
8
+ # Button
9
+
10
+ <Subtitle>Version {packageInfo.version}</Subtitle>
11
+
12
+ ### Showcase
13
+
14
+ <Primary />
15
+
16
+ ### Properties
17
+
18
+ <ArgTypes />
19
+
20
+ ### Installation
21
+
22
+ #### Via NPM
23
+
24
+ Add the dependency to your consumer app like `"@purpurds/button": "x.y.z"`
25
+
26
+ #### From outside the monorepo (build-time)
27
+
28
+ To install this package, you need to setup access to the artifactory. [Click here to go to the guide on how to do that](https://github.com/telia-company/jfrog-documentation/blob/main/doc/JFrog/JFrog_Onboarding.md#getting-access-to-artifactory-and-other-jfrog-applications).
29
+
30
+ ---
31
+
32
+ In MyApp.tsx
33
+
34
+ ```tsx
35
+ import "@purpurds/tokens/index.css";
36
+ ```
37
+
38
+ and
39
+
40
+ ```tsx
41
+ import "@purpurds/button/styles";
42
+ ```
43
+
44
+ In MyComponent.tsx
45
+
46
+ ```tsx
47
+ import { Button } from "@purpurds/button";
48
+
49
+ export const MyComponent = () => {
50
+ return (
51
+ <div>
52
+ <Button {...someProps}>Some content</Button>
53
+ </div>
54
+ );
55
+ };
56
+ ```
@@ -0,0 +1,125 @@
1
+ @import "@purpurds/action/src/action.scss";
2
+
3
+ $root: ".purpur-button";
4
+
5
+ @mixin purple-negative {
6
+ background-color: var(--purpur-color-background-interactive-transparent);
7
+ color: var(--purpur-color-text-interactive-primary-negative);
8
+
9
+ &#{$root}--disabled {
10
+ background-color: var(--purpur-color-background-interactive-transparent);
11
+ }
12
+
13
+ &:hover:not(#{$root}--disabled) {
14
+ background-color: var(--purpur-color-background-interactive-transparent-negative-hover);
15
+ color: var(--purpur-color-text-interactive-primary-negative-hover);
16
+ }
17
+
18
+ &:active:not(#{$root}--disabled) {
19
+ background-color: var(--purpur-color-background-interactive-transparent-negative-active);
20
+ color: var(--purpur-color-text-interactive-primary-negative-active);
21
+ }
22
+ }
23
+
24
+ @mixin red {
25
+ background-color: var(--purpur-color-background-interactive-destructive);
26
+ color: var(--purpur-color-text-interactive-on-destructive);
27
+
28
+ &:hover:not(#{$root}--disabled) {
29
+ background-color: var(--purpur-color-background-interactive-destructive-hover);
30
+ }
31
+
32
+ &:active:not(#{$root}--disabled) {
33
+ background-color: var(--purpur-color-background-interactive-destructive-active);
34
+ }
35
+ }
36
+
37
+ @mixin square {
38
+ border-radius: 0;
39
+ padding-left: 0;
40
+ padding-right: 0;
41
+
42
+ &:focus-visible {
43
+ &::before {
44
+ border-radius: 0;
45
+ }
46
+ }
47
+ }
48
+
49
+ #{$root} {
50
+ @include action();
51
+
52
+ &--negative {
53
+ &#{$root}--disabled {
54
+ background-color: var(--purpur-color-background-interactive-disabled-negative);
55
+ color: var(--purpur-color-text-weak-negative);
56
+ }
57
+ }
58
+
59
+ &--secondary,
60
+ &--secondary-negative {
61
+ &#{$root}--disabled {
62
+ box-shadow: none;
63
+ }
64
+ }
65
+
66
+ &--destructive {
67
+ @include red();
68
+ }
69
+
70
+ &--destructive-negative {
71
+ @include red();
72
+ }
73
+
74
+ &--tertiary-purple {
75
+ background-color: var(--purpur-color-background-interactive-transparent);
76
+ color: var(--purpur-color-text-interactive-primary);
77
+
78
+ &#{$root}--disabled {
79
+ background-color: var(--purpur-color-background-interactive-transparent);
80
+ }
81
+
82
+ &:hover:not(#{$root}--disabled) {
83
+ background-color: var(--purpur-color-background-interactive-transparent-hover);
84
+ }
85
+
86
+ &:active:not(#{$root}--disabled) {
87
+ background-color: var(--purpur-color-background-interactive-transparent-active);
88
+ }
89
+ }
90
+
91
+ &--tertiary-purple-negative {
92
+ @include purple-negative();
93
+ }
94
+
95
+ &--text-negative {
96
+ @include square();
97
+ @include purple-negative();
98
+ }
99
+
100
+ &--text {
101
+ @include square();
102
+
103
+ background-color: var(--purpur-color-background-interactive-transparent);
104
+ color: var(--purpur-color-text-interactive-primary);
105
+
106
+ &#{$root}--disabled {
107
+ background-color: var(--purpur-color-background-interactive-transparent);
108
+ color: var(--purpur-color-text-weak);
109
+ }
110
+
111
+ &:hover:not(#{$root}--disabled) {
112
+ background-color: var(--purpur-color-background-interactive-transparent-hover);
113
+ }
114
+
115
+ &:active:not(#{$root}--disabled) {
116
+ background-color: var(--purpur-color-background-interactive-transparent-active);
117
+ }
118
+ }
119
+
120
+ &--disabled {
121
+ background-color: var(--purpur-color-background-interactive-disabled);
122
+ color: var(--purpur-color-text-weak);
123
+ cursor: not-allowed;
124
+ }
125
+ }
@@ -0,0 +1,109 @@
1
+ import React from "react";
2
+ import { sizes } from "@purpurds/action";
3
+ import { Icon, plus } from "@purpurds/icon";
4
+ import type { Meta, StoryObj } from "@storybook/react";
5
+
6
+ import "@purpurds/icon/styles";
7
+ import "@purpurds/spinner/styles";
8
+ import { Button, ButtonVariant, buttonVariants } from "./button";
9
+
10
+ const meta: Meta<typeof Button> = {
11
+ title: "Inputs/Button",
12
+ component: Button,
13
+ parameters: {
14
+ design: [
15
+ {
16
+ name: "Button",
17
+ type: "figma",
18
+ url: "https://www.figma.com/file/XEaIIFskrrxIBHMZDkIuIg/Purpur-DS---Component-Library?type=design&node-id=0%3A1&mode=design&t=XdU5MnI58cJ1D1e5-1",
19
+ },
20
+ ],
21
+ },
22
+ argTypes: {
23
+ disabled: { control: { type: "boolean" } },
24
+ fullWidth: { control: { type: "boolean" } },
25
+ size: {
26
+ options: sizes,
27
+ control: { type: "select" },
28
+ },
29
+ variant: {
30
+ options: buttonVariants,
31
+ control: { type: "select" },
32
+ },
33
+ ["data-testid"]: { control: { type: "text" } },
34
+ className: { control: { type: "text" } },
35
+ children: { control: { type: "text" } },
36
+ },
37
+ };
38
+ export default meta;
39
+
40
+ type Story = StoryObj<typeof Button>;
41
+
42
+ const adaptiveBackground = (variant: ButtonVariant) => ({
43
+ margin: "calc(var(--purpur-spacing-250) * -1)",
44
+ padding: "var(--purpur-spacing-250)",
45
+ background: variant?.includes("negative") ? "var(--purpur-color-purple-900)" : "transparent",
46
+ });
47
+
48
+ export const Showcase: Story = {
49
+ args: {
50
+ children: "Button label",
51
+ disabled: false,
52
+ fullWidth: false,
53
+ variant: "primary",
54
+ },
55
+ render: ({ children, ...args }) => (
56
+ <div style={adaptiveBackground(args.variant)}>
57
+ <Button {...args}>{children}</Button>
58
+ </div>
59
+ ),
60
+ };
61
+
62
+ export const ButtonWithLeftIcon: Story = {
63
+ name: "Button with left icon",
64
+ args: {
65
+ children: "Button label",
66
+ variant: "primary",
67
+ },
68
+ render: ({ children, ...args }) => (
69
+ <div style={adaptiveBackground(args.variant)}>
70
+ <Button {...args}>
71
+ <Icon svg={plus} size="xs" /> {children}
72
+ </Button>
73
+ </div>
74
+ ),
75
+ };
76
+
77
+ export const ButtonWithRightIcon: Story = {
78
+ name: "Button with right icon",
79
+ args: {
80
+ children: "Button label",
81
+ variant: "primary",
82
+ },
83
+ render: ({ children, ...args }) => (
84
+ <div style={adaptiveBackground(args.variant)}>
85
+ <Button {...args}>
86
+ {children} <Icon svg={plus} size="xs" />
87
+ </Button>
88
+ </div>
89
+ ),
90
+ };
91
+
92
+ export const ButtonWithOnlyIcon: Story = {
93
+ name: "Button with only icon",
94
+ parameters: {
95
+ controls: { exclude: ["children"] },
96
+ },
97
+ args: {
98
+ variant: "primary",
99
+ iconOnly: true,
100
+ ["aria-label"]: "Button label",
101
+ },
102
+ render: ({ ...args }) => (
103
+ <div style={adaptiveBackground(args.variant)}>
104
+ <Button {...args}>
105
+ <Icon svg={plus} size="xs" />
106
+ </Button>
107
+ </div>
108
+ ),
109
+ };
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+ import * as matchers from "@testing-library/jest-dom/matchers";
3
+ import { cleanup, fireEvent, render, screen } from "@testing-library/react";
4
+ import { afterEach, describe, expect, it, vi } from "vitest";
5
+
6
+ import { Button } from "./button";
7
+
8
+ expect.extend(matchers);
9
+
10
+ describe("Button", () => {
11
+ afterEach(() => {
12
+ cleanup();
13
+ });
14
+
15
+ it("should render", () => {
16
+ render(
17
+ <Button variant="primary" data-testid="button">
18
+ Some text content
19
+ </Button>
20
+ );
21
+
22
+ expect(screen.getByTestId("button")).toHaveTextContent("Some text content");
23
+ });
24
+
25
+ it("should use correct class for primary variant", () => {
26
+ render(
27
+ <Button variant="primary" data-testid="button">
28
+ Some text content
29
+ </Button>
30
+ );
31
+
32
+ expect(screen.getByTestId("button").classList.contains("purpur-button--primary")).toBeTruthy();
33
+ });
34
+
35
+ it("should handle click", () => {
36
+ const handleClick = vi.fn();
37
+ render(
38
+ <Button variant="secondary" onClick={handleClick}>
39
+ Click Me
40
+ </Button>
41
+ );
42
+ fireEvent.click(screen.getByText(/click me/i));
43
+ expect(handleClick).toHaveBeenCalledTimes(1);
44
+ });
45
+ });
package/src/button.tsx ADDED
@@ -0,0 +1,92 @@
1
+ import React, { ButtonHTMLAttributes, ForwardedRef, forwardRef, MouseEvent } from "react";
2
+ import { ActionProps, SIZE as BUTTON_SIZE, VARIANT } from "@purpurds/action";
3
+ import { Spinner } from "@purpurds/spinner";
4
+ import c from "classnames";
5
+
6
+ import styles from "./button.module.scss";
7
+
8
+ export const BUTTON_VARIANT = {
9
+ ...VARIANT,
10
+ DESTRUCTIVE: "destructive",
11
+ DESTRUCTIVE_NEGATIVE: "destructive-negative",
12
+ TERTIARY_PURPLE: "tertiary-purple",
13
+ TERTIARY_PURPLE_NEGATVIE: "tertiary-purple-negative",
14
+ TEXT: "text",
15
+ TEXT_NEGATIVE: "text-negative",
16
+ } as const;
17
+
18
+ export const buttonVariants = Object.values(BUTTON_VARIANT);
19
+ export type ButtonVariant = (typeof BUTTON_VARIANT)[keyof typeof BUTTON_VARIANT];
20
+
21
+ const rootClassName = "purpur-button";
22
+
23
+ export type ButtonProps = ActionProps<ButtonVariant> &
24
+ ButtonHTMLAttributes<HTMLButtonElement> & { loading?: boolean };
25
+
26
+ const ButtonComponent = (
27
+ {
28
+ children,
29
+ className,
30
+ ["data-testid"]: dataTestid,
31
+ disabled = false,
32
+ fullWidth = false,
33
+ iconOnly,
34
+ loading = false,
35
+ onClick,
36
+ size = BUTTON_SIZE.MD,
37
+ variant,
38
+ type = "button",
39
+ ...props
40
+ }: ButtonProps,
41
+ ref: ForwardedRef<HTMLButtonElement>
42
+ ) => {
43
+ if (iconOnly && variant === "destructive") {
44
+ return null;
45
+ }
46
+
47
+ const classes = c(
48
+ [
49
+ styles[rootClassName],
50
+ styles[`${rootClassName}--${variant}`],
51
+ styles[`${rootClassName}--${size}`],
52
+ ],
53
+ {
54
+ [styles[`${rootClassName}--icon-only`]]: iconOnly,
55
+ [styles[`${rootClassName}--negative`]]: variant.endsWith("negative"),
56
+ [styles[`${rootClassName}--full-width`]]: fullWidth,
57
+ [styles[`${rootClassName}--disabled`]]: disabled || loading,
58
+ },
59
+ className
60
+ );
61
+
62
+ const handleClick = (e: MouseEvent<HTMLButtonElement>) => {
63
+ if (disabled || loading) {
64
+ e.preventDefault();
65
+ } else if (onClick) {
66
+ onClick(e);
67
+ }
68
+ };
69
+
70
+ const getSpinnerVariant = () => (variant.endsWith("negative") ? "negative-disabled" : "disabled");
71
+
72
+ return (
73
+ <button
74
+ className={classes}
75
+ data-testid={dataTestid}
76
+ // eslint-disable-next-line react/button-has-type
77
+ type={type}
78
+ ref={ref}
79
+ aria-disabled={props["aria-disabled"] || disabled || loading}
80
+ onClick={handleClick}
81
+ {...props}
82
+ >
83
+ {loading && (
84
+ <Spinner size={size === BUTTON_SIZE.LG ? "xs" : "xxs"} variant={getSpinnerVariant()} />
85
+ )}{" "}
86
+ {children}
87
+ </button>
88
+ );
89
+ };
90
+
91
+ export const Button = forwardRef(ButtonComponent);
92
+ Button.displayName = "Button";
@@ -0,0 +1,4 @@
1
+ declare module "*.scss" {
2
+ const styles: { [className: string]: string };
3
+ export default styles;
4
+ }