@remember-web/primitive 0.2.2 → 0.2.3

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 (50) hide show
  1. package/dist/src/Badge/style.cjs.js +1 -1
  2. package/dist/src/Badge/style.cjs.js.map +1 -1
  3. package/dist/src/Badge/style.esm.js +1 -1
  4. package/dist/src/Badge/style.esm.js.map +1 -1
  5. package/dist/src/Floating/DropdownMenu/index.cjs.js +8 -1
  6. package/dist/src/Floating/DropdownMenu/index.cjs.js.map +1 -1
  7. package/dist/src/Floating/DropdownMenu/index.d.ts.map +1 -1
  8. package/dist/src/Floating/DropdownMenu/index.esm.js +9 -2
  9. package/dist/src/Floating/DropdownMenu/index.esm.js.map +1 -1
  10. package/dist/src/Floating/DropdownMenu/styles.cjs.js +8 -3
  11. package/dist/src/Floating/DropdownMenu/styles.cjs.js.map +1 -1
  12. package/dist/src/Floating/DropdownMenu/styles.d.ts +4 -0
  13. package/dist/src/Floating/DropdownMenu/styles.d.ts.map +1 -1
  14. package/dist/src/Floating/DropdownMenu/styles.esm.js +8 -4
  15. package/dist/src/Floating/DropdownMenu/styles.esm.js.map +1 -1
  16. package/dist/src/Floating/Popover/index.cjs.js +8 -1
  17. package/dist/src/Floating/Popover/index.cjs.js.map +1 -1
  18. package/dist/src/Floating/Popover/index.d.ts.map +1 -1
  19. package/dist/src/Floating/Popover/index.esm.js +9 -2
  20. package/dist/src/Floating/Popover/index.esm.js.map +1 -1
  21. package/dist/src/Floating/Popover/styles.cjs.js +7 -2
  22. package/dist/src/Floating/Popover/styles.cjs.js.map +1 -1
  23. package/dist/src/Floating/Popover/styles.d.ts +7 -3
  24. package/dist/src/Floating/Popover/styles.d.ts.map +1 -1
  25. package/dist/src/Floating/Popover/styles.esm.js +8 -4
  26. package/dist/src/Floating/Popover/styles.esm.js.map +1 -1
  27. package/dist/src/Floating/Tooltip/index.cjs.js +29 -27
  28. package/dist/src/Floating/Tooltip/index.cjs.js.map +1 -1
  29. package/dist/src/Floating/Tooltip/index.d.ts.map +1 -1
  30. package/dist/src/Floating/Tooltip/index.esm.js +30 -28
  31. package/dist/src/Floating/Tooltip/index.esm.js.map +1 -1
  32. package/dist/src/Floating/Tooltip/styles.cjs.js +14 -10
  33. package/dist/src/Floating/Tooltip/styles.cjs.js.map +1 -1
  34. package/dist/src/Floating/Tooltip/styles.d.ts +4 -2
  35. package/dist/src/Floating/Tooltip/styles.d.ts.map +1 -1
  36. package/dist/src/Floating/Tooltip/styles.esm.js +14 -11
  37. package/dist/src/Floating/Tooltip/styles.esm.js.map +1 -1
  38. package/dist/src/index.cjs.js +2 -0
  39. package/dist/src/index.cjs.js.map +1 -1
  40. package/dist/src/index.esm.js +2 -2
  41. package/package.json +2 -2
  42. package/src/Badge/style.tsx +1 -1
  43. package/src/Common/Typography/Typography.stories.tsx +1 -1
  44. package/src/Floating/DropdownMenu/index.tsx +7 -2
  45. package/src/Floating/DropdownMenu/styles.tsx +8 -1
  46. package/src/Floating/Popover/index.tsx +7 -3
  47. package/src/Floating/Popover/styles.ts +9 -2
  48. package/src/Floating/Tooltip/Tooltip.stories.tsx +4 -1
  49. package/src/Floating/Tooltip/index.tsx +39 -38
  50. package/src/Floating/Tooltip/styles.ts +7 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../../src/Floating/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { IconCloseS } from '@remember-web/icon';\nimport { contents000, contents999 } from '@remember-web/mixin';\nimport { isSSR } from '@remember-web/shared';\nimport { type PropsWithChildren, useState } from 'react';\n\nimport { CloseButton, TooltipContent, TooltipTriggerWrapper } from './styles';\nimport {\n type TooltipProps,\n type TooltipSize,\n type TooltipType,\n isLargeSizeProps,\n isStaticTypeProps,\n} from './types';\n\nconst hoverable = isSSR()\n ? true\n : window.matchMedia('(any-hover: hover)').matches;\n\nexport default function Tooltip<\n Type extends TooltipType = 'hover',\n Size extends TooltipSize = 'small',\n>({\n children,\n content,\n contentOptions,\n defaultOpen,\n side = 'top',\n gap = 4,\n onOpenChange,\n onClickOutside,\n ...props\n}: PropsWithChildren<TooltipProps<Type, Size>>) {\n const [_open, _setOpen] = useState(defaultOpen ?? false);\n const { type = 'hover', size = 'small' } = props;\n const {\n backgroundColor = contents000,\n contentColor = contents999,\n maxWidth = 'initial',\n textAlign = 'center',\n onClick,\n zIndex = 0,\n } = contentOptions ?? {};\n /**\n * @description hover가 가능할 때 (마우스 포인터, 디지타이저 사용) type이 hover일 때만 hoverType으로 결정\n *\n * hover가 불가능할 때 (핑거 터치 사용) type이 hover라면 click타입으로 간주 */\n const isHoverType = hoverable && type === 'hover';\n const isClickType = !hoverable || type === 'click';\n const isCloseButtonType = type === 'closeButton';\n /** @description 클릭을 통해서 트리깅 하는 액션인지 확인 */\n const isClickTrigger = isClickType || isCloseButtonType;\n const isOpen = isStaticTypeProps(props)\n ? props.open\n : isHoverType\n ? undefined\n : _open;\n\n return (\n <RadixTooltip.Provider>\n <RadixTooltip.Root\n open={isOpen}\n defaultOpen={defaultOpen}\n delayDuration={100}\n onOpenChange={onOpenChange}\n >\n <RadixTooltip.Trigger\n asChild\n onClick={\n isClickTrigger\n ? () => _setOpen(isClickType ? (prev) => !prev : true)\n : undefined\n }\n >\n <TooltipTriggerWrapper>{children}</TooltipTriggerWrapper>\n </RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <TooltipContent\n $size={size}\n $maxWidth={maxWidth}\n $backgroundColor={backgroundColor}\n $contentColor={contentColor}\n $textAlign={textAlign}\n $zIndex={zIndex}\n sideOffset={gap}\n side={side}\n onPointerDownOutside={(e) => {\n if (isClickType) {\n _setOpen(false);\n }\n onClickOutside?.(e);\n }}\n collisionPadding={20}\n onClick={(e) => {\n if (isClickType) {\n () => _setOpen(false);\n }\n onClick?.(e);\n }}\n >\n {content}\n {type === 'closeButton' && (\n <CloseButton onClick={() => _setOpen(false)}>\n <IconCloseS />\n </CloseButton>\n )}\n {isLargeSizeProps(props) && props.hasArrow && (\n <RadixTooltip.Arrow\n width={14}\n height={8}\n color={backgroundColor}\n />\n )}\n </TooltipContent>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n );\n}\n"],"names":["side","gap","props","_open","_setOpen","type","size","backgroundColor","contentColor","maxWidth","textAlign","zIndex","children","open","defaultOpen","delayDuration","onOpenChange","$size","$maxWidth","$backgroundColor","$contentColor","$textAlign","$zIndex","sideOffset","onPointerDownOutside","onClickOutside","collisionPadding","onClick","width","height","color"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa;AAiBb;AAIe;AAaiC;;;;;AAL9CA;;AACAC;;;AAGGC;;;AAEIC;AAAOC;AACd;AAAQC;;AAAgBC;;;AAEtBC;;AACAC;;AACAC;;AACAC;;;AAEAC;AAEF;AACF;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAMA;AACwBC;AAElBC;AACAC;AACAC;AACAC;AAA2BJ;;;AAMnB;AAAkC;AAAU;AAAQ;;AAIpCA;;AAAmC;;AAIvDK;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAvB;AACAwB;AACE;;AAEA;AACAC;;AAEFC;AACAC;AAIEA;;;;;;AAK4Cf;AAC5B;AAKdgB;AACAC;AACAC;AAAuB;;AAGZ;;AAED;AAG1B;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/Floating/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { IconCloseS } from '@remember-web/icon';\nimport { contents000, contents999 } from '@remember-web/mixin';\nimport { isSSR } from '@remember-web/shared';\nimport { type PropsWithChildren, useState } from 'react';\n\nimport { CloseButton, TooltipContent, TooltipContentWrapper, TooltipTriggerWrapper } from './styles';\nimport {\n type TooltipProps,\n type TooltipSize,\n type TooltipType,\n isLargeSizeProps,\n isStaticTypeProps,\n} from './types';\n\nconst hoverable = isSSR()\n ? true\n : window.matchMedia('(any-hover: hover)').matches;\n\nexport default function Tooltip<\n Type extends TooltipType = 'hover',\n Size extends TooltipSize = 'small',\n>({\n children,\n content,\n contentOptions,\n defaultOpen,\n side = 'top',\n gap = 4,\n onOpenChange,\n onClickOutside,\n ...props\n}: PropsWithChildren<TooltipProps<Type, Size>>) {\n const [_open, _setOpen] = useState(defaultOpen ?? false);\n const { type = 'hover', size = 'small' } = props;\n const {\n backgroundColor = contents000,\n contentColor = contents999,\n maxWidth = 'initial',\n textAlign = 'center',\n onClick,\n zIndex = 0,\n } = contentOptions ?? {};\n /**\n * @description hover가 가능할 때 (마우스 포인터, 디지타이저 사용) type이 hover일 때만 hoverType으로 결정\n *\n * hover가 불가능할 때 (핑거 터치 사용) type이 hover라면 click타입으로 간주 */\n const isHoverType = hoverable && type === 'hover';\n const isClickType = !hoverable || type === 'click';\n const isCloseButtonType = type === 'closeButton';\n /** @description 클릭을 통해서 트리깅 하는 액션인지 확인 */\n const isClickTrigger = isClickType || isCloseButtonType;\n const isOpen = isStaticTypeProps(props)\n ? props.open\n : isHoverType\n ? undefined\n : _open;\n\n return (\n <RadixTooltip.Provider>\n <RadixTooltip.Root\n open={isOpen}\n defaultOpen={defaultOpen}\n delayDuration={100}\n onOpenChange={onOpenChange}\n >\n <RadixTooltip.Trigger\n asChild\n onClick={\n isClickTrigger\n ? () => _setOpen(isClickType ? (prev) => !prev : true)\n : undefined\n }\n >\n <TooltipTriggerWrapper>{children}</TooltipTriggerWrapper>\n </RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <TooltipContentWrapper $zIndex={zIndex}>\n <TooltipContent\n $size={size}\n $maxWidth={maxWidth}\n $backgroundColor={backgroundColor}\n $contentColor={contentColor}\n $textAlign={textAlign}\n sideOffset={gap}\n side={side}\n onPointerDownOutside={(e) => {\n if (isClickType) {\n _setOpen(false);\n }\n onClickOutside?.(e);\n }}\n collisionPadding={20}\n onClick={(e) => {\n if (isClickType) {\n () => _setOpen(false);\n }\n onClick?.(e);\n }}\n >\n {content}\n {type === 'closeButton' && (\n <CloseButton onClick={() => _setOpen(false)}>\n <IconCloseS />\n </CloseButton>\n )}\n {isLargeSizeProps(props) && props.hasArrow && (\n <RadixTooltip.Arrow\n width={14}\n height={8}\n color={backgroundColor}\n />\n )}\n </TooltipContent>\n </TooltipContentWrapper>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n );\n}\n"],"names":["side","gap","props","_open","_setOpen","type","size","backgroundColor","contentColor","maxWidth","textAlign","zIndex","children","open","defaultOpen","delayDuration","onOpenChange","$zIndex","$size","$maxWidth","$backgroundColor","$contentColor","$textAlign","sideOffset","onPointerDownOutside","onClickOutside","collisionPadding","onClick","width","height","color"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa;AAiBb;AAIe;AAaiC;;;;;AAL9CA;;AACAC;;;AAGGC;;;AAEIC;AAAOC;AACd;AAAQC;;AAAgBC;;;AAEtBC;;AACAC;;AACAC;;AACAC;;;AAEAC;AAEF;AACF;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAMA;AACwBC;AAElBC;AACAC;AACAC;AACAC;AAA2BJ;;;AAMnB;AAAkC;AAAU;AAAQ;;AAIpCA;;AAAmC;;AAGlCK;;AAEnBC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAvB;AACAwB;AACE;;AAEA;AACAC;;AAEFC;AACAC;AAIEA;;;;;;AAK4Cf;AAC5B;AAKdgB;AACAC;AACAC;AAAuB;;;AAIP;;AAER;AAG1B;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Floating/Tooltip/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAY,MAAM,OAAO,CAAC;AAGzD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAGjB,MAAM,SAAS,CAAC;AAMjB,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,IAAI,SAAS,WAAW,GAAG,OAAO,EAClC,IAAI,SAAS,WAAW,GAAG,OAAO,EAClC,EACA,QAAQ,EACR,OAAO,EACP,cAAc,EACd,WAAW,EACX,IAAY,EACZ,GAAO,EACP,YAAY,EACZ,cAAc,EACd,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,2CAsF7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Floating/Tooltip/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAY,MAAM,OAAO,CAAC;AAGzD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAGjB,MAAM,SAAS,CAAC;AAMjB,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,IAAI,SAAS,WAAW,GAAG,OAAO,EAClC,IAAI,SAAS,WAAW,GAAG,OAAO,EAClC,EACA,QAAQ,EACR,OAAO,EACP,cAAc,EACd,WAAW,EACX,IAAY,EACZ,GAAO,EACP,YAAY,EACZ,cAAc,EACd,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,2CAuF7C"}
@@ -6,7 +6,7 @@ import { IconCloseS } from '@remember-web/icon';
6
6
  import { contents000, contents999 } from '@remember-web/mixin';
7
7
  import { isSSR } from '@remember-web/shared';
8
8
  import { useState } from 'react';
9
- import { TooltipTriggerWrapper, TooltipContent, CloseButton } from './styles.esm.js';
9
+ import { TooltipTriggerWrapper, TooltipContentWrapper, TooltipContent, CloseButton } from './styles.esm.js';
10
10
  import { isStaticTypeProps, isLargeSizeProps } from './types.esm.js';
11
11
  import { jsx, jsxs } from 'react/jsx-runtime';
12
12
 
@@ -71,35 +71,37 @@ function Tooltip(_ref) {
71
71
  children: children
72
72
  })
73
73
  }), /*#__PURE__*/jsx(RadixTooltip.Portal, {
74
- children: /*#__PURE__*/jsxs(TooltipContent, {
75
- $size: size,
76
- $maxWidth: maxWidth,
77
- $backgroundColor: backgroundColor,
78
- $contentColor: contentColor,
79
- $textAlign: textAlign,
74
+ children: /*#__PURE__*/jsx(TooltipContentWrapper, {
80
75
  $zIndex: zIndex,
81
- sideOffset: gap,
82
- side: side,
83
- onPointerDownOutside: function onPointerDownOutside(e) {
84
- if (isClickType) {
85
- _setOpen(false);
86
- }
87
- onClickOutside === null || onClickOutside === void 0 || onClickOutside(e);
88
- },
89
- collisionPadding: 20,
90
- onClick: function onClick(e) {
91
- _onClick === null || _onClick === void 0 || _onClick(e);
92
- },
93
- children: [content, type === 'closeButton' && /*#__PURE__*/jsx(CloseButton, {
94
- onClick: function onClick() {
95
- return _setOpen(false);
76
+ children: /*#__PURE__*/jsxs(TooltipContent, {
77
+ $size: size,
78
+ $maxWidth: maxWidth,
79
+ $backgroundColor: backgroundColor,
80
+ $contentColor: contentColor,
81
+ $textAlign: textAlign,
82
+ sideOffset: gap,
83
+ side: side,
84
+ onPointerDownOutside: function onPointerDownOutside(e) {
85
+ if (isClickType) {
86
+ _setOpen(false);
87
+ }
88
+ onClickOutside === null || onClickOutside === void 0 || onClickOutside(e);
96
89
  },
97
- children: /*#__PURE__*/jsx(IconCloseS, {})
98
- }), isLargeSizeProps(props) && props.hasArrow && /*#__PURE__*/jsx(RadixTooltip.Arrow, {
99
- width: 14,
100
- height: 8,
101
- color: backgroundColor
102
- })]
90
+ collisionPadding: 20,
91
+ onClick: function onClick(e) {
92
+ _onClick === null || _onClick === void 0 || _onClick(e);
93
+ },
94
+ children: [content, type === 'closeButton' && /*#__PURE__*/jsx(CloseButton, {
95
+ onClick: function onClick() {
96
+ return _setOpen(false);
97
+ },
98
+ children: /*#__PURE__*/jsx(IconCloseS, {})
99
+ }), isLargeSizeProps(props) && props.hasArrow && /*#__PURE__*/jsx(RadixTooltip.Arrow, {
100
+ width: 14,
101
+ height: 8,
102
+ color: backgroundColor
103
+ })]
104
+ })
103
105
  })
104
106
  })]
105
107
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../src/Floating/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { IconCloseS } from '@remember-web/icon';\nimport { contents000, contents999 } from '@remember-web/mixin';\nimport { isSSR } from '@remember-web/shared';\nimport { type PropsWithChildren, useState } from 'react';\n\nimport { CloseButton, TooltipContent, TooltipTriggerWrapper } from './styles';\nimport {\n type TooltipProps,\n type TooltipSize,\n type TooltipType,\n isLargeSizeProps,\n isStaticTypeProps,\n} from './types';\n\nconst hoverable = isSSR()\n ? true\n : window.matchMedia('(any-hover: hover)').matches;\n\nexport default function Tooltip<\n Type extends TooltipType = 'hover',\n Size extends TooltipSize = 'small',\n>({\n children,\n content,\n contentOptions,\n defaultOpen,\n side = 'top',\n gap = 4,\n onOpenChange,\n onClickOutside,\n ...props\n}: PropsWithChildren<TooltipProps<Type, Size>>) {\n const [_open, _setOpen] = useState(defaultOpen ?? false);\n const { type = 'hover', size = 'small' } = props;\n const {\n backgroundColor = contents000,\n contentColor = contents999,\n maxWidth = 'initial',\n textAlign = 'center',\n onClick,\n zIndex = 0,\n } = contentOptions ?? {};\n /**\n * @description hover가 가능할 때 (마우스 포인터, 디지타이저 사용) type이 hover일 때만 hoverType으로 결정\n *\n * hover가 불가능할 때 (핑거 터치 사용) type이 hover라면 click타입으로 간주 */\n const isHoverType = hoverable && type === 'hover';\n const isClickType = !hoverable || type === 'click';\n const isCloseButtonType = type === 'closeButton';\n /** @description 클릭을 통해서 트리깅 하는 액션인지 확인 */\n const isClickTrigger = isClickType || isCloseButtonType;\n const isOpen = isStaticTypeProps(props)\n ? props.open\n : isHoverType\n ? undefined\n : _open;\n\n return (\n <RadixTooltip.Provider>\n <RadixTooltip.Root\n open={isOpen}\n defaultOpen={defaultOpen}\n delayDuration={100}\n onOpenChange={onOpenChange}\n >\n <RadixTooltip.Trigger\n asChild\n onClick={\n isClickTrigger\n ? () => _setOpen(isClickType ? (prev) => !prev : true)\n : undefined\n }\n >\n <TooltipTriggerWrapper>{children}</TooltipTriggerWrapper>\n </RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <TooltipContent\n $size={size}\n $maxWidth={maxWidth}\n $backgroundColor={backgroundColor}\n $contentColor={contentColor}\n $textAlign={textAlign}\n $zIndex={zIndex}\n sideOffset={gap}\n side={side}\n onPointerDownOutside={(e) => {\n if (isClickType) {\n _setOpen(false);\n }\n onClickOutside?.(e);\n }}\n collisionPadding={20}\n onClick={(e) => {\n if (isClickType) {\n () => _setOpen(false);\n }\n onClick?.(e);\n }}\n >\n {content}\n {type === 'closeButton' && (\n <CloseButton onClick={() => _setOpen(false)}>\n <IconCloseS />\n </CloseButton>\n )}\n {isLargeSizeProps(props) && props.hasArrow && (\n <RadixTooltip.Arrow\n width={14}\n height={8}\n color={backgroundColor}\n />\n )}\n </TooltipContent>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n );\n}\n"],"names":["side","gap","props","_open","_setOpen","type","size","backgroundColor","contentColor","maxWidth","textAlign","zIndex","children","open","defaultOpen","delayDuration","onOpenChange","$size","$maxWidth","$backgroundColor","$contentColor","$textAlign","$zIndex","sideOffset","onPointerDownOutside","onClickOutside","collisionPadding","onClick","width","height","color"],"mappings":";;;;;;;;;;;;AAAa;AAiBb;AAIe;AAaiC;;;;;AAL9CA;;AACAC;;;AAGGC;;;AAEIC;AAAOC;AACd;AAAQC;;AAAgBC;;;AAEtBC;;AACAC;;AACAC;;AACAC;;;AAEAC;AAEF;AACF;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAMA;AACwBC;AAElBC;AACAC;AACAC;AACAC;AAA2BJ;;;AAMnB;AAAkC;AAAU;AAAQ;;AAIpCA;;AAAmC;;AAIvDK;AACAC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAvB;AACAwB;AACE;;AAEA;AACAC;;AAEFC;AACAC;AAIEA;;;;;;AAK4Cf;AAC5B;AAKdgB;AACAC;AACAC;AAAuB;;AAGZ;;AAED;AAG1B;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/Floating/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { IconCloseS } from '@remember-web/icon';\nimport { contents000, contents999 } from '@remember-web/mixin';\nimport { isSSR } from '@remember-web/shared';\nimport { type PropsWithChildren, useState } from 'react';\n\nimport { CloseButton, TooltipContent, TooltipContentWrapper, TooltipTriggerWrapper } from './styles';\nimport {\n type TooltipProps,\n type TooltipSize,\n type TooltipType,\n isLargeSizeProps,\n isStaticTypeProps,\n} from './types';\n\nconst hoverable = isSSR()\n ? true\n : window.matchMedia('(any-hover: hover)').matches;\n\nexport default function Tooltip<\n Type extends TooltipType = 'hover',\n Size extends TooltipSize = 'small',\n>({\n children,\n content,\n contentOptions,\n defaultOpen,\n side = 'top',\n gap = 4,\n onOpenChange,\n onClickOutside,\n ...props\n}: PropsWithChildren<TooltipProps<Type, Size>>) {\n const [_open, _setOpen] = useState(defaultOpen ?? false);\n const { type = 'hover', size = 'small' } = props;\n const {\n backgroundColor = contents000,\n contentColor = contents999,\n maxWidth = 'initial',\n textAlign = 'center',\n onClick,\n zIndex = 0,\n } = contentOptions ?? {};\n /**\n * @description hover가 가능할 때 (마우스 포인터, 디지타이저 사용) type이 hover일 때만 hoverType으로 결정\n *\n * hover가 불가능할 때 (핑거 터치 사용) type이 hover라면 click타입으로 간주 */\n const isHoverType = hoverable && type === 'hover';\n const isClickType = !hoverable || type === 'click';\n const isCloseButtonType = type === 'closeButton';\n /** @description 클릭을 통해서 트리깅 하는 액션인지 확인 */\n const isClickTrigger = isClickType || isCloseButtonType;\n const isOpen = isStaticTypeProps(props)\n ? props.open\n : isHoverType\n ? undefined\n : _open;\n\n return (\n <RadixTooltip.Provider>\n <RadixTooltip.Root\n open={isOpen}\n defaultOpen={defaultOpen}\n delayDuration={100}\n onOpenChange={onOpenChange}\n >\n <RadixTooltip.Trigger\n asChild\n onClick={\n isClickTrigger\n ? () => _setOpen(isClickType ? (prev) => !prev : true)\n : undefined\n }\n >\n <TooltipTriggerWrapper>{children}</TooltipTriggerWrapper>\n </RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <TooltipContentWrapper $zIndex={zIndex}>\n <TooltipContent\n $size={size}\n $maxWidth={maxWidth}\n $backgroundColor={backgroundColor}\n $contentColor={contentColor}\n $textAlign={textAlign}\n sideOffset={gap}\n side={side}\n onPointerDownOutside={(e) => {\n if (isClickType) {\n _setOpen(false);\n }\n onClickOutside?.(e);\n }}\n collisionPadding={20}\n onClick={(e) => {\n if (isClickType) {\n () => _setOpen(false);\n }\n onClick?.(e);\n }}\n >\n {content}\n {type === 'closeButton' && (\n <CloseButton onClick={() => _setOpen(false)}>\n <IconCloseS />\n </CloseButton>\n )}\n {isLargeSizeProps(props) && props.hasArrow && (\n <RadixTooltip.Arrow\n width={14}\n height={8}\n color={backgroundColor}\n />\n )}\n </TooltipContent>\n </TooltipContentWrapper>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n );\n}\n"],"names":["side","gap","props","_open","_setOpen","type","size","backgroundColor","contentColor","maxWidth","textAlign","zIndex","children","open","defaultOpen","delayDuration","onOpenChange","$zIndex","$size","$maxWidth","$backgroundColor","$contentColor","$textAlign","sideOffset","onPointerDownOutside","onClickOutside","collisionPadding","onClick","width","height","color"],"mappings":";;;;;;;;;;;;AAAa;AAiBb;AAIe;AAaiC;;;;;AAL9CA;;AACAC;;;AAGGC;;;AAEIC;AAAOC;AACd;AAAQC;;AAAgBC;;;AAEtBC;;AACAC;;AACAC;;AACAC;;;AAEAC;AAEF;AACF;AACA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AAMA;AACwBC;AAElBC;AACAC;AACAC;AACAC;AAA2BJ;;;AAMnB;AAAkC;AAAU;AAAQ;;AAIpCA;;AAAmC;;AAGlCK;;AAEnBC;AACAC;AACAC;AACAC;AACAC;AACAC;AACAvB;AACAwB;AACE;;AAEA;AACAC;;AAEFC;AACAC;AAIEA;;;;;;AAK4Cf;AAC5B;AAKdgB;AACAC;AACAC;AAAuB;;;AAIP;;AAER;AAG1B;;"}
@@ -30,7 +30,7 @@ var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefault(_taggedTempla
30
30
  var RadixTooltip__namespace = /*#__PURE__*/_interopNamespace(RadixTooltip);
31
31
  var styled__default = /*#__PURE__*/_interopDefault(styled);
32
32
 
33
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
33
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
34
34
  var TOOLTIP_CONTENT_CONSTANTS = {
35
35
  large: {
36
36
  padding: '8px 12px',
@@ -43,18 +43,22 @@ var TOOLTIP_CONTENT_CONSTANTS = {
43
43
  };
44
44
  var fadeIn = styled.keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral__default.default(["\n from {\n opacity: 0\n }\n to {\n opacity: 1;\n }\n"])));
45
45
  var TooltipTriggerWrapper = styled__default.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default.default(["\n width: fit-content;\n height: fit-content;\n & > svg {\n display: block;\n }\n"])));
46
- var TooltipContent = styled__default.default(RadixTooltip__namespace.Content)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default.default(["\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ", ";\n background-color: ", ";\n border-radius: 4px;\n will-change: opacity;\n animation: ", " 200ms forwards;\n gap: 4px;\n\n ", ";\n"])), mixin.contents999, mixin.contents000, fadeIn, function (_ref) {
47
- var $size = _ref.$size,
48
- $maxWidth = _ref.$maxWidth,
49
- $zIndex = _ref.$zIndex,
50
- $backgroundColor = _ref.$backgroundColor,
51
- $contentColor = _ref.$contentColor,
52
- $textAlign = _ref.$textAlign;
53
- return [styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral__default.default(["\n padding: ", ";\n ", ";\n background-color: ", ";\n color: ", ";\n text-align: ", ";\n z-index: ", ";\n "])), TOOLTIP_CONTENT_CONSTANTS[$size].padding, mixin.getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography), $backgroundColor, $contentColor, $textAlign, $zIndex), typeof $maxWidth === 'string' ? "max-width: ".concat($maxWidth, ";") : "max-width: ".concat($maxWidth, "px;")];
46
+ var TooltipContentWrapper = styled__default.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default.default(["\n [data-radix-popper-content-wrapper]{\n ", "\n }\n"])), function (_ref) {
47
+ var $zIndex = _ref.$zIndex;
48
+ return $zIndex && styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral__default.default([" z-index: ", " !important; "])), $zIndex);
54
49
  });
55
- var CloseButton = styled__default.default.button(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral__default.default(["\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n"])));
50
+ var TooltipContent = styled__default.default(RadixTooltip__namespace.Content)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral__default.default(["\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ", ";\n background-color: ", ";\n border-radius: 4px;\n will-change: opacity;\n animation: ", " 200ms forwards;\n gap: 4px;\n ", ";\n"])), mixin.contents999, mixin.contents000, fadeIn, function (_ref2) {
51
+ var $size = _ref2.$size,
52
+ $maxWidth = _ref2.$maxWidth,
53
+ $backgroundColor = _ref2.$backgroundColor,
54
+ $contentColor = _ref2.$contentColor,
55
+ $textAlign = _ref2.$textAlign;
56
+ return [styled.css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral__default.default(["\n padding: ", ";\n ", ";\n background-color: ", ";\n color: ", ";\n text-align: ", ";\n "])), TOOLTIP_CONTENT_CONSTANTS[$size].padding, mixin.getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography), $backgroundColor, $contentColor, $textAlign), typeof $maxWidth === 'string' ? "max-width: ".concat($maxWidth, ";") : "max-width: ".concat($maxWidth, "px;")];
57
+ });
58
+ var CloseButton = styled__default.default.button(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral__default.default(["\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n"])));
56
59
 
57
60
  exports.CloseButton = CloseButton;
58
61
  exports.TooltipContent = TooltipContent;
62
+ exports.TooltipContentWrapper = TooltipContentWrapper;
59
63
  exports.TooltipTriggerWrapper = TooltipTriggerWrapper;
60
64
  //# sourceMappingURL=styles.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.cjs.js","sources":["../../../../src/Floating/Tooltip/styles.ts"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport type { TypographyStyle } from '@remember-web/mixin';\nimport {\n contents000,\n contents999,\n getTypographyStyles,\n} from '@remember-web/mixin';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport type { TooltipSize, TooltipTextAlign } from './types';\n\nconst TOOLTIP_CONTENT_CONSTANTS: Record<\n TooltipSize,\n { padding: string; typography: TypographyStyle }\n> = {\n large: {\n padding: '8px 12px',\n typography: 'Body1',\n },\n small: {\n padding: '4px 8px',\n typography: 'Body2',\n },\n};\n\nconst fadeIn = keyframes`\n from {\n opacity: 0\n }\n to {\n opacity: 1;\n }\n`;\n\nexport const TooltipTriggerWrapper = styled.div`\n width: fit-content;\n height: fit-content;\n & > svg {\n display: block;\n }\n`;\n\nexport const TooltipContent = styled(RadixTooltip.Content)<{\n $size: TooltipSize;\n $maxWidth: number | string;\n $backgroundColor: string;\n $contentColor: string;\n $textAlign?: TooltipTextAlign;\n $zIndex?: number;\n}>`\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ${contents999};\n background-color: ${contents000};\n border-radius: 4px;\n will-change: opacity;\n animation: ${fadeIn} 200ms forwards;\n gap: 4px;\n\n ${({\n $size,\n $maxWidth,\n $zIndex,\n $backgroundColor,\n $contentColor,\n $textAlign,\n }) => [\n css`\n padding: ${TOOLTIP_CONTENT_CONSTANTS[$size].padding};\n ${getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography)};\n background-color: ${$backgroundColor};\n color: ${$contentColor};\n text-align: ${$textAlign};\n z-index: ${$zIndex};\n `,\n typeof $maxWidth === 'string'\n ? `max-width: ${$maxWidth};`\n : `max-width: ${$maxWidth}px;`,\n ]};\n`;\n\nexport const CloseButton = styled.button`\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n`;\n"],"names":["large","padding","typography","small","TooltipTriggerWrapper","CloseButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa;AAab;AAIEA;AACEC;AACAC;;AAEFC;AACEF;AACAC;AACF;AACF;AAEA;AASaE;AAQN;AAkBH;;;;;;;AAmBD;AAGUC;;;;"}
1
+ {"version":3,"file":"styles.cjs.js","sources":["../../../../src/Floating/Tooltip/styles.ts"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport type { TypographyStyle } from '@remember-web/mixin';\nimport {\n contents000,\n contents999,\n getTypographyStyles,\n} from '@remember-web/mixin';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport type { TooltipSize, TooltipTextAlign } from './types';\nimport { CSSProperties } from 'react';\n\nconst TOOLTIP_CONTENT_CONSTANTS: Record<\n TooltipSize,\n { padding: string; typography: TypographyStyle }\n> = {\n large: {\n padding: '8px 12px',\n typography: 'Body1',\n },\n small: {\n padding: '4px 8px',\n typography: 'Body2',\n },\n};\n\nconst fadeIn = keyframes`\n from {\n opacity: 0\n }\n to {\n opacity: 1;\n }\n`;\n\nexport const TooltipTriggerWrapper = styled.div`\n width: fit-content;\n height: fit-content;\n & > svg {\n display: block;\n }\n`;\n\nexport const TooltipContentWrapper = styled.div<{$zIndex?: CSSProperties['zIndex']}>`\n [data-radix-popper-content-wrapper]{\n ${({$zIndex}) => $zIndex && css` z-index: ${$zIndex} !important; `}\n }\n`\n\nexport const TooltipContent = styled(RadixTooltip.Content)<{\n $size: TooltipSize;\n $maxWidth: number | string;\n $backgroundColor: string;\n $contentColor: string;\n $textAlign?: TooltipTextAlign;\n}>`\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ${contents999};\n background-color: ${contents000};\n border-radius: 4px;\n will-change: opacity;\n animation: ${fadeIn} 200ms forwards;\n gap: 4px;\n ${({\n $size,\n $maxWidth,\n $backgroundColor,\n $contentColor,\n $textAlign,\n }) => [\n css`\n padding: ${TOOLTIP_CONTENT_CONSTANTS[$size].padding};\n ${getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography)};\n background-color: ${$backgroundColor};\n color: ${$contentColor};\n text-align: ${$textAlign};\n `,\n typeof $maxWidth === 'string'\n ? `max-width: ${$maxWidth};`\n : `max-width: ${$maxWidth}px;`,\n ]};\n`;\n\nexport const CloseButton = styled.button`\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n`;\n"],"names":["large","padding","typography","small","TooltipTriggerWrapper","TooltipContentWrapper","CloseButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa;AAcb;AAIEA;AACEC;AACAC;;AAEFC;AACEF;AACAC;AACF;AACF;AAEA;AASaE;AAQAC;AAEP;;AAAgE;AAI/D;AAgBH;;;;;;AAiBD;AAGUC;;;;;"}
@@ -1,7 +1,10 @@
1
- /// <reference types="react" />
2
1
  import * as RadixTooltip from '@radix-ui/react-tooltip';
3
2
  import type { TooltipSize, TooltipTextAlign } from './types';
3
+ import { CSSProperties } from 'react';
4
4
  export declare const TooltipTriggerWrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
5
+ export declare const TooltipContentWrapper: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
6
+ $zIndex?: CSSProperties['zIndex'];
7
+ }>>;
5
8
  export declare const TooltipContent: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<Omit<RadixTooltip.TooltipContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
6
9
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
7
10
  }, {
@@ -10,7 +13,6 @@ export declare const TooltipContent: import("styled-components").IStyledComponen
10
13
  $backgroundColor: string;
11
14
  $contentColor: string;
12
15
  $textAlign?: TooltipTextAlign | undefined;
13
- $zIndex?: number | undefined;
14
16
  }>> & Omit<import("react").ForwardRefExoticComponent<RadixTooltip.TooltipContentProps & import("react").RefAttributes<HTMLDivElement>>, keyof import("react").Component<any, {}, any>>;
15
17
  export declare const CloseButton: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, never>>;
16
18
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/Floating/Tooltip/styles.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AASxD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAyB7D,eAAO,MAAM,qBAAqB,gNAMjC,CAAC;AAEF,eAAO,MAAM,cAAc;;;WAClB,WAAW;eACP,MAAM,GAAG,MAAM;sBACR,MAAM;mBACT,MAAM;;;sLAkCtB,CAAC;AAEF,eAAO,MAAM,WAAW,4NAOvB,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/Floating/Tooltip/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AASxD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAyBtC,eAAO,MAAM,qBAAqB,gNAMjC,CAAC;AAEF,eAAO,MAAM,qBAAqB;cAAyB,aAAa,CAAC,QAAQ,CAAC;GAIjF,CAAA;AAED,eAAO,MAAM,cAAc;;;WAClB,WAAW;eACP,MAAM,GAAG,MAAM;sBACR,MAAM;mBACT,MAAM;;sLA8BtB,CAAC;AAEF,eAAO,MAAM,WAAW,4NAOvB,CAAC"}
@@ -4,7 +4,7 @@ import * as RadixTooltip from '@radix-ui/react-tooltip';
4
4
  import { contents999, contents000, getTypographyStyles } from '@remember-web/mixin';
5
5
  import styled, { keyframes, css } from 'styled-components';
6
6
 
7
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
7
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
8
8
  var TOOLTIP_CONTENT_CONSTANTS = {
9
9
  large: {
10
10
  padding: '8px 12px',
@@ -17,16 +17,19 @@ var TOOLTIP_CONTENT_CONSTANTS = {
17
17
  };
18
18
  var fadeIn = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n from {\n opacity: 0\n }\n to {\n opacity: 1;\n }\n"])));
19
19
  var TooltipTriggerWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n width: fit-content;\n height: fit-content;\n & > svg {\n display: block;\n }\n"])));
20
- var TooltipContent = styled(RadixTooltip.Content)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ", ";\n background-color: ", ";\n border-radius: 4px;\n will-change: opacity;\n animation: ", " 200ms forwards;\n gap: 4px;\n\n ", ";\n"])), contents999, contents000, fadeIn, function (_ref) {
21
- var $size = _ref.$size,
22
- $maxWidth = _ref.$maxWidth,
23
- $zIndex = _ref.$zIndex,
24
- $backgroundColor = _ref.$backgroundColor,
25
- $contentColor = _ref.$contentColor,
26
- $textAlign = _ref.$textAlign;
27
- return [css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n padding: ", ";\n ", ";\n background-color: ", ";\n color: ", ";\n text-align: ", ";\n z-index: ", ";\n "])), TOOLTIP_CONTENT_CONSTANTS[$size].padding, getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography), $backgroundColor, $contentColor, $textAlign, $zIndex), typeof $maxWidth === 'string' ? "max-width: ".concat($maxWidth, ";") : "max-width: ".concat($maxWidth, "px;")];
20
+ var TooltipContentWrapper = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n [data-radix-popper-content-wrapper]{\n ", "\n }\n"])), function (_ref) {
21
+ var $zIndex = _ref.$zIndex;
22
+ return $zIndex && css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([" z-index: ", " !important; "])), $zIndex);
28
23
  });
29
- var CloseButton = styled.button(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n"])));
24
+ var TooltipContent = styled(RadixTooltip.Content)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ", ";\n background-color: ", ";\n border-radius: 4px;\n will-change: opacity;\n animation: ", " 200ms forwards;\n gap: 4px;\n ", ";\n"])), contents999, contents000, fadeIn, function (_ref2) {
25
+ var $size = _ref2.$size,
26
+ $maxWidth = _ref2.$maxWidth,
27
+ $backgroundColor = _ref2.$backgroundColor,
28
+ $contentColor = _ref2.$contentColor,
29
+ $textAlign = _ref2.$textAlign;
30
+ return [css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n padding: ", ";\n ", ";\n background-color: ", ";\n color: ", ";\n text-align: ", ";\n "])), TOOLTIP_CONTENT_CONSTANTS[$size].padding, getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography), $backgroundColor, $contentColor, $textAlign), typeof $maxWidth === 'string' ? "max-width: ".concat($maxWidth, ";") : "max-width: ".concat($maxWidth, "px;")];
31
+ });
32
+ var CloseButton = styled.button(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n"])));
30
33
 
31
- export { CloseButton, TooltipContent, TooltipTriggerWrapper };
34
+ export { CloseButton, TooltipContent, TooltipContentWrapper, TooltipTriggerWrapper };
32
35
  //# sourceMappingURL=styles.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.esm.js","sources":["../../../../src/Floating/Tooltip/styles.ts"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport type { TypographyStyle } from '@remember-web/mixin';\nimport {\n contents000,\n contents999,\n getTypographyStyles,\n} from '@remember-web/mixin';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport type { TooltipSize, TooltipTextAlign } from './types';\n\nconst TOOLTIP_CONTENT_CONSTANTS: Record<\n TooltipSize,\n { padding: string; typography: TypographyStyle }\n> = {\n large: {\n padding: '8px 12px',\n typography: 'Body1',\n },\n small: {\n padding: '4px 8px',\n typography: 'Body2',\n },\n};\n\nconst fadeIn = keyframes`\n from {\n opacity: 0\n }\n to {\n opacity: 1;\n }\n`;\n\nexport const TooltipTriggerWrapper = styled.div`\n width: fit-content;\n height: fit-content;\n & > svg {\n display: block;\n }\n`;\n\nexport const TooltipContent = styled(RadixTooltip.Content)<{\n $size: TooltipSize;\n $maxWidth: number | string;\n $backgroundColor: string;\n $contentColor: string;\n $textAlign?: TooltipTextAlign;\n $zIndex?: number;\n}>`\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ${contents999};\n background-color: ${contents000};\n border-radius: 4px;\n will-change: opacity;\n animation: ${fadeIn} 200ms forwards;\n gap: 4px;\n\n ${({\n $size,\n $maxWidth,\n $zIndex,\n $backgroundColor,\n $contentColor,\n $textAlign,\n }) => [\n css`\n padding: ${TOOLTIP_CONTENT_CONSTANTS[$size].padding};\n ${getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography)};\n background-color: ${$backgroundColor};\n color: ${$contentColor};\n text-align: ${$textAlign};\n z-index: ${$zIndex};\n `,\n typeof $maxWidth === 'string'\n ? `max-width: ${$maxWidth};`\n : `max-width: ${$maxWidth}px;`,\n ]};\n`;\n\nexport const CloseButton = styled.button`\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n`;\n"],"names":["large","padding","typography","small","TooltipTriggerWrapper","CloseButton"],"mappings":";;;;;;AAAa;AAab;AAIEA;AACEC;AACAC;;AAEFC;AACEF;AACAC;AACF;AACF;AAEA;AASaE;AAQN;AAkBH;;;;;;;AAmBD;AAGUC;;"}
1
+ {"version":3,"file":"styles.esm.js","sources":["../../../../src/Floating/Tooltip/styles.ts"],"sourcesContent":["'use client';\n\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport type { TypographyStyle } from '@remember-web/mixin';\nimport {\n contents000,\n contents999,\n getTypographyStyles,\n} from '@remember-web/mixin';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport type { TooltipSize, TooltipTextAlign } from './types';\nimport { CSSProperties } from 'react';\n\nconst TOOLTIP_CONTENT_CONSTANTS: Record<\n TooltipSize,\n { padding: string; typography: TypographyStyle }\n> = {\n large: {\n padding: '8px 12px',\n typography: 'Body1',\n },\n small: {\n padding: '4px 8px',\n typography: 'Body2',\n },\n};\n\nconst fadeIn = keyframes`\n from {\n opacity: 0\n }\n to {\n opacity: 1;\n }\n`;\n\nexport const TooltipTriggerWrapper = styled.div`\n width: fit-content;\n height: fit-content;\n & > svg {\n display: block;\n }\n`;\n\nexport const TooltipContentWrapper = styled.div<{$zIndex?: CSSProperties['zIndex']}>`\n [data-radix-popper-content-wrapper]{\n ${({$zIndex}) => $zIndex && css` z-index: ${$zIndex} !important; `}\n }\n`\n\nexport const TooltipContent = styled(RadixTooltip.Content)<{\n $size: TooltipSize;\n $maxWidth: number | string;\n $backgroundColor: string;\n $contentColor: string;\n $textAlign?: TooltipTextAlign;\n}>`\n box-sizing: border-box;\n display: flex;\n white-space: pre-wrap;\n color: ${contents999};\n background-color: ${contents000};\n border-radius: 4px;\n will-change: opacity;\n animation: ${fadeIn} 200ms forwards;\n gap: 4px;\n ${({\n $size,\n $maxWidth,\n $backgroundColor,\n $contentColor,\n $textAlign,\n }) => [\n css`\n padding: ${TOOLTIP_CONTENT_CONSTANTS[$size].padding};\n ${getTypographyStyles(TOOLTIP_CONTENT_CONSTANTS[$size].typography)};\n background-color: ${$backgroundColor};\n color: ${$contentColor};\n text-align: ${$textAlign};\n `,\n typeof $maxWidth === 'string'\n ? `max-width: ${$maxWidth};`\n : `max-width: ${$maxWidth}px;`,\n ]};\n`;\n\nexport const CloseButton = styled.button`\n all: unset;\n appearance: none;\n cursor: pointer;\n & > svg {\n display: block;\n }\n`;\n"],"names":["large","padding","typography","small","TooltipTriggerWrapper","TooltipContentWrapper","CloseButton"],"mappings":";;;;;;AAAa;AAcb;AAIEA;AACEC;AACAC;;AAEFC;AACEF;AACAC;AACF;AACF;AAEA;AASaE;AAQAC;AAEP;;AAAgE;AAI/D;AAgBH;;;;;;AAiBD;AAGUC;;"}
@@ -70,12 +70,14 @@ exports.Tooltip = index$k;
70
70
  exports.DropdownMenuItemDisabledCSS = styles$2.DropdownMenuItemDisabledCSS;
71
71
  exports.DropdownMenuItemHoverCSS = styles$2.DropdownMenuItemHoverCSS;
72
72
  exports.StyledDropdownMenuContent = styles$2.StyledDropdownMenuContent;
73
+ exports.StyledDropdownMenuContentWrapper = styles$2.StyledDropdownMenuContentWrapper;
73
74
  exports.StyledDropdownMenuItem = styles$2.StyledDropdownMenuItem;
74
75
  exports.StyledDropdownMenuSection = styles$2.StyledDropdownMenuSection;
75
76
  exports.StyledDropdownMenuSectionTitle = styles$2.StyledDropdownMenuSectionTitle;
76
77
  exports.dropdownMenuItemCSS = styles$2.dropdownMenuItemCSS;
77
78
  exports.getDropdownMenuItemCss = styles$2.getDropdownMenuItemCss;
78
79
  exports.StyledPopoverContent = styles$3.StyledPopoverContent;
80
+ exports.StyledPopoverContentWrapper = styles$3.StyledPopoverContentWrapper;
79
81
  exports.showFadeIn = styles$3.showFadeIn;
80
82
  exports.showFadeOut = styles$3.showFadeOut;
81
83
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -27,6 +27,6 @@ export { default as Select } from './Inputs/Select/index.esm.js';
27
27
  export { default as DropdownMenu } from './Floating/DropdownMenu/index.esm.js';
28
28
  export { default as Popover } from './Floating/Popover/index.esm.js';
29
29
  export { default as Tooltip } from './Floating/Tooltip/index.esm.js';
30
- export { DropdownMenuItemDisabledCSS, DropdownMenuItemHoverCSS, StyledDropdownMenuContent, StyledDropdownMenuItem, StyledDropdownMenuSection, StyledDropdownMenuSectionTitle, dropdownMenuItemCSS, getDropdownMenuItemCss } from './Floating/DropdownMenu/styles.esm.js';
31
- export { StyledPopoverContent, showFadeIn, showFadeOut } from './Floating/Popover/styles.esm.js';
30
+ export { DropdownMenuItemDisabledCSS, DropdownMenuItemHoverCSS, StyledDropdownMenuContent, StyledDropdownMenuContentWrapper, StyledDropdownMenuItem, StyledDropdownMenuSection, StyledDropdownMenuSectionTitle, dropdownMenuItemCSS, getDropdownMenuItemCss } from './Floating/DropdownMenu/styles.esm.js';
31
+ export { StyledPopoverContent, StyledPopoverContentWrapper, showFadeIn, showFadeOut } from './Floating/Popover/styles.esm.js';
32
32
  //# sourceMappingURL=index.esm.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remember-web/primitive",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Remember Web Primitive Components",
5
5
  "homepage": "https://dramancompany.github.io/remember-web-packages/",
6
6
  "author": "Remember",
@@ -42,7 +42,7 @@
42
42
  "@radix-ui/react-switch": "^1.0.3",
43
43
  "@radix-ui/react-tooltip": "^1.0.7",
44
44
  "@remember-web/icon": "^0.1.9",
45
- "@remember-web/mixin": "^0.2.2",
45
+ "@remember-web/mixin": "^0.2.3",
46
46
  "@remember-web/shared": "^0.1.1"
47
47
  },
48
48
  "devDependencies": {
@@ -9,7 +9,7 @@ import styled, { css } from 'styled-components';
9
9
  * pseudo로 사용시 data-badge-value attribue가 필요합니다.
10
10
  */
11
11
  export const badgeCss = css`
12
- ${getTypographyStyles('SubTitle2')}
12
+ ${getTypographyStyles('Subtitle2')}
13
13
 
14
14
  display: inline-block;
15
15
  box-sizing: border-box;
@@ -53,7 +53,7 @@ export const Overview: Story = {
53
53
  </Typography>
54
54
  </TableColumn>
55
55
  <TableColumn align="center">{fontSize}px</TableColumn>
56
- <TableColumn align="center">{lineHeight}</TableColumn>
56
+ <TableColumn align="center">{lineHeight}px</TableColumn>
57
57
  <TableColumn align="center">{fontWeight}</TableColumn>
58
58
  </TableRow>
59
59
  );
@@ -2,6 +2,7 @@ import * as RadixPopover from '@radix-ui/react-popover';
2
2
 
3
3
  import {
4
4
  StyledDropdownMenuContent,
5
+ StyledDropdownMenuContentWrapper,
5
6
  StyledDropdownMenuItem,
6
7
  } from '@/Floating/DropdownMenu/styles';
7
8
  import type { PopoverContentProps, PopoverProps } from '@/Floating/Popover';
@@ -19,10 +20,14 @@ const DropdownMenu = Object.assign(RadixPopover.Root.bind(null), {
19
20
  Content: ({ isInsideCloseable = false, ...props }: DropdownContentProps) =>
20
21
  isInsideCloseable ? (
21
22
  <RadixPopover.Close asChild>
22
- <StyledDropdownMenuContent {...props} />
23
+ <StyledDropdownMenuContentWrapper $zIndex={props.style?.zIndex}>
24
+ <StyledDropdownMenuContent {...props} />
25
+ </StyledDropdownMenuContentWrapper>
23
26
  </RadixPopover.Close>
24
27
  ) : (
25
- <StyledDropdownMenuContent {...props} />
28
+ <StyledDropdownMenuContentWrapper $zIndex={props.style?.zIndex}>
29
+ <StyledDropdownMenuContent {...props} />
30
+ </StyledDropdownMenuContentWrapper>
26
31
  ),
27
32
  Arrow: Popover.Arrow,
28
33
  Trigger: Popover.Trigger,
@@ -6,7 +6,7 @@ import {
6
6
  getTypographyStyles,
7
7
  } from '@remember-web/mixin';
8
8
  import type { ConvertTransientProps } from '@remember-web/shared';
9
- import styled, { css } from 'styled-components';
9
+ import styled, { css, CSSProperties } from 'styled-components';
10
10
 
11
11
  import { StyledPopoverContent } from '../Popover/styles';
12
12
 
@@ -73,6 +73,13 @@ export const StyledDropdownMenuItem = styled.div.attrs<DropdownMenuItemProps>(
73
73
  })
74
74
  )<StyledDropdownMenuItemProps>(getDropdownMenuItemCss);
75
75
 
76
+
77
+ export const StyledDropdownMenuContentWrapper = styled.div<{$zIndex?: CSSProperties['zIndex']}>`
78
+ [data-radix-popper-content-wrapper]{
79
+ ${({$zIndex}) => $zIndex && css` z-index: ${$zIndex} !important; `}
80
+ }
81
+ `
82
+
76
83
  export const StyledDropdownMenuSection = styled.div``;
77
84
 
78
85
  export const StyledDropdownMenuContent = styled(StyledPopoverContent)`
@@ -1,6 +1,6 @@
1
1
  import * as RadixPopover from '@radix-ui/react-popover';
2
2
 
3
- import { StyledPopoverContent } from '@/Floating/Popover/styles';
3
+ import { StyledPopoverContent, StyledPopoverContentWrapper } from '@/Floating/Popover/styles';
4
4
 
5
5
  const { Trigger, Anchor, Close, PopoverPortal } = RadixPopover;
6
6
 
@@ -24,10 +24,14 @@ const Popover = Object.assign(RadixPopover.Root.bind(null), {
24
24
  Content: ({ isInsideCloseable = false, ...props }: PopoverContentProps) =>
25
25
  isInsideCloseable ? (
26
26
  <RadixPopover.Close asChild>
27
- <StyledPopoverContent {...props} />
27
+ <StyledPopoverContentWrapper $zIndex={props.style?.zIndex}>
28
+ <StyledPopoverContent {...props} />
29
+ </StyledPopoverContentWrapper>
28
30
  </RadixPopover.Close>
29
31
  ) : (
30
- <StyledPopoverContent {...props} />
32
+ <StyledPopoverContentWrapper $zIndex={props.style?.zIndex}>
33
+ <StyledPopoverContent {...props} />
34
+ </StyledPopoverContentWrapper>
31
35
  ),
32
36
  });
33
37
 
@@ -1,6 +1,7 @@
1
- import { PopoverContent } from '@radix-ui/react-popover';
1
+ import { PopoverContent, PopoverContentProps } from '@radix-ui/react-popover';
2
2
  import { bg100, contents000 } from '@remember-web/mixin';
3
- import styled, { keyframes } from 'styled-components';
3
+ import { CSSProperties } from 'react';
4
+ import styled, { css, keyframes } from 'styled-components';
4
5
 
5
6
  export const showFadeIn = keyframes`
6
7
  from {
@@ -19,6 +20,12 @@ export const showFadeOut = keyframes`
19
20
  }
20
21
  `;
21
22
 
23
+ export const StyledPopoverContentWrapper = styled.div<{$zIndex?: CSSProperties['zIndex']}>`
24
+ [data-radix-popper-content-wrapper]{
25
+ ${({$zIndex}) => $zIndex && css` z-index: ${$zIndex} !important; `}
26
+ }
27
+ `
28
+
22
29
  export const StyledPopoverContent = styled(PopoverContent)`
23
30
  contain: paint;
24
31
  width: fit-content;
@@ -39,7 +39,10 @@ export const Default: Story = {
39
39
  type: 'hover',
40
40
  side: 'top',
41
41
  gap: 4,
42
- defaultOpen: false,
42
+ contentOptions:{
43
+ zIndex:9999
44
+ },
45
+ defaultOpen: true,
43
46
  },
44
47
  render: ({ ...props }) => (
45
48
  <Flex gap={24}>
@@ -6,7 +6,7 @@ import { contents000, contents999 } from '@remember-web/mixin';
6
6
  import { isSSR } from '@remember-web/shared';
7
7
  import { type PropsWithChildren, useState } from 'react';
8
8
 
9
- import { CloseButton, TooltipContent, TooltipTriggerWrapper } from './styles';
9
+ import { CloseButton, TooltipContent, TooltipContentWrapper, TooltipTriggerWrapper } from './styles';
10
10
  import {
11
11
  type TooltipProps,
12
12
  type TooltipSize,
@@ -77,43 +77,44 @@ export default function Tooltip<
77
77
  <TooltipTriggerWrapper>{children}</TooltipTriggerWrapper>
78
78
  </RadixTooltip.Trigger>
79
79
  <RadixTooltip.Portal>
80
- <TooltipContent
81
- $size={size}
82
- $maxWidth={maxWidth}
83
- $backgroundColor={backgroundColor}
84
- $contentColor={contentColor}
85
- $textAlign={textAlign}
86
- $zIndex={zIndex}
87
- sideOffset={gap}
88
- side={side}
89
- onPointerDownOutside={(e) => {
90
- if (isClickType) {
91
- _setOpen(false);
92
- }
93
- onClickOutside?.(e);
94
- }}
95
- collisionPadding={20}
96
- onClick={(e) => {
97
- if (isClickType) {
98
- () => _setOpen(false);
99
- }
100
- onClick?.(e);
101
- }}
102
- >
103
- {content}
104
- {type === 'closeButton' && (
105
- <CloseButton onClick={() => _setOpen(false)}>
106
- <IconCloseS />
107
- </CloseButton>
108
- )}
109
- {isLargeSizeProps(props) && props.hasArrow && (
110
- <RadixTooltip.Arrow
111
- width={14}
112
- height={8}
113
- color={backgroundColor}
114
- />
115
- )}
116
- </TooltipContent>
80
+ <TooltipContentWrapper $zIndex={zIndex}>
81
+ <TooltipContent
82
+ $size={size}
83
+ $maxWidth={maxWidth}
84
+ $backgroundColor={backgroundColor}
85
+ $contentColor={contentColor}
86
+ $textAlign={textAlign}
87
+ sideOffset={gap}
88
+ side={side}
89
+ onPointerDownOutside={(e) => {
90
+ if (isClickType) {
91
+ _setOpen(false);
92
+ }
93
+ onClickOutside?.(e);
94
+ }}
95
+ collisionPadding={20}
96
+ onClick={(e) => {
97
+ if (isClickType) {
98
+ () => _setOpen(false);
99
+ }
100
+ onClick?.(e);
101
+ }}
102
+ >
103
+ {content}
104
+ {type === 'closeButton' && (
105
+ <CloseButton onClick={() => _setOpen(false)}>
106
+ <IconCloseS />
107
+ </CloseButton>
108
+ )}
109
+ {isLargeSizeProps(props) && props.hasArrow && (
110
+ <RadixTooltip.Arrow
111
+ width={14}
112
+ height={8}
113
+ color={backgroundColor}
114
+ />
115
+ )}
116
+ </TooltipContent>
117
+ </TooltipContentWrapper>
117
118
  </RadixTooltip.Portal>
118
119
  </RadixTooltip.Root>
119
120
  </RadixTooltip.Provider>
@@ -10,6 +10,7 @@ import {
10
10
  import styled, { css, keyframes } from 'styled-components';
11
11
 
12
12
  import type { TooltipSize, TooltipTextAlign } from './types';
13
+ import { CSSProperties } from 'react';
13
14
 
14
15
  const TOOLTIP_CONTENT_CONSTANTS: Record<
15
16
  TooltipSize,
@@ -42,13 +43,18 @@ export const TooltipTriggerWrapper = styled.div`
42
43
  }
43
44
  `;
44
45
 
46
+ export const TooltipContentWrapper = styled.div<{$zIndex?: CSSProperties['zIndex']}>`
47
+ [data-radix-popper-content-wrapper]{
48
+ ${({$zIndex}) => $zIndex && css` z-index: ${$zIndex} !important; `}
49
+ }
50
+ `
51
+
45
52
  export const TooltipContent = styled(RadixTooltip.Content)<{
46
53
  $size: TooltipSize;
47
54
  $maxWidth: number | string;
48
55
  $backgroundColor: string;
49
56
  $contentColor: string;
50
57
  $textAlign?: TooltipTextAlign;
51
- $zIndex?: number;
52
58
  }>`
53
59
  box-sizing: border-box;
54
60
  display: flex;
@@ -59,11 +65,9 @@ export const TooltipContent = styled(RadixTooltip.Content)<{
59
65
  will-change: opacity;
60
66
  animation: ${fadeIn} 200ms forwards;
61
67
  gap: 4px;
62
-
63
68
  ${({
64
69
  $size,
65
70
  $maxWidth,
66
- $zIndex,
67
71
  $backgroundColor,
68
72
  $contentColor,
69
73
  $textAlign,
@@ -74,7 +78,6 @@ export const TooltipContent = styled(RadixTooltip.Content)<{
74
78
  background-color: ${$backgroundColor};
75
79
  color: ${$contentColor};
76
80
  text-align: ${$textAlign};
77
- z-index: ${$zIndex};
78
81
  `,
79
82
  typeof $maxWidth === 'string'
80
83
  ? `max-width: ${$maxWidth};`