@lumx/react 3.20.1-alpha.11 → 3.20.1-alpha.12

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 (183) hide show
  1. package/_internal/{8fcceef3.js → 0420e67b.js} +13 -14
  2. package/_internal/{8fcceef3.js.map → 0420e67b.js.map} +1 -1
  3. package/_internal/{7b214f74.js → 0a490b07.js} +29 -24
  4. package/_internal/{7b214f74.js.map → 0a490b07.js.map} +1 -1
  5. package/_internal/{4d92e13b.js → 0be1006e.js} +25 -25
  6. package/_internal/{4d92e13b.js.map → 0be1006e.js.map} +1 -1
  7. package/_internal/{dd0a245d.js → 0d1a078c.js} +44 -42
  8. package/_internal/{dd0a245d.js.map → 0d1a078c.js.map} +1 -1
  9. package/_internal/{1eab656b.js → 15eab19b.js} +25 -25
  10. package/_internal/{1eab656b.js.map → 15eab19b.js.map} +1 -1
  11. package/_internal/{87bada02.js → 179a84d1.js} +64 -67
  12. package/_internal/{87bada02.js.map → 179a84d1.js.map} +1 -1
  13. package/_internal/{4c5a7b63.js → 193521fa.js} +11 -12
  14. package/_internal/{4c5a7b63.js.map → 193521fa.js.map} +1 -1
  15. package/_internal/{f57d4eb8.js → 1a90ea3d.js} +15 -17
  16. package/_internal/{f57d4eb8.js.map → 1a90ea3d.js.map} +1 -1
  17. package/_internal/1deba7d7.js +224 -0
  18. package/_internal/{2d6bde7d.js.map → 1deba7d7.js.map} +1 -1
  19. package/_internal/{2938a251.js → 1ea72630.js} +16 -17
  20. package/_internal/{2938a251.js.map → 1ea72630.js.map} +1 -1
  21. package/_internal/21b83d16.js +137 -0
  22. package/_internal/{5ba8fae8.js.map → 21b83d16.js.map} +1 -1
  23. package/_internal/297bed8f.js +457 -0
  24. package/_internal/{e53b5a39.js.map → 297bed8f.js.map} +1 -1
  25. package/_internal/{432c85a7.js → 2c2b6a89.js} +9 -7
  26. package/_internal/{432c85a7.js.map → 2c2b6a89.js.map} +1 -1
  27. package/_internal/{bba7d4c4.js → 2f1716fa.js} +75 -63
  28. package/_internal/{bba7d4c4.js.map → 2f1716fa.js.map} +1 -1
  29. package/_internal/{2c7942af.js → 2f6c7f84.js} +16 -21
  30. package/_internal/{2c7942af.js.map → 2f6c7f84.js.map} +1 -1
  31. package/_internal/{64046d7a.js → 329b5f12.js} +10 -12
  32. package/_internal/{64046d7a.js.map → 329b5f12.js.map} +1 -1
  33. package/_internal/332e9844.js +2 -0
  34. package/_internal/332e9844.js.map +1 -0
  35. package/_internal/{85d992d2.js → 34c59f5b.js} +101 -98
  36. package/_internal/{85d992d2.js.map → 34c59f5b.js.map} +1 -1
  37. package/_internal/{30f4c83c.js → 370bdaed.js} +7 -5
  38. package/_internal/{30f4c83c.js.map → 370bdaed.js.map} +1 -1
  39. package/_internal/{7c4f4643.js → 37b007a4.js} +2 -2
  40. package/_internal/{7c4f4643.js.map → 37b007a4.js.map} +1 -1
  41. package/_internal/{07e0bd90.js → 3a4e4636.js} +51 -36
  42. package/_internal/{07e0bd90.js.map → 3a4e4636.js.map} +1 -1
  43. package/_internal/{3683d267.js → 3e653144.js} +8 -11
  44. package/_internal/{3683d267.js.map → 3e653144.js.map} +1 -1
  45. package/_internal/{c43d098b.js → 3f86608e.js} +5 -2
  46. package/_internal/{c43d098b.js.map → 3f86608e.js.map} +1 -1
  47. package/_internal/{b3bfbe72.js → 478b5c92.js} +2 -2
  48. package/_internal/{b3bfbe72.js.map → 478b5c92.js.map} +1 -1
  49. package/_internal/4962be5b.js +121 -0
  50. package/_internal/{70cf341b.js.map → 4962be5b.js.map} +1 -1
  51. package/_internal/{407735b4.js → 4cd870a5.js} +2 -2
  52. package/_internal/{407735b4.js.map → 4cd870a5.js.map} +1 -1
  53. package/_internal/{e4613195.js → 501f2f9f.js} +8 -9
  54. package/_internal/{e4613195.js.map → 501f2f9f.js.map} +1 -1
  55. package/_internal/5e7b90e2.js +2 -0
  56. package/_internal/5e7b90e2.js.map +1 -0
  57. package/_internal/{18334f0d.js → 5ec059fe.js} +48 -43
  58. package/_internal/{18334f0d.js.map → 5ec059fe.js.map} +1 -1
  59. package/_internal/{fc47f2da.js → 5f8f9454.js} +10 -12
  60. package/_internal/{fc47f2da.js.map → 5f8f9454.js.map} +1 -1
  61. package/_internal/{3f3de25e.js → 5fe09341.js} +3 -3
  62. package/_internal/{3f3de25e.js.map → 5fe09341.js.map} +1 -1
  63. package/_internal/{714809cc.js → 628468c4.js} +47 -46
  64. package/_internal/{714809cc.js.map → 628468c4.js.map} +1 -1
  65. package/_internal/{d3321a86.js → 6589b796.js} +2 -12
  66. package/_internal/{d3321a86.js.map → 6589b796.js.map} +1 -1
  67. package/_internal/{2368cb68.js → 65f91970.js} +43 -43
  68. package/_internal/{2368cb68.js.map → 65f91970.js.map} +1 -1
  69. package/_internal/66f691d3.js +74 -0
  70. package/_internal/{1921f348.js.map → 66f691d3.js.map} +1 -1
  71. package/_internal/{bdd41804.js → 68c10f98.js} +50 -41
  72. package/_internal/{bdd41804.js.map → 68c10f98.js.map} +1 -1
  73. package/_internal/{9cfa3e10.js → 690ca33e.js} +36 -35
  74. package/_internal/{9cfa3e10.js.map → 690ca33e.js.map} +1 -1
  75. package/_internal/6ca04271.js +108 -0
  76. package/_internal/{a67f26a8.js.map → 6ca04271.js.map} +1 -1
  77. package/_internal/{cdc3efab.js → 6da19518.js} +24 -32
  78. package/_internal/{cdc3efab.js.map → 6da19518.js.map} +1 -1
  79. package/_internal/{bcce6ceb.js → 7093ba23.js} +6 -4
  80. package/_internal/{bcce6ceb.js.map → 7093ba23.js.map} +1 -1
  81. package/_internal/{bc4cb4c0.js → 74a4a214.js} +29 -33
  82. package/_internal/{bc4cb4c0.js.map → 74a4a214.js.map} +1 -1
  83. package/_internal/{95a2e851.js → 76be70dd.js} +3 -3
  84. package/_internal/{95a2e851.js.map → 76be70dd.js.map} +1 -1
  85. package/_internal/{60f8e509.js → 7f54e947.js} +114 -101
  86. package/_internal/{60f8e509.js.map → 7f54e947.js.map} +1 -1
  87. package/_internal/{72407886.js → 84dfe68f.js} +50 -44
  88. package/_internal/{72407886.js.map → 84dfe68f.js.map} +1 -1
  89. package/_internal/{e2440593.js → 85e3a5ca.js} +32 -35
  90. package/_internal/{e2440593.js.map → 85e3a5ca.js.map} +1 -1
  91. package/_internal/{742d4906.js → 86aa4aa4.js} +60 -54
  92. package/_internal/{742d4906.js.map → 86aa4aa4.js.map} +1 -1
  93. package/_internal/{4e1dde79.js → 8ab42752.js} +25 -26
  94. package/_internal/{4e1dde79.js.map → 8ab42752.js.map} +1 -1
  95. package/_internal/{0f4b35b2.js → 95cfd814.js} +14 -20
  96. package/_internal/{0f4b35b2.js.map → 95cfd814.js.map} +1 -1
  97. package/_internal/{d6b3a3c0.js → 9a4dfad0.js} +48 -39
  98. package/_internal/{d6b3a3c0.js.map → 9a4dfad0.js.map} +1 -1
  99. package/_internal/{80e5c950.js → 9c9df5f2.js} +19 -19
  100. package/_internal/{80e5c950.js.map → 9c9df5f2.js.map} +1 -1
  101. package/_internal/{21aeb1c7.js → 9d1336a1.js} +6 -6
  102. package/_internal/{21aeb1c7.js.map → 9d1336a1.js.map} +1 -1
  103. package/_internal/{ee64ab0d.js → 9fdc715b.js} +37 -34
  104. package/_internal/{ee64ab0d.js.map → 9fdc715b.js.map} +1 -1
  105. package/_internal/a003602b.js +116 -0
  106. package/_internal/{32698205.js.map → a003602b.js.map} +1 -1
  107. package/_internal/{baa0a23b.js → a34639bd.js} +31 -29
  108. package/_internal/{baa0a23b.js.map → a34639bd.js.map} +1 -1
  109. package/_internal/{cb036703.js → a84f4981.js} +35 -26
  110. package/_internal/{cb036703.js.map → a84f4981.js.map} +1 -1
  111. package/_internal/{9210e2f3.js → b0a7a999.js} +10 -12
  112. package/_internal/{9210e2f3.js.map → b0a7a999.js.map} +1 -1
  113. package/_internal/{3646abc3.js → b0b2e33d.js} +117 -104
  114. package/_internal/{3646abc3.js.map → b0b2e33d.js.map} +1 -1
  115. package/_internal/{1aaa0341.js → b1af5979.js} +168 -160
  116. package/_internal/{1aaa0341.js.map → b1af5979.js.map} +1 -1
  117. package/_internal/{21cf275f.js → b477da26.js} +63 -57
  118. package/_internal/{21cf275f.js.map → b477da26.js.map} +1 -1
  119. package/_internal/{60923026.js → b8667090.js} +2 -2
  120. package/_internal/{60923026.js.map → b8667090.js.map} +1 -1
  121. package/_internal/{1e4b7ad5.js → bae266a9.js} +19 -18
  122. package/_internal/{1e4b7ad5.js.map → bae266a9.js.map} +1 -1
  123. package/_internal/{9d8130ae.js → be6da9b0.js} +69 -74
  124. package/_internal/{9d8130ae.js.map → be6da9b0.js.map} +1 -1
  125. package/_internal/{9452daf7.js → c0414b89.js} +10 -12
  126. package/_internal/{9452daf7.js.map → c0414b89.js.map} +1 -1
  127. package/_internal/{e566d502.js → c2388b10.js} +21 -17
  128. package/_internal/{e566d502.js.map → c2388b10.js.map} +1 -1
  129. package/_internal/{9cf0d217.js → c459a04d.js} +55 -54
  130. package/_internal/{9cf0d217.js.map → c459a04d.js.map} +1 -1
  131. package/_internal/c6ca7494.js +2 -0
  132. package/_internal/c6ca7494.js.map +1 -0
  133. package/_internal/{01bc8fcf.js → cdddaed8.js} +20 -18
  134. package/_internal/{01bc8fcf.js.map → cdddaed8.js.map} +1 -1
  135. package/_internal/{0361b7fb.js → d45e3f16.js} +2 -2
  136. package/_internal/{0361b7fb.js.map → d45e3f16.js.map} +1 -1
  137. package/_internal/{d66c4375.js → d5f316cb.js} +2 -2
  138. package/_internal/{d66c4375.js.map → d5f316cb.js.map} +1 -1
  139. package/_internal/{0a31e895.js → db4fdc7b.js} +63 -57
  140. package/_internal/{0a31e895.js.map → db4fdc7b.js.map} +1 -1
  141. package/_internal/dbe0cf24.js +75 -0
  142. package/_internal/{803945f7.js.map → dbe0cf24.js.map} +1 -1
  143. package/_internal/{4ceaf17c.js → e2afb13f.js} +2 -2
  144. package/_internal/{4ceaf17c.js.map → e2afb13f.js.map} +1 -1
  145. package/_internal/{b925072d.js → e52f0d3f.js} +37 -34
  146. package/_internal/{b925072d.js.map → e52f0d3f.js.map} +1 -1
  147. package/_internal/{aa8c5d9b.js → e6dd117e.js} +2 -2
  148. package/_internal/{aa8c5d9b.js.map → e6dd117e.js.map} +1 -1
  149. package/_internal/{077b7bef.js → ea04260d.js} +6 -6
  150. package/_internal/{077b7bef.js.map → ea04260d.js.map} +1 -1
  151. package/_internal/{77eb8ef3.js → eaa8b1d8.js} +39 -38
  152. package/_internal/{77eb8ef3.js.map → eaa8b1d8.js.map} +1 -1
  153. package/_internal/{aafcf80e.js → edab29ce.js} +61 -65
  154. package/_internal/{aafcf80e.js.map → edab29ce.js.map} +1 -1
  155. package/_internal/{38b3ecf3.js → f0900583.js} +54 -45
  156. package/_internal/{38b3ecf3.js.map → f0900583.js.map} +1 -1
  157. package/_internal/{881714a1.js → f23cdf84.js} +45 -51
  158. package/_internal/{881714a1.js.map → f23cdf84.js.map} +1 -1
  159. package/_internal/f52e979e.js +3 -0
  160. package/_internal/f52e979e.js.map +1 -0
  161. package/_internal/{1ce667fb.js → f5508d3d.js} +53 -51
  162. package/_internal/{1ce667fb.js.map → f5508d3d.js.map} +1 -1
  163. package/_internal/{43262bfe.js → f93fe83e.js} +11 -13
  164. package/_internal/{43262bfe.js.map → f93fe83e.js.map} +1 -1
  165. package/index.js +63 -63
  166. package/package.json +3 -11
  167. package/utils/index.js +3 -3
  168. package/_internal/1921f348.js +0 -72
  169. package/_internal/286fc728.js +0 -2
  170. package/_internal/286fc728.js.map +0 -1
  171. package/_internal/2d6bde7d.js +0 -209
  172. package/_internal/32698205.js +0 -107
  173. package/_internal/5ba8fae8.js +0 -120
  174. package/_internal/70cf341b.js +0 -117
  175. package/_internal/803945f7.js +0 -65
  176. package/_internal/a67f26a8.js +0 -98
  177. package/_internal/ac3bc511.js +0 -2
  178. package/_internal/ac3bc511.js.map +0 -1
  179. package/_internal/cc995526.js +0 -2
  180. package/_internal/cc995526.js.map +0 -1
  181. package/_internal/e2122a37.js +0 -3
  182. package/_internal/e2122a37.js.map +0 -1
  183. package/_internal/e53b5a39.js +0 -407
@@ -1 +1 @@
1
- {"version":3,"file":"2d6bde7d.js","sources":["../../src/components/navigation/NavigationItem.tsx","../../src/components/navigation/context.tsx","../../src/components/navigation/NavigationSection.tsx","../../src/components/navigation/Navigation.tsx"],"sourcesContent":["import { ElementType, ReactNode } from 'react';\nimport { Icon, Placement, Size, Tooltip, Text } from '@lumx/react';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { ComponentRef, HasClassName, HasPolymorphicAs, HasRequiredLinkHref, HasTheme } from '@lumx/react/utils/type';\nimport classNames from 'classnames';\nimport { forwardRefPolymorphic } from '@lumx/react/utils/react/forwardRefPolymorphic';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useOverflowTooltipLabel } from '@lumx/react/hooks/useOverflowTooltipLabel';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\n\ntype BaseNavigationItemProps = {\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: ReactNode;\n /** Mark as the current page link */\n isCurrentPage?: boolean;\n};\n\n/**\n * Navigation item props\n */\nexport type NavigationItemProps<E extends ElementType = 'a'> = HasPolymorphicAs<E> &\n HasTheme &\n HasClassName &\n BaseNavigationItemProps &\n HasRequiredLinkHref<E>;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationItem';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationItem = Object.assign(\n forwardRefPolymorphic(<E extends ElementType = 'a'>(props: NavigationItemProps<E>, ref: ComponentRef<E>) => {\n const { className, icon, label, isCurrentPage, as: Element = 'a', ...forwardedProps } = props;\n const theme = useTheme();\n const { tooltipLabel, labelRef } = useOverflowTooltipLabel(label);\n\n return (\n <li\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n <Tooltip label={tooltipLabel} placement={Placement.TOP}>\n <RawClickable\n as={Element}\n className={handleBasicClasses({\n prefix: `${CLASSNAME}__link`,\n isSelected: isCurrentPage,\n })}\n ref={ref as React.Ref<any>}\n aria-current={isCurrentPage ? 'page' : undefined}\n {...forwardedProps}\n >\n {icon ? (\n <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} theme={theme} />\n ) : null}\n\n <Text as=\"span\" truncate className={`${CLASSNAME}__label`} ref={labelRef}>\n {label}\n </Text>\n </RawClickable>\n </Tooltip>\n </li>\n );\n }),\n {\n displayName: COMPONENT_NAME,\n className: CLASSNAME,\n },\n);\n","import { createContext } from 'react';\n\nimport { Orientation } from '@lumx/core/js/constants';\n\nexport const NavigationContext = createContext<{ orientation?: Orientation } | undefined>({\n orientation: Orientation.vertical,\n});\n","import { useRef, useState, useContext } from 'react';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\nimport { Icon, Size, Text, Orientation, Popover, Placement, Theme } from '@lumx/react';\nimport classNames from 'classnames';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { HasClassName } from '@lumx/react/utils/type';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { CLASSNAME as ITEM_CLASSNAME } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport interface NavigationSectionProps extends React.ComponentPropsWithoutRef<'button'>, HasClassName {\n /** Items inside the section */\n children: React.ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: string | React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationSection';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationSection = forwardRef<NavigationSectionProps, HTMLLIElement>((props, ref) => {\n const { children, className, label, icon, ...forwardedProps } = props;\n const [isOpen, setIsOpen] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const sectionId = useId();\n const { orientation } = useContext(NavigationContext) || {};\n const theme = useTheme();\n const isDropdown = orientation === Orientation.horizontal;\n return (\n <li\n className={classNames(\n className,\n CLASSNAME,\n ITEM_CLASSNAME,\n handleBasicClasses({\n prefix: ITEM_CLASSNAME,\n theme,\n }),\n )}\n ref={ref}\n >\n <RawClickable<'button'>\n as=\"button\"\n {...forwardedProps}\n aria-controls={sectionId}\n aria-expanded={isOpen}\n className={classNames(`${ITEM_CLASSNAME}__link`)}\n ref={buttonRef}\n onClick={(event) => {\n setIsOpen(!isOpen);\n event.stopPropagation();\n }}\n >\n {icon ? <Icon className={`${ITEM_CLASSNAME}__icon`} icon={icon} size={Size.xs} /> : null}\n\n <Text as=\"span\" truncate className={`${ITEM_CLASSNAME}__label`} ref={ref}>\n {label}\n </Text>\n <Icon\n className={classNames(`${ITEM_CLASSNAME}__icon`, `${CLASSNAME}__chevron`)}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n />\n </RawClickable>\n {isOpen &&\n (isDropdown ? (\n <Popover\n anchorRef={buttonRef}\n isOpen={isOpen}\n placement={Placement.BOTTOM_START}\n usePortal={false}\n closeOnClickAway\n closeOnEscape\n onClick={() => setIsOpen(false)}\n onClose={() => setIsOpen(false)}\n zIndex={996}\n >\n <ThemeProvider value={Theme.light}>\n <ul className={`${CLASSNAME}__drawer--popover`} id={sectionId}>\n <NavigationContext.Provider value={{ orientation: Orientation.vertical }}>\n {children}\n </NavigationContext.Provider>\n </ul>\n </ThemeProvider>\n </Popover>\n ) : (\n <ul className={`${CLASSNAME}__drawer`} id={sectionId}>\n {children}\n </ul>\n ))}\n </li>\n );\n});\nNavigationSection.displayName = COMPONENT_NAME;\nNavigationSection.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { HasAriaLabelOrLabelledBy, HasClassName, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { Orientation, Theme } from '@lumx/react';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { NavigationSection } from './NavigationSection';\nimport { NavigationItem } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport type NavigationProps = React.ComponentProps<'nav'> &\n HasClassName &\n HasTheme & {\n /** Content of the navigation. These components should be of type NavigationItem to be rendered */\n children?: React.ReactNode;\n orientation?: Orientation;\n } & HasAriaLabelOrLabelledBy;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Navigation';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props\n */\nconst DEFAULT_PROPS = {\n orientation: Orientation.vertical,\n};\n\ntype SubComponents = {\n Section: typeof NavigationSection;\n Item: typeof NavigationItem;\n};\n\nexport const Navigation = forwardRef<NavigationProps, HTMLElement, SubComponents>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n children,\n className,\n theme = defaultTheme,\n orientation = DEFAULT_PROPS.orientation,\n ...forwardedProps\n } = props;\n return (\n <ThemeProvider value={theme}>\n <nav\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n orientation,\n }),\n )}\n ref={ref}\n {...forwardedProps}\n >\n <NavigationContext.Provider value={{ orientation }}>\n <ul className={`${CLASSNAME}__list`}>{children}</ul>\n </NavigationContext.Provider>\n </nav>\n </ThemeProvider>\n );\n});\nNavigation.displayName = COMPONENT_NAME;\nNavigation.className = CLASSNAME;\nNavigation.defaultProps = DEFAULT_PROPS;\n\n// Sub components\nNavigation.Section = NavigationSection;\nNavigation.Item = NavigationItem;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","NavigationItem","Object","assign","forwardRefPolymorphic","props","ref","className","icon","label","isCurrentPage","as","Element","forwardedProps","theme","useTheme","tooltipLabel","labelRef","useOverflowTooltipLabel","React","createElement","classNames","handleBasicClasses","prefix","Tooltip","placement","Placement","TOP","RawClickable","_extends","isSelected","undefined","Icon","size","Size","xs","Text","truncate","displayName","NavigationContext","createContext","orientation","Orientation","vertical","NavigationSection","forwardRef","children","isOpen","setIsOpen","useState","buttonRef","useRef","sectionId","useId","useContext","isDropdown","horizontal","ITEM_CLASSNAME","onClick","event","stopPropagation","mdiChevronUp","mdiChevronDown","Popover","anchorRef","BOTTOM_START","usePortal","closeOnClickAway","closeOnEscape","onClose","zIndex","ThemeProvider","value","Theme","light","id","Provider","DEFAULT_PROPS","Navigation","defaultTheme","defaultProps","Section","Item"],"mappings":"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"}
1
+ {"version":3,"file":"1deba7d7.js","sources":["../../src/components/navigation/NavigationItem.tsx","../../src/components/navigation/context.tsx","../../src/components/navigation/NavigationSection.tsx","../../src/components/navigation/Navigation.tsx"],"sourcesContent":["import { ElementType, ReactNode } from 'react';\nimport { Icon, Placement, Size, Tooltip, Text } from '@lumx/react';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { ComponentRef, HasClassName, HasPolymorphicAs, HasRequiredLinkHref, HasTheme } from '@lumx/react/utils/type';\nimport classNames from 'classnames';\nimport { forwardRefPolymorphic } from '@lumx/react/utils/react/forwardRefPolymorphic';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useOverflowTooltipLabel } from '@lumx/react/hooks/useOverflowTooltipLabel';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\n\ntype BaseNavigationItemProps = {\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: ReactNode;\n /** Mark as the current page link */\n isCurrentPage?: boolean;\n};\n\n/**\n * Navigation item props\n */\nexport type NavigationItemProps<E extends ElementType = 'a'> = HasPolymorphicAs<E> &\n HasTheme &\n HasClassName &\n BaseNavigationItemProps &\n HasRequiredLinkHref<E>;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationItem';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationItem = Object.assign(\n forwardRefPolymorphic(<E extends ElementType = 'a'>(props: NavigationItemProps<E>, ref: ComponentRef<E>) => {\n const { className, icon, label, isCurrentPage, as: Element = 'a', ...forwardedProps } = props;\n const theme = useTheme();\n const { tooltipLabel, labelRef } = useOverflowTooltipLabel(label);\n\n return (\n <li\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n <Tooltip label={tooltipLabel} placement={Placement.TOP}>\n <RawClickable\n as={Element}\n className={handleBasicClasses({\n prefix: `${CLASSNAME}__link`,\n isSelected: isCurrentPage,\n })}\n ref={ref as React.Ref<any>}\n aria-current={isCurrentPage ? 'page' : undefined}\n {...forwardedProps}\n >\n {icon ? (\n <Icon className={`${CLASSNAME}__icon`} icon={icon} size={Size.xs} theme={theme} />\n ) : null}\n\n <Text as=\"span\" truncate className={`${CLASSNAME}__label`} ref={labelRef}>\n {label}\n </Text>\n </RawClickable>\n </Tooltip>\n </li>\n );\n }),\n {\n displayName: COMPONENT_NAME,\n className: CLASSNAME,\n },\n);\n","import { createContext } from 'react';\n\nimport { Orientation } from '@lumx/core/js/constants';\n\nexport const NavigationContext = createContext<{ orientation?: Orientation } | undefined>({\n orientation: Orientation.vertical,\n});\n","import { useRef, useState, useContext } from 'react';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\nimport { Icon, Size, Text, Orientation, Popover, Placement, Theme } from '@lumx/react';\nimport classNames from 'classnames';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { HasClassName } from '@lumx/react/utils/type';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { CLASSNAME as ITEM_CLASSNAME } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport interface NavigationSectionProps extends React.ComponentPropsWithoutRef<'button'>, HasClassName {\n /** Items inside the section */\n children: React.ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Label content. */\n label: string | React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'NavigationSection';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const NavigationSection = forwardRef<NavigationSectionProps, HTMLLIElement>((props, ref) => {\n const { children, className, label, icon, ...forwardedProps } = props;\n const [isOpen, setIsOpen] = useState(false);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const sectionId = useId();\n const { orientation } = useContext(NavigationContext) || {};\n const theme = useTheme();\n const isDropdown = orientation === Orientation.horizontal;\n return (\n <li\n className={classNames(\n className,\n CLASSNAME,\n ITEM_CLASSNAME,\n handleBasicClasses({\n prefix: ITEM_CLASSNAME,\n theme,\n }),\n )}\n ref={ref}\n >\n <RawClickable<'button'>\n as=\"button\"\n {...forwardedProps}\n aria-controls={sectionId}\n aria-expanded={isOpen}\n className={classNames(`${ITEM_CLASSNAME}__link`)}\n ref={buttonRef}\n onClick={(event) => {\n setIsOpen(!isOpen);\n event.stopPropagation();\n }}\n >\n {icon ? <Icon className={`${ITEM_CLASSNAME}__icon`} icon={icon} size={Size.xs} /> : null}\n\n <Text as=\"span\" truncate className={`${ITEM_CLASSNAME}__label`} ref={ref}>\n {label}\n </Text>\n <Icon\n className={classNames(`${ITEM_CLASSNAME}__icon`, `${CLASSNAME}__chevron`)}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n />\n </RawClickable>\n {isOpen &&\n (isDropdown ? (\n <Popover\n anchorRef={buttonRef}\n isOpen={isOpen}\n placement={Placement.BOTTOM_START}\n usePortal={false}\n closeOnClickAway\n closeOnEscape\n onClick={() => setIsOpen(false)}\n onClose={() => setIsOpen(false)}\n zIndex={996}\n >\n <ThemeProvider value={Theme.light}>\n <ul className={`${CLASSNAME}__drawer--popover`} id={sectionId}>\n <NavigationContext.Provider value={{ orientation: Orientation.vertical }}>\n {children}\n </NavigationContext.Provider>\n </ul>\n </ThemeProvider>\n </Popover>\n ) : (\n <ul className={`${CLASSNAME}__drawer`} id={sectionId}>\n {children}\n </ul>\n ))}\n </li>\n );\n});\nNavigationSection.displayName = COMPONENT_NAME;\nNavigationSection.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { HasAriaLabelOrLabelledBy, HasClassName, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { Orientation, Theme } from '@lumx/react';\nimport { ThemeProvider, useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { NavigationSection } from './NavigationSection';\nimport { NavigationItem } from './NavigationItem';\nimport { NavigationContext } from './context';\n\nexport type NavigationProps = React.ComponentProps<'nav'> &\n HasClassName &\n HasTheme & {\n /** Content of the navigation. These components should be of type NavigationItem to be rendered */\n children?: React.ReactNode;\n orientation?: Orientation;\n } & HasAriaLabelOrLabelledBy;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Navigation';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props\n */\nconst DEFAULT_PROPS = {\n orientation: Orientation.vertical,\n};\n\ntype SubComponents = {\n Section: typeof NavigationSection;\n Item: typeof NavigationItem;\n};\n\nexport const Navigation = forwardRef<NavigationProps, HTMLElement, SubComponents>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n children,\n className,\n theme = defaultTheme,\n orientation = DEFAULT_PROPS.orientation,\n ...forwardedProps\n } = props;\n return (\n <ThemeProvider value={theme}>\n <nav\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n orientation,\n }),\n )}\n ref={ref}\n {...forwardedProps}\n >\n <NavigationContext.Provider value={{ orientation }}>\n <ul className={`${CLASSNAME}__list`}>{children}</ul>\n </NavigationContext.Provider>\n </nav>\n </ThemeProvider>\n );\n});\nNavigation.displayName = COMPONENT_NAME;\nNavigation.className = CLASSNAME;\nNavigation.defaultProps = DEFAULT_PROPS;\n\n// Sub components\nNavigation.Section = NavigationSection;\nNavigation.Item = NavigationItem;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","NavigationItem","Object","assign","forwardRefPolymorphic","props","ref","className","icon","label","isCurrentPage","as","Element","forwardedProps","theme","useTheme","tooltipLabel","labelRef","useOverflowTooltipLabel","_jsx","classNames","handleBasicClasses","prefix","children","Tooltip","placement","Placement","TOP","_jsxs","RawClickable","isSelected","undefined","Icon","size","Size","xs","Text","truncate","displayName","NavigationContext","createContext","orientation","Orientation","vertical","NavigationSection","forwardRef","isOpen","setIsOpen","useState","buttonRef","useRef","sectionId","useId","useContext","isDropdown","horizontal","ITEM_CLASSNAME","onClick","event","stopPropagation","mdiChevronUp","mdiChevronDown","Popover","anchorRef","BOTTOM_START","usePortal","closeOnClickAway","closeOnEscape","onClose","zIndex","ThemeProvider","value","Theme","light","id","Provider","DEFAULT_PROPS","Navigation","defaultTheme","defaultProps","Section","Item"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { m as getRootClassName, n as forwardRef, _ as _extends, l as classNames } from './d3321a86.js';
2
1
  import { useEffect, useRef, useMemo, cloneElement } from 'react';
3
- import { L as List } from './1ce667fb.js';
4
- import { P as Popover } from './72407886.js';
2
+ import { m as getRootClassName, n as forwardRef, l as classNames } from './6589b796.js';
3
+ import { L as List } from './f5508d3d.js';
4
+ import { P as Popover } from './84dfe68f.js';
5
5
  import { i as isComponent } from './78df9309.js';
6
- import { P as Placement } from './407735b4.js';
6
+ import { P as Placement } from './4cd870a5.js';
7
+ import { jsx } from 'react/jsx-runtime';
7
8
 
8
9
  // The error margin in px we want to have for triggering infinite scroll
9
10
  const SCROLL_TRIGGER_MARGIN = 5;
@@ -46,10 +47,6 @@ const useInfiniteScroll = (ref, callback, callbackOnMount = false, scrollTrigger
46
47
  }, [callback, callbackOnMount]);
47
48
  };
48
49
 
49
- /**
50
- * Defines the props of the component.
51
- */
52
-
53
50
  /**
54
51
  * Component display name.
55
52
  */
@@ -117,9 +114,9 @@ const Dropdown = forwardRef((props, ref) => {
117
114
  isClickable: true
118
115
  }) : children;
119
116
  }, [children, closeOnClick, onClose]);
120
- return isOpen ? /*#__PURE__*/React.createElement(Popover, _extends({
121
- ref: ref
122
- }, forwardedProps, {
117
+ return isOpen ? /*#__PURE__*/jsx(Popover, {
118
+ ref: ref,
119
+ ...forwardedProps,
123
120
  focusAnchorOnClose: focusAnchorOnClose,
124
121
  anchorRef: anchorRef,
125
122
  className: classNames(className, CLASSNAME),
@@ -133,15 +130,17 @@ const Dropdown = forwardRef((props, ref) => {
133
130
  offset: offset,
134
131
  onClose: onClose,
135
132
  placement: placement,
136
- zIndex: zIndex
137
- }), /*#__PURE__*/React.createElement("div", {
138
- className: `${CLASSNAME}__menu`,
139
- ref: innerRef
140
- }, popperElement)) : null;
133
+ zIndex: zIndex,
134
+ children: /*#__PURE__*/jsx("div", {
135
+ className: `${CLASSNAME}__menu`,
136
+ ref: innerRef,
137
+ children: popperElement
138
+ })
139
+ }) : null;
141
140
  });
142
141
  Dropdown.displayName = COMPONENT_NAME;
143
142
  Dropdown.className = CLASSNAME;
144
143
  Dropdown.defaultProps = DEFAULT_PROPS;
145
144
 
146
145
  export { Dropdown };
147
- //# sourceMappingURL=2938a251.js.map
146
+ //# sourceMappingURL=1ea72630.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"2938a251.js","sources":["../../src/hooks/useInfiniteScroll.tsx","../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\ntype useInfiniteScrollType = (\n ref: React.RefObject<HTMLElement>,\n callback?: EventCallback,\n callbackOnMount?: boolean,\n) => void;\ntype EventCallback = (evt?: Event) => void;\n\n// The error margin in px we want to have for triggering infinite scroll\nconst SCROLL_TRIGGER_MARGIN = 5;\n\n/**\n * Listen to clicks away from a given element and callback the passed in function.\n *\n * @param ref A reference to the element on which you want to listen scroll event.\n * @param [callback] A callback function to call when the bottom of the reference element is reached.\n * @param [callbackOnMount] A callback function to call when the component is mounted.\n */\nexport const useInfiniteScroll: useInfiniteScrollType = (\n ref,\n callback,\n callbackOnMount = false,\n scrollTriggerMargin = SCROLL_TRIGGER_MARGIN,\n) => {\n useEffect(() => {\n const { current } = ref;\n if (!callback || !current) {\n return undefined;\n }\n\n const isAtBottom = () =>\n Boolean(\n current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin,\n );\n\n const onScroll = (e?: Event): void => {\n if (isAtBottom()) {\n callback(e);\n }\n };\n\n if (isAtBottom()) {\n onScroll();\n }\n\n current.addEventListener('scroll', onScroll);\n current.addEventListener('resize', onScroll);\n return () => {\n current.removeEventListener('scroll', onScroll);\n current.removeEventListener('resize', onScroll);\n };\n }, [ref, callback, scrollTriggerMargin]);\n\n useEffect(() => {\n if (callback && callbackOnMount) {\n callback();\n }\n }, [callback, callbackOnMount]);\n};\n","import { cloneElement, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { List, ListProps } from '@lumx/react/components/list/List';\nimport { Popover, PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { useInfiniteScroll } from '@lumx/react/hooks/useInfiniteScroll';\nimport { GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { Offset, Placement } from '@lumx/react/components/popover/constants';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface DropdownProps extends GenericProps {\n /**\n * Reference to the element around which the dropdown is placed.\n * @see {@link PopoverProps#anchorRef}\n */\n anchorRef: PopoverProps['anchorRef'];\n /** Dropdown content. */\n children: React.ReactNode;\n /**\n * Whether a click anywhere out of the Dropdown would close it or not.\n * @see {@link PopoverProps#closeOnClickAway}\n */\n closeOnClickAway?: boolean;\n /**\n * Whether to close the Dropdown when clicking in it or not.\n */\n closeOnClick?: boolean;\n /**\n * Whether an escape key press would close the Dropdown or not.\n * @see {@link PopoverProps#closeOnEscape}\n */\n closeOnEscape?: boolean;\n /**\n * Manage dropdown width:\n * - `maxWidth`: dropdown not bigger than anchor\n * - `minWidth` or `true`: dropdown not smaller than anchor\n * - `width`: dropdown equal to the anchor.\n * @see {@link PopoverProps#fitToAnchorWidth}\n */\n fitToAnchorWidth?: PopoverProps['fitToAnchorWidth'];\n /**\n * Whether the dropdown should shrink to fit within the viewport height or not.\n * @see {@link PopoverProps#fitWithinViewportHeight}\n */\n fitWithinViewportHeight?: boolean;\n /**\n * Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.\n * @see {@link PopoverProps#isOpen}\n */\n isOpen: boolean;\n /**\n * Offset applied to the Dropdown position.\n * @see {@link PopoverProps#offset}\n */\n offset?: Offset;\n /**\n * Preferred Dropdown placement against the anchor element.\n * @see {@link PopoverProps#placement}\n */\n placement?: Placement;\n /** Whether the focus should be set on the list when the dropdown is open or not. */\n shouldFocusOnOpen?: boolean;\n /** Whether the dropdown should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n /** Whether the focus should go back on the anchor when dropdown closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /**\n * Z-axis position.\n * @see {@link PopoverProps#zIndex}\n */\n zIndex?: number;\n /**\n * On close callback.\n * @see {@link PopoverProps#onClose}\n */\n onClose?(): void;\n /** On scroll end callback. */\n onInfiniteScroll?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Dropdown';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<DropdownProps> = {\n closeOnClick: true,\n closeOnClickAway: true,\n closeOnEscape: true,\n fitToAnchorWidth: true,\n fitWithinViewportHeight: true,\n placement: Placement.BOTTOM_START,\n shouldFocusOnOpen: true,\n focusAnchorOnClose: true,\n};\n\n/**\n * Dropdown component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Dropdown = forwardRef<DropdownProps, HTMLDivElement>((props, ref) => {\n const {\n anchorRef,\n children,\n className,\n closeOnClick = DEFAULT_PROPS.closeOnClick,\n closeOnClickAway = DEFAULT_PROPS.closeOnClickAway,\n closeOnEscape = DEFAULT_PROPS.closeOnEscape,\n fitToAnchorWidth = DEFAULT_PROPS.fitToAnchorWidth,\n fitWithinViewportHeight = DEFAULT_PROPS.fitWithinViewportHeight,\n isOpen,\n offset,\n focusAnchorOnClose = DEFAULT_PROPS.focusAnchorOnClose,\n onClose,\n onInfiniteScroll,\n placement = DEFAULT_PROPS.placement,\n shouldFocusOnOpen = DEFAULT_PROPS.shouldFocusOnOpen,\n zIndex,\n ...forwardedProps\n } = props;\n const innerRef = useRef<HTMLDivElement>(null);\n const listElement = useRef(null);\n\n useInfiniteScroll(innerRef, onInfiniteScroll);\n\n const popperElement = useMemo(() => {\n return !Array.isArray(children) && isComponent(List)(children)\n ? cloneElement<ListProps>(children, {\n ...children.props,\n ref: listElement,\n onClick(evt: MouseEvent) {\n children.props.onClick?.(evt);\n\n if (closeOnClick) {\n onClose?.();\n }\n },\n isClickable: true,\n })\n : children;\n }, [children, closeOnClick, onClose]);\n\n return isOpen ? (\n <Popover\n ref={ref}\n {...forwardedProps}\n focusAnchorOnClose={focusAnchorOnClose}\n anchorRef={anchorRef}\n className={classNames(className, CLASSNAME)}\n elevation={0 as any}\n closeOnClickAway={closeOnClickAway}\n closeOnEscape={closeOnEscape}\n fitToAnchorWidth={fitToAnchorWidth}\n fitWithinViewportHeight={fitWithinViewportHeight}\n focusElement={shouldFocusOnOpen ? listElement : undefined}\n isOpen={isOpen}\n offset={offset}\n onClose={onClose}\n placement={placement}\n zIndex={zIndex}\n >\n <div className={`${CLASSNAME}__menu`} ref={innerRef}>\n {popperElement}\n </div>\n </Popover>\n ) : null;\n});\nDropdown.displayName = COMPONENT_NAME;\nDropdown.className = CLASSNAME;\nDropdown.defaultProps = DEFAULT_PROPS;\n"],"names":["SCROLL_TRIGGER_MARGIN","useInfiniteScroll","ref","callback","callbackOnMount","scrollTriggerMargin","useEffect","current","undefined","isAtBottom","Boolean","scrollHeight","scrollTop","clientHeight","onScroll","e","addEventListener","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","closeOnClick","closeOnClickAway","closeOnEscape","fitToAnchorWidth","fitWithinViewportHeight","placement","Placement","BOTTOM_START","shouldFocusOnOpen","focusAnchorOnClose","Dropdown","forwardRef","props","anchorRef","children","className","isOpen","offset","onClose","onInfiniteScroll","zIndex","forwardedProps","innerRef","useRef","listElement","popperElement","useMemo","Array","isArray","isComponent","List","cloneElement","onClick","evt","isClickable","React","createElement","Popover","_extends","classNames","elevation","focusElement","displayName","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"1ea72630.js","sources":["../../src/hooks/useInfiniteScroll.tsx","../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\ntype useInfiniteScrollType = (\n ref: React.RefObject<HTMLElement>,\n callback?: EventCallback,\n callbackOnMount?: boolean,\n) => void;\ntype EventCallback = (evt?: Event) => void;\n\n// The error margin in px we want to have for triggering infinite scroll\nconst SCROLL_TRIGGER_MARGIN = 5;\n\n/**\n * Listen to clicks away from a given element and callback the passed in function.\n *\n * @param ref A reference to the element on which you want to listen scroll event.\n * @param [callback] A callback function to call when the bottom of the reference element is reached.\n * @param [callbackOnMount] A callback function to call when the component is mounted.\n */\nexport const useInfiniteScroll: useInfiniteScrollType = (\n ref,\n callback,\n callbackOnMount = false,\n scrollTriggerMargin = SCROLL_TRIGGER_MARGIN,\n) => {\n useEffect(() => {\n const { current } = ref;\n if (!callback || !current) {\n return undefined;\n }\n\n const isAtBottom = () =>\n Boolean(\n current && current.scrollHeight - (current.scrollTop + current.clientHeight) <= scrollTriggerMargin,\n );\n\n const onScroll = (e?: Event): void => {\n if (isAtBottom()) {\n callback(e);\n }\n };\n\n if (isAtBottom()) {\n onScroll();\n }\n\n current.addEventListener('scroll', onScroll);\n current.addEventListener('resize', onScroll);\n return () => {\n current.removeEventListener('scroll', onScroll);\n current.removeEventListener('resize', onScroll);\n };\n }, [ref, callback, scrollTriggerMargin]);\n\n useEffect(() => {\n if (callback && callbackOnMount) {\n callback();\n }\n }, [callback, callbackOnMount]);\n};\n","import { cloneElement, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { List, ListProps } from '@lumx/react/components/list/List';\nimport { Popover, PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { useInfiniteScroll } from '@lumx/react/hooks/useInfiniteScroll';\nimport { GenericProps, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { Offset, Placement } from '@lumx/react/components/popover/constants';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface DropdownProps extends GenericProps {\n /**\n * Reference to the element around which the dropdown is placed.\n * @see {@link PopoverProps#anchorRef}\n */\n anchorRef: PopoverProps['anchorRef'];\n /** Dropdown content. */\n children: React.ReactNode;\n /**\n * Whether a click anywhere out of the Dropdown would close it or not.\n * @see {@link PopoverProps#closeOnClickAway}\n */\n closeOnClickAway?: boolean;\n /**\n * Whether to close the Dropdown when clicking in it or not.\n */\n closeOnClick?: boolean;\n /**\n * Whether an escape key press would close the Dropdown or not.\n * @see {@link PopoverProps#closeOnEscape}\n */\n closeOnEscape?: boolean;\n /**\n * Manage dropdown width:\n * - `maxWidth`: dropdown not bigger than anchor\n * - `minWidth` or `true`: dropdown not smaller than anchor\n * - `width`: dropdown equal to the anchor.\n * @see {@link PopoverProps#fitToAnchorWidth}\n */\n fitToAnchorWidth?: PopoverProps['fitToAnchorWidth'];\n /**\n * Whether the dropdown should shrink to fit within the viewport height or not.\n * @see {@link PopoverProps#fitWithinViewportHeight}\n */\n fitWithinViewportHeight?: boolean;\n /**\n * Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.\n * @see {@link PopoverProps#isOpen}\n */\n isOpen: boolean;\n /**\n * Offset applied to the Dropdown position.\n * @see {@link PopoverProps#offset}\n */\n offset?: Offset;\n /**\n * Preferred Dropdown placement against the anchor element.\n * @see {@link PopoverProps#placement}\n */\n placement?: Placement;\n /** Whether the focus should be set on the list when the dropdown is open or not. */\n shouldFocusOnOpen?: boolean;\n /** Whether the dropdown should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n /** Whether the focus should go back on the anchor when dropdown closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /**\n * Z-axis position.\n * @see {@link PopoverProps#zIndex}\n */\n zIndex?: number;\n /**\n * On close callback.\n * @see {@link PopoverProps#onClose}\n */\n onClose?(): void;\n /** On scroll end callback. */\n onInfiniteScroll?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Dropdown';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<DropdownProps> = {\n closeOnClick: true,\n closeOnClickAway: true,\n closeOnEscape: true,\n fitToAnchorWidth: true,\n fitWithinViewportHeight: true,\n placement: Placement.BOTTOM_START,\n shouldFocusOnOpen: true,\n focusAnchorOnClose: true,\n};\n\n/**\n * Dropdown component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Dropdown = forwardRef<DropdownProps, HTMLDivElement>((props, ref) => {\n const {\n anchorRef,\n children,\n className,\n closeOnClick = DEFAULT_PROPS.closeOnClick,\n closeOnClickAway = DEFAULT_PROPS.closeOnClickAway,\n closeOnEscape = DEFAULT_PROPS.closeOnEscape,\n fitToAnchorWidth = DEFAULT_PROPS.fitToAnchorWidth,\n fitWithinViewportHeight = DEFAULT_PROPS.fitWithinViewportHeight,\n isOpen,\n offset,\n focusAnchorOnClose = DEFAULT_PROPS.focusAnchorOnClose,\n onClose,\n onInfiniteScroll,\n placement = DEFAULT_PROPS.placement,\n shouldFocusOnOpen = DEFAULT_PROPS.shouldFocusOnOpen,\n zIndex,\n ...forwardedProps\n } = props;\n const innerRef = useRef<HTMLDivElement>(null);\n const listElement = useRef(null);\n\n useInfiniteScroll(innerRef, onInfiniteScroll);\n\n const popperElement = useMemo(() => {\n return !Array.isArray(children) && isComponent(List)(children)\n ? cloneElement<ListProps>(children, {\n ...children.props,\n ref: listElement,\n onClick(evt: MouseEvent) {\n children.props.onClick?.(evt);\n\n if (closeOnClick) {\n onClose?.();\n }\n },\n isClickable: true,\n })\n : children;\n }, [children, closeOnClick, onClose]);\n\n return isOpen ? (\n <Popover\n ref={ref}\n {...forwardedProps}\n focusAnchorOnClose={focusAnchorOnClose}\n anchorRef={anchorRef}\n className={classNames(className, CLASSNAME)}\n elevation={0 as any}\n closeOnClickAway={closeOnClickAway}\n closeOnEscape={closeOnEscape}\n fitToAnchorWidth={fitToAnchorWidth}\n fitWithinViewportHeight={fitWithinViewportHeight}\n focusElement={shouldFocusOnOpen ? listElement : undefined}\n isOpen={isOpen}\n offset={offset}\n onClose={onClose}\n placement={placement}\n zIndex={zIndex}\n >\n <div className={`${CLASSNAME}__menu`} ref={innerRef}>\n {popperElement}\n </div>\n </Popover>\n ) : null;\n});\nDropdown.displayName = COMPONENT_NAME;\nDropdown.className = CLASSNAME;\nDropdown.defaultProps = DEFAULT_PROPS;\n"],"names":["SCROLL_TRIGGER_MARGIN","useInfiniteScroll","ref","callback","callbackOnMount","scrollTriggerMargin","useEffect","current","undefined","isAtBottom","Boolean","scrollHeight","scrollTop","clientHeight","onScroll","e","addEventListener","removeEventListener","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","closeOnClick","closeOnClickAway","closeOnEscape","fitToAnchorWidth","fitWithinViewportHeight","placement","Placement","BOTTOM_START","shouldFocusOnOpen","focusAnchorOnClose","Dropdown","forwardRef","props","anchorRef","children","className","isOpen","offset","onClose","onInfiniteScroll","zIndex","forwardedProps","innerRef","useRef","listElement","popperElement","useMemo","Array","isArray","isComponent","List","cloneElement","onClick","evt","isClickable","_jsx","Popover","classNames","elevation","focusElement","displayName","defaultProps"],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { Children } from 'react';
2
+ import { m as getRootClassName, n as forwardRef, b as Theme, l as classNames, c as Size } from './6589b796.js';
3
+ import { h as handleBasicClasses } from './e2afb13f.js';
4
+ import { u as useTheme } from './3181f000.js';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+ import { Avatar } from './74a4a214.js';
7
+ import { Tooltip } from './9a4dfad0.js';
8
+
9
+ /**
10
+ * Comment block variants.
11
+ */
12
+ const CommentBlockVariant = {
13
+ indented: 'indented',
14
+ linear: 'linear'
15
+ };
16
+
17
+ /**
18
+ * Defines the props of the component.
19
+ */
20
+
21
+ /**
22
+ * Component display name.
23
+ */
24
+ const COMPONENT_NAME = 'CommentBlock';
25
+
26
+ /**
27
+ * Component default class name and class prefix.
28
+ */
29
+ const CLASSNAME = getRootClassName(COMPONENT_NAME);
30
+
31
+ /**
32
+ * Component default props.
33
+ */
34
+ const DEFAULT_PROPS = {
35
+ variant: CommentBlockVariant.indented
36
+ };
37
+
38
+ /**
39
+ * CommentBlock component.
40
+ *
41
+ * @param props Component props.
42
+ * @param ref Component ref.
43
+ * @return React element.
44
+ */
45
+ const CommentBlock = forwardRef((props, ref) => {
46
+ const defaultTheme = useTheme() || Theme.light;
47
+ const {
48
+ actions,
49
+ avatarProps,
50
+ children,
51
+ className,
52
+ date,
53
+ fullDate,
54
+ hasActions,
55
+ headerActions,
56
+ isOpen,
57
+ isRelevant,
58
+ name,
59
+ onClick,
60
+ onMouseEnter,
61
+ onMouseLeave,
62
+ text,
63
+ theme = defaultTheme,
64
+ variant = DEFAULT_PROPS.variant,
65
+ ...forwardedProps
66
+ } = props;
67
+ const hasChildren = Children.count(children) > 0;
68
+ return /*#__PURE__*/jsxs("div", {
69
+ ref: ref,
70
+ className: classNames(className, handleBasicClasses({
71
+ hasChildren: hasChildren && isOpen,
72
+ hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,
73
+ hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,
74
+ isRelevant,
75
+ prefix: CLASSNAME,
76
+ theme
77
+ })),
78
+ ...forwardedProps,
79
+ children: [/*#__PURE__*/jsxs("div", {
80
+ className: `${CLASSNAME}__wrapper`,
81
+ children: [/*#__PURE__*/jsx("div", {
82
+ className: `${CLASSNAME}__avatar`,
83
+ children: /*#__PURE__*/jsx(Avatar, {
84
+ ...avatarProps,
85
+ size: Size.m,
86
+ onClick: onClick
87
+ })
88
+ }), /*#__PURE__*/jsxs("div", {
89
+ className: `${CLASSNAME}__container`,
90
+ children: [/*#__PURE__*/jsxs("div", {
91
+ className: `${CLASSNAME}__content`,
92
+ children: [/*#__PURE__*/jsxs("div", {
93
+ className: `${CLASSNAME}__meta`,
94
+ children: [name &&
95
+ /*#__PURE__*/
96
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
97
+ jsx("span", {
98
+ className: `${CLASSNAME}__name`,
99
+ onClick: onClick,
100
+ onMouseEnter: onMouseEnter,
101
+ onMouseLeave: onMouseLeave,
102
+ children: name
103
+ }), headerActions && /*#__PURE__*/jsx("span", {
104
+ className: `${CLASSNAME}__header-actions`,
105
+ children: headerActions
106
+ })]
107
+ }), /*#__PURE__*/jsx("div", {
108
+ className: `${CLASSNAME}__text`,
109
+ children: text
110
+ }), date && (fullDate ? /*#__PURE__*/jsx(Tooltip, {
111
+ label: fullDate,
112
+ placement: "top",
113
+ children: /*#__PURE__*/jsx("span", {
114
+ className: `${CLASSNAME}__date`,
115
+ children: date
116
+ })
117
+ }) : /*#__PURE__*/jsx("span", {
118
+ className: `${CLASSNAME}__date`,
119
+ children: date
120
+ }))]
121
+ }), hasActions && /*#__PURE__*/jsx("div", {
122
+ className: `${CLASSNAME}__actions`,
123
+ children: actions
124
+ })]
125
+ })]
126
+ }), hasChildren && isOpen && /*#__PURE__*/jsx("div", {
127
+ className: `${CLASSNAME}__children`,
128
+ children: children
129
+ })]
130
+ });
131
+ });
132
+ CommentBlock.displayName = COMPONENT_NAME;
133
+ CommentBlock.className = CLASSNAME;
134
+ CommentBlock.defaultProps = DEFAULT_PROPS;
135
+
136
+ export { CommentBlock, CommentBlockVariant };
137
+ //# sourceMappingURL=21b83d16.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"5ba8fae8.js","sources":["../../src/components/comment-block/CommentBlock.tsx"],"sourcesContent":["import { Children, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Avatar, Size, Theme, Tooltip } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * Comment block variants.\n */\nexport const CommentBlockVariant = {\n indented: 'indented',\n linear: 'linear',\n} as const;\nexport type CommentBlockVariant = ValueOf<typeof CommentBlockVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface CommentBlockProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Props to pass to the avatar. */\n avatarProps: AvatarProps;\n /** Comment block replies. */\n children?: ReactNode;\n /** Comment date with the minimal timestamp information (xx minutes, x hours, yesterday, 6 days, Month Day, Month Day Year)*/\n date?: string;\n /** Comment date with the full timestamp information (day, month, year, time) */\n fullDate?: string;\n /** Whether the component has actions to display or not. */\n hasActions?: boolean;\n /** Action toolbar header content. */\n headerActions?: ReactNode;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the comment is relevant or not. */\n isRelevant?: boolean;\n /** Comment author name. */\n name?: React.ReactNode;\n /**\n * On click callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onClick?(): void;\n /**\n * On mouse enter callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseEnter?(): void;\n /**\n * On mouse leave callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseLeave?(): void;\n /** Comment content. */\n text: ReactNode | string;\n /** Comment variant. */\n variant?: CommentBlockVariant;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'CommentBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<CommentBlockProps> = {\n variant: CommentBlockVariant.indented,\n};\n\n/**\n * CommentBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const CommentBlock = forwardRef<CommentBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n avatarProps,\n children,\n className,\n date,\n fullDate,\n hasActions,\n headerActions,\n isOpen,\n isRelevant,\n name,\n onClick,\n onMouseEnter,\n onMouseLeave,\n text,\n theme = defaultTheme,\n variant = DEFAULT_PROPS.variant,\n ...forwardedProps\n } = props;\n const hasChildren = Children.count(children) > 0;\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChildren: hasChildren && isOpen,\n hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,\n hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,\n isRelevant,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n {...forwardedProps}\n >\n <div className={`${CLASSNAME}__wrapper`}>\n <div className={`${CLASSNAME}__avatar`}>\n <Avatar {...avatarProps} size={Size.m} onClick={onClick} />\n </div>\n\n <div className={`${CLASSNAME}__container`}>\n <div className={`${CLASSNAME}__content`}>\n <div className={`${CLASSNAME}__meta`}>\n {name && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <span\n className={`${CLASSNAME}__name`}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {name}\n </span>\n )}\n {headerActions && <span className={`${CLASSNAME}__header-actions`}>{headerActions}</span>}\n </div>\n\n <div className={`${CLASSNAME}__text`}>{text}</div>\n {date &&\n (fullDate ? (\n <Tooltip label={fullDate} placement=\"top\">\n <span className={`${CLASSNAME}__date`}>{date}</span>\n </Tooltip>\n ) : (\n <span className={`${CLASSNAME}__date`}>{date}</span>\n ))}\n </div>\n {hasActions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </div>\n </div>\n {hasChildren && isOpen && <div className={`${CLASSNAME}__children`}>{children}</div>}\n </div>\n );\n});\nCommentBlock.displayName = COMPONENT_NAME;\nCommentBlock.className = CLASSNAME;\nCommentBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["CommentBlockVariant","indented","linear","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","variant","CommentBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","avatarProps","children","className","date","fullDate","hasActions","headerActions","isOpen","isRelevant","name","onClick","onMouseEnter","onMouseLeave","text","theme","forwardedProps","hasChildren","Children","count","React","createElement","_extends","classNames","handleBasicClasses","hasIndentedChildren","hasLinearChildren","prefix","Avatar","size","Size","m","Tooltip","label","placement","displayName","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"21b83d16.js","sources":["../../src/components/comment-block/CommentBlock.tsx"],"sourcesContent":["import { Children, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Avatar, Size, Theme, Tooltip } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * Comment block variants.\n */\nexport const CommentBlockVariant = {\n indented: 'indented',\n linear: 'linear',\n} as const;\nexport type CommentBlockVariant = ValueOf<typeof CommentBlockVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface CommentBlockProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Props to pass to the avatar. */\n avatarProps: AvatarProps;\n /** Comment block replies. */\n children?: ReactNode;\n /** Comment date with the minimal timestamp information (xx minutes, x hours, yesterday, 6 days, Month Day, Month Day Year)*/\n date?: string;\n /** Comment date with the full timestamp information (day, month, year, time) */\n fullDate?: string;\n /** Whether the component has actions to display or not. */\n hasActions?: boolean;\n /** Action toolbar header content. */\n headerActions?: ReactNode;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the comment is relevant or not. */\n isRelevant?: boolean;\n /** Comment author name. */\n name?: React.ReactNode;\n /**\n * On click callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onClick?(): void;\n /**\n * On mouse enter callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseEnter?(): void;\n /**\n * On mouse leave callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseLeave?(): void;\n /** Comment content. */\n text: ReactNode | string;\n /** Comment variant. */\n variant?: CommentBlockVariant;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'CommentBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<CommentBlockProps> = {\n variant: CommentBlockVariant.indented,\n};\n\n/**\n * CommentBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const CommentBlock = forwardRef<CommentBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n avatarProps,\n children,\n className,\n date,\n fullDate,\n hasActions,\n headerActions,\n isOpen,\n isRelevant,\n name,\n onClick,\n onMouseEnter,\n onMouseLeave,\n text,\n theme = defaultTheme,\n variant = DEFAULT_PROPS.variant,\n ...forwardedProps\n } = props;\n const hasChildren = Children.count(children) > 0;\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChildren: hasChildren && isOpen,\n hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,\n hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,\n isRelevant,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n {...forwardedProps}\n >\n <div className={`${CLASSNAME}__wrapper`}>\n <div className={`${CLASSNAME}__avatar`}>\n <Avatar {...avatarProps} size={Size.m} onClick={onClick} />\n </div>\n\n <div className={`${CLASSNAME}__container`}>\n <div className={`${CLASSNAME}__content`}>\n <div className={`${CLASSNAME}__meta`}>\n {name && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <span\n className={`${CLASSNAME}__name`}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {name}\n </span>\n )}\n {headerActions && <span className={`${CLASSNAME}__header-actions`}>{headerActions}</span>}\n </div>\n\n <div className={`${CLASSNAME}__text`}>{text}</div>\n {date &&\n (fullDate ? (\n <Tooltip label={fullDate} placement=\"top\">\n <span className={`${CLASSNAME}__date`}>{date}</span>\n </Tooltip>\n ) : (\n <span className={`${CLASSNAME}__date`}>{date}</span>\n ))}\n </div>\n {hasActions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </div>\n </div>\n {hasChildren && isOpen && <div className={`${CLASSNAME}__children`}>{children}</div>}\n </div>\n );\n});\nCommentBlock.displayName = COMPONENT_NAME;\nCommentBlock.className = CLASSNAME;\nCommentBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["CommentBlockVariant","indented","linear","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","variant","CommentBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","avatarProps","children","className","date","fullDate","hasActions","headerActions","isOpen","isRelevant","name","onClick","onMouseEnter","onMouseLeave","text","theme","forwardedProps","hasChildren","Children","count","_jsxs","classNames","handleBasicClasses","hasIndentedChildren","hasLinearChildren","prefix","_jsx","Avatar","size","Size","m","Tooltip","label","placement","displayName","defaultProps"],"mappings":"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"}