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

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.
@@ -1,176 +0,0 @@
1
- /* @easy-editor/materials-dashboard-ranking-list v0.0.1 (component, esm) */
2
- import { jsx, jsxs } from 'react/jsx-runtime';
3
-
4
- 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}
5
-
6
- function cn(...inputs) {
7
- return clsx(inputs);
8
- }
9
-
10
- function styleInject(css, ref) {
11
- if (ref === void 0) ref = {};
12
- var insertAt = ref.insertAt;
13
- if (typeof document === 'undefined') {
14
- return;
15
- }
16
- var head = document.head || document.getElementsByTagName('head')[0];
17
- var style = document.createElement('style');
18
- style.type = 'text/css';
19
- if (insertAt === 'top') {
20
- if (head.firstChild) {
21
- head.insertBefore(style, head.firstChild);
22
- } else {
23
- head.appendChild(style);
24
- }
25
- } else {
26
- head.appendChild(style);
27
- }
28
- if (style.styleSheet) {
29
- style.styleSheet.cssText = css;
30
- } else {
31
- style.appendChild(document.createTextNode(css));
32
- }
33
- }
34
-
35
- 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%)}}";
36
- 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"};
37
- styleInject(css_248z);
38
-
39
- /**
40
- * Scroll List Component
41
- * 滚动列表组件 - 用于展示排行榜、数据列表等
42
- */
43
-
44
- const DEFAULT_DATA = [{
45
- rank: 1,
46
- name: '北京市',
47
- value: 9800
48
- }, {
49
- rank: 2,
50
- name: '上海市',
51
- value: 8500
52
- }, {
53
- rank: 3,
54
- name: '广州市',
55
- value: 7200
56
- }, {
57
- rank: 4,
58
- name: '深圳市',
59
- value: 6100
60
- }, {
61
- rank: 5,
62
- name: '杭州市',
63
- value: 4800
64
- }];
65
- const MEDAL_EMOJI = {
66
- 1: '🥇',
67
- 2: '🥈',
68
- 3: '🥉'
69
- };
70
- const getRankClass = rank => {
71
- if (rank === 1) return styles.rankGold;
72
- if (rank === 2) return styles.rankSilver;
73
- if (rank === 3) return styles.rankBronze;
74
- return '';
75
- };
76
- const formatDisplayValue = (value, format, prefix, suffix) => {
77
- let formatted;
78
- switch (format) {
79
- case 'currency':
80
- formatted = value.toLocaleString('zh-CN', {
81
- minimumFractionDigits: 2,
82
- maximumFractionDigits: 2
83
- });
84
- break;
85
- case 'percent':
86
- formatted = `${value}%`;
87
- break;
88
- default:
89
- formatted = value.toLocaleString();
90
- }
91
- return `${prefix}${formatted}${suffix}`;
92
- };
93
- const ScrollList = ({
94
- ref,
95
- data = DEFAULT_DATA,
96
- maxItems = 5,
97
- showRank = true,
98
- showMedal = true,
99
- progressBarEnable = true,
100
- progressBarGradient = true,
101
- progressBarColors = ['#00d4ff', '#9b59b6'],
102
- valueFormat = 'number',
103
- valuePrefix = '',
104
- valueSuffix = '',
105
- nameColor = '#e6e6e6',
106
- valueColor = '#00d4ff',
107
- backgroundColor = 'rgba(10, 10, 26, 0.95)',
108
- borderColor = 'rgba(26, 26, 62, 0.8)',
109
- itemBackgroundColor = 'rgba(15, 15, 42, 0.9)',
110
- itemBorderColor = 'rgba(26, 26, 62, 0.6)',
111
- glowEnable = false,
112
- style: externalStyle
113
- }) => {
114
- const displayData = data.slice(0, maxItems);
115
- const maxValue = Math.max(...displayData.map(item => item.value), 1);
116
- const getProgressBarStyle = value => {
117
- const percentage = value / maxValue * 100;
118
- return {
119
- width: `${percentage}%`,
120
- background: progressBarGradient ? `linear-gradient(90deg, ${progressBarColors[0]}, ${progressBarColors[1]})` : progressBarColors[0],
121
- boxShadow: glowEnable ? `0 0 8px ${progressBarColors[0]}60` : undefined
122
- };
123
- };
124
- const containerStyle = {
125
- ...externalStyle,
126
- backgroundColor,
127
- borderColor
128
- };
129
- const itemStyle = {
130
- backgroundColor: itemBackgroundColor,
131
- borderColor: itemBorderColor
132
- };
133
- return /*#__PURE__*/jsx("div", {
134
- className: styles.container,
135
- ref: ref,
136
- style: containerStyle,
137
- children: /*#__PURE__*/jsx("div", {
138
- className: styles.list,
139
- children: displayData.map(item => {
140
- const isTopThree = item.rank <= 3;
141
- return /*#__PURE__*/jsxs("div", {
142
- className: styles.item,
143
- style: itemStyle,
144
- children: [showRank ? /*#__PURE__*/jsx("div", {
145
- className: cn(styles.rankBadge, isTopThree ? styles.rankBadgeTopThree : styles.rankBadgeNormal, getRankClass(item.rank)),
146
- children: showMedal && isTopThree ? MEDAL_EMOJI[item.rank] : item.rank
147
- }) : null, /*#__PURE__*/jsx("div", {
148
- className: styles.name,
149
- style: {
150
- color: nameColor
151
- },
152
- children: item.name
153
- }), /*#__PURE__*/jsxs("div", {
154
- className: styles.valueContainer,
155
- children: [/*#__PURE__*/jsx("span", {
156
- className: styles.value,
157
- style: {
158
- color: valueColor
159
- },
160
- children: formatDisplayValue(item.value, valueFormat, valuePrefix, valueSuffix)
161
- }), progressBarEnable ? /*#__PURE__*/jsx("div", {
162
- className: styles.progressBar,
163
- children: /*#__PURE__*/jsx("div", {
164
- className: styles.progressFill,
165
- style: getProgressBarStyle(item.value)
166
- })
167
- }) : null]
168
- })]
169
- }, item.rank);
170
- })
171
- })
172
- });
173
- };
174
-
175
- export { ScrollList, ScrollList as default };
176
- //# sourceMappingURL=component.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component.esm.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]}
package/dist/component.js DELETED
@@ -1,185 +0,0 @@
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
@@ -1 +0,0 @@
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]}
@@ -1 +0,0 @@
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]}