musae 0.3.3 → 0.3.5

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 (149) hide show
  1. package/dist/components/button/button.cjs +11 -10
  2. package/dist/components/button/button.mjs +7 -6
  3. package/dist/components/calendar/contribution.cjs +251 -0
  4. package/dist/components/calendar/contribution.d.ts +13 -0
  5. package/dist/components/calendar/contribution.mjs +249 -0
  6. package/dist/components/calendar/index.d.ts +2 -1
  7. package/dist/components/config/provider.cjs +2 -2
  8. package/dist/components/config/provider.mjs +2 -2
  9. package/dist/components/drawer/popup.cjs +51 -17
  10. package/dist/components/drawer/popup.d.ts +1 -1
  11. package/dist/components/drawer/popup.mjs +51 -17
  12. package/dist/components/fab/floatable.d.ts +1 -1
  13. package/dist/components/icon/icons/action/delete.cjs +20 -0
  14. package/dist/components/icon/icons/action/delete.d.ts +3 -0
  15. package/dist/components/icon/icons/action/delete.mjs +18 -0
  16. package/dist/components/icon/icons/action/index.cjs +7 -1
  17. package/dist/components/icon/icons/action/index.d.ts +5 -1
  18. package/dist/components/icon/icons/action/index.mjs +6 -2
  19. package/dist/components/icon/icons/action/three-d-rotation.cjs +28 -0
  20. package/dist/components/icon/icons/action/three-d-rotation.d.ts +3 -0
  21. package/dist/components/icon/icons/action/three-d-rotation.mjs +26 -0
  22. package/dist/components/icon/icons/editor/attch-file.cjs +20 -0
  23. package/dist/components/icon/icons/editor/attch-file.d.ts +3 -0
  24. package/dist/components/icon/icons/editor/attch-file.mjs +18 -0
  25. package/dist/components/icon/icons/editor/index.cjs +4 -1
  26. package/dist/components/icon/icons/editor/index.d.ts +3 -1
  27. package/dist/components/icon/icons/editor/index.mjs +4 -2
  28. package/dist/components/icon/icons/index.cjs +6 -0
  29. package/dist/components/icon/icons/index.mjs +3 -0
  30. package/dist/components/menu/hooks.d.ts +1 -2
  31. package/dist/components/menu/item.d.ts +2 -3
  32. package/dist/components/pagination/pagination.cjs +1 -1
  33. package/dist/components/pagination/pagination.mjs +2 -2
  34. package/dist/components/popover/popover.cjs +1 -1
  35. package/dist/components/popover/popover.mjs +1 -1
  36. package/dist/components/popper/dropdown.cjs +44 -19
  37. package/dist/components/popper/dropdown.mjs +46 -21
  38. package/dist/components/popper/hooks.cjs +88 -89
  39. package/dist/components/popper/hooks.d.ts +7 -13
  40. package/dist/components/popper/hooks.mjs +91 -91
  41. package/dist/components/rich-text-editor/plugins/controlled-state/index.cjs +1 -2
  42. package/dist/components/rich-text-editor/plugins/controlled-state/index.mjs +1 -2
  43. package/dist/components/rich-text-editor/plugins/markdown-shortcut/index.cjs +5 -4
  44. package/dist/components/rich-text-editor/plugins/markdown-shortcut/index.d.ts +3 -3
  45. package/dist/components/rich-text-editor/plugins/markdown-shortcut/index.mjs +3 -4
  46. package/dist/components/rich-text-editor/rich-text-editor.cjs +5 -5
  47. package/dist/components/rich-text-editor/rich-text-editor.mjs +3 -3
  48. package/dist/components/select/utils.cjs +1 -3
  49. package/dist/components/select/utils.d.ts +1 -1
  50. package/dist/components/select/utils.mjs +2 -4
  51. package/dist/components/skeleton/skeleton.cjs +5 -48
  52. package/dist/components/skeleton/skeleton.d.ts +1 -1
  53. package/dist/components/skeleton/skeleton.mjs +5 -48
  54. package/dist/components/steps/context.d.ts +1 -1
  55. package/dist/components/steps/item.d.ts +1 -1
  56. package/dist/components/steps/steps.d.ts +1 -1
  57. package/dist/components/switch/switch.cjs +7 -6
  58. package/dist/components/switch/switch.d.ts +1 -1
  59. package/dist/components/switch/switch.mjs +8 -7
  60. package/dist/components/table/body.cjs +3 -1
  61. package/dist/components/table/body.mjs +3 -1
  62. package/dist/components/tabs/context.d.ts +1 -1
  63. package/dist/components/tabs/hooks.d.ts +2 -2
  64. package/dist/components/tabs/navigation.d.ts +1 -1
  65. package/dist/components/tabs/panels.d.ts +1 -1
  66. package/dist/components/tabs/tab.d.ts +1 -1
  67. package/dist/components/tabs/tabs.d.ts +1 -1
  68. package/dist/components/tag/tag.d.ts +1 -1
  69. package/dist/components/theme/hooks.cjs +6 -6
  70. package/dist/components/theme/hooks.d.ts +1 -1
  71. package/dist/components/theme/hooks.mjs +6 -6
  72. package/dist/components/theme/theme-provider.cjs +12 -6
  73. package/dist/components/theme/theme-provider.d.ts +2 -2
  74. package/dist/components/theme/theme-provider.mjs +12 -6
  75. package/dist/components/time-picker/hooks.d.ts +1 -1
  76. package/dist/components/time-picker/panel.d.ts +1 -1
  77. package/dist/components/time-picker/time-picker.d.ts +1 -1
  78. package/dist/components/timeline/context.d.ts +1 -1
  79. package/dist/components/timeline/item.d.ts +1 -1
  80. package/dist/components/timeline/timeline.d.ts +1 -1
  81. package/dist/components/tooltip/tooltip.d.ts +1 -1
  82. package/dist/components/transfer/context.d.ts +1 -1
  83. package/dist/components/transfer/hooks.d.ts +1 -1
  84. package/dist/components/transfer/item.d.ts +1 -1
  85. package/dist/components/transfer/list.d.ts +1 -1
  86. package/dist/components/transfer/transfer.d.ts +1 -1
  87. package/dist/components/upload/upload.cjs +31 -6
  88. package/dist/components/upload/upload.d.ts +2 -2
  89. package/dist/components/upload/upload.mjs +31 -6
  90. package/dist/components/upload/uploadeds.cjs +119 -55
  91. package/dist/components/upload/uploadeds.d.ts +1 -1
  92. package/dist/components/upload/uploadeds.mjs +121 -57
  93. package/dist/components/upload/utils.cjs +9 -0
  94. package/dist/components/upload/utils.d.ts +6 -0
  95. package/dist/components/upload/utils.mjs +9 -0
  96. package/dist/components/visually-hidden/visually-hidden.d.ts +1 -1
  97. package/dist/components/waterfall/sequential.d.ts +1 -1
  98. package/dist/components/waterfall/waterfall.d.ts +1 -1
  99. package/dist/components/watermark/hooks.d.ts +1 -1
  100. package/dist/components/watermark/watermark.d.ts +1 -1
  101. package/dist/hooks/use-class-names.d.ts +1 -0
  102. package/dist/hooks/use-closable.cjs +0 -8
  103. package/dist/hooks/use-closable.mjs +0 -8
  104. package/dist/hooks/use-container.d.ts +1 -1
  105. package/dist/hooks/use-lazy-boolean.cjs +2 -2
  106. package/dist/hooks/use-lazy-boolean.mjs +2 -2
  107. package/dist/index.cjs +2 -0
  108. package/dist/index.d.ts +1 -1
  109. package/dist/index.mjs +1 -0
  110. package/dist/locale/locales/en_US.cjs +5 -1
  111. package/dist/locale/locales/en_US.mjs +5 -1
  112. package/dist/locale/locales/zh_CN.cjs +5 -1
  113. package/dist/locale/locales/zh_CN.mjs +5 -1
  114. package/dist/styles.css +16 -7
  115. package/dist/types/drawer.d.ts +5 -0
  116. package/dist/types/element.d.ts +1 -56
  117. package/dist/types/form.d.ts +39 -1
  118. package/dist/types/locale.d.ts +6 -0
  119. package/dist/types/menu.d.ts +8 -3
  120. package/dist/types/popper.d.ts +1 -1
  121. package/dist/types/skeleton.d.ts +0 -7
  122. package/dist/{components/theme/types.d.ts → types/theme.d.ts} +1 -1
  123. package/dist/types/tree.d.ts +7 -2
  124. package/dist/{components/upload/types.d.ts → types/upload.d.ts} +59 -22
  125. package/dist/{components/waterfall/types.d.ts → types/waterfall.d.ts} +3 -3
  126. package/dist/utils/class-name.cjs +1 -1
  127. package/dist/utils/class-name.d.ts +3 -1
  128. package/dist/utils/class-name.mjs +1 -1
  129. package/dist/utils/colors.cjs +0 -10
  130. package/dist/utils/colors.d.ts +1 -4
  131. package/dist/utils/colors.mjs +1 -10
  132. package/dist/utils/component-token.cjs +1 -0
  133. package/dist/utils/component-token.d.ts +2 -1
  134. package/dist/utils/component-token.mjs +1 -0
  135. package/dist/utils/date.cjs +13 -0
  136. package/dist/utils/date.d.ts +6 -0
  137. package/dist/utils/date.mjs +13 -0
  138. package/package.json +25 -25
  139. package/dist/components/icon/icons/three-dimension-rotation.d.ts +0 -3
  140. /package/dist/{components/steps/types.d.ts → types/steps.d.ts} +0 -0
  141. /package/dist/{components/switch/types.d.ts → types/switch.d.ts} +0 -0
  142. /package/dist/{components/tabs/types.d.ts → types/tabs.d.ts} +0 -0
  143. /package/dist/{components/tag/types.d.ts → types/tag.d.ts} +0 -0
  144. /package/dist/{components/time-picker/types.d.ts → types/time-picker.d.ts} +0 -0
  145. /package/dist/{components/timeline/types.d.ts → types/timeline.d.ts} +0 -0
  146. /package/dist/{components/tooltip/types.d.ts → types/tooltip.d.ts} +0 -0
  147. /package/dist/{components/transfer/types.d.ts → types/transfer.d.ts} +0 -0
  148. /package/dist/{components/visually-hidden/types.d.ts → types/visually-hidden.d.ts} +0 -0
  149. /package/dist/{components/watermark/types.d.ts → types/watermark.d.ts} +0 -0
@@ -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 };
@@ -6,7 +6,7 @@ var holder = require('../notification/holder.cjs');
6
6
  var className = require('../../utils/class-name.cjs');
7
7
  var context$1 = require('../../locale/context.cjs');
8
8
  var zh_CN = require('../../locale/locales/zh_CN.cjs');
9
- var deepmerge = require('deepmerge');
9
+ var relax = require('@aiszlab/relax');
10
10
 
11
11
  var ConfigProvider = function ConfigProvider(_ref) {
12
12
  var children = _ref.children,
@@ -18,7 +18,7 @@ var ConfigProvider = function ConfigProvider(_ref) {
18
18
  return className.addPrefix(className.CLASS_NAMES, prefix);
19
19
  }, [prefix]);
20
20
  var locale = React.useMemo(function () {
21
- return deepmerge(zh_CN.default, _locale !== null && _locale !== void 0 ? _locale : {});
21
+ return relax.merge(zh_CN.default, _locale !== null && _locale !== void 0 ? _locale : {});
22
22
  }, [_locale]);
23
23
  return /*#__PURE__*/React.createElement(context.default.Provider, {
24
24
  value: {
@@ -4,7 +4,7 @@ import Holder from '../notification/holder.mjs';
4
4
  import { DEFAULT_CLASS_NAMES, addPrefix, CLASS_NAMES } from '../../utils/class-name.mjs';
5
5
  import { LocaleContext } from '../../locale/context.mjs';
6
6
  import zh_CN from '../../locale/locales/zh_CN.mjs';
7
- import deepmerge from 'deepmerge';
7
+ import { merge } from '@aiszlab/relax';
8
8
 
9
9
  var ConfigProvider = function ConfigProvider(_ref) {
10
10
  var children = _ref.children,
@@ -16,7 +16,7 @@ var ConfigProvider = function ConfigProvider(_ref) {
16
16
  return addPrefix(CLASS_NAMES, prefix);
17
17
  }, [prefix]);
18
18
  var locale = useMemo(function () {
19
- return deepmerge(zh_CN, _locale !== null && _locale !== void 0 ? _locale : {});
19
+ return merge(zh_CN, _locale !== null && _locale !== void 0 ? _locale : {});
20
20
  }, [_locale]);
21
21
  return /*#__PURE__*/React.createElement(Context.Provider, {
22
22
  value: {