@aristobyte-ui/button 1.0.54 → 1.0.56

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.
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- import "./index.css";
3
2
  "use strict";
4
3
  var __create = Object.create;
5
4
  var __defProp = Object.defineProperty;
@@ -149,26 +148,6 @@ var Button = ({
149
148
 
150
149
  // components/ButtonGroup/index.tsx
151
150
  var React2 = __toESM(require("react"));
152
-
153
- // components/ButtonGroup/ButtonGroup.module.scss
154
- var ButtonGroup_module_default = {
155
- "button-group": "ButtonGroup_module_button-group",
156
- "button-group-align--horizontal": "ButtonGroup_module_button-group-align--horizontal",
157
- "button-group-align--vertical": "ButtonGroup_module_button-group-align--vertical",
158
- "button-group-variant--default": "ButtonGroup_module_button-group-variant--default",
159
- "button-group-variant--primary": "ButtonGroup_module_button-group-variant--primary",
160
- "button-group-variant--secondary": "ButtonGroup_module_button-group-variant--secondary",
161
- "button-group-variant--success": "ButtonGroup_module_button-group-variant--success",
162
- "button-group-variant--error": "ButtonGroup_module_button-group-variant--error",
163
- "button-group-variant--warning": "ButtonGroup_module_button-group-variant--warning",
164
- "button-group-radius--none": "ButtonGroup_module_button-group-radius--none",
165
- "button-group-radius--sm": "ButtonGroup_module_button-group-radius--sm",
166
- "button-group-radius--md": "ButtonGroup_module_button-group-radius--md",
167
- "button-group-radius--lg": "ButtonGroup_module_button-group-radius--lg",
168
- "button-group-radius--full": "ButtonGroup_module_button-group-radius--full"
169
- };
170
-
171
- // components/ButtonGroup/index.tsx
172
151
  var import_jsx_runtime2 = require("react/jsx-runtime");
173
152
  var ButtonGroup = ({
174
153
  children,
@@ -176,28 +155,30 @@ var ButtonGroup = ({
176
155
  variant = "default",
177
156
  size = "md",
178
157
  radius = "md",
179
- disabled,
158
+ disabled = false,
180
159
  className = "",
181
160
  style = {}
182
161
  }) => {
183
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
184
- "div",
185
- {
186
- className: `${ButtonGroup_module_default["button-group"]} ${ButtonGroup_module_default[`button-group-variant--${variant}`]} ${ButtonGroup_module_default[`button-group-size--${size}`]} ${ButtonGroup_module_default[`button-group-radius--${radius}`]} ${ButtonGroup_module_default[`button-group-align--${align}`]} ${className}`,
187
- style,
188
- children: React2.Children.toArray(children).filter(
189
- (child) => React2.isValidElement(child) && child.type === Button
190
- ).map(
191
- (child, index) => React2.cloneElement(child, {
192
- key: index || child.key,
193
- size: size || child.props.size,
194
- disabled: disabled || child.props.disabled,
195
- variant: variant || child.props.variant,
196
- radius: "none"
197
- })
198
- )
199
- }
162
+ const groupClasses = clsx_default(
163
+ "btn-group",
164
+ `btn-group-${align}`,
165
+ `btn-group-variant-${variant}`,
166
+ `btn-group-radius-${radius}`,
167
+ `btn-group-size-${size}`,
168
+ className
200
169
  );
170
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: groupClasses, style, children: React2.Children.toArray(children).filter(
171
+ (child) => React2.isValidElement(child) && child.type === Button
172
+ ).map(
173
+ (child, index) => React2.cloneElement(child, {
174
+ key: index || child.key,
175
+ size: size || child.props.size,
176
+ disabled: disabled || child.props.disabled,
177
+ variant: variant || child.props.variant,
178
+ radius: "none"
179
+ // individual buttons inside group have no border-radius, group handles it
180
+ })
181
+ ) });
201
182
  };
202
183
  // Annotate the CommonJS export names for ESM import in node:
203
184
  0 && (module.exports = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../components/Button/index.tsx","../../../node_modules/clsx/dist/clsx.mjs","../components/ButtonGroup/index.tsx","../components/ButtonGroup/ButtonGroup.module.scss"],"sourcesContent":["export * from \"./components\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Spinner } from \"@aristobyte-ui/spinner\";\nimport { type IconPropsType, renderRipple } from \"@aristobyte-ui/utils\";\n\nexport interface IButton {\n type?: \"button\" | \"link\";\n text?: string;\n children?: React.ReactNode;\n href?: string;\n target?: \"_self\" | \"_blank\" | \"_parent\" | \"_top\";\n onClick?: (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => void | Promise<void>;\n disabled?: boolean;\n transparent?: boolean;\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n appearance?:\n | \"solid\"\n | \"outline\"\n | \"outline-dashed\"\n | \"no-outline\"\n | \"glowing\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n icon?: {\n component: (props: IconPropsType) => React.ReactElement;\n color?: string;\n size?: number;\n align?: \"left\" | \"right\";\n };\n isLoading?: boolean;\n spinnerType?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Button: React.FC<IButton> = ({\n onClick,\n text = \"\",\n href = \"\",\n target = \"_self\",\n children = \"\",\n type = \"button\",\n variant = \"default\",\n appearance = \"solid\",\n size = \"md\",\n radius = \"md\",\n icon,\n spinnerType = \"default\",\n transparent = false,\n isLoading = false,\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const uniqueId = React.useId();\n const ref = React.useRef<HTMLButtonElement | HTMLAnchorElement>(null);\n\n const handleClick = (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n const { clientX, clientY } = e;\n renderRipple({ ref, clientX, clientY });\n onClick?.(e);\n };\n\n const buttonClasses = clsx(\n \"btn\",\n transparent && \"btn-transparent\",\n `btn-${variant}-${appearance}`,\n `btn-${size}`,\n `btn-radius-${radius}`,\n isLoading && \"btn-loading\",\n className\n );\n\n const renderContent = () => (\n <>\n {isLoading && (\n <Spinner\n size={size}\n variant={variant}\n type={spinnerType}\n className=\"inline-block\"\n />\n )}\n {icon && (\n <span\n className={clsx(\n \"btn-icon\",\n icon.align === \"right\" && \"btn-icon-right\"\n )}\n >\n {icon.component({ color: icon.color, size: icon.size })}\n </span>\n )}\n {text || children}\n </>\n );\n\n if (type === \"link\") {\n return (\n <a\n key={uniqueId}\n ref={ref as React.RefObject<HTMLAnchorElement>}\n href={href}\n target={target}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </a>\n );\n }\n\n return (\n <button\n key={uniqueId}\n ref={ref as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled || isLoading}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </button>\n );\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport * as React from \"react\";\nimport { type IButton, Button } from \"../Button\";\n\nimport styles from \"./ButtonGroup.module.scss\";\n\nexport interface IButtonGroup {\n children:\n | React.ReactElement<IButton, typeof Button>\n | React.ReactElement<IButton, typeof Button>[];\n align?: \"vertical\" | \"horizontal\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n disabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const ButtonGroup: React.FC<IButtonGroup> = ({\n children,\n align = \"horizontal\",\n variant = \"default\",\n size = \"md\",\n radius = \"md\",\n disabled,\n className = \"\",\n style = {},\n}) => {\n return (\n <div\n className={`${styles[\"button-group\"]} ${\n styles[`button-group-variant--${variant}`]\n } ${styles[`button-group-size--${size}`]} ${\n styles[`button-group-radius--${radius}`]\n } ${styles[`button-group-align--${align}`]} ${className}`}\n style={style}\n >\n {React.Children.toArray(children)\n .filter(\n (child): child is React.ReactElement<IButton, typeof Button> =>\n React.isValidElement(child) && child.type === Button\n )\n .map((child, index) =>\n React.cloneElement(child, {\n key: index || child.key,\n size: size || child.props.size,\n disabled: disabled || child.props.disabled,\n variant: variant || child.props.variant,\n radius: \"none\",\n })\n )}\n </div>\n );\n};\n",".button-group {\n align-items: center;\n display: flex;\n overflow: hidden;\n max-width: max-content;\n}\n.button-group-align--horizontal {\n flex-direction: row;\n}\n.button-group-align--vertical {\n flex-direction: column;\n}\n.button-group-variant--default {\n background-color: #1f2937;\n}\n.button-group-variant--primary {\n background-color: #2563eb;\n}\n.button-group-variant--secondary {\n background-color: #4f46e5;\n}\n.button-group-variant--success {\n background-color: #16a34a;\n}\n.button-group-variant--error {\n background-color: #dc2626;\n}\n.button-group-variant--warning {\n background-color: #d97706;\n}\n.button-group-radius--none {\n border-radius: 0rem;\n}\n.button-group-radius--sm {\n border-radius: 0.125rem;\n}\n.button-group-radius--md {\n border-radius: 0.375rem;\n}\n.button-group-radius--lg {\n border-radius: 0.5rem;\n}\n.button-group-radius--full {\n border-radius: 1.5rem;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL1VzZXJzL2RodW5hbnlhbi9hcmlzdG9ieXRlL2dpdGh1Yi9hcmlzdG9ieXRlLXVpL3BhY2thZ2VzL2J1dHRvbi9jb21wb25lbnRzL0J1dHRvbkdyb3VwIiwic291cmNlcyI6WyJCdXR0b25Hcm91cC5tb2R1bGUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYXJpc3RvYnl0ZS11aS91dGlscy9zdHlsZXMvX3NldHRpbmdzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRTtFQUNFOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRSxrQkNzQ0s7O0FEbkNQO0VBQ0Usa0JDNENLOztBRHpDUDtFQUNFLGtCQ29ETzs7QURqRFQ7RUFDRSxrQkNvRU07O0FEakVSO0VBQ0Usa0JDc0RJOztBRG5ETjtFQUNFLGtCQ3NFTTs7QURqRVI7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcIkBhcmlzdG9ieXRlLXVpL3V0aWxzL3N0eWxlcy9zZXR0aW5nc1wiIGFzICo7XG5cbi5idXR0b24tZ3JvdXAge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuXG4gICYtYWxpZ24ge1xuICAgICYtLWhvcml6b250YWwge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICAmLS12ZXJ0aWNhbCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gICYtdmFyaWFudCB7XG4gICAgJi0tZGVmYXVsdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZGVmYXVsdDtcbiAgICB9XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIH1cblxuICAgICYtLXNlY29uZGFyeSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgJi0tZXJyb3Ige1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWVycm9yO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmc7XG4gICAgfVxuICB9XG5cbiAgJi1yYWRpdXMge1xuICAgICYtLW5vbmUge1xuICAgICAgYm9yZGVyLXJhZGl1czogMHJlbTsgLy8gMHB4XG4gICAgfVxuXG4gICAgJi0tc20ge1xuICAgICAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07IC8vIDJweFxuICAgIH1cblxuICAgICYtLW1kIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtOyAvLyA2cHhcbiAgICB9XG5cbiAgICAmLS1sZyB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07IC8vIDhweFxuICAgIH1cblxuICAgICYtLWZ1bGwge1xuICAgICAgYm9yZGVyLXJhZGl1czogMS41cmVtOyAvLyAyNHB4XG4gICAgfVxuICB9XG59XG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG4vLyAgICAgICAgQXJpc3RvQnl0ZSBVSSAtIFN0eWxlIFNldHRpbmdzICAgICAgIC8vXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG5cbi8vID09PSBEZXNpZ24gVG9rZW5zIOKAlCBDb2xvciBQYWxldHRlID09PSAvL1xuLy8gTG9nb1xuJGxvZ28tY29sb3ItMTogI2ZmZWUyNztcbiRsb2dvLWNvbG9yLTI6ICNmZWM4MDA7XG4kbG9nby1jb2xvci0zOiAjZjE4ZTM1O1xuJGxvZ28tY29sb3ItNDogI2U5NWYzMjtcbiRsb2dvLWNvbG9yLTU6ICNlMjMxMmQ7XG4kbG9nby1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KFxuICA5MGRlZyxcbiAgJGxvZ28tY29sb3ItMSxcbiAgJGxvZ28tY29sb3ItMixcbiAgJGxvZ28tY29sb3ItMyxcbiAgJGxvZ28tY29sb3ItNCxcbiAgJGxvZ28tY29sb3ItNVxuKTtcblxuLy8gQmFzZVxuJHdoaXRlOiAjZmZmZmZmO1xuJHdoaXRlLWhvdmVyOiAjZGRkZGRkO1xuJGJsYWNrOiAjMDAwMDAwO1xuJGJsYWNrLWhvdmVyOiAjMjIyMjIyO1xuJHRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuLy8gPT09IEJsYWNrIFRyYW5zcGFyZW50IFNjYWxlID09PSAvL1xuJGJsYWNrLXRyYW5zcGFyZW50LTEwMDogcmdiYSgwLCAwLCAwLCAwLjEpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTMwMDogcmdiYSgwLCAwLCAwLCAwLjMpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTQwMDogcmdiYSgwLCAwLCAwLCAwLjQpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTYwMDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTcwMDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTgwMDogcmdiYSgwLCAwLCAwLCAwLjgpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTkwMDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuXG4vLyA9PT0gQmxhY2sgVHJhbnNwYXJlbnQgU2NhbGUgPT09IC8vXG4kd2hpdGUtdHJhbnNwYXJlbnQtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG5cbi8vID09PSBOZXV0cmFsIFNjYWxlIChHcmV5KSA9PT0gLy9cbiRncmV5LTUwOiAjZjlmYWZiO1xuJGdyZXktMTAwOiAjZjNmNGY2O1xuJGdyZXktMjAwOiAjZTVlN2ViO1xuJGdyZXktMzAwOiAjZDFkNWRiO1xuJGdyZXktNDAwOiAjOWNhM2FmO1xuJGdyZXktNTAwOiAjNmI3MjgwO1xuJGdyZXktNjAwOiAjNGI1NTYzO1xuJGdyZXktNzAwOiAjMzc0MTUxO1xuJGdyZXktODAwOiAjMWYyOTM3O1xuJGdyZXktOTAwOiAjMTExODI3O1xuXG4vLyA9PT0gUHJpbWFyeSBTY2FsZSAoQmx1ZSkgPT09IC8vXG4kYmx1ZS01MDogI2VmZjZmZjtcbiRibHVlLTEwMDogI2RiZWFmZTtcbiRibHVlLTIwMDogI2JmZGJmZTtcbiRibHVlLTMwMDogIzkzYzVmZDtcbiRibHVlLTQwMDogIzYwYTVmYTtcbiRibHVlLTUwMDogIzNiODJmNjtcbiRibHVlLTYwMDogIzI1NjNlYjsgLy8gTWFpblxuJGJsdWUtNzAwOiAjMWQ0ZWQ4OyAvLyBIb3ZlclxuJGJsdWUtODAwOiAjMWU0MGFmO1xuJGJsdWUtOTAwOiAjMWUzYThhO1xuXG4vLyA9PT0gU2Vjb25kYXJ5IFNjYWxlIChJbmRpZ28pID09PSAvL1xuJGluZGlnby01MDogI2VlZjJmZjtcbiRpbmRpZ28tMTAwOiAjZTBlN2ZmO1xuJGluZGlnby0yMDA6ICNjN2QyZmU7XG4kaW5kaWdvLTMwMDogI2E1YjRmYztcbiRpbmRpZ28tNDAwOiAjODE4Y2Y4O1xuJGluZGlnby01MDA6ICM2MzY2ZjE7XG4kaW5kaWdvLTYwMDogIzRmNDZlNTsgLy8gTWFpblxuJGluZGlnby03MDA6ICM0MzM4Y2E7IC8vIEhvdmVyXG5cbi8vID09PSBFcnJvciBTY2FsZSAoUmVkKSA9PT0gLy9cbiRyZWQtNTA6ICNmZWYyZjI7XG4kcmVkLTEwMDogI2ZlZTJlMjtcbiRyZWQtMjAwOiAjZmVjYWNhO1xuJHJlZC0zMDA6ICNmY2E1YTU7XG4kcmVkLTQwMDogI2Y4NzE3MTtcbiRyZWQtNTAwOiAjZWY0NDQ0O1xuJHJlZC02MDA6ICNkYzI2MjY7IC8vIE1haW5cbiRyZWQtNzAwOiAjYjkxYzFjOyAvLyBIb3ZlclxuXG4vLyA9PT0gU3VjY2VzcyBTY2FsZSAoR3JlZW4pID09PSAvL1xuJGdyZWVuLTUwOiAjZjBmZGY0O1xuJGdyZWVuLTEwMDogI2RjZmNlNztcbiRncmVlbi0yMDA6ICNiYmY3ZDA7XG4kZ3JlZW4tMzAwOiAjODZlZmFjO1xuJGdyZWVuLTQwMDogIzRhZGU4MDtcbiRncmVlbi01MDA6ICMyMmM1NWU7XG4kZ3JlZW4tNjAwOiAjMTZhMzRhOyAvLyBNYWluXG4kZ3JlZW4tNzAwOiAjMTU4MDNkOyAvLyBIb3ZlclxuXG4vLyA9PT0gV2FybmluZyBTY2FsZSAoQW1iZXIpID09PSAvL1xuJGFtYmVyLTUwOiAjZmZmYmViO1xuJGFtYmVyLTEwMDogI2ZlZjNjNztcbiRhbWJlci0yMDA6ICNmZGU2OGE7XG4kYW1iZXItMzAwOiAjZmNkMzRkO1xuJGFtYmVyLTQwMDogI2ZiYmYyNDtcbiRhbWJlci01MDA6ICNmNTllMGI7XG4kYW1iZXItNjAwOiAjZDk3NzA2OyAvLyBNYWluXG4kYW1iZXItNzAwOiAjYjQ1MzA5OyAvLyBIb3ZlclxuXG4vLyA9PT0gU2VtYW50aWMgVG9rZW5zID09PSAvL1xuJGNvbG9yLWRlZmF1bHQ6ICRncmV5LTgwMDtcbiRjb2xvci1kZWZhdWx0LWhvdmVyOiAkZ3JleS05MDA7XG4kY29sb3ItZGVmYXVsdC1kaXNhYmxlZDogcmdiYSgkY29sb3ItZGVmYXVsdCwgMC41KTtcblxuJGNvbG9yLXByaW1hcnk6ICRibHVlLTYwMDtcbiRjb2xvci1wcmltYXJ5LWhvdmVyOiAkYmx1ZS03MDA7XG4kY29sb3ItcHJpbWFyeS1kaXNhYmxlZDogcmdiYSgkY29sb3ItcHJpbWFyeSwgMC41KTtcblxuJGNvbG9yLXNlY29uZGFyeTogJGluZGlnby02MDA7XG4kY29sb3Itc2Vjb25kYXJ5LWhvdmVyOiAkaW5kaWdvLTcwMDtcbiRjb2xvci1zZWNvbmRhcnktZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMC41KTtcblxuJGNvbG9yLWVycm9yOiAkcmVkLTYwMDtcbiRjb2xvci1lcnJvci1ob3ZlcjogJHJlZC03MDA7XG4kY29sb3ItZXJyb3ItZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLWVycm9yLCAwLjUpO1xuXG4kY29sb3Itc3VjY2VzczogJGdyZWVuLTYwMDtcbiRjb2xvci1zdWNjZXNzLWhvdmVyOiAkZ3JlZW4tNzAwO1xuJGNvbG9yLXN1Y2Nlc3MtZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXN1Y2Nlc3MsIDAuNSk7XG5cbiRjb2xvci13YXJuaW5nOiAkYW1iZXItNjAwO1xuJGNvbG9yLXdhcm5pbmctaG92ZXI6ICRhbWJlci03MDA7XG4kY29sb3Itd2FybmluZy1kaXNhYmxlZDogcmdiYSgkY29sb3Itd2FybmluZywgMC41KTtcblxuJHRleHQtY29sb3Itd2hpdGU6ICR3aGl0ZTtcbiR0ZXh0LWNvbG9yLWJsYWNrOiAkYmxhY2s7XG4kdGV4dC1jb2xvci13aGl0ZS1kaXNhYmxlZDogcmdiYSgkd2hpdGUsIDAuNSk7XG4kdGV4dC1jb2xvci1ibGFjay1kaXNhYmxlZDogcmdiYSgkYmxhY2ssIDAuNSk7XG5cbiR0aXRsZS1jb2xvci1kYXJrOiAkd2hpdGU7XG4kc3VidGl0bGUtY29sb3ItZGFyazogIzk5YTFhZjtcbiRkZXNjcmlwdGlvbi1jb2xvci1kYXJrOiAjZDFkNWRjO1xuJGljb24tY29sb3ItZGFyazogIzk5YTFhZjtcblxuLy8gPT09IFNoYWRvd3MgPT09IC8vXG4vL0BUT0RPOiBAU0hBRE9XXG4kc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2JhKCRibGFjaywgMC4wNSk7XG4kc2hhZG93LW1kOlxuICAwIDRweCA2cHggLTFweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCAycHggNHB4IC0xcHggcmdiYSgkYmxhY2ssIDAuMDYpO1xuJHNoYWRvdy1sZzpcbiAgMCAxMHB4IDE1cHggLTNweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCA0cHggNnB4IC0ycHggcmdiYSgkYmxhY2ssIDAuMDUpO1xuXG4vLyA9PT0gRm9udCBmYW1pbGllcyA9PT0gLy9cbiRmb250LWZhbWlseS1zYW5zOiBcIkludGVyXCIsIHNhbnMtc2VyaWY7XG4kZm9udC1mYW1pbHktc2VyaWY6IFwiR2VvcmdpYVwiLCBzZXJpZjtcbiRmb250LWZhbWlseS1tb25vOiBcIkZpcmEgQ29kZVwiLCBtb25vc3BhY2U7XG5cbi8vID09PSBGb250IHdlaWdodHMgPT09IC8vXG4kZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xuJGZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuJGZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4kZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuXG4vLyA9PT0gTGluZSBoZWlnaHRzID09PSAvL1xuJGxpbmUtaGVpZ2h0LXRpZ2h0OiAxLjI7XG4kbGluZS1oZWlnaHQtc251ZzogMS4zNzU7XG4kbGluZS1oZWlnaHQtbm9ybWFsOiAxLjU7XG4kbGluZS1oZWlnaHQtbG9vc2U6IDEuNjI1O1xuXG4vLyA9PT0gRm9udCBTaXplcyDigJQgU2VtYW50aWMgVG9rZW5zID09PSAvL1xuXG4vLyA9PT0gVGl0bGVzID09PSAvL1xuJGZvbnQtc2l6ZS1oZXJvOiAzcmVtOyAvLyA0OHB4XG4kZm9udC1zaXplLXRpdGxlLTE6IDIuMjVyZW07IC8vIDM2cHhcbiRmb250LXNpemUtdGl0bGUtMjogMS44NzVyZW07IC8vIDMwcHhcbiRmb250LXNpemUtdGl0bGUtMzogMS41cmVtOyAvLyAyNHB4XG5cbi8vID09PSBTdWJ0aXRsZXMgPT09IC8vXG4kZm9udC1zaXplLXN1YnRpdGxlLTE6IDEuMjVyZW07IC8vIDIwcHhcbiRmb250LXNpemUtc3VidGl0bGUtMjogMS4xMjVyZW07IC8vIDE4cHhcblxuLy8gPT09IEJvZHkgdGV4dCA9PT0gLy9cbiRmb250LXNpemUtYm9keS1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1ib2R5LW1kOiAwLjkzNzVyZW07IC8vIDE1cHhcbiRmb250LXNpemUtYm9keS1zbTogMC44NzVyZW07IC8vIDE0cHhcblxuLy8gPT09IENhcHRpb25zIC8gRGVzY3JpcHRpb25zID09PSAvL1xuJGZvbnQtc2l6ZS1jYXB0aW9uOiAwLjc1cmVtOyAvLyAxMnB4XG4kZm9udC1zaXplLWZvb3Rub3RlOiAwLjY4NzVyZW07IC8vIDExcHhcblxuLy8gPT09IEJ1dHRvbnMgPT09IC8vXG4kZm9udC1zaXplLWJ1dHRvbi1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1idXR0b24tbWQ6IDAuODc1cmVtOyAvLyAxNHB4XG4kZm9udC1zaXplLWJ1dHRvbi1zbTogMC43NXJlbTsgLy8gMTJweFxuXG4vLyA9PT0gQW5pbWF0aW9ucyA9PT0gLy9cblxuJGN1YmljLWJlemllci1wcmltYXJ5OiBjdWJpYy1iZXppZXIoMC41NSwgLTAuMTksIDAuNTksIDAuOTUpO1xuJGN1YmljLWJlemllci1zZWNvbmRhcnk6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcbiJdfQ== */"],"mappings":"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","names":["React","button-group","button-group-align--horizontal","button-group-align--vertical","button-group-variant--default","button-group-variant--primary","button-group-variant--secondary","button-group-variant--success","button-group-variant--error","button-group-variant--warning","button-group-radius--none","button-group-radius--sm","button-group-radius--md","button-group-radius--lg","button-group-radius--full","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../index.ts","../components/Button/index.tsx","../../../node_modules/clsx/dist/clsx.mjs","../components/ButtonGroup/index.tsx"],"sourcesContent":["export * from \"./components\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Spinner } from \"@aristobyte-ui/spinner\";\nimport { type IconPropsType, renderRipple } from \"@aristobyte-ui/utils\";\n\nexport interface IButton {\n type?: \"button\" | \"link\";\n text?: string;\n children?: React.ReactNode;\n href?: string;\n target?: \"_self\" | \"_blank\" | \"_parent\" | \"_top\";\n onClick?: (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => void | Promise<void>;\n disabled?: boolean;\n transparent?: boolean;\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n appearance?:\n | \"solid\"\n | \"outline\"\n | \"outline-dashed\"\n | \"no-outline\"\n | \"glowing\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n icon?: {\n component: (props: IconPropsType) => React.ReactElement;\n color?: string;\n size?: number;\n align?: \"left\" | \"right\";\n };\n isLoading?: boolean;\n spinnerType?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Button: React.FC<IButton> = ({\n onClick,\n text = \"\",\n href = \"\",\n target = \"_self\",\n children = \"\",\n type = \"button\",\n variant = \"default\",\n appearance = \"solid\",\n size = \"md\",\n radius = \"md\",\n icon,\n spinnerType = \"default\",\n transparent = false,\n isLoading = false,\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const uniqueId = React.useId();\n const ref = React.useRef<HTMLButtonElement | HTMLAnchorElement>(null);\n\n const handleClick = (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n const { clientX, clientY } = e;\n renderRipple({ ref, clientX, clientY });\n onClick?.(e);\n };\n\n const buttonClasses = clsx(\n \"btn\",\n transparent && \"btn-transparent\",\n `btn-${variant}-${appearance}`,\n `btn-${size}`,\n `btn-radius-${radius}`,\n isLoading && \"btn-loading\",\n className\n );\n\n const renderContent = () => (\n <>\n {isLoading && (\n <Spinner\n size={size}\n variant={variant}\n type={spinnerType}\n className=\"inline-block\"\n />\n )}\n {icon && (\n <span\n className={clsx(\n \"btn-icon\",\n icon.align === \"right\" && \"btn-icon-right\"\n )}\n >\n {icon.component({ color: icon.color, size: icon.size })}\n </span>\n )}\n {text || children}\n </>\n );\n\n if (type === \"link\") {\n return (\n <a\n key={uniqueId}\n ref={ref as React.RefObject<HTMLAnchorElement>}\n href={href}\n target={target}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </a>\n );\n }\n\n return (\n <button\n key={uniqueId}\n ref={ref as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled || isLoading}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </button>\n );\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport * as React from \"react\";\nimport { type IButton, Button } from \"../Button\";\nimport clsx from \"clsx\";\n\nexport interface IButtonGroup {\n children:\n | React.ReactElement<IButton, typeof Button>\n | React.ReactElement<IButton, typeof Button>[];\n align?: \"vertical\" | \"horizontal\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n disabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const ButtonGroup: React.FC<IButtonGroup> = ({\n children,\n align = \"horizontal\",\n variant = \"default\",\n size = \"md\",\n radius = \"md\",\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const groupClasses = clsx(\n \"btn-group\",\n `btn-group-${align}`,\n `btn-group-variant-${variant}`,\n `btn-group-radius-${radius}`,\n `btn-group-size-${size}`,\n className\n );\n\n return (\n <div className={groupClasses} style={style}>\n {React.Children.toArray(children)\n .filter(\n (child): child is React.JSX.Element =>\n React.isValidElement(child) && child.type === Button\n )\n .map((child, index) =>\n React.cloneElement(child, {\n key: index || child.key,\n size: size || child.props.size,\n disabled: disabled || child.props.disabled,\n variant: variant || child.props.variant,\n radius: \"none\", // individual buttons inside group have no border-radius, group handles it\n })\n )}\n </div>\n );\n};\n"],"mappings":"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","names":["React","import_jsx_runtime"]}
package/dist/index.mjs CHANGED
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- import "./index.css";
3
2
 
4
3
  // components/Button/index.tsx
5
4
  import * as React from "react";
@@ -113,26 +112,6 @@ var Button = ({
113
112
 
114
113
  // components/ButtonGroup/index.tsx
115
114
  import * as React2 from "react";
116
-
117
- // components/ButtonGroup/ButtonGroup.module.scss
118
- var ButtonGroup_module_default = {
119
- "button-group": "ButtonGroup_module_button-group",
120
- "button-group-align--horizontal": "ButtonGroup_module_button-group-align--horizontal",
121
- "button-group-align--vertical": "ButtonGroup_module_button-group-align--vertical",
122
- "button-group-variant--default": "ButtonGroup_module_button-group-variant--default",
123
- "button-group-variant--primary": "ButtonGroup_module_button-group-variant--primary",
124
- "button-group-variant--secondary": "ButtonGroup_module_button-group-variant--secondary",
125
- "button-group-variant--success": "ButtonGroup_module_button-group-variant--success",
126
- "button-group-variant--error": "ButtonGroup_module_button-group-variant--error",
127
- "button-group-variant--warning": "ButtonGroup_module_button-group-variant--warning",
128
- "button-group-radius--none": "ButtonGroup_module_button-group-radius--none",
129
- "button-group-radius--sm": "ButtonGroup_module_button-group-radius--sm",
130
- "button-group-radius--md": "ButtonGroup_module_button-group-radius--md",
131
- "button-group-radius--lg": "ButtonGroup_module_button-group-radius--lg",
132
- "button-group-radius--full": "ButtonGroup_module_button-group-radius--full"
133
- };
134
-
135
- // components/ButtonGroup/index.tsx
136
115
  import { jsx as jsx2 } from "react/jsx-runtime";
137
116
  var ButtonGroup = ({
138
117
  children,
@@ -140,28 +119,30 @@ var ButtonGroup = ({
140
119
  variant = "default",
141
120
  size = "md",
142
121
  radius = "md",
143
- disabled,
122
+ disabled = false,
144
123
  className = "",
145
124
  style = {}
146
125
  }) => {
147
- return /* @__PURE__ */ jsx2(
148
- "div",
149
- {
150
- className: `${ButtonGroup_module_default["button-group"]} ${ButtonGroup_module_default[`button-group-variant--${variant}`]} ${ButtonGroup_module_default[`button-group-size--${size}`]} ${ButtonGroup_module_default[`button-group-radius--${radius}`]} ${ButtonGroup_module_default[`button-group-align--${align}`]} ${className}`,
151
- style,
152
- children: React2.Children.toArray(children).filter(
153
- (child) => React2.isValidElement(child) && child.type === Button
154
- ).map(
155
- (child, index) => React2.cloneElement(child, {
156
- key: index || child.key,
157
- size: size || child.props.size,
158
- disabled: disabled || child.props.disabled,
159
- variant: variant || child.props.variant,
160
- radius: "none"
161
- })
162
- )
163
- }
126
+ const groupClasses = clsx_default(
127
+ "btn-group",
128
+ `btn-group-${align}`,
129
+ `btn-group-variant-${variant}`,
130
+ `btn-group-radius-${radius}`,
131
+ `btn-group-size-${size}`,
132
+ className
164
133
  );
134
+ return /* @__PURE__ */ jsx2("div", { className: groupClasses, style, children: React2.Children.toArray(children).filter(
135
+ (child) => React2.isValidElement(child) && child.type === Button
136
+ ).map(
137
+ (child, index) => React2.cloneElement(child, {
138
+ key: index || child.key,
139
+ size: size || child.props.size,
140
+ disabled: disabled || child.props.disabled,
141
+ variant: variant || child.props.variant,
142
+ radius: "none"
143
+ // individual buttons inside group have no border-radius, group handles it
144
+ })
145
+ ) });
165
146
  };
166
147
  export {
167
148
  Button,
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/Button/index.tsx","../../../node_modules/clsx/dist/clsx.mjs","../components/ButtonGroup/index.tsx","../components/ButtonGroup/ButtonGroup.module.scss"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Spinner } from \"@aristobyte-ui/spinner\";\nimport { type IconPropsType, renderRipple } from \"@aristobyte-ui/utils\";\n\nexport interface IButton {\n type?: \"button\" | \"link\";\n text?: string;\n children?: React.ReactNode;\n href?: string;\n target?: \"_self\" | \"_blank\" | \"_parent\" | \"_top\";\n onClick?: (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => void | Promise<void>;\n disabled?: boolean;\n transparent?: boolean;\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n appearance?:\n | \"solid\"\n | \"outline\"\n | \"outline-dashed\"\n | \"no-outline\"\n | \"glowing\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n icon?: {\n component: (props: IconPropsType) => React.ReactElement;\n color?: string;\n size?: number;\n align?: \"left\" | \"right\";\n };\n isLoading?: boolean;\n spinnerType?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Button: React.FC<IButton> = ({\n onClick,\n text = \"\",\n href = \"\",\n target = \"_self\",\n children = \"\",\n type = \"button\",\n variant = \"default\",\n appearance = \"solid\",\n size = \"md\",\n radius = \"md\",\n icon,\n spinnerType = \"default\",\n transparent = false,\n isLoading = false,\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const uniqueId = React.useId();\n const ref = React.useRef<HTMLButtonElement | HTMLAnchorElement>(null);\n\n const handleClick = (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n const { clientX, clientY } = e;\n renderRipple({ ref, clientX, clientY });\n onClick?.(e);\n };\n\n const buttonClasses = clsx(\n \"btn\",\n transparent && \"btn-transparent\",\n `btn-${variant}-${appearance}`,\n `btn-${size}`,\n `btn-radius-${radius}`,\n isLoading && \"btn-loading\",\n className\n );\n\n const renderContent = () => (\n <>\n {isLoading && (\n <Spinner\n size={size}\n variant={variant}\n type={spinnerType}\n className=\"inline-block\"\n />\n )}\n {icon && (\n <span\n className={clsx(\n \"btn-icon\",\n icon.align === \"right\" && \"btn-icon-right\"\n )}\n >\n {icon.component({ color: icon.color, size: icon.size })}\n </span>\n )}\n {text || children}\n </>\n );\n\n if (type === \"link\") {\n return (\n <a\n key={uniqueId}\n ref={ref as React.RefObject<HTMLAnchorElement>}\n href={href}\n target={target}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </a>\n );\n }\n\n return (\n <button\n key={uniqueId}\n ref={ref as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled || isLoading}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </button>\n );\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport * as React from \"react\";\nimport { type IButton, Button } from \"../Button\";\n\nimport styles from \"./ButtonGroup.module.scss\";\n\nexport interface IButtonGroup {\n children:\n | React.ReactElement<IButton, typeof Button>\n | React.ReactElement<IButton, typeof Button>[];\n align?: \"vertical\" | \"horizontal\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n disabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const ButtonGroup: React.FC<IButtonGroup> = ({\n children,\n align = \"horizontal\",\n variant = \"default\",\n size = \"md\",\n radius = \"md\",\n disabled,\n className = \"\",\n style = {},\n}) => {\n return (\n <div\n className={`${styles[\"button-group\"]} ${\n styles[`button-group-variant--${variant}`]\n } ${styles[`button-group-size--${size}`]} ${\n styles[`button-group-radius--${radius}`]\n } ${styles[`button-group-align--${align}`]} ${className}`}\n style={style}\n >\n {React.Children.toArray(children)\n .filter(\n (child): child is React.ReactElement<IButton, typeof Button> =>\n React.isValidElement(child) && child.type === Button\n )\n .map((child, index) =>\n React.cloneElement(child, {\n key: index || child.key,\n size: size || child.props.size,\n disabled: disabled || child.props.disabled,\n variant: variant || child.props.variant,\n radius: \"none\",\n })\n )}\n </div>\n );\n};\n",".button-group {\n align-items: center;\n display: flex;\n overflow: hidden;\n max-width: max-content;\n}\n.button-group-align--horizontal {\n flex-direction: row;\n}\n.button-group-align--vertical {\n flex-direction: column;\n}\n.button-group-variant--default {\n background-color: #1f2937;\n}\n.button-group-variant--primary {\n background-color: #2563eb;\n}\n.button-group-variant--secondary {\n background-color: #4f46e5;\n}\n.button-group-variant--success {\n background-color: #16a34a;\n}\n.button-group-variant--error {\n background-color: #dc2626;\n}\n.button-group-variant--warning {\n background-color: #d97706;\n}\n.button-group-radius--none {\n border-radius: 0rem;\n}\n.button-group-radius--sm {\n border-radius: 0.125rem;\n}\n.button-group-radius--md {\n border-radius: 0.375rem;\n}\n.button-group-radius--lg {\n border-radius: 0.5rem;\n}\n.button-group-radius--full {\n border-radius: 1.5rem;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL1VzZXJzL2RodW5hbnlhbi9hcmlzdG9ieXRlL2dpdGh1Yi9hcmlzdG9ieXRlLXVpL3BhY2thZ2VzL2J1dHRvbi9jb21wb25lbnRzL0J1dHRvbkdyb3VwIiwic291cmNlcyI6WyJCdXR0b25Hcm91cC5tb2R1bGUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYXJpc3RvYnl0ZS11aS91dGlscy9zdHlsZXMvX3NldHRpbmdzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRTtFQUNFOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRSxrQkNzQ0s7O0FEbkNQO0VBQ0Usa0JDNENLOztBRHpDUDtFQUNFLGtCQ29ETzs7QURqRFQ7RUFDRSxrQkNvRU07O0FEakVSO0VBQ0Usa0JDc0RJOztBRG5ETjtFQUNFLGtCQ3NFTTs7QURqRVI7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcIkBhcmlzdG9ieXRlLXVpL3V0aWxzL3N0eWxlcy9zZXR0aW5nc1wiIGFzICo7XG5cbi5idXR0b24tZ3JvdXAge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuXG4gICYtYWxpZ24ge1xuICAgICYtLWhvcml6b250YWwge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICAmLS12ZXJ0aWNhbCB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gICYtdmFyaWFudCB7XG4gICAgJi0tZGVmYXVsdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZGVmYXVsdDtcbiAgICB9XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIH1cblxuICAgICYtLXNlY29uZGFyeSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgJi0tZXJyb3Ige1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWVycm9yO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmc7XG4gICAgfVxuICB9XG5cbiAgJi1yYWRpdXMge1xuICAgICYtLW5vbmUge1xuICAgICAgYm9yZGVyLXJhZGl1czogMHJlbTsgLy8gMHB4XG4gICAgfVxuXG4gICAgJi0tc20ge1xuICAgICAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07IC8vIDJweFxuICAgIH1cblxuICAgICYtLW1kIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtOyAvLyA2cHhcbiAgICB9XG5cbiAgICAmLS1sZyB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07IC8vIDhweFxuICAgIH1cblxuICAgICYtLWZ1bGwge1xuICAgICAgYm9yZGVyLXJhZGl1czogMS41cmVtOyAvLyAyNHB4XG4gICAgfVxuICB9XG59XG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG4vLyAgICAgICAgQXJpc3RvQnl0ZSBVSSAtIFN0eWxlIFNldHRpbmdzICAgICAgIC8vXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC8vXG5cbi8vID09PSBEZXNpZ24gVG9rZW5zIOKAlCBDb2xvciBQYWxldHRlID09PSAvL1xuLy8gTG9nb1xuJGxvZ28tY29sb3ItMTogI2ZmZWUyNztcbiRsb2dvLWNvbG9yLTI6ICNmZWM4MDA7XG4kbG9nby1jb2xvci0zOiAjZjE4ZTM1O1xuJGxvZ28tY29sb3ItNDogI2U5NWYzMjtcbiRsb2dvLWNvbG9yLTU6ICNlMjMxMmQ7XG4kbG9nby1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KFxuICA5MGRlZyxcbiAgJGxvZ28tY29sb3ItMSxcbiAgJGxvZ28tY29sb3ItMixcbiAgJGxvZ28tY29sb3ItMyxcbiAgJGxvZ28tY29sb3ItNCxcbiAgJGxvZ28tY29sb3ItNVxuKTtcblxuLy8gQmFzZVxuJHdoaXRlOiAjZmZmZmZmO1xuJHdoaXRlLWhvdmVyOiAjZGRkZGRkO1xuJGJsYWNrOiAjMDAwMDAwO1xuJGJsYWNrLWhvdmVyOiAjMjIyMjIyO1xuJHRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuLy8gPT09IEJsYWNrIFRyYW5zcGFyZW50IFNjYWxlID09PSAvL1xuJGJsYWNrLXRyYW5zcGFyZW50LTEwMDogcmdiYSgwLCAwLCAwLCAwLjEpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTMwMDogcmdiYSgwLCAwLCAwLCAwLjMpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTQwMDogcmdiYSgwLCAwLCAwLCAwLjQpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTYwMDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTcwMDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTgwMDogcmdiYSgwLCAwLCAwLCAwLjgpO1xuJGJsYWNrLXRyYW5zcGFyZW50LTkwMDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuXG4vLyA9PT0gQmxhY2sgVHJhbnNwYXJlbnQgU2NhbGUgPT09IC8vXG4kd2hpdGUtdHJhbnNwYXJlbnQtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4kd2hpdGUtdHJhbnNwYXJlbnQtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4kd2hpdGUtdHJhbnNwYXJlbnQtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG5cbi8vID09PSBOZXV0cmFsIFNjYWxlIChHcmV5KSA9PT0gLy9cbiRncmV5LTUwOiAjZjlmYWZiO1xuJGdyZXktMTAwOiAjZjNmNGY2O1xuJGdyZXktMjAwOiAjZTVlN2ViO1xuJGdyZXktMzAwOiAjZDFkNWRiO1xuJGdyZXktNDAwOiAjOWNhM2FmO1xuJGdyZXktNTAwOiAjNmI3MjgwO1xuJGdyZXktNjAwOiAjNGI1NTYzO1xuJGdyZXktNzAwOiAjMzc0MTUxO1xuJGdyZXktODAwOiAjMWYyOTM3O1xuJGdyZXktOTAwOiAjMTExODI3O1xuXG4vLyA9PT0gUHJpbWFyeSBTY2FsZSAoQmx1ZSkgPT09IC8vXG4kYmx1ZS01MDogI2VmZjZmZjtcbiRibHVlLTEwMDogI2RiZWFmZTtcbiRibHVlLTIwMDogI2JmZGJmZTtcbiRibHVlLTMwMDogIzkzYzVmZDtcbiRibHVlLTQwMDogIzYwYTVmYTtcbiRibHVlLTUwMDogIzNiODJmNjtcbiRibHVlLTYwMDogIzI1NjNlYjsgLy8gTWFpblxuJGJsdWUtNzAwOiAjMWQ0ZWQ4OyAvLyBIb3ZlclxuJGJsdWUtODAwOiAjMWU0MGFmO1xuJGJsdWUtOTAwOiAjMWUzYThhO1xuXG4vLyA9PT0gU2Vjb25kYXJ5IFNjYWxlIChJbmRpZ28pID09PSAvL1xuJGluZGlnby01MDogI2VlZjJmZjtcbiRpbmRpZ28tMTAwOiAjZTBlN2ZmO1xuJGluZGlnby0yMDA6ICNjN2QyZmU7XG4kaW5kaWdvLTMwMDogI2E1YjRmYztcbiRpbmRpZ28tNDAwOiAjODE4Y2Y4O1xuJGluZGlnby01MDA6ICM2MzY2ZjE7XG4kaW5kaWdvLTYwMDogIzRmNDZlNTsgLy8gTWFpblxuJGluZGlnby03MDA6ICM0MzM4Y2E7IC8vIEhvdmVyXG5cbi8vID09PSBFcnJvciBTY2FsZSAoUmVkKSA9PT0gLy9cbiRyZWQtNTA6ICNmZWYyZjI7XG4kcmVkLTEwMDogI2ZlZTJlMjtcbiRyZWQtMjAwOiAjZmVjYWNhO1xuJHJlZC0zMDA6ICNmY2E1YTU7XG4kcmVkLTQwMDogI2Y4NzE3MTtcbiRyZWQtNTAwOiAjZWY0NDQ0O1xuJHJlZC02MDA6ICNkYzI2MjY7IC8vIE1haW5cbiRyZWQtNzAwOiAjYjkxYzFjOyAvLyBIb3ZlclxuXG4vLyA9PT0gU3VjY2VzcyBTY2FsZSAoR3JlZW4pID09PSAvL1xuJGdyZWVuLTUwOiAjZjBmZGY0O1xuJGdyZWVuLTEwMDogI2RjZmNlNztcbiRncmVlbi0yMDA6ICNiYmY3ZDA7XG4kZ3JlZW4tMzAwOiAjODZlZmFjO1xuJGdyZWVuLTQwMDogIzRhZGU4MDtcbiRncmVlbi01MDA6ICMyMmM1NWU7XG4kZ3JlZW4tNjAwOiAjMTZhMzRhOyAvLyBNYWluXG4kZ3JlZW4tNzAwOiAjMTU4MDNkOyAvLyBIb3ZlclxuXG4vLyA9PT0gV2FybmluZyBTY2FsZSAoQW1iZXIpID09PSAvL1xuJGFtYmVyLTUwOiAjZmZmYmViO1xuJGFtYmVyLTEwMDogI2ZlZjNjNztcbiRhbWJlci0yMDA6ICNmZGU2OGE7XG4kYW1iZXItMzAwOiAjZmNkMzRkO1xuJGFtYmVyLTQwMDogI2ZiYmYyNDtcbiRhbWJlci01MDA6ICNmNTllMGI7XG4kYW1iZXItNjAwOiAjZDk3NzA2OyAvLyBNYWluXG4kYW1iZXItNzAwOiAjYjQ1MzA5OyAvLyBIb3ZlclxuXG4vLyA9PT0gU2VtYW50aWMgVG9rZW5zID09PSAvL1xuJGNvbG9yLWRlZmF1bHQ6ICRncmV5LTgwMDtcbiRjb2xvci1kZWZhdWx0LWhvdmVyOiAkZ3JleS05MDA7XG4kY29sb3ItZGVmYXVsdC1kaXNhYmxlZDogcmdiYSgkY29sb3ItZGVmYXVsdCwgMC41KTtcblxuJGNvbG9yLXByaW1hcnk6ICRibHVlLTYwMDtcbiRjb2xvci1wcmltYXJ5LWhvdmVyOiAkYmx1ZS03MDA7XG4kY29sb3ItcHJpbWFyeS1kaXNhYmxlZDogcmdiYSgkY29sb3ItcHJpbWFyeSwgMC41KTtcblxuJGNvbG9yLXNlY29uZGFyeTogJGluZGlnby02MDA7XG4kY29sb3Itc2Vjb25kYXJ5LWhvdmVyOiAkaW5kaWdvLTcwMDtcbiRjb2xvci1zZWNvbmRhcnktZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXNlY29uZGFyeSwgMC41KTtcblxuJGNvbG9yLWVycm9yOiAkcmVkLTYwMDtcbiRjb2xvci1lcnJvci1ob3ZlcjogJHJlZC03MDA7XG4kY29sb3ItZXJyb3ItZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLWVycm9yLCAwLjUpO1xuXG4kY29sb3Itc3VjY2VzczogJGdyZWVuLTYwMDtcbiRjb2xvci1zdWNjZXNzLWhvdmVyOiAkZ3JlZW4tNzAwO1xuJGNvbG9yLXN1Y2Nlc3MtZGlzYWJsZWQ6IHJnYmEoJGNvbG9yLXN1Y2Nlc3MsIDAuNSk7XG5cbiRjb2xvci13YXJuaW5nOiAkYW1iZXItNjAwO1xuJGNvbG9yLXdhcm5pbmctaG92ZXI6ICRhbWJlci03MDA7XG4kY29sb3Itd2FybmluZy1kaXNhYmxlZDogcmdiYSgkY29sb3Itd2FybmluZywgMC41KTtcblxuJHRleHQtY29sb3Itd2hpdGU6ICR3aGl0ZTtcbiR0ZXh0LWNvbG9yLWJsYWNrOiAkYmxhY2s7XG4kdGV4dC1jb2xvci13aGl0ZS1kaXNhYmxlZDogcmdiYSgkd2hpdGUsIDAuNSk7XG4kdGV4dC1jb2xvci1ibGFjay1kaXNhYmxlZDogcmdiYSgkYmxhY2ssIDAuNSk7XG5cbiR0aXRsZS1jb2xvci1kYXJrOiAkd2hpdGU7XG4kc3VidGl0bGUtY29sb3ItZGFyazogIzk5YTFhZjtcbiRkZXNjcmlwdGlvbi1jb2xvci1kYXJrOiAjZDFkNWRjO1xuJGljb24tY29sb3ItZGFyazogIzk5YTFhZjtcblxuLy8gPT09IFNoYWRvd3MgPT09IC8vXG4vL0BUT0RPOiBAU0hBRE9XXG4kc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2JhKCRibGFjaywgMC4wNSk7XG4kc2hhZG93LW1kOlxuICAwIDRweCA2cHggLTFweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCAycHggNHB4IC0xcHggcmdiYSgkYmxhY2ssIDAuMDYpO1xuJHNoYWRvdy1sZzpcbiAgMCAxMHB4IDE1cHggLTNweCByZ2JhKCRibGFjaywgMC4xKSxcbiAgMCA0cHggNnB4IC0ycHggcmdiYSgkYmxhY2ssIDAuMDUpO1xuXG4vLyA9PT0gRm9udCBmYW1pbGllcyA9PT0gLy9cbiRmb250LWZhbWlseS1zYW5zOiBcIkludGVyXCIsIHNhbnMtc2VyaWY7XG4kZm9udC1mYW1pbHktc2VyaWY6IFwiR2VvcmdpYVwiLCBzZXJpZjtcbiRmb250LWZhbWlseS1tb25vOiBcIkZpcmEgQ29kZVwiLCBtb25vc3BhY2U7XG5cbi8vID09PSBGb250IHdlaWdodHMgPT09IC8vXG4kZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xuJGZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuJGZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4kZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuXG4vLyA9PT0gTGluZSBoZWlnaHRzID09PSAvL1xuJGxpbmUtaGVpZ2h0LXRpZ2h0OiAxLjI7XG4kbGluZS1oZWlnaHQtc251ZzogMS4zNzU7XG4kbGluZS1oZWlnaHQtbm9ybWFsOiAxLjU7XG4kbGluZS1oZWlnaHQtbG9vc2U6IDEuNjI1O1xuXG4vLyA9PT0gRm9udCBTaXplcyDigJQgU2VtYW50aWMgVG9rZW5zID09PSAvL1xuXG4vLyA9PT0gVGl0bGVzID09PSAvL1xuJGZvbnQtc2l6ZS1oZXJvOiAzcmVtOyAvLyA0OHB4XG4kZm9udC1zaXplLXRpdGxlLTE6IDIuMjVyZW07IC8vIDM2cHhcbiRmb250LXNpemUtdGl0bGUtMjogMS44NzVyZW07IC8vIDMwcHhcbiRmb250LXNpemUtdGl0bGUtMzogMS41cmVtOyAvLyAyNHB4XG5cbi8vID09PSBTdWJ0aXRsZXMgPT09IC8vXG4kZm9udC1zaXplLXN1YnRpdGxlLTE6IDEuMjVyZW07IC8vIDIwcHhcbiRmb250LXNpemUtc3VidGl0bGUtMjogMS4xMjVyZW07IC8vIDE4cHhcblxuLy8gPT09IEJvZHkgdGV4dCA9PT0gLy9cbiRmb250LXNpemUtYm9keS1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1ib2R5LW1kOiAwLjkzNzVyZW07IC8vIDE1cHhcbiRmb250LXNpemUtYm9keS1zbTogMC44NzVyZW07IC8vIDE0cHhcblxuLy8gPT09IENhcHRpb25zIC8gRGVzY3JpcHRpb25zID09PSAvL1xuJGZvbnQtc2l6ZS1jYXB0aW9uOiAwLjc1cmVtOyAvLyAxMnB4XG4kZm9udC1zaXplLWZvb3Rub3RlOiAwLjY4NzVyZW07IC8vIDExcHhcblxuLy8gPT09IEJ1dHRvbnMgPT09IC8vXG4kZm9udC1zaXplLWJ1dHRvbi1sZzogMXJlbTsgLy8gMTZweFxuJGZvbnQtc2l6ZS1idXR0b24tbWQ6IDAuODc1cmVtOyAvLyAxNHB4XG4kZm9udC1zaXplLWJ1dHRvbi1zbTogMC43NXJlbTsgLy8gMTJweFxuXG4vLyA9PT0gQW5pbWF0aW9ucyA9PT0gLy9cblxuJGN1YmljLWJlemllci1wcmltYXJ5OiBjdWJpYy1iZXppZXIoMC41NSwgLTAuMTksIDAuNTksIDAuOTUpO1xuJGN1YmljLWJlemllci1zZWNvbmRhcnk6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcbiJdfQ== */"],"mappings":";;;;AAEA,YAAY,WAAW;;;ACFvB,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO,EAAE,MAAG;AAAA,WAAU,YAAU,OAAO,EAAE,KAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,QAAI,IAAE,EAAE;AAAO,SAAI,IAAE,GAAE,IAAE,GAAE,IAAI,GAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA,EAAE,MAAM,MAAI,KAAK,EAAE,GAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU,QAAO,IAAE,GAAE,IAAI,EAAC,IAAE,UAAU,CAAC,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAC,IAAO,eAAQ;;;ADI/X,SAAS,eAAe;AACxB,SAA6B,oBAAoB;AAiF7C,mBAEI,KAFJ;AAzCG,IAAM,SAA4B,CAAC;AAAA,EACxC;AAAA,EACA,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,aAAa;AAAA,EACb,OAAO;AAAA,EACP,SAAS;AAAA,EACT;AAAA,EACA,cAAc;AAAA,EACd,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,QAAM,WAAiB,YAAM;AAC7B,QAAM,MAAY,aAA8C,IAAI;AAEpE,QAAM,cAAc,CAClB,MACG;AACH,UAAM,EAAE,SAAS,QAAQ,IAAI;AAC7B,iBAAa,EAAE,KAAK,SAAS,QAAQ,CAAC;AACtC,uCAAU;AAAA,EACZ;AAEA,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA,eAAe;AAAA,IACf,OAAO,OAAO,IAAI,UAAU;AAAA,IAC5B,OAAO,IAAI;AAAA,IACX,cAAc,MAAM;AAAA,IACpB,aAAa;AAAA,IACb;AAAA,EACF;AAEA,QAAM,gBAAgB,MACpB,iCACG;AAAA,iBACC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,WAAU;AAAA;AAAA,IACZ;AAAA,IAED,QACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,KAAK,UAAU,WAAW;AAAA,QAC5B;AAAA,QAEC,eAAK,UAAU,EAAE,OAAO,KAAK,OAAO,MAAM,KAAK,KAAK,CAAC;AAAA;AAAA,IACxD;AAAA,IAED,QAAQ;AAAA,KACX;AAGF,MAAI,SAAS,QAAQ;AACnB,WACE;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,SAAS;AAAA,QAER,wBAAc;AAAA;AAAA,MARV;AAAA,IASP;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MAEC;AAAA,MACA,MAAK;AAAA,MACL,UAAU,YAAY;AAAA,MACtB;AAAA,MACA,WAAW;AAAA,MACX,SAAS;AAAA,MAER,wBAAc;AAAA;AAAA,IARV;AAAA,EASP;AAEJ;;;AExIA,YAAYA,YAAW;;;ACFvB;AAAA,EAAC,gBAAAC;AAAA,EAMA,kCAAAC;AAAA,EAGA,gCAAAC;AAAA,EAGA,iCAAAC;AAAA,EAGA,iCAAAC;AAAA,EAGA,mCAAAC;AAAA,EAGA,iCAAAC;AAAA,EAGA,+BAAAC;AAAA,EAGA,iCAAAC;AAAA,EAGA,6BAAAC;AAAA,EAGA,2BAAAC;AAAA,EAGA,2BAAAC;AAAA,EAGA,2BAAAC;AAAA,EAGA,6BAAAC;AAAA;;;ADLG,gBAAAC,YAAA;AAXG,IAAM,cAAsC,CAAC;AAAA,EAClD;AAAA,EACA,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,2BAAO,cAAc,CAAC,IAClC,2BAAO,yBAAyB,OAAO,EAAE,CAC3C,IAAI,2BAAO,sBAAsB,IAAI,EAAE,CAAC,IACtC,2BAAO,wBAAwB,MAAM,EAAE,CACzC,IAAI,2BAAO,uBAAuB,KAAK,EAAE,CAAC,IAAI,SAAS;AAAA,MACvD;AAAA,MAEC,UAAM,gBAAS,QAAQ,QAAQ,EAC7B;AAAA,QACC,CAAC,UACO,sBAAe,KAAK,KAAK,MAAM,SAAS;AAAA,MAClD,EACC;AAAA,QAAI,CAAC,OAAO,UACL,oBAAa,OAAO;AAAA,UACxB,KAAK,SAAS,MAAM;AAAA,UACpB,MAAM,QAAQ,MAAM,MAAM;AAAA,UAC1B,UAAU,YAAY,MAAM,MAAM;AAAA,UAClC,SAAS,WAAW,MAAM,MAAM;AAAA,UAChC,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA;AAAA,EACJ;AAEJ;","names":["React","button-group","button-group-align--horizontal","button-group-align--vertical","button-group-variant--default","button-group-variant--primary","button-group-variant--secondary","button-group-variant--success","button-group-variant--error","button-group-variant--warning","button-group-radius--none","button-group-radius--sm","button-group-radius--md","button-group-radius--lg","button-group-radius--full","jsx"]}
1
+ {"version":3,"sources":["../components/Button/index.tsx","../../../node_modules/clsx/dist/clsx.mjs","../components/ButtonGroup/index.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Spinner } from \"@aristobyte-ui/spinner\";\nimport { type IconPropsType, renderRipple } from \"@aristobyte-ui/utils\";\n\nexport interface IButton {\n type?: \"button\" | \"link\";\n text?: string;\n children?: React.ReactNode;\n href?: string;\n target?: \"_self\" | \"_blank\" | \"_parent\" | \"_top\";\n onClick?: (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => void | Promise<void>;\n disabled?: boolean;\n transparent?: boolean;\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n appearance?:\n | \"solid\"\n | \"outline\"\n | \"outline-dashed\"\n | \"no-outline\"\n | \"glowing\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n icon?: {\n component: (props: IconPropsType) => React.ReactElement;\n color?: string;\n size?: number;\n align?: \"left\" | \"right\";\n };\n isLoading?: boolean;\n spinnerType?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Button: React.FC<IButton> = ({\n onClick,\n text = \"\",\n href = \"\",\n target = \"_self\",\n children = \"\",\n type = \"button\",\n variant = \"default\",\n appearance = \"solid\",\n size = \"md\",\n radius = \"md\",\n icon,\n spinnerType = \"default\",\n transparent = false,\n isLoading = false,\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const uniqueId = React.useId();\n const ref = React.useRef<HTMLButtonElement | HTMLAnchorElement>(null);\n\n const handleClick = (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n const { clientX, clientY } = e;\n renderRipple({ ref, clientX, clientY });\n onClick?.(e);\n };\n\n const buttonClasses = clsx(\n \"btn\",\n transparent && \"btn-transparent\",\n `btn-${variant}-${appearance}`,\n `btn-${size}`,\n `btn-radius-${radius}`,\n isLoading && \"btn-loading\",\n className\n );\n\n const renderContent = () => (\n <>\n {isLoading && (\n <Spinner\n size={size}\n variant={variant}\n type={spinnerType}\n className=\"inline-block\"\n />\n )}\n {icon && (\n <span\n className={clsx(\n \"btn-icon\",\n icon.align === \"right\" && \"btn-icon-right\"\n )}\n >\n {icon.component({ color: icon.color, size: icon.size })}\n </span>\n )}\n {text || children}\n </>\n );\n\n if (type === \"link\") {\n return (\n <a\n key={uniqueId}\n ref={ref as React.RefObject<HTMLAnchorElement>}\n href={href}\n target={target}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </a>\n );\n }\n\n return (\n <button\n key={uniqueId}\n ref={ref as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled || isLoading}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </button>\n );\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport * as React from \"react\";\nimport { type IButton, Button } from \"../Button\";\nimport clsx from \"clsx\";\n\nexport interface IButtonGroup {\n children:\n | React.ReactElement<IButton, typeof Button>\n | React.ReactElement<IButton, typeof Button>[];\n align?: \"vertical\" | \"horizontal\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n disabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const ButtonGroup: React.FC<IButtonGroup> = ({\n children,\n align = \"horizontal\",\n variant = \"default\",\n size = \"md\",\n radius = \"md\",\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const groupClasses = clsx(\n \"btn-group\",\n `btn-group-${align}`,\n `btn-group-variant-${variant}`,\n `btn-group-radius-${radius}`,\n `btn-group-size-${size}`,\n className\n );\n\n return (\n <div className={groupClasses} style={style}>\n {React.Children.toArray(children)\n .filter(\n (child): child is React.JSX.Element =>\n React.isValidElement(child) && child.type === Button\n )\n .map((child, index) =>\n React.cloneElement(child, {\n key: index || child.key,\n size: size || child.props.size,\n disabled: disabled || child.props.disabled,\n variant: variant || child.props.variant,\n radius: \"none\", // individual buttons inside group have no border-radius, group handles it\n })\n )}\n </div>\n );\n};\n"],"mappings":"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","names":["React","jsx"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aristobyte-ui/button",
3
3
  "description": "react button and buttongroup components with multiple variants, appearances, sizes, radius options, icons, ripple feedback, and fully typed typescript support",
4
- "version": "1.0.54",
4
+ "version": "1.0.56",
5
5
  "license": "MIT",
6
6
  "private": false,
7
7
  "author": "AristoByte <info@aristobyte.com>",
@@ -60,28 +60,21 @@
60
60
  "check-types": "tsc --noEmit"
61
61
  },
62
62
  "dependencies": {
63
- "@aristobyte-ui/spinner": "^1.0.54",
64
- "@aristobyte-ui/utils": "^1.0.54",
65
- "esbuild-sass-plugin": "^3.3.1",
66
- "framer-motion": "^12.23.9",
63
+ "@aristobyte-ui/spinner": "^1.0.56",
64
+ "@aristobyte-ui/utils": "^1.0.56",
67
65
  "react": "^19.1.0",
68
66
  "react-dom": "^19.1.0",
69
- "sass": "^1.89.0",
70
- "shiki": "^3.7.0",
71
67
  "tsup": "^8.5.0"
72
68
  },
73
69
  "devDependencies": {
74
- "@aristobyte-ui/eslint-config": "^1.0.54",
75
- "@aristobyte-ui/typescript-config": "^1.0.54",
70
+ "@aristobyte-ui/eslint-config": "^1.0.56",
71
+ "@aristobyte-ui/typescript-config": "^1.0.56",
76
72
  "@turbo/gen": "^2.5.0",
77
73
  "@types/node": "^24.3.0",
78
74
  "@types/react": "19.1.0",
79
75
  "@types/react-dom": "19.1.1",
80
- "autoprefixer": "^10.4.21",
81
76
  "eslint": "^9.27.0",
82
77
  "postcss": "^8.5.3",
83
- "sass-embedded": "^1.91.0",
84
- "tailwindcss": "^4.1.7",
85
78
  "tsup": "^8.5.0",
86
79
  "typescript": "^5.8.3"
87
80
  }
package/dist/index.css DELETED
@@ -1,47 +0,0 @@
1
- /* components/ButtonGroup/ButtonGroup.module.scss */
2
- .ButtonGroup_module_button-group {
3
- align-items: center;
4
- display: flex;
5
- overflow: hidden;
6
- max-width: max-content;
7
- }
8
- .ButtonGroup_module_button-group-align--horizontal {
9
- flex-direction: row;
10
- }
11
- .ButtonGroup_module_button-group-align--vertical {
12
- flex-direction: column;
13
- }
14
- .ButtonGroup_module_button-group-variant--default {
15
- background-color: #1f2937;
16
- }
17
- .ButtonGroup_module_button-group-variant--primary {
18
- background-color: #2563eb;
19
- }
20
- .ButtonGroup_module_button-group-variant--secondary {
21
- background-color: #4f46e5;
22
- }
23
- .ButtonGroup_module_button-group-variant--success {
24
- background-color: #16a34a;
25
- }
26
- .ButtonGroup_module_button-group-variant--error {
27
- background-color: #dc2626;
28
- }
29
- .ButtonGroup_module_button-group-variant--warning {
30
- background-color: #d97706;
31
- }
32
- .ButtonGroup_module_button-group-radius--none {
33
- border-radius: 0rem;
34
- }
35
- .ButtonGroup_module_button-group-radius--sm {
36
- border-radius: 0.125rem;
37
- }
38
- .ButtonGroup_module_button-group-radius--md {
39
- border-radius: 0.375rem;
40
- }
41
- .ButtonGroup_module_button-group-radius--lg {
42
- border-radius: 0.5rem;
43
- }
44
- .ButtonGroup_module_button-group-radius--full {
45
- border-radius: 1.5rem;
46
- }
47
- /*# sourceMappingURL=index.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../components/ButtonGroup.module.scss","../../../../node_modules/@aristobyte-ui/utils/styles/_settings.scss"],"sourcesContent":["@use \"@aristobyte-ui/utils/styles/settings\" as *;\n\n.button-group {\n align-items: center;\n display: flex;\n overflow: hidden;\n max-width: max-content;\n\n &-align {\n &--horizontal {\n flex-direction: row;\n }\n\n &--vertical {\n flex-direction: column;\n }\n }\n\n &-variant {\n &--default {\n background-color: $color-default;\n }\n\n &--primary {\n background-color: $color-primary;\n }\n\n &--secondary {\n background-color: $color-secondary;\n }\n\n &--success {\n background-color: $color-success;\n }\n\n &--error {\n background-color: $color-error;\n }\n\n &--warning {\n background-color: $color-warning;\n }\n }\n\n &-radius {\n &--none {\n border-radius: 0rem; // 0px\n }\n\n &--sm {\n border-radius: 0.125rem; // 2px\n }\n\n &--md {\n border-radius: 0.375rem; // 6px\n }\n\n &--lg {\n border-radius: 0.5rem; // 8px\n }\n\n &--full {\n border-radius: 1.5rem; // 24px\n }\n }\n}\n","// =========================================== //\n// AristoByte UI - Style Settings //\n// =========================================== //\n\n// === Design Tokens — Color Palette === //\n// Logo\n$logo-color-1: #ffee27;\n$logo-color-2: #fec800;\n$logo-color-3: #f18e35;\n$logo-color-4: #e95f32;\n$logo-color-5: #e2312d;\n$logo-gradient: linear-gradient(\n 90deg,\n $logo-color-1,\n $logo-color-2,\n $logo-color-3,\n $logo-color-4,\n $logo-color-5\n);\n\n// Base\n$white: #ffffff;\n$white-hover: #dddddd;\n$black: #000000;\n$black-hover: #222222;\n$transparent: transparent;\n\n// === Black Transparent Scale === //\n$black-transparent-100: rgba(0, 0, 0, 0.1);\n$black-transparent-200: rgba(0, 0, 0, 0.2);\n$black-transparent-300: rgba(0, 0, 0, 0.3);\n$black-transparent-400: rgba(0, 0, 0, 0.4);\n$black-transparent-500: rgba(0, 0, 0, 0.5);\n$black-transparent-600: rgba(0, 0, 0, 0.6);\n$black-transparent-700: rgba(0, 0, 0, 0.7);\n$black-transparent-800: rgba(0, 0, 0, 0.8);\n$black-transparent-900: rgba(0, 0, 0, 0.9);\n\n// === Black Transparent Scale === //\n$white-transparent-100: rgba(255, 255, 255, 0.1);\n$white-transparent-200: rgba(255, 255, 255, 0.2);\n$white-transparent-300: rgba(255, 255, 255, 0.3);\n$white-transparent-400: rgba(255, 255, 255, 0.4);\n$white-transparent-500: rgba(255, 255, 255, 0.5);\n$white-transparent-600: rgba(255, 255, 255, 0.6);\n$white-transparent-700: rgba(255, 255, 255, 0.7);\n$white-transparent-800: rgba(255, 255, 255, 0.8);\n$white-transparent-900: rgba(255, 255, 255, 0.9);\n\n// === Neutral Scale (Grey) === //\n$grey-50: #f9fafb;\n$grey-100: #f3f4f6;\n$grey-200: #e5e7eb;\n$grey-300: #d1d5db;\n$grey-400: #9ca3af;\n$grey-500: #6b7280;\n$grey-600: #4b5563;\n$grey-700: #374151;\n$grey-800: #1f2937;\n$grey-900: #111827;\n\n// === Primary Scale (Blue) === //\n$blue-50: #eff6ff;\n$blue-100: #dbeafe;\n$blue-200: #bfdbfe;\n$blue-300: #93c5fd;\n$blue-400: #60a5fa;\n$blue-500: #3b82f6;\n$blue-600: #2563eb; // Main\n$blue-700: #1d4ed8; // Hover\n$blue-800: #1e40af;\n$blue-900: #1e3a8a;\n\n// === Secondary Scale (Indigo) === //\n$indigo-50: #eef2ff;\n$indigo-100: #e0e7ff;\n$indigo-200: #c7d2fe;\n$indigo-300: #a5b4fc;\n$indigo-400: #818cf8;\n$indigo-500: #6366f1;\n$indigo-600: #4f46e5; // Main\n$indigo-700: #4338ca; // Hover\n\n// === Error Scale (Red) === //\n$red-50: #fef2f2;\n$red-100: #fee2e2;\n$red-200: #fecaca;\n$red-300: #fca5a5;\n$red-400: #f87171;\n$red-500: #ef4444;\n$red-600: #dc2626; // Main\n$red-700: #b91c1c; // Hover\n\n// === Success Scale (Green) === //\n$green-50: #f0fdf4;\n$green-100: #dcfce7;\n$green-200: #bbf7d0;\n$green-300: #86efac;\n$green-400: #4ade80;\n$green-500: #22c55e;\n$green-600: #16a34a; // Main\n$green-700: #15803d; // Hover\n\n// === Warning Scale (Amber) === //\n$amber-50: #fffbeb;\n$amber-100: #fef3c7;\n$amber-200: #fde68a;\n$amber-300: #fcd34d;\n$amber-400: #fbbf24;\n$amber-500: #f59e0b;\n$amber-600: #d97706; // Main\n$amber-700: #b45309; // Hover\n\n// === Semantic Tokens === //\n$color-default: $grey-800;\n$color-default-hover: $grey-900;\n$color-default-disabled: rgba($color-default, 0.5);\n\n$color-primary: $blue-600;\n$color-primary-hover: $blue-700;\n$color-primary-disabled: rgba($color-primary, 0.5);\n\n$color-secondary: $indigo-600;\n$color-secondary-hover: $indigo-700;\n$color-secondary-disabled: rgba($color-secondary, 0.5);\n\n$color-error: $red-600;\n$color-error-hover: $red-700;\n$color-error-disabled: rgba($color-error, 0.5);\n\n$color-success: $green-600;\n$color-success-hover: $green-700;\n$color-success-disabled: rgba($color-success, 0.5);\n\n$color-warning: $amber-600;\n$color-warning-hover: $amber-700;\n$color-warning-disabled: rgba($color-warning, 0.5);\n\n$text-color-white: $white;\n$text-color-black: $black;\n$text-color-white-disabled: rgba($white, 0.5);\n$text-color-black-disabled: rgba($black, 0.5);\n\n$title-color-dark: $white;\n$subtitle-color-dark: #99a1af;\n$description-color-dark: #d1d5dc;\n$icon-color-dark: #99a1af;\n\n// === Shadows === //\n//@TODO: @SHADOW\n$shadow-sm: 0 1px 2px 0 rgba($black, 0.05);\n$shadow-md:\n 0 4px 6px -1px rgba($black, 0.1),\n 0 2px 4px -1px rgba($black, 0.06);\n$shadow-lg:\n 0 10px 15px -3px rgba($black, 0.1),\n 0 4px 6px -2px rgba($black, 0.05);\n\n// === Font families === //\n$font-family-sans: \"Inter\", sans-serif;\n$font-family-serif: \"Georgia\", serif;\n$font-family-mono: \"Fira Code\", monospace;\n\n// === Font weights === //\n$font-weight-regular: 400;\n$font-weight-medium: 500;\n$font-weight-semibold: 600;\n$font-weight-bold: 700;\n\n// === Line heights === //\n$line-height-tight: 1.2;\n$line-height-snug: 1.375;\n$line-height-normal: 1.5;\n$line-height-loose: 1.625;\n\n// === Font Sizes — Semantic Tokens === //\n\n// === Titles === //\n$font-size-hero: 3rem; // 48px\n$font-size-title-1: 2.25rem; // 36px\n$font-size-title-2: 1.875rem; // 30px\n$font-size-title-3: 1.5rem; // 24px\n\n// === Subtitles === //\n$font-size-subtitle-1: 1.25rem; // 20px\n$font-size-subtitle-2: 1.125rem; // 18px\n\n// === Body text === //\n$font-size-body-lg: 1rem; // 16px\n$font-size-body-md: 0.9375rem; // 15px\n$font-size-body-sm: 0.875rem; // 14px\n\n// === Captions / Descriptions === //\n$font-size-caption: 0.75rem; // 12px\n$font-size-footnote: 0.6875rem; // 11px\n\n// === Buttons === //\n$font-size-button-lg: 1rem; // 16px\n$font-size-button-md: 0.875rem; // 14px\n$font-size-button-sm: 0.75rem; // 12px\n\n// === Animations === //\n\n$cubic-bezier-primary: cubic-bezier(0.55, -0.19, 0.59, 0.95);\n$cubic-bezier-secondary: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n"],"mappings":";AAEA,CAAAA;AACE,eAAA;AACA,WAAA;AACA,YAAA;AACA,aAAA;;AAGE,CAAAC;AACE,kBAAA;;AAGF,CAAAC;AACE,kBAAA;;AAKF,CAAAC;AACE,oBCsCK;;ADnCP,CAAAC;AACE,oBC4CK;;ADzCP,CAAAC;AACE,oBCoDO;;ADjDT,CAAAC;AACE,oBCoEM;;ADjER,CAAAC;AACE,oBCsDI;;ADnDN,CAAAC;AACE,oBCsEM;;ADjER,CAAAC;AACE,iBAAA;;AAGF,CAAAC;AACE,iBAAA;;AAGF,CAAAC;AACE,iBAAA;;AAGF,CAAAC;AACE,iBAAA;;AAGF,CAAAC;AACE,iBAAA;;","names":["button-group","button-group-align--horizontal","button-group-align--vertical","button-group-variant--default","button-group-variant--primary","button-group-variant--secondary","button-group-variant--success","button-group-variant--error","button-group-variant--warning","button-group-radius--none","button-group-radius--sm","button-group-radius--md","button-group-radius--lg","button-group-radius--full"]}