@openedx/paragon 23.21.3 → 23.22.0

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.
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export declare const CLASSNAME_SCROLL_TOP = "pgn__scrollable-body-scroll-top";
3
+ export declare const CLASSNAME_SCROLL_BOTTOM = "pgn__scrollable-body-scroll-bottom";
4
+ export interface ScrollableProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ /** Specifies the content of the `Scrollable`. */
6
+ children: React.ReactNode;
7
+ /** Additional classnames for this component. */
8
+ className?: string;
9
+ }
10
+ declare function Scrollable({ children, className, ...props }: ScrollableProps): import("react/jsx-runtime").JSX.Element;
11
+ declare namespace Scrollable {
12
+ var displayName: string;
13
+ }
14
+ export default Scrollable;
@@ -1,17 +1,17 @@
1
1
  import React, { useState } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import classNames from 'classnames';
4
3
  import useIsVisible from '../hooks/useIsVisibleHook';
5
4
  export const CLASSNAME_SCROLL_TOP = 'pgn__scrollable-body-scroll-top';
6
5
  export const CLASSNAME_SCROLL_BOTTOM = 'pgn__scrollable-body-scroll-bottom';
7
6
  function Scrollable({
8
7
  children,
8
+ className,
9
9
  ...props
10
10
  }) {
11
11
  const [isScrolledToTop, topSentinelRef] = useIsVisible();
12
12
  const [isScrolledToBottom, bottomSentinelRef] = useIsVisible();
13
13
  const [valueNow, setValueNow] = useState(0);
14
- const className = classNames('pgn__scrollable-body', props.className, {
14
+ const scrollableClassName = classNames('pgn__scrollable-body', className, {
15
15
  [CLASSNAME_SCROLL_TOP]: isScrolledToTop,
16
16
  [CLASSNAME_SCROLL_BOTTOM]: isScrolledToBottom
17
17
  });
@@ -21,13 +21,13 @@ function Scrollable({
21
21
  };
22
22
  return /*#__PURE__*/React.createElement("div", {
23
23
  ...props,
24
- className: className,
24
+ className: scrollableClassName,
25
25
  role: "scrollbar",
26
26
  "aria-valuemin": 0,
27
27
  "aria-valuemax": 100,
28
28
  "aria-valuenow": valueNow,
29
29
  "aria-controls": "scrollbar",
30
- tabIndex: "0",
30
+ tabIndex: 0,
31
31
  onScroll: handleScroll
32
32
  }, /*#__PURE__*/React.createElement("div", {
33
33
  ref: topSentinelRef
@@ -37,14 +37,6 @@ function Scrollable({
37
37
  ref: bottomSentinelRef
38
38
  }));
39
39
  }
40
- Scrollable.propTypes = {
41
- /** Specifies the content of the `Scrollable`. */
42
- children: PropTypes.node.isRequired,
43
- /** Additional classnames for this component. */
44
- className: PropTypes.string
45
- };
46
- Scrollable.defaultProps = {
47
- className: undefined
48
- };
40
+ Scrollable.displayName = 'Scrollable';
49
41
  export default Scrollable;
50
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useState","PropTypes","classNames","useIsVisible","CLASSNAME_SCROLL_TOP","CLASSNAME_SCROLL_BOTTOM","Scrollable","children","props","isScrolledToTop","topSentinelRef","isScrolledToBottom","bottomSentinelRef","valueNow","setValueNow","className","handleScroll","e","maxScrollHeight","currentTarget","scrollHeight","clientHeight","Math","ceil","scrollTop","createElement","role","tabIndex","onScroll","ref","propTypes","node","isRequired","string","defaultProps","undefined"],"sources":["../../src/Scrollable/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport useIsVisible from '../hooks/useIsVisibleHook';\n\nexport const CLASSNAME_SCROLL_TOP = 'pgn__scrollable-body-scroll-top';\nexport const CLASSNAME_SCROLL_BOTTOM = 'pgn__scrollable-body-scroll-bottom';\n\nfunction Scrollable({ children, ...props }) {\n const [isScrolledToTop, topSentinelRef] = useIsVisible();\n const [isScrolledToBottom, bottomSentinelRef] = useIsVisible();\n const [valueNow, setValueNow] = useState(0);\n const className = classNames(\n 'pgn__scrollable-body',\n props.className,\n {\n [CLASSNAME_SCROLL_TOP]: isScrolledToTop,\n [CLASSNAME_SCROLL_BOTTOM]: isScrolledToBottom,\n },\n );\n\n const handleScroll = (e) => {\n const maxScrollHeight = e.currentTarget.scrollHeight - e.currentTarget.clientHeight;\n setValueNow(Math.ceil((100 * e.currentTarget.scrollTop) / maxScrollHeight));\n };\n\n return (\n <div\n {...props}\n className={className}\n role=\"scrollbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={valueNow}\n aria-controls=\"scrollbar\"\n tabIndex=\"0\"\n onScroll={handleScroll}\n >\n <div ref={topSentinelRef} />\n <div className=\"pgn__scrollable-body-content\">\n {children}\n </div>\n <div ref={bottomSentinelRef} />\n </div>\n );\n}\n\nScrollable.propTypes = {\n /** Specifies the content of the `Scrollable`. */\n children: PropTypes.node.isRequired,\n /** Additional classnames for this component. */\n className: PropTypes.string,\n};\n\nScrollable.defaultProps = {\n className: undefined,\n};\n\nexport default Scrollable;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,YAAY,MAAM,2BAA2B;AAEpD,OAAO,MAAMC,oBAAoB,GAAG,iCAAiC;AACrE,OAAO,MAAMC,uBAAuB,GAAG,oCAAoC;AAE3E,SAASC,UAAUA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAE;EAC1C,MAAM,CAACC,eAAe,EAAEC,cAAc,CAAC,GAAGP,YAAY,CAAC,CAAC;EACxD,MAAM,CAACQ,kBAAkB,EAAEC,iBAAiB,CAAC,GAAGT,YAAY,CAAC,CAAC;EAC9D,MAAM,CAACU,QAAQ,EAAEC,WAAW,CAAC,GAAGd,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAMe,SAAS,GAAGb,UAAU,CAC1B,sBAAsB,EACtBM,KAAK,CAACO,SAAS,EACf;IACE,CAACX,oBAAoB,GAAGK,eAAe;IACvC,CAACJ,uBAAuB,GAAGM;EAC7B,CACF,CAAC;EAED,MAAMK,YAAY,GAAIC,CAAC,IAAK;IAC1B,MAAMC,eAAe,GAAGD,CAAC,CAACE,aAAa,CAACC,YAAY,GAAGH,CAAC,CAACE,aAAa,CAACE,YAAY;IACnFP,WAAW,CAACQ,IAAI,CAACC,IAAI,CAAE,GAAG,GAAGN,CAAC,CAACE,aAAa,CAACK,SAAS,GAAIN,eAAe,CAAC,CAAC;EAC7E,CAAC;EAED,oBACEnB,KAAA,CAAA0B,aAAA;IAAA,GACMjB,KAAK;IACTO,SAAS,EAAEA,SAAU;IACrBW,IAAI,EAAC,WAAW;IAChB,iBAAe,CAAE;IACjB,iBAAe,GAAI;IACnB,iBAAeb,QAAS;IACxB,iBAAc,WAAW;IACzBc,QAAQ,EAAC,GAAG;IACZC,QAAQ,EAAEZ;EAAa,gBAEvBjB,KAAA,CAAA0B,aAAA;IAAKI,GAAG,EAAEnB;EAAe,CAAE,CAAC,eAC5BX,KAAA,CAAA0B,aAAA;IAAKV,SAAS,EAAC;EAA8B,GAC1CR,QACE,CAAC,eACNR,KAAA,CAAA0B,aAAA;IAAKI,GAAG,EAAEjB;EAAkB,CAAE,CAC3B,CAAC;AAEV;AAEAN,UAAU,CAACwB,SAAS,GAAG;EACrB;EACAvB,QAAQ,EAAEN,SAAS,CAAC8B,IAAI,CAACC,UAAU;EACnC;EACAjB,SAAS,EAAEd,SAAS,CAACgC;AACvB,CAAC;AAED3B,UAAU,CAAC4B,YAAY,GAAG;EACxBnB,SAAS,EAAEoB;AACb,CAAC;AAED,eAAe7B,UAAU","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useState","classNames","useIsVisible","CLASSNAME_SCROLL_TOP","CLASSNAME_SCROLL_BOTTOM","Scrollable","children","className","props","isScrolledToTop","topSentinelRef","isScrolledToBottom","bottomSentinelRef","valueNow","setValueNow","scrollableClassName","handleScroll","e","maxScrollHeight","currentTarget","scrollHeight","clientHeight","Math","ceil","scrollTop","createElement","role","tabIndex","onScroll","ref","displayName"],"sources":["../../src/Scrollable/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport classNames from 'classnames';\n\nimport useIsVisible from '../hooks/useIsVisibleHook';\n\nexport const CLASSNAME_SCROLL_TOP = 'pgn__scrollable-body-scroll-top';\nexport const CLASSNAME_SCROLL_BOTTOM = 'pgn__scrollable-body-scroll-bottom';\n\nexport interface ScrollableProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Specifies the content of the `Scrollable`. */\n children: React.ReactNode;\n /** Additional classnames for this component. */\n className?: string;\n}\n\nfunction Scrollable({ children, className, ...props }: ScrollableProps) {\n const [isScrolledToTop, topSentinelRef] = useIsVisible();\n const [isScrolledToBottom, bottomSentinelRef] = useIsVisible();\n const [valueNow, setValueNow] = useState(0);\n const scrollableClassName = classNames(\n 'pgn__scrollable-body',\n className,\n {\n [CLASSNAME_SCROLL_TOP]: isScrolledToTop,\n [CLASSNAME_SCROLL_BOTTOM]: isScrolledToBottom,\n },\n );\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n const maxScrollHeight = e.currentTarget.scrollHeight - e.currentTarget.clientHeight;\n setValueNow(Math.ceil((100 * e.currentTarget.scrollTop) / maxScrollHeight));\n };\n\n return (\n <div\n {...props}\n className={scrollableClassName}\n role=\"scrollbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={valueNow}\n aria-controls=\"scrollbar\"\n tabIndex={0}\n onScroll={handleScroll}\n >\n <div ref={topSentinelRef as React.RefObject<HTMLDivElement>} />\n <div className=\"pgn__scrollable-body-content\">\n {children}\n </div>\n <div ref={bottomSentinelRef as React.RefObject<HTMLDivElement>} />\n </div>\n );\n}\n\nScrollable.displayName = 'Scrollable';\n\nexport default Scrollable;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,YAAY,MAAM,2BAA2B;AAEpD,OAAO,MAAMC,oBAAoB,GAAG,iCAAiC;AACrE,OAAO,MAAMC,uBAAuB,GAAG,oCAAoC;AAS3E,SAASC,UAAUA,CAAC;EAAEC,QAAQ;EAAEC,SAAS;EAAE,GAAGC;AAAuB,CAAC,EAAE;EACtE,MAAM,CAACC,eAAe,EAAEC,cAAc,CAAC,GAAGR,YAAY,CAAC,CAAC;EACxD,MAAM,CAACS,kBAAkB,EAAEC,iBAAiB,CAAC,GAAGV,YAAY,CAAC,CAAC;EAC9D,MAAM,CAACW,QAAQ,EAAEC,WAAW,CAAC,GAAGd,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAMe,mBAAmB,GAAGd,UAAU,CACpC,sBAAsB,EACtBM,SAAS,EACT;IACE,CAACJ,oBAAoB,GAAGM,eAAe;IACvC,CAACL,uBAAuB,GAAGO;EAC7B,CACF,CAAC;EAED,MAAMK,YAAY,GAAIC,CAAgC,IAAK;IACzD,MAAMC,eAAe,GAAGD,CAAC,CAACE,aAAa,CAACC,YAAY,GAAGH,CAAC,CAACE,aAAa,CAACE,YAAY;IACnFP,WAAW,CAACQ,IAAI,CAACC,IAAI,CAAE,GAAG,GAAGN,CAAC,CAACE,aAAa,CAACK,SAAS,GAAIN,eAAe,CAAC,CAAC;EAC7E,CAAC;EAED,oBACEnB,KAAA,CAAA0B,aAAA;IAAA,GACMjB,KAAK;IACTD,SAAS,EAAEQ,mBAAoB;IAC/BW,IAAI,EAAC,WAAW;IAChB,iBAAe,CAAE;IACjB,iBAAe,GAAI;IACnB,iBAAeb,QAAS;IACxB,iBAAc,WAAW;IACzBc,QAAQ,EAAE,CAAE;IACZC,QAAQ,EAAEZ;EAAa,gBAEvBjB,KAAA,CAAA0B,aAAA;IAAKI,GAAG,EAAEnB;EAAkD,CAAE,CAAC,eAC/DX,KAAA,CAAA0B,aAAA;IAAKlB,SAAS,EAAC;EAA8B,GAC1CD,QACE,CAAC,eACNP,KAAA,CAAA0B,aAAA;IAAKI,GAAG,EAAEjB;EAAqD,CAAE,CAC9D,CAAC;AAEV;AAEAP,UAAU,CAACyB,WAAW,GAAG,YAAY;AAErC,eAAezB,UAAU","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export { default as ModalDialog } from './Modal/ModalDialog';
19
19
  export { default as ModalLayer } from './Modal/ModalLayer';
20
20
  export { default as Overlay, OverlayTrigger } from './Overlay';
21
21
  export { default as Portal } from './Modal/Portal';
22
+ export { default as Scrollable } from './Scrollable';
22
23
  export { default as Spinner } from './Spinner';
23
24
  export { default as Stack } from './Stack';
24
25
  export { default as Toast, TOAST_CLOSE_LABEL_TEXT, TOAST_DELAY } from './Toast';
@@ -36,7 +37,6 @@ export { default as CloseButton } from './CloseButton';
36
37
  export { default as Layout, Col, Row } from './Layout';
37
38
  export { default as Collapse } from './Collapse';
38
39
  export { default as Collapsible } from './Collapsible';
39
- export { default as Scrollable } from './Scrollable';
40
40
  export { default as Dropdown, DropdownToggle, DropdownButton, SplitButton, } from './Dropdown';
41
41
  export { default as Fade } from './Fade';
42
42
  export { default as IconButtonToggle } from './IconButtonToggle';
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ export { default as ModalDialog } from './Modal/ModalDialog';
22
22
  export { default as ModalLayer } from './Modal/ModalLayer';
23
23
  export { default as Overlay, OverlayTrigger } from './Overlay';
24
24
  export { default as Portal } from './Modal/Portal';
25
+ export { default as Scrollable } from './Scrollable';
25
26
  export { default as Spinner } from './Spinner';
26
27
  export { default as Stack } from './Stack';
27
28
  export { default as Toast, TOAST_CLOSE_LABEL_TEXT, TOAST_DELAY } from './Toast';
@@ -52,8 +53,6 @@ export { default as Layout, Col, Row } from './Layout';
52
53
  export { default as Collapse } from './Collapse';
53
54
  // @ts-ignore: has yet to be converted to TypeScript
54
55
  export { default as Collapsible } from './Collapsible';
55
- // @ts-ignore: has yet to be converted to TypeScript
56
- export { default as Scrollable } from './Scrollable';
57
56
  export { default as Dropdown, DropdownToggle, DropdownButton, SplitButton
58
57
  // @ts-ignore: has yet to be converted to TypeScript
59
58
  } from './Dropdown';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","ActionRow","Alert","ALERT_CLOSE_LABEL_TEXT","Annotation","Avatar","AvatarButton","Badge","Breadcrumb","Bubble","Button","ButtonGroup","ButtonToolbar","Chip","CHIP_PGN_CLASS","ChipCarousel","Container","Form","RadioControl","CheckboxControl","SwitchControl","FormSwitchSet","FormControl","FormControlDecoratorGroup","FormControlFeedback","FormCheck","FormFile","FormRadio","FormRadioSet","FormRadioSetContext","FormGroup","FormLabel","useCheckboxSetValues","FormText","FormAutosuggest","FormAutosuggestOption","InputGroup","Hyperlink","Icon","IconButton","IconButtonWithTooltip","ModalContext","ModalDialog","ModalLayer","Overlay","OverlayTrigger","Portal","Spinner","Stack","Toast","TOAST_CLOSE_LABEL_TEXT","TOAST_DELAY","Tooltip","useWindowSize","useToggle","useArrowKeyNavigation","useIndexOfLastVisibleChild","useIsVisible","breakpoints","asInput","Card","CardColumns","CardDeck","CardImg","CardGroup","CardGrid","CardCarousel","CARD_VARIANTS","Carousel","CarouselItem","CAROUSEL_NEXT_LABEL_TEXT","CAROUSEL_PREV_LABEL_TEXT","CloseButton","Layout","Col","Row","Collapse","Collapsible","Scrollable","Dropdown","DropdownToggle","DropdownButton","SplitButton","Fade","IconButtonToggle","Image","Figure","MailtoLink","MAIL_TO_LINK_EXTERNAL_LINK_ALTERNATIVE_TEXT","MAIL_TO_LINK_EXTERNAL_LINK_TITLE","Media","Menu","MenuItem","SelectMenu","SELECT_MENU_DEFAULT_MESSAGE","ModalCloseButton","FullscreenModal","FULLSCREEN_MODAL_CLOSE_LABEL","MarketingModal","StandardModal","STANDARD_MODAL_CLOSE_LABEL","AlertModal","ModalPopup","PopperElement","Nav","NavDropdown","NavItem","NavLink","Navbar","NavbarBrand","NAVBAR_LABEL","PageBanner","PAGE_BANNER_DISMISS_ALT_TEXT","Pagination","PAGINATION_BUTTON_LABEL_PREV","PAGINATION_BUTTON_ICON_BUTTON_NEXT_ALT","PAGINATION_BUTTON_ICON_BUTTON_PREV_ALT","PAGINATION_BUTTON_LABEL_PAGE_OF_COUNT","PAGINATION_BUTTON_LABEL_CURRENT_PAGE","PAGINATION_BUTTON_LABEL_NEXT","PAGINATION_BUTTON_LABEL_PAGE","Popover","PopoverTitle","PopoverContent","ProgressBar","ProductTour","ResponsiveEmbed","SearchField","SEARCH_FIELD_SCREEN_READER_TEXT_LABEL","SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON","SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON","SEARCH_FIELD_BUTTON_TEXT","Sheet","Stepper","StatefulButton","Tabs","Tab","TabContainer","TabContent","TabPane","TransitionReplace","ValidationMessage","DataTable","TextFilter","CheckboxFilter","DropdownFilter","MultiSelectDropdownFilter","TableHeaderCell","TableCell","TableFilters","TABLE_FILTERS_BUTTON_TEXT","TableHeader","TableRow","TablePagination","TablePaginationMinimal","DataTableContext","BulkActions","TableControlBar","TableFooter","CardView","Skeleton","SkeletonTheme","ToggleButton","ToggleButtonGroup","Sticky","SelectableBox","Variant","OverflowScrollContext","OverflowScroll","useOverflowScroll","useOverflowScrollItems","Dropzone","messages","Truncate","ColorPicker","MediaQuery","useMediaQuery","Context","ResponsiveContext","useTable","useFilters","useGlobalFilter","useSortBy","useGroupBy","useExpanded","usePagination","useRowSelect","useRowState","useColumnOrder","useResizeColumns","useBlockLayout","useAbsoluteLayout","useFlexLayout"],"sources":["../src/index.ts"],"sourcesContent":["// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// Things that have types\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\nexport { default as ActionRow } from './ActionRow';\nexport { default as Alert, ALERT_CLOSE_LABEL_TEXT } from './Alert';\nexport { default as Annotation } from './Annotation';\nexport { default as Avatar } from './Avatar';\nexport { default as AvatarButton } from './AvatarButton';\nexport { default as Badge } from './Badge';\nexport { default as Breadcrumb } from './Breadcrumb';\nexport { default as Bubble } from './Bubble';\nexport { default as Button, ButtonGroup, ButtonToolbar } from './Button';\nexport { default as Chip, CHIP_PGN_CLASS } from './Chip';\nexport { default as ChipCarousel } from './ChipCarousel';\nexport { default as Container, type ContainerSize } from './Container';\nexport {\n default as Form,\n RadioControl,\n CheckboxControl,\n SwitchControl,\n FormSwitchSet,\n FormControl,\n FormControlDecoratorGroup,\n FormControlFeedback,\n FormCheck,\n FormFile,\n FormRadio,\n FormRadioSet,\n FormRadioSetContext,\n FormGroup,\n FormLabel,\n useCheckboxSetValues,\n FormText,\n FormAutosuggest,\n FormAutosuggestOption,\n InputGroup,\n} from './Form';\nexport { default as Hyperlink } from './Hyperlink';\nexport { default as Icon } from './Icon';\nexport { default as IconButton, IconButtonWithTooltip } from './IconButton';\nexport { default as ModalContext } from './Modal/ModalContext';\nexport { default as ModalDialog } from './Modal/ModalDialog';\nexport { default as ModalLayer } from './Modal/ModalLayer';\nexport { default as Overlay, OverlayTrigger } from './Overlay';\nexport { default as Portal } from './Modal/Portal';\nexport { default as Spinner } from './Spinner';\nexport { default as Stack } from './Stack';\nexport { default as Toast, TOAST_CLOSE_LABEL_TEXT, TOAST_DELAY } from './Toast';\nexport { default as Tooltip } from './Tooltip';\nexport { default as useWindowSize, type WindowSizeData } from './hooks/useWindowSizeHook';\nexport { default as useToggle, type Toggler, type ToggleHandlers } from './hooks/useToggleHook';\nexport { default as useArrowKeyNavigation, type ArrowKeyNavProps } from './hooks/useArrowKeyNavigationHook';\nexport { default as useIndexOfLastVisibleChild } from './hooks/useIndexOfLastVisibleChildHook';\nexport { default as useIsVisible } from './hooks/useIsVisibleHook';\nexport { default as breakpoints } from './utils/breakpoints';\n\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// Things that don't have types\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as asInput } from './asInput';\n\nexport {\n default as Card,\n CardColumns,\n CardDeck,\n CardImg,\n CardGroup,\n CardGrid,\n CardCarousel,\n CARD_VARIANTS,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Card';\nexport {\n default as Carousel, CarouselItem, CAROUSEL_NEXT_LABEL_TEXT, CAROUSEL_PREV_LABEL_TEXT,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Carousel';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as CloseButton } from './CloseButton';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Layout, Col, Row } from './Layout';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Collapse } from './Collapse';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Collapsible } from './Collapsible';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Scrollable } from './Scrollable';\nexport {\n default as Dropdown,\n DropdownToggle,\n DropdownButton,\n SplitButton,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Dropdown';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Fade } from './Fade';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as IconButtonToggle } from './IconButtonToggle';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Image, Figure } from './Image';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MailtoLink, MAIL_TO_LINK_EXTERNAL_LINK_ALTERNATIVE_TEXT, MAIL_TO_LINK_EXTERNAL_LINK_TITLE } from './MailtoLink';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Media } from './Media';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Menu } from './Menu';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MenuItem } from './Menu/MenuItem';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as SelectMenu, SELECT_MENU_DEFAULT_MESSAGE } from './Menu/SelectMenu';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ModalCloseButton } from './Modal/ModalCloseButton';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as FullscreenModal, FULLSCREEN_MODAL_CLOSE_LABEL } from './Modal/FullscreenModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MarketingModal } from './Modal/MarketingModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as StandardModal, STANDARD_MODAL_CLOSE_LABEL } from './Modal/StandardModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as AlertModal } from './Modal/AlertModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ModalPopup } from './Modal/ModalPopup';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as PopperElement } from './Modal/PopperElement';\n\nexport {\n default as Nav,\n NavDropdown,\n NavItem,\n NavLink,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Nav';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Navbar, NavbarBrand, NAVBAR_LABEL } from './Navbar';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as PageBanner, PAGE_BANNER_DISMISS_ALT_TEXT } from './PageBanner';\nexport {\n default as Pagination,\n PAGINATION_BUTTON_LABEL_PREV,\n PAGINATION_BUTTON_ICON_BUTTON_NEXT_ALT,\n PAGINATION_BUTTON_ICON_BUTTON_PREV_ALT,\n PAGINATION_BUTTON_LABEL_PAGE_OF_COUNT,\n PAGINATION_BUTTON_LABEL_CURRENT_PAGE,\n PAGINATION_BUTTON_LABEL_NEXT,\n PAGINATION_BUTTON_LABEL_PAGE,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Pagination';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Popover, PopoverTitle, PopoverContent } from './Popover';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ProgressBar } from './ProgressBar';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ProductTour } from './ProductTour';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ResponsiveEmbed } from './ResponsiveEmbed';\nexport {\n default as SearchField,\n SEARCH_FIELD_SCREEN_READER_TEXT_LABEL,\n SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON,\n SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON,\n SEARCH_FIELD_BUTTON_TEXT,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './SearchField';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Sheet } from './Sheet';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Stepper } from './Stepper';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as StatefulButton } from './StatefulButton';\nexport {\n default as Tabs,\n Tab,\n TabContainer,\n TabContent,\n TabPane,\n// @ts-ignore: has yet to be converted to TypeScript\n} from './Tabs';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TransitionReplace } from './TransitionReplace';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ValidationMessage } from './ValidationMessage';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as DataTable } from './DataTable';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TextFilter } from './DataTable/filters/TextFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as CheckboxFilter } from './DataTable/filters/CheckboxFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as DropdownFilter } from './DataTable/filters/DropdownFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MultiSelectDropdownFilter } from './DataTable/filters/MultiSelectDropdownFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableHeaderCell } from './DataTable/TableHeaderCell';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableCell } from './DataTable/TableCell';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableFilters, TABLE_FILTERS_BUTTON_TEXT } from './DataTable/TableFilters';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableHeader } from './DataTable/TableHeaderRow';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableRow } from './DataTable/TableRow';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TablePagination } from './DataTable/TablePagination';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TablePaginationMinimal } from './DataTable/TablePaginationMinimal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as DataTableContext } from './DataTable/DataTableContext';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as BulkActions } from './DataTable/BulkActions';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableControlBar } from './DataTable/TableControlBar';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableFooter } from './DataTable/TableFooter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as CardView } from './DataTable/CardView';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Skeleton, SkeletonTheme } from './Skeleton/index';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ToggleButton, ToggleButtonGroup } from './ToggleButton';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Sticky } from './Sticky';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as SelectableBox } from './SelectableBox';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Variant } from './utils/constants';\nexport {\n OverflowScrollContext,\n OverflowScroll,\n useOverflowScroll,\n useOverflowScrollItems,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './OverflowScroll';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Dropzone } from './Dropzone';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as messages } from './i18n';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Truncate } from './Truncate';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ColorPicker } from './ColorPicker';\n\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// Pass through any needed whole third-party library functionality\n// useTable for example is needed to use the DataTable component seamlessly\n// rather than setting a peer dependency in this project, we opt to tightly\n// couple these dependencies by passing through needed functionality.\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\nexport {\n default as MediaQuery,\n useMediaQuery,\n Context as ResponsiveContext,\n} from 'react-responsive';\nexport {\n useTable,\n useFilters,\n useGlobalFilter,\n useSortBy,\n useGroupBy,\n useExpanded,\n usePagination,\n useRowSelect,\n useRowState,\n useColumnOrder,\n useResizeColumns,\n useBlockLayout,\n useAbsoluteLayout,\n useFlexLayout,\n} from 'react-table';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","ActionRow","Alert","ALERT_CLOSE_LABEL_TEXT","Annotation","Avatar","AvatarButton","Badge","Breadcrumb","Bubble","Button","ButtonGroup","ButtonToolbar","Chip","CHIP_PGN_CLASS","ChipCarousel","Container","Form","RadioControl","CheckboxControl","SwitchControl","FormSwitchSet","FormControl","FormControlDecoratorGroup","FormControlFeedback","FormCheck","FormFile","FormRadio","FormRadioSet","FormRadioSetContext","FormGroup","FormLabel","useCheckboxSetValues","FormText","FormAutosuggest","FormAutosuggestOption","InputGroup","Hyperlink","Icon","IconButton","IconButtonWithTooltip","ModalContext","ModalDialog","ModalLayer","Overlay","OverlayTrigger","Portal","Scrollable","Spinner","Stack","Toast","TOAST_CLOSE_LABEL_TEXT","TOAST_DELAY","Tooltip","useWindowSize","useToggle","useArrowKeyNavigation","useIndexOfLastVisibleChild","useIsVisible","breakpoints","asInput","Card","CardColumns","CardDeck","CardImg","CardGroup","CardGrid","CardCarousel","CARD_VARIANTS","Carousel","CarouselItem","CAROUSEL_NEXT_LABEL_TEXT","CAROUSEL_PREV_LABEL_TEXT","CloseButton","Layout","Col","Row","Collapse","Collapsible","Dropdown","DropdownToggle","DropdownButton","SplitButton","Fade","IconButtonToggle","Image","Figure","MailtoLink","MAIL_TO_LINK_EXTERNAL_LINK_ALTERNATIVE_TEXT","MAIL_TO_LINK_EXTERNAL_LINK_TITLE","Media","Menu","MenuItem","SelectMenu","SELECT_MENU_DEFAULT_MESSAGE","ModalCloseButton","FullscreenModal","FULLSCREEN_MODAL_CLOSE_LABEL","MarketingModal","StandardModal","STANDARD_MODAL_CLOSE_LABEL","AlertModal","ModalPopup","PopperElement","Nav","NavDropdown","NavItem","NavLink","Navbar","NavbarBrand","NAVBAR_LABEL","PageBanner","PAGE_BANNER_DISMISS_ALT_TEXT","Pagination","PAGINATION_BUTTON_LABEL_PREV","PAGINATION_BUTTON_ICON_BUTTON_NEXT_ALT","PAGINATION_BUTTON_ICON_BUTTON_PREV_ALT","PAGINATION_BUTTON_LABEL_PAGE_OF_COUNT","PAGINATION_BUTTON_LABEL_CURRENT_PAGE","PAGINATION_BUTTON_LABEL_NEXT","PAGINATION_BUTTON_LABEL_PAGE","Popover","PopoverTitle","PopoverContent","ProgressBar","ProductTour","ResponsiveEmbed","SearchField","SEARCH_FIELD_SCREEN_READER_TEXT_LABEL","SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON","SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON","SEARCH_FIELD_BUTTON_TEXT","Sheet","Stepper","StatefulButton","Tabs","Tab","TabContainer","TabContent","TabPane","TransitionReplace","ValidationMessage","DataTable","TextFilter","CheckboxFilter","DropdownFilter","MultiSelectDropdownFilter","TableHeaderCell","TableCell","TableFilters","TABLE_FILTERS_BUTTON_TEXT","TableHeader","TableRow","TablePagination","TablePaginationMinimal","DataTableContext","BulkActions","TableControlBar","TableFooter","CardView","Skeleton","SkeletonTheme","ToggleButton","ToggleButtonGroup","Sticky","SelectableBox","Variant","OverflowScrollContext","OverflowScroll","useOverflowScroll","useOverflowScrollItems","Dropzone","messages","Truncate","ColorPicker","MediaQuery","useMediaQuery","Context","ResponsiveContext","useTable","useFilters","useGlobalFilter","useSortBy","useGroupBy","useExpanded","usePagination","useRowSelect","useRowState","useColumnOrder","useResizeColumns","useBlockLayout","useAbsoluteLayout","useFlexLayout"],"sources":["../src/index.ts"],"sourcesContent":["// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// Things that have types\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\nexport { default as ActionRow } from './ActionRow';\nexport { default as Alert, ALERT_CLOSE_LABEL_TEXT } from './Alert';\nexport { default as Annotation } from './Annotation';\nexport { default as Avatar } from './Avatar';\nexport { default as AvatarButton } from './AvatarButton';\nexport { default as Badge } from './Badge';\nexport { default as Breadcrumb } from './Breadcrumb';\nexport { default as Bubble } from './Bubble';\nexport { default as Button, ButtonGroup, ButtonToolbar } from './Button';\nexport { default as Chip, CHIP_PGN_CLASS } from './Chip';\nexport { default as ChipCarousel } from './ChipCarousel';\nexport { default as Container, type ContainerSize } from './Container';\nexport {\n default as Form,\n RadioControl,\n CheckboxControl,\n SwitchControl,\n FormSwitchSet,\n FormControl,\n FormControlDecoratorGroup,\n FormControlFeedback,\n FormCheck,\n FormFile,\n FormRadio,\n FormRadioSet,\n FormRadioSetContext,\n FormGroup,\n FormLabel,\n useCheckboxSetValues,\n FormText,\n FormAutosuggest,\n FormAutosuggestOption,\n InputGroup,\n} from './Form';\nexport { default as Hyperlink } from './Hyperlink';\nexport { default as Icon } from './Icon';\nexport { default as IconButton, IconButtonWithTooltip } from './IconButton';\nexport { default as ModalContext } from './Modal/ModalContext';\nexport { default as ModalDialog } from './Modal/ModalDialog';\nexport { default as ModalLayer } from './Modal/ModalLayer';\nexport { default as Overlay, OverlayTrigger } from './Overlay';\nexport { default as Portal } from './Modal/Portal';\nexport { default as Scrollable } from './Scrollable';\nexport { default as Spinner } from './Spinner';\nexport { default as Stack } from './Stack';\nexport { default as Toast, TOAST_CLOSE_LABEL_TEXT, TOAST_DELAY } from './Toast';\nexport { default as Tooltip } from './Tooltip';\nexport { default as useWindowSize, type WindowSizeData } from './hooks/useWindowSizeHook';\nexport { default as useToggle, type Toggler, type ToggleHandlers } from './hooks/useToggleHook';\nexport { default as useArrowKeyNavigation, type ArrowKeyNavProps } from './hooks/useArrowKeyNavigationHook';\nexport { default as useIndexOfLastVisibleChild } from './hooks/useIndexOfLastVisibleChildHook';\nexport { default as useIsVisible } from './hooks/useIsVisibleHook';\nexport { default as breakpoints } from './utils/breakpoints';\n\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// Things that don't have types\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as asInput } from './asInput';\n\nexport {\n default as Card,\n CardColumns,\n CardDeck,\n CardImg,\n CardGroup,\n CardGrid,\n CardCarousel,\n CARD_VARIANTS,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Card';\nexport {\n default as Carousel, CarouselItem, CAROUSEL_NEXT_LABEL_TEXT, CAROUSEL_PREV_LABEL_TEXT,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Carousel';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as CloseButton } from './CloseButton';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Layout, Col, Row } from './Layout';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Collapse } from './Collapse';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Collapsible } from './Collapsible';\nexport {\n default as Dropdown,\n DropdownToggle,\n DropdownButton,\n SplitButton,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Dropdown';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Fade } from './Fade';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as IconButtonToggle } from './IconButtonToggle';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Image, Figure } from './Image';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MailtoLink, MAIL_TO_LINK_EXTERNAL_LINK_ALTERNATIVE_TEXT, MAIL_TO_LINK_EXTERNAL_LINK_TITLE } from './MailtoLink';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Media } from './Media';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Menu } from './Menu';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MenuItem } from './Menu/MenuItem';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as SelectMenu, SELECT_MENU_DEFAULT_MESSAGE } from './Menu/SelectMenu';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ModalCloseButton } from './Modal/ModalCloseButton';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as FullscreenModal, FULLSCREEN_MODAL_CLOSE_LABEL } from './Modal/FullscreenModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MarketingModal } from './Modal/MarketingModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as StandardModal, STANDARD_MODAL_CLOSE_LABEL } from './Modal/StandardModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as AlertModal } from './Modal/AlertModal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ModalPopup } from './Modal/ModalPopup';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as PopperElement } from './Modal/PopperElement';\n\nexport {\n default as Nav,\n NavDropdown,\n NavItem,\n NavLink,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Nav';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Navbar, NavbarBrand, NAVBAR_LABEL } from './Navbar';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as PageBanner, PAGE_BANNER_DISMISS_ALT_TEXT } from './PageBanner';\nexport {\n default as Pagination,\n PAGINATION_BUTTON_LABEL_PREV,\n PAGINATION_BUTTON_ICON_BUTTON_NEXT_ALT,\n PAGINATION_BUTTON_ICON_BUTTON_PREV_ALT,\n PAGINATION_BUTTON_LABEL_PAGE_OF_COUNT,\n PAGINATION_BUTTON_LABEL_CURRENT_PAGE,\n PAGINATION_BUTTON_LABEL_NEXT,\n PAGINATION_BUTTON_LABEL_PAGE,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './Pagination';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Popover, PopoverTitle, PopoverContent } from './Popover';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ProgressBar } from './ProgressBar';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ProductTour } from './ProductTour';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ResponsiveEmbed } from './ResponsiveEmbed';\nexport {\n default as SearchField,\n SEARCH_FIELD_SCREEN_READER_TEXT_LABEL,\n SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON,\n SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON,\n SEARCH_FIELD_BUTTON_TEXT,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './SearchField';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Sheet } from './Sheet';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Stepper } from './Stepper';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as StatefulButton } from './StatefulButton';\nexport {\n default as Tabs,\n Tab,\n TabContainer,\n TabContent,\n TabPane,\n// @ts-ignore: has yet to be converted to TypeScript\n} from './Tabs';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TransitionReplace } from './TransitionReplace';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ValidationMessage } from './ValidationMessage';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as DataTable } from './DataTable';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TextFilter } from './DataTable/filters/TextFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as CheckboxFilter } from './DataTable/filters/CheckboxFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as DropdownFilter } from './DataTable/filters/DropdownFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as MultiSelectDropdownFilter } from './DataTable/filters/MultiSelectDropdownFilter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableHeaderCell } from './DataTable/TableHeaderCell';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableCell } from './DataTable/TableCell';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableFilters, TABLE_FILTERS_BUTTON_TEXT } from './DataTable/TableFilters';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableHeader } from './DataTable/TableHeaderRow';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableRow } from './DataTable/TableRow';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TablePagination } from './DataTable/TablePagination';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TablePaginationMinimal } from './DataTable/TablePaginationMinimal';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as DataTableContext } from './DataTable/DataTableContext';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as BulkActions } from './DataTable/BulkActions';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableControlBar } from './DataTable/TableControlBar';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as TableFooter } from './DataTable/TableFooter';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as CardView } from './DataTable/CardView';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Skeleton, SkeletonTheme } from './Skeleton/index';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ToggleButton, ToggleButtonGroup } from './ToggleButton';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Sticky } from './Sticky';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as SelectableBox } from './SelectableBox';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Variant } from './utils/constants';\nexport {\n OverflowScrollContext,\n OverflowScroll,\n useOverflowScroll,\n useOverflowScrollItems,\n // @ts-ignore: has yet to be converted to TypeScript\n} from './OverflowScroll';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Dropzone } from './Dropzone';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as messages } from './i18n';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as Truncate } from './Truncate';\n// @ts-ignore: has yet to be converted to TypeScript\nexport { default as ColorPicker } from './ColorPicker';\n\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\n// Pass through any needed whole third-party library functionality\n// useTable for example is needed to use the DataTable component seamlessly\n// rather than setting a peer dependency in this project, we opt to tightly\n// couple these dependencies by passing through needed functionality.\n// // // // // // // // // // // // // // // // // // // // // // // // // // //\nexport {\n default as MediaQuery,\n useMediaQuery,\n Context as ResponsiveContext,\n} from 'react-responsive';\nexport {\n useTable,\n useFilters,\n useGlobalFilter,\n useSortBy,\n useGroupBy,\n useExpanded,\n usePagination,\n useRowSelect,\n useRowState,\n useColumnOrder,\n useResizeColumns,\n useBlockLayout,\n useAbsoluteLayout,\n useFlexLayout,\n} from 'react-table';\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ const fs = require('fs');
1
2
  const buildTokensCommand = require('../build-tokens');
2
3
  const {
3
4
  initializeStyleDictionary,
@@ -6,6 +7,7 @@ const {
6
7
  } = require('../../tokens/style-dictionary');
7
8
  const { createIndexCssFile } = require('../../tokens/utils');
8
9
 
10
+ jest.mock('fs');
9
11
  jest.mock('../../tokens/style-dictionary');
10
12
  jest.mock('../../tokens/utils');
11
13
 
@@ -122,4 +124,58 @@ describe('buildTokensCommand', () => {
122
124
  },
123
125
  }));
124
126
  });
127
+
128
+ describe('app token discovery', () => {
129
+ const mockAppsDirectory = (appNames) => {
130
+ fs.existsSync.mockReturnValue(true);
131
+ fs.readdirSync.mockReturnValue(
132
+ appNames.map((name) => ({ name, isDirectory: () => true })),
133
+ );
134
+ };
135
+
136
+ it('builds one config per discovered app, in addition to core and themes', async () => {
137
+ mockAppsDirectory(['catalog', 'discussions']);
138
+
139
+ await buildTokensCommand(['--source', '/fake/source']);
140
+
141
+ // 1 core + 1 light theme + 2 apps = 4 StyleDictionary calls
142
+ expect(StyleDictionary).toHaveBeenCalledTimes(4);
143
+ });
144
+
145
+ it('uses the expected per-app config shape', async () => {
146
+ mockAppsDirectory(['catalog']);
147
+
148
+ await buildTokensCommand(['--source', '/fake/source']);
149
+
150
+ const appCallArgs = StyleDictionary.mock.calls
151
+ .map(([config]) => config)
152
+ .find((config) => config.platforms.css.files[0].destination.startsWith('apps/'));
153
+
154
+ expect(appCallArgs).toBeDefined();
155
+ expect(appCallArgs.platforms.css.prefix).toBe('');
156
+ expect(appCallArgs.platforms.css.transformGroup).toBe('paragon-css-app');
157
+ expect(appCallArgs.platforms.css.files).toHaveLength(1);
158
+ expect(appCallArgs.platforms.css.files[0].destination).toBe('apps/catalog/variables.css');
159
+ expect(appCallArgs.platforms.css.files[0].options.outputReferences).toBe(true);
160
+
161
+ // Inline filter passes source tokens, rejects include'd Paragon tokens.
162
+ const appFilter = appCallArgs.platforms.css.files[0].filter;
163
+ expect(typeof appFilter).toBe('function');
164
+ expect(appFilter({ isSource: true })).toBe(true);
165
+ expect(appFilter({ isSource: false })).toBe(false);
166
+ });
167
+
168
+ it('does not create an index.css for app configs', async () => {
169
+ mockAppsDirectory(['catalog', 'discussions']);
170
+
171
+ await buildTokensCommand(['--source', '/fake/source']);
172
+
173
+ // Only core + light theme should get an index; the two apps should not.
174
+ expect(createIndexCssFile).toHaveBeenCalledTimes(2);
175
+ const indexCalls = createIndexCssFile.mock.calls.map(([params]) => params);
176
+ indexCalls.forEach(({ themeVariant }) => {
177
+ expect(themeVariant === undefined || themeVariant === 'light').toBe(true);
178
+ });
179
+ });
180
+ });
125
181
  });
@@ -62,8 +62,9 @@ async function buildTokensCommand(commandArgs) {
62
62
  }
63
63
  let themesToProcess = null;
64
64
 
65
+ const tokensPath = tokensSource || path.resolve(__dirname, '../tokens/src');
66
+
65
67
  if (allThemes) {
66
- const tokensPath = tokensSource || path.resolve(__dirname, '../tokens/src');
67
68
  themesToProcess = fs
68
69
  .readdirSync(`${tokensPath}/themes/`, { withFileTypes: true })
69
70
  .filter(entry => entry.isDirectory())
@@ -74,6 +75,15 @@ async function buildTokensCommand(commandArgs) {
74
75
  themesToProcess = (themes || 'light').split(',').map(t => t.trim());
75
76
  }
76
77
 
78
+ // Discover app token directories. Skip silently if `apps/` is absent.
79
+ const appsPath = path.join(tokensPath, 'apps');
80
+ const appsToProcess = fs.existsSync(appsPath)
81
+ ? fs
82
+ .readdirSync(appsPath, { withFileTypes: true })
83
+ .filter(entry => entry.isDirectory())
84
+ .map(entry => entry.name)
85
+ : [];
86
+
77
87
  const StyleDictionary = await initializeStyleDictionary({ themes: themesToProcess });
78
88
 
79
89
  const coreConfig = {
@@ -173,6 +183,51 @@ async function buildTokensCommand(commandArgs) {
173
183
  },
174
184
  });
175
185
 
186
+ // Per-app style-dictionary config. Outputs the app's own tokens unprefixed
187
+ // (`prefix: ''`) into `apps/<appName>/variables.css`. References to
188
+ // include'd Paragon core/theme tokens emit `var(--pgn-…)` thanks to the
189
+ // `paragon-css-app` transform group's conditional name transform.
190
+ //
191
+ // `themes/light/**` is included purely for reference vocabulary — app
192
+ // tokens reference paths like `{color.gray.500}` that live in theme files,
193
+ // and the build needs those paths in scope to resolve refs. The actual
194
+ // values are filtered out of the output. Light is hardcoded because it's
195
+ // the only theme Paragon ships and the schema is the same across variants.
196
+ // See https://github.com/openedx/paragon/issues/4275 for a proposed split
197
+ // that would let us reference a theme-invariant schema directly.
198
+ const getAppStyleDictionaryConfig = (appName) => ({
199
+ ...coreConfig,
200
+ include: [
201
+ ...coreConfig.include,
202
+ path.resolve(__dirname, '../tokens/src/themes/light/**/*.json'),
203
+ path.resolve(__dirname, '../tokens/src/themes/light/**/*.toml'),
204
+ ],
205
+ source: [
206
+ `${tokensPath}/apps/${appName}/**/*.json`,
207
+ `${tokensPath}/apps/${appName}/**/*.toml`,
208
+ ],
209
+ platforms: {
210
+ css: {
211
+ ...coreConfig.platforms.css,
212
+ prefix: '',
213
+ transformGroup: 'paragon-css-app',
214
+ files: [
215
+ {
216
+ format: 'css/custom-variables',
217
+ destination: `apps/${appName}/variables.css`,
218
+ // Inline filter — strict source-only, distinct from the
219
+ // registered `isSource` filter (which also pulls in Paragon
220
+ // tokens marked as referenced by source). For apps we want refs
221
+ // to Paragon tokens to stay as `var(--pgn-…)` and resolve at
222
+ // runtime against Paragon's separately-loaded CSS.
223
+ filter: (token) => token.isSource,
224
+ options: { outputReferences: true },
225
+ },
226
+ ],
227
+ },
228
+ },
229
+ });
230
+
176
231
  // Create list of style-dictionary configurations to build
177
232
  const configs = [];
178
233
 
@@ -187,17 +242,29 @@ async function buildTokensCommand(commandArgs) {
187
242
  configs.push({ config, themeVariant });
188
243
  });
189
244
 
190
- // Build tokens for each configuration
191
- await Promise.all(configs.map(async ({ config, themeVariant }) => {
245
+ // Add app configs (one per discovered app)
246
+ appsToProcess.forEach(appName => {
247
+ configs.push({ config: getAppStyleDictionaryConfig(appName), isApp: true });
248
+ });
249
+
250
+ // Phase 1: build all token configs (core, themes, apps) in parallel.
251
+ await Promise.all(configs.map(async ({ config }) => {
192
252
  const sd = new StyleDictionary(config);
193
253
  await sd.cleanAllPlatforms();
194
254
  await sd.buildAllPlatforms();
255
+ }));
256
+
257
+ // Phase 2: create index.css for core + each theme variant. Apps don't get
258
+ // their own index — their variables.css is consumed via @import from each
259
+ // theme variant's index.css (added by createIndexCssFile when apps exist).
260
+ configs.forEach(({ themeVariant, isApp }) => {
261
+ if (isApp) { return; }
195
262
  createIndexCssFile({
196
263
  buildDir,
197
264
  isThemeVariant: !!themeVariant,
198
265
  themeVariant,
199
266
  });
200
- }));
267
+ });
201
268
  }
202
269
 
203
270
  module.exports = buildTokensCommand;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openedx/paragon",
3
- "version": "23.21.3",
3
+ "version": "23.22.0",
4
4
  "description": "Accessible, responsive UI component library based on Bootstrap.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -1,5 +1,4 @@
1
1
  import React, { useState } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import classNames from 'classnames';
4
3
 
5
4
  import useIsVisible from '../hooks/useIsVisibleHook';
@@ -7,20 +6,27 @@ import useIsVisible from '../hooks/useIsVisibleHook';
7
6
  export const CLASSNAME_SCROLL_TOP = 'pgn__scrollable-body-scroll-top';
8
7
  export const CLASSNAME_SCROLL_BOTTOM = 'pgn__scrollable-body-scroll-bottom';
9
8
 
10
- function Scrollable({ children, ...props }) {
9
+ export interface ScrollableProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ /** Specifies the content of the `Scrollable`. */
11
+ children: React.ReactNode;
12
+ /** Additional classnames for this component. */
13
+ className?: string;
14
+ }
15
+
16
+ function Scrollable({ children, className, ...props }: ScrollableProps) {
11
17
  const [isScrolledToTop, topSentinelRef] = useIsVisible();
12
18
  const [isScrolledToBottom, bottomSentinelRef] = useIsVisible();
13
19
  const [valueNow, setValueNow] = useState(0);
14
- const className = classNames(
20
+ const scrollableClassName = classNames(
15
21
  'pgn__scrollable-body',
16
- props.className,
22
+ className,
17
23
  {
18
24
  [CLASSNAME_SCROLL_TOP]: isScrolledToTop,
19
25
  [CLASSNAME_SCROLL_BOTTOM]: isScrolledToBottom,
20
26
  },
21
27
  );
22
28
 
23
- const handleScroll = (e) => {
29
+ const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {
24
30
  const maxScrollHeight = e.currentTarget.scrollHeight - e.currentTarget.clientHeight;
25
31
  setValueNow(Math.ceil((100 * e.currentTarget.scrollTop) / maxScrollHeight));
26
32
  };
@@ -28,33 +34,24 @@ function Scrollable({ children, ...props }) {
28
34
  return (
29
35
  <div
30
36
  {...props}
31
- className={className}
37
+ className={scrollableClassName}
32
38
  role="scrollbar"
33
39
  aria-valuemin={0}
34
40
  aria-valuemax={100}
35
41
  aria-valuenow={valueNow}
36
42
  aria-controls="scrollbar"
37
- tabIndex="0"
43
+ tabIndex={0}
38
44
  onScroll={handleScroll}
39
45
  >
40
- <div ref={topSentinelRef} />
46
+ <div ref={topSentinelRef as React.RefObject<HTMLDivElement>} />
41
47
  <div className="pgn__scrollable-body-content">
42
48
  {children}
43
49
  </div>
44
- <div ref={bottomSentinelRef} />
50
+ <div ref={bottomSentinelRef as React.RefObject<HTMLDivElement>} />
45
51
  </div>
46
52
  );
47
53
  }
48
54
 
49
- Scrollable.propTypes = {
50
- /** Specifies the content of the `Scrollable`. */
51
- children: PropTypes.node.isRequired,
52
- /** Additional classnames for this component. */
53
- className: PropTypes.string,
54
- };
55
-
56
- Scrollable.defaultProps = {
57
- className: undefined,
58
- };
55
+ Scrollable.displayName = 'Scrollable';
59
56
 
60
57
  export default Scrollable;
package/src/index.ts CHANGED
@@ -43,6 +43,7 @@ export { default as ModalDialog } from './Modal/ModalDialog';
43
43
  export { default as ModalLayer } from './Modal/ModalLayer';
44
44
  export { default as Overlay, OverlayTrigger } from './Overlay';
45
45
  export { default as Portal } from './Modal/Portal';
46
+ export { default as Scrollable } from './Scrollable';
46
47
  export { default as Spinner } from './Spinner';
47
48
  export { default as Stack } from './Stack';
48
49
  export { default as Toast, TOAST_CLOSE_LABEL_TEXT, TOAST_DELAY } from './Toast';
@@ -83,8 +84,6 @@ export { default as Layout, Col, Row } from './Layout';
83
84
  export { default as Collapse } from './Collapse';
84
85
  // @ts-ignore: has yet to be converted to TypeScript
85
86
  export { default as Collapsible } from './Collapsible';
86
- // @ts-ignore: has yet to be converted to TypeScript
87
- export { default as Scrollable } from './Scrollable';
88
87
  export {
89
88
  default as Dropdown,
90
89
  DropdownToggle,
package/tokens/README.md CHANGED
@@ -155,3 +155,50 @@ functions from tokens that are of `color` category and theirs `type` is one of `
155
155
  and `item` is one of `["base", "100", "200", ...]`.
156
156
 
157
157
  If you want to generate additional utility classes you need to add a similar JSON file to `src/utilities` directory.
158
+
159
+ ## Application tokens
160
+
161
+ In addition to `core/` and `themes/`, Paragon supports a third top-level token directory: `apps/`. Tokens placed under `apps/<app-name>/` are emitted **without** the `--pgn-` prefix into `<buildDir>/apps/<app-name>/variables.css`. This is intended for theme authors who want to override CSS variables defined by individual MFEs (which use their own naming conventions, not `--pgn-`).
162
+
163
+ For example, `frontend-app-catalog`'s home banner uses
164
+ ```scss
165
+ background-color: var(--catalog-home-page-banner-background-color, var(--pgn-color-gray-500));
166
+ ```
167
+
168
+ A theme author can target that variable by placing the following at `<their-source>/apps/catalog/home-page.json`:
169
+
170
+ ```json
171
+ {
172
+ "catalog": {
173
+ "home-page": {
174
+ "banner": {
175
+ "background-color": { "$value": "{color.primary.400}", "$type": "color" }
176
+ }
177
+ }
178
+ }
179
+ }
180
+ ```
181
+
182
+ The build emits:
183
+
184
+ ```css
185
+ :root {
186
+ --catalog-home-page-banner-background-color: var(--pgn-color-primary-400);
187
+ }
188
+ ```
189
+
190
+ …replacing the MFE's gray fallback with the theme's primary color.
191
+
192
+ ### Path conventions
193
+
194
+ The recommended structure is kebab-case path segments matching the MFE's CSS variable name 1:1. For example, the four-level nesting above (`catalog` → `home-page` → `banner` → `background-color`) maps to the variable `--catalog-home-page-banner-background-color`. Multi-word concepts like `home-page` and `background-color` use hyphens within a single segment; single-word segments stay simple.
195
+
196
+ This is the same convention used by Paragon's existing `core/` and `themes/` token files.
197
+
198
+ ### Theme variation
199
+
200
+ App tokens are not theme-variant-aware in this version — there's a single `apps/<app-name>/variables.css` regardless of how many themes are being built. Theme variation flows through *references*: writing `{ "$value": "{color.primary.400}" }` produces a `var(--pgn-color-primary-400)` reference in the output, which resolves at runtime against whichever Paragon theme CSS is loaded. So when a brand publishes both `light.css` and `dark.css`, the same app override layers correctly on top of each.
201
+
202
+ ### Output and consumption
203
+
204
+ App `variables.css` files are inlined into each theme variant's bundle by `paragon build-scss` via `@import` statements added to the theme's `index.css`. So when a theme author publishes `dist/light.min.css`, it already contains the app overrides. No separate per-app CSS files are emitted in `dist/`, and no MFE-side configuration change is needed — every MFE that loads the brand's `light.min.css` automatically picks up every app's custom-property declarations on `:root`.
File without changes
@@ -251,6 +251,31 @@ const initializeStyleDictionary = async ({ themes }) => {
251
251
  ],
252
252
  });
253
253
 
254
+ /**
255
+ * Conditionally prepends `pgn-` to non-source tokens so that app-config builds
256
+ * (which run with `prefix: ''` so app tokens output unprefixed) still emit
257
+ * `var(--pgn-…)` for references to Paragon core/theme tokens loaded via `include`.
258
+ * Source tokens (the app's own) keep their unprefixed name.
259
+ */
260
+ StyleDictionary.registerTransform({
261
+ name: 'name/pgn-for-non-source',
262
+ type: 'name',
263
+ transform: (token) => (token.isSource ? token.name : `pgn-${token.name}`),
264
+ });
265
+
266
+ /**
267
+ * Transform group used by app configs. Extends `paragon-css` with the
268
+ * conditional name transform appended so it runs after the standard kebab
269
+ * name transform.
270
+ */
271
+ StyleDictionary.registerTransformGroup({
272
+ name: 'paragon-css-app',
273
+ transforms: [
274
+ ...StyleDictionary.hooks.transformGroups['paragon-css'],
275
+ 'name/pgn-for-non-source',
276
+ ],
277
+ });
278
+
254
279
  /**
255
280
  * The custom formatter to create CSS variables for core tokens.
256
281
  */
package/tokens/utils.js CHANGED
@@ -361,8 +361,19 @@ function createIndexCssFile({ buildDir = path.resolve(__dirname, '../styles/css'
361
361
  return sortOrder.indexOf(aName) - sortOrder.indexOf(bName);
362
362
  });
363
363
 
364
+ // For theme variants, app variables.css files get @import'd from the
365
+ // theme's index.css so app overrides flow into the theme bundle via
366
+ // build-scss's postCSS-import pass.
367
+ const appsDir = path.join(buildDir, 'apps');
368
+ const appCssFiles = (isThemeVariant && fs.existsSync(appsDir))
369
+ ? getAllCssFiles(appsDir)
370
+ : [];
371
+
372
+ // Apps don't have load-order dependencies, so we just append them.
373
+ const allCssFiles = [...sortedCssFiles, ...appCssFiles];
374
+
364
375
  // Generate @import statements with relative paths
365
- const exportStatements = sortedCssFiles.map((file) => {
376
+ const exportStatements = allCssFiles.map((file) => {
366
377
  // Get the relative path from the directory path to the file
367
378
  const relativePath = path.relative(directoryPath, file).replace(/\\/g, '/');
368
379
  return `@import "${relativePath}";`;