Files
Paradise/tgui/packages/tgui-panel/settings/SettingsStatPanel.js
+12
BurzahGitHubAylongwarriorstar-orionArthri/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>Toastical/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>AylongArthri/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>Charlie Nolan
18573ef254 Tgui v6 (#29342)
* [TGUI v6 Project] Remove `context` (#29086)

* [TGUI v6 Project] Remove `context`

* I forgot I had to do that.

* [TGUI v6 Project] Move to React (#29090)

* It compiles

* Last Inferno uses

* all works now

* Fixes

* [TGUI v6] Changes files extensions for interfaces from .js to .jsx, Deprecates Inferno State Hooks (#29094)

* Initial Commit

* Apply suggestions from code review

trust me bro

Co-authored-by: Aylong <69762909+AyIong@users.noreply.github.com>
Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>

---------

Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Aylong <69762909+AyIong@users.noreply.github.com>

* [TGUI v6] Replaces babel with swc, fixes realtive paths on a few files, new build (#29100)

* Initial commit

* Build

* webpack config and errors and rebuild

* export routingError, hopefully

* fix pda app routing

* pass current tab index to tab headers and content in nanobank

---------

Co-authored-by: warriorstar-orion <orion@snowfrost.garden>

* fix dna modifier bluescreen and library computer tabs (#29108)

* TGUI parity with TG

Need to fix a bunch of things...

* Implement TGUI payload chunking backend

https://github.com/tgstation/tgstation/pull/90295

* Filx chan bottom scroll. Again

* Fix TGchat focus

* Fix rounding

* Fix inputs

* Upgrade deps

* More fixes

* Fix chat lineHeight

* Fix NanoMap

* Update `tgui-core`

* fix autolathe

* fix airlock electronics

* fix intercom

* fix compost bin height

* Fix chat preferences

* Move to TSX without types :clueless:

* test tiny meet your new brother test tgui

* Fix RCD

* fix stackcraft

* fix up beakercontents

* Fix MODsuits

* fix seed extractor

* Merge branch 'tgui-v6' of github.com:ParadiseSS13/Paradise into tgui-v6

* fix holodeck

* fix cookbook pda app

* fix remaining useState args

* Fix DNAModifier

* Fix Sleeper

* Fix SupermatterMonitor

* Remove `vitest`

* Update dev-server

* Fix `IconStack`

* Correct margin

* bundles, please don't break

* prettier

* Revert "Remove `vitest`"

This reverts commit 0609006abb.

* Re-add tests

* Prettier

* fix maplint for test_tgui

* TGchat shine effect

* TGUI Rebuildo

* Fix broken tabs, search boxes, sortable tables, and others (#29450)

* Replace KitchenSink theme state with a React context

* Remove last usage of useLocalState

* Rebind unbound useState calls

* Build and update /tg/ui

* Reformat /tg/ui

* [ci skip]

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>

* Ports #29217 to tgui v6. Added tgui-setup to CI builds (#29787)

* Add tgui-setup to build scripts

* Fix CORS issue

* Build and update /tg/ui

Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>

* Add one missing word to comment

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix law manager

* Removes dangling references to `context` (#29793)

* Removes dangling references to `context`

* Build and update /tg/ui (#25)

Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix messenger and atmos scanner

* swap out line break in examinate

* fix powermonitor

* Bump tgui-core from 3.1.5/3.1.4 to 4.3.4 (#29799)

* Bump tgui-core

* Build and update /tg/ui (#28)

Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fixes additional examine text

* oopsie

* Small tgui v6 fixes (#29801)

* Remove flow

* Miscellaneous fixes

* Miscellaneous fixes

* Moved properties placed on the wrong element

* Migrate removed CSS attributes in JSX

* Build and update /tg/ui (#27)

Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix carbon examine

* fix robot examine

* fix lint

* improve SMES appearance

* fix camera console name order

* more newline fixes

* fix boolean modal cancel not working

* fix random disabled access in RCD

* point tgui to correct passthrough verb names

* Fix missing 0 option for ERTs. (#29819)

* fix newlines in damage flavor

* Revert all changes related to newlines in DM

* fix the actual thing that was wrong with newlines

* fix ERT manager deny input

* [tgui-v6] Makes Agent Card UI more aesthethic, fixes input fields, fixes minimum age slider (#29832)

* agent card fixes and tweaks

* tgui bundle

* Reformat /tg/ui (#33) (#29838)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* restore camera console list appearance

* fixed pai ui paths (#29867)

* /tg/ui fixes no. 3 (#29868)

* Remove IconStack styles that conflict with styles added in tgstation/tgui-core#203

* Fix minesweeper icon

* DNA Modifier fixes

* Fix alignment of icons in PDA games menu

* Expand chem dispenser

* Fix pAI interfaces

* Build and update /tg/ui

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Toastical <20125180+Toastical@users.noreply.github.com>

* teleporter fix, bundle changes, test

* /tg/ui fixes no.4 (#29877)

* Fix translucent buttons

* Remove stories already present in tgui-core

* Make voting choices not transparent

* Build and update /tg/ui

* Fix size of set ringtone in PDA messenger

* Fix crew monitor highlight colors

* Fix ReagentsEditor search. Small style fixes

* tgui-say radio prefix has special color again

* Expand chameleon mask a little

* Fix search in chameleon mask

* Make list input modal slightly taller

* [ci skip]

* Build /tg/ui

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>

---------

Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Aylong <69762909+AyIong@users.noreply.github.com>
Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
Co-authored-by: Aylong <alexanderkitsa@gmail.com>
Co-authored-by: Arthri <41360489+Arthri@users.noreply.github.com>
Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Charlie Nolan <funnyman3595@gmail.com>
Co-authored-by: Toastical <20125180+Toastical@users.noreply.github.com>
2025-07-27 23:23:20 +00:00

144 lines
5.0 KiB
JavaScript

import { useState } from 'react';
import { useDispatch, useSelector } from 'tgui/backend';
import { Button, Collapsible, Input, LabeledList, NoticeBox, Section, Slider, Stack } from 'tgui-core/components';
import { toFixed } from 'tgui-core/math';
import { capitalize } from 'tgui-core/string';
import { updateSettings } from './actions';
import { FONTS } from './constants';
import { selectSettings } from './selectors';
export const SettingsStatPanel = (props) => {
const { statLinked, statFontSize, statFontFamily, statTabsStyle } = useSelector(selectSettings);
const dispatch = useDispatch();
const TabsViews = ['default', 'classic', 'scrollable'];
const LinkedToChat = () => (
<NoticeBox m={0} color="red" style={{ padding: `0.2em 0.5em` }}>
Unlink Stat Panel from chat!
</NoticeBox>
);
const [freeStatFont, setFreeStatFont] = useState(false);
return (
<Section fill>
<Stack fill vertical>
<Stack.Item>
<LabeledList>
<LabeledList.Item label="Tabs">
{TabsViews.map((view) => (
<Button
key={view}
color="transparent"
selected={statTabsStyle === view}
onClick={() => dispatch(updateSettings({ statTabsStyle: view }))}
>
{capitalize(view)}
</Button>
))}
</LabeledList.Item>
<LabeledList.Item label="Font style">
{statLinked ? (
<LinkedToChat />
) : (
<Stack.Item>
{!freeStatFont ? (
<Collapsible
title={statFontFamily}
width={'100%'}
buttons={
<Button
icon={freeStatFont ? 'lock-open' : 'lock'}
color={freeStatFont ? 'good' : 'bad'}
onClick={() => {
setFreeStatFont(!freeStatFont);
}}
>
Custom font
</Button>
}
>
{FONTS.map((FONT) => (
<Button
key={FONT}
fontFamily={FONT}
selected={statFontFamily === FONT}
color="transparent"
onClick={() =>
dispatch(
updateSettings({
statFontFamily: FONT,
})
)
}
>
{FONT}
</Button>
))}
</Collapsible>
) : (
<Stack>
<Input
width={'100%'}
value={statFontFamily}
onChange={(value) =>
dispatch(
updateSettings({
statFontFamily: value,
})
)
}
/>
<Button
ml={0.5}
icon={freeStatFont ? 'lock-open' : 'lock'}
color={freeStatFont ? 'good' : 'bad'}
onClick={() => {
setFreeStatFont(!freeStatFont);
}}
>
Custom font
</Button>
</Stack>
)}
</Stack.Item>
)}
</LabeledList.Item>
<LabeledList.Item label="Font size">
<Stack.Item grow>
{statLinked ? (
<LinkedToChat />
) : (
<Slider
width="100%"
step={1}
stepPixelSize={20}
minValue={8}
maxValue={32}
value={statFontSize}
unit="px"
format={(value) => toFixed(value)}
onChange={(e, value) => dispatch(updateSettings({ statFontSize: value }))}
/>
)}
</Stack.Item>
</LabeledList.Item>
</LabeledList>
</Stack.Item>
<Stack.Divider mt={2.5} />
<Stack.Item textAlign="center">
<Button
fluid
icon={statLinked ? 'unlink' : 'link'}
color={statLinked ? 'bad' : 'good'}
onClick={() => dispatch(updateSettings({ statLinked: !statLinked }))}
>
{statLinked ? 'Unlink from chat' : 'Link to chat'}
</Button>
</Stack.Item>
</Stack>
</Section>
);
};