@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.
Files changed (122) hide show
  1. package/dist/cjs/click-ui.css +623 -11
  2. package/dist/cjs/components/Accordion/Accordion.css +111 -0
  3. package/dist/cjs/components/Accordion/Accordion.module.css.cjs +33 -0
  4. package/dist/cjs/components/Accordion/Accordion.module.css.cjs.map +1 -0
  5. package/dist/cjs/components/Accordion/index.cjs +51 -54
  6. package/dist/cjs/components/Accordion/index.cjs.map +1 -1
  7. package/dist/cjs/components/Alert/Alert.css +169 -0
  8. package/dist/cjs/components/Alert/Alert.module.css.cjs +75 -0
  9. package/dist/cjs/components/Alert/Alert.module.css.cjs.map +1 -0
  10. package/dist/cjs/components/Alert/index.cjs +113 -69
  11. package/dist/cjs/components/Alert/index.cjs.map +1 -1
  12. package/dist/cjs/components/Assets/Icons/Check.cjs +1 -1
  13. package/dist/cjs/components/Assets/Icons/Check.cjs.map +1 -1
  14. package/dist/cjs/components/Assets/Icons/Dollar.cjs +10 -0
  15. package/dist/cjs/components/Assets/Icons/Dollar.cjs.map +1 -0
  16. package/dist/cjs/components/Assets/Icons/Pin.cjs +13 -0
  17. package/dist/cjs/components/Assets/Icons/Pin.cjs.map +1 -0
  18. package/dist/cjs/components/Assets/Icons/Unpin.cjs +17 -0
  19. package/dist/cjs/components/Assets/Icons/Unpin.cjs.map +1 -0
  20. package/dist/cjs/components/Assets/Icons/system/IconsLight.cjs +6 -0
  21. package/dist/cjs/components/Assets/Icons/system/IconsLight.cjs.map +1 -1
  22. package/dist/cjs/components/Button/index.cjs +2 -1
  23. package/dist/cjs/components/Button/index.cjs.map +1 -1
  24. package/dist/cjs/components/Checkbox/index.cjs +1 -11
  25. package/dist/cjs/components/Checkbox/index.cjs.map +1 -1
  26. package/dist/cjs/components/Collapsible/Collapsible.css +79 -0
  27. package/dist/cjs/components/Collapsible/Collapsible.module.css.cjs +31 -0
  28. package/dist/cjs/components/Collapsible/Collapsible.module.css.cjs.map +1 -0
  29. package/dist/cjs/components/Collapsible/IconWrapper.cjs +4 -11
  30. package/dist/cjs/components/Collapsible/IconWrapper.cjs.map +1 -1
  31. package/dist/cjs/components/Collapsible/index.cjs +36 -24
  32. package/dist/cjs/components/Collapsible/index.cjs.map +1 -1
  33. package/dist/cjs/components/Container/Container.css +3 -3
  34. package/dist/cjs/components/HoverCard/HoverCard.css +6 -0
  35. package/dist/cjs/components/HoverCard/HoverCard.module.css.cjs +10 -0
  36. package/dist/cjs/components/HoverCard/HoverCard.module.css.cjs.map +1 -0
  37. package/dist/cjs/components/HoverCard/index.cjs +5 -5
  38. package/dist/cjs/components/HoverCard/index.cjs.map +1 -1
  39. package/dist/cjs/components/Link/Link.css +12 -8
  40. package/dist/cjs/components/Link/Link.module.css.cjs +15 -4
  41. package/dist/cjs/components/Link/Link.module.css.cjs.map +1 -1
  42. package/dist/cjs/components/Link/index.cjs +6 -6
  43. package/dist/cjs/components/Link/index.cjs.map +1 -1
  44. package/dist/cjs/components/Select/common/InternalSelect.cjs +1 -1
  45. package/dist/cjs/components/Select/common/InternalSelect.cjs.map +1 -1
  46. package/dist/cjs/components/SidebarNavigationItem/SidebarNavigationItem.css +167 -0
  47. package/dist/cjs/components/SidebarNavigationItem/SidebarNavigationItem.module.css.cjs +23 -0
  48. package/dist/cjs/components/SidebarNavigationItem/SidebarNavigationItem.module.css.cjs.map +1 -0
  49. package/dist/cjs/components/SidebarNavigationItem/index.cjs +60 -69
  50. package/dist/cjs/components/SidebarNavigationItem/index.cjs.map +1 -1
  51. package/dist/cjs/components/SidebarNavigationTitle/SidebarNavigationTitle.css +76 -0
  52. package/dist/cjs/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.cjs +19 -0
  53. package/dist/cjs/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.cjs.map +1 -0
  54. package/dist/cjs/components/SidebarNavigationTitle/index.cjs +35 -23
  55. package/dist/cjs/components/SidebarNavigationTitle/index.cjs.map +1 -1
  56. package/dist/esm/click-ui.css +623 -11
  57. package/dist/esm/components/Accordion/Accordion.css +111 -0
  58. package/dist/esm/components/Accordion/Accordion.module.css.js +22 -0
  59. package/dist/esm/components/Accordion/Accordion.module.css.js.map +1 -0
  60. package/dist/esm/components/Accordion/index.js +51 -54
  61. package/dist/esm/components/Accordion/index.js.map +1 -1
  62. package/dist/esm/components/Alert/Alert.css +169 -0
  63. package/dist/esm/components/Alert/Alert.module.css.js +53 -0
  64. package/dist/esm/components/Alert/Alert.module.css.js.map +1 -0
  65. package/dist/esm/components/Alert/index.js +113 -69
  66. package/dist/esm/components/Alert/index.js.map +1 -1
  67. package/dist/esm/components/Assets/Icons/Check.js +1 -1
  68. package/dist/esm/components/Assets/Icons/Check.js.map +1 -1
  69. package/dist/esm/components/Assets/Icons/Dollar.js +6 -0
  70. package/dist/esm/components/Assets/Icons/Dollar.js.map +1 -0
  71. package/dist/esm/components/Assets/Icons/Pin.js +9 -0
  72. package/dist/esm/components/Assets/Icons/Pin.js.map +1 -0
  73. package/dist/esm/components/Assets/Icons/Unpin.js +13 -0
  74. package/dist/esm/components/Assets/Icons/Unpin.js.map +1 -0
  75. package/dist/esm/components/Assets/Icons/system/IconsLight.js +6 -0
  76. package/dist/esm/components/Assets/Icons/system/IconsLight.js.map +1 -1
  77. package/dist/esm/components/Button/index.js +2 -1
  78. package/dist/esm/components/Button/index.js.map +1 -1
  79. package/dist/esm/components/Checkbox/index.js +1 -11
  80. package/dist/esm/components/Checkbox/index.js.map +1 -1
  81. package/dist/esm/components/Collapsible/Collapsible.css +79 -0
  82. package/dist/esm/components/Collapsible/Collapsible.module.css.js +21 -0
  83. package/dist/esm/components/Collapsible/Collapsible.module.css.js.map +1 -0
  84. package/dist/esm/components/Collapsible/IconWrapper.js +4 -11
  85. package/dist/esm/components/Collapsible/IconWrapper.js.map +1 -1
  86. package/dist/esm/components/Collapsible/index.js +36 -24
  87. package/dist/esm/components/Collapsible/index.js.map +1 -1
  88. package/dist/esm/components/Container/Container.css +3 -3
  89. package/dist/esm/components/HoverCard/HoverCard.css +6 -0
  90. package/dist/esm/components/HoverCard/HoverCard.module.css.js +6 -0
  91. package/dist/esm/components/HoverCard/HoverCard.module.css.js.map +1 -0
  92. package/dist/esm/components/HoverCard/index.js +5 -5
  93. package/dist/esm/components/HoverCard/index.js.map +1 -1
  94. package/dist/esm/components/Link/Link.css +12 -8
  95. package/dist/esm/components/Link/Link.module.css.js +11 -5
  96. package/dist/esm/components/Link/Link.module.css.js.map +1 -1
  97. package/dist/esm/components/Link/index.js +6 -6
  98. package/dist/esm/components/Link/index.js.map +1 -1
  99. package/dist/esm/components/Select/common/InternalSelect.js +1 -1
  100. package/dist/esm/components/Select/common/InternalSelect.js.map +1 -1
  101. package/dist/esm/components/SidebarNavigationItem/SidebarNavigationItem.css +167 -0
  102. package/dist/esm/components/SidebarNavigationItem/SidebarNavigationItem.module.css.js +16 -0
  103. package/dist/esm/components/SidebarNavigationItem/SidebarNavigationItem.module.css.js.map +1 -0
  104. package/dist/esm/components/SidebarNavigationItem/index.js +60 -69
  105. package/dist/esm/components/SidebarNavigationItem/index.js.map +1 -1
  106. package/dist/esm/components/SidebarNavigationTitle/SidebarNavigationTitle.css +76 -0
  107. package/dist/esm/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.js +12 -0
  108. package/dist/esm/components/SidebarNavigationTitle/SidebarNavigationTitle.module.css.js.map +1 -0
  109. package/dist/esm/components/SidebarNavigationTitle/index.js +35 -23
  110. package/dist/esm/components/SidebarNavigationTitle/index.js.map +1 -1
  111. package/dist/types/components/Accordion/Accordion.d.ts +3 -3
  112. package/dist/types/components/Assets/Icons/Dollar.d.ts +3 -0
  113. package/dist/types/components/Assets/Icons/Pin.d.ts +3 -0
  114. package/dist/types/components/Assets/Icons/Unpin.d.ts +3 -0
  115. package/dist/types/components/Assets/Icons/system/types.d.ts +1 -1
  116. package/dist/types/components/Button/Button.d.ts +1 -24
  117. package/dist/types/components/Button/Button.types.d.ts +3 -0
  118. package/dist/types/components/Collapsible/Collapsible.d.ts +3 -3
  119. package/dist/types/components/HoverCard/HoverCard.d.ts +1 -1
  120. package/dist/types/components/SidebarNavigationItem/SidebarNavigationItem.d.ts +9 -5
  121. package/dist/types/components/SidebarNavigationTitle/SidebarNavigationTitle.d.ts +9 -4
  122. 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 { styled } from 'styled-components';
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(LabelContainer, { children: [
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(EllipsisContainer, { children }),
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 { styled } from 'styled-components';\nimport { Icon } from '@/components/Icon';\nimport type { HorizontalDirection } from '@/types';\nimport type { ImageName } from '@/components/Icon';\n\nconst LabelContainer = styled.span`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n width: -webkit-fill-available;\n width: fill-available;\n width: stretch;\n flex: 1;\n gap: ${({ theme }) => theme.click.sidebar.navigation.item.default.space.gap};\n overflow: hidden;\n`;\n\nconst EllipsisContainer = styled.span`\n display: flex;\n white-space: nowrap;\n overflow: hidden;\n justify-content: flex-start;\n gap: inherit;\n flex: 1;\n & > *:not(button) {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\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 <LabelContainer>\n {icon && iconDir === 'start' && (\n <Icon\n name={icon}\n size=\"sm\"\n />\n )}\n <EllipsisContainer>{children}</EllipsisContainer>\n {icon && iconDir === 'end' && (\n <Icon\n name={icon}\n size=\"sm\"\n />\n )}\n </LabelContainer>\n );\n};\n"],"names":["LabelContainer","styled","span","withConfig","componentId","theme","click","sidebar","navigation","item","default","space","gap","EllipsisContainer","IconWrapper","icon","iconDir","children","Icon"],"mappings":";;;;AAMA,MAAMA,cAAAA,GAAiBC,MAAAA,CAAOC,IAAAA,CAAIC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,mJAAA,EAAA,mBAAA,GASzB,CAAC;AAAA,EAAEC;AAAM,CAAA,KAAMA,MAAMC,KAAAA,CAAMC,OAAAA,CAAQC,WAAWC,IAAAA,CAAKC,OAAAA,CAAQC,MAAMC,GAAG,CAAA;AAI7E,MAAMC,iBAAAA,GAAoBZ,MAAAA,CAAOC,IAAAA,CAAIC,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,0JAAA,CAAA,CAAA;AAa9B,MAAMU,cAAcA,CAAC;AAAA,EAC1BC,IAAAA;AAAAA,EACAC,OAAAA,GAAU,OAAA;AAAA,EACVC;AAOF,CAAA,KAAM;AACJ,EAAA,4BACG,cAAA,EAAA,EACEF,QAAAA,EAAAA;AAAAA,IAAAA,IAAAA,IAAQC,YAAY,OAAA,oBACnB,GAAA,CAACE,YACC,IAAA,EAAMH,IAAAA,EACN,MAAK,IAAA,EAAI,CAAA;AAAA,oBAGb,GAAA,CAAC,qBAAmBE,QAAAA,EAAS,CAAA;AAAA,IAC5BF,IAAAA,IAAQC,YAAY,KAAA,oBACnB,GAAA,CAACE,YACC,IAAA,EAAMH,IAAAA,EACN,MAAK,IAAA,EAAI;AAAA,GAAA,EAGf,CAAA;AAEJ;;;;"}
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 { styled } from 'styled-components';
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(CollapsibleContainer, { ...props, children: /* @__PURE__ */ jsx(NavContext.Provider, { value, children }) });
38
+ return /* @__PURE__ */ jsx("div", { ...props, className: cn(styles.collapsible, className), children: /* @__PURE__ */ jsx(NavContext.Provider, { value, children }) });
38
39
  };
39
- const CollapsipleHeaderContainer = styled.div.withConfig({
40
- componentId: "sc-guwmyz-1"
41
- })(["margin-left:", ";user-select:none;"], ({
42
- theme,
43
- $indicatorDir
44
- }) => $indicatorDir === "start" ? 0 : theme.click.image.sm.size.width);
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(CollapsipleHeaderContainer, { $indicatorDir: indicatorDir, ref, onClick: (e) => {
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, children: [
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(CollapsipleTriggerButton, { onClick, $indicatorDir: indicatorDir, "aria-label": "trigger children", ...props, children: [
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 CollapsibleContentWrapper = styled.div.withConfig({
104
- componentId: "sc-guwmyz-3"
105
- })(["", ""], ({
106
- theme,
107
- $indicatorDir
108
- }) => $indicatorDir ? `${$indicatorDir === "start" ? "margin-left" : "margin-right"}: ${theme.click.image.sm.size.width}` : "");
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(CollapsibleContentWrapper, { $indicatorDir: indicatorDir, ...props });
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 to the guaranteed-invalid `initial` value keeps each Container's
9
- defaults isolated; the `var()` fallbacks below then resolve to the same
10
- defaults the styled-components version produced when the prop was unset. */
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,6 @@
1
+ const styles = {
2
+ "hover-card__trigger": "hover-card__trigger__tMcTR"
3
+ };
4
+
5
+ export { styles as default };
6
+ //# sourceMappingURL=HoverCard.module.css.js.map
@@ -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 { styled } from 'styled-components';
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 { styled } from 'styled-components';\nimport Popover_Arrow from '@/components/Assets/Icons/Popover-Arrow';\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 Trigger = styled(RadixHoverCard.Trigger)`\n width: fit-content;\n`;\n\nconst HoverCardTrigger = ({\n children,\n ...props\n}: RadixHoverCard.HoverCardTriggerProps) => {\n return <Trigger {...props}>{children}</Trigger>;\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","Trigger","styled","RadixHoverCard","withConfig","componentId","HoverCardTrigger","displayName","HoverCardContent","showArrow","forceMount","container","Content","Arrow"],"mappings":";;;;;;AAaO,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,OAAAA,GAAUC,MAAAA,CAAOC,cAAAA,CAAeF,OAAO,EAACG,UAAAA,CAAA;AAAA,EAAAC,WAAAA,EAAA;AAAA,CAAA,CAAA,CAAA,CAAA,oBAAA,CAAA,CAAA;AAI9C,MAAMC,mBAAmBA,CAAC;AAAA,EACxBP,QAAAA;AAAAA,EACA,GAAGC;AACiC,CAAA,KAAM;AAC1C,EAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAQ,GAAIA,KAAAA,EAAQD,QAAAA,EAAS,CAAA;AACvC,CAAA;AACAO,gBAAAA,CAAiBC,WAAAA,GAAc,kBAAA;AAC/BT,SAAAA,CAAUG,OAAAA,GAAUK,gBAAAA;AAEpB,MAAME,mBAAmBA,CAAC;AAAA,EACxBT,QAAAA;AAAAA,EACAU,SAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACA,GAAGX;AACkB,CAAA,KAAM;AAC3B,EAAA,2BACG,cAAA,CAAe,MAAA,EAAf,EACC,UAAA,EACA,WAEA,QAAA,kBAAA,IAAA,CAAC,uBAAA,EAAA,EACC,EAAA,EAAIG,cAAAA,CAAeS,SACnB,KAAA,EAAM,YAAA,EACN,UAAA,EAAYH,SAAAA,EACZ,GAAIT,KAAAA,EAEHS,QAAAA,EAAAA;AAAAA,IAAAA,SAAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EACC,OAAA,EAAO,IAAA,EACP,EAAA,EAAIN,cAAAA,CAAeU,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;AACAS,gBAAAA,CAAiBD,WAAAA,GAAc,kBAAA;AAC/BT,SAAAA,CAAUc,OAAAA,GAAUJ,gBAAAA;;;;"}
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 receives .external-icon via className. The original used a
122
- descendant selector inside IconWrapper; here we pass the scoped class
123
- straight to the Icon so the selector stays a single class with the same
124
- effective specificity. */
125
- .external-icon_size_xs__hRWrg,
126
- .external-icon_size_sm__QFJoc {
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
- .external-icon_size_md__-bbPt,
132
- .external-icon_size_lg__XGkpl {
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
- "external-icon_size_xs": "external-icon_size_xs__hRWrg",
23
- "external-icon_size_sm": "external-icon_size_sm__QFJoc",
24
- "external-icon_size_md": "external-icon_size_md__-bbPt",
25
- "external-icon_size_lg": "external-icon_size_lg__XGkpl"
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 externalIconVariants = cva("", {
30
+ const iconVariants = cva(styles["link__icon"], {
31
31
  variants: {
32
32
  size: {
33
- xs: styles["external-icon_size_xs"],
34
- sm: styles["external-icon_size_sm"],
35
- md: styles["external-icon_size_md"],
36
- lg: styles["external-icon_size_lg"]
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("external-icon", externalIconVariants({
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 externalIconVariants = cva('', {\n variants: {\n size: {\n xs: styles['external-icon_size_xs'],\n sm: styles['external-icon_size_sm'],\n md: styles['external-icon_size_md'],\n lg: styles['external-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('external-icon', externalIconVariants({ 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","externalIconVariants","_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,oBAAAA,GAAuBhB,IAAI,EAAA,EAAI;AAAA,EACnCG,QAAAA,EAAU;AAAA,IACRC,IAAAA,EAAM;AAAA,MACJC,EAAAA,EAAIJ,OAAO,uBAAuB,CAAA;AAAA,MAClCK,EAAAA,EAAIL,OAAO,uBAAuB,CAAA;AAAA,MAClCM,EAAAA,EAAIN,OAAO,uBAAuB,CAAA;AAAA,MAClCO,EAAAA,EAAIP,OAAO,uBAAuB;AAAA;AACpC,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,oBACC,GAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAACQ,QAAA,EAAA,EACC,MAAMR,IAAAA,EACN,SAAA,EAAWO,EAAAA,CAAG,eAAA,EAAiBV,oBAAAA,CAAqB;AAAA,MAAEZ;AAAAA,KAAM,CAAC,CAAA,EAC7D,aAAA,EAAae,MAAK,CAAA,EAEtB;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AACO,MAAMS,IAAAA,GAAiCC,WAAWZ,KAAK;;;;"}
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,