@nextui-org/react 1.0.1-alpha.50 → 1.0.1-alpha.54

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 (158) hide show
  1. package/cjs/avatar/avatar-group.js +9 -4
  2. package/cjs/avatar/avatar.d.ts +3 -1
  3. package/cjs/avatar/avatar.js +20 -30
  4. package/cjs/backdrop/index.d.ts +4 -1
  5. package/cjs/backdrop/index.js +15 -8
  6. package/cjs/button/button-group.d.ts +1 -1
  7. package/cjs/button/button.js +10 -18
  8. package/cjs/card/card-body.d.ts +35 -0
  9. package/cjs/card/card-body.js +73 -0
  10. package/cjs/card/card-context.d.ts +8 -0
  11. package/cjs/card/card-context.js +20 -0
  12. package/cjs/card/card-footer.d.ts +25 -4
  13. package/cjs/card/card-footer.js +56 -8
  14. package/cjs/card/card-header.d.ts +23 -0
  15. package/cjs/card/card-header.js +54 -0
  16. package/cjs/card/card.d.ts +25 -12
  17. package/cjs/card/card.js +99 -36
  18. package/cjs/card/index.js +8 -4
  19. package/cjs/card/styles.d.ts +7 -8
  20. package/cjs/card/styles.js +30 -60
  21. package/cjs/collapse/collapse-context.d.ts +9 -0
  22. package/cjs/collapse/collapse-context.js +20 -0
  23. package/cjs/collapse/collapse-group.d.ts +32 -0
  24. package/cjs/collapse/collapse-group.js +111 -0
  25. package/cjs/collapse/collapse-icon.d.ts +3 -0
  26. package/cjs/collapse/collapse-icon.js +39 -0
  27. package/cjs/collapse/collapse.d.ts +39 -0
  28. package/cjs/collapse/collapse.js +174 -0
  29. package/cjs/collapse/index.d.ts +2 -0
  30. package/cjs/collapse/index.js +15 -0
  31. package/cjs/css-baseline/css-baseline.js +3 -3
  32. package/cjs/divider/divider.d.ts +8 -9
  33. package/cjs/divider/divider.js +9 -9
  34. package/cjs/image/image.d.ts +9 -8
  35. package/cjs/image/image.js +27 -17
  36. package/cjs/index.d.ts +8 -0
  37. package/cjs/index.js +29 -2
  38. package/cjs/input/input-icon-clear.js +1 -1
  39. package/cjs/input/input-password.d.ts +1 -1
  40. package/cjs/modal/modal-close-button.js +1 -1
  41. package/cjs/modal/modal-wrapper.d.ts +1 -0
  42. package/cjs/modal/modal-wrapper.js +28 -15
  43. package/cjs/modal/modal.d.ts +2 -0
  44. package/cjs/modal/modal.js +4 -0
  45. package/cjs/snippet/snippet.js +1 -1
  46. package/cjs/text/child.d.ts +4 -5
  47. package/cjs/text/child.js +11 -7
  48. package/cjs/text/text.d.ts +8 -5
  49. package/cjs/text/text.js +10 -7
  50. package/cjs/theme/dark.js +2 -1
  51. package/cjs/theme/default.js +2 -1
  52. package/cjs/tooltip/placement.d.ts +29 -0
  53. package/cjs/tooltip/{position.js → placement.js} +31 -31
  54. package/cjs/tooltip/tooltip-content.d.ts +3 -3
  55. package/cjs/tooltip/tooltip-content.js +12 -12
  56. package/cjs/tooltip/tooltip.d.ts +9 -9
  57. package/cjs/tooltip/tooltip.js +8 -8
  58. package/cjs/use-drip/index.d.ts +2 -0
  59. package/cjs/use-drip/index.js +12 -0
  60. package/cjs/use-drip/use-drip.d.ts +9 -0
  61. package/cjs/use-drip/use-drip.js +38 -0
  62. package/cjs/{shared → utils}/clear-icon.d.ts +0 -0
  63. package/cjs/{shared → utils}/clear-icon.js +1 -1
  64. package/cjs/utils/collections.d.ts +1 -0
  65. package/cjs/utils/collections.js +26 -2
  66. package/cjs/utils/css-transition.js +1 -1
  67. package/cjs/{button/button.drip.d.ts → utils/drip.d.ts} +6 -2
  68. package/cjs/{button/button.drip.js → utils/drip.js} +13 -10
  69. package/cjs/utils/expand.d.ts +18 -0
  70. package/cjs/utils/expand.js +97 -0
  71. package/cjs/utils/icons.js +60 -2
  72. package/cjs/utils/prop-types.d.ts +9 -2
  73. package/cjs/utils/prop-types.js +22 -2
  74. package/collapse/package.json +6 -0
  75. package/esm/avatar/avatar-group.js +8 -4
  76. package/esm/avatar/avatar.d.ts +3 -1
  77. package/esm/avatar/avatar.js +20 -30
  78. package/esm/backdrop/index.d.ts +4 -1
  79. package/esm/backdrop/index.js +17 -9
  80. package/esm/button/button-group.d.ts +1 -1
  81. package/esm/button/button.js +10 -19
  82. package/esm/card/card-body.d.ts +35 -0
  83. package/esm/card/card-body.js +52 -0
  84. package/esm/card/card-context.d.ts +8 -0
  85. package/esm/card/card-context.js +6 -0
  86. package/esm/card/card-footer.d.ts +25 -4
  87. package/esm/card/card-footer.js +48 -8
  88. package/esm/card/card-header.d.ts +23 -0
  89. package/esm/card/card-header.js +38 -0
  90. package/esm/card/card.d.ts +25 -12
  91. package/esm/card/card.js +95 -37
  92. package/esm/card/index.js +6 -4
  93. package/esm/card/styles.d.ts +7 -8
  94. package/esm/card/styles.js +25 -59
  95. package/esm/collapse/collapse-context.d.ts +9 -0
  96. package/esm/collapse/collapse-context.js +6 -0
  97. package/esm/collapse/collapse-group.d.ts +32 -0
  98. package/esm/collapse/collapse-group.js +87 -0
  99. package/esm/collapse/collapse-icon.d.ts +3 -0
  100. package/esm/collapse/collapse-icon.js +27 -0
  101. package/esm/collapse/collapse.d.ts +39 -0
  102. package/esm/collapse/collapse.js +150 -0
  103. package/esm/collapse/index.d.ts +2 -0
  104. package/esm/collapse/index.js +4 -0
  105. package/esm/css-baseline/css-baseline.js +3 -3
  106. package/esm/divider/divider.d.ts +8 -9
  107. package/esm/divider/divider.js +9 -9
  108. package/esm/image/image.d.ts +9 -8
  109. package/esm/image/image.js +27 -18
  110. package/esm/index.d.ts +8 -0
  111. package/esm/index.js +6 -1
  112. package/esm/input/input-icon-clear.js +1 -1
  113. package/esm/input/input-password.d.ts +1 -1
  114. package/esm/modal/modal-close-button.js +1 -1
  115. package/esm/modal/modal-wrapper.d.ts +1 -0
  116. package/esm/modal/modal-wrapper.js +30 -16
  117. package/esm/modal/modal.d.ts +2 -0
  118. package/esm/modal/modal.js +4 -0
  119. package/esm/snippet/snippet.js +1 -1
  120. package/esm/text/child.d.ts +4 -5
  121. package/esm/text/child.js +10 -7
  122. package/esm/text/text.d.ts +8 -5
  123. package/esm/text/text.js +10 -7
  124. package/esm/theme/dark.js +2 -1
  125. package/esm/theme/default.js +2 -1
  126. package/esm/tooltip/placement.d.ts +29 -0
  127. package/esm/tooltip/{position.js → placement.js} +27 -27
  128. package/esm/tooltip/tooltip-content.d.ts +3 -3
  129. package/esm/tooltip/tooltip-content.js +12 -12
  130. package/esm/tooltip/tooltip.d.ts +9 -9
  131. package/esm/tooltip/tooltip.js +8 -8
  132. package/esm/use-drip/index.d.ts +2 -0
  133. package/esm/use-drip/index.js +2 -0
  134. package/esm/use-drip/use-drip.d.ts +9 -0
  135. package/esm/use-drip/use-drip.js +31 -0
  136. package/esm/{shared → utils}/clear-icon.d.ts +0 -0
  137. package/esm/{shared → utils}/clear-icon.js +1 -1
  138. package/esm/utils/collections.d.ts +1 -0
  139. package/esm/utils/collections.js +21 -0
  140. package/esm/utils/css-transition.js +1 -1
  141. package/esm/{button/button.drip.d.ts → utils/drip.d.ts} +6 -2
  142. package/esm/{button/button.drip.js → utils/drip.js} +13 -10
  143. package/esm/utils/expand.d.ts +18 -0
  144. package/esm/utils/expand.js +78 -0
  145. package/esm/utils/icons.js +52 -0
  146. package/esm/utils/prop-types.d.ts +9 -2
  147. package/esm/utils/prop-types.js +19 -1
  148. package/package.json +1 -1
  149. package/umd/nextui.js +1497 -806
  150. package/umd/nextui.min.js +1 -1
  151. package/use-drip/package.json +6 -0
  152. package/cjs/card/card-content.d.ts +0 -13
  153. package/cjs/card/card-content.js +0 -43
  154. package/cjs/tooltip/position.d.ts +0 -29
  155. package/esm/card/card-content.d.ts +0 -13
  156. package/esm/card/card-content.js +0 -28
  157. package/esm/tooltip/position.d.ts +0 -29
  158. package/shared/package.json +0 -6
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { Justify } from '../utils/prop-types';
3
+ interface Props {
4
+ autoMargin?: boolean;
5
+ className?: string;
6
+ justify?: Justify;
7
+ noPadding?: boolean;
8
+ }
9
+ declare const defaultProps: {
10
+ autoMargin: boolean;
11
+ justify: "center" | "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly";
12
+ noPadding: boolean;
13
+ className: string;
14
+ };
15
+ declare type NativeAttrs = Omit<React.HTMLAttributes<unknown>, keyof Props>;
16
+ export declare type CardHeaderProps = Props & typeof defaultProps & NativeAttrs;
17
+ declare const _default: React.ComponentType<Partial<{
18
+ autoMargin: boolean;
19
+ justify: "center" | "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly";
20
+ noPadding: boolean;
21
+ className: string;
22
+ }> & Omit<CardHeaderProps, "className" | "justify" | "autoMargin" | "noPadding">>;
23
+ export default _default;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+
8
+ var _style = _interopRequireDefault(require("styled-jsx/style"));
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _useTheme = _interopRequireDefault(require("../use-theme"));
13
+
14
+ var _withDefaults = _interopRequireDefault(require("../utils/with-defaults"));
15
+
16
+ var _clsx = _interopRequireDefault(require("../utils/clsx"));
17
+
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+
20
+ const defaultProps = {
21
+ autoMargin: false,
22
+ justify: 'flex-start',
23
+ noPadding: false,
24
+ className: ''
25
+ };
26
+
27
+ const CardHeader = ({
28
+ children,
29
+ className,
30
+ autoMargin,
31
+ justify,
32
+ noPadding,
33
+ ...props
34
+ }) => {
35
+ const theme = (0, _useTheme.default)();
36
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { ...props,
37
+ className: _style.default.dynamic([["1342321190", [justify, theme.layout.gapHalf, theme.layout.gapHalf]]]) + " " + (props && props.className != null && props.className || (0, _clsx.default)('card-header', {
38
+ 'auto-margin': autoMargin,
39
+ 'no-padding': noPadding
40
+ }, className) || ""),
41
+ children: [children, /*#__PURE__*/(0, _jsxRuntime.jsx)(_style.default, {
42
+ id: "1342321190",
43
+ dynamic: [justify, theme.layout.gapHalf, theme.layout.gapHalf],
44
+ children: `.card-header.__jsx-style-dynamic-selector{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;z-index:1;-webkit-box-pack:${justify};-webkit-justify-content:${justify};-ms-flex-pack:${justify};justify-content:${justify};-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;color:inherit;font-size:0.875rem;padding:${theme.layout.gapHalf} calc(${theme.layout.gapHalf} + 0.25rem);}.no-padding.__jsx-style-dynamic-selector{padding:0;}.auto-margin.__jsx-style-dynamic-selector>*:first-child{margin-top:0;}.auto-margin.__jsx-style-dynamic-selector>*:last-child{margin-bottom:0;}`
45
+ })]
46
+ });
47
+ };
48
+
49
+ const MemoCardHeader = /*#__PURE__*/_react.default.memo(CardHeader);
50
+
51
+ var _default = (0, _withDefaults.default)(MemoCardHeader, defaultProps);
52
+
53
+ exports.default = _default;
54
+ module.exports = exports.default;
@@ -1,33 +1,46 @@
1
- import React from 'react';
2
- import { CardColors } from '../utils/prop-types';
1
+ import React, { PropsWithoutRef, RefAttributes } from 'react';
2
+ import { NormalColors, NormalWeights, SimpleColors } from '../utils/prop-types';
3
+ import CardHeader from './card-header';
3
4
  import CardFooter from './card-footer';
4
- import CardContent from './card-content';
5
+ import CardBody from './card-body';
6
+ import Image from '../image';
5
7
  interface Props {
6
- hoverable?: boolean;
7
8
  shadow?: boolean;
8
9
  bordered?: boolean;
9
10
  animated?: boolean;
11
+ hoverable?: boolean;
12
+ clickable?: boolean;
13
+ cover?: boolean;
10
14
  className?: string;
11
15
  width?: string;
12
- color?: CardColors;
16
+ height?: string;
17
+ color?: NormalColors | string;
18
+ textColor?: SimpleColors | string;
19
+ borderWeight?: NormalWeights;
20
+ onClick?: React.MouseEventHandler<HTMLDivElement>;
13
21
  }
14
22
  declare const defaultProps: {
15
- color: "default" | "primary" | "secondary" | "success" | "warning" | "error" | "gradient" | "dark" | "lite" | "alert" | "purple" | "violet" | "cyan";
23
+ color: string;
24
+ textColor: string;
16
25
  bordered: boolean;
17
- hoverable: boolean;
26
+ cover: boolean;
18
27
  animated: boolean;
28
+ clickable: boolean;
29
+ hoverable: boolean;
19
30
  shadow: boolean;
31
+ borderWeight: "light" | "normal" | "bold";
20
32
  width: string;
33
+ height: string;
21
34
  className: string;
22
35
  };
23
36
  declare type NativeAttrs = Omit<React.HTMLAttributes<unknown>, keyof Props>;
24
37
  export declare type CardProps = Props & typeof defaultProps & NativeAttrs;
25
- declare type MemoCardComponent<P = {}> = React.NamedExoticComponent<P> & {
38
+ declare type CardComponent<T, P = {}> = React.ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>> & {
39
+ Header: typeof CardHeader;
40
+ Body: typeof CardBody;
26
41
  Footer: typeof CardFooter;
27
- Actions: typeof CardFooter;
28
- Content: typeof CardContent;
29
- Body: typeof CardContent;
42
+ Image: typeof Image;
30
43
  };
31
44
  declare type ComponentProps = Partial<typeof defaultProps> & Omit<Props, keyof typeof defaultProps> & NativeAttrs;
32
- declare const _default: MemoCardComponent<ComponentProps>;
45
+ declare const _default: CardComponent<HTMLDivElement, ComponentProps>;
33
46
  export default _default;
package/cjs/card/card.js CHANGED
@@ -13,14 +13,28 @@ var _useTheme = _interopRequireDefault(require("../use-theme"));
13
13
 
14
14
  var _styles = require("./styles");
15
15
 
16
+ var _cardHeader = _interopRequireDefault(require("./card-header"));
17
+
16
18
  var _cardFooter = _interopRequireDefault(require("./card-footer"));
17
19
 
18
- var _cardContent = _interopRequireDefault(require("./card-content"));
20
+ var _cardBody = _interopRequireDefault(require("./card-body"));
19
21
 
20
22
  var _image = _interopRequireDefault(require("../image"));
21
23
 
24
+ var _clsx = _interopRequireDefault(require("../utils/clsx"));
25
+
26
+ var _drip = _interopRequireDefault(require("../utils/drip"));
27
+
28
+ var _useDrip = _interopRequireDefault(require("../use-drip"));
29
+
30
+ var _assertion = require("../utils/assertion");
31
+
22
32
  var _collections = require("../utils/collections");
23
33
 
34
+ var _dimensions = require("../utils/dimensions");
35
+
36
+ var _cardContext = require("./card-context");
37
+
24
38
  var _jsxRuntime = require("react/jsx-runtime");
25
39
 
26
40
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -29,54 +43,103 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
29
43
 
30
44
  const defaultProps = {
31
45
  color: 'default',
46
+ textColor: 'default',
32
47
  bordered: false,
48
+ cover: false,
49
+ animated: true,
50
+ clickable: false,
33
51
  hoverable: false,
34
- animated: false,
35
- shadow: false,
52
+ shadow: true,
53
+ borderWeight: 'normal',
36
54
  width: '100%',
55
+ height: 'auto',
37
56
  className: ''
38
57
  };
39
58
 
40
- const Card = ({
41
- children,
42
- hoverable,
43
- bordered,
44
- className,
45
- shadow,
46
- animated,
47
- color: cardColor,
48
- width,
49
- ...props
50
- }) => {
59
+ const Card = /*#__PURE__*/_react.default.forwardRef(({ ...cardProps
60
+ }, ref) => {
61
+ const {
62
+ children,
63
+ bordered,
64
+ cover,
65
+ className,
66
+ shadow,
67
+ animated,
68
+ clickable,
69
+ hoverable,
70
+ color: cardColor,
71
+ borderWeight: borderWeightProp,
72
+ width,
73
+ height,
74
+ textColor,
75
+ onClick,
76
+ ...props
77
+ } = cardProps;
51
78
  const theme = (0, _useTheme.default)();
52
- const hoverShadow = (0, _react.useMemo)(() => {
53
- if (shadow) return theme.expressiveness.shadowMedium;
54
- return hoverable ? theme.expressiveness.shadowSmall : 'none';
55
- }, [hoverable, shadow, theme.expressiveness]);
56
79
  const {
57
80
  color,
58
81
  bgColor,
59
- border
60
- } = (0, _react.useMemo)(() => (0, _styles.getStyles)(cardColor, theme.palette, shadow, bordered), [cardColor, theme.palette, shadow, bordered]);
61
- const [withoutFooterChildren, footerChildren] = (0, _collections.pickChild)(children, _cardFooter.default);
82
+ dripColor,
83
+ borderColor
84
+ } = (0, _react.useMemo)(() => (0, _styles.getStyles)(cardColor, textColor, shadow, bordered, theme), [cardColor, theme, textColor, shadow, bordered]);
85
+ const cardRef = (0, _react.useRef)(null);
86
+ (0, _react.useImperativeHandle)(ref, () => cardRef.current);
87
+ const {
88
+ onClick: onDripClickHandler,
89
+ ...dripBindings
90
+ } = (0, _useDrip.default)(false, cardRef);
91
+ const [withoutHeaderChildren, headerChildren] = (0, _collections.pickChild)(children, _cardHeader.default);
92
+ const [withoutFooterChildren, footerChildren] = (0, _collections.pickChild)(withoutHeaderChildren, _cardFooter.default);
62
93
  const [withoutImageChildren, imageChildren] = (0, _collections.pickChild)(withoutFooterChildren, _image.default);
63
- const hasContent = (0, _collections.hasChild)(withoutImageChildren, _cardContent.default);
64
- const background = cardColor === 'gradient' ? `background-image: ${bgColor}` : `background-color: ${bgColor}`;
65
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { ...props,
66
- className: _style.default.dynamic([["2028560375", [theme.palette.background, width, theme.layout.radius, shadow ? theme.expressiveness.shadowSmall : 'none', color, background, border == null ? void 0 : border.weight, border == null ? void 0 : border.color, hoverShadow]]]) + " " + (props && props.className != null && props.className || `card ${animated ? 'animated' : ''} ${className}`),
67
- children: [imageChildren, hasContent ? withoutImageChildren : /*#__PURE__*/(0, _jsxRuntime.jsx)(_cardContent.default, {
68
- children: withoutImageChildren
69
- }), footerChildren, /*#__PURE__*/(0, _jsxRuntime.jsx)(_style.default, {
70
- id: "2028560375",
71
- dynamic: [theme.palette.background, width, theme.layout.radius, shadow ? theme.expressiveness.shadowSmall : 'none', color, background, border == null ? void 0 : border.weight, border == null ? void 0 : border.color, hoverShadow],
72
- children: `.card.__jsx-style-dynamic-selector{background:${theme.palette.background};margin:0;padding:0;width:${width};-webkit-transition:all 0.25s ease;transition:all 0.25s ease;border-radius:${theme.layout.radius};box-shadow:${shadow ? theme.expressiveness.shadowSmall : 'none'};box-sizing:border-box;color:${color};${background};border:${border == null ? void 0 : border.weight} solid ${border == null ? void 0 : border.color};}.card.__jsx-style-dynamic-selector:hover{box-shadow:${hoverShadow};}.card.__jsx-style-dynamic-selector img{width:100%;}.card.animated.__jsx-style-dynamic-selector img{-webkit-transition:all 0.25s ease;transition:all 0.25s ease;}.card.animated.__jsx-style-dynamic-selector:hover img{-webkit-transform:scale(1.15);-ms-transform:scale(1.15);transform:scale(1.15);}.card.__jsx-style-dynamic-selector .image{border-bottom-left-radius:0;border-bottom-right-radius:0;}`
73
- })]
94
+ const hasContent = (0, _collections.hasChild)(withoutImageChildren, _cardBody.default);
95
+ const hasHeader = (0, _collections.hasChild)(children, _cardHeader.default);
96
+ const borderWeight = (0, _react.useMemo)(() => bordered ? (0, _dimensions.getNormalWeight)(borderWeightProp) : '0px', [bordered, borderWeightProp]);
97
+ const cardConfig = (0, _react.useMemo)(() => ({
98
+ background: bgColor,
99
+ noPadding: cover ? true : undefined
100
+ }), []);
101
+
102
+ const clickHandler = event => {
103
+ if (animated && cardRef.current) {
104
+ onDripClickHandler(event);
105
+ }
106
+
107
+ onClick && onClick(event);
108
+ };
109
+
110
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_cardContext.CardContext.Provider, {
111
+ value: cardConfig,
112
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
113
+ ref: cardRef,
114
+ onClick: clickHandler,
115
+ ...props,
116
+ className: _style.default.dynamic([["608496355", [bgColor, width, height, theme.layout.radius, shadow && !bordered ? theme.expressiveness.shadowMedium : 'none', color, borderWeight, borderColor, shadow ? theme.expressiveness.shadowLarge : 'none']]]) + " " + (props && props.className != null && props.className || (0, _clsx.default)('card', {
117
+ animated,
118
+ cover,
119
+ clickable,
120
+ hoverable
121
+ }, className) || ""),
122
+ children: [hasHeader ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
123
+ children: [headerChildren, imageChildren]
124
+ }) : imageChildren, hasContent ? withoutImageChildren : !cover ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_cardBody.default, {
125
+ children: withoutImageChildren
126
+ }) : null, clickable && animated && /*#__PURE__*/(0, _jsxRuntime.jsx)(_drip.default, {
127
+ color: dripColor,
128
+ ...dripBindings
129
+ }), footerChildren, /*#__PURE__*/(0, _jsxRuntime.jsx)(_style.default, {
130
+ id: "608496355",
131
+ dynamic: [bgColor, width, height, theme.layout.radius, shadow && !bordered ? theme.expressiveness.shadowMedium : 'none', color, borderWeight, borderColor, shadow ? theme.expressiveness.shadowLarge : 'none'],
132
+ children: `.card.__jsx-style-dynamic-selector{margin:0;padding:0;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background:${bgColor};width:100%;max-width:${width};height:${height};border-radius:${theme.layout.radius};box-shadow:${shadow && !bordered ? theme.expressiveness.shadowMedium : 'none'};box-sizing:border-box;color:${color};border:${borderWeight} solid ${borderColor};}.card.animated.__jsx-style-dynamic-selector{-webkit-transition:all 0.25s ease;transition:all 0.25s ease;}.card.clickable.animated.__jsx-style-dynamic-selector:active{-webkit-transform:scale(0.97);-ms-transform:scale(0.97);transform:scale(0.97);}.card.hoverable.clickable.animated.__jsx-style-dynamic-selector:active{-webkit-transform:scale(0.99);-ms-transform:scale(0.99);transform:scale(0.99);}.card.clickable.__jsx-style-dynamic-selector{cursor:pointer;}.card.__jsx-style-dynamic-selector .image{width:100%;}.card.hoverable.animated.__jsx-style-dynamic-selector:hover{-webkit-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px);box-shadow:${shadow ? theme.expressiveness.shadowLarge : 'none'};}.card.cover.__jsx-style-dynamic-selector img{object-fit:cover;}.card.__jsx-style-dynamic-selector:not(.cover) .image{border-bottom-left-radius:0;border-bottom-right-radius:0;}`
133
+ })]
134
+ })
74
135
  });
75
- };
136
+ });
76
137
 
77
- Card.defaultProps = defaultProps;
78
-
79
- var _default = /*#__PURE__*/_react.default.memo(Card);
138
+ if (_assertion.__DEV__) {
139
+ Card.displayName = 'NextUI - Card';
140
+ }
80
141
 
142
+ Card.defaultProps = defaultProps;
143
+ var _default = Card;
81
144
  exports.default = _default;
82
145
  module.exports = exports.default;
package/cjs/card/index.js CHANGED
@@ -7,14 +7,18 @@ exports.default = void 0;
7
7
 
8
8
  var _card = _interopRequireDefault(require("./card"));
9
9
 
10
+ var _cardHeader = _interopRequireDefault(require("./card-header"));
11
+
10
12
  var _cardFooter = _interopRequireDefault(require("./card-footer"));
11
13
 
12
- var _cardContent = _interopRequireDefault(require("./card-content"));
14
+ var _cardBody = _interopRequireDefault(require("./card-body"));
15
+
16
+ var _image = _interopRequireDefault(require("../image"));
13
17
 
18
+ _card.default.Header = _cardHeader.default;
19
+ _card.default.Body = _cardBody.default;
14
20
  _card.default.Footer = _cardFooter.default;
15
- _card.default.Actions = _cardFooter.default;
16
- _card.default.Content = _cardContent.default;
17
- _card.default.Body = _cardContent.default;
21
+ _card.default.Image = _image.default;
18
22
  var _default = _card.default;
19
23
  exports.default = _default;
20
24
  module.exports = exports.default;
@@ -1,12 +1,11 @@
1
- import { CardColors } from '../utils/prop-types';
1
+ import { NextUIThemes } from './../theme/types';
2
+ import { NormalColors, SimpleColors } from '../utils/prop-types';
2
3
  import { NextUIThemesPalette } from '../theme';
3
- export interface CardBorder {
4
- weight?: string;
5
- color?: string;
6
- }
7
4
  export declare type CardStyles = {
8
- color: string;
9
5
  bgColor: string;
10
- border?: CardBorder;
6
+ color: string;
7
+ borderColor: string;
8
+ dripColor: string;
11
9
  };
12
- export declare const getStyles: (type: CardColors, palette: NextUIThemesPalette, shadow?: boolean | undefined, bordered?: boolean | undefined) => CardStyles;
10
+ export declare const getDripColor: (palette: NextUIThemesPalette, color: NormalColors | string, bordered: boolean) => string;
11
+ export declare const getStyles: (color: NormalColors | string, textColor: SimpleColors | string, shadow: boolean, bordered: boolean, theme: NextUIThemes) => CardStyles;
@@ -1,69 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.getStyles = void 0;
4
+ exports.getStyles = exports.getDripColor = void 0;
5
5
 
6
- const getStyles = (type, palette, shadow, bordered) => {
6
+ var _color = require("./../utils/color");
7
+
8
+ const getDripColor = (palette, color, bordered) => {
7
9
  const colors = {
8
- default: {
9
- color: palette.foreground,
10
- bgColor: palette.accents_1
11
- },
12
- primary: {
13
- color: palette.background,
14
- bgColor: palette.primary
15
- },
16
- dark: {
17
- color: palette.background,
18
- bgColor: palette.foreground
19
- },
20
- secondary: {
21
- color: palette.background,
22
- bgColor: palette.secondary
23
- },
24
- success: {
25
- color: palette.background,
26
- bgColor: palette.success
27
- },
28
- warning: {
29
- color: palette.background,
30
- bgColor: palette.warning
31
- },
32
- error: {
33
- color: palette.background,
34
- bgColor: palette.error
35
- },
36
- lite: {
37
- color: palette.foreground,
38
- bgColor: palette.background
39
- },
40
- gradient: {
41
- color: palette.white,
42
- bgColor: palette.gradient
43
- },
44
- alert: {
45
- color: palette.white,
46
- bgColor: palette.alert
47
- },
48
- purple: {
49
- color: palette.white,
50
- bgColor: palette.purple
51
- },
52
- violet: {
53
- color: palette.white,
54
- bgColor: palette.violet
55
- },
56
- cyan: {
57
- color: palette.text,
58
- bgColor: palette.cyan
59
- }
10
+ default: palette.accents_2,
11
+ primary: palette.primary,
12
+ secondary: palette.secondary,
13
+ success: palette.success,
14
+ warning: palette.warning,
15
+ error: palette.error,
16
+ gradient: (0, _color.hexFromString)(palette.gradient, palette.primary, true)
60
17
  };
61
- const showBorder = bordered && !shadow;
62
- return { ...colors[type],
63
- border: {
64
- weight: showBorder ? '2px' : '0px',
65
- color: showBorder ? palette.border : 'transparent'
66
- }
18
+ const baseColor = color === 'default' ? palette.primary : colors[color || 'default'] || (0, _color.getNormalColor)(color, palette);
19
+ const selectedColor = bordered ? baseColor : palette.accents_6;
20
+ if (selectedColor) return (0, _color.addColorAlpha)(selectedColor, 0.25);
21
+ return palette.accents_2;
22
+ };
23
+
24
+ exports.getDripColor = getDripColor;
25
+
26
+ const getStyles = (color, textColor, shadow, bordered, theme) => {
27
+ const palette = theme.palette;
28
+ const isDark = theme.type === 'dark';
29
+ const normalColor = (0, _color.getNormalColor)(color, palette, isDark ? palette.accents_1 : palette.background);
30
+ const normalTextColor = (0, _color.getNormalColor)(textColor, palette, palette.text);
31
+ const dripColor = getDripColor(palette, color, bordered);
32
+ return {
33
+ bgColor: color === 'default' && !shadow && !bordered ? palette.accents_1 : normalColor,
34
+ color: normalTextColor,
35
+ borderColor: color === 'default' ? palette.border : normalColor,
36
+ dripColor
67
37
  };
68
38
  };
69
39
 
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export interface CollapseConfig {
3
+ values: Array<number>;
4
+ divider?: boolean;
5
+ animated?: boolean;
6
+ updateValues?: Function;
7
+ }
8
+ export declare const CollapseContext: React.Context<CollapseConfig>;
9
+ export declare const useCollapseContext: () => CollapseConfig;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.useCollapseContext = exports.CollapseContext = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ const defaultContext = {
11
+ values: []
12
+ };
13
+
14
+ const CollapseContext = /*#__PURE__*/_react.default.createContext(defaultContext);
15
+
16
+ exports.CollapseContext = CollapseContext;
17
+
18
+ const useCollapseContext = () => _react.default.useContext(CollapseContext);
19
+
20
+ exports.useCollapseContext = useCollapseContext;
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { NormalWeights } from '../utils/prop-types';
3
+ interface Props {
4
+ accordion?: boolean;
5
+ className?: string;
6
+ animated?: boolean;
7
+ bordered?: boolean;
8
+ splitted?: boolean;
9
+ shadow?: boolean;
10
+ divider?: boolean;
11
+ borderWeight?: NormalWeights;
12
+ onChange?: (index?: number | undefined, value?: boolean) => void;
13
+ }
14
+ declare const defaultProps: {
15
+ accordion: boolean;
16
+ shadow: boolean;
17
+ bordered: boolean;
18
+ splitted: boolean;
19
+ borderWeight: "light" | "normal" | "bold";
20
+ className: string;
21
+ };
22
+ declare type NativeAttrs = Omit<React.HTMLAttributes<unknown>, keyof Props>;
23
+ export declare type CollapseGroupProps = Props & typeof defaultProps & NativeAttrs;
24
+ declare const _default: React.ComponentType<Partial<{
25
+ accordion: boolean;
26
+ shadow: boolean;
27
+ bordered: boolean;
28
+ splitted: boolean;
29
+ borderWeight: "light" | "normal" | "bold";
30
+ className: string;
31
+ }> & Omit<React.PropsWithChildren<CollapseGroupProps>, "className" | "bordered" | "borderWeight" | "shadow" | "accordion" | "splitted">>;
32
+ export default _default;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+
8
+ var _style = _interopRequireDefault(require("styled-jsx/style"));
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _withDefaults = _interopRequireDefault(require("../utils/with-defaults"));
13
+
14
+ var _useTheme = _interopRequireDefault(require("../use-theme"));
15
+
16
+ var _collapseContext = require("./collapse-context");
17
+
18
+ var _useCurrentState = _interopRequireDefault(require("../use-current-state"));
19
+
20
+ var _collections = require("../utils/collections");
21
+
22
+ var _dimensions = require("../utils/dimensions");
23
+
24
+ var _clsx = _interopRequireDefault(require("../utils/clsx"));
25
+
26
+ var _collapse = _interopRequireDefault(require("./collapse"));
27
+
28
+ var _jsxRuntime = require("react/jsx-runtime");
29
+
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ const defaultProps = {
35
+ accordion: true,
36
+ shadow: false,
37
+ bordered: false,
38
+ splitted: false,
39
+ borderWeight: 'light',
40
+ className: ''
41
+ };
42
+
43
+ const CollapseGroup = ({
44
+ children,
45
+ accordion,
46
+ shadow,
47
+ className,
48
+ animated,
49
+ bordered,
50
+ splitted,
51
+ divider,
52
+ borderWeight: borderWeightProp,
53
+ onChange,
54
+ ...props
55
+ }) => {
56
+ const theme = (0, _useTheme.default)();
57
+ const [state, setState, stateRef] = (0, _useCurrentState.default)([]);
58
+
59
+ const updateValues = (currentIndex, nextState) => {
60
+ const hasChild = stateRef.current.find(val => val === currentIndex);
61
+ onChange && onChange(currentIndex, nextState);
62
+
63
+ if (accordion) {
64
+ if (nextState) return setState([currentIndex]);
65
+ return setState([]);
66
+ }
67
+
68
+ if (nextState) {
69
+ // In a few cases, the user will set Collapse Component state manually.
70
+ // If the user incorrectly set the state, Group component should ignore it.
71
+
72
+ /* istanbul ignore if */
73
+ if (hasChild) return;
74
+ return setState([...stateRef.current, currentIndex]);
75
+ }
76
+
77
+ setState(stateRef.current.filter(item => item !== currentIndex));
78
+ };
79
+
80
+ const bgColor = (0, _react.useMemo)(() => theme.type === 'dark' ? theme.palette.accents_1 : theme.palette.background, [theme.type]);
81
+ const initialValue = (0, _react.useMemo)(() => ({
82
+ values: state,
83
+ updateValues,
84
+ divider,
85
+ animated
86
+ }), [state.join(',')]);
87
+ const hasIndexChildren = (0, _react.useMemo)(() => (0, _collections.setChildrenIndex)(children, [_collapse.default]), [children]);
88
+ const borderWeight = (0, _react.useMemo)(() => {
89
+ return bordered ? (0, _dimensions.getNormalWeight)(borderWeightProp) : '0px';
90
+ }, [bordered, borderWeightProp]);
91
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_collapseContext.CollapseContext.Provider, {
92
+ value: initialValue,
93
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { ...props,
94
+ className: _style.default.dynamic([["2642035014", [theme.layout.gapHalf, theme.layout.radius, theme.layout.gap, bgColor, theme.expressiveness.shadowMedium, bgColor, theme.expressiveness.shadowMedium, theme.layout.gapHalf, borderWeight, theme.palette.border]]]) + " " + (props && props.className != null && props.className || (0, _clsx.default)('collapse-group', {
95
+ shadow,
96
+ bordered,
97
+ splitted
98
+ }, className) || ""),
99
+ children: [hasIndexChildren, /*#__PURE__*/(0, _jsxRuntime.jsx)(_style.default, {
100
+ id: "2642035014",
101
+ dynamic: [theme.layout.gapHalf, theme.layout.radius, theme.layout.gap, bgColor, theme.expressiveness.shadowMedium, bgColor, theme.expressiveness.shadowMedium, theme.layout.gapHalf, borderWeight, theme.palette.border],
102
+ children: `.collapse-group.__jsx-style-dynamic-selector{width:auto;padding:0 ${theme.layout.gapHalf};}.collapse-group.__jsx-style-dynamic-selector>div + div{border-top:none;}.shadow.__jsx-style-dynamic-selector,.bordered.__jsx-style-dynamic-selector,.collapse-group.splitted.__jsx-style-dynamic-selector .collapse{border-radius:${theme.layout.radius};padding:0 ${theme.layout.gap};}.shadow.__jsx-style-dynamic-selector{border:none;background:${bgColor};box-shadow:${theme.expressiveness.shadowMedium};}.collapse-group.splitted.__jsx-style-dynamic-selector .collapse{border:none;background:${bgColor};box-shadow:${theme.expressiveness.shadowMedium};margin:${theme.layout.gapHalf} 0;}.bordered.__jsx-style-dynamic-selector{border:${borderWeight} solid ${theme.palette.border};}.collapse-group.__jsx-style-dynamic-selector .collapse:last-child{border-bottom:none;}.collapse-group.__jsx-style-dynamic-selector .collapse:first-child{border-top:none;}.gradient.vertical.__jsx-style-dynamic-selector .button:not(:last-child):not(:first-child){padding-top:0 !important;}`
103
+ })]
104
+ })
105
+ });
106
+ };
107
+
108
+ var _default = (0, _withDefaults.default)(CollapseGroup, defaultProps);
109
+
110
+ exports.default = _default;
111
+ module.exports = exports.default;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const MemoCollapseIcon: React.NamedExoticComponent<object>;
3
+ export default MemoCollapseIcon;