@televet/kibble-ui 1.9.0 → 1.10.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,7 @@
1
+ export * from './modal.types';
2
+ export * as BetaModal from './modal.component';
3
+ export * from './modalHeader.component';
4
+ export * from './modalCloseButton.component';
5
+ export * from './modalBody.component';
6
+ export * from './modalFooter.component';
7
+ export * from './modalFooterButtons.component';
@@ -0,0 +1,18 @@
1
+ import React, { ReactNode } from 'react';
2
+ import { ModalProps as ChakraModalProps } from '@chakra-ui/react';
3
+ import { FocusableElement } from '@chakra-ui/utils';
4
+ import { ModalSize } from './modal.types';
5
+ declare type ResponsiveBreakpoints = 'base' | 'md';
6
+ export interface ModalProps extends ChakraModalProps {
7
+ children: ReactNode;
8
+ isCentered?: boolean;
9
+ responsiveModalSizes?: Partial<Record<ResponsiveBreakpoints, ModalSize>>;
10
+ allowEscape?: boolean;
11
+ useFullScreenMobile?: boolean;
12
+ darkMode?: boolean;
13
+ initialFocusRef?: React.RefObject<FocusableElement>;
14
+ scrollBehavior?: 'inside' | 'outside';
15
+ size?: string;
16
+ }
17
+ export declare const Modal: ({ children, isOpen, onClose, isCentered, responsiveModalSizes, allowEscape, useFullScreenMobile, initialFocusRef, scrollBehavior, darkMode, size, ...rest }: ModalProps) => JSX.Element;
18
+ export {};
@@ -0,0 +1 @@
1
+ export declare type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | 'full';
@@ -0,0 +1,2 @@
1
+ import { ModalBodyProps } from '@chakra-ui/react';
2
+ export declare const ModalBody: ({ children, ...rest }: ModalBodyProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { ButtonProps } from '../../Forms';
2
+ export declare const ModalCloseButton: ({ right, left, size, ...rest }: ButtonProps) => JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { ModalFooterProps as ChakraModalFooterProps } from '@chakra-ui/react';
2
+ export interface ModalFooterProps extends ChakraModalFooterProps {
3
+ }
4
+ export declare const ModalFooter: ({ children, ...rest }: ModalFooterProps) => JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { ModalFooterProps as ChakraModalFooterProps } from '@chakra-ui/react';
2
+ export interface ModalFooterButtonProps extends ChakraModalFooterProps {
3
+ submitText?: string;
4
+ isLoading?: boolean;
5
+ isDestructive?: boolean;
6
+ onSubmit?: () => void;
7
+ allowCancel?: boolean;
8
+ onCancel?: () => void;
9
+ }
10
+ export declare const ModalFooterButtons: ({ submitText, isLoading, isDestructive, children, onSubmit, allowCancel, onCancel, ...rest }: ModalFooterButtonProps) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { ModalHeaderProps as ChakraModalHeaderProps } from '@chakra-ui/react';
2
+ import { HeadingSize } from '../../Typography';
3
+ export interface ModalHeaderProps extends ChakraModalHeaderProps {
4
+ size?: HeadingSize;
5
+ }
6
+ export declare const ModalHeader: ({ size, children, ...rest }: ModalHeaderProps) => JSX.Element;
@@ -1,3 +1,4 @@
1
1
  export * from './Drawer';
2
2
  export * from './Tooltip';
3
3
  export * from './Menu';
4
+ export * from './Modal';
@@ -0,0 +1 @@
1
+ export * from './withDarkMode';
@@ -0,0 +1,2 @@
1
+ import { ReactNode } from 'react';
2
+ export declare const withDarkMode: (children: ReactNode, darkMode: boolean) => JSX.Element;
@@ -1 +1,2 @@
1
1
  export * from './useTheme';
2
+ export * from './useDisclosure';
@@ -0,0 +1 @@
1
+ export { useDisclosure } from '@chakra-ui/react';
package/build/index.js CHANGED
@@ -115,7 +115,7 @@ var Tag = function (_a) {
115
115
  };
116
116
 
117
117
  var blur = {
118
- none: 0,
118
+ none: '0',
119
119
  sm: '4px',
120
120
  base: '8px',
121
121
  md: '12px',
@@ -6582,6 +6582,68 @@ var BetaMenu = function (_a) {
6582
6582
  React__default["default"].createElement(MenuList, __assign({}, listConfig, { menuItems: menuItems })))));
6583
6583
  };
6584
6584
 
6585
+ var withDarkMode$1 = function (children, darkMode) {
6586
+ return darkMode ? React__default["default"].createElement(react.DarkMode, null, children) : React__default["default"].createElement(React__default["default"].Fragment, null, children);
6587
+ };
6588
+
6589
+ var Modal = function (_a) {
6590
+ var children = _a.children, isOpen = _a.isOpen, onClose = _a.onClose, _b = _a.isCentered, isCentered = _b === void 0 ? true : _b; _a.responsiveModalSizes; var _c = _a.allowEscape, allowEscape = _c === void 0 ? true : _c, _d = _a.useFullScreenMobile, useFullScreenMobile = _d === void 0 ? true : _d, initialFocusRef = _a.initialFocusRef, scrollBehavior = _a.scrollBehavior, darkMode = _a.darkMode, _e = _a.size, size = _e === void 0 ? 'xl' : _e, rest = __rest(_a, ["children", "isOpen", "onClose", "isCentered", "responsiveModalSizes", "allowEscape", "useFullScreenMobile", "initialFocusRef", "scrollBehavior", "darkMode", "size"]);
6591
+ var _f = useTheme(), colors = _f.colors, radii = _f.radii;
6592
+ var adaptiveBackgroundColor = useAdaptiveColor(colors.background);
6593
+ var backgroundColor = !darkMode ? adaptiveBackgroundColor : colors.background.dark;
6594
+ // Responsive values for full screen modals on phones.
6595
+ var fullScreenMobileSize = react.useBreakpointValue({ base: 'full', md: size });
6596
+ var fullScreenMobileBorderRadius = react.useBreakpointValue({ base: 0, md: radii.xl });
6597
+ var fullScreenMobileContentMargin = react.useBreakpointValue({ base: 0, md: 16 });
6598
+ var Modal = (React__default["default"].createElement(react.Modal, __assign({ closeOnEsc: allowEscape, closeOnOverlayClick: allowEscape, autoFocus: !!initialFocusRef, isOpen: isOpen, onClose: onClose, scrollBehavior: scrollBehavior, isCentered: isCentered, size: useFullScreenMobile ? fullScreenMobileSize : size, motionPreset: "slideInBottom" }, rest),
6599
+ React__default["default"].createElement(react.ModalOverlay, null),
6600
+ React__default["default"].createElement(react.ModalContent, { backgroundColor: backgroundColor, m: useFullScreenMobile ? fullScreenMobileContentMargin : 16, borderRadius: useFullScreenMobile ? fullScreenMobileBorderRadius : radii.xl }, children)));
6601
+ return withDarkMode$1(Modal, !!darkMode);
6602
+ };
6603
+
6604
+ var modal_component = /*#__PURE__*/Object.freeze({
6605
+ __proto__: null,
6606
+ Modal: Modal
6607
+ });
6608
+
6609
+ var ModalHeader = function (_a) {
6610
+ var _b = _a.size, size = _b === void 0 ? 'md' : _b, children = _a.children, rest = __rest(_a, ["size", "children"]);
6611
+ return (React__default["default"].createElement(react.ModalHeader, __assign({ px: 6, pt: 6, pb: 2 }, rest),
6612
+ React__default["default"].createElement(Heading, { size: size }, children)));
6613
+ };
6614
+
6615
+ var ModalCloseButton = function (_a) {
6616
+ var _b = _a.right, right = _b === void 0 ? 2 : _b, _c = _a.left, left = _c === void 0 ? 2 : _c, _d = _a.size, size = _d === void 0 ? 'md' : _d, rest = __rest(_a, ["right", "left", "size"]);
6617
+ var onClose = react.useModalContext().onClose;
6618
+ return (React__default["default"].createElement(Button, __assign({ variant: "ghostNeutral", onClick: onClose, iconName: "close", position: "absolute", right: right, top: left, size: size }, rest)));
6619
+ };
6620
+
6621
+ var ModalBody = function (_a) {
6622
+ var children = _a.children, rest = __rest(_a, ["children"]);
6623
+ return (React__default["default"].createElement(react.ModalBody, __assign({ py: 1 }, rest), children));
6624
+ };
6625
+
6626
+ var ModalFooter = function (_a) {
6627
+ var children = _a.children, rest = __rest(_a, ["children"]);
6628
+ return (React__default["default"].createElement(react.ModalFooter, __assign({ pb: 6 }, rest), children));
6629
+ };
6630
+
6631
+ var ModalFooterButtons = function (_a) {
6632
+ var _b = _a.submitText, submitText = _b === void 0 ? 'Submit' : _b, isLoading = _a.isLoading, isDestructive = _a.isDestructive; _a.children; var onSubmit = _a.onSubmit, _c = _a.allowCancel, allowCancel = _c === void 0 ? true : _c, onCancel = _a.onCancel, rest = __rest(_a, ["submitText", "isLoading", "isDestructive", "children", "onSubmit", "allowCancel", "onCancel"]);
6633
+ var onClose = react.useModalContext().onClose;
6634
+ var handleCancel = function () {
6635
+ if (onCancel) {
6636
+ onCancel();
6637
+ }
6638
+ onClose();
6639
+ };
6640
+ return (React__default["default"].createElement(react.ModalFooter, __assign({}, rest, { pb: 6 }),
6641
+ React__default["default"].createElement(react.Flex, { w: "100%" },
6642
+ allowCancel && (React__default["default"].createElement(Button, { variant: "tertiary", onClick: handleCancel }, "Cancel")),
6643
+ React__default["default"].createElement(react.Spacer, null),
6644
+ React__default["default"].createElement(Button, { onClick: onSubmit, isLoading: isLoading, variant: isDestructive ? 'primaryDestructive' : 'primary' }, submitText))));
6645
+ };
6646
+
6585
6647
  // @ts-ignore
6586
6648
  var theme = react.extendTheme({
6587
6649
  styles: {
@@ -9400,6 +9462,10 @@ Object.defineProperty(exports, 'WrapItem', {
9400
9462
  enumerable: true,
9401
9463
  get: function () { return react.WrapItem; }
9402
9464
  });
9465
+ Object.defineProperty(exports, 'useDisclosure', {
9466
+ enumerable: true,
9467
+ get: function () { return react.useDisclosure; }
9468
+ });
9403
9469
  Object.defineProperty(exports, 'useRadioGroup', {
9404
9470
  enumerable: true,
9405
9471
  get: function () { return react.useRadioGroup; }
@@ -9412,6 +9478,7 @@ exports.Avatar = Avatar;
9412
9478
  exports.AvatarConfig = AvatarConfig;
9413
9479
  exports.AvatarGroup = AvatarGroup;
9414
9480
  exports.BetaMenu = BetaMenu;
9481
+ exports.BetaModal = modal_component;
9415
9482
  exports.Button = Button;
9416
9483
  exports.ButtonSizeConfig = ButtonSizeConfig;
9417
9484
  exports.ButtonVariantConfig = ButtonVariantConfig;
@@ -9424,6 +9491,11 @@ exports.Logo = Logo;
9424
9491
  exports.MenuConfig = MenuConfig;
9425
9492
  exports.MenuContext = MenuContext;
9426
9493
  exports.MenuItemConfig = MenuItemConfig;
9494
+ exports.ModalBody = ModalBody;
9495
+ exports.ModalCloseButton = ModalCloseButton;
9496
+ exports.ModalFooter = ModalFooter;
9497
+ exports.ModalFooterButtons = ModalFooterButtons;
9498
+ exports.ModalHeader = ModalHeader;
9427
9499
  exports.NotificationCounter = NotificationCounter;
9428
9500
  exports.Radio = Radio;
9429
9501
  exports.RadioConfig = RadioConfig;