@easy-editor/materials-dashboard-scroll-list 0.0.2

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 (44) hide show
  1. package/.vite/plugins/vite-plugin-external-deps.ts +224 -0
  2. package/.vite/plugins/vite-plugin-material-dev.ts +218 -0
  3. package/CHANGELOG.md +7 -0
  4. package/LICENSE +9 -0
  5. package/dist/component.esm.js +176 -0
  6. package/dist/component.esm.js.map +1 -0
  7. package/dist/component.js +185 -0
  8. package/dist/component.js.map +1 -0
  9. package/dist/component.min.js +2 -0
  10. package/dist/component.min.js.map +1 -0
  11. package/dist/index.cjs +669 -0
  12. package/dist/index.cjs.map +1 -0
  13. package/dist/index.esm.js +666 -0
  14. package/dist/index.esm.js.map +1 -0
  15. package/dist/index.js +674 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/index.min.js +2 -0
  18. package/dist/index.min.js.map +1 -0
  19. package/dist/meta.esm.js +494 -0
  20. package/dist/meta.esm.js.map +1 -0
  21. package/dist/meta.js +505 -0
  22. package/dist/meta.js.map +1 -0
  23. package/dist/meta.min.js +2 -0
  24. package/dist/meta.min.js.map +1 -0
  25. package/dist/src/component.d.ts +51 -0
  26. package/dist/src/configure.d.ts +7 -0
  27. package/dist/src/constants.d.ts +16 -0
  28. package/dist/src/index.d.ts +6 -0
  29. package/dist/src/meta.d.ts +7 -0
  30. package/dist/src/snippets.d.ts +7 -0
  31. package/package.json +65 -0
  32. package/rollup.config.js +222 -0
  33. package/src/component.module.css +184 -0
  34. package/src/component.tsx +189 -0
  35. package/src/configure.ts +439 -0
  36. package/src/constants.ts +18 -0
  37. package/src/index.tsx +7 -0
  38. package/src/meta.ts +28 -0
  39. package/src/snippets.ts +64 -0
  40. package/src/type.d.ts +8 -0
  41. package/tsconfig.build.json +12 -0
  42. package/tsconfig.json +9 -0
  43. package/tsconfig.test.json +7 -0
  44. package/vite.config.ts +54 -0
@@ -0,0 +1,185 @@
1
+ /* @easy-editor/materials-dashboard-ranking-list v0.0.1 (component) */
2
+ (function (global, factory) {
3
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime')) :
4
+ typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime'], factory) :
5
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.EasyEditorMaterialsRankingListComponent = {}, global.jsxRuntime));
6
+ })(this, (function (exports, jsxRuntime) { 'use strict';
7
+
8
+ function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
9
+
10
+ function cn(...inputs) {
11
+ return clsx(inputs);
12
+ }
13
+
14
+ function styleInject(css, ref) {
15
+ if (ref === void 0) ref = {};
16
+ var insertAt = ref.insertAt;
17
+ if (typeof document === 'undefined') {
18
+ return;
19
+ }
20
+ var head = document.head || document.getElementsByTagName('head')[0];
21
+ var style = document.createElement('style');
22
+ style.type = 'text/css';
23
+ if (insertAt === 'top') {
24
+ if (head.firstChild) {
25
+ head.insertBefore(style, head.firstChild);
26
+ } else {
27
+ head.appendChild(style);
28
+ }
29
+ } else {
30
+ head.appendChild(style);
31
+ }
32
+ if (style.styleSheet) {
33
+ style.styleSheet.cssText = css;
34
+ } else {
35
+ style.appendChild(document.createTextNode(css));
36
+ }
37
+ }
38
+
39
+ var css_248z = ".component-module__container___VbZSk{backdrop-filter:blur(10px);background:rgba(10,10,26,.95);border:1px solid rgba(26,26,62,.8);border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.3);box-sizing:border-box;height:100%;overflow:hidden;padding:16px;width:100%}.component-module__list___ZzqLO{display:flex;flex-direction:column;gap:10px;height:100%}.component-module__item___-0hiq{align-items:center;background:rgba(15,15,42,.9);border:1px solid rgba(26,26,62,.6);border-radius:8px;display:flex;gap:14px;overflow:hidden;padding:12px 16px;position:relative;transition:all .3s ease}.component-module__item___-0hiq:before{background:linear-gradient(180deg,transparent,rgba(0,212,255,.5),transparent);bottom:0;content:\"\";left:0;opacity:0;position:absolute;top:0;transition:opacity .3s ease;width:3px}.component-module__item___-0hiq:hover{background:rgba(20,20,52,.95);border-color:rgba(0,212,255,.3);transform:translateX(4px)}.component-module__item___-0hiq:hover:before{opacity:1}.component-module__rankBadge___qWXYW{align-items:center;border-radius:6px;display:flex;font-weight:700;height:32px;justify-content:center;min-width:32px;transition:transform .3s ease}.component-module__item___-0hiq:hover .component-module__rankBadge___qWXYW{transform:scale(1.1)}.component-module__rankBadgeTopThree___kYqJt{font-size:20px;text-shadow:0 2px 8px rgba(0,0,0,.5)}.component-module__rankBadgeNormal___Fl3nh{background:rgba(26,26,62,.8);border:1px solid rgba(136,146,176,.2);color:#8892b0;font-size:14px}.component-module__rankGold___lLkRo{color:gold;filter:drop-shadow(0 0 6px rgba(255,215,0,.6))}.component-module__rankSilver___QUAyV{color:#e8e8e8;filter:drop-shadow(0 0 6px rgba(192,192,192,.6))}.component-module__rankBronze___Wc-LC{color:#f96;filter:drop-shadow(0 0 6px rgba(205,127,50,.6))}.component-module__name___6zmww{color:#e6e6e6;flex:1;font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;transition:color .3s ease;white-space:nowrap}.component-module__item___-0hiq:hover .component-module__name___6zmww{color:#fff}.component-module__valueContainer___xBbFD{align-items:flex-end;display:flex;flex-direction:column;gap:6px;min-width:120px}.component-module__value___Fg70k{color:#00d4ff;font-family:Courier New,Courier,monospace;font-size:15px;font-weight:700;text-shadow:0 0 10px rgba(0,212,255,.3);transition:all .3s ease}.component-module__item___-0hiq:hover .component-module__value___Fg70k{text-shadow:0 0 15px rgba(0,212,255,.5);transform:scale(1.05)}.component-module__progressBar___wROZC{background:rgba(26,26,62,.8);border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3);height:5px;overflow:hidden;width:100%}.component-module__progressFill___F8n5d{border-radius:3px;height:100%;position:relative;transition:width .5s cubic-bezier(.4,0,.2,1)}.component-module__progressFill___F8n5d:after{animation:component-module__shimmer___7hQ6G 2s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);bottom:0;content:\"\";left:0;position:absolute;right:0;top:0}@keyframes component-module__shimmer___7hQ6G{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}";
40
+ var styles = {"container":"component-module__container___VbZSk","list":"component-module__list___ZzqLO","item":"component-module__item___-0hiq","rankBadge":"component-module__rankBadge___qWXYW","rankBadgeTopThree":"component-module__rankBadgeTopThree___kYqJt","rankBadgeNormal":"component-module__rankBadgeNormal___Fl3nh","rankGold":"component-module__rankGold___lLkRo","rankSilver":"component-module__rankSilver___QUAyV","rankBronze":"component-module__rankBronze___Wc-LC","name":"component-module__name___6zmww","valueContainer":"component-module__valueContainer___xBbFD","value":"component-module__value___Fg70k","progressBar":"component-module__progressBar___wROZC","progressFill":"component-module__progressFill___F8n5d"};
41
+ styleInject(css_248z);
42
+
43
+ /**
44
+ * Scroll List Component
45
+ * 滚动列表组件 - 用于展示排行榜、数据列表等
46
+ */
47
+
48
+ const DEFAULT_DATA = [{
49
+ rank: 1,
50
+ name: '北京市',
51
+ value: 9800
52
+ }, {
53
+ rank: 2,
54
+ name: '上海市',
55
+ value: 8500
56
+ }, {
57
+ rank: 3,
58
+ name: '广州市',
59
+ value: 7200
60
+ }, {
61
+ rank: 4,
62
+ name: '深圳市',
63
+ value: 6100
64
+ }, {
65
+ rank: 5,
66
+ name: '杭州市',
67
+ value: 4800
68
+ }];
69
+ const MEDAL_EMOJI = {
70
+ 1: '🥇',
71
+ 2: '🥈',
72
+ 3: '🥉'
73
+ };
74
+ const getRankClass = rank => {
75
+ if (rank === 1) return styles.rankGold;
76
+ if (rank === 2) return styles.rankSilver;
77
+ if (rank === 3) return styles.rankBronze;
78
+ return '';
79
+ };
80
+ const formatDisplayValue = (value, format, prefix, suffix) => {
81
+ let formatted;
82
+ switch (format) {
83
+ case 'currency':
84
+ formatted = value.toLocaleString('zh-CN', {
85
+ minimumFractionDigits: 2,
86
+ maximumFractionDigits: 2
87
+ });
88
+ break;
89
+ case 'percent':
90
+ formatted = `${value}%`;
91
+ break;
92
+ default:
93
+ formatted = value.toLocaleString();
94
+ }
95
+ return `${prefix}${formatted}${suffix}`;
96
+ };
97
+ const ScrollList = ({
98
+ ref,
99
+ data = DEFAULT_DATA,
100
+ maxItems = 5,
101
+ showRank = true,
102
+ showMedal = true,
103
+ progressBarEnable = true,
104
+ progressBarGradient = true,
105
+ progressBarColors = ['#00d4ff', '#9b59b6'],
106
+ valueFormat = 'number',
107
+ valuePrefix = '',
108
+ valueSuffix = '',
109
+ nameColor = '#e6e6e6',
110
+ valueColor = '#00d4ff',
111
+ backgroundColor = 'rgba(10, 10, 26, 0.95)',
112
+ borderColor = 'rgba(26, 26, 62, 0.8)',
113
+ itemBackgroundColor = 'rgba(15, 15, 42, 0.9)',
114
+ itemBorderColor = 'rgba(26, 26, 62, 0.6)',
115
+ glowEnable = false,
116
+ style: externalStyle
117
+ }) => {
118
+ const displayData = data.slice(0, maxItems);
119
+ const maxValue = Math.max(...displayData.map(item => item.value), 1);
120
+ const getProgressBarStyle = value => {
121
+ const percentage = value / maxValue * 100;
122
+ return {
123
+ width: `${percentage}%`,
124
+ background: progressBarGradient ? `linear-gradient(90deg, ${progressBarColors[0]}, ${progressBarColors[1]})` : progressBarColors[0],
125
+ boxShadow: glowEnable ? `0 0 8px ${progressBarColors[0]}60` : undefined
126
+ };
127
+ };
128
+ const containerStyle = {
129
+ ...externalStyle,
130
+ backgroundColor,
131
+ borderColor
132
+ };
133
+ const itemStyle = {
134
+ backgroundColor: itemBackgroundColor,
135
+ borderColor: itemBorderColor
136
+ };
137
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
138
+ className: styles.container,
139
+ ref: ref,
140
+ style: containerStyle,
141
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
142
+ className: styles.list,
143
+ children: displayData.map(item => {
144
+ const isTopThree = item.rank <= 3;
145
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
146
+ className: styles.item,
147
+ style: itemStyle,
148
+ children: [showRank ? /*#__PURE__*/jsxRuntime.jsx("div", {
149
+ className: cn(styles.rankBadge, isTopThree ? styles.rankBadgeTopThree : styles.rankBadgeNormal, getRankClass(item.rank)),
150
+ children: showMedal && isTopThree ? MEDAL_EMOJI[item.rank] : item.rank
151
+ }) : null, /*#__PURE__*/jsxRuntime.jsx("div", {
152
+ className: styles.name,
153
+ style: {
154
+ color: nameColor
155
+ },
156
+ children: item.name
157
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
158
+ className: styles.valueContainer,
159
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
160
+ className: styles.value,
161
+ style: {
162
+ color: valueColor
163
+ },
164
+ children: formatDisplayValue(item.value, valueFormat, valuePrefix, valueSuffix)
165
+ }), progressBarEnable ? /*#__PURE__*/jsxRuntime.jsx("div", {
166
+ className: styles.progressBar,
167
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
168
+ className: styles.progressFill,
169
+ style: getProgressBarStyle(item.value)
170
+ })
171
+ }) : null]
172
+ })]
173
+ }, item.rank);
174
+ })
175
+ })
176
+ });
177
+ };
178
+
179
+ exports.ScrollList = ScrollList;
180
+ exports.default = ScrollList;
181
+
182
+ Object.defineProperty(exports, '__esModule', { value: true });
183
+
184
+ }));
185
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../shared/src/lib/utils.ts","../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/component.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from 'clsx'\n\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs)\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Scroll List Component\n * 滚动列表组件 - 用于展示排行榜、数据列表等\n */\n\nimport type { CSSProperties, Ref } from 'react'\nimport { cn } from '@easy-editor/materials-shared'\nimport styles from './component.module.css'\n\nexport interface ScrollListItem {\n rank: number\n name: string\n value: number\n}\n\nexport interface ScrollListProps {\n ref?: Ref<HTMLDivElement>\n /** 列表数据 */\n data?: ScrollListItem[]\n /** 最大显示条数 */\n maxItems?: number\n /** 是否显示排名 */\n showRank?: boolean\n /** 是否显示奖牌图标 */\n showMedal?: boolean\n /** 是否显示进度条 */\n progressBarEnable?: boolean\n /** 是否使用渐变进度条 */\n progressBarGradient?: boolean\n /** 进度条颜色 [起始色, 结束色] */\n progressBarColors?: [string, string]\n /** 数值格式化 */\n valueFormat?: 'number' | 'currency' | 'percent'\n /** 数值前缀 */\n valuePrefix?: string\n /** 数值后缀 */\n valueSuffix?: string\n /** 名称颜色 */\n nameColor?: string\n /** 数值颜色 */\n valueColor?: string\n /** 背景颜色 */\n backgroundColor?: string\n /** 边框颜色 */\n borderColor?: string\n /** 行背景颜色 */\n itemBackgroundColor?: string\n /** 行边框颜色 */\n itemBorderColor?: string\n /** 是否显示发光效果 */\n glowEnable?: boolean\n /** 外部样式 */\n style?: CSSProperties\n}\n\nconst DEFAULT_DATA: ScrollListItem[] = [\n { rank: 1, name: '北京市', value: 9800 },\n { rank: 2, name: '上海市', value: 8500 },\n { rank: 3, name: '广州市', value: 7200 },\n { rank: 4, name: '深圳市', value: 6100 },\n { rank: 5, name: '杭州市', value: 4800 },\n]\n\nconst MEDAL_EMOJI: Record<number, string> = {\n 1: '🥇',\n 2: '🥈',\n 3: '🥉',\n}\n\nconst getRankClass = (rank: number): string => {\n if (rank === 1) return styles.rankGold\n if (rank === 2) return styles.rankSilver\n if (rank === 3) return styles.rankBronze\n return ''\n}\n\nconst formatDisplayValue = (\n value: number,\n format: string,\n prefix: string,\n suffix: string,\n): string => {\n let formatted: string\n switch (format) {\n case 'currency':\n formatted = value.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })\n break\n case 'percent':\n formatted = `${value}%`\n break\n default:\n formatted = value.toLocaleString()\n }\n return `${prefix}${formatted}${suffix}`\n}\n\nexport const ScrollList: React.FC<ScrollListProps> = ({\n ref,\n data = DEFAULT_DATA,\n maxItems = 5,\n showRank = true,\n showMedal = true,\n progressBarEnable = true,\n progressBarGradient = true,\n progressBarColors = ['#00d4ff', '#9b59b6'],\n valueFormat = 'number',\n valuePrefix = '',\n valueSuffix = '',\n nameColor = '#e6e6e6',\n valueColor = '#00d4ff',\n backgroundColor = 'rgba(10, 10, 26, 0.95)',\n borderColor = 'rgba(26, 26, 62, 0.8)',\n itemBackgroundColor = 'rgba(15, 15, 42, 0.9)',\n itemBorderColor = 'rgba(26, 26, 62, 0.6)',\n glowEnable = false,\n style: externalStyle,\n}) => {\n const displayData = data.slice(0, maxItems)\n const maxValue = Math.max(...displayData.map(item => item.value), 1)\n\n const getProgressBarStyle = (value: number): CSSProperties => {\n const percentage = (value / maxValue) * 100\n return {\n width: `${percentage}%`,\n background: progressBarGradient\n ? `linear-gradient(90deg, ${progressBarColors[0]}, ${progressBarColors[1]})`\n : progressBarColors[0],\n boxShadow: glowEnable ? `0 0 8px ${progressBarColors[0]}60` : undefined,\n }\n }\n\n const containerStyle: CSSProperties = {\n ...externalStyle,\n backgroundColor,\n borderColor,\n }\n\n const itemStyle: CSSProperties = {\n backgroundColor: itemBackgroundColor,\n borderColor: itemBorderColor,\n }\n\n return (\n <div className={styles.container} ref={ref} style={containerStyle}>\n <div className={styles.list}>\n {displayData.map(item => {\n const isTopThree = item.rank <= 3\n\n return (\n <div className={styles.item} key={item.rank} style={itemStyle}>\n {/* Rank Badge */}\n {showRank ? (\n <div\n className={cn(\n styles.rankBadge,\n isTopThree ? styles.rankBadgeTopThree : styles.rankBadgeNormal,\n getRankClass(item.rank),\n )}\n >\n {showMedal && isTopThree ? MEDAL_EMOJI[item.rank] : item.rank}\n </div>\n ) : null}\n\n {/* Name */}\n <div className={styles.name} style={{ color: nameColor }}>{item.name}</div>\n\n {/* Value and Progress */}\n <div className={styles.valueContainer}>\n <span className={styles.value} style={{ color: valueColor }}>\n {formatDisplayValue(item.value, valueFormat, valuePrefix, valueSuffix)}\n </span>\n {progressBarEnable ? (\n <div className={styles.progressBar}>\n <div className={styles.progressFill} style={getProgressBarStyle(item.value)} />\n </div>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport default ScrollList\n"],"names":["cn","inputs","clsx","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","DEFAULT_DATA","rank","name","value","MEDAL_EMOJI","getRankClass","styles","rankGold","rankSilver","rankBronze","formatDisplayValue","format","prefix","suffix","formatted","toLocaleString","minimumFractionDigits","maximumFractionDigits","ScrollList","data","maxItems","showRank","showMedal","progressBarEnable","progressBarGradient","progressBarColors","valueFormat","valuePrefix","valueSuffix","nameColor","valueColor","backgroundColor","borderColor","itemBackgroundColor","itemBorderColor","glowEnable","externalStyle","displayData","slice","maxValue","Math","max","map","item","getProgressBarStyle","percentage","width","background","boxShadow","undefined","containerStyle","itemStyle","_jsx","className","container","children","list","isTopThree","_jsxs","rankBadge","rankBadgeTopThree","rankBadgeNormal","color","valueContainer","progressBar","progressFill"],"mappings":"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","x_google_ignoreList":[0,2]}
@@ -0,0 +1,2 @@
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("react/jsx-runtime")):"function"==typeof define&&define.amd?define(["exports","react/jsx-runtime"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).EasyEditorMaterialsRankingListComponent={},e.jsxRuntime)}(this,function(e,o){"use strict";function n(e){var o,r,t="";if("string"==typeof e||"number"==typeof e)t+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(o=0;o<a;o++)e[o]&&(r=n(e[o]))&&(t&&(t+=" "),t+=r)}else for(r in e)e[r]&&(t&&(t+=" "),t+=r);return t}function r(...e){return function(){for(var e,o,r=0,t="",a=arguments.length;r<a;r++)(e=arguments[r])&&(o=n(e))&&(t&&(t+=" "),t+=o);return t}(e)}var t="component-module__container___VbZSk",a="component-module__list___ZzqLO",l="component-module__item___-0hiq",i="component-module__rankBadge___qWXYW",_="component-module__rankBadgeTopThree___kYqJt",d="component-module__rankBadgeNormal___Fl3nh",s="component-module__rankGold___lLkRo",m="component-module__rankSilver___QUAyV",c="component-module__rankBronze___Wc-LC",p="component-module__name___6zmww",u="component-module__valueContainer___xBbFD",f="component-module__value___Fg70k",g="component-module__progressBar___wROZC",h="component-module__progressFill___F8n5d";!function(e,o){void 0===o&&(o={});var n=o.insertAt;if("undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css","top"===n&&r.firstChild?r.insertBefore(t,r.firstChild):r.appendChild(t),t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e))}}('.component-module__container___VbZSk{backdrop-filter:blur(10px);background:rgba(10,10,26,.95);border:1px solid rgba(26,26,62,.8);border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.3);box-sizing:border-box;height:100%;overflow:hidden;padding:16px;width:100%}.component-module__list___ZzqLO{display:flex;flex-direction:column;gap:10px;height:100%}.component-module__item___-0hiq{align-items:center;background:rgba(15,15,42,.9);border:1px solid rgba(26,26,62,.6);border-radius:8px;display:flex;gap:14px;overflow:hidden;padding:12px 16px;position:relative;transition:all .3s ease}.component-module__item___-0hiq:before{background:linear-gradient(180deg,transparent,rgba(0,212,255,.5),transparent);bottom:0;content:"";left:0;opacity:0;position:absolute;top:0;transition:opacity .3s ease;width:3px}.component-module__item___-0hiq:hover{background:rgba(20,20,52,.95);border-color:rgba(0,212,255,.3);transform:translateX(4px)}.component-module__item___-0hiq:hover:before{opacity:1}.component-module__rankBadge___qWXYW{align-items:center;border-radius:6px;display:flex;font-weight:700;height:32px;justify-content:center;min-width:32px;transition:transform .3s ease}.component-module__item___-0hiq:hover .component-module__rankBadge___qWXYW{transform:scale(1.1)}.component-module__rankBadgeTopThree___kYqJt{font-size:20px;text-shadow:0 2px 8px rgba(0,0,0,.5)}.component-module__rankBadgeNormal___Fl3nh{background:rgba(26,26,62,.8);border:1px solid rgba(136,146,176,.2);color:#8892b0;font-size:14px}.component-module__rankGold___lLkRo{color:gold;filter:drop-shadow(0 0 6px rgba(255,215,0,.6))}.component-module__rankSilver___QUAyV{color:#e8e8e8;filter:drop-shadow(0 0 6px rgba(192,192,192,.6))}.component-module__rankBronze___Wc-LC{color:#f96;filter:drop-shadow(0 0 6px rgba(205,127,50,.6))}.component-module__name___6zmww{color:#e6e6e6;flex:1;font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;transition:color .3s ease;white-space:nowrap}.component-module__item___-0hiq:hover .component-module__name___6zmww{color:#fff}.component-module__valueContainer___xBbFD{align-items:flex-end;display:flex;flex-direction:column;gap:6px;min-width:120px}.component-module__value___Fg70k{color:#00d4ff;font-family:Courier New,Courier,monospace;font-size:15px;font-weight:700;text-shadow:0 0 10px rgba(0,212,255,.3);transition:all .3s ease}.component-module__item___-0hiq:hover .component-module__value___Fg70k{text-shadow:0 0 15px rgba(0,212,255,.5);transform:scale(1.05)}.component-module__progressBar___wROZC{background:rgba(26,26,62,.8);border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3);height:5px;overflow:hidden;width:100%}.component-module__progressFill___F8n5d{border-radius:3px;height:100%;position:relative;transition:width .5s cubic-bezier(.4,0,.2,1)}.component-module__progressFill___F8n5d:after{animation:component-module__shimmer___7hQ6G 2s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);bottom:0;content:"";left:0;position:absolute;right:0;top:0}@keyframes component-module__shimmer___7hQ6G{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}');const b=[{rank:1,name:"北京市",value:9800},{rank:2,name:"上海市",value:8500},{rank:3,name:"广州市",value:7200},{rank:4,name:"深圳市",value:6100},{rank:5,name:"杭州市",value:4800}],x={1:"🥇",2:"🥈",3:"🥉"},k=(e,o,n,r)=>{let t;switch(o){case"currency":t=e.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2});break;case"percent":t=`${e}%`;break;default:t=e.toLocaleString()}return`${n}${t}${r}`},v=({ref:e,data:n=b,maxItems:v=5,showRank:w=!0,showMedal:y=!0,progressBarEnable:C=!0,progressBarGradient:B=!0,progressBarColors:j=["#00d4ff","#9b59b6"],valueFormat:q="number",valuePrefix:F="",valueSuffix:N="",nameColor:z="#e6e6e6",valueColor:S="#00d4ff",backgroundColor:L="rgba(10, 10, 26, 0.95)",borderColor:T="rgba(26, 26, 62, 0.8)",itemBackgroundColor:W="rgba(15, 15, 42, 0.9)",itemBorderColor:R="rgba(26, 26, 62, 0.6)",glowEnable:$=!1,style:E})=>{const X=n.slice(0,v),Z=Math.max(...X.map(e=>e.value),1),A={...E,backgroundColor:L,borderColor:T},G={backgroundColor:W,borderColor:R};return o.jsx("div",{className:t,ref:e,style:A,children:o.jsx("div",{className:a,children:X.map(e=>{const n=e.rank<=3;return o.jsxs("div",{className:l,style:G,children:[w?o.jsx("div",{className:r(i,n?_:d,(a=e.rank,1===a?s:2===a?m:3===a?c:"")),children:y&&n?x[e.rank]:e.rank}):null,o.jsx("div",{className:p,style:{color:z},children:e.name}),o.jsxs("div",{className:u,children:[o.jsx("span",{className:f,style:{color:S},children:k(e.value,q,F,N)}),C?o.jsx("div",{className:g,children:o.jsx("div",{className:h,style:(t=e.value,{width:t/Z*100+"%",background:B?`linear-gradient(90deg, ${j[0]}, ${j[1]})`:j[0],boxShadow:$?`0 0 8px ${j[0]}60`:void 0})})}):null]})]},e.rank);var t,a})})})};e.ScrollList=v,e.default=v,Object.defineProperty(e,"__esModule",{value:!0})});
2
+ //# sourceMappingURL=component.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.min.js","sources":["../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../shared/src/lib/utils.ts","../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/component.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from 'clsx'\n\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs)\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Scroll List Component\n * 滚动列表组件 - 用于展示排行榜、数据列表等\n */\n\nimport type { CSSProperties, Ref } from 'react'\nimport { cn } from '@easy-editor/materials-shared'\nimport styles from './component.module.css'\n\nexport interface ScrollListItem {\n rank: number\n name: string\n value: number\n}\n\nexport interface ScrollListProps {\n ref?: Ref<HTMLDivElement>\n /** 列表数据 */\n data?: ScrollListItem[]\n /** 最大显示条数 */\n maxItems?: number\n /** 是否显示排名 */\n showRank?: boolean\n /** 是否显示奖牌图标 */\n showMedal?: boolean\n /** 是否显示进度条 */\n progressBarEnable?: boolean\n /** 是否使用渐变进度条 */\n progressBarGradient?: boolean\n /** 进度条颜色 [起始色, 结束色] */\n progressBarColors?: [string, string]\n /** 数值格式化 */\n valueFormat?: 'number' | 'currency' | 'percent'\n /** 数值前缀 */\n valuePrefix?: string\n /** 数值后缀 */\n valueSuffix?: string\n /** 名称颜色 */\n nameColor?: string\n /** 数值颜色 */\n valueColor?: string\n /** 背景颜色 */\n backgroundColor?: string\n /** 边框颜色 */\n borderColor?: string\n /** 行背景颜色 */\n itemBackgroundColor?: string\n /** 行边框颜色 */\n itemBorderColor?: string\n /** 是否显示发光效果 */\n glowEnable?: boolean\n /** 外部样式 */\n style?: CSSProperties\n}\n\nconst DEFAULT_DATA: ScrollListItem[] = [\n { rank: 1, name: '北京市', value: 9800 },\n { rank: 2, name: '上海市', value: 8500 },\n { rank: 3, name: '广州市', value: 7200 },\n { rank: 4, name: '深圳市', value: 6100 },\n { rank: 5, name: '杭州市', value: 4800 },\n]\n\nconst MEDAL_EMOJI: Record<number, string> = {\n 1: '🥇',\n 2: '🥈',\n 3: '🥉',\n}\n\nconst getRankClass = (rank: number): string => {\n if (rank === 1) return styles.rankGold\n if (rank === 2) return styles.rankSilver\n if (rank === 3) return styles.rankBronze\n return ''\n}\n\nconst formatDisplayValue = (\n value: number,\n format: string,\n prefix: string,\n suffix: string,\n): string => {\n let formatted: string\n switch (format) {\n case 'currency':\n formatted = value.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })\n break\n case 'percent':\n formatted = `${value}%`\n break\n default:\n formatted = value.toLocaleString()\n }\n return `${prefix}${formatted}${suffix}`\n}\n\nexport const ScrollList: React.FC<ScrollListProps> = ({\n ref,\n data = DEFAULT_DATA,\n maxItems = 5,\n showRank = true,\n showMedal = true,\n progressBarEnable = true,\n progressBarGradient = true,\n progressBarColors = ['#00d4ff', '#9b59b6'],\n valueFormat = 'number',\n valuePrefix = '',\n valueSuffix = '',\n nameColor = '#e6e6e6',\n valueColor = '#00d4ff',\n backgroundColor = 'rgba(10, 10, 26, 0.95)',\n borderColor = 'rgba(26, 26, 62, 0.8)',\n itemBackgroundColor = 'rgba(15, 15, 42, 0.9)',\n itemBorderColor = 'rgba(26, 26, 62, 0.6)',\n glowEnable = false,\n style: externalStyle,\n}) => {\n const displayData = data.slice(0, maxItems)\n const maxValue = Math.max(...displayData.map(item => item.value), 1)\n\n const getProgressBarStyle = (value: number): CSSProperties => {\n const percentage = (value / maxValue) * 100\n return {\n width: `${percentage}%`,\n background: progressBarGradient\n ? `linear-gradient(90deg, ${progressBarColors[0]}, ${progressBarColors[1]})`\n : progressBarColors[0],\n boxShadow: glowEnable ? `0 0 8px ${progressBarColors[0]}60` : undefined,\n }\n }\n\n const containerStyle: CSSProperties = {\n ...externalStyle,\n backgroundColor,\n borderColor,\n }\n\n const itemStyle: CSSProperties = {\n backgroundColor: itemBackgroundColor,\n borderColor: itemBorderColor,\n }\n\n return (\n <div className={styles.container} ref={ref} style={containerStyle}>\n <div className={styles.list}>\n {displayData.map(item => {\n const isTopThree = item.rank <= 3\n\n return (\n <div className={styles.item} key={item.rank} style={itemStyle}>\n {/* Rank Badge */}\n {showRank ? (\n <div\n className={cn(\n styles.rankBadge,\n isTopThree ? styles.rankBadgeTopThree : styles.rankBadgeNormal,\n getRankClass(item.rank),\n )}\n >\n {showMedal && isTopThree ? MEDAL_EMOJI[item.rank] : item.rank}\n </div>\n ) : null}\n\n {/* Name */}\n <div className={styles.name} style={{ color: nameColor }}>{item.name}</div>\n\n {/* Value and Progress */}\n <div className={styles.valueContainer}>\n <span className={styles.value} style={{ color: valueColor }}>\n {formatDisplayValue(item.value, valueFormat, valuePrefix, valueSuffix)}\n </span>\n {progressBarEnable ? (\n <div className={styles.progressBar}>\n <div className={styles.progressFill} style={getProgressBarStyle(item.value)} />\n </div>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nexport default ScrollList\n"],"names":["r","e","t","f","n","Array","isArray","o","length","cn","inputs","arguments","clsx","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","DEFAULT_DATA","rank","name","value","MEDAL_EMOJI","formatDisplayValue","format","prefix","suffix","formatted","toLocaleString","minimumFractionDigits","maximumFractionDigits","ScrollList","data","maxItems","showRank","showMedal","progressBarEnable","progressBarGradient","progressBarColors","valueFormat","valuePrefix","valueSuffix","nameColor","valueColor","backgroundColor","borderColor","itemBackgroundColor","itemBorderColor","glowEnable","externalStyle","displayData","slice","maxValue","Math","max","map","item","containerStyle","itemStyle","_jsx","className","styles","children","isTopThree","_jsxs","color","width","background","boxShadow","undefined"],"mappings":"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","x_google_ignoreList":[0,2]}