Skip to content

Commit bf77f40

Browse files
authored
feat: dps score analysis ui cleanup (#1587)
* fix: scrollbar issues * fix: scoring modal incorrect form values * feat: dps score analysis ui cleanup * refactor: cleanup * refactor: cleanup * refactor: cleanup * refactor: cleanup * refactor: cleanup
1 parent 32a5a17 commit bf77f40

26 files changed

+567
-382
lines changed

public/locales/en_US/charactersTab.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,13 @@ CharacterPreview:
134134
MEMO_TALENT: TALENTᴹ
135135
BREAKS: 'BREAKS:'
136136
CombatResults:
137-
Header: Combat damage results
138-
Primary: 'Primary ability:'
139-
Character: 'Character DMG:'
140-
Benchmark: 'Benchmark DMG:'
141-
Baseline: 'Baseline DMG:'
142-
Maximum: 'Maximum DMG:'
143-
Score: 'DPS score %:'
137+
Header: Benchmark Results
138+
Primary: Primary Ability
139+
Character: Character
140+
Benchmark: Benchmark
141+
Baseline: Baseline
142+
Maximum: Maximum
143+
Score: DPS Score
144144
Abilities:
145145
BASIC: BASIC DMG
146146
SKILL: SKILL DMG
@@ -159,21 +159,21 @@ CharacterPreview:
159159
ScoringColumn:
160160
Character:
161161
Header: 'Character build ({{score}}%)'
162-
BasicStats: Character basic stats
162+
BasicStats: Character <1>basic stats</1>
163163
CombatStats: Character <1>combat stats</1>
164164
Substats: Character subs (min rolls)
165165
Mainstats: Character main stats
166166
Abilities: Character ability damage
167167
Benchmark:
168168
Header: 'Benchmark build ({{score}}%)'
169-
BasicStats: 100% benchmark basic stats
169+
BasicStats: 100% benchmark <1>basic stats</1>
170170
CombatStats: 100% benchmark <1>combat stats</1>
171171
Substats: 100% benchmark subs (min rolls)
172172
Mainstats: 100% benchmark main stats
173173
Abilities: 100% benchmark ability damage
174174
Perfect:
175175
Header: 'Perfect build ({{score}}%)'
176-
BasicStats: 200% perfect basic stats
176+
BasicStats: 200% perfect <1>basic stats</1>
177177
CombatStats: 200% perfect <1>combat stats</1>
178178
Substats: 200% perfect subs (max rolls)
179179
Mainstats: 200% perfect main stats

src/lib/characterPreview/DPSScoreDisclaimer.module.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
border-radius: 4px;
33
overflow: hidden;
44
width: 100%;
5+
margin-bottom: 10px;
56
}
67

78
.accordion {

src/lib/characterPreview/StatRow.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,19 @@ export const StatRow = memo(function StatRow({
9494
if (!finalStats) {
9595
return null as unknown as ReactElement
9696
}
97+
98+
const divider = <Divider style={{ margin: 'auto 10px', flexGrow: 1, width: 'unset', minWidth: 'unset' }} variant="dashed" />
99+
100+
const valueText = loading
101+
? '...'
102+
: `${valueDisplay}${isFlat(stat) || stat === 'CV' || stat === 'simScore' ? '' : '%'}${stat === 'simScore' ? t('ThousandsSuffix') : ''}`
103+
97104
return (
98105
<div title={value1000thsPrecision} style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', fontSize: 16, filter: loading ? 'blur(2px)' : 'none' }}>
99106
<img src={Assets.getStatIcon(stat)} className={iconClasses.statIconSpaced} />
100107
{`${readableStat}${edits?.[stat] ? ' *' : ''}`}
101-
<Divider style={{ margin: 'auto 10px', flexGrow: 1, width: 'unset', minWidth: 'unset' }} variant="dashed" />
102-
{loading
103-
? '...'
104-
: `${valueDisplay}${isFlat(stat) || stat === 'CV' || stat === 'simScore' ? '' : '%'}${stat === 'simScore' ? t('ThousandsSuffix') : ''}`}
108+
{divider}
109+
{valueText}
105110
</div>
106111
)
107112
})
Lines changed: 78 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,6 @@
11
.setImage {
22
height: 60px;
3-
}
4-
5-
.partImage {
6-
height: 30px;
7-
}
8-
9-
.preTextRight {
10-
margin: 0;
11-
text-align: right;
12-
}
13-
14-
.columnDivider {
15-
flex-grow: 1;
16-
margin: 10px 30px;
3+
align-self: center;
174
}
185

196
.statPreviewSection {
@@ -30,41 +17,103 @@
3017
contain: layout style;
3118
}
3219

33-
.deferredSection {
34-
content-visibility: auto;
35-
contain-intrinsic-size: auto 400px;
36-
}
37-
3820
.mainTitle {
21+
font-family: var(--font-ui);
3922
font-size: 28px;
40-
font-weight: bold;
23+
font-weight: 600;
4124
margin: 0;
4225
}
4326

4427
.sectionTitle {
45-
font-size: 22px;
46-
text-decoration: underline;
28+
font-family: var(--font-ui);
29+
font-size: 24px;
30+
font-weight: 500;
31+
color: var(--text-secondary);
4732
}
4833

4934
.relicRaritySection {
5035
width: 100%;
5136
margin-top: 10px;
5237
}
5338

54-
.relicRarityAlert {
55-
margin-bottom: 20px;
56-
width: 100%;
57-
}
58-
5939
.combatResultsWidth {
6040
width: 255px;
6141
}
6242

6343
.scoringColumnHeader {
64-
font-size: 20px;
65-
font-weight: bold;
44+
font-family: var(--font-ui);
45+
font-size: 18px;
46+
font-weight: 600;
47+
}
48+
49+
/* Typography for data rows and labels */
50+
.dataLabel {
51+
composes: label from '../summary/summaryStyles.module.css';
52+
color: var(--text-secondary);
53+
}
54+
55+
.dataValue {
56+
composes: value from '../summary/summaryStyles.module.css';
57+
}
58+
59+
.sectionLabel {
60+
font-family: var(--font-ui);
61+
font-size: 13px;
62+
font-weight: 500;
63+
text-transform: uppercase;
64+
letter-spacing: 0.4px;
65+
color: var(--text-tertiary);
66+
margin: 0 auto;
67+
}
68+
69+
.annotation {
70+
font-family: var(--font-ui);
71+
font-size: 13px;
72+
color: var(--text-secondary);
73+
margin: 0;
74+
text-align: center;
6675
}
6776

6877
.teammateIcon {
6978
height: 60px;
7079
}
80+
81+
/* ─── Column Cards ───────────────────────────────────────────────────────── */
82+
83+
.columnCardFilled {
84+
border-radius: var(--radius-md);
85+
padding: 0;
86+
background: var(--layer-2);
87+
box-shadow: var(--shadow-card);
88+
overflow: hidden;
89+
}
90+
91+
.columnFilledHeader {
92+
padding: 10px 16px;
93+
background: var(--layer-3);
94+
border-bottom: var(--border-subtle);
95+
text-align: center;
96+
}
97+
98+
.columnFilledBody {
99+
padding: 16px 14px;
100+
display: flex;
101+
flex-direction: column;
102+
gap: 20px;
103+
}
104+
105+
.columnFilledSection {
106+
padding-bottom: 16px;
107+
border-bottom: var(--border-subtle);
108+
}
109+
110+
.columnFilledSection:last-child {
111+
padding-bottom: 0;
112+
border-bottom: none;
113+
}
114+
115+
/* Character column highlight */
116+
.columnHighlightFilled {
117+
outline: 1px solid rgba(225, 165, 100, 0.2);
118+
}
119+

0 commit comments

Comments
 (0)