@spark-web/button 2.0.0-rc.9 → 5.0.0-rc.24

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.
@@ -1,6 +1,6 @@
1
1
  import type { BoxProps } from '@spark-web/box';
2
2
  import type { ForegroundTone } from '@spark-web/text';
3
- import type { BrighteTheme } from '@spark-web/theme';
3
+ import type { SparkTheme } from '@spark-web/theme';
4
4
  import type { ButtonProminence, ButtonTone } from "./types.js";
5
5
  declare type BaseButtonStyles = {
6
6
  background: BoxProps['background'];
@@ -9,19 +9,19 @@ declare type BaseButtonStyles = {
9
9
  textTone?: ForegroundTone;
10
10
  };
11
11
  declare type HoverButtonStyles = {
12
- backgroundHover: keyof BrighteTheme['backgroundInteractions'];
13
- borderHover?: keyof BrighteTheme['border']['color'];
14
- textToneHover?: keyof BrighteTheme['color']['foreground'];
12
+ backgroundHover: keyof SparkTheme['backgroundInteractions'];
13
+ borderHover?: keyof SparkTheme['border']['color'];
14
+ textToneHover?: keyof SparkTheme['color']['foreground'];
15
15
  };
16
16
  declare type ActiveButtonStyles = {
17
- backgroundActive: keyof BrighteTheme['backgroundInteractions'];
18
- borderActive?: keyof BrighteTheme['border']['color'];
19
- textToneActive?: keyof BrighteTheme['color']['foreground'];
17
+ backgroundActive: keyof SparkTheme['backgroundInteractions'];
18
+ borderActive?: keyof SparkTheme['border']['color'];
19
+ textToneActive?: keyof SparkTheme['color']['foreground'];
20
20
  };
21
21
  declare type DisabledButtonStyles = {
22
- backgroundDisabled: keyof BrighteTheme['color']['background'];
23
- borderDisabled?: keyof BrighteTheme['border']['color'];
24
- textToneDisabled: keyof BrighteTheme['color']['foreground'];
22
+ backgroundDisabled: keyof SparkTheme['color']['background'];
23
+ borderDisabled?: keyof SparkTheme['border']['color'];
24
+ textToneDisabled: keyof SparkTheme['color']['foreground'];
25
25
  };
26
26
  declare type ButtonStyles = BaseButtonStyles & HoverButtonStyles & ActiveButtonStyles & DisabledButtonStyles;
27
27
  declare type Variants = Record<ButtonProminence, Record<ButtonTone, ButtonStyles | undefined>>;
@@ -12,8 +12,8 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
12
  var react$1 = require('@emotion/react');
13
13
  var a11y = require('@spark-web/a11y');
14
14
  var spinner = require('@spark-web/spinner');
15
- var text = require('@spark-web/text');
16
15
  var theme = require('@spark-web/theme');
16
+ var text = require('@spark-web/text');
17
17
  var link = require('@spark-web/link');
18
18
  var ts = require('@spark-web/utils/ts');
19
19
 
@@ -293,8 +293,10 @@ function HiddenWhenLoading(_ref2) {
293
293
  * passed to Emotion's `css` function.
294
294
  */
295
295
  function useButtonStyles(_ref) {
296
- var iconOnly = _ref.iconOnly,
296
+ var css = _ref.css,
297
+ iconOnly = _ref.iconOnly,
297
298
  prominence = _ref.prominence,
299
+ rounded = _ref.rounded,
298
300
  size = _ref.size,
299
301
  tone = _ref.tone;
300
302
  var theme$1 = theme.useTheme();
@@ -311,12 +313,12 @@ function useButtonStyles(_ref) {
311
313
  transitionTimingFunction: theme$1.animation.standard.easing,
312
314
  transitionDuration: "".concat(theme$1.animation.standard.duration, "ms")
313
315
  };
314
- return [{
316
+ return [_objectSpread({
315
317
  alignItems: 'center',
316
318
  background: variant === null || variant === void 0 ? void 0 : variant.background,
317
319
  border: variant === null || variant === void 0 ? void 0 : variant.border,
318
320
  borderWidth: variant === null || variant === void 0 ? void 0 : variant.borderWidth,
319
- borderRadius: isLarge ? 'medium' : 'small',
321
+ borderRadius: rounded ? 'full' : isLarge ? 'medium' : 'small',
320
322
  cursor: 'pointer',
321
323
  display: 'inline-flex',
322
324
  gap: 'small',
@@ -325,7 +327,7 @@ function useButtonStyles(_ref) {
325
327
  paddingX: iconOnly ? undefined : mapTokens.spacing[size],
326
328
  position: 'relative',
327
329
  width: iconOnly ? mapTokens.size[size] : undefined
328
- }, _objectSpread(_objectSpread({}, transitionColors), {}, {
330
+ }, css), _objectSpread(_objectSpread({}, transitionColors), {}, {
329
331
  // Styles for buttons that aren't disabled.
330
332
  // Using the :not() pseudo-class so we don't have to undo the styles when
331
333
  // the button is disabled.
@@ -364,12 +366,12 @@ function useButtonStyles(_ref) {
364
366
  })];
365
367
  }
366
368
 
367
- var _excluded$1 = ["aria-controls", "aria-describedby", "aria-expanded", "data", "disabled", "id", "loading", "onClick", "prominence", "size", "tone", "type"];
369
+ var _excluded$1 = ["aria-controls", "aria-describedby", "aria-expanded", "data", "disabled", "id", "loading", "onClick", "css", "rounded", "prominence", "size", "tone", "type"];
368
370
  /**
369
371
  * Buttons are used to initialize an action, their label should express what
370
372
  * action will occur when the user interacts with it.
371
373
  */
372
- var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
374
+ var UnthemedButton = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
373
375
  var ariaControls = _ref['aria-controls'],
374
376
  ariaDescribedBy = _ref['aria-describedby'],
375
377
  ariaExpanded = _ref['aria-expanded'],
@@ -379,6 +381,9 @@ var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
379
381
  _ref$loading = _ref.loading,
380
382
  loading = _ref$loading === void 0 ? false : _ref$loading,
381
383
  onClick = _ref.onClick,
384
+ customCss = _ref.css,
385
+ _ref$rounded = _ref.rounded,
386
+ rounded = _ref$rounded === void 0 ? false : _ref$rounded,
382
387
  _ref$prominence = _ref.prominence,
383
388
  prominence = _ref$prominence === void 0 ? 'high' : _ref$prominence,
384
389
  _ref$size = _ref.size,
@@ -389,7 +394,9 @@ var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
389
394
  props = _objectWithoutProperties(_ref, _excluded$1);
390
395
  var iconOnly = Boolean(props.label);
391
396
  var _useButtonStyles = useButtonStyles({
397
+ css: customCss,
392
398
  iconOnly: iconOnly,
399
+ rounded: rounded,
393
400
  size: size,
394
401
  tone: tone,
395
402
  prominence: prominence
@@ -420,6 +427,16 @@ var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
420
427
  })]
421
428
  }));
422
429
  });
430
+ UnthemedButton.displayName = 'UnthemedButton';
431
+ var Button = /*#__PURE__*/react.forwardRef(function (props, ref) {
432
+ var theme$1 = props.theme;
433
+ return jsxRuntime.jsx(theme.ThemeProvider, {
434
+ theme: theme$1,
435
+ children: jsxRuntime.jsx(UnthemedButton, _objectSpread(_objectSpread({}, props), {}, {
436
+ ref: ref
437
+ }))
438
+ });
439
+ });
423
440
  Button.displayName = 'Button';
424
441
  function Loading(_ref2) {
425
442
  var tone = _ref2.tone;
@@ -442,15 +459,18 @@ function Loading(_ref2) {
442
459
  });
443
460
  }
444
461
 
445
- var _excluded = ["data", "href", "target", "id", "prominence", "size", "tone"];
462
+ var _excluded = ["data", "href", "target", "id", "css", "prominence", "rounded", "size", "tone"];
446
463
  /** The appearance of a `Button`, with the semantics of a link. */
447
- var ButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
464
+ var UnthemedButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
448
465
  var data = _ref.data,
449
466
  href = _ref.href,
450
467
  target = _ref.target,
451
468
  id = _ref.id,
469
+ customCss = _ref.css,
452
470
  _ref$prominence = _ref.prominence,
453
471
  prominence = _ref$prominence === void 0 ? 'high' : _ref$prominence,
472
+ _ref$rounded = _ref.rounded,
473
+ rounded = _ref$rounded === void 0 ? false : _ref$rounded,
454
474
  _ref$size = _ref.size,
455
475
  size = _ref$size === void 0 ? 'medium' : _ref$size,
456
476
  _ref$tone = _ref.tone,
@@ -459,8 +479,10 @@ var ButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
459
479
  var LinkComponent = link.useLinkComponent(forwardedRef);
460
480
  var iconOnly = Boolean(consumerProps.label);
461
481
  var _useButtonStyles = useButtonStyles({
482
+ css: customCss,
462
483
  iconOnly: iconOnly,
463
484
  prominence: prominence,
485
+ rounded: rounded,
464
486
  size: size,
465
487
  tone: tone
466
488
  }),
@@ -485,6 +507,15 @@ var ButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
485
507
  }))
486
508
  }));
487
509
  });
510
+ var ButtonLink = ts.forwardRefWithAs(function (props, ref) {
511
+ var theme$1 = props.theme;
512
+ return jsxRuntime.jsx(theme.ThemeProvider, {
513
+ theme: theme$1,
514
+ children: jsxRuntime.jsx(UnthemedButtonLink, _objectSpread(_objectSpread({}, props), {}, {
515
+ forwardedRef: ref
516
+ }))
517
+ });
518
+ });
488
519
 
489
520
  exports.BaseButton = BaseButton;
490
521
  exports.Button = Button;
@@ -12,8 +12,8 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
12
  var react$1 = require('@emotion/react');
13
13
  var a11y = require('@spark-web/a11y');
14
14
  var spinner = require('@spark-web/spinner');
15
- var text = require('@spark-web/text');
16
15
  var theme = require('@spark-web/theme');
16
+ var text = require('@spark-web/text');
17
17
  var link = require('@spark-web/link');
18
18
  var ts = require('@spark-web/utils/ts');
19
19
 
@@ -293,8 +293,10 @@ function HiddenWhenLoading(_ref2) {
293
293
  * passed to Emotion's `css` function.
294
294
  */
295
295
  function useButtonStyles(_ref) {
296
- var iconOnly = _ref.iconOnly,
296
+ var css = _ref.css,
297
+ iconOnly = _ref.iconOnly,
297
298
  prominence = _ref.prominence,
299
+ rounded = _ref.rounded,
298
300
  size = _ref.size,
299
301
  tone = _ref.tone;
300
302
  var theme$1 = theme.useTheme();
@@ -311,12 +313,12 @@ function useButtonStyles(_ref) {
311
313
  transitionTimingFunction: theme$1.animation.standard.easing,
312
314
  transitionDuration: "".concat(theme$1.animation.standard.duration, "ms")
313
315
  };
314
- return [{
316
+ return [_objectSpread({
315
317
  alignItems: 'center',
316
318
  background: variant === null || variant === void 0 ? void 0 : variant.background,
317
319
  border: variant === null || variant === void 0 ? void 0 : variant.border,
318
320
  borderWidth: variant === null || variant === void 0 ? void 0 : variant.borderWidth,
319
- borderRadius: isLarge ? 'medium' : 'small',
321
+ borderRadius: rounded ? 'full' : isLarge ? 'medium' : 'small',
320
322
  cursor: 'pointer',
321
323
  display: 'inline-flex',
322
324
  gap: 'small',
@@ -325,7 +327,7 @@ function useButtonStyles(_ref) {
325
327
  paddingX: iconOnly ? undefined : mapTokens.spacing[size],
326
328
  position: 'relative',
327
329
  width: iconOnly ? mapTokens.size[size] : undefined
328
- }, _objectSpread(_objectSpread({}, transitionColors), {}, {
330
+ }, css), _objectSpread(_objectSpread({}, transitionColors), {}, {
329
331
  // Styles for buttons that aren't disabled.
330
332
  // Using the :not() pseudo-class so we don't have to undo the styles when
331
333
  // the button is disabled.
@@ -364,12 +366,12 @@ function useButtonStyles(_ref) {
364
366
  })];
365
367
  }
366
368
 
367
- var _excluded$1 = ["aria-controls", "aria-describedby", "aria-expanded", "data", "disabled", "id", "loading", "onClick", "prominence", "size", "tone", "type"];
369
+ var _excluded$1 = ["aria-controls", "aria-describedby", "aria-expanded", "data", "disabled", "id", "loading", "onClick", "css", "rounded", "prominence", "size", "tone", "type"];
368
370
  /**
369
371
  * Buttons are used to initialize an action, their label should express what
370
372
  * action will occur when the user interacts with it.
371
373
  */
372
- var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
374
+ var UnthemedButton = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
373
375
  var ariaControls = _ref['aria-controls'],
374
376
  ariaDescribedBy = _ref['aria-describedby'],
375
377
  ariaExpanded = _ref['aria-expanded'],
@@ -379,6 +381,9 @@ var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
379
381
  _ref$loading = _ref.loading,
380
382
  loading = _ref$loading === void 0 ? false : _ref$loading,
381
383
  onClick = _ref.onClick,
384
+ customCss = _ref.css,
385
+ _ref$rounded = _ref.rounded,
386
+ rounded = _ref$rounded === void 0 ? false : _ref$rounded,
382
387
  _ref$prominence = _ref.prominence,
383
388
  prominence = _ref$prominence === void 0 ? 'high' : _ref$prominence,
384
389
  _ref$size = _ref.size,
@@ -389,7 +394,9 @@ var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
389
394
  props = _objectWithoutProperties(_ref, _excluded$1);
390
395
  var iconOnly = Boolean(props.label);
391
396
  var _useButtonStyles = useButtonStyles({
397
+ css: customCss,
392
398
  iconOnly: iconOnly,
399
+ rounded: rounded,
393
400
  size: size,
394
401
  tone: tone,
395
402
  prominence: prominence
@@ -420,6 +427,16 @@ var Button = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
420
427
  })]
421
428
  }));
422
429
  });
430
+ UnthemedButton.displayName = 'UnthemedButton';
431
+ var Button = /*#__PURE__*/react.forwardRef(function (props, ref) {
432
+ var theme$1 = props.theme;
433
+ return jsxRuntime.jsx(theme.ThemeProvider, {
434
+ theme: theme$1,
435
+ children: jsxRuntime.jsx(UnthemedButton, _objectSpread(_objectSpread({}, props), {}, {
436
+ ref: ref
437
+ }))
438
+ });
439
+ });
423
440
  Button.displayName = 'Button';
424
441
  function Loading(_ref2) {
425
442
  var tone = _ref2.tone;
@@ -442,15 +459,18 @@ function Loading(_ref2) {
442
459
  });
443
460
  }
444
461
 
445
- var _excluded = ["data", "href", "target", "id", "prominence", "size", "tone"];
462
+ var _excluded = ["data", "href", "target", "id", "css", "prominence", "rounded", "size", "tone"];
446
463
  /** The appearance of a `Button`, with the semantics of a link. */
447
- var ButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
464
+ var UnthemedButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
448
465
  var data = _ref.data,
449
466
  href = _ref.href,
450
467
  target = _ref.target,
451
468
  id = _ref.id,
469
+ customCss = _ref.css,
452
470
  _ref$prominence = _ref.prominence,
453
471
  prominence = _ref$prominence === void 0 ? 'high' : _ref$prominence,
472
+ _ref$rounded = _ref.rounded,
473
+ rounded = _ref$rounded === void 0 ? false : _ref$rounded,
454
474
  _ref$size = _ref.size,
455
475
  size = _ref$size === void 0 ? 'medium' : _ref$size,
456
476
  _ref$tone = _ref.tone,
@@ -459,8 +479,10 @@ var ButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
459
479
  var LinkComponent = link.useLinkComponent(forwardedRef);
460
480
  var iconOnly = Boolean(consumerProps.label);
461
481
  var _useButtonStyles = useButtonStyles({
482
+ css: customCss,
462
483
  iconOnly: iconOnly,
463
484
  prominence: prominence,
485
+ rounded: rounded,
464
486
  size: size,
465
487
  tone: tone
466
488
  }),
@@ -485,6 +507,15 @@ var ButtonLink = ts.forwardRefWithAs(function (_ref, forwardedRef) {
485
507
  }))
486
508
  }));
487
509
  });
510
+ var ButtonLink = ts.forwardRefWithAs(function (props, ref) {
511
+ var theme$1 = props.theme;
512
+ return jsxRuntime.jsx(theme.ThemeProvider, {
513
+ theme: theme$1,
514
+ children: jsxRuntime.jsx(UnthemedButtonLink, _objectSpread(_objectSpread({}, props), {}, {
515
+ forwardedRef: ref
516
+ }))
517
+ });
518
+ });
488
519
 
489
520
  exports.BaseButton = BaseButton;
490
521
  exports.Button = Button;
@@ -8,8 +8,8 @@ import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
8
8
  import { css } from '@emotion/react';
9
9
  import { useFocusRing, VisuallyHidden } from '@spark-web/a11y';
10
10
  import { Spinner } from '@spark-web/spinner';
11
+ import { useTheme, ThemeProvider } from '@spark-web/theme';
11
12
  import { Text } from '@spark-web/text';
12
- import { useTheme } from '@spark-web/theme';
13
13
  import { useLinkComponent } from '@spark-web/link';
14
14
  import { forwardRefWithAs } from '@spark-web/utils/ts';
15
15
 
@@ -289,8 +289,10 @@ function HiddenWhenLoading(_ref2) {
289
289
  * passed to Emotion's `css` function.
290
290
  */
291
291
  function useButtonStyles(_ref) {
292
- var iconOnly = _ref.iconOnly,
292
+ var css = _ref.css,
293
+ iconOnly = _ref.iconOnly,
293
294
  prominence = _ref.prominence,
295
+ rounded = _ref.rounded,
294
296
  size = _ref.size,
295
297
  tone = _ref.tone;
296
298
  var theme = useTheme();
@@ -307,12 +309,12 @@ function useButtonStyles(_ref) {
307
309
  transitionTimingFunction: theme.animation.standard.easing,
308
310
  transitionDuration: "".concat(theme.animation.standard.duration, "ms")
309
311
  };
310
- return [{
312
+ return [_objectSpread({
311
313
  alignItems: 'center',
312
314
  background: variant === null || variant === void 0 ? void 0 : variant.background,
313
315
  border: variant === null || variant === void 0 ? void 0 : variant.border,
314
316
  borderWidth: variant === null || variant === void 0 ? void 0 : variant.borderWidth,
315
- borderRadius: isLarge ? 'medium' : 'small',
317
+ borderRadius: rounded ? 'full' : isLarge ? 'medium' : 'small',
316
318
  cursor: 'pointer',
317
319
  display: 'inline-flex',
318
320
  gap: 'small',
@@ -321,7 +323,7 @@ function useButtonStyles(_ref) {
321
323
  paddingX: iconOnly ? undefined : mapTokens.spacing[size],
322
324
  position: 'relative',
323
325
  width: iconOnly ? mapTokens.size[size] : undefined
324
- }, _objectSpread(_objectSpread({}, transitionColors), {}, {
326
+ }, css), _objectSpread(_objectSpread({}, transitionColors), {}, {
325
327
  // Styles for buttons that aren't disabled.
326
328
  // Using the :not() pseudo-class so we don't have to undo the styles when
327
329
  // the button is disabled.
@@ -360,12 +362,12 @@ function useButtonStyles(_ref) {
360
362
  })];
361
363
  }
362
364
 
363
- var _excluded$1 = ["aria-controls", "aria-describedby", "aria-expanded", "data", "disabled", "id", "loading", "onClick", "prominence", "size", "tone", "type"];
365
+ var _excluded$1 = ["aria-controls", "aria-describedby", "aria-expanded", "data", "disabled", "id", "loading", "onClick", "css", "rounded", "prominence", "size", "tone", "type"];
364
366
  /**
365
367
  * Buttons are used to initialize an action, their label should express what
366
368
  * action will occur when the user interacts with it.
367
369
  */
368
- var Button = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
370
+ var UnthemedButton = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
369
371
  var ariaControls = _ref['aria-controls'],
370
372
  ariaDescribedBy = _ref['aria-describedby'],
371
373
  ariaExpanded = _ref['aria-expanded'],
@@ -375,6 +377,9 @@ var Button = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
375
377
  _ref$loading = _ref.loading,
376
378
  loading = _ref$loading === void 0 ? false : _ref$loading,
377
379
  onClick = _ref.onClick,
380
+ customCss = _ref.css,
381
+ _ref$rounded = _ref.rounded,
382
+ rounded = _ref$rounded === void 0 ? false : _ref$rounded,
378
383
  _ref$prominence = _ref.prominence,
379
384
  prominence = _ref$prominence === void 0 ? 'high' : _ref$prominence,
380
385
  _ref$size = _ref.size,
@@ -385,7 +390,9 @@ var Button = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
385
390
  props = _objectWithoutProperties(_ref, _excluded$1);
386
391
  var iconOnly = Boolean(props.label);
387
392
  var _useButtonStyles = useButtonStyles({
393
+ css: customCss,
388
394
  iconOnly: iconOnly,
395
+ rounded: rounded,
389
396
  size: size,
390
397
  tone: tone,
391
398
  prominence: prominence
@@ -416,6 +423,16 @@ var Button = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
416
423
  })]
417
424
  }));
418
425
  });
426
+ UnthemedButton.displayName = 'UnthemedButton';
427
+ var Button = /*#__PURE__*/forwardRef(function (props, ref) {
428
+ var theme = props.theme;
429
+ return jsx(ThemeProvider, {
430
+ theme: theme,
431
+ children: jsx(UnthemedButton, _objectSpread(_objectSpread({}, props), {}, {
432
+ ref: ref
433
+ }))
434
+ });
435
+ });
419
436
  Button.displayName = 'Button';
420
437
  function Loading(_ref2) {
421
438
  var tone = _ref2.tone;
@@ -438,15 +455,18 @@ function Loading(_ref2) {
438
455
  });
439
456
  }
440
457
 
441
- var _excluded = ["data", "href", "target", "id", "prominence", "size", "tone"];
458
+ var _excluded = ["data", "href", "target", "id", "css", "prominence", "rounded", "size", "tone"];
442
459
  /** The appearance of a `Button`, with the semantics of a link. */
443
- var ButtonLink = forwardRefWithAs(function (_ref, forwardedRef) {
460
+ var UnthemedButtonLink = forwardRefWithAs(function (_ref, forwardedRef) {
444
461
  var data = _ref.data,
445
462
  href = _ref.href,
446
463
  target = _ref.target,
447
464
  id = _ref.id,
465
+ customCss = _ref.css,
448
466
  _ref$prominence = _ref.prominence,
449
467
  prominence = _ref$prominence === void 0 ? 'high' : _ref$prominence,
468
+ _ref$rounded = _ref.rounded,
469
+ rounded = _ref$rounded === void 0 ? false : _ref$rounded,
450
470
  _ref$size = _ref.size,
451
471
  size = _ref$size === void 0 ? 'medium' : _ref$size,
452
472
  _ref$tone = _ref.tone,
@@ -455,8 +475,10 @@ var ButtonLink = forwardRefWithAs(function (_ref, forwardedRef) {
455
475
  var LinkComponent = useLinkComponent(forwardedRef);
456
476
  var iconOnly = Boolean(consumerProps.label);
457
477
  var _useButtonStyles = useButtonStyles({
478
+ css: customCss,
458
479
  iconOnly: iconOnly,
459
480
  prominence: prominence,
481
+ rounded: rounded,
460
482
  size: size,
461
483
  tone: tone
462
484
  }),
@@ -481,5 +503,14 @@ var ButtonLink = forwardRefWithAs(function (_ref, forwardedRef) {
481
503
  }))
482
504
  }));
483
505
  });
506
+ var ButtonLink = forwardRefWithAs(function (props, ref) {
507
+ var theme = props.theme;
508
+ return jsx(ThemeProvider, {
509
+ theme: theme,
510
+ children: jsx(UnthemedButtonLink, _objectSpread(_objectSpread({}, props), {}, {
511
+ forwardedRef: ref
512
+ }))
513
+ });
514
+ });
484
515
 
485
516
  export { BaseButton, Button, ButtonLink, useButtonStyles };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spark-web/button",
3
- "version": "2.0.0-rc.9",
3
+ "version": "5.0.0-rc.24",
4
4
  "homepage": "https://github.com/brighte-labs/spark-web#readme",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,14 +17,14 @@
17
17
  "dependencies": {
18
18
  "@babel/runtime": "^7.25.0",
19
19
  "@emotion/react": "^11.14.0",
20
- "@spark-web/a11y": "^2.0.0-rc.9",
21
- "@spark-web/box": "^2.0.0-rc.9",
22
- "@spark-web/icon": "^2.0.0-rc.9",
23
- "@spark-web/link": "^2.0.0-rc.9",
24
- "@spark-web/spinner": "^2.0.0-rc.9",
25
- "@spark-web/text": "^2.0.0-rc.9",
26
- "@spark-web/theme": "^4.0.0-rc.9",
27
- "@spark-web/utils": "^2.0.0-rc.9"
20
+ "@spark-web/a11y": "^5.0.0-rc.24",
21
+ "@spark-web/box": "^5.0.0-rc.24",
22
+ "@spark-web/icon": "^5.0.0-rc.24",
23
+ "@spark-web/link": "^5.0.0-rc.24",
24
+ "@spark-web/spinner": "^5.0.0-rc.24",
25
+ "@spark-web/text": "^5.0.0-rc.24",
26
+ "@spark-web/theme": "^5.0.0-rc.24",
27
+ "@spark-web/utils": "^5.0.0-rc.24"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/react": "^18.2.0",