@lumx/react 3.20.1-alpha.31 → 3.20.1-alpha.32

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 (171) hide show
  1. package/_internal/{Button-f382ee1c.js → Button-1b7d3b79.js} +9 -8
  2. package/_internal/Button-1b7d3b79.js.map +1 -0
  3. package/_internal/ButtonRoot-a70baf82.js.map +1 -1
  4. package/_internal/{Chip-70af04b4.js → Chip-8fbedc93.js} +10 -7
  5. package/_internal/Chip-8fbedc93.js.map +1 -0
  6. package/_internal/{ClickAwayProvider-1204f237.js → ClickAwayProvider-7093ba23.js} +2 -2
  7. package/_internal/ClickAwayProvider-7093ba23.js.map +1 -0
  8. package/_internal/{IconButton-1790b47e.js → IconButton-e11b5e74.js} +3 -3
  9. package/_internal/{IconButton-1790b47e.js.map → IconButton-e11b5e74.js.map} +1 -1
  10. package/_internal/{ImageCaption-16bf224b.js → ImageCaption-6f2f4131.js} +3 -3
  11. package/_internal/{ImageCaption-16bf224b.js.map → ImageCaption-6f2f4131.js.map} +1 -1
  12. package/_internal/{List-c75646f2.js → List-4e95288a.js} +9 -7
  13. package/_internal/List-4e95288a.js.map +1 -0
  14. package/_internal/{PopoverDialog-3b63f140.js → PopoverDialog-d85ff977.js} +10 -10
  15. package/_internal/PopoverDialog-d85ff977.js.map +1 -0
  16. package/_internal/{Slides-2a427c44.js → Slides-68a7d0e6.js} +13 -6
  17. package/_internal/Slides-68a7d0e6.js.map +1 -0
  18. package/_internal/{Thumbnail-d2001ccb.js → Thumbnail-22bbea7e.js} +4 -3
  19. package/_internal/Thumbnail-22bbea7e.js.map +1 -0
  20. package/_internal/check-circle-de24f857.js +4 -0
  21. package/_internal/check-circle-de24f857.js.map +1 -0
  22. package/_internal/chevron-right-827b804a.js +6 -0
  23. package/_internal/chevron-right-827b804a.js.map +1 -0
  24. package/_internal/chevron-up-0b9c76cb.js +6 -0
  25. package/_internal/chevron-up-0b9c76cb.js.map +1 -0
  26. package/_internal/close-circle-ef5d1aac.js +4 -0
  27. package/_internal/close-circle-ef5d1aac.js.map +1 -0
  28. package/_internal/close-eaf6c45a.js +4 -0
  29. package/_internal/close-eaf6c45a.js.map +1 -0
  30. package/_internal/components/{alert-dialog-bd1b2532.js → alert-dialog-5326cf04.js} +6 -5
  31. package/_internal/components/{alert-dialog-bd1b2532.js.map → alert-dialog-5326cf04.js.map} +1 -1
  32. package/_internal/components/{autocomplete-8ae2c4f9.js → autocomplete-7d9581e8.js} +7 -7
  33. package/_internal/components/{autocomplete-8ae2c4f9.js.map → autocomplete-7d9581e8.js.map} +1 -1
  34. package/_internal/components/{avatar-778d7df6.js → avatar-52bb217f.js} +2 -2
  35. package/_internal/components/{avatar-778d7df6.js.map → avatar-52bb217f.js.map} +1 -1
  36. package/_internal/components/{button-4aff084a.js → button-c4127e86.js} +3 -3
  37. package/_internal/components/{button-4aff084a.js.map → button-c4127e86.js.map} +1 -1
  38. package/_internal/components/{checkbox-a448ca6c.js → checkbox-f7751583.js} +6 -3
  39. package/_internal/components/checkbox-f7751583.js.map +1 -0
  40. package/_internal/components/{chip-19e40755.js → chip-1ed080fb.js} +2 -2
  41. package/_internal/components/{chip-19e40755.js.map → chip-1ed080fb.js.map} +1 -1
  42. package/_internal/components/{comment-block-bcbedf3c.js → comment-block-343e1922.js} +3 -3
  43. package/_internal/components/{comment-block-bcbedf3c.js.map → comment-block-343e1922.js.map} +1 -1
  44. package/_internal/components/date-picker-b6b3dc77.js +2 -0
  45. package/_internal/components/date-picker-b6b3dc77.js.map +1 -0
  46. package/_internal/components/{dialog-30336ccb.js → dialog-d0e090b1.js} +6 -6
  47. package/_internal/components/dialog-d0e090b1.js.map +1 -0
  48. package/_internal/components/{drag-handle-137f71b6.js → drag-handle-eec23fc2.js} +4 -3
  49. package/_internal/components/drag-handle-eec23fc2.js.map +1 -0
  50. package/_internal/components/{dropdown-d18122d7.js → dropdown-25170b7c.js} +4 -4
  51. package/_internal/components/{dropdown-d18122d7.js.map → dropdown-25170b7c.js.map} +1 -1
  52. package/_internal/components/{expansion-panel-38ed3d9f.js → expansion-panel-df812318.js} +9 -9
  53. package/_internal/components/expansion-panel-df812318.js.map +1 -0
  54. package/_internal/components/{flag-c2e41e8d.js → flag-c8d690bc.js} +3 -3
  55. package/_internal/components/{flag-c2e41e8d.js.map → flag-c8d690bc.js.map} +1 -1
  56. package/_internal/components/{flex-box-15be92f6.js → flex-box-4eeba972.js} +2 -2
  57. package/_internal/components/flex-box-4eeba972.js.map +1 -0
  58. package/_internal/components/{generic-block-5d843f1e.js → generic-block-964b2724.js} +11 -14
  59. package/_internal/components/generic-block-964b2724.js.map +1 -0
  60. package/_internal/components/{grid-column-85e305e7.js → grid-column-99652545.js} +3 -2
  61. package/_internal/components/grid-column-99652545.js.map +1 -0
  62. package/_internal/components/{heading-28520e1c.js → heading-6cc0f178.js} +2 -2
  63. package/_internal/components/{heading-28520e1c.js.map → heading-6cc0f178.js.map} +1 -1
  64. package/_internal/components/icon-9cf785b1.js +2 -0
  65. package/_internal/components/icon-9cf785b1.js.map +1 -0
  66. package/_internal/components/{image-block-10976174.js → image-block-4f3fe64c.js} +3 -3
  67. package/_internal/components/{image-block-10976174.js.map → image-block-4f3fe64c.js.map} +1 -1
  68. package/_internal/components/{image-lightbox-86f1e1fb.js → image-lightbox-7b172571.js} +12 -9
  69. package/_internal/components/image-lightbox-7b172571.js.map +1 -0
  70. package/_internal/components/{lightbox-c618a33b.js → lightbox-10ff28f9.js} +6 -6
  71. package/_internal/components/{lightbox-c618a33b.js.map → lightbox-10ff28f9.js.map} +1 -1
  72. package/_internal/components/{link-9c3feb34.js → link-9d1bd2f6.js} +3 -3
  73. package/_internal/components/{link-9c3feb34.js.map → link-9d1bd2f6.js.map} +1 -1
  74. package/_internal/components/{link-preview-79500604.js → link-preview-9525e97f.js} +3 -3
  75. package/_internal/components/{link-preview-79500604.js.map → link-preview-9525e97f.js.map} +1 -1
  76. package/_internal/components/{list-2f256244.js → list-c8c7a6eb.js} +2 -2
  77. package/_internal/components/{list-2f256244.js.map → list-c8c7a6eb.js.map} +1 -1
  78. package/_internal/components/{message-a3806f51.js → message-edd6a28a.js} +6 -4
  79. package/_internal/components/{message-a3806f51.js.map → message-edd6a28a.js.map} +1 -1
  80. package/_internal/components/{mosaic-e6581097.js → mosaic-c8084ee8.js} +4 -3
  81. package/_internal/components/mosaic-c8084ee8.js.map +1 -0
  82. package/_internal/components/{navigation-5378f128.js → navigation-c9121998.js} +6 -6
  83. package/_internal/components/{navigation-5378f128.js.map → navigation-c9121998.js.map} +1 -1
  84. package/_internal/components/{notification-49837625.js → notification-97a8a04a.js} +9 -5
  85. package/_internal/components/notification-97a8a04a.js.map +1 -0
  86. package/_internal/components/popover-f93484cd.js +3 -0
  87. package/_internal/components/popover-f93484cd.js.map +1 -0
  88. package/_internal/components/{post-block-478bc3b8.js → post-block-7e63c4f4.js} +12 -12
  89. package/_internal/components/post-block-7e63c4f4.js.map +1 -0
  90. package/_internal/components/{progress-tracker-0fd35bea.js → progress-tracker-c9758d83.js} +7 -3
  91. package/_internal/components/progress-tracker-c9758d83.js.map +1 -0
  92. package/_internal/components/{select-a145edbb.js → select-bea40e77.js} +15 -10
  93. package/_internal/components/select-bea40e77.js.map +1 -0
  94. package/_internal/components/{side-navigation-b99d6022.js → side-navigation-385825d4.js} +7 -6
  95. package/_internal/components/side-navigation-385825d4.js.map +1 -0
  96. package/_internal/components/{slideshow-b78ac3d6.js → slideshow-e0880d40.js} +3 -3
  97. package/_internal/components/{slideshow-b78ac3d6.js.map → slideshow-e0880d40.js.map} +1 -1
  98. package/_internal/components/{switch-25b65051.js → switch-24fea8d7.js} +3 -2
  99. package/_internal/components/switch-24fea8d7.js.map +1 -0
  100. package/_internal/components/{table-3cbee034.js → table-834af792.js} +6 -3
  101. package/_internal/components/table-834af792.js.map +1 -0
  102. package/_internal/components/{tabs-5d8ea1a5.js → tabs-bebfe959.js} +3 -3
  103. package/_internal/components/{tabs-5d8ea1a5.js.map → tabs-bebfe959.js.map} +1 -1
  104. package/_internal/components/text-9074f440.js +2 -0
  105. package/_internal/components/text-9074f440.js.map +1 -0
  106. package/_internal/components/{text-field-c26582c5.js → text-field-8597b7f7.js} +7 -5
  107. package/_internal/components/text-field-8597b7f7.js.map +1 -0
  108. package/_internal/components/{thumbnail-cb55b26c.js → thumbnail-4928bba2.js} +2 -2
  109. package/_internal/components/{thumbnail-cb55b26c.js.map → thumbnail-4928bba2.js.map} +1 -1
  110. package/_internal/components/{tooltip-dcb43bbe.js → tooltip-21018736.js} +2 -2
  111. package/_internal/components/{tooltip-dcb43bbe.js.map → tooltip-21018736.js.map} +1 -1
  112. package/_internal/components/{uploader-873b9bc1.js → uploader-2e1b080e.js} +2 -2
  113. package/_internal/components/{uploader-873b9bc1.js.map → uploader-2e1b080e.js.map} +1 -1
  114. package/_internal/components/{user-block-7cbaffe0.js → user-block-5fd51607.js} +12 -11
  115. package/_internal/components/user-block-5fd51607.js.map +1 -0
  116. package/_internal/{index-151e2652.js → index-77f213b1.js} +2 -2
  117. package/_internal/{index-151e2652.js.map → index-77f213b1.js.map} +1 -1
  118. package/_internal/{index-25d2a45e.js → index-aa6d1d90.js} +4 -4
  119. package/_internal/{index-25d2a45e.js.map → index-aa6d1d90.js.map} +1 -1
  120. package/_internal/{components/icon-a00d698b.js → index-d3e86bd8.js} +6 -5
  121. package/_internal/index-d3e86bd8.js.map +1 -0
  122. package/_internal/information-49bbeed3.js +6 -0
  123. package/_internal/information-49bbeed3.js.map +1 -0
  124. package/_internal/{isComponent-b9762ff1.js → isComponent-78df9309.js} +5 -3
  125. package/_internal/isComponent-78df9309.js.map +1 -0
  126. package/_internal/partitionMulti-4daccdd5.js +25 -0
  127. package/_internal/partitionMulti-4daccdd5.js.map +1 -0
  128. package/_internal/{useCallbackOnEscape-b956a85d.js → useCallbackOnEscape-ea4d9eb4.js} +4 -6
  129. package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +1 -0
  130. package/_internal/{useFocusTrap-2dbae79e.js → useFocusTrap-c3c6378b.js} +2 -2
  131. package/_internal/{useFocusTrap-2dbae79e.js.map → useFocusTrap-c3c6378b.js.map} +1 -1
  132. package/_internal/{wrapChildrenIconWithSpaces-ef2a6772.js → wrapChildrenIconWithSpaces-fb85a743.js} +2 -2
  133. package/_internal/{wrapChildrenIconWithSpaces-ef2a6772.js.map → wrapChildrenIconWithSpaces-fb85a743.js.map} +1 -1
  134. package/index.d.ts +15 -4
  135. package/index.js +49 -49
  136. package/package.json +3 -3
  137. package/utils/index.js +1 -1
  138. package/_internal/Button-f382ee1c.js.map +0 -1
  139. package/_internal/Chip-70af04b4.js.map +0 -1
  140. package/_internal/ClickAwayProvider-1204f237.js.map +0 -1
  141. package/_internal/List-c75646f2.js.map +0 -1
  142. package/_internal/PopoverDialog-3b63f140.js.map +0 -1
  143. package/_internal/Slides-2a427c44.js.map +0 -1
  144. package/_internal/Thumbnail-d2001ccb.js.map +0 -1
  145. package/_internal/components/checkbox-a448ca6c.js.map +0 -1
  146. package/_internal/components/date-picker-b6d4048e.js +0 -2
  147. package/_internal/components/date-picker-b6d4048e.js.map +0 -1
  148. package/_internal/components/dialog-30336ccb.js.map +0 -1
  149. package/_internal/components/drag-handle-137f71b6.js.map +0 -1
  150. package/_internal/components/expansion-panel-38ed3d9f.js.map +0 -1
  151. package/_internal/components/flex-box-15be92f6.js.map +0 -1
  152. package/_internal/components/generic-block-5d843f1e.js.map +0 -1
  153. package/_internal/components/grid-column-85e305e7.js.map +0 -1
  154. package/_internal/components/icon-a00d698b.js.map +0 -1
  155. package/_internal/components/image-lightbox-86f1e1fb.js.map +0 -1
  156. package/_internal/components/mosaic-e6581097.js.map +0 -1
  157. package/_internal/components/notification-49837625.js.map +0 -1
  158. package/_internal/components/popover-dfcddda4.js +0 -3
  159. package/_internal/components/popover-dfcddda4.js.map +0 -1
  160. package/_internal/components/post-block-478bc3b8.js.map +0 -1
  161. package/_internal/components/progress-tracker-0fd35bea.js.map +0 -1
  162. package/_internal/components/select-a145edbb.js.map +0 -1
  163. package/_internal/components/side-navigation-b99d6022.js.map +0 -1
  164. package/_internal/components/switch-25b65051.js.map +0 -1
  165. package/_internal/components/table-3cbee034.js.map +0 -1
  166. package/_internal/components/text-f84a5417.js +0 -2
  167. package/_internal/components/text-f84a5417.js.map +0 -1
  168. package/_internal/components/text-field-c26582c5.js.map +0 -1
  169. package/_internal/components/user-block-7cbaffe0.js.map +0 -1
  170. package/_internal/isComponent-b9762ff1.js.map +0 -1
  171. package/_internal/useCallbackOnEscape-b956a85d.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slideshow-b78ac3d6.js","sources":["../../../src/hooks/useFocusWithin.ts","../../../src/components/slideshow/Slideshow.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nexport interface UseFocusWithinOptions {\n /** element to add the focus within to */\n element: HTMLElement | null;\n /** callback to be executed on focus in */\n onFocusIn: (ev: FocusEvent) => void;\n /** callback to be executed on focus out */\n onFocusOut: (ev: FocusEvent) => void;\n}\n\n/**\n * Hook that allows to control when there is a focus event within a given element, meaning\n * that any element within the given target will trigger the focus in and focus out events.\n * @param options - UseFocusWithinOptions\n */\nexport const useFocusWithin = ({ element, onFocusIn, onFocusOut }: UseFocusWithinOptions) => {\n useEffect(() => {\n if (element) {\n element.addEventListener('focusin', onFocusIn);\n\n element.addEventListener('focusout', onFocusOut);\n }\n\n return () => {\n if (element) {\n element.removeEventListener('focusin', onFocusIn);\n\n element.removeEventListener('focusout', onFocusOut);\n }\n };\n }, [onFocusIn, element, onFocusOut]);\n};\n","import React from 'react';\n\nimport { SlideshowControls, SlideshowControlsProps, Theme, Slides, SlidesProps } from '@lumx/react';\nimport { DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { useFocusWithin } from '@lumx/react/hooks/useFocusWithin';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { buildSlideShowGroupId } from './SlideshowItemGroup';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowProps\n extends GenericProps,\n Pick<SlidesProps, 'autoPlay' | 'slidesId' | 'id' | 'theme' | 'fillHeight' | 'groupBy' | 'slideGroupLabel'> {\n /** current slide active */\n activeIndex?: SlidesProps['activeIndex'];\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Props to pass to the slideshow controls (minus those already set by the Slideshow props). */\n slideshowControlsProps?: Pick<\n SlideshowControlsProps,\n 'nextButtonProps' | 'previousButtonProps' | 'paginationItemProps'\n > &\n Omit<\n SlideshowControlsProps,\n | 'activeIndex'\n | 'onPaginationClick'\n | 'onNextClick'\n | 'onPreviousClick'\n | 'slidesCount'\n | 'parentRef'\n | 'theme'\n >;\n /** Callback when slide changes */\n onChange?(index: number): void;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<SlideshowProps> = DEFAULT_OPTIONS;\n\n/**\n * Slideshow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slideshow = forwardRef<SlideshowProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n activeIndex,\n autoPlay = DEFAULT_PROPS.autoPlay,\n children,\n className,\n fillHeight,\n groupBy = DEFAULT_OPTIONS.groupBy,\n interval = DEFAULT_PROPS.interval,\n onChange,\n slideshowControlsProps,\n theme = defaultTheme,\n id,\n slidesId,\n slideGroupLabel,\n ...forwardedProps\n } = props;\n // Number of slideshow items.\n const itemsCount = React.Children.count(children);\n\n const {\n activeIndex: currentIndex,\n slideshowId,\n setSlideshow,\n isAutoPlaying,\n slideshowSlidesId,\n slidesCount,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n slideshow,\n stopAutoPlay,\n startAutoPlay,\n toggleAutoPlay,\n toggleForcePause,\n } = SlideshowControls.useSlideshowControls({\n activeIndex,\n defaultActiveIndex: DEFAULT_PROPS.activeIndex as number,\n autoPlay: Boolean(autoPlay),\n itemsCount,\n groupBy,\n id,\n interval,\n onChange,\n slidesId,\n });\n\n useFocusWithin({\n element: slideshow,\n onFocusIn: stopAutoPlay,\n onFocusOut: startAutoPlay,\n });\n\n const showControls = slideshowControlsProps && slidesCount > 1;\n\n return (\n <Slides\n activeIndex={currentIndex}\n id={slideshowId}\n className={className}\n theme={theme}\n fillHeight={fillHeight}\n groupBy={groupBy}\n isAutoPlaying={isAutoPlaying}\n autoPlay={autoPlay}\n slidesId={slideshowSlidesId}\n toggleAutoPlay={toggleAutoPlay}\n ref={mergeRefs(ref, setSlideshow)}\n hasControls={showControls}\n slideGroupLabel={slideGroupLabel}\n afterSlides={\n slideshowControlsProps && slidesCount > 1 ? (\n <div className={`${Slides.className}__controls`}>\n <SlideshowControls\n {...slideshowControlsProps}\n activeIndex={currentIndex}\n onPaginationClick={onPaginationClick}\n onNextClick={onNextClick}\n onPreviousClick={onPreviousClick}\n slidesCount={slidesCount}\n parentRef={slideshow}\n theme={theme}\n isAutoPlaying={isAutoPlaying}\n nextButtonProps={{\n 'aria-controls': slideshowSlidesId,\n ...slideshowControlsProps.nextButtonProps,\n }}\n previousButtonProps={{\n 'aria-controls': slideshowSlidesId,\n ...slideshowControlsProps.previousButtonProps,\n }}\n playButtonProps={\n autoPlay\n ? {\n 'aria-controls': slideshowSlidesId,\n onClick: toggleForcePause,\n ...slideshowControlsProps.playButtonProps,\n }\n : undefined\n }\n paginationItemProps={(index) => ({\n 'aria-controls': buildSlideShowGroupId(slideshowSlidesId, index),\n ...slideshowControlsProps.paginationItemProps?.(index),\n })}\n />\n </div>\n ) : undefined\n }\n {...forwardedProps}\n >\n {children}\n </Slides>\n );\n});\n\nSlideshow.displayName = 'Slideshow';\nSlideshow.defaultProps = DEFAULT_PROPS;\n"],"names":["useFocusWithin","element","onFocusIn","onFocusOut","useEffect","addEventListener","removeEventListener","DEFAULT_PROPS","DEFAULT_OPTIONS","Slideshow","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","activeIndex","autoPlay","children","className","fillHeight","groupBy","interval","onChange","slideshowControlsProps","theme","id","slidesId","slideGroupLabel","forwardedProps","itemsCount","React","Children","count","currentIndex","slideshowId","setSlideshow","isAutoPlaying","slideshowSlidesId","slidesCount","onNextClick","onPaginationClick","onPreviousClick","slideshow","stopAutoPlay","startAutoPlay","toggleAutoPlay","toggleForcePause","SlideshowControls","useSlideshowControls","defaultActiveIndex","Boolean","showControls","_jsx","Slides","mergeRefs","hasControls","afterSlides","parentRef","nextButtonProps","previousButtonProps","playButtonProps","onClick","undefined","paginationItemProps","index","buildSlideShowGroupId","displayName","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"slideshow-e0880d40.js","sources":["../../../src/hooks/useFocusWithin.ts","../../../src/components/slideshow/Slideshow.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nexport interface UseFocusWithinOptions {\n /** element to add the focus within to */\n element: HTMLElement | null;\n /** callback to be executed on focus in */\n onFocusIn: (ev: FocusEvent) => void;\n /** callback to be executed on focus out */\n onFocusOut: (ev: FocusEvent) => void;\n}\n\n/**\n * Hook that allows to control when there is a focus event within a given element, meaning\n * that any element within the given target will trigger the focus in and focus out events.\n * @param options - UseFocusWithinOptions\n */\nexport const useFocusWithin = ({ element, onFocusIn, onFocusOut }: UseFocusWithinOptions) => {\n useEffect(() => {\n if (element) {\n element.addEventListener('focusin', onFocusIn);\n\n element.addEventListener('focusout', onFocusOut);\n }\n\n return () => {\n if (element) {\n element.removeEventListener('focusin', onFocusIn);\n\n element.removeEventListener('focusout', onFocusOut);\n }\n };\n }, [onFocusIn, element, onFocusOut]);\n};\n","import React from 'react';\n\nimport { SlideshowControls, SlideshowControlsProps, Theme, Slides, SlidesProps } from '@lumx/react';\nimport { DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { useFocusWithin } from '@lumx/react/hooks/useFocusWithin';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { buildSlideShowGroupId } from './SlideshowItemGroup';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowProps\n extends GenericProps,\n Pick<SlidesProps, 'autoPlay' | 'slidesId' | 'id' | 'theme' | 'fillHeight' | 'groupBy' | 'slideGroupLabel'> {\n /** current slide active */\n activeIndex?: SlidesProps['activeIndex'];\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Props to pass to the slideshow controls (minus those already set by the Slideshow props). */\n slideshowControlsProps?: Pick<\n SlideshowControlsProps,\n 'nextButtonProps' | 'previousButtonProps' | 'paginationItemProps'\n > &\n Omit<\n SlideshowControlsProps,\n | 'activeIndex'\n | 'onPaginationClick'\n | 'onNextClick'\n | 'onPreviousClick'\n | 'slidesCount'\n | 'parentRef'\n | 'theme'\n >;\n /** Callback when slide changes */\n onChange?(index: number): void;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<SlideshowProps> = DEFAULT_OPTIONS;\n\n/**\n * Slideshow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slideshow = forwardRef<SlideshowProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n activeIndex,\n autoPlay = DEFAULT_PROPS.autoPlay,\n children,\n className,\n fillHeight,\n groupBy = DEFAULT_OPTIONS.groupBy,\n interval = DEFAULT_PROPS.interval,\n onChange,\n slideshowControlsProps,\n theme = defaultTheme,\n id,\n slidesId,\n slideGroupLabel,\n ...forwardedProps\n } = props;\n // Number of slideshow items.\n const itemsCount = React.Children.count(children);\n\n const {\n activeIndex: currentIndex,\n slideshowId,\n setSlideshow,\n isAutoPlaying,\n slideshowSlidesId,\n slidesCount,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n slideshow,\n stopAutoPlay,\n startAutoPlay,\n toggleAutoPlay,\n toggleForcePause,\n } = SlideshowControls.useSlideshowControls({\n activeIndex,\n defaultActiveIndex: DEFAULT_PROPS.activeIndex as number,\n autoPlay: Boolean(autoPlay),\n itemsCount,\n groupBy,\n id,\n interval,\n onChange,\n slidesId,\n });\n\n useFocusWithin({\n element: slideshow,\n onFocusIn: stopAutoPlay,\n onFocusOut: startAutoPlay,\n });\n\n const showControls = slideshowControlsProps && slidesCount > 1;\n\n return (\n <Slides\n activeIndex={currentIndex}\n id={slideshowId}\n className={className}\n theme={theme}\n fillHeight={fillHeight}\n groupBy={groupBy}\n isAutoPlaying={isAutoPlaying}\n autoPlay={autoPlay}\n slidesId={slideshowSlidesId}\n toggleAutoPlay={toggleAutoPlay}\n ref={mergeRefs(ref, setSlideshow)}\n hasControls={showControls}\n slideGroupLabel={slideGroupLabel}\n afterSlides={\n slideshowControlsProps && slidesCount > 1 ? (\n <div className={`${Slides.className}__controls`}>\n <SlideshowControls\n {...slideshowControlsProps}\n activeIndex={currentIndex}\n onPaginationClick={onPaginationClick}\n onNextClick={onNextClick}\n onPreviousClick={onPreviousClick}\n slidesCount={slidesCount}\n parentRef={slideshow}\n theme={theme}\n isAutoPlaying={isAutoPlaying}\n nextButtonProps={{\n 'aria-controls': slideshowSlidesId,\n ...slideshowControlsProps.nextButtonProps,\n }}\n previousButtonProps={{\n 'aria-controls': slideshowSlidesId,\n ...slideshowControlsProps.previousButtonProps,\n }}\n playButtonProps={\n autoPlay\n ? {\n 'aria-controls': slideshowSlidesId,\n onClick: toggleForcePause,\n ...slideshowControlsProps.playButtonProps,\n }\n : undefined\n }\n paginationItemProps={(index) => ({\n 'aria-controls': buildSlideShowGroupId(slideshowSlidesId, index),\n ...slideshowControlsProps.paginationItemProps?.(index),\n })}\n />\n </div>\n ) : undefined\n }\n {...forwardedProps}\n >\n {children}\n </Slides>\n );\n});\n\nSlideshow.displayName = 'Slideshow';\nSlideshow.defaultProps = DEFAULT_PROPS;\n"],"names":["useFocusWithin","element","onFocusIn","onFocusOut","useEffect","addEventListener","removeEventListener","DEFAULT_PROPS","DEFAULT_OPTIONS","Slideshow","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","activeIndex","autoPlay","children","className","fillHeight","groupBy","interval","onChange","slideshowControlsProps","theme","id","slidesId","slideGroupLabel","forwardedProps","itemsCount","React","Children","count","currentIndex","slideshowId","setSlideshow","isAutoPlaying","slideshowSlidesId","slidesCount","onNextClick","onPaginationClick","onPreviousClick","slideshow","stopAutoPlay","startAutoPlay","toggleAutoPlay","toggleForcePause","SlideshowControls","useSlideshowControls","defaultActiveIndex","Boolean","showControls","_jsx","Slides","mergeRefs","hasControls","afterSlides","parentRef","nextButtonProps","previousButtonProps","playButtonProps","onClick","undefined","paginationItemProps","index","buildSlideShowGroupId","displayName","defaultProps"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Children } from 'react';
2
2
  import classNames from 'classnames';
3
+ import isEmpty from 'lodash/isEmpty';
3
4
  import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
4
5
  import { u as useId } from '../useId-3a1facc0.js';
5
6
  import { u as useTheme } from '../ThemeContext-3181f000.js';
@@ -105,7 +106,7 @@ const Switch = forwardRef((props, ref) => {
105
106
  theme: theme,
106
107
  className: `${CLASSNAME}__label`,
107
108
  children: children
108
- }), helper && /*#__PURE__*/jsx(InputHelper, {
109
+ }), !isEmpty(helper) && /*#__PURE__*/jsx(InputHelper, {
109
110
  id: `${inputId}-helper`,
110
111
  theme: theme,
111
112
  className: `${CLASSNAME}__helper`,
@@ -119,4 +120,4 @@ Switch.className = CLASSNAME;
119
120
  Switch.defaultProps = DEFAULT_PROPS;
120
121
 
121
122
  export { Switch };
122
- //# sourceMappingURL=switch-25b65051.js.map
123
+ //# sourceMappingURL=switch-24fea8d7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-24fea8d7.js","sources":["../../../src/components/switch/Switch.tsx"],"sourcesContent":["import { Children, InputHTMLAttributes, SyntheticEvent } from 'react';\n\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { Alignment, InputHelper, InputLabel, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\n\n/**\n * Defines the props of the component.\n */\nexport interface SwitchProps extends GenericProps, HasTheme, HasAriaDisabled {\n /** Helper text. */\n helper?: string;\n /** Whether it is checked or not. */\n isChecked?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Native input name property. */\n name?: string;\n /** Position of the switch relative to the label. */\n position?: Extract<Alignment, 'right' | 'left'>;\n /** Native input value property. */\n value?: string;\n /** On change callback. */\n onChange?(isChecked: boolean, value?: string, name?: string, event?: SyntheticEvent): void;\n /** optional props for input */\n inputProps?: InputHTMLAttributes<HTMLInputElement>;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Switch';\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<SwitchProps> = {\n position: Alignment.left,\n};\n\n/**\n * Switch component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Switch = forwardRef<SwitchProps, HTMLDivElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const defaultTheme = useTheme() || Theme.light;\n const {\n checked,\n children,\n className,\n helper,\n id,\n isChecked = checked,\n name,\n onChange,\n position = DEFAULT_PROPS.position,\n theme = defaultTheme,\n value,\n inputProps = {},\n ...forwardedProps\n } = otherProps;\n const generatedInputId = useId();\n const inputId = id || generatedInputId;\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(!isChecked, value, name, event);\n }\n };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n isChecked,\n isDisabled: isAnyDisabled,\n position,\n theme,\n isUnchecked: !isChecked,\n }),\n )}\n >\n <div className={`${CLASSNAME}__input-wrapper`}>\n <input\n type=\"checkbox\"\n role=\"switch\"\n id={inputId}\n className={`${CLASSNAME}__input-native`}\n name={name}\n value={value}\n {...disabledStateProps}\n readOnly={inputProps.readOnly || isAnyDisabled}\n checked={isChecked}\n aria-checked={Boolean(isChecked)}\n onChange={handleChange}\n aria-describedby={helper ? `${inputId}-helper` : undefined}\n {...inputProps}\n />\n\n <div className={`${CLASSNAME}__input-placeholder`}>\n <div className={`${CLASSNAME}__input-background`} />\n <div className={`${CLASSNAME}__input-indicator`} />\n </div>\n </div>\n\n {Children.count(children) > 0 && (\n <div className={`${CLASSNAME}__content`}>\n <InputLabel htmlFor={inputId} theme={theme} className={`${CLASSNAME}__label`}>\n {children}\n </InputLabel>\n {!isEmpty(helper) && (\n <InputHelper id={`${inputId}-helper`} theme={theme} className={`${CLASSNAME}__helper`}>\n {helper}\n </InputHelper>\n )}\n </div>\n )}\n </div>\n );\n});\nSwitch.displayName = COMPONENT_NAME;\nSwitch.className = CLASSNAME;\nSwitch.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","position","Alignment","left","Switch","forwardRef","props","ref","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","defaultTheme","useTheme","Theme","light","checked","children","className","helper","id","isChecked","name","onChange","theme","value","inputProps","forwardedProps","generatedInputId","useId","inputId","handleChange","event","_jsxs","classNames","handleBasicClasses","prefix","isDisabled","isUnchecked","_jsx","type","role","readOnly","Boolean","undefined","Children","count","InputLabel","htmlFor","isEmpty","InputHelper","displayName","defaultProps"],"mappings":"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"}
@@ -4,10 +4,13 @@ import { u as useTheme } from '../ThemeContext-3181f000.js';
4
4
  import { f as forwardRef } from '../forwardRef-8bce732e.js';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
  import { Theme, Size } from '@lumx/core/js/constants';
7
- import { mdiArrowUp, mdiArrowDown } from '@lumx/icons';
8
- import { Icon } from './icon-a00d698b.js';
7
+ import { I as Icon } from '../index-d3e86bd8.js';
9
8
  import { u as useDisableStateProps } from '../useDisableStateProps-69e16b7c.js';
10
9
 
10
+ const mdiArrowDown = 'M11 4h2v12l5.5-5.5 1.42 1.42L12 19.84l-7.92-7.92L5.5 10.5 11 16z';
11
+
12
+ const mdiArrowUp = 'M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z';
13
+
11
14
  /**
12
15
  * Component display name.
13
16
  */
@@ -292,4 +295,4 @@ TableRow.className = CLASSNAME;
292
295
  TableRow.defaultProps = DEFAULT_PROPS;
293
296
 
294
297
  export { Table, TableBody, TableCell, TableCellVariant, TableHeader, TableRow, ThOrder };
295
- //# sourceMappingURL=table-3cbee034.js.map
298
+ //# sourceMappingURL=table-834af792.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-834af792.js","sources":["../../../../lumx-icons/dist/esm/arrow-down.js","../../../../lumx-icons/dist/esm/arrow-up.js","../../../src/components/table/Table.tsx","../../../src/components/table/TableBody.tsx","../../../src/components/table/TableCell.tsx","../../../src/components/table/TableHeader.tsx","../../../src/components/table/TableRow.tsx"],"sourcesContent":["export const mdiArrowDown = 'M11 4h2v12l5.5-5.5 1.42 1.42L12 19.84l-7.92-7.92L5.5 10.5 11 16z';","export const mdiArrowUp = 'M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z';","import classNames from 'classnames';\n\nimport { Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableProps extends GenericProps, HasTheme {\n /** Whether the table has checkbox or thumbnail on first cell or not. */\n hasBefore?: boolean;\n /** Whether the table has dividers or not. */\n hasDividers?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Table';\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<TableProps> = {};\n\n/**\n * Table component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Table = forwardRef<TableProps, HTMLTableElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const { children, className, hasBefore, hasDividers, theme = defaultTheme, ...forwardedProps } = props;\n\n return (\n <table\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, hasBefore, hasDividers, theme }))}\n >\n {children}\n </table>\n );\n});\nTable.displayName = COMPONENT_NAME;\nTable.className = CLASSNAME;\nTable.defaultProps = DEFAULT_PROPS;\n","import classNames from 'classnames';\n\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableBodyProps extends GenericProps {\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableBody';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * TableBody component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableBody = forwardRef<TableBodyProps, HTMLTableSectionElement>((props, ref) => {\n const { children, className, ...forwardedProps } = props;\n\n return (\n <tbody ref={ref} {...forwardedProps} className={classNames(className, CLASSNAME)}>\n {children}\n </tbody>\n );\n});\nTableBody.displayName = COMPONENT_NAME;\nTableBody.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { mdiArrowDown, mdiArrowUp } from '@lumx/icons';\nimport { Icon, Size } from '@lumx/react';\nimport { GenericProps, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Table head cell sort order.\n */\nexport const ThOrder = { asc: 'asc', desc: 'desc' } as const;\nexport type ThOrder = ValueOf<typeof ThOrder>;\n\n/**\n * Table cell variants.\n */\nexport const TableCellVariant = { body: 'body', head: 'head' } as const;\nexport type TableCellVariant = ValueOf<typeof TableCellVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface TableCellProps extends GenericProps {\n /** Icon (SVG path).(thead only). */\n icon?: string;\n /** Whether the column is sortable or not (thead only). */\n isSortable?: boolean;\n /** Sort order displayed as icon (sortable thead only). */\n sortOrder?: ThOrder;\n /** Variant. */\n variant?: TableCellVariant;\n /** On header cell click callback. */\n onHeaderClick?(): void;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableCell';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableCellProps> = {\n variant: TableCellVariant.body,\n};\n\n/**\n * TableCell component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableCell = forwardRef<TableCellProps, HTMLTableCellElement>((props, ref) => {\n const {\n children,\n className,\n icon,\n isSortable,\n onHeaderClick,\n sortOrder,\n variant = DEFAULT_PROPS.variant,\n ...forwardedProps\n } = props;\n\n // Use button if clickable\n const Wrapper = onHeaderClick ? 'button' : 'div';\n const wrapperProps = Wrapper === 'button' ? ({ type: 'button', onClick: onHeaderClick } as const) : undefined;\n\n // ARIA sort\n let ariaSort: 'ascending' | 'descending' | 'none' | undefined;\n if (isSortable) {\n ariaSort = 'none';\n if (sortOrder === ThOrder.asc) ariaSort = 'ascending';\n if (sortOrder === ThOrder.desc) ariaSort = 'descending';\n }\n\n return (\n <>\n {variant === TableCellVariant.head && (\n <th\n ref={ref}\n {...forwardedProps}\n className={classNames(\n handleBasicClasses({\n prefix: CLASSNAME,\n isSortable,\n isSorted: isSortable && !!sortOrder,\n }),\n className,\n `${CLASSNAME}--head`,\n )}\n aria-sort={ariaSort}\n >\n <Wrapper className={`${CLASSNAME}-wrapper`} {...wrapperProps}>\n {icon && !isSortable && <Icon className={`${CLASSNAME}-icon`} icon={icon} size={Size.xxs} />}\n\n {isSortable && sortOrder === ThOrder.asc && (\n <Icon className={`${CLASSNAME}-icon`} icon={mdiArrowUp} size={Size.xxs} />\n )}\n\n {isSortable && sortOrder === ThOrder.desc && (\n <Icon className={`${CLASSNAME}-icon`} icon={mdiArrowDown} size={Size.xxs} />\n )}\n\n <div className={`${CLASSNAME}-content`}>{children}</div>\n </Wrapper>\n </th>\n )}\n\n {variant === TableCellVariant.body && (\n <td {...forwardedProps} className={classNames(className, CLASSNAME, `${CLASSNAME}--body`)}>\n <div className={`${CLASSNAME}-content`}>{children}</div>\n </td>\n )}\n </>\n );\n});\nTableCell.displayName = COMPONENT_NAME;\nTableCell.className = CLASSNAME;\nTableCell.defaultProps = DEFAULT_PROPS;\n","import classNames from 'classnames';\n\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableHeaderProps extends GenericProps {\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableHeader';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableHeaderProps> = {};\n\n/**\n * TableHeader component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableHeader = forwardRef<TableHeaderProps, HTMLTableSectionElement>((props, ref) => {\n const { children, className, ...forwardedProps } = props;\n\n return (\n <thead ref={ref} {...forwardedProps} className={classNames(className, CLASSNAME)}>\n {children}\n </thead>\n );\n});\nTableHeader.displayName = COMPONENT_NAME;\nTableHeader.className = CLASSNAME;\nTableHeader.defaultProps = DEFAULT_PROPS;\n","import classNames from 'classnames';\n\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\n\n/**\n * Defines the props of the component.\n */\nexport interface TableRowProps extends GenericProps {\n /** Whether the component is clickable or not. */\n isClickable?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TableRow';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME, true);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TableRowProps> = {};\n\n/**\n * TableRow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TableRow = forwardRef<TableRowProps, HTMLTableRowElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const { children, className, isClickable, isSelected, ...forwardedProps } = otherProps;\n\n return (\n <tr\n ref={ref}\n tabIndex={isClickable && !disabledStateProps.disabled ? 0 : -1}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n isClickable: isClickable && !isAnyDisabled,\n isDisabled: isAnyDisabled,\n isSelected: isSelected && !isAnyDisabled,\n prefix: CLASSNAME,\n }),\n )}\n aria-disabled={isAnyDisabled}\n >\n {children}\n </tr>\n );\n});\n\nTableRow.displayName = COMPONENT_NAME;\nTableRow.className = CLASSNAME;\nTableRow.defaultProps = DEFAULT_PROPS;\n"],"names":["mdiArrowDown","mdiArrowUp","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","Table","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","children","className","hasBefore","hasDividers","theme","forwardedProps","_jsx","classNames","handleBasicClasses","prefix","displayName","defaultProps","TableBody","ThOrder","asc","desc","TableCellVariant","body","head","variant","TableCell","icon","isSortable","onHeaderClick","sortOrder","Wrapper","wrapperProps","type","onClick","undefined","ariaSort","_jsxs","_Fragment","isSorted","Icon","size","Size","xxs","TableHeader","TableRow","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","isClickable","isSelected","tabIndex","disabled","isDisabled"],"mappings":"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"}
@@ -11,8 +11,8 @@ import { u as useTheme } from '../ThemeContext-3181f000.js';
11
11
  import { u as useRovingTabIndex } from '../useRovingTabIndex-7daf0f24.js';
12
12
  import { Alignment, Theme, CSS_PREFIX, Size } from '@lumx/core/js/constants';
13
13
  import { u as useDisableStateProps } from '../useDisableStateProps-69e16b7c.js';
14
- import { Icon } from './icon-a00d698b.js';
15
- import { T as Text } from '../index-151e2652.js';
14
+ import { I as Icon } from '../index-d3e86bd8.js';
15
+ import { T as Text } from '../index-77f213b1.js';
16
16
 
17
17
  const DEFAULT_PROPS$3 = {
18
18
  isLazy: INIT_STATE.isLazy,
@@ -296,4 +296,4 @@ TabPanel.className = CLASSNAME;
296
296
  TabPanel.defaultProps = DEFAULT_PROPS;
297
297
 
298
298
  export { Tab, TabList, TabListLayout, TabPanel, TabProvider };
299
- //# sourceMappingURL=tabs-5d8ea1a5.js.map
299
+ //# sourceMappingURL=tabs-bebfe959.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-5d8ea1a5.js","sources":["../../../src/components/tabs/TabProvider.tsx","../../../src/components/tabs/TabList.tsx","../../../src/components/tabs/Tab.tsx","../../../src/components/tabs/TabPanel.tsx"],"sourcesContent":["import ReactDOM from 'react-dom';\nimport { ReactNode, useEffect, useReducer } from 'react';\nimport { INIT_STATE, TabProviderContext, reducer } from './state';\n\nexport interface TabProviderProps {\n /** Active tab index. */\n activeTabIndex?: number;\n /** Tab provider children. */\n children: ReactNode;\n /** Tab panel children should not render if the tab panel is hidden. */\n isLazy?: boolean;\n /** Activate tabs on focus. */\n shouldActivateOnFocus?: boolean;\n\n /** Tab change callback. */\n onChange?(index: number): void;\n}\n\nconst DEFAULT_PROPS: Partial<TabProviderProps> = {\n isLazy: INIT_STATE.isLazy,\n shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus,\n};\n\n/**\n * This component provides a context in which tabs can be defined and linked to their tab panel.\n *\n * It does not produce any markup so you can wrap it around any React elements and then split the TabList and TabPanel\n * components in the react tree.\n *\n * @param props React component props.\n * @return React element.\n */\nexport const TabProvider: React.FC<TabProviderProps> = (props) => {\n const { children, onChange, ...propState } = props;\n const [state, dispatch] = useReducer(reducer, INIT_STATE);\n\n // On prop state change => dispatch update.\n useEffect(\n () => {\n dispatch({ type: 'update', payload: { ...DEFAULT_PROPS, ...propState } });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch, ...Object.values(propState)],\n );\n\n // On active tab index state change => send update to the onChange.\n useEffect(\n () => {\n if (state === INIT_STATE || !onChange || propState.activeTabIndex === state.activeTabIndex) {\n return;\n }\n\n // Escape rendering/useEffect context\n queueMicrotask(() => {\n // Wait for React to commit last state changes (avoid looping state update)\n ReactDOM.flushSync(() => {\n onChange(state.activeTabIndex);\n });\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange, state.activeTabIndex],\n );\n\n return <TabProviderContext.Provider value={[state, dispatch]}>{children}</TabProviderContext.Provider>;\n};\nTabProvider.defaultProps = DEFAULT_PROPS;\n","import React, { ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Alignment, Theme } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\n\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndex';\n\nexport enum TabListLayout {\n clustered = 'clustered',\n fixed = 'fixed',\n}\n\n/**\n * Defines the props of the component.\n */\nexport interface TabListProps extends GenericProps, HasTheme {\n /** ARIA label (purpose of the set of tabs). */\n ['aria-label']: string;\n /** Tab list. */\n children: ReactNode;\n /** Layout of the tabs in the list. */\n layout?: TabListLayout;\n /** Position of the tabs in the list (requires 'clustered' layout). */\n position?: Alignment;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabList';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabListProps> = {\n layout: TabListLayout.fixed,\n position: Alignment.left,\n};\n\n/**\n * TabList component.\n *\n * Implements WAI-ARIA `tablist` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabList = forwardRef<TabListProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n 'aria-label': ariaLabel,\n children,\n className,\n layout = DEFAULT_PROPS.layout,\n position = DEFAULT_PROPS.position,\n theme = defaultTheme,\n ...forwardedProps\n } = props;\n const tabListRef = React.useRef(null);\n useRovingTabIndex({\n parentRef: tabListRef,\n elementSelector: '[role=\"tab\"]',\n keepTabIndex: false,\n extraDependencies: [children],\n });\n\n return (\n <div\n ref={mergeRefs(ref, tabListRef)}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, layout, position, theme }))}\n >\n <div className={`${CLASSNAME}__links`} role=\"tablist\" aria-label={ariaLabel}>\n {children}\n </div>\n </div>\n );\n});\nTabList.displayName = COMPONENT_NAME;\nTabList.className = CLASSNAME;\nTabList.defaultProps = DEFAULT_PROPS;\n","import { FocusEventHandler, KeyboardEventHandler, ReactNode, useCallback } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, IconProps, Size, Text } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { useTabProviderContext } from './state';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabProps extends GenericProps {\n /** Children are not supported. */\n children?: never;\n /** Icon (SVG path). */\n icon?: IconProps['icon'];\n /** Icon component properties. */\n iconProps?: Omit<IconProps, 'icon'>;\n /** Native id property. */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label content. */\n label: string | ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Tab';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs__link`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabProps> = {};\n\n/**\n * Tab component.\n *\n * Implements WAI-ARIA `tab` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Tab = forwardRef<TabProps, HTMLButtonElement>((props, ref) => {\n const { isAnyDisabled, otherProps } = useDisableStateProps(props);\n const {\n className,\n icon,\n iconProps = {},\n id,\n isActive: propIsActive,\n label,\n onFocus,\n onKeyPress,\n tabIndex = -1,\n ...forwardedProps\n } = otherProps;\n const state = useTabProviderContext('tab', id);\n const isActive = propIsActive || state?.isActive;\n\n const changeToCurrentTab = useCallback(() => {\n if (isAnyDisabled) {\n return;\n }\n state?.changeToTab();\n }, [isAnyDisabled, state]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n onFocus?.(event);\n if (state?.shouldActivateOnFocus) {\n changeToCurrentTab();\n }\n },\n [changeToCurrentTab, onFocus, state?.shouldActivateOnFocus],\n );\n\n const handleKeyPress: KeyboardEventHandler = useCallback(\n (event) => {\n onKeyPress?.(event);\n if (event.key !== 'Enter' || isAnyDisabled) {\n return;\n }\n changeToCurrentTab();\n },\n [changeToCurrentTab, isAnyDisabled, onKeyPress],\n );\n\n return (\n <button\n ref={ref}\n {...forwardedProps}\n type=\"button\"\n id={state?.tabId}\n className={classNames(\n className,\n handleBasicClasses({ prefix: CLASSNAME, isActive, isDisabled: isAnyDisabled }),\n )}\n onClick={changeToCurrentTab}\n onKeyPress={handleKeyPress}\n onFocus={handleFocus}\n role=\"tab\"\n tabIndex={isActive ? 0 : tabIndex}\n aria-disabled={isAnyDisabled}\n aria-selected={isActive}\n aria-controls={state?.tabPanelId}\n >\n {icon && <Icon icon={icon} size={Size.xs} {...iconProps} />}\n {label && (\n <Text as=\"span\" truncate>\n {label}\n </Text>\n )}\n </button>\n );\n});\nTab.displayName = COMPONENT_NAME;\nTab.className = CLASSNAME;\nTab.defaultProps = DEFAULT_PROPS;\n","import classNames from 'classnames';\n\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useTabProviderContext } from '@lumx/react/components/tabs/state';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabPanelProps extends GenericProps {\n /** Native id property */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabPanel';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tab-panel`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabPanelProps> = {};\n\n/**\n * TabPanel component.\n *\n * Implements WAI-ARIA `tabpanel` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabPanel = forwardRef<TabPanelProps, HTMLDivElement>((props, ref) => {\n const { children, id, className, isActive: propIsActive, ...forwardedProps } = props;\n\n const state = useTabProviderContext('tabPanel', id);\n const isActive = propIsActive || state?.isActive;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n id={state?.tabPanelId}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, isActive }))}\n role=\"tabpanel\"\n tabIndex={isActive ? 0 : -1}\n aria-labelledby={state?.tabId}\n >\n {(!state?.isLazy || isActive) && children}\n </div>\n );\n});\nTabPanel.displayName = COMPONENT_NAME;\nTabPanel.className = CLASSNAME;\nTabPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["DEFAULT_PROPS","isLazy","INIT_STATE","shouldActivateOnFocus","TabProvider","props","children","onChange","propState","state","dispatch","useReducer","reducer","useEffect","type","payload","Object","values","activeTabIndex","queueMicrotask","ReactDOM","flushSync","_jsx","TabProviderContext","Provider","value","defaultProps","TabListLayout","COMPONENT_NAME","CLASSNAME","CSS_PREFIX","layout","fixed","position","Alignment","left","TabList","forwardRef","ref","defaultTheme","useTheme","Theme","light","ariaLabel","className","theme","forwardedProps","tabListRef","React","useRef","useRovingTabIndex","parentRef","elementSelector","keepTabIndex","extraDependencies","mergeRefs","classNames","handleBasicClasses","prefix","role","displayName","Tab","isAnyDisabled","otherProps","useDisableStateProps","icon","iconProps","id","isActive","propIsActive","label","onFocus","onKeyPress","tabIndex","useTabProviderContext","changeToCurrentTab","useCallback","changeToTab","handleFocus","event","handleKeyPress","key","_jsxs","tabId","isDisabled","onClick","tabPanelId","Icon","size","Size","xs","Text","as","truncate","TabPanel"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-bebfe959.js","sources":["../../../src/components/tabs/TabProvider.tsx","../../../src/components/tabs/TabList.tsx","../../../src/components/tabs/Tab.tsx","../../../src/components/tabs/TabPanel.tsx"],"sourcesContent":["import ReactDOM from 'react-dom';\nimport { ReactNode, useEffect, useReducer } from 'react';\nimport { INIT_STATE, TabProviderContext, reducer } from './state';\n\nexport interface TabProviderProps {\n /** Active tab index. */\n activeTabIndex?: number;\n /** Tab provider children. */\n children: ReactNode;\n /** Tab panel children should not render if the tab panel is hidden. */\n isLazy?: boolean;\n /** Activate tabs on focus. */\n shouldActivateOnFocus?: boolean;\n\n /** Tab change callback. */\n onChange?(index: number): void;\n}\n\nconst DEFAULT_PROPS: Partial<TabProviderProps> = {\n isLazy: INIT_STATE.isLazy,\n shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus,\n};\n\n/**\n * This component provides a context in which tabs can be defined and linked to their tab panel.\n *\n * It does not produce any markup so you can wrap it around any React elements and then split the TabList and TabPanel\n * components in the react tree.\n *\n * @param props React component props.\n * @return React element.\n */\nexport const TabProvider: React.FC<TabProviderProps> = (props) => {\n const { children, onChange, ...propState } = props;\n const [state, dispatch] = useReducer(reducer, INIT_STATE);\n\n // On prop state change => dispatch update.\n useEffect(\n () => {\n dispatch({ type: 'update', payload: { ...DEFAULT_PROPS, ...propState } });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatch, ...Object.values(propState)],\n );\n\n // On active tab index state change => send update to the onChange.\n useEffect(\n () => {\n if (state === INIT_STATE || !onChange || propState.activeTabIndex === state.activeTabIndex) {\n return;\n }\n\n // Escape rendering/useEffect context\n queueMicrotask(() => {\n // Wait for React to commit last state changes (avoid looping state update)\n ReactDOM.flushSync(() => {\n onChange(state.activeTabIndex);\n });\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange, state.activeTabIndex],\n );\n\n return <TabProviderContext.Provider value={[state, dispatch]}>{children}</TabProviderContext.Provider>;\n};\nTabProvider.defaultProps = DEFAULT_PROPS;\n","import React, { ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Alignment, Theme } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\n\nimport { useRovingTabIndex } from '../../hooks/useRovingTabIndex';\n\nexport enum TabListLayout {\n clustered = 'clustered',\n fixed = 'fixed',\n}\n\n/**\n * Defines the props of the component.\n */\nexport interface TabListProps extends GenericProps, HasTheme {\n /** ARIA label (purpose of the set of tabs). */\n ['aria-label']: string;\n /** Tab list. */\n children: ReactNode;\n /** Layout of the tabs in the list. */\n layout?: TabListLayout;\n /** Position of the tabs in the list (requires 'clustered' layout). */\n position?: Alignment;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabList';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabListProps> = {\n layout: TabListLayout.fixed,\n position: Alignment.left,\n};\n\n/**\n * TabList component.\n *\n * Implements WAI-ARIA `tablist` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabList = forwardRef<TabListProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n 'aria-label': ariaLabel,\n children,\n className,\n layout = DEFAULT_PROPS.layout,\n position = DEFAULT_PROPS.position,\n theme = defaultTheme,\n ...forwardedProps\n } = props;\n const tabListRef = React.useRef(null);\n useRovingTabIndex({\n parentRef: tabListRef,\n elementSelector: '[role=\"tab\"]',\n keepTabIndex: false,\n extraDependencies: [children],\n });\n\n return (\n <div\n ref={mergeRefs(ref, tabListRef)}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, layout, position, theme }))}\n >\n <div className={`${CLASSNAME}__links`} role=\"tablist\" aria-label={ariaLabel}>\n {children}\n </div>\n </div>\n );\n});\nTabList.displayName = COMPONENT_NAME;\nTabList.className = CLASSNAME;\nTabList.defaultProps = DEFAULT_PROPS;\n","import { FocusEventHandler, KeyboardEventHandler, ReactNode, useCallback } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, IconProps, Size, Text } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { useTabProviderContext } from './state';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabProps extends GenericProps {\n /** Children are not supported. */\n children?: never;\n /** Icon (SVG path). */\n icon?: IconProps['icon'];\n /** Icon component properties. */\n iconProps?: Omit<IconProps, 'icon'>;\n /** Native id property. */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label content. */\n label: string | ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Tab';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tabs__link`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabProps> = {};\n\n/**\n * Tab component.\n *\n * Implements WAI-ARIA `tab` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Tab = forwardRef<TabProps, HTMLButtonElement>((props, ref) => {\n const { isAnyDisabled, otherProps } = useDisableStateProps(props);\n const {\n className,\n icon,\n iconProps = {},\n id,\n isActive: propIsActive,\n label,\n onFocus,\n onKeyPress,\n tabIndex = -1,\n ...forwardedProps\n } = otherProps;\n const state = useTabProviderContext('tab', id);\n const isActive = propIsActive || state?.isActive;\n\n const changeToCurrentTab = useCallback(() => {\n if (isAnyDisabled) {\n return;\n }\n state?.changeToTab();\n }, [isAnyDisabled, state]);\n\n const handleFocus: FocusEventHandler = useCallback(\n (event) => {\n onFocus?.(event);\n if (state?.shouldActivateOnFocus) {\n changeToCurrentTab();\n }\n },\n [changeToCurrentTab, onFocus, state?.shouldActivateOnFocus],\n );\n\n const handleKeyPress: KeyboardEventHandler = useCallback(\n (event) => {\n onKeyPress?.(event);\n if (event.key !== 'Enter' || isAnyDisabled) {\n return;\n }\n changeToCurrentTab();\n },\n [changeToCurrentTab, isAnyDisabled, onKeyPress],\n );\n\n return (\n <button\n ref={ref}\n {...forwardedProps}\n type=\"button\"\n id={state?.tabId}\n className={classNames(\n className,\n handleBasicClasses({ prefix: CLASSNAME, isActive, isDisabled: isAnyDisabled }),\n )}\n onClick={changeToCurrentTab}\n onKeyPress={handleKeyPress}\n onFocus={handleFocus}\n role=\"tab\"\n tabIndex={isActive ? 0 : tabIndex}\n aria-disabled={isAnyDisabled}\n aria-selected={isActive}\n aria-controls={state?.tabPanelId}\n >\n {icon && <Icon icon={icon} size={Size.xs} {...iconProps} />}\n {label && (\n <Text as=\"span\" truncate>\n {label}\n </Text>\n )}\n </button>\n );\n});\nTab.displayName = COMPONENT_NAME;\nTab.className = CLASSNAME;\nTab.defaultProps = DEFAULT_PROPS;\n","import classNames from 'classnames';\n\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useTabProviderContext } from '@lumx/react/components/tabs/state';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\n\n/**\n * Defines the props of the component.\n */\nexport interface TabPanelProps extends GenericProps {\n /** Native id property */\n id?: string;\n /** Whether the tab is active or not. */\n isActive?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TabPanel';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = `${CSS_PREFIX}-tab-panel`;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TabPanelProps> = {};\n\n/**\n * TabPanel component.\n *\n * Implements WAI-ARIA `tabpanel` role {@see https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html#rps_label}\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TabPanel = forwardRef<TabPanelProps, HTMLDivElement>((props, ref) => {\n const { children, id, className, isActive: propIsActive, ...forwardedProps } = props;\n\n const state = useTabProviderContext('tabPanel', id);\n const isActive = propIsActive || state?.isActive;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n id={state?.tabPanelId}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, isActive }))}\n role=\"tabpanel\"\n tabIndex={isActive ? 0 : -1}\n aria-labelledby={state?.tabId}\n >\n {(!state?.isLazy || isActive) && children}\n </div>\n );\n});\nTabPanel.displayName = COMPONENT_NAME;\nTabPanel.className = CLASSNAME;\nTabPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["DEFAULT_PROPS","isLazy","INIT_STATE","shouldActivateOnFocus","TabProvider","props","children","onChange","propState","state","dispatch","useReducer","reducer","useEffect","type","payload","Object","values","activeTabIndex","queueMicrotask","ReactDOM","flushSync","_jsx","TabProviderContext","Provider","value","defaultProps","TabListLayout","COMPONENT_NAME","CLASSNAME","CSS_PREFIX","layout","fixed","position","Alignment","left","TabList","forwardRef","ref","defaultTheme","useTheme","Theme","light","ariaLabel","className","theme","forwardedProps","tabListRef","React","useRef","useRovingTabIndex","parentRef","elementSelector","keepTabIndex","extraDependencies","mergeRefs","classNames","handleBasicClasses","prefix","role","displayName","Tab","isAnyDisabled","otherProps","useDisableStateProps","icon","iconProps","id","isActive","propIsActive","label","onFocus","onKeyPress","tabIndex","useTabProviderContext","changeToCurrentTab","useCallback","changeToTab","handleFocus","event","handleKeyPress","key","_jsxs","tabId","isDisabled","onClick","tabPanelId","Icon","size","Size","xs","Text","as","truncate","TabPanel"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { T as Text } from '../index-77f213b1.js';
2
+ //# sourceMappingURL=text-9074f440.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-9074f440.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import { useRef, useState, useEffect } from 'react';
2
2
  import classNames from 'classnames';
3
- import { mdiAlertCircle, mdiCheckCircle, mdiCloseCircle } from '@lumx/icons';
3
+ import get from 'lodash/get';
4
4
  import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
5
5
  import { m as mergeRefs } from '../mergeRefs-f0d7d6ea.js';
6
6
  import { u as useId } from '../useId-3a1facc0.js';
@@ -10,8 +10,10 @@ import { u as useDisableStateProps } from '../useDisableStateProps-69e16b7c.js';
10
10
  import { jsxs, jsx } from 'react/jsx-runtime';
11
11
  import { Theme, Size, Emphasis, Kind } from '@lumx/core/js/constants';
12
12
  import { InputLabel } from './input-label-30d199c3.js';
13
- import { Icon } from './icon-a00d698b.js';
14
- import { I as IconButton } from '../IconButton-1790b47e.js';
13
+ import { I as Icon, m as mdiAlertCircle } from '../index-d3e86bd8.js';
14
+ import { m as mdiCheckCircle } from '../check-circle-de24f857.js';
15
+ import { I as IconButton } from '../IconButton-e11b5e74.js';
16
+ import { m as mdiCloseCircle } from '../close-circle-ef5d1aac.js';
15
17
  import { InputHelper } from './input-helper-2e4e49fd.js';
16
18
 
17
19
  /**
@@ -110,7 +112,7 @@ const renderInputNative = props => {
110
112
  setFocus(false);
111
113
  };
112
114
  const handleChange = event => {
113
- onChange(event.target.value, name, event);
115
+ onChange(get(event, 'target.value'), name, event);
114
116
  };
115
117
  const Component = multiline ? 'textarea' : 'input';
116
118
  const inputProps = {
@@ -356,4 +358,4 @@ TextField.className = CLASSNAME;
356
358
  TextField.defaultProps = DEFAULT_PROPS;
357
359
 
358
360
  export { TextField };
359
- //# sourceMappingURL=text-field-c26582c5.js.map
361
+ //# sourceMappingURL=text-field-8597b7f7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-field-8597b7f7.js","sources":["../../../src/components/text-field/TextField.tsx"],"sourcesContent":["import { ReactNode, Ref, RefObject, SyntheticEvent, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport get from 'lodash/get';\n\nimport { mdiAlertCircle, mdiCheckCircle, mdiCloseCircle } from '@lumx/icons';\nimport {\n Emphasis,\n Icon,\n IconButton,\n IconButtonProps,\n InputHelper,\n InputLabel,\n InputLabelProps,\n Kind,\n Size,\n Theme,\n} from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\n\n/**\n * Defines the props of the component.\n */\nexport interface TextFieldProps extends GenericProps, HasTheme, HasAriaDisabled {\n /** Chip Group to be rendered before the main text input. */\n chips?: ReactNode;\n /** Props to pass to the clear button (minus those already set by the TextField props). If not specified, the button won't be displayed. */\n clearButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Error message. */\n error?: string | ReactNode;\n /** Whether we force the focus style or not. */\n forceFocusStyle?: boolean;\n /** Whether the text field is displayed with error style or not. */\n hasError?: boolean;\n /** Additional element to put at the end of the text field. */\n afterElement?: ReactNode;\n /** Helper text. */\n helper?: string | ReactNode;\n /** Icon (SVG path). */\n icon?: string;\n /** Native input id property (generated if not provided to link the label element). */\n id?: string;\n /** Reference to the <input> or <textarea> element. */\n inputRef?: Ref<HTMLInputElement | HTMLTextAreaElement>;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is required or not. */\n isRequired?: boolean;\n /** Whether the text field is displayed with valid style or not. */\n isValid?: boolean;\n /** Label text. */\n label?: string;\n /** Additional label props. */\n labelProps?: InputLabelProps;\n /** Max string length the input accepts (constrains the input and displays a character counter). */\n maxLength?: number;\n /** Minimum number of rows displayed in multiline mode (requires `multiline` to be enabled). */\n minimumRows?: number;\n /** Whether the text field is a textarea or an input. */\n multiline?: boolean;\n /** Native input name property. */\n name?: string;\n /** Placeholder text. */\n placeholder?: string;\n /** Reference to the wrapper. */\n textFieldRef?: Ref<HTMLDivElement>;\n /** Native input type (only when `multiline` is disabled). */\n type?: React.ComponentProps<'input'>['type'];\n /** Value. */\n value?: string;\n /** On blur callback. */\n onBlur?(event: React.FocusEvent): void;\n /** On change callback. */\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n /** On clear callback. */\n onClear?(event?: SyntheticEvent): void;\n /** On focus callback. */\n onFocus?(event: React.FocusEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'TextField';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Default minimum number of rows in the multiline mode.\n */\nconst DEFAULT_MIN_ROWS = 2;\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<TextFieldProps> = {\n type: 'text',\n};\n\n/**\n * Hook that allows to calculate the number of rows needed for a text area.\n * @param minimumRows Minimum number of rows that we want to display.\n * @return rows to be used and a callback to recalculate\n */\nconst useComputeNumberOfRows = (\n minimumRows: number,\n): {\n /** number of rows to be used on the text area */\n rows: number;\n /**\n * Callback in order to recalculate the number of rows due to a change on the text area\n */\n recomputeNumberOfRows(target: Element): void;\n} => {\n const [rows, setRows] = useState(minimumRows);\n\n const recompute = (target: Element) => {\n /**\n * HEAD's UP! This part is a little bit tricky. The idea here is to only\n * display the necessary rows on the textarea. In order to dynamically adjust\n * the height on that field, we need to:\n * 1. Set the current amount of rows to the minimum. That will make the scroll appear.\n * 2. With that, we will have the `scrollHeight`, meaning the height of the container adjusted to the current content\n * 3. With the scroll height, we can figure out how many rows we need to use by dividing the scroll height\n * by the line height.\n * 4. With that number, we can readjust the number of rows on the text area. We need to do that here, if we leave that to\n * the state change through React, there are some scenarios (resize, hitting ENTER or BACKSPACE which add or remove lines)\n * when we will not see the update and the rows will be resized to the minimum.\n * 5. In case there is any other update on the component that changes the UI, we need to keep the number of rows\n * on the state in order to allow React to re-render. Therefore, we save them using `useState`\n */\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = minimumRows;\n let currentRows = target.scrollHeight / (target.clientHeight / minimumRows);\n currentRows = currentRows >= minimumRows ? currentRows : minimumRows;\n // eslint-disable-next-line no-param-reassign\n (target as HTMLTextAreaElement).rows = currentRows;\n\n setRows(currentRows);\n };\n\n return {\n recomputeNumberOfRows: recompute,\n rows,\n };\n};\n\ninterface InputNativeProps {\n id?: string;\n inputRef?: TextFieldProps['inputRef'];\n isDisabled?: boolean;\n 'aria-disabled'?: boolean;\n isRequired?: boolean;\n readOnly?: boolean;\n multiline?: boolean;\n maxLength?: number;\n placeholder?: string;\n rows: number;\n type: TextFieldProps['type'];\n name?: string;\n value?: string;\n setFocus(focus: boolean): void;\n recomputeNumberOfRows(target: Element): void;\n onChange(value: string, name?: string, event?: SyntheticEvent): void;\n onFocus?(value: React.FocusEvent): void;\n onBlur?(value: React.FocusEvent): void;\n hasError?: boolean;\n describedById?: string;\n}\n\nconst renderInputNative: React.FC<InputNativeProps> = (props) => {\n const {\n id,\n isRequired,\n placeholder,\n multiline,\n value,\n setFocus,\n onChange,\n onFocus,\n onBlur,\n inputRef,\n rows,\n recomputeNumberOfRows,\n type,\n name,\n hasError,\n describedById,\n ...forwardedProps\n } = props;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const ref = useRef<HTMLElement>(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n // Recompute the number of rows for the first rendering\n if (multiline && ref && ref.current) {\n recomputeNumberOfRows(ref.current);\n }\n }, [ref, multiline, recomputeNumberOfRows, value]);\n\n const onTextFieldFocus = (event: React.FocusEvent) => {\n onFocus?.(event);\n setFocus(true);\n };\n\n const onTextFieldBlur = (event: React.FocusEvent) => {\n onBlur?.(event);\n setFocus(false);\n };\n\n const handleChange = (event: React.ChangeEvent) => {\n onChange(get(event, 'target.value'), name, event);\n };\n\n const Component = multiline ? 'textarea' : 'input';\n const inputProps: any = {\n ...forwardedProps,\n id,\n className: multiline\n ? `${CLASSNAME}__input-native ${CLASSNAME}__input-native--textarea`\n : `${CLASSNAME}__input-native ${CLASSNAME}__input-native--text`,\n placeholder,\n value,\n name,\n required: isRequired,\n onFocus: onTextFieldFocus,\n onBlur: onTextFieldBlur,\n onChange: handleChange,\n 'aria-invalid': hasError ? 'true' : undefined,\n 'aria-describedby': describedById,\n readOnly: forwardedProps.readOnly || forwardedProps['aria-disabled'],\n ref: mergeRefs(inputRef as any, ref) as any,\n };\n if (multiline) {\n inputProps.rows = rows;\n } else {\n inputProps.type = type;\n }\n return <Component {...inputProps} />;\n};\n\n/**\n * TextField component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const TextField = forwardRef<TextFieldProps, HTMLDivElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const defaultTheme = useTheme() || Theme.light;\n const {\n chips,\n className,\n clearButtonProps,\n error,\n forceFocusStyle,\n hasError,\n helper,\n icon,\n id,\n inputRef: inputRefProps,\n isRequired,\n isValid,\n label,\n labelProps,\n maxLength,\n minimumRows,\n multiline,\n name,\n onBlur,\n onChange,\n onClear,\n onFocus,\n placeholder,\n textFieldRef,\n theme = defaultTheme,\n type = DEFAULT_PROPS.type,\n value,\n afterElement,\n ...forwardedProps\n } = otherProps;\n const generatedTextFieldId = useId();\n const textFieldId = id || generatedTextFieldId;\n /** Keep a clean local input ref to manage focus */\n const localInputRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n /** Merge prop input ref and local input ref */\n const inputRef = mergeRefs(localInputRef, inputRefProps);\n /**\n * Generate unique ids for both the helper and error texts, in order to\n * later on add them to the input native as aria-describedby. If both the error and the helper are present,\n * we want to first use the most important one, which is the errorId. That way, screen readers will read first\n * the error and then the helper\n */\n const helperId = helper ? `text-field-helper-${generatedTextFieldId}` : undefined;\n const errorId = error ? `text-field-error-${generatedTextFieldId}` : undefined;\n const describedByIds = [errorId, helperId, forwardedProps['aria-describedby']].filter(Boolean);\n const describedById = describedByIds.length === 0 ? undefined : describedByIds.join(' ');\n\n const [isFocus, setFocus] = useState(false);\n const { rows, recomputeNumberOfRows } = useComputeNumberOfRows(multiline ? minimumRows || DEFAULT_MIN_ROWS : 0);\n const valueLength = (value || '').length;\n const isNotEmpty = valueLength > 0;\n\n /**\n * Function triggered when the Clear Button is clicked.\n * The idea is to execute the `onChange` callback with an empty string\n * and remove focus from the clear button.\n * @param evt On clear event.\n */\n const handleClear = (evt: React.ChangeEvent) => {\n evt.nativeEvent.preventDefault();\n evt.nativeEvent.stopPropagation();\n (evt.currentTarget as HTMLElement).blur();\n\n onChange('');\n\n if (onClear) {\n onClear(evt);\n }\n\n /** Use local inputRef in case the prop input ref is a `mergeRefs` function. */\n const inputElement = localInputRef as RefObject<HTMLInputElement | HTMLTextAreaElement>;\n\n if (inputElement && inputElement.current) {\n inputElement.current.focus();\n }\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChips: Boolean(chips),\n hasError: !isValid && hasError,\n hasIcon: Boolean(icon),\n hasInput: !multiline,\n hasInputClear: clearButtonProps && isNotEmpty,\n hasLabel: Boolean(label),\n hasPlaceholder: Boolean(placeholder),\n hasTextarea: multiline,\n hasValue: Boolean(value),\n isDisabled: isAnyDisabled,\n isFocus: isFocus || forceFocusStyle,\n isValid,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n {(label || maxLength) && (\n <div className={`${CLASSNAME}__header`}>\n {label && (\n <InputLabel\n {...labelProps}\n htmlFor={textFieldId}\n className={`${CLASSNAME}__label`}\n isRequired={isRequired}\n theme={theme}\n >\n {label}\n </InputLabel>\n )}\n\n {maxLength && (\n <div className={`${CLASSNAME}__char-counter`}>\n <span>{maxLength - valueLength}</span>\n {maxLength - valueLength === 0 && <Icon icon={mdiAlertCircle} size={Size.xxs} />}\n </div>\n )}\n </div>\n )}\n\n <div className={`${CLASSNAME}__wrapper`} ref={textFieldRef}>\n {icon && (\n <Icon\n className={`${CLASSNAME}__input-icon`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={icon}\n size={Size.xs}\n />\n )}\n\n {chips && (\n <div className={`${CLASSNAME}__chips`}>\n {chips}\n\n {renderInputNative({\n id: textFieldId,\n inputRef,\n ...disabledStateProps,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n hasError,\n describedById,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {!chips && (\n <div className={`${CLASSNAME}__input-wrapper`}>\n {renderInputNative({\n id: textFieldId,\n inputRef,\n ...disabledStateProps,\n isRequired,\n maxLength,\n multiline,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n recomputeNumberOfRows,\n rows,\n setFocus,\n type,\n value,\n name,\n hasError,\n describedById,\n ...forwardedProps,\n })}\n </div>\n )}\n\n {(isValid || hasError) && (\n <Icon\n className={`${CLASSNAME}__input-validity`}\n color={theme === Theme.dark ? 'light' : undefined}\n icon={isValid ? mdiCheckCircle : mdiAlertCircle}\n size={Size.xxs}\n />\n )}\n\n {clearButtonProps && isNotEmpty && !isAnyDisabled && (\n <IconButton\n {...clearButtonProps}\n className={`${CLASSNAME}__input-clear`}\n icon={mdiCloseCircle}\n emphasis={Emphasis.low}\n size={Size.s}\n theme={theme}\n onClick={handleClear}\n type=\"button\"\n />\n )}\n\n {afterElement && <div className={`${CLASSNAME}__after-element`}>{afterElement}</div>}\n </div>\n\n {hasError && error && (\n <InputHelper className={`${CLASSNAME}__helper`} kind={Kind.error} theme={theme} id={errorId}>\n {error}\n </InputHelper>\n )}\n\n {helper && (\n <InputHelper className={`${CLASSNAME}__helper`} theme={theme} id={helperId}>\n {helper}\n </InputHelper>\n )}\n </div>\n );\n});\nTextField.displayName = COMPONENT_NAME;\nTextField.className = CLASSNAME;\nTextField.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_MIN_ROWS","DEFAULT_PROPS","type","useComputeNumberOfRows","minimumRows","rows","setRows","useState","recompute","target","currentRows","scrollHeight","clientHeight","recomputeNumberOfRows","renderInputNative","props","id","isRequired","placeholder","multiline","value","setFocus","onChange","onFocus","onBlur","inputRef","name","hasError","describedById","forwardedProps","ref","useRef","useEffect","current","onTextFieldFocus","event","onTextFieldBlur","handleChange","get","Component","inputProps","className","required","undefined","readOnly","mergeRefs","_jsx","TextField","forwardRef","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","defaultTheme","useTheme","Theme","light","chips","clearButtonProps","error","forceFocusStyle","helper","icon","inputRefProps","isValid","label","labelProps","maxLength","onClear","textFieldRef","theme","afterElement","generatedTextFieldId","useId","textFieldId","localInputRef","helperId","errorId","describedByIds","filter","Boolean","length","join","isFocus","valueLength","isNotEmpty","handleClear","evt","nativeEvent","preventDefault","stopPropagation","currentTarget","blur","inputElement","focus","_jsxs","classNames","handleBasicClasses","hasChips","hasIcon","hasInput","hasInputClear","hasLabel","hasPlaceholder","hasTextarea","hasValue","isDisabled","prefix","children","InputLabel","htmlFor","Icon","mdiAlertCircle","size","Size","xxs","color","dark","xs","mdiCheckCircle","IconButton","mdiCloseCircle","emphasis","Emphasis","low","s","onClick","InputHelper","kind","Kind","displayName","defaultProps"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { T as Thumbnail, u as useFocusPointStyle } from '../Thumbnail-d2001ccb.js';
1
+ export { T as Thumbnail, u as useFocusPointStyle } from '../Thumbnail-22bbea7e.js';
2
2
  import { AspectRatio } from '@lumx/core/js/constants';
3
3
 
4
4
  /**
@@ -39,4 +39,4 @@ const ThumbnailObjectFit = {
39
39
  };
40
40
 
41
41
  export { ThumbnailAspectRatio, ThumbnailObjectFit, ThumbnailVariant };
42
- //# sourceMappingURL=thumbnail-cb55b26c.js.map
42
+ //# sourceMappingURL=thumbnail-4928bba2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thumbnail-cb55b26c.js","sources":["../../../src/components/thumbnail/types.ts"],"sourcesContent":["import React from 'react';\nimport { AspectRatio, Size } from '@lumx/react';\nimport { ValueOf } from '@lumx/react/utils/type';\n\n/**\n * Focal point using vertical alignment, horizontal alignment or coordinates (from -1 to 1).\n */\nexport type FocusPoint = { x?: number; y?: number };\n\n/**\n * Loading attribute is not yet supported in typescript, so we need\n * to add it in order to avoid a ts error.\n * https://github.com/typescript-cheatsheets/react-typescript-cheatsheet/blob/master/ADVANCED.md#adding-non-standard-attributes\n */\ndeclare module 'react' {\n interface ImgHTMLAttributes<T> extends React.HTMLAttributes<T> {\n loading?: 'eager' | 'lazy';\n }\n}\n\n/**\n * All available aspect ratios.\n * @deprecated\n */\nexport const ThumbnailAspectRatio: Record<string, AspectRatio> = { ...AspectRatio };\n\n/**\n * Thumbnail sizes.\n */\nexport type ThumbnailSize = Extract<Size, 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl'>;\n\n/**\n * Thumbnail variants.\n */\nexport const ThumbnailVariant = {\n squared: 'squared',\n rounded: 'rounded',\n} as const;\nexport type ThumbnailVariant = ValueOf<typeof ThumbnailVariant>;\n\n/**\n * Thumbnail object fit.\n */\nexport const ThumbnailObjectFit = {\n cover: 'cover',\n contain: 'contain',\n} as const;\nexport type ThumbnailObjectFit = ValueOf<typeof ThumbnailObjectFit>;\n"],"names":["ThumbnailAspectRatio","AspectRatio","ThumbnailVariant","squared","rounded","ThumbnailObjectFit","cover","contain"],"mappings":";;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACO,MAAMA,oBAAiD,GAAG;EAAE,GAAGC,WAAAA;AAAY,EAAC;;AAEnF;AACA;AACA;;AAGA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAG;AAC5BC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,OAAO,EAAE,SAAA;AACb,EAAU;AAGV;AACA;AACA;AACO,MAAMC,kBAAkB,GAAG;AAC9BC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,OAAO,EAAE,SAAA;AACb;;;;"}
1
+ {"version":3,"file":"thumbnail-4928bba2.js","sources":["../../../src/components/thumbnail/types.ts"],"sourcesContent":["import React from 'react';\nimport { AspectRatio, Size } from '@lumx/react';\nimport { ValueOf } from '@lumx/react/utils/type';\n\n/**\n * Focal point using vertical alignment, horizontal alignment or coordinates (from -1 to 1).\n */\nexport type FocusPoint = { x?: number; y?: number };\n\n/**\n * Loading attribute is not yet supported in typescript, so we need\n * to add it in order to avoid a ts error.\n * https://github.com/typescript-cheatsheets/react-typescript-cheatsheet/blob/master/ADVANCED.md#adding-non-standard-attributes\n */\ndeclare module 'react' {\n interface ImgHTMLAttributes<T> extends React.HTMLAttributes<T> {\n loading?: 'eager' | 'lazy';\n }\n}\n\n/**\n * All available aspect ratios.\n * @deprecated\n */\nexport const ThumbnailAspectRatio: Record<string, AspectRatio> = { ...AspectRatio };\n\n/**\n * Thumbnail sizes.\n */\nexport type ThumbnailSize = Extract<Size, 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl'>;\n\n/**\n * Thumbnail variants.\n */\nexport const ThumbnailVariant = {\n squared: 'squared',\n rounded: 'rounded',\n} as const;\nexport type ThumbnailVariant = ValueOf<typeof ThumbnailVariant>;\n\n/**\n * Thumbnail object fit.\n */\nexport const ThumbnailObjectFit = {\n cover: 'cover',\n contain: 'contain',\n} as const;\nexport type ThumbnailObjectFit = ValueOf<typeof ThumbnailObjectFit>;\n"],"names":["ThumbnailAspectRatio","AspectRatio","ThumbnailVariant","squared","rounded","ThumbnailObjectFit","cover","contain"],"mappings":";;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACO,MAAMA,oBAAiD,GAAG;EAAE,GAAGC,WAAAA;AAAY,EAAC;;AAEnF;AACA;AACA;;AAGA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAG;AAC5BC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,OAAO,EAAE,SAAA;AACb,EAAU;AAGV;AACA;AACA;AACO,MAAMC,kBAAkB,GAAG;AAC9BC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,OAAO,EAAE,SAAA;AACb;;;;"}
@@ -8,7 +8,7 @@ import { u as useId } from '../useId-3a1facc0.js';
8
8
  import { a as POPOVER_ZINDEX, P as Placement, u as usePopper } from '../constants-43721918.js';
9
9
  import { f as forwardRef } from '../forwardRef-8bce732e.js';
10
10
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
11
- import { u as useCallbackOnEscape } from '../useCallbackOnEscape-b956a85d.js';
11
+ import { u as useCallbackOnEscape } from '../useCallbackOnEscape-ea4d9eb4.js';
12
12
  import { TOOLTIP_LONG_PRESS_DELAY, TOOLTIP_HOVER_DELAY } from '@lumx/core/js/constants';
13
13
  import { P as Portal } from '../Portal-3f86608e.js';
14
14
 
@@ -325,4 +325,4 @@ Tooltip.className = CLASSNAME;
325
325
  Tooltip.defaultProps = DEFAULT_PROPS;
326
326
 
327
327
  export { Tooltip };
328
- //# sourceMappingURL=tooltip-dcb43bbe.js.map
328
+ //# sourceMappingURL=tooltip-21018736.js.map