@dnanpm/ui-components 0.5.0 → 0.7.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.
Files changed (161) hide show
  1. package/README.md +3 -1
  2. package/dist/components/Accordion/Accordion.css +4 -4
  3. package/dist/components/Accordion/Accordion.module.css.cjs +3 -3
  4. package/dist/components/Accordion/Accordion.module.css.js +3 -3
  5. package/dist/components/AccordionItem/AccordionItem.css +19 -19
  6. package/dist/components/AccordionItem/AccordionItem.module.css.cjs +11 -11
  7. package/dist/components/AccordionItem/AccordionItem.module.css.js +11 -11
  8. package/dist/components/Breadcrumb/Breadcrumb.css +11 -12
  9. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
  10. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
  11. package/dist/components/Button/Button.cjs +3 -1
  12. package/dist/components/Button/Button.cjs.map +1 -1
  13. package/dist/components/Button/Button.css +33 -33
  14. package/dist/components/Button/Button.d.ts.map +1 -1
  15. package/dist/components/Button/Button.js +3 -1
  16. package/dist/components/Button/Button.js.map +1 -1
  17. package/dist/components/Button/Button.module.css.cjs +11 -11
  18. package/dist/components/Button/Button.module.css.js +11 -11
  19. package/dist/components/Footer/Footer.cjs +272 -0
  20. package/dist/components/Footer/Footer.cjs.map +1 -0
  21. package/dist/components/Footer/Footer.css +466 -0
  22. package/dist/components/Footer/Footer.d.ts +3 -0
  23. package/dist/components/Footer/Footer.d.ts.map +1 -0
  24. package/dist/components/Footer/Footer.js +272 -0
  25. package/dist/components/Footer/Footer.js.map +1 -0
  26. package/dist/components/Footer/Footer.module.css.cjs +80 -0
  27. package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
  28. package/dist/components/Footer/Footer.module.css.js +80 -0
  29. package/dist/components/Footer/Footer.module.css.js.map +1 -0
  30. package/dist/components/Footer/Footer.types.d.ts +128 -0
  31. package/dist/components/Footer/Footer.types.d.ts.map +1 -0
  32. package/dist/components/Footer/Footer.utils.cjs +41 -0
  33. package/dist/components/Footer/Footer.utils.cjs.map +1 -0
  34. package/dist/components/Footer/Footer.utils.d.ts +13 -0
  35. package/dist/components/Footer/Footer.utils.d.ts.map +1 -0
  36. package/dist/components/Footer/Footer.utils.js +41 -0
  37. package/dist/components/Footer/Footer.utils.js.map +1 -0
  38. package/dist/components/Footer/assets/app-store-badge.svg.cjs +4 -0
  39. package/dist/components/Footer/assets/app-store-badge.svg.cjs.map +1 -0
  40. package/dist/components/Footer/assets/app-store-badge.svg.js +5 -0
  41. package/dist/components/Footer/assets/app-store-badge.svg.js.map +1 -0
  42. package/dist/components/Footer/assets/google-play-badge.svg.cjs +4 -0
  43. package/dist/components/Footer/assets/google-play-badge.svg.cjs.map +1 -0
  44. package/dist/components/Footer/assets/google-play-badge.svg.js +5 -0
  45. package/dist/components/Footer/assets/google-play-badge.svg.js.map +1 -0
  46. package/dist/components/Footer/index.d.ts +3 -0
  47. package/dist/components/Footer/index.d.ts.map +1 -0
  48. package/dist/components/Hero/Hero.cjs +31 -26
  49. package/dist/components/Hero/Hero.cjs.map +1 -1
  50. package/dist/components/Hero/Hero.css +96 -103
  51. package/dist/components/Hero/Hero.d.ts +1 -1
  52. package/dist/components/Hero/Hero.d.ts.map +1 -1
  53. package/dist/components/Hero/Hero.js +32 -27
  54. package/dist/components/Hero/Hero.js.map +1 -1
  55. package/dist/components/Hero/Hero.module.css.cjs +17 -19
  56. package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
  57. package/dist/components/Hero/Hero.module.css.js +17 -19
  58. package/dist/components/Hero/Hero.module.css.js.map +1 -1
  59. package/dist/components/Hero/Hero.types.d.ts +9 -8
  60. package/dist/components/Hero/Hero.types.d.ts.map +1 -1
  61. package/dist/components/Hero/Hero.utils.cjs +5 -7
  62. package/dist/components/Hero/Hero.utils.cjs.map +1 -1
  63. package/dist/components/Hero/Hero.utils.d.ts +2 -2
  64. package/dist/components/Hero/Hero.utils.d.ts.map +1 -1
  65. package/dist/components/Hero/Hero.utils.js +5 -7
  66. package/dist/components/Hero/Hero.utils.js.map +1 -1
  67. package/dist/components/IconButton/IconButton.cjs +21 -5
  68. package/dist/components/IconButton/IconButton.cjs.map +1 -1
  69. package/dist/components/IconButton/IconButton.css +87 -83
  70. package/dist/components/IconButton/IconButton.d.ts +1 -1
  71. package/dist/components/IconButton/IconButton.d.ts.map +1 -1
  72. package/dist/components/IconButton/IconButton.js +22 -6
  73. package/dist/components/IconButton/IconButton.js.map +1 -1
  74. package/dist/components/IconButton/IconButton.module.css.cjs +9 -10
  75. package/dist/components/IconButton/IconButton.module.css.cjs.map +1 -1
  76. package/dist/components/IconButton/IconButton.module.css.js +9 -10
  77. package/dist/components/IconButton/IconButton.module.css.js.map +1 -1
  78. package/dist/components/IconButton/IconButton.types.d.ts +15 -10
  79. package/dist/components/IconButton/IconButton.types.d.ts.map +1 -1
  80. package/dist/components/IconButton/index.d.ts +1 -1
  81. package/dist/components/IconButton/index.d.ts.map +1 -1
  82. package/dist/components/Label/Label.css +13 -8
  83. package/dist/components/Label/Label.module.css.cjs +7 -7
  84. package/dist/components/Label/Label.module.css.js +7 -7
  85. package/dist/components/MainNavigation/MainNavigation.cjs +1110 -0
  86. package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -0
  87. package/dist/components/MainNavigation/MainNavigation.css +946 -0
  88. package/dist/components/MainNavigation/MainNavigation.d.ts +3 -0
  89. package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -0
  90. package/dist/components/MainNavigation/MainNavigation.js +1110 -0
  91. package/dist/components/MainNavigation/MainNavigation.js.map +1 -0
  92. package/dist/components/MainNavigation/MainNavigation.module.css.cjs +74 -0
  93. package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -0
  94. package/dist/components/MainNavigation/MainNavigation.module.css.js +75 -0
  95. package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -0
  96. package/dist/components/MainNavigation/MainNavigation.types.d.ts +149 -0
  97. package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -0
  98. package/dist/components/MainNavigation/MainNavigation.utils.cjs +168 -0
  99. package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -0
  100. package/dist/components/MainNavigation/MainNavigation.utils.d.ts +29 -0
  101. package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -0
  102. package/dist/components/MainNavigation/MainNavigation.utils.js +168 -0
  103. package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -0
  104. package/dist/components/MainNavigation/index.d.ts +3 -0
  105. package/dist/components/MainNavigation/index.d.ts.map +1 -0
  106. package/dist/components/Notification/Notification.css +14 -14
  107. package/dist/components/Notification/Notification.module.css.cjs +9 -9
  108. package/dist/components/Notification/Notification.module.css.js +9 -9
  109. package/dist/components/Pictograph/Pictograph.css +69 -57
  110. package/dist/components/Pictograph/Pictograph.module.css.cjs +11 -11
  111. package/dist/components/Pictograph/Pictograph.module.css.js +11 -11
  112. package/dist/components/Pictograph/Pictograph.types.d.ts +2 -2
  113. package/dist/components/Pictograph/PictographItem.cjs +15 -4
  114. package/dist/components/Pictograph/PictographItem.cjs.map +1 -1
  115. package/dist/components/Pictograph/PictographItem.css +26 -23
  116. package/dist/components/Pictograph/PictographItem.d.ts.map +1 -1
  117. package/dist/components/Pictograph/PictographItem.js +15 -4
  118. package/dist/components/Pictograph/PictographItem.js.map +1 -1
  119. package/dist/components/Pictograph/PictographItem.module.css.cjs +3 -3
  120. package/dist/components/Pictograph/PictographItem.module.css.js +3 -3
  121. package/dist/components/Quote/Quote.cjs +32 -0
  122. package/dist/components/Quote/Quote.cjs.map +1 -0
  123. package/dist/components/Quote/Quote.css +95 -0
  124. package/dist/components/Quote/Quote.d.ts +3 -0
  125. package/dist/components/Quote/Quote.d.ts.map +1 -0
  126. package/dist/components/Quote/Quote.js +32 -0
  127. package/dist/components/Quote/Quote.js.map +1 -0
  128. package/dist/components/Quote/Quote.module.css.cjs +22 -0
  129. package/dist/components/Quote/Quote.module.css.cjs.map +1 -0
  130. package/dist/components/Quote/Quote.module.css.js +22 -0
  131. package/dist/components/Quote/Quote.module.css.js.map +1 -0
  132. package/dist/components/Quote/Quote.types.d.ts +12 -0
  133. package/dist/components/Quote/Quote.types.d.ts.map +1 -0
  134. package/dist/components/Quote/index.d.ts +3 -0
  135. package/dist/components/Quote/index.d.ts.map +1 -0
  136. package/dist/index.cjs +6 -0
  137. package/dist/index.cjs.map +1 -1
  138. package/dist/index.d.ts +7 -1
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +6 -0
  141. package/dist/index.js.map +1 -1
  142. package/dist/styles/utils/elevation.css +20 -17
  143. package/dist/styles/utils/elevation.module.css.cjs +4 -4
  144. package/dist/styles/utils/elevation.module.css.js +4 -4
  145. package/dist/styles/utils/focus.css +23 -14
  146. package/dist/styles/utils/focus.module.css.cjs +6 -3
  147. package/dist/styles/utils/focus.module.css.cjs.map +1 -1
  148. package/dist/styles/utils/focus.module.css.js +7 -4
  149. package/dist/styles/utils/focus.module.css.js.map +1 -1
  150. package/dist/styles/utils/overlay.css +37 -0
  151. package/dist/styles/utils/overlay.module.css.cjs +13 -0
  152. package/dist/styles/utils/overlay.module.css.cjs.map +1 -0
  153. package/dist/styles/utils/overlay.module.css.js +13 -0
  154. package/dist/styles/utils/overlay.module.css.js.map +1 -0
  155. package/dist/styles/utils/text-decoration.css +8 -1
  156. package/dist/styles/utils/text-decoration.module.css.cjs +5 -2
  157. package/dist/styles/utils/text-decoration.module.css.cjs.map +1 -1
  158. package/dist/styles/utils/text-decoration.module.css.js +6 -3
  159. package/dist/styles/utils/text-decoration.module.css.js.map +1 -1
  160. package/dist/styles.css +141 -92
  161. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Hero.utils.cjs","sources":["../../../src/components/Hero/Hero.utils.ts"],"sourcesContent":["import styles from './Hero.module.css';\nimport type { HeroHeadingLevel } from './Hero.types';\n\nexport const headingClassByLevel: Record<HeroHeadingLevel, string> = {\n h1: styles['hero__heading--xl'],\n h2: styles['hero__heading--lg'],\n h3: styles['hero__heading--md'],\n h4: styles['hero__heading--sm'],\n h5: styles['hero__heading--xs'],\n};\n"],"names":["styles"],"mappings":";;;AAGO,MAAM,sBAAwD;AAAA,EACjE,IAAIA,YAAAA,QAAO,mBAAmB;AAAA,EAC9B,IAAIA,YAAAA,QAAO,mBAAmB;AAAA,EAC9B,IAAIA,YAAAA,QAAO,mBAAmB;AAAA,EAC9B,IAAIA,YAAAA,QAAO,mBAAmB;AAAA,EAC9B,IAAIA,YAAAA,QAAO,mBAAmB;AAClC;;"}
1
+ {"version":3,"file":"Hero.utils.cjs","sources":["../../../src/components/Hero/Hero.utils.ts"],"sourcesContent":["import styles from './Hero.module.css';\nimport type { HeroHeadingStyle } from './Hero.types';\n\nexport const headingClassByStyle: Record<HeroHeadingStyle, string> = {\n default: styles['hero__heading--default'],\n large: styles['hero__heading--large'],\n small: styles['hero__heading--small'],\n};\n"],"names":["styles"],"mappings":";;;AAGO,MAAM,sBAAwD;AAAA,EACjE,SAASA,YAAAA,QAAO,wBAAwB;AAAA,EACxC,OAAOA,YAAAA,QAAO,sBAAsB;AAAA,EACpC,OAAOA,YAAAA,QAAO,sBAAsB;AACxC;;"}
@@ -1,3 +1,3 @@
1
- import { HeroHeadingLevel } from './Hero.types';
2
- export declare const headingClassByLevel: Record<HeroHeadingLevel, string>;
1
+ import { HeroHeadingStyle } from './Hero.types';
2
+ export declare const headingClassByStyle: Record<HeroHeadingStyle, string>;
3
3
  //# sourceMappingURL=Hero.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hero.utils.d.ts","sourceRoot":"","sources":["../../../src/components/Hero/Hero.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAMhE,CAAC"}
1
+ {"version":3,"file":"Hero.utils.d.ts","sourceRoot":"","sources":["../../../src/components/Hero/Hero.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAIhE,CAAC"}
@@ -1,12 +1,10 @@
1
1
  import styles from "./Hero.module.css.js";
2
- const headingClassByLevel = {
3
- h1: styles["hero__heading--xl"],
4
- h2: styles["hero__heading--lg"],
5
- h3: styles["hero__heading--md"],
6
- h4: styles["hero__heading--sm"],
7
- h5: styles["hero__heading--xs"]
2
+ const headingClassByStyle = {
3
+ default: styles["hero__heading--default"],
4
+ large: styles["hero__heading--large"],
5
+ small: styles["hero__heading--small"]
8
6
  };
9
7
  export {
10
- headingClassByLevel
8
+ headingClassByStyle
11
9
  };
12
10
  //# sourceMappingURL=Hero.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Hero.utils.js","sources":["../../../src/components/Hero/Hero.utils.ts"],"sourcesContent":["import styles from './Hero.module.css';\nimport type { HeroHeadingLevel } from './Hero.types';\n\nexport const headingClassByLevel: Record<HeroHeadingLevel, string> = {\n h1: styles['hero__heading--xl'],\n h2: styles['hero__heading--lg'],\n h3: styles['hero__heading--md'],\n h4: styles['hero__heading--sm'],\n h5: styles['hero__heading--xs'],\n};\n"],"names":[],"mappings":";AAGO,MAAM,sBAAwD;AAAA,EACjE,IAAI,OAAO,mBAAmB;AAAA,EAC9B,IAAI,OAAO,mBAAmB;AAAA,EAC9B,IAAI,OAAO,mBAAmB;AAAA,EAC9B,IAAI,OAAO,mBAAmB;AAAA,EAC9B,IAAI,OAAO,mBAAmB;AAClC;"}
1
+ {"version":3,"file":"Hero.utils.js","sources":["../../../src/components/Hero/Hero.utils.ts"],"sourcesContent":["import styles from './Hero.module.css';\nimport type { HeroHeadingStyle } from './Hero.types';\n\nexport const headingClassByStyle: Record<HeroHeadingStyle, string> = {\n default: styles['hero__heading--default'],\n large: styles['hero__heading--large'],\n small: styles['hero__heading--small'],\n};\n"],"names":[],"mappings":";AAGO,MAAM,sBAAwD;AAAA,EACjE,SAAS,OAAO,wBAAwB;AAAA,EACxC,OAAO,OAAO,sBAAsB;AAAA,EACpC,OAAO,OAAO,sBAAsB;AACxC;"}
@@ -2,15 +2,17 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const focus_module = require("../../styles/utils/focus.module.css.cjs");
5
+ const textDecoration_module = require("../../styles/utils/text-decoration.module.css.cjs");
5
6
  const IconButton_module = require("./IconButton.module.css.cjs");
6
7
  const cn = require("../../utils/cn/cn.cjs");
7
8
  const Spinner = require("../Spinner/Spinner.cjs");
8
9
  const IconButton = ({
9
- variant = "default",
10
10
  icon,
11
11
  iconPosition = "start",
12
+ labelBehavior = "truncate",
12
13
  size = "normal",
13
14
  loading = false,
15
+ linkColoring = false,
14
16
  className,
15
17
  children,
16
18
  ref,
@@ -20,15 +22,15 @@ const IconButton = ({
20
22
  const isAnchor = "href" in props && props.href != null;
21
23
  const classes = cn.cn(
22
24
  IconButton_module["icon-button"],
23
- IconButton_module[`icon-button--${variant}`],
24
25
  IconButton_module[`icon-button--${size}`],
25
26
  focus_module.default.focusable,
26
27
  { [IconButton_module["icon-button--disabled"]]: isDisabled },
27
28
  { [IconButton_module["icon-button--loading"]]: loading },
29
+ { [IconButton_module["icon-button--link-coloring"]]: linkColoring },
28
30
  className
29
31
  );
30
32
  const Icon = icon;
31
- const iconSlot = loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: IconButton_module["icon-button__spinner"], "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
33
+ const iconSlot = loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: IconButton_module["icon-button__icon"], "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
32
34
  Spinner.Spinner,
33
35
  {
34
36
  size: size === "small" ? "xs" : "s",
@@ -39,7 +41,15 @@ const IconButton = ({
39
41
  ) }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: IconButton_module["icon-button__icon"], "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { "aria-hidden": "true" }) });
40
42
  const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
41
43
  iconPosition === "start" && iconSlot,
42
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: IconButton_module["icon-button__label"], children }),
44
+ /* @__PURE__ */ jsxRuntime.jsx(
45
+ "span",
46
+ {
47
+ className: cn.cn(IconButton_module["icon-button__label"], textDecoration_module.default.underlineLink, {
48
+ [IconButton_module["icon-button__label--wrap"]]: labelBehavior === "wrap"
49
+ }),
50
+ children
51
+ }
52
+ ),
43
53
  iconPosition === "end" && iconSlot
44
54
  ] });
45
55
  if (isAnchor) {
@@ -69,7 +79,7 @@ const IconButton = ({
69
79
  className: classes,
70
80
  "aria-busy": loading || void 0,
71
81
  "aria-disabled": loading || void 0,
72
- tabIndex: loading ? -1 : void 0,
82
+ tabIndex: loading ? -1 : safeAnchorProps.tabIndex,
73
83
  onClick: loading ? (e) => {
74
84
  e.preventDefault();
75
85
  e.stopPropagation();
@@ -84,6 +94,7 @@ const IconButton = ({
84
94
  const {
85
95
  type = "button",
86
96
  disabled,
97
+ onClick,
87
98
  href: _href,
88
99
  target: _target,
89
100
  rel: _rel,
@@ -97,7 +108,12 @@ const IconButton = ({
97
108
  type,
98
109
  disabled: disabled || loading,
99
110
  className: classes,
111
+ "aria-disabled": loading || void 0,
100
112
  "aria-busy": loading || void 0,
113
+ onClick: loading ? (e) => {
114
+ e.preventDefault();
115
+ e.stopPropagation();
116
+ } : onClick,
101
117
  ...buttonProps,
102
118
  children: content
103
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.cjs","sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, MouseEvent, ReactNode, Ref } from 'react';\nimport { cn } from '../../utils/cn';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport { Spinner } from '../Spinner';\nimport styles from './IconButton.module.css';\nimport type { IconButtonProps } from './IconButton.types';\n\nexport const IconButton = ({\n variant = 'default',\n icon,\n iconPosition = 'start',\n size = 'normal',\n loading = false,\n className,\n children,\n ref,\n ...props\n}: IconButtonProps) => {\n const isDisabled = 'disabled' in props && props.disabled;\n const isAnchor = 'href' in props && props.href != null;\n\n const classes = cn(\n styles['icon-button'],\n styles[`icon-button--${variant}`],\n styles[`icon-button--${size}`],\n focusStyles.focusable,\n { [styles['icon-button--disabled']]: isDisabled },\n { [styles['icon-button--loading']]: loading },\n className,\n );\n\n const Icon = icon;\n\n const iconSlot = loading ? (\n <span className={styles['icon-button__spinner']} aria-hidden=\"true\">\n <Spinner\n size={size === 'small' ? 'xs' : 's'}\n color=\"inherit\"\n aria-hidden=\"true\"\n role=\"presentation\"\n />\n </span>\n ) : (\n <span className={styles['icon-button__icon']} aria-hidden=\"true\">\n <Icon aria-hidden=\"true\" />\n </span>\n );\n\n const content = (\n <>\n {iconPosition === 'start' && iconSlot}\n <span className={styles['icon-button__label']}>{children}</span>\n {iconPosition === 'end' && iconSlot}\n </>\n );\n\n if (isAnchor) {\n const { href, renderLink, ...anchorProps } = props as Omit<\n typeof props,\n 'variant' | 'icon' | 'iconPosition' | 'size' | 'loading'\n > & {\n href: string;\n renderLink?: (\n props: AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n children: ReactNode;\n },\n ) => ReactNode;\n };\n\n const {\n disabled: _disabled,\n type: _type,\n name: _name,\n ...safeAnchorProps\n } = anchorProps as typeof anchorProps & {\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n name?: string;\n };\n\n const target = safeAnchorProps.target;\n const rel = safeAnchorProps.rel;\n const shouldHardenRel = target?.toLowerCase() === '_blank';\n const relTokens = new Set(\n (rel ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => token.toLowerCase()),\n );\n\n if (shouldHardenRel) {\n relTokens.add('noopener');\n relTokens.add('noreferrer');\n }\n\n const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(' ') : undefined;\n\n const linkProps = {\n ...safeAnchorProps,\n ref: ref as Ref<HTMLAnchorElement>,\n href,\n rel: hardenedRel,\n className: classes,\n 'aria-busy': loading || undefined,\n 'aria-disabled': loading || undefined,\n tabIndex: loading ? -1 : undefined,\n onClick: loading\n ? (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : safeAnchorProps.onClick,\n children: content,\n };\n\n if (renderLink) {\n return <>{renderLink(linkProps)}</>;\n }\n\n return <a {...linkProps} />;\n }\n\n const {\n type = 'button',\n disabled,\n href: _href,\n target: _target,\n rel: _rel,\n renderLink: _renderLink,\n ...buttonProps\n } = props as Omit<\n typeof props,\n 'variant' | 'icon' | 'iconPosition' | 'size' | 'loading' | 'href'\n > & {\n type?: 'button' | 'submit' | 'reset';\n disabled?: boolean;\n href?: string;\n target?: string;\n rel?: string;\n renderLink?: unknown;\n };\n\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n disabled={disabled || loading}\n className={classes}\n aria-busy={loading || undefined}\n {...buttonProps}\n >\n {content}\n </button>\n );\n};\n"],"names":["cn","styles","focusStyles","jsx","Spinner","jsxs","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"IconButton.cjs","sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, MouseEvent, ReactNode, Ref } from 'react';\nimport { cn } from '../../utils/cn';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport textDecorationStyles from '../../styles/utils/text-decoration.module.css';\nimport { Spinner } from '../Spinner';\nimport styles from './IconButton.module.css';\nimport type { IconButtonProps } from './IconButton.types';\n\nexport const IconButton = ({\n icon,\n iconPosition = 'start',\n labelBehavior = 'truncate',\n size = 'normal',\n loading = false,\n linkColoring = false,\n className,\n children,\n ref,\n ...props\n}: IconButtonProps) => {\n const isDisabled = 'disabled' in props && props.disabled;\n const isAnchor = 'href' in props && props.href != null;\n\n const classes = cn(\n styles['icon-button'],\n styles[`icon-button--${size}`],\n focusStyles.focusable,\n { [styles['icon-button--disabled']]: isDisabled },\n { [styles['icon-button--loading']]: loading },\n { [styles['icon-button--link-coloring']]: linkColoring },\n className,\n );\n\n const Icon = icon;\n\n const iconSlot = loading ? (\n <span className={styles['icon-button__icon']} aria-hidden=\"true\">\n <Spinner\n size={size === 'small' ? 'xs' : 's'}\n color=\"inherit\"\n aria-hidden=\"true\"\n role=\"presentation\"\n />\n </span>\n ) : (\n <span className={styles['icon-button__icon']} aria-hidden=\"true\">\n <Icon aria-hidden=\"true\" />\n </span>\n );\n\n const content = (\n <>\n {iconPosition === 'start' && iconSlot}\n <span\n className={cn(styles['icon-button__label'], textDecorationStyles.underlineLink, {\n [styles['icon-button__label--wrap']]: labelBehavior === 'wrap',\n })}\n >\n {children}\n </span>\n {iconPosition === 'end' && iconSlot}\n </>\n );\n\n if (isAnchor) {\n const { href, renderLink, ...anchorProps } = props as Omit<\n typeof props,\n 'icon' | 'iconPosition' | 'size' | 'loading' | 'linkColoring'\n > & {\n href: string;\n renderLink?: (\n props: AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n children: ReactNode;\n },\n ) => ReactNode;\n };\n\n const {\n disabled: _disabled,\n type: _type,\n name: _name,\n ...safeAnchorProps\n } = anchorProps as typeof anchorProps & {\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n name?: string;\n };\n\n const target = safeAnchorProps.target;\n const rel = safeAnchorProps.rel;\n const shouldHardenRel = target?.toLowerCase() === '_blank';\n const relTokens = new Set(\n (rel ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => token.toLowerCase()),\n );\n\n if (shouldHardenRel) {\n relTokens.add('noopener');\n relTokens.add('noreferrer');\n }\n\n const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(' ') : undefined;\n\n const linkProps = {\n ...safeAnchorProps,\n ref: ref as Ref<HTMLAnchorElement>,\n href,\n rel: hardenedRel,\n className: classes,\n 'aria-busy': loading || undefined,\n 'aria-disabled': loading || undefined,\n tabIndex: loading ? -1 : safeAnchorProps.tabIndex,\n onClick: loading\n ? (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : safeAnchorProps.onClick,\n children: content,\n };\n\n if (renderLink) {\n return <>{renderLink(linkProps)}</>;\n }\n\n return <a {...linkProps} />;\n }\n\n const {\n type = 'button',\n disabled,\n onClick,\n href: _href,\n target: _target,\n rel: _rel,\n renderLink: _renderLink,\n ...buttonProps\n } = props as Omit<\n typeof props,\n 'icon' | 'iconPosition' | 'size' | 'loading' | 'href' | 'linkColoring'\n > & {\n type?: 'button' | 'submit' | 'reset';\n disabled?: boolean;\n href?: string;\n target?: string;\n rel?: string;\n renderLink?: unknown;\n };\n\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n disabled={disabled || loading}\n className={classes}\n aria-disabled={loading || undefined}\n aria-busy={loading || undefined}\n onClick={\n loading\n ? (e) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : onClick\n }\n {...buttonProps}\n >\n {content}\n </button>\n );\n};\n"],"names":["cn","styles","focusStyles","jsx","Spinner","jsxs","Fragment","textDecorationStyles"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- @layer dds-components {._icon-button_1dpxf_1 {
1
+ @layer dds-components {._icon-button_1iv9h_1 {
2
2
  --_button-icon-size: 24px;
3
3
 
4
4
  display: inline-flex;
5
5
  align-items: center;
6
6
  justify-content: center;
7
- gap: var(--spacing-ui-xs);
7
+ gap: var(--spacing-space-8);
8
8
  max-width: 100%;
9
9
  min-width: 0;
10
10
  border: none;
@@ -20,26 +20,37 @@
20
20
  text-decoration-color 0.2s ease-in-out;
21
21
  }
22
22
 
23
- ._icon-button--normal_1dpxf_23 {
23
+ ._icon-button--normal_1iv9h_23 {
24
24
  font: var(--typography-label-lg-bold);
25
25
  --_button-icon-size: 24px;
26
26
  }
27
27
 
28
- ._icon-button--small_1dpxf_28 {
28
+ ._icon-button--small_1iv9h_28 {
29
29
  font: var(--typography-label-md-bold);
30
30
  --_button-icon-size: 20px;
31
31
  }
32
32
 
33
- ._icon-button__label_1dpxf_33 {
33
+ ._icon-button__label_1iv9h_33 {
34
34
  flex: 0 1 auto;
35
35
  min-width: 0;
36
36
  overflow: hidden;
37
37
  text-overflow: ellipsis;
38
38
  white-space: nowrap;
39
+ text-decoration-color: transparent;
40
+ transition: text-decoration-color 0.2s ease-in-out;
41
+ /* exception: override line-height from font shorthand to prevent underline/descender clipping */
42
+ line-height: var(--typography-line-height-md);
39
43
  }
40
44
 
41
- ._icon-button__icon_1dpxf_41,
42
- ._icon-button__spinner_1dpxf_42 {
45
+ ._icon-button__label--wrap_1iv9h_45 {
46
+ overflow: visible;
47
+ text-overflow: clip;
48
+ white-space: normal;
49
+ overflow-wrap: anywhere;
50
+ text-align: left;
51
+ }
52
+
53
+ ._icon-button__icon_1iv9h_53 {
43
54
  display: inline-flex;
44
55
  align-items: center;
45
56
  justify-content: center;
@@ -47,129 +58,122 @@
47
58
  width: var(--_button-icon-size);
48
59
  height: var(--_button-icon-size);
49
60
  color: var(--color-semantic-interactive-primary-default);
50
- }
51
61
 
52
- ._icon-button__icon_1dpxf_41 > svg {
53
- width: var(--_button-icon-size);
54
- height: var(--_button-icon-size);
62
+ & > svg {
63
+ width: var(--_button-icon-size);
64
+ height: var(--_button-icon-size);
65
+ }
55
66
  }
56
67
 
57
- ._icon-button_1dpxf_1:hover ._icon-button__label_1dpxf_33,
58
- ._icon-button_1dpxf_1:focus-visible ._icon-button__label_1dpxf_33 {
59
- text-decoration: underline;
60
- }
68
+ /* Shared interaction states */
69
+ ._icon-button_1iv9h_1:hover,
70
+ ._icon-button_1iv9h_1:focus-visible {
71
+ ._icon-button__label_1iv9h_33 {
72
+ text-decoration-color: currentColor;
73
+ }
61
74
 
62
- ._icon-button_1dpxf_1:hover ._icon-button__icon_1dpxf_41,
63
- ._icon-button_1dpxf_1:hover ._icon-button__spinner_1dpxf_42,
64
- ._icon-button_1dpxf_1:focus-visible ._icon-button__icon_1dpxf_41,
65
- ._icon-button_1dpxf_1:focus-visible ._icon-button__spinner_1dpxf_42 {
66
- color: var(--color-semantic-interactive-primary-hover);
75
+ ._icon-button__icon_1iv9h_53 {
76
+ color: var(--color-semantic-interactive-primary-hover);
77
+ }
67
78
  }
68
79
 
69
- ._icon-button_1dpxf_1:active ._icon-button__icon_1dpxf_41,
70
- ._icon-button_1dpxf_1:active ._icon-button__spinner_1dpxf_42 {
80
+ ._icon-button_1iv9h_1:active ._icon-button__icon_1iv9h_53 {
71
81
  color: var(--color-semantic-interactive-primary-active);
72
82
  }
73
83
 
74
- ._icon-button--default_1dpxf_74 {
75
- color: var(--color-semantic-foreground-default);
76
- }
77
-
78
- ._icon-button--link_1dpxf_78 {
84
+ /* Optional link coloring */
85
+ ._icon-button--link-coloring_1iv9h_85 {
79
86
  color: var(--color-semantic-foreground-link);
80
- }
81
87
 
82
- ._icon-button--link_1dpxf_78 ._icon-button__icon_1dpxf_41,
83
- ._icon-button--link_1dpxf_78 ._icon-button__spinner_1dpxf_42 {
84
- color: var(--color-semantic-foreground-link);
85
- }
88
+ ._icon-button__icon_1iv9h_53 {
89
+ color: var(--color-semantic-foreground-link);
90
+ }
86
91
 
87
- ._icon-button--link_1dpxf_78:hover,
88
- ._icon-button--link_1dpxf_78:focus-visible {
89
- color: var(--color-semantic-foreground-link-hover);
90
- }
92
+ &:hover,
93
+ &:focus-visible {
94
+ color: var(--color-semantic-foreground-link-hover);
91
95
 
92
- ._icon-button--link_1dpxf_78:hover ._icon-button__icon_1dpxf_41,
93
- ._icon-button--link_1dpxf_78:hover ._icon-button__spinner_1dpxf_42,
94
- ._icon-button--link_1dpxf_78:focus-visible ._icon-button__icon_1dpxf_41,
95
- ._icon-button--link_1dpxf_78:focus-visible ._icon-button__spinner_1dpxf_42 {
96
- color: var(--color-semantic-foreground-link-hover);
97
- }
96
+ ._icon-button__icon_1iv9h_53 {
97
+ color: var(--color-semantic-foreground-link-hover);
98
+ }
99
+ }
98
100
 
99
- ._icon-button--link_1dpxf_78:active ._icon-button__icon_1dpxf_41,
100
- ._icon-button--link_1dpxf_78:active ._icon-button__spinner_1dpxf_42 {
101
- color: var(--color-semantic-interactive-primary-active);
101
+ &:active {
102
+ color: var(--color-semantic-interactive-primary-active);
103
+
104
+ ._icon-button__icon_1iv9h_53 {
105
+ color: var(--color-semantic-interactive-primary-active);
106
+ }
107
+ }
102
108
  }
103
109
 
104
- ._icon-button--disabled_1dpxf_104,
105
- ._icon-button--loading_1dpxf_105 {
110
+ /* Disabled/loading states */
111
+ ._icon-button--disabled_1iv9h_111,
112
+ ._icon-button--loading_1iv9h_112 {
106
113
  pointer-events: none;
107
114
  }
108
115
 
109
- ._icon-button--disabled_1dpxf_104 {
116
+ ._icon-button--disabled_1iv9h_111 {
110
117
  color: var(--color-semantic-foreground-muted);
111
- }
112
118
 
113
- ._icon-button--disabled_1dpxf_104 ._icon-button__icon_1dpxf_41,
114
- ._icon-button--disabled_1dpxf_104 ._icon-button__spinner_1dpxf_42 {
115
- color: var(--color-semantic-interactive-primary-disabled);
119
+ ._icon-button__icon_1iv9h_53 {
120
+ color: var(--color-semantic-interactive-primary-disabled);
121
+ }
116
122
  }
117
123
 
124
+ /* Dark scheme overrides */
118
125
  @scope ([data-color-scheme='dark']) to ([data-color-scheme='light']) {
119
- ._icon-button_1dpxf_1 {
126
+ ._icon-button_1iv9h_1 {
120
127
  color: var(--color-semantic-foreground-inverse);
121
128
  }
122
129
 
123
- ._icon-button__icon_1dpxf_41,
124
- ._icon-button__spinner_1dpxf_42 {
130
+ ._icon-button_1iv9h_1 ._icon-button__icon_1iv9h_53 {
125
131
  color: var(--color-semantic-interactive-inverse-default);
126
132
  }
127
133
 
128
- ._icon-button_1dpxf_1:hover ._icon-button__icon_1dpxf_41,
129
- ._icon-button_1dpxf_1:hover ._icon-button__spinner_1dpxf_42,
130
- ._icon-button_1dpxf_1:focus-visible ._icon-button__icon_1dpxf_41,
131
- ._icon-button_1dpxf_1:focus-visible ._icon-button__spinner_1dpxf_42 {
134
+ ._icon-button_1iv9h_1:hover ._icon-button__icon_1iv9h_53,
135
+ ._icon-button_1iv9h_1:focus-visible ._icon-button__icon_1iv9h_53 {
132
136
  color: var(--color-semantic-interactive-inverse-hover);
133
137
  }
134
138
 
135
- ._icon-button_1dpxf_1:active ._icon-button__icon_1dpxf_41,
136
- ._icon-button_1dpxf_1:active ._icon-button__spinner_1dpxf_42 {
139
+ ._icon-button_1iv9h_1:active ._icon-button__icon_1iv9h_53 {
137
140
  color: var(--color-semantic-interactive-inverse-active);
138
141
  }
139
142
 
140
- ._icon-button--default_1dpxf_74 {
143
+ ._icon-button--link-coloring_1iv9h_85 {
141
144
  color: var(--color-semantic-foreground-inverse);
142
- }
143
145
 
144
- ._icon-button--link_1dpxf_78 {
145
- color: var(--color-semantic-foreground-inverse);
146
- }
146
+ ._icon-button__icon_1iv9h_53 {
147
+ color: var(--color-semantic-foreground-inverse);
148
+ }
147
149
 
148
- ._icon-button--link_1dpxf_78 ._icon-button__icon_1dpxf_41,
149
- ._icon-button--link_1dpxf_78 ._icon-button__spinner_1dpxf_42 {
150
- color: var(--color-semantic-interactive-inverse-default);
151
- }
150
+ &:hover,
151
+ &:focus-visible {
152
+ color: var(--color-semantic-foreground-inverse);
152
153
 
153
- ._icon-button--link_1dpxf_78:hover,
154
- ._icon-button--link_1dpxf_78:focus-visible {
155
- color: var(--color-semantic-foreground-inverse);
156
- }
154
+ ._icon-button__icon_1iv9h_53 {
155
+ color: var(--color-semantic-foreground-inverse);
156
+ }
157
+ }
157
158
 
158
- ._icon-button--link_1dpxf_78:hover ._icon-button__icon_1dpxf_41,
159
- ._icon-button--link_1dpxf_78:hover ._icon-button__spinner_1dpxf_42,
160
- ._icon-button--link_1dpxf_78:focus-visible ._icon-button__icon_1dpxf_41,
161
- ._icon-button--link_1dpxf_78:focus-visible ._icon-button__spinner_1dpxf_42 {
162
- color: var(--color-semantic-interactive-inverse-hover);
159
+ &:active {
160
+ color: var(--color-semantic-foreground-inverse);
161
+
162
+ ._icon-button__icon_1iv9h_53 {
163
+ color: var(--color-semantic-foreground-inverse);
164
+ }
165
+ }
163
166
  }
164
167
 
165
- ._icon-button--disabled_1dpxf_104 ._icon-button__icon_1dpxf_41,
166
- ._icon-button--disabled_1dpxf_104 ._icon-button__spinner_1dpxf_42 {
167
- color: var(--color-semantic-interactive-inverse-disabled);
168
+ ._icon-button--disabled_1iv9h_111 {
169
+ ._icon-button__icon_1iv9h_53 {
170
+ color: var(--color-semantic-interactive-inverse-disabled);
171
+ }
168
172
  }
169
173
  }
170
174
 
171
175
  @media (forced-colors: active) {
172
- ._icon-button--small_1dpxf_28:focus-visible {
176
+ ._icon-button--small_1iv9h_28:focus-visible {
173
177
  outline-color: Highlight;
174
178
  box-shadow: none;
175
179
  }
@@ -1,3 +1,3 @@
1
1
  import { IconButtonProps } from './IconButton.types';
2
- export declare const IconButton: ({ variant, icon, iconPosition, size, loading, className, children, ref, ...props }: IconButtonProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const IconButton: ({ icon, iconPosition, labelBehavior, size, loading, linkColoring, className, children, ref, ...props }: IconButtonProps) => import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=IconButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../src/components/IconButton/IconButton.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,UAAU,GAAI,oFAUxB,eAAe,4CA0IjB,CAAC"}
1
+ {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../src/components/IconButton/IconButton.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,UAAU,GAAI,wGAWxB,eAAe,4CA0JjB,CAAC"}
@@ -1,14 +1,16 @@
1
- import { jsx, Fragment, jsxs } from "react/jsx-runtime";
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import focusStyles from "../../styles/utils/focus.module.css.js";
3
+ import textDecorationStyles from "../../styles/utils/text-decoration.module.css.js";
3
4
  import styles from "./IconButton.module.css.js";
4
5
  import { cn } from "../../utils/cn/cn.js";
5
6
  import { Spinner } from "../Spinner/Spinner.js";
6
7
  const IconButton = ({
7
- variant = "default",
8
8
  icon,
9
9
  iconPosition = "start",
10
+ labelBehavior = "truncate",
10
11
  size = "normal",
11
12
  loading = false,
13
+ linkColoring = false,
12
14
  className,
13
15
  children,
14
16
  ref,
@@ -18,15 +20,15 @@ const IconButton = ({
18
20
  const isAnchor = "href" in props && props.href != null;
19
21
  const classes = cn(
20
22
  styles["icon-button"],
21
- styles[`icon-button--${variant}`],
22
23
  styles[`icon-button--${size}`],
23
24
  focusStyles.focusable,
24
25
  { [styles["icon-button--disabled"]]: isDisabled },
25
26
  { [styles["icon-button--loading"]]: loading },
27
+ { [styles["icon-button--link-coloring"]]: linkColoring },
26
28
  className
27
29
  );
28
30
  const Icon = icon;
29
- const iconSlot = loading ? /* @__PURE__ */ jsx("span", { className: styles["icon-button__spinner"], "aria-hidden": "true", children: /* @__PURE__ */ jsx(
31
+ const iconSlot = loading ? /* @__PURE__ */ jsx("span", { className: styles["icon-button__icon"], "aria-hidden": "true", children: /* @__PURE__ */ jsx(
30
32
  Spinner,
31
33
  {
32
34
  size: size === "small" ? "xs" : "s",
@@ -37,7 +39,15 @@ const IconButton = ({
37
39
  ) }) : /* @__PURE__ */ jsx("span", { className: styles["icon-button__icon"], "aria-hidden": "true", children: /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true" }) });
38
40
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
39
41
  iconPosition === "start" && iconSlot,
40
- /* @__PURE__ */ jsx("span", { className: styles["icon-button__label"], children }),
42
+ /* @__PURE__ */ jsx(
43
+ "span",
44
+ {
45
+ className: cn(styles["icon-button__label"], textDecorationStyles.underlineLink, {
46
+ [styles["icon-button__label--wrap"]]: labelBehavior === "wrap"
47
+ }),
48
+ children
49
+ }
50
+ ),
41
51
  iconPosition === "end" && iconSlot
42
52
  ] });
43
53
  if (isAnchor) {
@@ -67,7 +77,7 @@ const IconButton = ({
67
77
  className: classes,
68
78
  "aria-busy": loading || void 0,
69
79
  "aria-disabled": loading || void 0,
70
- tabIndex: loading ? -1 : void 0,
80
+ tabIndex: loading ? -1 : safeAnchorProps.tabIndex,
71
81
  onClick: loading ? (e) => {
72
82
  e.preventDefault();
73
83
  e.stopPropagation();
@@ -82,6 +92,7 @@ const IconButton = ({
82
92
  const {
83
93
  type = "button",
84
94
  disabled,
95
+ onClick,
85
96
  href: _href,
86
97
  target: _target,
87
98
  rel: _rel,
@@ -95,7 +106,12 @@ const IconButton = ({
95
106
  type,
96
107
  disabled: disabled || loading,
97
108
  className: classes,
109
+ "aria-disabled": loading || void 0,
98
110
  "aria-busy": loading || void 0,
111
+ onClick: loading ? (e) => {
112
+ e.preventDefault();
113
+ e.stopPropagation();
114
+ } : onClick,
99
115
  ...buttonProps,
100
116
  children: content
101
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.js","sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, MouseEvent, ReactNode, Ref } from 'react';\nimport { cn } from '../../utils/cn';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport { Spinner } from '../Spinner';\nimport styles from './IconButton.module.css';\nimport type { IconButtonProps } from './IconButton.types';\n\nexport const IconButton = ({\n variant = 'default',\n icon,\n iconPosition = 'start',\n size = 'normal',\n loading = false,\n className,\n children,\n ref,\n ...props\n}: IconButtonProps) => {\n const isDisabled = 'disabled' in props && props.disabled;\n const isAnchor = 'href' in props && props.href != null;\n\n const classes = cn(\n styles['icon-button'],\n styles[`icon-button--${variant}`],\n styles[`icon-button--${size}`],\n focusStyles.focusable,\n { [styles['icon-button--disabled']]: isDisabled },\n { [styles['icon-button--loading']]: loading },\n className,\n );\n\n const Icon = icon;\n\n const iconSlot = loading ? (\n <span className={styles['icon-button__spinner']} aria-hidden=\"true\">\n <Spinner\n size={size === 'small' ? 'xs' : 's'}\n color=\"inherit\"\n aria-hidden=\"true\"\n role=\"presentation\"\n />\n </span>\n ) : (\n <span className={styles['icon-button__icon']} aria-hidden=\"true\">\n <Icon aria-hidden=\"true\" />\n </span>\n );\n\n const content = (\n <>\n {iconPosition === 'start' && iconSlot}\n <span className={styles['icon-button__label']}>{children}</span>\n {iconPosition === 'end' && iconSlot}\n </>\n );\n\n if (isAnchor) {\n const { href, renderLink, ...anchorProps } = props as Omit<\n typeof props,\n 'variant' | 'icon' | 'iconPosition' | 'size' | 'loading'\n > & {\n href: string;\n renderLink?: (\n props: AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n children: ReactNode;\n },\n ) => ReactNode;\n };\n\n const {\n disabled: _disabled,\n type: _type,\n name: _name,\n ...safeAnchorProps\n } = anchorProps as typeof anchorProps & {\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n name?: string;\n };\n\n const target = safeAnchorProps.target;\n const rel = safeAnchorProps.rel;\n const shouldHardenRel = target?.toLowerCase() === '_blank';\n const relTokens = new Set(\n (rel ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => token.toLowerCase()),\n );\n\n if (shouldHardenRel) {\n relTokens.add('noopener');\n relTokens.add('noreferrer');\n }\n\n const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(' ') : undefined;\n\n const linkProps = {\n ...safeAnchorProps,\n ref: ref as Ref<HTMLAnchorElement>,\n href,\n rel: hardenedRel,\n className: classes,\n 'aria-busy': loading || undefined,\n 'aria-disabled': loading || undefined,\n tabIndex: loading ? -1 : undefined,\n onClick: loading\n ? (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : safeAnchorProps.onClick,\n children: content,\n };\n\n if (renderLink) {\n return <>{renderLink(linkProps)}</>;\n }\n\n return <a {...linkProps} />;\n }\n\n const {\n type = 'button',\n disabled,\n href: _href,\n target: _target,\n rel: _rel,\n renderLink: _renderLink,\n ...buttonProps\n } = props as Omit<\n typeof props,\n 'variant' | 'icon' | 'iconPosition' | 'size' | 'loading' | 'href'\n > & {\n type?: 'button' | 'submit' | 'reset';\n disabled?: boolean;\n href?: string;\n target?: string;\n rel?: string;\n renderLink?: unknown;\n };\n\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n disabled={disabled || loading}\n className={classes}\n aria-busy={loading || undefined}\n {...buttonProps}\n >\n {content}\n </button>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IconButton.js","sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, MouseEvent, ReactNode, Ref } from 'react';\nimport { cn } from '../../utils/cn';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport textDecorationStyles from '../../styles/utils/text-decoration.module.css';\nimport { Spinner } from '../Spinner';\nimport styles from './IconButton.module.css';\nimport type { IconButtonProps } from './IconButton.types';\n\nexport const IconButton = ({\n icon,\n iconPosition = 'start',\n labelBehavior = 'truncate',\n size = 'normal',\n loading = false,\n linkColoring = false,\n className,\n children,\n ref,\n ...props\n}: IconButtonProps) => {\n const isDisabled = 'disabled' in props && props.disabled;\n const isAnchor = 'href' in props && props.href != null;\n\n const classes = cn(\n styles['icon-button'],\n styles[`icon-button--${size}`],\n focusStyles.focusable,\n { [styles['icon-button--disabled']]: isDisabled },\n { [styles['icon-button--loading']]: loading },\n { [styles['icon-button--link-coloring']]: linkColoring },\n className,\n );\n\n const Icon = icon;\n\n const iconSlot = loading ? (\n <span className={styles['icon-button__icon']} aria-hidden=\"true\">\n <Spinner\n size={size === 'small' ? 'xs' : 's'}\n color=\"inherit\"\n aria-hidden=\"true\"\n role=\"presentation\"\n />\n </span>\n ) : (\n <span className={styles['icon-button__icon']} aria-hidden=\"true\">\n <Icon aria-hidden=\"true\" />\n </span>\n );\n\n const content = (\n <>\n {iconPosition === 'start' && iconSlot}\n <span\n className={cn(styles['icon-button__label'], textDecorationStyles.underlineLink, {\n [styles['icon-button__label--wrap']]: labelBehavior === 'wrap',\n })}\n >\n {children}\n </span>\n {iconPosition === 'end' && iconSlot}\n </>\n );\n\n if (isAnchor) {\n const { href, renderLink, ...anchorProps } = props as Omit<\n typeof props,\n 'icon' | 'iconPosition' | 'size' | 'loading' | 'linkColoring'\n > & {\n href: string;\n renderLink?: (\n props: AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n children: ReactNode;\n },\n ) => ReactNode;\n };\n\n const {\n disabled: _disabled,\n type: _type,\n name: _name,\n ...safeAnchorProps\n } = anchorProps as typeof anchorProps & {\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n name?: string;\n };\n\n const target = safeAnchorProps.target;\n const rel = safeAnchorProps.rel;\n const shouldHardenRel = target?.toLowerCase() === '_blank';\n const relTokens = new Set(\n (rel ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => token.toLowerCase()),\n );\n\n if (shouldHardenRel) {\n relTokens.add('noopener');\n relTokens.add('noreferrer');\n }\n\n const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(' ') : undefined;\n\n const linkProps = {\n ...safeAnchorProps,\n ref: ref as Ref<HTMLAnchorElement>,\n href,\n rel: hardenedRel,\n className: classes,\n 'aria-busy': loading || undefined,\n 'aria-disabled': loading || undefined,\n tabIndex: loading ? -1 : safeAnchorProps.tabIndex,\n onClick: loading\n ? (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : safeAnchorProps.onClick,\n children: content,\n };\n\n if (renderLink) {\n return <>{renderLink(linkProps)}</>;\n }\n\n return <a {...linkProps} />;\n }\n\n const {\n type = 'button',\n disabled,\n onClick,\n href: _href,\n target: _target,\n rel: _rel,\n renderLink: _renderLink,\n ...buttonProps\n } = props as Omit<\n typeof props,\n 'icon' | 'iconPosition' | 'size' | 'loading' | 'href' | 'linkColoring'\n > & {\n type?: 'button' | 'submit' | 'reset';\n disabled?: boolean;\n href?: string;\n target?: string;\n rel?: string;\n renderLink?: unknown;\n };\n\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n disabled={disabled || loading}\n className={classes}\n aria-disabled={loading || undefined}\n aria-busy={loading || undefined}\n onClick={\n loading\n ? (e) => {\n e.preventDefault();\n e.stopPropagation();\n }\n : onClick\n }\n {...buttonProps}\n >\n {content}\n </button>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,16 +1,15 @@
1
1
  require('./IconButton.css');
2
2
  "use strict";
3
3
  const styles = {
4
- "icon-button": "_icon-button_1dpxf_1",
5
- "icon-button--normal": "_icon-button--normal_1dpxf_23",
6
- "icon-button--small": "_icon-button--small_1dpxf_28",
7
- "icon-button__label": "_icon-button__label_1dpxf_33",
8
- "icon-button__icon": "_icon-button__icon_1dpxf_41",
9
- "icon-button__spinner": "_icon-button__spinner_1dpxf_42",
10
- "icon-button--default": "_icon-button--default_1dpxf_74",
11
- "icon-button--link": "_icon-button--link_1dpxf_78",
12
- "icon-button--disabled": "_icon-button--disabled_1dpxf_104",
13
- "icon-button--loading": "_icon-button--loading_1dpxf_105"
4
+ "icon-button": "_icon-button_1iv9h_1",
5
+ "icon-button--normal": "_icon-button--normal_1iv9h_23",
6
+ "icon-button--small": "_icon-button--small_1iv9h_28",
7
+ "icon-button__label": "_icon-button__label_1iv9h_33",
8
+ "icon-button__label--wrap": "_icon-button__label--wrap_1iv9h_45",
9
+ "icon-button__icon": "_icon-button__icon_1iv9h_53",
10
+ "icon-button--link-coloring": "_icon-button--link-coloring_1iv9h_85",
11
+ "icon-button--disabled": "_icon-button--disabled_1iv9h_111",
12
+ "icon-button--loading": "_icon-button--loading_1iv9h_112"
14
13
  };
15
14
  module.exports = styles;
16
15
  //# sourceMappingURL=IconButton.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"IconButton.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1,15 +1,14 @@
1
1
  import './IconButton.css';
2
2
  const styles = {
3
- "icon-button": "_icon-button_1dpxf_1",
4
- "icon-button--normal": "_icon-button--normal_1dpxf_23",
5
- "icon-button--small": "_icon-button--small_1dpxf_28",
6
- "icon-button__label": "_icon-button__label_1dpxf_33",
7
- "icon-button__icon": "_icon-button__icon_1dpxf_41",
8
- "icon-button__spinner": "_icon-button__spinner_1dpxf_42",
9
- "icon-button--default": "_icon-button--default_1dpxf_74",
10
- "icon-button--link": "_icon-button--link_1dpxf_78",
11
- "icon-button--disabled": "_icon-button--disabled_1dpxf_104",
12
- "icon-button--loading": "_icon-button--loading_1dpxf_105"
3
+ "icon-button": "_icon-button_1iv9h_1",
4
+ "icon-button--normal": "_icon-button--normal_1iv9h_23",
5
+ "icon-button--small": "_icon-button--small_1iv9h_28",
6
+ "icon-button__label": "_icon-button__label_1iv9h_33",
7
+ "icon-button__label--wrap": "_icon-button__label--wrap_1iv9h_45",
8
+ "icon-button__icon": "_icon-button__icon_1iv9h_53",
9
+ "icon-button--link-coloring": "_icon-button--link-coloring_1iv9h_85",
10
+ "icon-button--disabled": "_icon-button--disabled_1iv9h_111",
11
+ "icon-button--loading": "_icon-button--loading_1iv9h_112"
13
12
  };
14
13
  export {
15
14
  styles as default
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
1
+ {"version":3,"file":"IconButton.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}