@clickhouse/click-ui 0.6.1-rc2 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/click-ui.css +623 -11
- package/dist/cjs/components/Accordion/Accordion.css +111 -0
- package/dist/cjs/components/Accordion/Accordion.module.css.cjs +33 -0
- package/dist/cjs/components/Accordion/Accordion.module.css.cjs.map +1 -0
- package/dist/cjs/components/Accordion/index.cjs +51 -54
- package/dist/cjs/components/Accordion/index.cjs.map +1 -1
- package/dist/cjs/components/Alert/Alert.css +169 -0
- package/dist/cjs/components/Alert/Alert.module.css.cjs +75 -0
- package/dist/cjs/components/Alert/Alert.module.css.cjs.map +1 -0
- package/dist/cjs/components/Alert/index.cjs +113 -69
- package/dist/cjs/components/Alert/index.cjs.map +1 -1
- package/dist/cjs/components/Assets/Icons/Check.cjs +1 -1
- package/dist/cjs/components/Assets/Icons/Check.cjs.map +1 -1
- package/dist/cjs/components/Assets/Icons/Dollar.cjs +10 -0
- package/dist/cjs/components/Assets/Icons/Dollar.cjs.map +1 -0
- package/dist/cjs/components/Assets/Icons/Pin.cjs +13 -0
- package/dist/cjs/components/Assets/Icons/Pin.cjs.map +1 -0
- package/dist/cjs/components/Assets/Icons/Unpin.cjs +17 -0
- package/dist/cjs/components/Assets/Icons/Unpin.cjs.map +1 -0
- package/dist/cjs/components/Assets/Icons/system/IconsLight.cjs +6 -0
- package/dist/cjs/components/Assets/Icons/system/IconsLight.cjs.map +1 -1
- package/dist/cjs/components/Button/index.cjs +2 -1
- package/dist/cjs/components/Button/index.cjs.map +1 -1
- package/dist/cjs/components/Checkbox/index.cjs +1 -11
- package/dist/cjs/components/Checkbox/index.cjs.map +1 -1
- package/dist/cjs/components/Collapsible/Collapsible.css +79 -0
- package/dist/cjs/components/Collapsible/Collapsible.module.css.cjs +31 -0
- package/dist/cjs/components/Collapsible/Collapsible.module.css.cjs.map +1 -0
- package/dist/cjs/components/Collapsible/IconWrapper.cjs +4 -11
- package/dist/cjs/components/Collapsible/IconWrapper.cjs.map +1 -1
- package/dist/cjs/components/Collapsible/index.cjs +36 -24
- package/dist/cjs/components/Collapsible/index.cjs.map +1 -1
- package/dist/cjs/components/Container/Container.css +3 -3
- package/dist/cjs/components/HoverCard/HoverCard.css +6 -0
- package/dist/cjs/components/HoverCard/HoverCard.module.css.cjs +10 -0
- package/dist/cjs/components/HoverCard/HoverCard.module.css.cjs.map +1 -0
- package/dist/cjs/components/HoverCard/index.cjs +5 -5
- package/dist/cjs/components/HoverCard/index.cjs.map +1 -1
- package/dist/cjs/components/Link/Link.css +12 -8
- package/dist/cjs/components/Link/Link.module.css.cjs +15 -4
- package/dist/cjs/components/Link/Link.module.css.cjs.map +1 -1
- package/dist/cjs/components/Link/index.cjs +6 -6
- package/dist/cjs/components/Link/index.cjs.map +1 -1
- package/dist/cjs/components/Select/common/InternalSelect.cjs +1 -1
- package/dist/cjs/components/Select/common/InternalSelect.cjs.map +1 -1
- package/dist/cjs/components/SidebarNavigationItem/SidebarNavigationItem.css +167 -0
- package/dist/cjs/components/SidebarNavigationItem/SidebarNavigationItem.module.css.cjs +23 -0
- package/dist/cjs/components/SidebarNavigationItem/SidebarNavigationItem.module.css.cjs.map +1 -0
- package/dist/cjs/components/SidebarNavigationItem/index.cjs +60 -69
- package/dist/cjs/components/SidebarNavigationItem/index.cjs.map +1 -1
- package/dist/cjs/components/SidebarNavigationTitle/SidebarNavigationTitle.css +76 -0
- package/dist/cjs/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.cjs +19 -0
- package/dist/cjs/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.cjs.map +1 -0
- package/dist/cjs/components/SidebarNavigationTitle/index.cjs +35 -23
- package/dist/cjs/components/SidebarNavigationTitle/index.cjs.map +1 -1
- package/dist/esm/click-ui.css +623 -11
- package/dist/esm/components/Accordion/Accordion.css +111 -0
- package/dist/esm/components/Accordion/Accordion.module.css.js +22 -0
- package/dist/esm/components/Accordion/Accordion.module.css.js.map +1 -0
- package/dist/esm/components/Accordion/index.js +51 -54
- package/dist/esm/components/Accordion/index.js.map +1 -1
- package/dist/esm/components/Alert/Alert.css +169 -0
- package/dist/esm/components/Alert/Alert.module.css.js +53 -0
- package/dist/esm/components/Alert/Alert.module.css.js.map +1 -0
- package/dist/esm/components/Alert/index.js +113 -69
- package/dist/esm/components/Alert/index.js.map +1 -1
- package/dist/esm/components/Assets/Icons/Check.js +1 -1
- package/dist/esm/components/Assets/Icons/Check.js.map +1 -1
- package/dist/esm/components/Assets/Icons/Dollar.js +6 -0
- package/dist/esm/components/Assets/Icons/Dollar.js.map +1 -0
- package/dist/esm/components/Assets/Icons/Pin.js +9 -0
- package/dist/esm/components/Assets/Icons/Pin.js.map +1 -0
- package/dist/esm/components/Assets/Icons/Unpin.js +13 -0
- package/dist/esm/components/Assets/Icons/Unpin.js.map +1 -0
- package/dist/esm/components/Assets/Icons/system/IconsLight.js +6 -0
- package/dist/esm/components/Assets/Icons/system/IconsLight.js.map +1 -1
- package/dist/esm/components/Button/index.js +2 -1
- package/dist/esm/components/Button/index.js.map +1 -1
- package/dist/esm/components/Checkbox/index.js +1 -11
- package/dist/esm/components/Checkbox/index.js.map +1 -1
- package/dist/esm/components/Collapsible/Collapsible.css +79 -0
- package/dist/esm/components/Collapsible/Collapsible.module.css.js +21 -0
- package/dist/esm/components/Collapsible/Collapsible.module.css.js.map +1 -0
- package/dist/esm/components/Collapsible/IconWrapper.js +4 -11
- package/dist/esm/components/Collapsible/IconWrapper.js.map +1 -1
- package/dist/esm/components/Collapsible/index.js +36 -24
- package/dist/esm/components/Collapsible/index.js.map +1 -1
- package/dist/esm/components/Container/Container.css +3 -3
- package/dist/esm/components/HoverCard/HoverCard.css +6 -0
- package/dist/esm/components/HoverCard/HoverCard.module.css.js +6 -0
- package/dist/esm/components/HoverCard/HoverCard.module.css.js.map +1 -0
- package/dist/esm/components/HoverCard/index.js +5 -5
- package/dist/esm/components/HoverCard/index.js.map +1 -1
- package/dist/esm/components/Link/Link.css +12 -8
- package/dist/esm/components/Link/Link.module.css.js +11 -5
- package/dist/esm/components/Link/Link.module.css.js.map +1 -1
- package/dist/esm/components/Link/index.js +6 -6
- package/dist/esm/components/Link/index.js.map +1 -1
- package/dist/esm/components/Select/common/InternalSelect.js +1 -1
- package/dist/esm/components/Select/common/InternalSelect.js.map +1 -1
- package/dist/esm/components/SidebarNavigationItem/SidebarNavigationItem.css +167 -0
- package/dist/esm/components/SidebarNavigationItem/SidebarNavigationItem.module.css.js +16 -0
- package/dist/esm/components/SidebarNavigationItem/SidebarNavigationItem.module.css.js.map +1 -0
- package/dist/esm/components/SidebarNavigationItem/index.js +60 -69
- package/dist/esm/components/SidebarNavigationItem/index.js.map +1 -1
- package/dist/esm/components/SidebarNavigationTitle/SidebarNavigationTitle.css +76 -0
- package/dist/esm/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.js +12 -0
- package/dist/esm/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.js.map +1 -0
- package/dist/esm/components/SidebarNavigationTitle/index.js +35 -23
- package/dist/esm/components/SidebarNavigationTitle/index.js.map +1 -1
- package/dist/types/components/Accordion/Accordion.d.ts +3 -3
- package/dist/types/components/Assets/Icons/Dollar.d.ts +3 -0
- package/dist/types/components/Assets/Icons/Pin.d.ts +3 -0
- package/dist/types/components/Assets/Icons/Unpin.d.ts +3 -0
- package/dist/types/components/Assets/Icons/system/types.d.ts +1 -1
- package/dist/types/components/Button/Button.d.ts +1 -24
- package/dist/types/components/Button/Button.types.d.ts +3 -0
- package/dist/types/components/Collapsible/Collapsible.d.ts +3 -3
- package/dist/types/components/HoverCard/HoverCard.d.ts +1 -1
- package/dist/types/components/SidebarNavigationItem/SidebarNavigationItem.d.ts +9 -5
- package/dist/types/components/SidebarNavigationTitle/SidebarNavigationTitle.d.ts +9 -4
- package/package.json +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
.collapsible__8jmKP {
|
|
2
|
+
width: 100%;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.collapsible__8jmKP [data-trigger-icon] {
|
|
6
|
+
visibility: hidden;
|
|
7
|
+
transition: transform 150ms cubic-bezier(0.87, 0, 0.13, 1);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.collapsible__8jmKP [data-trigger-icon][data-open='true'] {
|
|
11
|
+
transform: rotate(90deg);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.collapsible__8jmKP [data-collapsible-header]:hover [data-trigger-icon] {
|
|
15
|
+
visibility: visible;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.collapsible__header__pWkUS {
|
|
19
|
+
user-select: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.collapsible__header_indicator-dir_start__s-AUI {
|
|
23
|
+
margin-left: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.collapsible__header_indicator-dir_end__EtDn0 {
|
|
27
|
+
margin-left: var(--click-image-sm-size-width);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.collapsible__trigger__ArZ-C {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
color: inherit;
|
|
34
|
+
font: inherit;
|
|
35
|
+
cursor: inherit;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* stylelint-disable-next-line block-no-empty -- base element required by BEM */
|
|
39
|
+
.collapsible__content__aT3ek {
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.collapsible__content_indicator-dir_start__8Gs37 {
|
|
43
|
+
margin-left: var(--click-image-sm-size-width);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.collapsible__content_indicator-dir_end__OoEfV {
|
|
47
|
+
margin-right: var(--click-image-sm-size-width);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.collapsible__label__RpPE- {
|
|
51
|
+
display: flex;
|
|
52
|
+
/* stylelint-disable plugin/no-unsupported-browser-features, declaration-property-value-no-unknown -- the original rule used this same
|
|
53
|
+
width fallback chain (100% → -webkit-fill-available → fill-available →
|
|
54
|
+
stretch) so the label fills the available inline space. */
|
|
55
|
+
width: 100%;
|
|
56
|
+
width: -webkit-fill-available;
|
|
57
|
+
width: fill-available;
|
|
58
|
+
width: stretch;
|
|
59
|
+
/* stylelint-enable plugin/no-unsupported-browser-features, declaration-property-value-no-unknown */
|
|
60
|
+
overflow: hidden;
|
|
61
|
+
flex: 1;
|
|
62
|
+
justify-content: flex-start;
|
|
63
|
+
align-items: center;
|
|
64
|
+
gap: var(--click-sidebar-navigation-item-default-space-gap);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.collapsible__ellipsis__huvdc {
|
|
68
|
+
display: flex;
|
|
69
|
+
overflow: hidden;
|
|
70
|
+
flex: 1;
|
|
71
|
+
justify-content: flex-start;
|
|
72
|
+
gap: inherit;
|
|
73
|
+
white-space: nowrap;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.collapsible__ellipsis__huvdc > *:not(button) {
|
|
77
|
+
overflow: hidden;
|
|
78
|
+
text-overflow: ellipsis;
|
|
79
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const collapsible = "collapsible__8jmKP";
|
|
2
|
+
const collapsible__header = "collapsible__header__pWkUS";
|
|
3
|
+
const collapsible__trigger = "collapsible__trigger__ArZ-C";
|
|
4
|
+
const collapsible__content = "collapsible__content__aT3ek";
|
|
5
|
+
const collapsible__label = "collapsible__label__RpPE-";
|
|
6
|
+
const collapsible__ellipsis = "collapsible__ellipsis__huvdc";
|
|
7
|
+
const styles = {
|
|
8
|
+
collapsible: collapsible,
|
|
9
|
+
collapsible__header: collapsible__header,
|
|
10
|
+
"collapsible__header_indicator-dir_start": "collapsible__header_indicator-dir_start__s-AUI",
|
|
11
|
+
"collapsible__header_indicator-dir_end": "collapsible__header_indicator-dir_end__EtDn0",
|
|
12
|
+
collapsible__trigger: collapsible__trigger,
|
|
13
|
+
collapsible__content: collapsible__content,
|
|
14
|
+
"collapsible__content_indicator-dir_start": "collapsible__content_indicator-dir_start__8Gs37",
|
|
15
|
+
"collapsible__content_indicator-dir_end": "collapsible__content_indicator-dir_end__OoEfV",
|
|
16
|
+
collapsible__label: collapsible__label,
|
|
17
|
+
collapsible__ellipsis: collapsible__ellipsis
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { collapsible, collapsible__content, collapsible__ellipsis, collapsible__header, collapsible__label, collapsible__trigger, styles as default };
|
|
21
|
+
//# sourceMappingURL=Collapsible.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Collapsible.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { cn } from '../../lib/cva.js';
|
|
3
|
+
import styles from './Collapsible.module.css.js';
|
|
3
4
|
import { Icon as SvgImage } from '../Icon/index.js';
|
|
4
5
|
|
|
5
|
-
const LabelContainer = styled.span.withConfig({
|
|
6
|
-
componentId: "sc-1cu1l45-0"
|
|
7
|
-
})(["display:flex;align-items:center;justify-content:flex-start;width:100%;width:-webkit-fill-available;width:fill-available;width:stretch;flex:1;gap:", ";overflow:hidden;"], ({
|
|
8
|
-
theme
|
|
9
|
-
}) => theme.click.sidebar.navigation.item.default.space.gap);
|
|
10
|
-
const EllipsisContainer = styled.span.withConfig({
|
|
11
|
-
componentId: "sc-1cu1l45-1"
|
|
12
|
-
})(["display:flex;white-space:nowrap;overflow:hidden;justify-content:flex-start;gap:inherit;flex:1;& > *:not(button){overflow:hidden;text-overflow:ellipsis;}"]);
|
|
13
6
|
const IconWrapper = ({
|
|
14
7
|
icon,
|
|
15
8
|
iconDir = "start",
|
|
16
9
|
children
|
|
17
10
|
}) => {
|
|
18
|
-
return /* @__PURE__ */ jsxs(
|
|
11
|
+
return /* @__PURE__ */ jsxs("span", { className: cn(styles.collapsible__label), children: [
|
|
19
12
|
icon && iconDir === "start" && /* @__PURE__ */ jsx(SvgImage, { name: icon, size: "sm" }),
|
|
20
|
-
/* @__PURE__ */ jsx(
|
|
13
|
+
/* @__PURE__ */ jsx("span", { className: cn(styles.collapsible__ellipsis), children }),
|
|
21
14
|
icon && iconDir === "end" && /* @__PURE__ */ jsx(SvgImage, { name: icon, size: "sm" })
|
|
22
15
|
] });
|
|
23
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconWrapper.js","sources":["../../../../src/components/Collapsible/IconWrapper.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"IconWrapper.js","sources":["../../../../src/components/Collapsible/IconWrapper.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { Icon } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport type { ImageName } from '@/components/Icon';\n\nimport { cn } from '@/lib/cva';\nimport styles from './Collapsible.module.css';\n\nexport const IconWrapper = ({\n icon,\n iconDir = 'start',\n children,\n}: {\n // TODO: The consumer app seem to expect to use other assets\n // this needs to be investigated why it had type IconName\n icon?: ImageName;\n iconDir?: HorizontalDirection;\n children: ReactNode;\n}) => {\n return (\n <span className={cn(styles.collapsible__label)}>\n {icon && iconDir === 'start' && (\n <Icon\n name={icon}\n size=\"sm\"\n />\n )}\n <span className={cn(styles.collapsible__ellipsis)}>{children}</span>\n {icon && iconDir === 'end' && (\n <Icon\n name={icon}\n size=\"sm\"\n />\n )}\n </span>\n );\n};\n"],"names":["IconWrapper","icon","iconDir","children","cn","styles","collapsible__label","Icon","collapsible__ellipsis"],"mappings":";;;;;AAQO,MAAMA,cAAcA,CAAC;AAAA,EAC1BC,IAAAA;AAAAA,EACAC,OAAAA,GAAU,OAAA;AAAA,EACVC;AAOF,CAAA,KAAM;AACJ,EAAA,4BACG,MAAA,EAAA,EAAK,SAAA,EAAWC,EAAAA,CAAGC,MAAAA,CAAOC,kBAAkB,CAAA,EAC1CL,QAAAA,EAAAA;AAAAA,IAAAA,IAAAA,IAAQC,YAAY,OAAA,oBACnB,GAAA,CAACK,YACC,IAAA,EAAMN,IAAAA,EACN,MAAK,IAAA,EAAI,CAAA;AAAA,wBAGZ,MAAA,EAAA,EAAK,SAAA,EAAWG,GAAGC,MAAAA,CAAOG,qBAAqB,GAAIL,QAAAA,EAAS,CAAA;AAAA,IAC5DF,IAAAA,IAAQC,YAAY,KAAA,oBACnB,GAAA,CAACK,YACC,IAAA,EAAMN,IAAAA,EACN,MAAK,IAAA,EAAI;AAAA,GAAA,EAGf,CAAA;AAEJ;;;;"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
import "./Collapsible.css";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import { useState, useEffect, createContext, forwardRef, useContext } from 'react';
|
|
3
|
-
import {
|
|
4
|
+
import { cn } from '../../lib/cva.js';
|
|
4
5
|
import { EmptyButton } from '../EmptyButton/index.js';
|
|
5
6
|
import { IconWrapper } from './IconWrapper.js';
|
|
7
|
+
import styles from './Collapsible.module.css.js';
|
|
6
8
|
import { Icon as SvgImage } from '../Icon/index.js';
|
|
9
|
+
import { cva } from 'class-variance-authority';
|
|
7
10
|
|
|
8
11
|
const NavContext = createContext({
|
|
9
12
|
open: false,
|
|
10
13
|
onOpenChange: () => null
|
|
11
14
|
});
|
|
12
|
-
const CollapsibleContainer = styled.div.withConfig({
|
|
13
|
-
componentId: "sc-guwmyz-0"
|
|
14
|
-
})(["width:100%;[data-trigger-icon]{visibility:hidden;transition:transform 150ms cubic-bezier(0.87,0,0.13,1);&[data-open='true']{transform:rotate(90deg);}}[data-collapsible-header]:hover [data-trigger-icon]{visibility:visible;}"]);
|
|
15
15
|
const Collapsible = ({
|
|
16
16
|
open: openProp,
|
|
17
17
|
onOpenChange: onOpenChangeProp,
|
|
18
18
|
children,
|
|
19
|
+
className,
|
|
19
20
|
...props
|
|
20
21
|
}) => {
|
|
21
22
|
const [open, setOpen] = useState(openProp ?? false);
|
|
@@ -34,14 +35,19 @@ const Collapsible = ({
|
|
|
34
35
|
open: openProp ?? open,
|
|
35
36
|
onOpenChange
|
|
36
37
|
};
|
|
37
|
-
return /* @__PURE__ */ jsx(
|
|
38
|
+
return /* @__PURE__ */ jsx("div", { ...props, className: cn(styles.collapsible, className), children: /* @__PURE__ */ jsx(NavContext.Provider, { value, children }) });
|
|
38
39
|
};
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
40
|
+
const headerVariants = cva(styles.collapsible__header, {
|
|
41
|
+
variants: {
|
|
42
|
+
indicatorDir: {
|
|
43
|
+
start: styles["collapsible__header_indicator-dir_start"],
|
|
44
|
+
end: styles["collapsible__header_indicator-dir_end"]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
defaultVariants: {
|
|
48
|
+
indicatorDir: "start"
|
|
49
|
+
}
|
|
50
|
+
});
|
|
45
51
|
const CollapsipleHeader = forwardRef(({
|
|
46
52
|
indicatorDir = "start",
|
|
47
53
|
icon,
|
|
@@ -49,19 +55,22 @@ const CollapsipleHeader = forwardRef(({
|
|
|
49
55
|
children,
|
|
50
56
|
wrapInTrigger,
|
|
51
57
|
onClick: onClickProp,
|
|
58
|
+
className,
|
|
52
59
|
...props
|
|
53
60
|
}, ref) => {
|
|
54
61
|
const {
|
|
55
62
|
onOpenChange
|
|
56
63
|
} = useContext(NavContext);
|
|
57
|
-
return /* @__PURE__ */ jsxs(
|
|
64
|
+
return /* @__PURE__ */ jsxs("div", { ref, onClick: (e) => {
|
|
58
65
|
if (wrapInTrigger && typeof onOpenChange === "function") {
|
|
59
66
|
onOpenChange();
|
|
60
67
|
}
|
|
61
68
|
if (typeof onClickProp === "function") {
|
|
62
69
|
onClickProp(e);
|
|
63
70
|
}
|
|
64
|
-
}, "data-collapsible-header": true, ...props,
|
|
71
|
+
}, "data-collapsible-header": true, ...props, className: cn(headerVariants({
|
|
72
|
+
indicatorDir
|
|
73
|
+
}), className), children: [
|
|
65
74
|
indicatorDir === "start" && /* @__PURE__ */ jsx(Collapsible.Trigger, {}),
|
|
66
75
|
children && /* @__PURE__ */ jsx(IconWrapper, { icon, iconDir, children }),
|
|
67
76
|
indicatorDir === "end" && /* @__PURE__ */ jsx(Collapsible.Trigger, {})
|
|
@@ -69,15 +78,13 @@ const CollapsipleHeader = forwardRef(({
|
|
|
69
78
|
});
|
|
70
79
|
CollapsipleHeader.displayName = "CollapsibleHeader";
|
|
71
80
|
Collapsible.Header = CollapsipleHeader;
|
|
72
|
-
const CollapsipleTriggerButton = styled(EmptyButton).withConfig({
|
|
73
|
-
componentId: "sc-guwmyz-2"
|
|
74
|
-
})(["display:flex;align-items:center;font:inherit;color:inherit;cursor:inherit;"]);
|
|
75
81
|
const CollapsipleTrigger = ({
|
|
76
82
|
onClick: onClickProp,
|
|
77
83
|
children,
|
|
78
84
|
indicatorDir = "start",
|
|
79
85
|
icon,
|
|
80
86
|
iconDir = "start",
|
|
87
|
+
className,
|
|
81
88
|
...props
|
|
82
89
|
}) => {
|
|
83
90
|
const {
|
|
@@ -92,7 +99,7 @@ const CollapsipleTrigger = ({
|
|
|
92
99
|
}
|
|
93
100
|
onOpenChange();
|
|
94
101
|
};
|
|
95
|
-
return /* @__PURE__ */ jsxs(
|
|
102
|
+
return /* @__PURE__ */ jsxs(EmptyButton, { onClick, "aria-label": "trigger children", ...props, className: cn(styles.collapsible__trigger, className), children: [
|
|
96
103
|
indicatorDir === "start" && /* @__PURE__ */ jsx(SvgImage, { "data-trigger-icon": true, name: "chevron-right", "data-open": open.toString(), size: "sm" }),
|
|
97
104
|
children && /* @__PURE__ */ jsx(IconWrapper, { icon, iconDir, children }),
|
|
98
105
|
indicatorDir === "end" && /* @__PURE__ */ jsx(SvgImage, { "data-trigger-icon": true, name: "chevron-right", "data-open": open.toString(), size: "sm" })
|
|
@@ -100,14 +107,17 @@ const CollapsipleTrigger = ({
|
|
|
100
107
|
};
|
|
101
108
|
CollapsipleTrigger.displayName = "CollapsibleTrigger";
|
|
102
109
|
Collapsible.Trigger = CollapsipleTrigger;
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
110
|
+
const contentVariants = cva(styles.collapsible__content, {
|
|
111
|
+
variants: {
|
|
112
|
+
indicatorDir: {
|
|
113
|
+
start: styles["collapsible__content_indicator-dir_start"],
|
|
114
|
+
end: styles["collapsible__content_indicator-dir_end"]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
109
118
|
const CollapsipleContent = ({
|
|
110
119
|
indicatorDir,
|
|
120
|
+
className,
|
|
111
121
|
...props
|
|
112
122
|
}) => {
|
|
113
123
|
const {
|
|
@@ -116,7 +126,9 @@ const CollapsipleContent = ({
|
|
|
116
126
|
if (!open) {
|
|
117
127
|
return;
|
|
118
128
|
}
|
|
119
|
-
return /* @__PURE__ */ jsx(
|
|
129
|
+
return /* @__PURE__ */ jsx("div", { ...props, className: cn(contentVariants({
|
|
130
|
+
indicatorDir
|
|
131
|
+
}), className) });
|
|
120
132
|
};
|
|
121
133
|
CollapsipleContent.displayName = "CollapsibleContent";
|
|
122
134
|
Collapsible.Content = CollapsipleContent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Collapsible/Collapsible.tsx"],"sourcesContent":["import {\n createContext,\n useState,\n HTMLAttributes,\n useContext,\n useEffect,\n forwardRef,\n} from 'react';\nimport { styled } from 'styled-components';\n\nimport { Icon, type ImageName } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport { EmptyButton } from '@/components/EmptyButton';\n\nimport { IconWrapper } from './IconWrapper';\nimport { CollapsibleProps } from './Collapsible.types';\n\ntype ContextProps = {\n open: boolean;\n onOpenChange: () => void;\n};\n\nconst NavContext = createContext<ContextProps>({\n open: false,\n onOpenChange: () => null,\n});\nconst CollapsibleContainer = styled.div`\n width: 100%;\n [data-trigger-icon] {\n visibility: hidden;\n transition: transform 150ms cubic-bezier(0.87, 0, 0.13, 1);\n &[data-open='true'] {\n transform: rotate(90deg);\n }\n }\n [data-collapsible-header]:hover [data-trigger-icon] {\n visibility: visible;\n }\n`;\n\nexport const Collapsible = ({\n open: openProp,\n onOpenChange: onOpenChangeProp,\n children,\n ...props\n}: CollapsibleProps) => {\n const [open, setOpen] = useState(openProp ?? false);\n const onOpenChange = () => {\n setOpen(open => {\n if (typeof onOpenChangeProp === 'function') {\n onOpenChangeProp(!open);\n }\n return !open;\n });\n };\n\n useEffect(() => {\n setOpen(open => openProp ?? open);\n }, [openProp]);\n\n const value = {\n open: openProp ?? open,\n onOpenChange,\n };\n return (\n <CollapsibleContainer {...props}>\n <NavContext.Provider value={value}>{children}</NavContext.Provider>\n </CollapsibleContainer>\n );\n};\n\nconst CollapsipleHeaderContainer = styled.div<{ $indicatorDir: HorizontalDirection }>`\n margin-left: ${({ theme, $indicatorDir }) =>\n $indicatorDir === 'start' ? 0 : theme.click.image.sm.size.width};\n user-select: none;\n`;\n\ninterface CollapsipleHeaderProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ImageName;\n iconDir?: HorizontalDirection;\n indicatorDir?: HorizontalDirection;\n wrapInTrigger?: boolean;\n}\n\nconst CollapsipleHeader = forwardRef<HTMLDivElement, CollapsipleHeaderProps>(\n (\n {\n indicatorDir = 'start',\n icon,\n iconDir,\n children,\n wrapInTrigger,\n onClick: onClickProp,\n ...props\n }: CollapsipleHeaderProps,\n ref\n ) => {\n const { onOpenChange } = useContext(NavContext);\n return (\n <CollapsipleHeaderContainer\n $indicatorDir={indicatorDir}\n ref={ref}\n onClick={e => {\n if (wrapInTrigger && typeof onOpenChange === 'function') {\n onOpenChange();\n }\n if (typeof onClickProp === 'function') {\n onClickProp(e);\n }\n }}\n data-collapsible-header\n {...props}\n >\n {indicatorDir === 'start' && <Collapsible.Trigger />}\n {children && (\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n )}\n {indicatorDir === 'end' && <Collapsible.Trigger />}\n </CollapsipleHeaderContainer>\n );\n }\n);\n\nCollapsipleHeader.displayName = 'CollapsibleHeader';\nCollapsible.Header = CollapsipleHeader;\n\nconst CollapsipleTriggerButton = styled(EmptyButton)<{\n $indicatorDir: HorizontalDirection;\n}>`\n display: flex;\n align-items: center;\n font: inherit;\n color: inherit;\n cursor: inherit;\n`;\ninterface CollapsipleTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n icon?: ImageName;\n iconDir?: HorizontalDirection;\n indicatorDir?: HorizontalDirection;\n}\n\nconst CollapsipleTrigger = ({\n onClick: onClickProp,\n children,\n indicatorDir = 'start',\n icon,\n iconDir = 'start',\n ...props\n}: CollapsipleTriggerProps) => {\n const { open, onOpenChange } = useContext(NavContext);\n const onClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (onClickProp) {\n onClickProp(e);\n }\n onOpenChange();\n };\n\n return (\n <CollapsipleTriggerButton\n onClick={onClick}\n $indicatorDir={indicatorDir}\n aria-label=\"trigger children\"\n {...props}\n >\n {indicatorDir === 'start' && (\n <Icon\n data-trigger-icon\n name=\"chevron-right\"\n data-open={open.toString()}\n size=\"sm\"\n />\n )}\n {children && (\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n )}\n {indicatorDir === 'end' && (\n <Icon\n data-trigger-icon\n name=\"chevron-right\"\n data-open={open.toString()}\n size=\"sm\"\n />\n )}\n </CollapsipleTriggerButton>\n );\n};\n\nCollapsipleTrigger.displayName = 'CollapsibleTrigger';\nCollapsible.Trigger = CollapsipleTrigger;\n\nconst CollapsibleContentWrapper = styled.div<{ $indicatorDir?: HorizontalDirection }>`\n ${({ theme, $indicatorDir }) =>\n $indicatorDir\n ? `${$indicatorDir === 'start' ? 'margin-left' : 'margin-right'}: ${\n theme.click.image.sm.size.width\n }`\n : ''}\n`;\n\nconst CollapsipleContent = ({\n indicatorDir,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { indicatorDir?: HorizontalDirection }) => {\n const { open } = useContext(NavContext);\n if (!open) {\n return;\n }\n return (\n <CollapsibleContentWrapper\n $indicatorDir={indicatorDir}\n {...props}\n />\n );\n};\n\nCollapsipleContent.displayName = 'CollapsibleContent';\nCollapsible.Content = CollapsipleContent;\n"],"names":["NavContext","createContext","open","onOpenChange","CollapsibleContainer","styled","div","withConfig","componentId","Collapsible","openProp","onOpenChangeProp","children","props","setOpen","useState","useEffect","value","CollapsipleHeaderContainer","theme","$indicatorDir","click","image","sm","size","width","CollapsipleHeader","forwardRef","indicatorDir","icon","iconDir","wrapInTrigger","onClick","onClickProp","ref","useContext","e","displayName","Header","CollapsipleTriggerButton","EmptyButton","CollapsipleTrigger","preventDefault","stopPropagation","Icon","toString","Trigger","CollapsibleContentWrapper","CollapsipleContent","Content"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Collapsible/Collapsible.tsx"],"sourcesContent":["import {\n createContext,\n useState,\n HTMLAttributes,\n useContext,\n useEffect,\n forwardRef,\n} from 'react';\n\nimport { cn, cva } from '@/lib/cva';\nimport { Icon, type ImageName } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport { EmptyButton } from '@/components/EmptyButton';\n\nimport { IconWrapper } from './IconWrapper';\nimport { CollapsibleProps } from './Collapsible.types';\nimport styles from './Collapsible.module.css';\n\ntype ContextProps = {\n open: boolean;\n onOpenChange: () => void;\n};\n\nconst NavContext = createContext<ContextProps>({\n open: false,\n onOpenChange: () => null,\n});\n\nexport const Collapsible = ({\n open: openProp,\n onOpenChange: onOpenChangeProp,\n children,\n className,\n ...props\n}: CollapsibleProps) => {\n const [open, setOpen] = useState(openProp ?? false);\n const onOpenChange = () => {\n setOpen(open => {\n if (typeof onOpenChangeProp === 'function') {\n onOpenChangeProp(!open);\n }\n return !open;\n });\n };\n\n useEffect(() => {\n setOpen(open => openProp ?? open);\n }, [openProp]);\n\n const value = {\n open: openProp ?? open,\n onOpenChange,\n };\n return (\n <div\n {...props}\n className={cn(styles.collapsible, className)}\n >\n <NavContext.Provider value={value}>{children}</NavContext.Provider>\n </div>\n );\n};\n\nconst headerVariants = cva(styles.collapsible__header, {\n variants: {\n indicatorDir: {\n start: styles['collapsible__header_indicator-dir_start'],\n end: styles['collapsible__header_indicator-dir_end'],\n },\n },\n defaultVariants: {\n indicatorDir: 'start',\n },\n});\n\ninterface CollapsipleHeaderProps extends HTMLAttributes<HTMLDivElement> {\n icon?: ImageName;\n iconDir?: HorizontalDirection;\n indicatorDir?: HorizontalDirection;\n wrapInTrigger?: boolean;\n}\n\nconst CollapsipleHeader = forwardRef<HTMLDivElement, CollapsipleHeaderProps>(\n (\n {\n indicatorDir = 'start',\n icon,\n iconDir,\n children,\n wrapInTrigger,\n onClick: onClickProp,\n className,\n ...props\n }: CollapsipleHeaderProps,\n ref\n ) => {\n const { onOpenChange } = useContext(NavContext);\n return (\n <div\n ref={ref}\n onClick={e => {\n if (wrapInTrigger && typeof onOpenChange === 'function') {\n onOpenChange();\n }\n if (typeof onClickProp === 'function') {\n onClickProp(e);\n }\n }}\n data-collapsible-header\n {...props}\n className={cn(headerVariants({ indicatorDir }), className)}\n >\n {indicatorDir === 'start' && <Collapsible.Trigger />}\n {children && (\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n )}\n {indicatorDir === 'end' && <Collapsible.Trigger />}\n </div>\n );\n }\n);\n\nCollapsipleHeader.displayName = 'CollapsibleHeader';\nCollapsible.Header = CollapsipleHeader;\n\ninterface CollapsipleTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n icon?: ImageName;\n iconDir?: HorizontalDirection;\n indicatorDir?: HorizontalDirection;\n}\n\nconst CollapsipleTrigger = ({\n onClick: onClickProp,\n children,\n indicatorDir = 'start',\n icon,\n iconDir = 'start',\n className,\n ...props\n}: CollapsipleTriggerProps) => {\n const { open, onOpenChange } = useContext(NavContext);\n const onClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (onClickProp) {\n onClickProp(e);\n }\n onOpenChange();\n };\n\n return (\n <EmptyButton\n onClick={onClick}\n aria-label=\"trigger children\"\n {...props}\n className={cn(styles.collapsible__trigger, className)}\n >\n {indicatorDir === 'start' && (\n <Icon\n data-trigger-icon\n name=\"chevron-right\"\n data-open={open.toString()}\n size=\"sm\"\n />\n )}\n {children && (\n <IconWrapper\n icon={icon}\n iconDir={iconDir}\n >\n {children}\n </IconWrapper>\n )}\n {indicatorDir === 'end' && (\n <Icon\n data-trigger-icon\n name=\"chevron-right\"\n data-open={open.toString()}\n size=\"sm\"\n />\n )}\n </EmptyButton>\n );\n};\n\nCollapsipleTrigger.displayName = 'CollapsibleTrigger';\nCollapsible.Trigger = CollapsipleTrigger;\n\nconst contentVariants = cva(styles.collapsible__content, {\n variants: {\n indicatorDir: {\n start: styles['collapsible__content_indicator-dir_start'],\n end: styles['collapsible__content_indicator-dir_end'],\n },\n },\n});\n\nconst CollapsipleContent = ({\n indicatorDir,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { indicatorDir?: HorizontalDirection }) => {\n const { open } = useContext(NavContext);\n if (!open) {\n return;\n }\n return (\n <div\n {...props}\n className={cn(contentVariants({ indicatorDir }), className)}\n />\n );\n};\n\nCollapsipleContent.displayName = 'CollapsibleContent';\nCollapsible.Content = CollapsipleContent;\n"],"names":["NavContext","createContext","open","onOpenChange","Collapsible","openProp","onOpenChangeProp","children","className","props","setOpen","useState","useEffect","value","cn","styles","collapsible","headerVariants","cva","collapsible__header","variants","indicatorDir","start","end","defaultVariants","CollapsipleHeader","forwardRef","icon","iconDir","wrapInTrigger","onClick","onClickProp","ref","useContext","e","displayName","Header","CollapsipleTrigger","preventDefault","stopPropagation","collapsible__trigger","Icon","toString","Trigger","contentVariants","collapsible__content","CollapsipleContent","Content"],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
this reset a nested Container would inherit an ancestor's value — e.g. a
|
|
6
6
|
parent with `fillHeight` would force `height: 100%` onto every descendant
|
|
7
7
|
Container, and a parent with `grow` would make children flex-grow too.
|
|
8
|
-
Resetting
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
Resetting the variables on `.container` prevents inheritance; using `initial`
|
|
9
|
+
makes the consuming declarations compute to their initial values when the prop
|
|
10
|
+
is unset (the `var()` fallbacks below are an extra guard). */
|
|
11
11
|
--container-height: initial;
|
|
12
12
|
--container-min-height: initial;
|
|
13
13
|
--container-max-height: initial;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
.hover-card__trigger__tMcTR {
|
|
2
|
+
/* stylelint-disable-next-line plugin/no-unsupported-browser-features -- `fit-content`
|
|
3
|
+
keyword on `width` is widely supported on evergreen browsers; the original
|
|
4
|
+
styled-components rule used the same value. */
|
|
5
|
+
width: fit-content;
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HoverCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import "./HoverCard.css";
|
|
1
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
3
|
import * as RadixHoverCard from '@radix-ui/react-hover-card';
|
|
3
4
|
import { GenericPopoverMenuPanel, Arrow } from '../GenericMenu/index.js';
|
|
4
|
-
import {
|
|
5
|
+
import { cn } from '../../lib/cva.js';
|
|
5
6
|
import Popover_Arrow from '../Assets/Icons/Popover-Arrow.js';
|
|
7
|
+
import styles from './HoverCard.module.css.js';
|
|
6
8
|
|
|
7
9
|
const HoverCard = ({
|
|
8
10
|
children,
|
|
@@ -10,14 +12,12 @@ const HoverCard = ({
|
|
|
10
12
|
}) => {
|
|
11
13
|
return /* @__PURE__ */ jsx(RadixHoverCard.Root, { ...props, children });
|
|
12
14
|
};
|
|
13
|
-
const Trigger = styled(RadixHoverCard.Trigger).withConfig({
|
|
14
|
-
componentId: "sc-1ect7b6-0"
|
|
15
|
-
})(["width:fit-content;"]);
|
|
16
15
|
const HoverCardTrigger = ({
|
|
17
16
|
children,
|
|
17
|
+
className,
|
|
18
18
|
...props
|
|
19
19
|
}) => {
|
|
20
|
-
return /* @__PURE__ */ jsx(Trigger, { ...props, children });
|
|
20
|
+
return /* @__PURE__ */ jsx(RadixHoverCard.Trigger, { ...props, className: cn(styles["hover-card__trigger"], className), children });
|
|
21
21
|
};
|
|
22
22
|
HoverCardTrigger.displayName = "HoverCardTrigger";
|
|
23
23
|
HoverCard.Trigger = HoverCardTrigger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/HoverCard/HoverCard.tsx"],"sourcesContent":["import * as RadixHoverCard from '@radix-ui/react-hover-card';\nimport { ReactNode } from 'react';\nimport { Arrow, GenericPopoverMenuPanel } from '@/components/GenericMenu';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/HoverCard/HoverCard.tsx"],"sourcesContent":["import * as RadixHoverCard from '@radix-ui/react-hover-card';\nimport { ReactNode } from 'react';\nimport { Arrow, GenericPopoverMenuPanel } from '@/components/GenericMenu';\nimport { cn } from '@/lib/cva';\nimport Popover_Arrow from '@/components/Assets/Icons/Popover-Arrow';\nimport styles from './HoverCard.module.css';\n\nexport interface HoverCardContentProps extends RadixHoverCard.HoverCardContentProps {\n showArrow?: boolean;\n forceMount?: true;\n container?: HTMLElement | null;\n children: ReactNode;\n}\n\nexport const HoverCard = ({ children, ...props }: RadixHoverCard.HoverCardProps) => {\n return <RadixHoverCard.Root {...props}>{children}</RadixHoverCard.Root>;\n};\n\nconst HoverCardTrigger = ({\n children,\n className,\n ...props\n}: RadixHoverCard.HoverCardTriggerProps) => {\n return (\n <RadixHoverCard.Trigger\n {...props}\n className={cn(styles['hover-card__trigger'], className)}\n >\n {children}\n </RadixHoverCard.Trigger>\n );\n};\nHoverCardTrigger.displayName = 'HoverCardTrigger';\nHoverCard.Trigger = HoverCardTrigger;\n\nconst HoverCardContent = ({\n children,\n showArrow,\n forceMount,\n container,\n ...props\n}: HoverCardContentProps) => {\n return (\n <RadixHoverCard.Portal\n forceMount={forceMount}\n container={container}\n >\n <GenericPopoverMenuPanel\n as={RadixHoverCard.Content}\n $type=\"hover-card\"\n $showArrow={showArrow}\n {...props}\n >\n {showArrow && (\n <Arrow\n asChild\n as={RadixHoverCard.Arrow}\n width={15}\n height={10}\n >\n <Popover_Arrow />\n </Arrow>\n )}\n {children}\n </GenericPopoverMenuPanel>\n </RadixHoverCard.Portal>\n );\n};\nHoverCardContent.displayName = 'HoverCardContent';\nHoverCard.Content = HoverCardContent;\n"],"names":["HoverCard","children","props","HoverCardTrigger","className","cn","styles","displayName","Trigger","HoverCardContent","showArrow","forceMount","container","RadixHoverCard","Content","Arrow"],"mappings":";;;;;;;AAcO,MAAMA,YAAYA,CAAC;AAAA,EAAEC,QAAAA;AAAAA,EAAU,GAAGC;AAAqC,CAAA,KAAM;AAClF,EAAA,2BAAQ,cAAA,CAAe,IAAA,EAAf,KAAwBA,OAAQD,QAAAA,EAAS,CAAA;AACnD;AAEA,MAAME,mBAAmBA,CAAC;AAAA,EACxBF,QAAAA;AAAAA,EACAG,SAAAA;AAAAA,EACA,GAAGF;AACiC,CAAA,KAAM;AAC1C,EAAA,uBACE,GAAA,CAAC,cAAA,CAAe,OAAA,EAAf,EACC,GAAIA,KAAAA,EACJ,SAAA,EAAWG,EAAAA,CAAGC,MAAAA,CAAO,qBAAqB,CAAA,EAAGF,SAAS,GAErDH,QAAAA,EACH,CAAA;AAEJ,CAAA;AACAE,gBAAAA,CAAiBI,WAAAA,GAAc,kBAAA;AAC/BP,SAAAA,CAAUQ,OAAAA,GAAUL,gBAAAA;AAEpB,MAAMM,mBAAmBA,CAAC;AAAA,EACxBR,QAAAA;AAAAA,EACAS,SAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACA,GAAGV;AACkB,CAAA,KAAM;AAC3B,EAAA,2BACG,cAAA,CAAe,MAAA,EAAf,EACC,UAAA,EACA,WAEA,QAAA,kBAAA,IAAA,CAAC,uBAAA,EAAA,EACC,EAAA,EAAIW,cAAAA,CAAeC,SACnB,KAAA,EAAM,YAAA,EACN,UAAA,EAAYJ,SAAAA,EACZ,GAAIR,KAAAA,EAEHQ,QAAAA,EAAAA;AAAAA,IAAAA,SAAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EACC,OAAA,EAAO,IAAA,EACP,EAAA,EAAIG,cAAAA,CAAeE,KAAAA,EACnB,KAAA,EAAO,EAAA,EACP,MAAA,EAAQ,EAAA,EAER,QAAA,kBAAA,GAAA,CAAC,iBAAa,CAAA,EAChB,CAAA;AAAA,IAEDd;AAAAA,GAAAA,EACH,CAAA,EACF,CAAA;AAEJ,CAAA;AACAQ,gBAAAA,CAAiBF,WAAAA,GAAc,kBAAA;AAC/BP,SAAAA,CAAUc,OAAAA,GAAUL,gBAAAA;;;;"}
|
|
@@ -118,18 +118,22 @@
|
|
|
118
118
|
--link-font: var(--typography-styles-product-text-mono-lg);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
/* The inner Icon
|
|
122
|
-
descendant selector inside IconWrapper; here we
|
|
123
|
-
straight to the Icon so the selector stays a single
|
|
124
|
-
effective specificity. */
|
|
125
|
-
|
|
126
|
-
.
|
|
121
|
+
/* The inner Icon is a `link__icon` element — it receives the scoped class via
|
|
122
|
+
className. The original used a descendant selector inside IconWrapper; here we
|
|
123
|
+
pass the scoped class straight to the Icon so the selector stays a single
|
|
124
|
+
class with the same effective specificity. */
|
|
125
|
+
/* stylelint-disable-next-line block-no-empty -- base element required by BEM */
|
|
126
|
+
.link__icon__El8JR {
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.link__icon_size_xs__qMUN-,
|
|
130
|
+
.link__icon_size_sm__d2ZIU {
|
|
127
131
|
width: var(--click-link-icon-size-sm-width);
|
|
128
132
|
height: var(--click-link-icon-size-sm-height);
|
|
129
133
|
}
|
|
130
134
|
|
|
131
|
-
.
|
|
132
|
-
.
|
|
135
|
+
.link__icon_size_md__-5EZ1,
|
|
136
|
+
.link__icon_size_lg__RY5Y1 {
|
|
133
137
|
width: var(--click-link-icon-size-md-width);
|
|
134
138
|
height: var(--click-link-icon-size-md-height);
|
|
135
139
|
}
|
|
@@ -8,6 +8,11 @@ const link_weight_medium = "link_weight_medium__Sot5E";
|
|
|
8
8
|
const link_weight_semibold = "link_weight_semibold__6STFO";
|
|
9
9
|
const link_weight_bold = "link_weight_bold__FWQyo";
|
|
10
10
|
const link_weight_mono = "link_weight_mono__Mzdum";
|
|
11
|
+
const link__icon = "link__icon__El8JR";
|
|
12
|
+
const link__icon_size_xs = "link__icon_size_xs__qMUN-";
|
|
13
|
+
const link__icon_size_sm = "link__icon_size_sm__d2ZIU";
|
|
14
|
+
const link__icon_size_md = "link__icon_size_md__-5EZ1";
|
|
15
|
+
const link__icon_size_lg = "link__icon_size_lg__RY5Y1";
|
|
11
16
|
const styles = {
|
|
12
17
|
link: link,
|
|
13
18
|
link_size_xs: link_size_xs,
|
|
@@ -19,11 +24,12 @@ const styles = {
|
|
|
19
24
|
link_weight_semibold: link_weight_semibold,
|
|
20
25
|
link_weight_bold: link_weight_bold,
|
|
21
26
|
link_weight_mono: link_weight_mono,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
link__icon: link__icon,
|
|
28
|
+
link__icon_size_xs: link__icon_size_xs,
|
|
29
|
+
link__icon_size_sm: link__icon_size_sm,
|
|
30
|
+
link__icon_size_md: link__icon_size_md,
|
|
31
|
+
link__icon_size_lg: link__icon_size_lg
|
|
26
32
|
};
|
|
27
33
|
|
|
28
|
-
export { styles as default, link, link_size_lg, link_size_md, link_size_sm, link_size_xs, link_weight_bold, link_weight_medium, link_weight_mono, link_weight_normal, link_weight_semibold };
|
|
34
|
+
export { styles as default, link, link__icon, link__icon_size_lg, link__icon_size_md, link__icon_size_sm, link__icon_size_xs, link_size_lg, link_size_md, link_size_sm, link_size_xs, link_weight_bold, link_weight_medium, link_weight_mono, link_weight_normal, link_weight_semibold };
|
|
29
35
|
//# sourceMappingURL=Link.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Link.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -27,13 +27,13 @@ const linkVariants = cva(styles.link, {
|
|
|
27
27
|
weight: "normal"
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
const
|
|
30
|
+
const iconVariants = cva(styles["link__icon"], {
|
|
31
31
|
variants: {
|
|
32
32
|
size: {
|
|
33
|
-
xs: styles["
|
|
34
|
-
sm: styles["
|
|
35
|
-
md: styles["
|
|
36
|
-
lg: styles["
|
|
33
|
+
xs: styles["link__icon_size_xs"],
|
|
34
|
+
sm: styles["link__icon_size_sm"],
|
|
35
|
+
md: styles["link__icon_size_md"],
|
|
36
|
+
lg: styles["link__icon_size_lg"]
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
defaultVariants: {
|
|
@@ -56,7 +56,7 @@ const _Link = ({
|
|
|
56
56
|
weight
|
|
57
57
|
}), className), children: [
|
|
58
58
|
children,
|
|
59
|
-
icon && /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(SvgImage, { name: icon, className: cn(
|
|
59
|
+
icon && /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(SvgImage, { name: icon, className: cn(iconVariants({
|
|
60
60
|
size
|
|
61
61
|
})), "data-testid": icon }) })
|
|
62
62
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Link/Link.tsx"],"sourcesContent":["import {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactEventHandler,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { Icon } from '@/components/Icon';\nimport type { IconName } from '@/components/Icon/Icon.types';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Link.module.css';\nimport type { TextSize, TextWeight } from '@/components/Text';\n\nexport interface LinkProps<T extends ElementType = 'a'> {\n /** The font size of the link text */\n size?: TextSize;\n /** The font weight of the link text */\n weight?: TextWeight;\n /** Click event handler */\n onClick?: ReactEventHandler;\n /** The content to display inside the link */\n children?: React.ReactNode;\n /** Optional icon to display after the link text */\n icon?: IconName;\n /** Custom component to render as the link element */\n component?: T;\n}\n\nconst linkVariants = cva(styles.link, {\n variants: {\n size: {\n xs: styles['link_size_xs'],\n sm: styles['link_size_sm'],\n md: styles['link_size_md'],\n lg: styles['link_size_lg'],\n },\n weight: {\n normal: styles['link_weight_normal'],\n medium: styles['link_weight_medium'],\n semibold: styles['link_weight_semibold'],\n bold: styles['link_weight_bold'],\n mono: styles['link_weight_mono'],\n },\n },\n defaultVariants: {\n size: 'md',\n weight: 'normal',\n },\n});\n\nconst
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Link/Link.tsx"],"sourcesContent":["import {\n ComponentProps,\n ComponentPropsWithRef,\n ElementType,\n ReactEventHandler,\n ReactNode,\n forwardRef,\n} from 'react';\nimport { Icon } from '@/components/Icon';\nimport type { IconName } from '@/components/Icon/Icon.types';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Link.module.css';\nimport type { TextSize, TextWeight } from '@/components/Text';\n\nexport interface LinkProps<T extends ElementType = 'a'> {\n /** The font size of the link text */\n size?: TextSize;\n /** The font weight of the link text */\n weight?: TextWeight;\n /** Click event handler */\n onClick?: ReactEventHandler;\n /** The content to display inside the link */\n children?: React.ReactNode;\n /** Optional icon to display after the link text */\n icon?: IconName;\n /** Custom component to render as the link element */\n component?: T;\n}\n\nconst linkVariants = cva(styles.link, {\n variants: {\n size: {\n xs: styles['link_size_xs'],\n sm: styles['link_size_sm'],\n md: styles['link_size_md'],\n lg: styles['link_size_lg'],\n },\n weight: {\n normal: styles['link_weight_normal'],\n medium: styles['link_weight_medium'],\n semibold: styles['link_weight_semibold'],\n bold: styles['link_weight_bold'],\n mono: styles['link_weight_mono'],\n },\n },\n defaultVariants: {\n size: 'md',\n weight: 'normal',\n },\n});\n\nconst iconVariants = cva(styles['link__icon'], {\n variants: {\n size: {\n xs: styles['link__icon_size_xs'],\n sm: styles['link__icon_size_sm'],\n md: styles['link__icon_size_md'],\n lg: styles['link__icon_size_lg'],\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\ntype LinkPolymorphicComponent = <T extends ElementType = 'a'>(\n props: Omit<ComponentProps<T>, keyof LinkProps<T>> & LinkProps<T>\n) => ReactNode;\n\n/** Component for linking to other pages or sections from with body text */\nconst _Link = <T extends ElementType = 'a'>(\n {\n size = 'md',\n weight = 'normal',\n onClick,\n icon,\n children,\n component,\n className,\n ...props\n }: Omit<ComponentProps<T>, keyof LinkProps<T>> & LinkProps<T> & { className?: string },\n ref: ComponentPropsWithRef<T>['ref']\n) => {\n const Component = component ?? 'a';\n return (\n <Component\n ref={ref}\n onClick={onClick}\n {...props}\n className={cn(linkVariants({ size, weight }), className)}\n >\n {children}\n {icon && (\n <span>\n <Icon\n name={icon}\n className={cn(iconVariants({ size }))}\n data-testid={icon}\n />\n </span>\n )}\n </Component>\n );\n};\nexport const Link: LinkPolymorphicComponent = forwardRef(_Link);\n"],"names":["linkVariants","cva","styles","link","variants","size","xs","sm","md","lg","weight","normal","medium","semibold","bold","mono","defaultVariants","iconVariants","_Link","onClick","icon","children","component","className","props","ref","Component","cn","Icon","Link","forwardRef"],"mappings":";;;;;;;AA6BA,MAAMA,YAAAA,GAAeC,GAAAA,CAAIC,MAAAA,CAAOC,IAAAA,EAAM;AAAA,EACpCC,QAAAA,EAAU;AAAA,IACRC,IAAAA,EAAM;AAAA,MACJC,EAAAA,EAAIJ,OAAO,cAAc,CAAA;AAAA,MACzBK,EAAAA,EAAIL,OAAO,cAAc,CAAA;AAAA,MACzBM,EAAAA,EAAIN,OAAO,cAAc,CAAA;AAAA,MACzBO,EAAAA,EAAIP,OAAO,cAAc;AAAA,KAC3B;AAAA,IACAQ,MAAAA,EAAQ;AAAA,MACNC,MAAAA,EAAQT,OAAO,oBAAoB,CAAA;AAAA,MACnCU,MAAAA,EAAQV,OAAO,oBAAoB,CAAA;AAAA,MACnCW,QAAAA,EAAUX,OAAO,sBAAsB,CAAA;AAAA,MACvCY,IAAAA,EAAMZ,OAAO,kBAAkB,CAAA;AAAA,MAC/Ba,IAAAA,EAAMb,OAAO,kBAAkB;AAAA;AACjC,GACF;AAAA,EACAc,eAAAA,EAAiB;AAAA,IACfX,IAAAA,EAAM,IAAA;AAAA,IACNK,MAAAA,EAAQ;AAAA;AAEZ,CAAC,CAAA;AAED,MAAMO,YAAAA,GAAehB,GAAAA,CAAIC,MAAAA,CAAO,YAAY,CAAA,EAAG;AAAA,EAC7CE,QAAAA,EAAU;AAAA,IACRC,IAAAA,EAAM;AAAA,MACJC,EAAAA,EAAIJ,OAAO,oBAAoB,CAAA;AAAA,MAC/BK,EAAAA,EAAIL,OAAO,oBAAoB,CAAA;AAAA,MAC/BM,EAAAA,EAAIN,OAAO,oBAAoB,CAAA;AAAA,MAC/BO,EAAAA,EAAIP,OAAO,oBAAoB;AAAA;AACjC,GACF;AAAA,EACAc,eAAAA,EAAiB;AAAA,IACfX,IAAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAOD,MAAMa,QAAQ,CACZ;AAAA,EACEb,IAAAA,GAAO,IAAA;AAAA,EACPK,MAAAA,GAAS,QAAA;AAAA,EACTS,OAAAA;AAAAA,EACAC,IAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACA,GAAGC;AACgF,CAAA,EACrFC,GAAAA,KACG;AACH,EAAA,MAAMC,YAAYJ,SAAAA,IAAa,GAAA;AAC/B,EAAA,uBACE,IAAA,CAAC,aACC,GAAA,EACA,OAAA,EACA,GAAIE,KAAAA,EACJ,SAAA,EAAWG,GAAG3B,YAAAA,CAAa;AAAA,IAAEK,IAAAA;AAAAA,IAAMK;AAAAA,GAAQ,CAAA,EAAGa,SAAS,CAAA,EAEtDF,QAAAA,EAAAA;AAAAA,IAAAA,QAAAA;AAAAA,IACAD,IAAAA,wBACE,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAACQ,YACC,IAAA,EAAMR,IAAAA,EACN,SAAA,EAAWO,EAAAA,CAAGV,YAAAA,CAAa;AAAA,MAAEZ;AAAAA,KAAM,CAAC,CAAA,EACpC,aAAA,EAAae,MAAK,CAAA,EAEtB;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AACO,MAAMS,IAAAA,GAAiCC,WAAWZ,KAAK;;;;"}
|
|
@@ -455,7 +455,7 @@ const MultiSelectCheckboxItem = forwardRef(({
|
|
|
455
455
|
}
|
|
456
456
|
const isChecked = selectedValues.includes(value);
|
|
457
457
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
458
|
-
/* @__PURE__ */ jsx(GenericMenuItem, { ...props, "data-value": value, onClick: handleMenuItemClick, onMouseOver: handleMenuItemMouseOver, ref: forwardedRef, "data-disabled": disabled ? true : void 0, "data-highlighted": highlighted == value ? "true" : void 0, "data-testid": `multi-select-checkbox-${value}`, "cui-select-item": "", children: /* @__PURE__ */ jsxs(Container, { orientation: "horizontal", gap: "xs", overflow: "hidden", children: [
|
|
458
|
+
/* @__PURE__ */ jsx(GenericMenuItem, { ...props, "data-value": value, onClick: handleMenuItemClick, onMouseOver: handleMenuItemMouseOver, ref: forwardedRef, "data-disabled": disabled ? true : void 0, "data-highlighted": highlighted == value ? "true" : void 0, "data-testid": `multi-select-checkbox-${value}`, "cui-select-item": "", children: /* @__PURE__ */ jsxs(Container, { orientation: "horizontal", gap: "xs", overflow: "hidden", isResponsive: false, children: [
|
|
459
459
|
/* @__PURE__ */ jsx(Checkbox, { checked: isChecked, "data-testid": "multi-select-checkbox", disabled, variant: variant ?? "default" }),
|
|
460
460
|
/* @__PURE__ */ jsx(IconWrapper, { icon, iconDir, gap: "xxs", isResponsive: false, children: label ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
461
461
|
label,
|