musae 0.3.3 → 0.3.6

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/dist/components/avatar/avatar.cjs +10 -2
  2. package/dist/components/avatar/avatar.mjs +10 -2
  3. package/dist/components/button/button.cjs +11 -10
  4. package/dist/components/button/button.mjs +7 -6
  5. package/dist/components/calendar/contribution.cjs +251 -0
  6. package/dist/components/calendar/contribution.d.ts +13 -0
  7. package/dist/components/calendar/contribution.mjs +249 -0
  8. package/dist/components/calendar/index.d.ts +2 -1
  9. package/dist/components/config/provider.cjs +2 -2
  10. package/dist/components/config/provider.mjs +2 -2
  11. package/dist/components/drawer/popup.cjs +51 -17
  12. package/dist/components/drawer/popup.d.ts +1 -1
  13. package/dist/components/drawer/popup.mjs +51 -17
  14. package/dist/components/fab/floatable.d.ts +1 -1
  15. package/dist/components/icon/icons/action/delete.cjs +20 -0
  16. package/dist/components/icon/icons/action/delete.d.ts +3 -0
  17. package/dist/components/icon/icons/action/delete.mjs +18 -0
  18. package/dist/components/icon/icons/action/index.cjs +7 -1
  19. package/dist/components/icon/icons/action/index.d.ts +5 -1
  20. package/dist/components/icon/icons/action/index.mjs +6 -2
  21. package/dist/components/icon/icons/action/three-d-rotation.cjs +28 -0
  22. package/dist/components/icon/icons/action/three-d-rotation.d.ts +3 -0
  23. package/dist/components/icon/icons/action/three-d-rotation.mjs +26 -0
  24. package/dist/components/icon/icons/editor/attch-file.cjs +20 -0
  25. package/dist/components/icon/icons/editor/attch-file.d.ts +3 -0
  26. package/dist/components/icon/icons/editor/attch-file.mjs +18 -0
  27. package/dist/components/icon/icons/editor/index.cjs +4 -1
  28. package/dist/components/icon/icons/editor/index.d.ts +3 -1
  29. package/dist/components/icon/icons/editor/index.mjs +4 -2
  30. package/dist/components/icon/icons/index.cjs +6 -0
  31. package/dist/components/icon/icons/index.mjs +3 -0
  32. package/dist/components/image/image.cjs +49 -2
  33. package/dist/components/image/image.d.ts +1 -1
  34. package/dist/components/image/image.mjs +50 -3
  35. package/dist/components/image/index.d.ts +1 -1
  36. package/dist/components/image/preview/preview.cjs +8 -3
  37. package/dist/components/image/preview/preview.mjs +8 -3
  38. package/dist/components/menu/hooks.d.ts +1 -2
  39. package/dist/components/menu/item.d.ts +2 -3
  40. package/dist/components/pagination/pagination.cjs +1 -1
  41. package/dist/components/pagination/pagination.mjs +2 -2
  42. package/dist/components/popover/popover.cjs +1 -1
  43. package/dist/components/popover/popover.mjs +1 -1
  44. package/dist/components/popper/dropdown.cjs +44 -19
  45. package/dist/components/popper/dropdown.mjs +46 -21
  46. package/dist/components/popper/hooks.cjs +88 -89
  47. package/dist/components/popper/hooks.d.ts +7 -13
  48. package/dist/components/popper/hooks.mjs +91 -91
  49. package/dist/components/rich-text-editor/plugins/controlled-state/index.cjs +1 -2
  50. package/dist/components/rich-text-editor/plugins/controlled-state/index.mjs +1 -2
  51. package/dist/components/rich-text-editor/plugins/markdown-shortcut/index.cjs +5 -4
  52. package/dist/components/rich-text-editor/plugins/markdown-shortcut/index.d.ts +3 -3
  53. package/dist/components/rich-text-editor/plugins/markdown-shortcut/index.mjs +3 -4
  54. package/dist/components/rich-text-editor/rich-text-editor.cjs +5 -5
  55. package/dist/components/rich-text-editor/rich-text-editor.mjs +3 -3
  56. package/dist/components/select/utils.cjs +1 -3
  57. package/dist/components/select/utils.d.ts +1 -1
  58. package/dist/components/select/utils.mjs +2 -4
  59. package/dist/components/skeleton/skeleton.cjs +5 -48
  60. package/dist/components/skeleton/skeleton.d.ts +1 -1
  61. package/dist/components/skeleton/skeleton.mjs +5 -48
  62. package/dist/components/steps/context.d.ts +1 -1
  63. package/dist/components/steps/item.d.ts +1 -1
  64. package/dist/components/steps/steps.d.ts +1 -1
  65. package/dist/components/switch/switch.cjs +7 -6
  66. package/dist/components/switch/switch.d.ts +1 -1
  67. package/dist/components/switch/switch.mjs +8 -7
  68. package/dist/components/table/body.cjs +3 -1
  69. package/dist/components/table/body.mjs +3 -1
  70. package/dist/components/tabs/context.d.ts +1 -1
  71. package/dist/components/tabs/hooks.d.ts +2 -2
  72. package/dist/components/tabs/navigation.d.ts +1 -1
  73. package/dist/components/tabs/panels.d.ts +1 -1
  74. package/dist/components/tabs/tab.d.ts +1 -1
  75. package/dist/components/tabs/tabs.d.ts +1 -1
  76. package/dist/components/tag/tag.d.ts +1 -1
  77. package/dist/components/theme/hooks.cjs +6 -6
  78. package/dist/components/theme/hooks.d.ts +1 -1
  79. package/dist/components/theme/hooks.mjs +6 -6
  80. package/dist/components/theme/theme-provider.cjs +12 -6
  81. package/dist/components/theme/theme-provider.d.ts +2 -2
  82. package/dist/components/theme/theme-provider.mjs +12 -6
  83. package/dist/components/time-picker/hooks.d.ts +1 -1
  84. package/dist/components/time-picker/panel.d.ts +1 -1
  85. package/dist/components/time-picker/time-picker.d.ts +1 -1
  86. package/dist/components/timeline/context.d.ts +1 -1
  87. package/dist/components/timeline/item.d.ts +1 -1
  88. package/dist/components/timeline/timeline.d.ts +1 -1
  89. package/dist/components/tooltip/tooltip.d.ts +1 -1
  90. package/dist/components/transfer/context.d.ts +1 -1
  91. package/dist/components/transfer/hooks.d.ts +1 -1
  92. package/dist/components/transfer/item.d.ts +1 -1
  93. package/dist/components/transfer/list.d.ts +1 -1
  94. package/dist/components/transfer/transfer.d.ts +1 -1
  95. package/dist/components/upload/upload.cjs +31 -6
  96. package/dist/components/upload/upload.d.ts +2 -2
  97. package/dist/components/upload/upload.mjs +31 -6
  98. package/dist/components/upload/uploadeds.cjs +119 -55
  99. package/dist/components/upload/uploadeds.d.ts +1 -1
  100. package/dist/components/upload/uploadeds.mjs +121 -57
  101. package/dist/components/upload/utils.cjs +9 -0
  102. package/dist/components/upload/utils.d.ts +6 -0
  103. package/dist/components/upload/utils.mjs +9 -0
  104. package/dist/components/visually-hidden/visually-hidden.d.ts +1 -1
  105. package/dist/components/waterfall/sequential.d.ts +1 -1
  106. package/dist/components/waterfall/waterfall.d.ts +1 -1
  107. package/dist/components/watermark/hooks.d.ts +1 -1
  108. package/dist/components/watermark/watermark.d.ts +1 -1
  109. package/dist/hooks/use-class-names.d.ts +4 -0
  110. package/dist/hooks/use-closable.cjs +0 -8
  111. package/dist/hooks/use-closable.mjs +0 -8
  112. package/dist/hooks/use-container.d.ts +1 -1
  113. package/dist/hooks/use-lazy-boolean.cjs +2 -2
  114. package/dist/hooks/use-lazy-boolean.mjs +2 -2
  115. package/dist/index.cjs +2 -0
  116. package/dist/index.d.ts +1 -1
  117. package/dist/index.mjs +1 -0
  118. package/dist/locale/locales/en_US.cjs +5 -1
  119. package/dist/locale/locales/en_US.mjs +5 -1
  120. package/dist/locale/locales/zh_CN.cjs +5 -1
  121. package/dist/locale/locales/zh_CN.mjs +5 -1
  122. package/dist/styles.css +16 -7
  123. package/dist/types/drawer.d.ts +5 -0
  124. package/dist/types/element.d.ts +1 -56
  125. package/dist/types/form.d.ts +39 -1
  126. package/dist/types/image.d.ts +1 -0
  127. package/dist/types/locale.d.ts +6 -0
  128. package/dist/types/menu.d.ts +8 -3
  129. package/dist/types/popper.d.ts +1 -1
  130. package/dist/types/skeleton.d.ts +0 -7
  131. package/dist/{components/theme/types.d.ts → types/theme.d.ts} +1 -1
  132. package/dist/types/tree.d.ts +7 -2
  133. package/dist/{components/upload/types.d.ts → types/upload.d.ts} +59 -22
  134. package/dist/{components/waterfall/types.d.ts → types/waterfall.d.ts} +3 -3
  135. package/dist/utils/class-name.cjs +5 -1
  136. package/dist/utils/class-name.d.ts +12 -1
  137. package/dist/utils/class-name.mjs +6 -2
  138. package/dist/utils/colors.cjs +0 -10
  139. package/dist/utils/colors.d.ts +1 -4
  140. package/dist/utils/colors.mjs +1 -10
  141. package/dist/utils/component-token.cjs +2 -0
  142. package/dist/utils/component-token.d.ts +3 -1
  143. package/dist/utils/component-token.mjs +2 -0
  144. package/dist/utils/date.cjs +13 -0
  145. package/dist/utils/date.d.ts +6 -0
  146. package/dist/utils/date.mjs +13 -0
  147. package/package.json +25 -25
  148. package/dist/components/icon/icons/three-dimension-rotation.d.ts +0 -3
  149. /package/dist/{components/steps/types.d.ts → types/steps.d.ts} +0 -0
  150. /package/dist/{components/switch/types.d.ts → types/switch.d.ts} +0 -0
  151. /package/dist/{components/tabs/types.d.ts → types/tabs.d.ts} +0 -0
  152. /package/dist/{components/tag/types.d.ts → types/tag.d.ts} +0 -0
  153. /package/dist/{components/time-picker/types.d.ts → types/time-picker.d.ts} +0 -0
  154. /package/dist/{components/timeline/types.d.ts → types/timeline.d.ts} +0 -0
  155. /package/dist/{components/tooltip/types.d.ts → types/tooltip.d.ts} +0 -0
  156. /package/dist/{components/transfer/types.d.ts → types/transfer.d.ts} +0 -0
  157. /package/dist/{components/visually-hidden/types.d.ts → types/visually-hidden.d.ts} +0 -0
  158. /package/dist/{components/watermark/types.d.ts → types/watermark.d.ts} +0 -0
@@ -12,6 +12,7 @@ var className = require('../../utils/class-name.cjs');
12
12
  var theme = require('../theme/theme.cjs');
13
13
  var relax = require('@aiszlab/relax');
14
14
  var componentToken = require('../../utils/component-token.cjs');
15
+ var skeleton = require('../skeleton/skeleton.cjs');
15
16
 
16
17
  var _excluded = ["src", "alt", "shape", "size", "className", "style"];
17
18
  var styles = {
@@ -161,19 +162,26 @@ var Avatar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
161
162
  }), styles[size], styles[shape], isInGroup && styles.overlapping({
162
163
  outlineColor: theme$1.colors[colors.ColorToken.OnPrimary]
163
164
  })),
165
+ loading: stylex.default.props(styles[shape], styles[size]),
164
166
  image: stylex.default.props(styles.image, styles[size])
165
167
  };
168
+ if (loadStatus === "loading") {
169
+ return /*#__PURE__*/React.createElement(skeleton.default, {
170
+ className: styled.loading.className,
171
+ style: styled.loading.style
172
+ });
173
+ }
166
174
  return /*#__PURE__*/React.createElement("span", _objectSpread(_objectSpread({}, props), {}, {
167
175
  className: relax.clsx(classNames[className.AvatarClassToken.Avatar], className$1, styled.avatar.className),
168
176
  style: _objectSpread(_objectSpread({}, styled.avatar.style), style),
169
177
  ref: ref
170
- }), loadStatus === "loaded" ? (/*#__PURE__*/React.createElement("img", {
178
+ }), loadStatus === "loaded" && (/*#__PURE__*/React.createElement("img", {
171
179
  draggable: false,
172
180
  src: src,
173
181
  alt: alt,
174
182
  className: styled.image.className,
175
183
  style: styled.image.style
176
- })) : alt === null || alt === void 0 ? void 0 : alt.slice(0, 2).toUpperCase());
184
+ })), loadStatus !== "loaded" && (alt === null || alt === void 0 ? void 0 : alt.slice(0, 2).toUpperCase()));
177
185
  });
178
186
 
179
187
  exports.default = Avatar;
@@ -10,6 +10,7 @@ import { AvatarClassToken } from '../../utils/class-name.mjs';
10
10
  import { typography } from '../theme/theme.mjs';
11
11
  import { useImageLoader, clsx } from '@aiszlab/relax';
12
12
  import { ComponentToken } from '../../utils/component-token.mjs';
13
+ import Skeleton from '../skeleton/skeleton.mjs';
13
14
 
14
15
  var _excluded = ["src", "alt", "shape", "size", "className", "style"];
15
16
  var styles = {
@@ -159,19 +160,26 @@ var Avatar = /*#__PURE__*/forwardRef(function (_ref, ref) {
159
160
  }), styles[size], styles[shape], isInGroup && styles.overlapping({
160
161
  outlineColor: theme.colors[ColorToken.OnPrimary]
161
162
  })),
163
+ loading: _stylex.props(styles[shape], styles[size]),
162
164
  image: _stylex.props(styles.image, styles[size])
163
165
  };
166
+ if (loadStatus === "loading") {
167
+ return /*#__PURE__*/React.createElement(Skeleton, {
168
+ className: styled.loading.className,
169
+ style: styled.loading.style
170
+ });
171
+ }
164
172
  return /*#__PURE__*/React.createElement("span", _objectSpread(_objectSpread({}, props), {}, {
165
173
  className: clsx(classNames[AvatarClassToken.Avatar], className, styled.avatar.className),
166
174
  style: _objectSpread(_objectSpread({}, styled.avatar.style), style),
167
175
  ref: ref
168
- }), loadStatus === "loaded" ? (/*#__PURE__*/React.createElement("img", {
176
+ }), loadStatus === "loaded" && (/*#__PURE__*/React.createElement("img", {
169
177
  draggable: false,
170
178
  src: src,
171
179
  alt: alt,
172
180
  className: styled.image.className,
173
181
  style: styled.image.style
174
- })) : alt === null || alt === void 0 ? void 0 : alt.slice(0, 2).toUpperCase());
182
+ })), loadStatus !== "loaded" && (alt === null || alt === void 0 ? void 0 : alt.slice(0, 2).toUpperCase()));
175
183
  });
176
184
 
177
185
  export { Avatar as default };
@@ -14,6 +14,7 @@ var theme = require('../theme/theme.cjs');
14
14
  var colors = require('../../utils/colors.cjs');
15
15
  var useClassNames = require('../../hooks/use-class-names.cjs');
16
16
  var componentToken = require('../../utils/component-token.cjs');
17
+ var color = require('@aiszlab/fuzzy/color');
17
18
 
18
19
  var _excluded = ["children", "className", "style", "color", "size", "variant", "shape", "disabled", "ripple", "type", "onClick", "prefix", "suffix"];
19
20
  var styles = {
@@ -232,7 +233,7 @@ var Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
232
233
  className$1 = _ref.className,
233
234
  style = _ref.style,
234
235
  _ref$color = _ref.color,
235
- color = _ref$color === void 0 ? "primary" : _ref$color,
236
+ color$1 = _ref$color === void 0 ? "primary" : _ref$color,
236
237
  _ref$size = _ref.size,
237
238
  size = _ref$size === void 0 ? "medium" : _ref$size,
238
239
  _ref$variant = _ref.variant,
@@ -263,22 +264,22 @@ var Button = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
263
264
  styles[size],
264
265
  // variant
265
266
  variant === "filled" && styles.filled({
266
- backgroundColor: theme$1.colors[color],
267
- color: theme$1.colors["on-".concat(color)]
267
+ backgroundColor: theme$1.colors[color$1],
268
+ color: theme$1.colors["on-".concat(color$1)]
268
269
  }), variant === "outlined" && styles.outlined({
269
- color: theme$1.colors[color],
270
- hoveredBackgroundColor: colors.toRgba(theme$1.colors[colors.ColorToken.Primary], tokens_stylex.OPACITY.thin)
270
+ color: theme$1.colors[color$1],
271
+ hoveredBackgroundColor: color.hexToRgba(theme$1.colors[colors.ColorToken.Primary], tokens_stylex.OPACITY.thin)
271
272
  }), variant === "text" && styles.text({
272
- color: theme$1.colors[color],
273
- hoveredBackgroundColor: colors.toRgba(theme$1.colors[colors.ColorToken.Primary], tokens_stylex.OPACITY.thin)
273
+ color: theme$1.colors[color$1],
274
+ hoveredBackgroundColor: color.hexToRgba(theme$1.colors[colors.ColorToken.Primary], tokens_stylex.OPACITY.thin)
274
275
  }),
275
276
  // shape
276
277
  styles[shape],
277
278
  // disabled
278
279
  disabled && styles.disabled({
279
- backgroundColor: variant === "filled" ? colors.toRgba(theme$1.colors[colors.ColorToken.OnSurface], tokens_stylex.OPACITY.medium) : "transparent",
280
- color: colors.toRgba(theme$1.colors[colors.ColorToken.OnSurface], tokens_stylex.OPACITY.thicker),
281
- outlineColor: variant === "outlined" ? colors.toRgba(theme$1.colors[colors.ColorToken.OnSurface], tokens_stylex.OPACITY.thicker) : null
280
+ backgroundColor: variant === "filled" ? color.hexToRgba(theme$1.colors[colors.ColorToken.OnSurface], tokens_stylex.OPACITY.medium) : "transparent",
281
+ color: color.hexToRgba(theme$1.colors[colors.ColorToken.OnSurface], tokens_stylex.OPACITY.thicker),
282
+ outlineColor: variant === "outlined" ? color.hexToRgba(theme$1.colors[colors.ColorToken.OnSurface], tokens_stylex.OPACITY.thicker) : null
282
283
  }))
283
284
  };
284
285
  return /*#__PURE__*/React.createElement("button", _objectSpread({
@@ -9,9 +9,10 @@ import { useTheme } from '../theme/hooks.mjs';
9
9
  import { useButton } from './hooks.mjs';
10
10
  import Ripple from '../ripple/ripple.mjs';
11
11
  import { typography } from '../theme/theme.mjs';
12
- import { toRgba, ColorToken } from '../../utils/colors.mjs';
12
+ import { ColorToken } from '../../utils/colors.mjs';
13
13
  import { useClassNames } from '../../hooks/use-class-names.mjs';
14
14
  import { ComponentToken } from '../../utils/component-token.mjs';
15
+ import { hexToRgba } from '@aiszlab/fuzzy/color';
15
16
 
16
17
  var _excluded = ["children", "className", "style", "color", "size", "variant", "shape", "disabled", "ripple", "type", "onClick", "prefix", "suffix"];
17
18
  var styles = {
@@ -265,18 +266,18 @@ var Button = /*#__PURE__*/forwardRef(function (_ref, ref) {
265
266
  color: theme.colors["on-".concat(color)]
266
267
  }), variant === "outlined" && styles.outlined({
267
268
  color: theme.colors[color],
268
- hoveredBackgroundColor: toRgba(theme.colors[ColorToken.Primary], OPACITY.thin)
269
+ hoveredBackgroundColor: hexToRgba(theme.colors[ColorToken.Primary], OPACITY.thin)
269
270
  }), variant === "text" && styles.text({
270
271
  color: theme.colors[color],
271
- hoveredBackgroundColor: toRgba(theme.colors[ColorToken.Primary], OPACITY.thin)
272
+ hoveredBackgroundColor: hexToRgba(theme.colors[ColorToken.Primary], OPACITY.thin)
272
273
  }),
273
274
  // shape
274
275
  styles[shape],
275
276
  // disabled
276
277
  disabled && styles.disabled({
277
- backgroundColor: variant === "filled" ? toRgba(theme.colors[ColorToken.OnSurface], OPACITY.medium) : "transparent",
278
- color: toRgba(theme.colors[ColorToken.OnSurface], OPACITY.thicker),
279
- outlineColor: variant === "outlined" ? toRgba(theme.colors[ColorToken.OnSurface], OPACITY.thicker) : null
278
+ backgroundColor: variant === "filled" ? hexToRgba(theme.colors[ColorToken.OnSurface], OPACITY.medium) : "transparent",
279
+ color: hexToRgba(theme.colors[ColorToken.OnSurface], OPACITY.thicker),
280
+ outlineColor: variant === "outlined" ? hexToRgba(theme.colors[ColorToken.OnSurface], OPACITY.thicker) : null
280
281
  }))
281
282
  };
282
283
  return /*#__PURE__*/React.createElement("button", _objectSpread({
@@ -0,0 +1,251 @@
1
+ Object.defineProperty(exports, '__esModule', { value: true });
2
+
3
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
+ var dayjs = require('dayjs');
5
+ var React = require('react');
6
+ var stylex = require('../../node_modules/.pnpm/@stylexjs_stylex@0.7.5/node_modules/@stylexjs/stylex/lib/es/stylex.cjs');
7
+ var hooks = require('../theme/hooks.cjs');
8
+ var theme = require('../theme/theme.cjs');
9
+ var tooltip = require('../tooltip/tooltip.cjs');
10
+ var relax = require('@aiszlab/relax');
11
+ var date = require('../../utils/date.cjs');
12
+
13
+ var styles = {
14
+ calendar: {
15
+ variables: function variables(props) {
16
+ return [{
17
+ "--cell-size": "musaex-1erll0c",
18
+ "--cell-color": "musaex-1utc1yc",
19
+ $$css: true
20
+ }, {
21
+ "----cell-color": props.color != null ? props.color : "initial"
22
+ }];
23
+ },
24
+ "default": {
25
+ borderCollapse: "musaex-1vathgz",
26
+ borderSpacing: "musaex-g5hwcv",
27
+ $$css: true
28
+ },
29
+ scrollable: {
30
+ maxWidth: "musaex-193iq5w",
31
+ overflow: "musaex-ysyzu8",
32
+ overflowX: null,
33
+ overflowY: null,
34
+ $$css: true
35
+ }
36
+ },
37
+ cell: {
38
+ "default": {
39
+ minWidth: "musaex-1q6qbx2",
40
+ minHeight: "musaex-189dakb",
41
+ padding: "musaex-1717udv",
42
+ paddingInline: null,
43
+ paddingStart: null,
44
+ paddingLeft: null,
45
+ paddingEnd: null,
46
+ paddingRight: null,
47
+ paddingBlock: null,
48
+ paddingTop: null,
49
+ paddingBottom: null,
50
+ borderRadius: "musaex-llun4g",
51
+ borderStartStartRadius: null,
52
+ borderStartEndRadius: null,
53
+ borderEndStartRadius: null,
54
+ borderEndEndRadius: null,
55
+ borderTopLeftRadius: null,
56
+ borderTopRightRadius: null,
57
+ borderBottomLeftRadius: null,
58
+ borderBottomRightRadius: null,
59
+ cursor: "musaex-1ypdohk",
60
+ backgroundColor: "musaex-1204rnj",
61
+ $$css: true
62
+ }
63
+ },
64
+ weekday: {
65
+ cell: {
66
+ padding: "musaex-1717udv",
67
+ paddingInline: null,
68
+ paddingStart: null,
69
+ paddingLeft: null,
70
+ paddingEnd: null,
71
+ paddingRight: null,
72
+ paddingBlock: null,
73
+ paddingTop: null,
74
+ paddingBottom: null,
75
+ $$css: true
76
+ },
77
+ "default": {
78
+ height: "musaex-sahybl",
79
+ overflow: "musaex-1rea2x4",
80
+ overflowX: null,
81
+ overflowY: null,
82
+ display: "musaex-78zum5",
83
+ alignItems: "musaex-6s0dn4",
84
+ $$css: true
85
+ }
86
+ },
87
+ month: {
88
+ cell: {
89
+ padding: "musaex-1717udv",
90
+ paddingInline: null,
91
+ paddingStart: null,
92
+ paddingLeft: null,
93
+ paddingEnd: null,
94
+ paddingRight: null,
95
+ paddingBlock: null,
96
+ paddingTop: null,
97
+ paddingBottom: null,
98
+ position: "musaex-1n2onr6",
99
+ $$css: true
100
+ },
101
+ leading: {
102
+ visibility: "musaex-lshs6z",
103
+ $$css: true
104
+ },
105
+ "default": {
106
+ position: "musaex-10l6tqk",
107
+ top: "musaex-13vifvy",
108
+ insetInlineStart: "musaex-1o0tod",
109
+ left: null,
110
+ right: null,
111
+ $$css: true
112
+ }
113
+ }
114
+ };
115
+ /**
116
+ * @description
117
+ * contribution calendar
118
+ * inspired by github
119
+ */
120
+ var ContributionCalendar = function ContributionCalendar(_ref) {
121
+ var year = _ref.year;
122
+ _ref.gaps;
123
+ var _ref$dataSource = _ref.dataSource,
124
+ dataSource = _ref$dataSource === void 0 ? [] : _ref$dataSource;
125
+ var theme$1 = hooks.useTheme();
126
+ var _useMemo = React.useMemo(function () {
127
+ var _to = relax.min([dayjs().subtract(1, "day"), dayjs("".concat(year, "-12-31"))], function (_value) {
128
+ return _value.valueOf();
129
+ });
130
+ var _from = _to.subtract(1, "year").add(1, "day");
131
+ return [_from, _to];
132
+ }, [year]),
133
+ _useMemo2 = _slicedToArray(_useMemo, 2),
134
+ from = _useMemo2[0],
135
+ to = _useMemo2[1];
136
+ var _useMemo3 = React.useMemo(function () {
137
+ return [from.startOf("week"), to.endOf("week")];
138
+ }, [from, to]),
139
+ _useMemo4 = _slicedToArray(_useMemo3, 2),
140
+ start = _useMemo4[0],
141
+ end = _useMemo4[1];
142
+ var columns = React.useMemo(function () {
143
+ return end.diff(start, "week") + 1;
144
+ }, [start, end]);
145
+ var months = React.useMemo(function () {
146
+ return Array.from({
147
+ length: 13
148
+ }).reduce(function (prev, _, monthAt) {
149
+ var _month = from.clone().add(monthAt, "month");
150
+ var _from = monthAt > 0 ? date.firstSundayInMonth(_month) : _month.startOf("month");
151
+ var _to = _from.clone().endOf("month");
152
+ prev.push({
153
+ start: Math.max(_from.diff(start, "week"), 0),
154
+ end: Math.min(_to.diff(start, "week") + 1, columns),
155
+ month: _from.format("MMM")
156
+ });
157
+ return prev;
158
+ }, []);
159
+ }, [from, start, columns]);
160
+ var heats = React.useMemo(function () {
161
+ return dataSource.reduce(function (prev, _ref2) {
162
+ var _ref3 = _slicedToArray(_ref2, 2),
163
+ date = _ref3[0],
164
+ count = _ref3[1];
165
+ return prev.set(date, count);
166
+ }, new Map());
167
+ }, [dataSource]);
168
+ var styled = {
169
+ scrollable: stylex.default.props(styles.calendar.scrollable),
170
+ calendar: stylex.default.props(styles.calendar.variables({
171
+ color: theme$1.colors.primary
172
+ }), styles.calendar["default"]),
173
+ cell: stylex.default.props(styles.cell["default"]),
174
+ weekday: {
175
+ cell: stylex.default.props(styles.weekday.cell, theme.typography.body.small),
176
+ "default": stylex.default.props(styles.weekday["default"])
177
+ },
178
+ month: {
179
+ cell: stylex.default.props(styles.month.cell, theme.typography.body.small),
180
+ "default": stylex.default.props(styles.month["default"]),
181
+ leading: stylex.default.props(styles.month.cell, theme.typography.body.small, styles.month.leading)
182
+ }
183
+ };
184
+ return /*#__PURE__*/React.createElement("div", {
185
+ className: styled.scrollable.className,
186
+ style: styled.scrollable.style
187
+ }, /*#__PURE__*/React.createElement("table", {
188
+ className: styled.calendar.className,
189
+ style: styled.calendar.style
190
+ }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", {
191
+ className: styled.month.leading.className,
192
+ style: styled.month.leading.style
193
+ }, "W/M"), months.map(function (_ref4, _key, _months) {
194
+ var start = _ref4.start,
195
+ end = _ref4.end,
196
+ month = _ref4.month;
197
+ var colSpan = end - start;
198
+ if (colSpan === 0) return null;
199
+ // render headers
200
+ // if col span is less than 2, skip render label
201
+ // ISSUE: if leading month has rendered, the trailing month will be rendered twice
202
+ var skip = colSpan < 2 || _months.length - 1 === _key && _months[0].end - _months[0].start >= 2;
203
+ return /*#__PURE__*/React.createElement("th", {
204
+ key: _key,
205
+ colSpan: colSpan,
206
+ className: styled.month.cell.className,
207
+ style: styled.month.cell.style
208
+ }, !skip && (/*#__PURE__*/React.createElement("div", {
209
+ className: styled.month["default"].className,
210
+ style: styled.month["default"].style
211
+ }, month)));
212
+ }))), /*#__PURE__*/React.createElement("tbody", null, Array.from({
213
+ length: 7
214
+ }).map(function (_, weekday) {
215
+ return /*#__PURE__*/React.createElement("tr", {
216
+ key: weekday
217
+ }, /*#__PURE__*/React.createElement("td", {
218
+ className: styled.weekday.cell.className,
219
+ style: styled.weekday.cell.style
220
+ }, /*#__PURE__*/React.createElement("div", {
221
+ className: styled.weekday["default"].className,
222
+ style: styled.weekday["default"].style
223
+ }, [1, 3, 5].includes(weekday) && (/*#__PURE__*/React.createElement("span", null, dayjs().day(weekday).format("ddd"))))), Array.from({
224
+ length: columns
225
+ }).map(function (_, column) {
226
+ var gap = column * 7 + weekday;
227
+ var _at = start.add(gap, "day");
228
+ if (column === 0 && !_at.isAfter(from)) {
229
+ return /*#__PURE__*/React.createElement("td", {
230
+ key: column
231
+ });
232
+ }
233
+ if (column === columns - 1 && _at.isAfter(to)) {
234
+ return /*#__PURE__*/React.createElement("td", {
235
+ key: column
236
+ });
237
+ }
238
+ var date = _at.format("YYYY-MM-DD");
239
+ var count = heats.get(date);
240
+ return /*#__PURE__*/React.createElement(tooltip.default, {
241
+ key: column,
242
+ title: "".concat(count, " contributions at ").concat(_at.format("YYYY-MM-DD"))
243
+ }, /*#__PURE__*/React.createElement("td", {
244
+ className: styled.cell.className,
245
+ style: styled.cell.style
246
+ }));
247
+ }));
248
+ }))));
249
+ };
250
+
251
+ exports.default = ContributionCalendar;
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ interface Props {
3
+ year: number;
4
+ gaps?: number[];
5
+ dataSource?: [string, number][];
6
+ }
7
+ /**
8
+ * @description
9
+ * contribution calendar
10
+ * inspired by github
11
+ */
12
+ declare const ContributionCalendar: ({ year, gaps, dataSource }: Props) => React.JSX.Element;
13
+ export default ContributionCalendar;
@@ -0,0 +1,249 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import dayjs from 'dayjs';
3
+ import React, { useMemo } from 'react';
4
+ import _stylex from '../../node_modules/.pnpm/@stylexjs_stylex@0.7.5/node_modules/@stylexjs/stylex/lib/es/stylex.mjs';
5
+ import { useTheme } from '../theme/hooks.mjs';
6
+ import { typography } from '../theme/theme.mjs';
7
+ import Tooltip from '../tooltip/tooltip.mjs';
8
+ import { min } from '@aiszlab/relax';
9
+ import { firstSundayInMonth } from '../../utils/date.mjs';
10
+
11
+ var styles = {
12
+ calendar: {
13
+ variables: function variables(props) {
14
+ return [{
15
+ "--cell-size": "musaex-1erll0c",
16
+ "--cell-color": "musaex-1utc1yc",
17
+ $$css: true
18
+ }, {
19
+ "----cell-color": props.color != null ? props.color : "initial"
20
+ }];
21
+ },
22
+ "default": {
23
+ borderCollapse: "musaex-1vathgz",
24
+ borderSpacing: "musaex-g5hwcv",
25
+ $$css: true
26
+ },
27
+ scrollable: {
28
+ maxWidth: "musaex-193iq5w",
29
+ overflow: "musaex-ysyzu8",
30
+ overflowX: null,
31
+ overflowY: null,
32
+ $$css: true
33
+ }
34
+ },
35
+ cell: {
36
+ "default": {
37
+ minWidth: "musaex-1q6qbx2",
38
+ minHeight: "musaex-189dakb",
39
+ padding: "musaex-1717udv",
40
+ paddingInline: null,
41
+ paddingStart: null,
42
+ paddingLeft: null,
43
+ paddingEnd: null,
44
+ paddingRight: null,
45
+ paddingBlock: null,
46
+ paddingTop: null,
47
+ paddingBottom: null,
48
+ borderRadius: "musaex-llun4g",
49
+ borderStartStartRadius: null,
50
+ borderStartEndRadius: null,
51
+ borderEndStartRadius: null,
52
+ borderEndEndRadius: null,
53
+ borderTopLeftRadius: null,
54
+ borderTopRightRadius: null,
55
+ borderBottomLeftRadius: null,
56
+ borderBottomRightRadius: null,
57
+ cursor: "musaex-1ypdohk",
58
+ backgroundColor: "musaex-1204rnj",
59
+ $$css: true
60
+ }
61
+ },
62
+ weekday: {
63
+ cell: {
64
+ padding: "musaex-1717udv",
65
+ paddingInline: null,
66
+ paddingStart: null,
67
+ paddingLeft: null,
68
+ paddingEnd: null,
69
+ paddingRight: null,
70
+ paddingBlock: null,
71
+ paddingTop: null,
72
+ paddingBottom: null,
73
+ $$css: true
74
+ },
75
+ "default": {
76
+ height: "musaex-sahybl",
77
+ overflow: "musaex-1rea2x4",
78
+ overflowX: null,
79
+ overflowY: null,
80
+ display: "musaex-78zum5",
81
+ alignItems: "musaex-6s0dn4",
82
+ $$css: true
83
+ }
84
+ },
85
+ month: {
86
+ cell: {
87
+ padding: "musaex-1717udv",
88
+ paddingInline: null,
89
+ paddingStart: null,
90
+ paddingLeft: null,
91
+ paddingEnd: null,
92
+ paddingRight: null,
93
+ paddingBlock: null,
94
+ paddingTop: null,
95
+ paddingBottom: null,
96
+ position: "musaex-1n2onr6",
97
+ $$css: true
98
+ },
99
+ leading: {
100
+ visibility: "musaex-lshs6z",
101
+ $$css: true
102
+ },
103
+ "default": {
104
+ position: "musaex-10l6tqk",
105
+ top: "musaex-13vifvy",
106
+ insetInlineStart: "musaex-1o0tod",
107
+ left: null,
108
+ right: null,
109
+ $$css: true
110
+ }
111
+ }
112
+ };
113
+ /**
114
+ * @description
115
+ * contribution calendar
116
+ * inspired by github
117
+ */
118
+ var ContributionCalendar = function ContributionCalendar(_ref) {
119
+ var year = _ref.year;
120
+ _ref.gaps;
121
+ var _ref$dataSource = _ref.dataSource,
122
+ dataSource = _ref$dataSource === void 0 ? [] : _ref$dataSource;
123
+ var theme = useTheme();
124
+ var _useMemo = useMemo(function () {
125
+ var _to = min([dayjs().subtract(1, "day"), dayjs("".concat(year, "-12-31"))], function (_value) {
126
+ return _value.valueOf();
127
+ });
128
+ var _from = _to.subtract(1, "year").add(1, "day");
129
+ return [_from, _to];
130
+ }, [year]),
131
+ _useMemo2 = _slicedToArray(_useMemo, 2),
132
+ from = _useMemo2[0],
133
+ to = _useMemo2[1];
134
+ var _useMemo3 = useMemo(function () {
135
+ return [from.startOf("week"), to.endOf("week")];
136
+ }, [from, to]),
137
+ _useMemo4 = _slicedToArray(_useMemo3, 2),
138
+ start = _useMemo4[0],
139
+ end = _useMemo4[1];
140
+ var columns = useMemo(function () {
141
+ return end.diff(start, "week") + 1;
142
+ }, [start, end]);
143
+ var months = useMemo(function () {
144
+ return Array.from({
145
+ length: 13
146
+ }).reduce(function (prev, _, monthAt) {
147
+ var _month = from.clone().add(monthAt, "month");
148
+ var _from = monthAt > 0 ? firstSundayInMonth(_month) : _month.startOf("month");
149
+ var _to = _from.clone().endOf("month");
150
+ prev.push({
151
+ start: Math.max(_from.diff(start, "week"), 0),
152
+ end: Math.min(_to.diff(start, "week") + 1, columns),
153
+ month: _from.format("MMM")
154
+ });
155
+ return prev;
156
+ }, []);
157
+ }, [from, start, columns]);
158
+ var heats = useMemo(function () {
159
+ return dataSource.reduce(function (prev, _ref2) {
160
+ var _ref3 = _slicedToArray(_ref2, 2),
161
+ date = _ref3[0],
162
+ count = _ref3[1];
163
+ return prev.set(date, count);
164
+ }, new Map());
165
+ }, [dataSource]);
166
+ var styled = {
167
+ scrollable: _stylex.props(styles.calendar.scrollable),
168
+ calendar: _stylex.props(styles.calendar.variables({
169
+ color: theme.colors.primary
170
+ }), styles.calendar["default"]),
171
+ cell: _stylex.props(styles.cell["default"]),
172
+ weekday: {
173
+ cell: _stylex.props(styles.weekday.cell, typography.body.small),
174
+ "default": _stylex.props(styles.weekday["default"])
175
+ },
176
+ month: {
177
+ cell: _stylex.props(styles.month.cell, typography.body.small),
178
+ "default": _stylex.props(styles.month["default"]),
179
+ leading: _stylex.props(styles.month.cell, typography.body.small, styles.month.leading)
180
+ }
181
+ };
182
+ return /*#__PURE__*/React.createElement("div", {
183
+ className: styled.scrollable.className,
184
+ style: styled.scrollable.style
185
+ }, /*#__PURE__*/React.createElement("table", {
186
+ className: styled.calendar.className,
187
+ style: styled.calendar.style
188
+ }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", {
189
+ className: styled.month.leading.className,
190
+ style: styled.month.leading.style
191
+ }, "W/M"), months.map(function (_ref4, _key, _months) {
192
+ var start = _ref4.start,
193
+ end = _ref4.end,
194
+ month = _ref4.month;
195
+ var colSpan = end - start;
196
+ if (colSpan === 0) return null;
197
+ // render headers
198
+ // if col span is less than 2, skip render label
199
+ // ISSUE: if leading month has rendered, the trailing month will be rendered twice
200
+ var skip = colSpan < 2 || _months.length - 1 === _key && _months[0].end - _months[0].start >= 2;
201
+ return /*#__PURE__*/React.createElement("th", {
202
+ key: _key,
203
+ colSpan: colSpan,
204
+ className: styled.month.cell.className,
205
+ style: styled.month.cell.style
206
+ }, !skip && (/*#__PURE__*/React.createElement("div", {
207
+ className: styled.month["default"].className,
208
+ style: styled.month["default"].style
209
+ }, month)));
210
+ }))), /*#__PURE__*/React.createElement("tbody", null, Array.from({
211
+ length: 7
212
+ }).map(function (_, weekday) {
213
+ return /*#__PURE__*/React.createElement("tr", {
214
+ key: weekday
215
+ }, /*#__PURE__*/React.createElement("td", {
216
+ className: styled.weekday.cell.className,
217
+ style: styled.weekday.cell.style
218
+ }, /*#__PURE__*/React.createElement("div", {
219
+ className: styled.weekday["default"].className,
220
+ style: styled.weekday["default"].style
221
+ }, [1, 3, 5].includes(weekday) && (/*#__PURE__*/React.createElement("span", null, dayjs().day(weekday).format("ddd"))))), Array.from({
222
+ length: columns
223
+ }).map(function (_, column) {
224
+ var gap = column * 7 + weekday;
225
+ var _at = start.add(gap, "day");
226
+ if (column === 0 && !_at.isAfter(from)) {
227
+ return /*#__PURE__*/React.createElement("td", {
228
+ key: column
229
+ });
230
+ }
231
+ if (column === columns - 1 && _at.isAfter(to)) {
232
+ return /*#__PURE__*/React.createElement("td", {
233
+ key: column
234
+ });
235
+ }
236
+ var date = _at.format("YYYY-MM-DD");
237
+ var count = heats.get(date);
238
+ return /*#__PURE__*/React.createElement(Tooltip, {
239
+ key: column,
240
+ title: "".concat(count, " contributions at ").concat(_at.format("YYYY-MM-DD"))
241
+ }, /*#__PURE__*/React.createElement("td", {
242
+ className: styled.cell.className,
243
+ style: styled.cell.style
244
+ }));
245
+ }));
246
+ }))));
247
+ };
248
+
249
+ export { ContributionCalendar as default };
@@ -1,2 +1,3 @@
1
1
  import Calendar from "./calendar";
2
- export { Calendar };
2
+ import ContributionCalendar from "./contribution";
3
+ export { Calendar, ContributionCalendar };