@coreui/react 4.10.0 → 5.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2477,6 +2477,54 @@ CSSTransition.propTypes = process.env.NODE_ENV !== "production" ? _extends({}, T
2477
2477
  }) : {};
2478
2478
  var CSSTransition$1 = CSSTransition;
2479
2479
 
2480
+ var getStoredTheme = function (localStorageItemName) {
2481
+ return typeof window !== 'undefined' && localStorage.getItem(localStorageItemName);
2482
+ };
2483
+ var setStoredTheme = function (localStorageItemName, colorMode) {
2484
+ return localStorage.setItem(localStorageItemName, colorMode);
2485
+ };
2486
+ var getPreferredColorScheme = function (localStorageItemName) {
2487
+ if (typeof window === 'undefined') {
2488
+ return 'light';
2489
+ }
2490
+ var storedTheme = getStoredTheme(localStorageItemName);
2491
+ if (storedTheme) {
2492
+ return storedTheme;
2493
+ }
2494
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
2495
+ };
2496
+ var setTheme = function (colorMode) {
2497
+ document.documentElement.dataset.coreuiTheme =
2498
+ colorMode === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches
2499
+ ? 'dark'
2500
+ : colorMode;
2501
+ var event = new Event('ColorSchemeChange');
2502
+ document.documentElement.dispatchEvent(event);
2503
+ };
2504
+ var useColorModes = function (localStorageItemName) {
2505
+ if (localStorageItemName === void 0) { localStorageItemName = 'coreui-react-color-scheme'; }
2506
+ var _a = React.useState(getPreferredColorScheme(localStorageItemName)), colorMode = _a[0], setColorMode = _a[1];
2507
+ React.useEffect(function () {
2508
+ if (colorMode) {
2509
+ setStoredTheme(localStorageItemName, colorMode);
2510
+ setTheme(colorMode);
2511
+ }
2512
+ }, [colorMode]);
2513
+ React.useEffect(function () {
2514
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function () {
2515
+ var storedTheme = getStoredTheme(localStorageItemName);
2516
+ if (storedTheme !== 'light' && storedTheme !== 'dark' && colorMode) {
2517
+ setTheme(colorMode);
2518
+ }
2519
+ });
2520
+ });
2521
+ return {
2522
+ colorMode: colorMode,
2523
+ isColorModeSet: function () { return Boolean(getStoredTheme(localStorageItemName)); },
2524
+ setColorMode: setColorMode,
2525
+ };
2526
+ };
2527
+
2480
2528
  // code borrowed from https://github.com/reach/reach-ui
2481
2529
  // problem described https://github.com/facebook/react/issues/13029
2482
2530
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -4517,13 +4565,14 @@ CAccordionHeader.propTypes = {
4517
4565
  CAccordionHeader.displayName = 'CAccordionHeader';
4518
4566
 
4519
4567
  var CCloseButton = React.forwardRef(function (_a, ref) {
4520
- var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest(_a, ["className", "disabled", "white"]);
4568
+ var className = _a.className, dark = _a.dark, disabled = _a.disabled, white = _a.white, rest = __rest(_a, ["className", "dark", "disabled", "white"]);
4521
4569
  return (React.createElement("button", __assign({ type: "button", className: classNames('btn', 'btn-close', {
4522
4570
  'btn-close-white': white,
4523
- }, disabled, className), "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
4571
+ }, disabled, className), "aria-label": "Close", disabled: disabled }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: ref })));
4524
4572
  });
4525
4573
  CCloseButton.propTypes = {
4526
4574
  className: PropTypes.string,
4575
+ dark: PropTypes.bool,
4527
4576
  disabled: PropTypes.bool,
4528
4577
  white: PropTypes.bool,
4529
4578
  };
@@ -5027,17 +5076,18 @@ var CCarousel = React.forwardRef(function (_a, ref) {
5027
5076
  setTouchPosition(touchDown);
5028
5077
  };
5029
5078
  return (React.createElement("div", __assign({ className: classNames('carousel slide', {
5030
- 'carousel-dark': dark,
5031
5079
  'carousel-fade': transition === 'crossfade',
5032
- }, className), onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5080
+ }, className) }, (dark && { 'data-coreui-theme': 'dark' }), { onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5033
5081
  React.createElement(CCarouselContext.Provider, { value: {
5034
5082
  setAnimating: setAnimating,
5035
5083
  setCustomInterval: setCustomInterval,
5036
5084
  } },
5037
- indicators && (React.createElement("ol", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5038
- return (React.createElement("li", { key: "indicator".concat(index), onClick: function () {
5085
+ indicators && (React.createElement("div", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5086
+ return (React.createElement("button", __assign({ key: "indicator".concat(index), onClick: function () {
5039
5087
  !animating && handleIndicatorClick(index);
5040
- }, className: active === index ? 'active' : '', "data-coreui-target": "" }));
5088
+ }, className: classNames({
5089
+ active: active === index
5090
+ }), "data-coreui-target": "" }, (active === index && { 'aria-current': true }), { "aria-label": "Slide ".concat(index + 1) })));
5041
5091
  }))),
5042
5092
  React.createElement("div", { className: "carousel-inner" }, React.Children.map(children, function (child, index) {
5043
5093
  if (React.isValidElement(child)) {
@@ -5365,9 +5415,8 @@ var CDropdownMenu = React.forwardRef(function (_a, ref) {
5365
5415
  var forkedRef = useForkedRef(ref, dropdownMenuRef);
5366
5416
  return (React.createElement(CConditionalPortal, { portal: portal !== null && portal !== void 0 ? portal : false },
5367
5417
  React.createElement(Component, __assign({ className: classNames('dropdown-menu', {
5368
- 'dropdown-menu-dark': dark,
5369
5418
  show: visible,
5370
- }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), rest), Component === 'ul'
5419
+ }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), (dark && { 'data-coreui-theme': 'dark' }), rest), Component === 'ul'
5371
5420
  ? React.Children.map(children, function (child, index) {
5372
5421
  if (React.isValidElement(child)) {
5373
5422
  return React.createElement("li", { key: index }, React.cloneElement(child));
@@ -6204,7 +6253,7 @@ CNav.propTypes = {
6204
6253
  className: PropTypes.string,
6205
6254
  component: PropTypes.elementType,
6206
6255
  layout: PropTypes.oneOf(['fill', 'justified']),
6207
- variant: PropTypes.oneOf(['tabs', 'pills']),
6256
+ variant: PropTypes.oneOf(['pills', 'tabs', 'underline']),
6208
6257
  };
6209
6258
  CNav.displayName = 'CNav';
6210
6259
 
@@ -6358,9 +6407,8 @@ var CNavbar = React.forwardRef(function (_a, ref) {
6358
6407
  var children = _a.children, className = _a.className, color = _a.color, colorScheme = _a.colorScheme, _c = _a.component, Component = _c === void 0 ? 'nav' : _c, container = _a.container, expand = _a.expand, placement = _a.placement, rest = __rest(_a, ["children", "className", "color", "colorScheme", "component", "container", "expand", "placement"]);
6359
6408
  return (React.createElement(Component, __assign({ className: classNames('navbar', (_b = {},
6360
6409
  _b["bg-".concat(color)] = color,
6361
- _b["navbar-".concat(colorScheme)] = colorScheme,
6362
6410
  _b[typeof expand === 'boolean' ? 'navbar-expand' : "navbar-expand-".concat(expand)] = expand,
6363
- _b), placement, className) }, rest, { ref: ref }), container ? (React.createElement("div", { className: typeof container === 'string' ? "container-".concat(container) : 'container' }, children)) : (React.createElement(React.Fragment, null, children))));
6411
+ _b), placement, className) }, (colorScheme && { 'data-coreui-theme': colorScheme }), rest, { ref: ref }), container ? (React.createElement("div", { className: typeof container === 'string' ? "container-".concat(container) : 'container' }, children)) : (React.createElement(React.Fragment, null, children))));
6364
6412
  });
6365
6413
  CNavbar.propTypes = {
6366
6414
  children: PropTypes.node,
@@ -6431,7 +6479,7 @@ CNavbarToggler.propTypes = {
6431
6479
  CNavbarToggler.displayName = 'CNavbarToggler';
6432
6480
 
6433
6481
  var COffcanvas = React.forwardRef(function (_a, ref) {
6434
- var children = _a.children, _b = _a.backdrop, backdrop = _b === void 0 ? true : _b, className = _a.className, _c = _a.keyboard, keyboard = _c === void 0 ? true : _c, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _d = _a.portal, portal = _d === void 0 ? false : _d, _e = _a.responsive, responsive = _e === void 0 ? true : _e, _f = _a.scroll, scroll = _f === void 0 ? false : _f, _g = _a.visible, visible = _g === void 0 ? false : _g, rest = __rest(_a, ["children", "backdrop", "className", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
6482
+ var children = _a.children, _b = _a.backdrop, backdrop = _b === void 0 ? true : _b, className = _a.className, dark = _a.dark, _c = _a.keyboard, keyboard = _c === void 0 ? true : _c, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _d = _a.portal, portal = _d === void 0 ? false : _d, _e = _a.responsive, responsive = _e === void 0 ? true : _e, _f = _a.scroll, scroll = _f === void 0 ? false : _f, _g = _a.visible, visible = _g === void 0 ? false : _g, rest = __rest(_a, ["children", "backdrop", "className", "dark", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
6435
6483
  var _h = React.useState(visible), _visible = _h[0], setVisible = _h[1];
6436
6484
  var offcanvasRef = React.useRef(null);
6437
6485
  var forkedRef = useForkedRef(ref, offcanvasRef);
@@ -6472,7 +6520,7 @@ var COffcanvas = React.forwardRef(function (_a, ref) {
6472
6520
  _a.showing = state === 'entering',
6473
6521
  _a.show = state === 'entered',
6474
6522
  _a['show hiding'] = state === 'exiting',
6475
- _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: forkedRef }), children)));
6523
+ _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: forkedRef }), children)));
6476
6524
  }),
6477
6525
  backdrop && (React.createElement(CConditionalPortal, { portal: portal },
6478
6526
  React.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible })))));
@@ -6481,6 +6529,7 @@ COffcanvas.propTypes = {
6481
6529
  backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),
6482
6530
  children: PropTypes.node,
6483
6531
  className: PropTypes.string,
6532
+ dark: PropTypes.bool,
6484
6533
  keyboard: PropTypes.bool,
6485
6534
  onHide: PropTypes.func,
6486
6535
  onShow: PropTypes.func,
@@ -7620,6 +7669,7 @@ exports.CWidgetStatsC = CWidgetStatsC;
7620
7669
  exports.CWidgetStatsD = CWidgetStatsD;
7621
7670
  exports.CWidgetStatsE = CWidgetStatsE;
7622
7671
  exports.CWidgetStatsF = CWidgetStatsF;
7672
+ exports.useColorModes = useColorModes;
7623
7673
  exports.useForkedRef = useForkedRef;
7624
7674
  exports.usePopper = usePopper;
7625
7675
  //# sourceMappingURL=index.js.map