@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.
- package/README.md +3 -1
- package/dist/components/Accordion/Accordion.css +4 -4
- package/dist/components/Accordion/Accordion.module.css.cjs +3 -3
- package/dist/components/Accordion/Accordion.module.css.js +3 -3
- package/dist/components/AccordionItem/AccordionItem.css +19 -19
- package/dist/components/AccordionItem/AccordionItem.module.css.cjs +11 -11
- package/dist/components/AccordionItem/AccordionItem.module.css.js +11 -11
- package/dist/components/Breadcrumb/Breadcrumb.css +11 -12
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
- package/dist/components/Button/Button.cjs +3 -1
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.css +33 -33
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +3 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.css.cjs +11 -11
- package/dist/components/Button/Button.module.css.js +11 -11
- package/dist/components/Footer/Footer.cjs +272 -0
- package/dist/components/Footer/Footer.cjs.map +1 -0
- package/dist/components/Footer/Footer.css +466 -0
- package/dist/components/Footer/Footer.d.ts +3 -0
- package/dist/components/Footer/Footer.d.ts.map +1 -0
- package/dist/components/Footer/Footer.js +272 -0
- package/dist/components/Footer/Footer.js.map +1 -0
- package/dist/components/Footer/Footer.module.css.cjs +80 -0
- package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
- package/dist/components/Footer/Footer.module.css.js +80 -0
- package/dist/components/Footer/Footer.module.css.js.map +1 -0
- package/dist/components/Footer/Footer.types.d.ts +128 -0
- package/dist/components/Footer/Footer.types.d.ts.map +1 -0
- package/dist/components/Footer/Footer.utils.cjs +41 -0
- package/dist/components/Footer/Footer.utils.cjs.map +1 -0
- package/dist/components/Footer/Footer.utils.d.ts +13 -0
- package/dist/components/Footer/Footer.utils.d.ts.map +1 -0
- package/dist/components/Footer/Footer.utils.js +41 -0
- package/dist/components/Footer/Footer.utils.js.map +1 -0
- package/dist/components/Footer/assets/app-store-badge.svg.cjs +4 -0
- package/dist/components/Footer/assets/app-store-badge.svg.cjs.map +1 -0
- package/dist/components/Footer/assets/app-store-badge.svg.js +5 -0
- package/dist/components/Footer/assets/app-store-badge.svg.js.map +1 -0
- package/dist/components/Footer/assets/google-play-badge.svg.cjs +4 -0
- package/dist/components/Footer/assets/google-play-badge.svg.cjs.map +1 -0
- package/dist/components/Footer/assets/google-play-badge.svg.js +5 -0
- package/dist/components/Footer/assets/google-play-badge.svg.js.map +1 -0
- package/dist/components/Footer/index.d.ts +3 -0
- package/dist/components/Footer/index.d.ts.map +1 -0
- package/dist/components/Hero/Hero.cjs +31 -26
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +96 -103
- package/dist/components/Hero/Hero.d.ts +1 -1
- package/dist/components/Hero/Hero.d.ts.map +1 -1
- package/dist/components/Hero/Hero.js +32 -27
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +17 -19
- package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
- package/dist/components/Hero/Hero.module.css.js +17 -19
- package/dist/components/Hero/Hero.module.css.js.map +1 -1
- package/dist/components/Hero/Hero.types.d.ts +9 -8
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/Hero/Hero.utils.cjs +5 -7
- package/dist/components/Hero/Hero.utils.cjs.map +1 -1
- package/dist/components/Hero/Hero.utils.d.ts +2 -2
- package/dist/components/Hero/Hero.utils.d.ts.map +1 -1
- package/dist/components/Hero/Hero.utils.js +5 -7
- package/dist/components/Hero/Hero.utils.js.map +1 -1
- package/dist/components/IconButton/IconButton.cjs +21 -5
- package/dist/components/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.css +87 -83
- package/dist/components/IconButton/IconButton.d.ts +1 -1
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js +22 -6
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/IconButton/IconButton.module.css.cjs +9 -10
- package/dist/components/IconButton/IconButton.module.css.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.module.css.js +9 -10
- package/dist/components/IconButton/IconButton.module.css.js.map +1 -1
- package/dist/components/IconButton/IconButton.types.d.ts +15 -10
- package/dist/components/IconButton/IconButton.types.d.ts.map +1 -1
- package/dist/components/IconButton/index.d.ts +1 -1
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/Label/Label.css +13 -8
- package/dist/components/Label/Label.module.css.cjs +7 -7
- package/dist/components/Label/Label.module.css.js +7 -7
- package/dist/components/MainNavigation/MainNavigation.cjs +1110 -0
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.css +946 -0
- package/dist/components/MainNavigation/MainNavigation.d.ts +3 -0
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.js +1110 -0
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +74 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.js +75 -0
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +149 -0
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +168 -0
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +29 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.js +168 -0
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -0
- package/dist/components/MainNavigation/index.d.ts +3 -0
- package/dist/components/MainNavigation/index.d.ts.map +1 -0
- package/dist/components/Notification/Notification.css +14 -14
- package/dist/components/Notification/Notification.module.css.cjs +9 -9
- package/dist/components/Notification/Notification.module.css.js +9 -9
- package/dist/components/Pictograph/Pictograph.css +69 -57
- package/dist/components/Pictograph/Pictograph.module.css.cjs +11 -11
- package/dist/components/Pictograph/Pictograph.module.css.js +11 -11
- package/dist/components/Pictograph/Pictograph.types.d.ts +2 -2
- package/dist/components/Pictograph/PictographItem.cjs +15 -4
- package/dist/components/Pictograph/PictographItem.cjs.map +1 -1
- package/dist/components/Pictograph/PictographItem.css +26 -23
- package/dist/components/Pictograph/PictographItem.d.ts.map +1 -1
- package/dist/components/Pictograph/PictographItem.js +15 -4
- package/dist/components/Pictograph/PictographItem.js.map +1 -1
- package/dist/components/Pictograph/PictographItem.module.css.cjs +3 -3
- package/dist/components/Pictograph/PictographItem.module.css.js +3 -3
- package/dist/components/Quote/Quote.cjs +32 -0
- package/dist/components/Quote/Quote.cjs.map +1 -0
- package/dist/components/Quote/Quote.css +95 -0
- package/dist/components/Quote/Quote.d.ts +3 -0
- package/dist/components/Quote/Quote.d.ts.map +1 -0
- package/dist/components/Quote/Quote.js +32 -0
- package/dist/components/Quote/Quote.js.map +1 -0
- package/dist/components/Quote/Quote.module.css.cjs +22 -0
- package/dist/components/Quote/Quote.module.css.cjs.map +1 -0
- package/dist/components/Quote/Quote.module.css.js +22 -0
- package/dist/components/Quote/Quote.module.css.js.map +1 -0
- package/dist/components/Quote/Quote.types.d.ts +12 -0
- package/dist/components/Quote/Quote.types.d.ts.map +1 -0
- package/dist/components/Quote/index.d.ts +3 -0
- package/dist/components/Quote/index.d.ts.map +1 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utils/elevation.css +20 -17
- package/dist/styles/utils/elevation.module.css.cjs +4 -4
- package/dist/styles/utils/elevation.module.css.js +4 -4
- package/dist/styles/utils/focus.css +23 -14
- package/dist/styles/utils/focus.module.css.cjs +6 -3
- package/dist/styles/utils/focus.module.css.cjs.map +1 -1
- package/dist/styles/utils/focus.module.css.js +7 -4
- package/dist/styles/utils/focus.module.css.js.map +1 -1
- package/dist/styles/utils/overlay.css +37 -0
- package/dist/styles/utils/overlay.module.css.cjs +13 -0
- package/dist/styles/utils/overlay.module.css.cjs.map +1 -0
- package/dist/styles/utils/overlay.module.css.js +13 -0
- package/dist/styles/utils/overlay.module.css.js.map +1 -0
- package/dist/styles/utils/text-decoration.css +8 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +5 -2
- package/dist/styles/utils/text-decoration.module.css.cjs.map +1 -1
- package/dist/styles/utils/text-decoration.module.css.js +6 -3
- package/dist/styles/utils/text-decoration.module.css.js.map +1 -1
- package/dist/styles.css +141 -92
- 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 {
|
|
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 {
|
|
2
|
-
export declare const
|
|
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,
|
|
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
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
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 {
|
|
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-
|
|
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(
|
|
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 :
|
|
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
|
|
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-
|
|
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-
|
|
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--
|
|
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--
|
|
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-
|
|
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-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
62
|
+
& > svg {
|
|
63
|
+
width: var(--_button-icon-size);
|
|
64
|
+
height: var(--_button-icon-size);
|
|
65
|
+
}
|
|
55
66
|
}
|
|
56
67
|
|
|
57
|
-
|
|
58
|
-
._icon-
|
|
59
|
-
|
|
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-
|
|
63
|
-
|
|
64
|
-
|
|
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-
|
|
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
|
-
|
|
75
|
-
|
|
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-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
88
|
+
._icon-button__icon_1iv9h_53 {
|
|
89
|
+
color: var(--color-semantic-foreground-link);
|
|
90
|
+
}
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
92
|
+
&:hover,
|
|
93
|
+
&:focus-visible {
|
|
94
|
+
color: var(--color-semantic-foreground-link-hover);
|
|
91
95
|
|
|
92
|
-
._icon-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
105
|
-
._icon-button--
|
|
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--
|
|
116
|
+
._icon-button--disabled_1iv9h_111 {
|
|
110
117
|
color: var(--color-semantic-foreground-muted);
|
|
111
|
-
}
|
|
112
118
|
|
|
113
|
-
._icon-
|
|
114
|
-
|
|
115
|
-
|
|
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-
|
|
126
|
+
._icon-button_1iv9h_1 {
|
|
120
127
|
color: var(--color-semantic-foreground-inverse);
|
|
121
128
|
}
|
|
122
129
|
|
|
123
|
-
._icon-
|
|
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-
|
|
129
|
-
._icon-
|
|
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-
|
|
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--
|
|
143
|
+
._icon-button--link-coloring_1iv9h_85 {
|
|
141
144
|
color: var(--color-semantic-foreground-inverse);
|
|
142
|
-
}
|
|
143
145
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
146
|
+
._icon-button__icon_1iv9h_53 {
|
|
147
|
+
color: var(--color-semantic-foreground-inverse);
|
|
148
|
+
}
|
|
147
149
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
150
|
+
&:hover,
|
|
151
|
+
&:focus-visible {
|
|
152
|
+
color: var(--color-semantic-foreground-inverse);
|
|
152
153
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
154
|
+
._icon-button__icon_1iv9h_53 {
|
|
155
|
+
color: var(--color-semantic-foreground-inverse);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
157
158
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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--
|
|
166
|
-
|
|
167
|
-
|
|
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--
|
|
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: ({
|
|
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":"
|
|
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 {
|
|
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-
|
|
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(
|
|
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 :
|
|
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
|
|
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-
|
|
5
|
-
"icon-button--normal": "_icon-button--
|
|
6
|
-
"icon-button--small": "_icon-button--
|
|
7
|
-
"icon-button__label": "_icon-
|
|
8
|
-
"icon-
|
|
9
|
-
"icon-
|
|
10
|
-
"icon-button--
|
|
11
|
-
"icon-button--
|
|
12
|
-
"icon-button--
|
|
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-
|
|
4
|
-
"icon-button--normal": "_icon-button--
|
|
5
|
-
"icon-button--small": "_icon-button--
|
|
6
|
-
"icon-button__label": "_icon-
|
|
7
|
-
"icon-
|
|
8
|
-
"icon-
|
|
9
|
-
"icon-button--
|
|
10
|
-
"icon-button--
|
|
11
|
-
"icon-button--
|
|
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":";;;;;;;;;;;"}
|