diff --git a/code/game/machinery/virtual_reality/vr_console.dm b/code/game/machinery/virtual_reality/vr_console.dm index b270f61f5a..1a8a116b12 100644 --- a/code/game/machinery/virtual_reality/vr_console.dm +++ b/code/game/machinery/virtual_reality/vr_console.dm @@ -26,9 +26,6 @@ /obj/machinery/vr_sleeper/Initialize(mapload) . = ..() default_apply_parts() - -/obj/machinery/vr_sleeper/Initialize(mapload) - . = ..() smoke = new update_icon() diff --git a/maps/common/common_turfs.dm b/maps/common/common_turfs.dm index f6d28b2bce..71b90768d6 100644 --- a/maps/common/common_turfs.dm +++ b/maps/common/common_turfs.dm @@ -74,6 +74,7 @@ VIRGO3B_TURF_CREATE(/turf/simulated/floor/reinforced) color = "#FFBBBB" /turf/simulated/sky/virgo3b/Initialize(mapload) + . = ..() SSplanets.addTurf(src) set_light(2, 2, "#FFBBBB") diff --git a/maps/groundbase/groundbase_telecomms.dm b/maps/groundbase/groundbase_telecomms.dm index 90ce6ddbb9..28d9400e77 100644 --- a/maps/groundbase/groundbase_telecomms.dm +++ b/maps/groundbase/groundbase_telecomms.dm @@ -23,8 +23,10 @@ num2text(EXP_FREQ) = list(access_explorer) ) -/obj/item/multitool/station_buffered/Initialize(mapload) - . = ..() +/obj/item/multitool/station_buffered name = "pre-linked multitool (Rascal's Pass hub)" desc = "This multitool has already been linked to the groundbase telecomms hub and can be used to configure one (1) relay." + +/obj/item/multitool/station_buffered/Initialize(mapload) + . = ..() buffer = locate(/obj/machinery/telecomms/hub/preset/groundbase) diff --git a/maps/stellar_delight/stellar_delight_telecomms.dm b/maps/stellar_delight/stellar_delight_telecomms.dm index 55a3cfcb0e..30e1ab10d0 100644 --- a/maps/stellar_delight/stellar_delight_telecomms.dm +++ b/maps/stellar_delight/stellar_delight_telecomms.dm @@ -23,8 +23,10 @@ num2text(EXP_FREQ) = list(access_explorer) ) -/obj/item/multitool/station_buffered/Initialize(mapload) - . = ..() +/obj/item/multitool/station_buffered name = "pre-linked multitool (sd hub)" desc = "This multitool has already been linked to the SD telecomms hub and can be used to configure one (1) relay." + +/obj/item/multitool/station_buffered/Initialize(mapload) + . = ..() buffer = locate(/obj/machinery/telecomms/hub/preset/sd) diff --git a/maps/tether/tether_telecomms.dm b/maps/tether/tether_telecomms.dm index ca1e6a3f1e..67886aad37 100644 --- a/maps/tether/tether_telecomms.dm +++ b/maps/tether/tether_telecomms.dm @@ -23,8 +23,10 @@ num2text(EXP_FREQ) = list(access_explorer) ) -/obj/item/multitool/station_buffered/Initialize(mapload) - . = ..() +/obj/item/multitool/station_buffered name = "pre-linked multitool (tether hub)" desc = "This multitool has already been linked to the Tether telecomms hub and can be used to configure one (1) relay." + +/obj/item/multitool/station_buffered/Initialize(mapload) + . = ..() buffer = locate(/obj/machinery/telecomms/hub/preset/tether) diff --git a/tgui/packages/tgui-dev-server/dreamseeker.js b/tgui/packages/tgui-dev-server/dreamseeker.ts similarity index 90% rename from tgui/packages/tgui-dev-server/dreamseeker.js rename to tgui/packages/tgui-dev-server/dreamseeker.ts index d1ca2a9ac5..af95debedf 100644 --- a/tgui/packages/tgui-dev-server/dreamseeker.js +++ b/tgui/packages/tgui-dev-server/dreamseeker.ts @@ -16,6 +16,10 @@ const logger = createLogger('dreamseeker'); const instanceByPid = new Map(); export class DreamSeeker { + pid: number; + addr: string; + client: any; + static getInstancesByPids: (pids: any) => Promise; constructor(pid, addr) { this.pid = pid; this.addr = addr; @@ -37,6 +41,8 @@ export class DreamSeeker { } } +type Entry = { pid: number; addr: string }; + /** * @param {number[]} pids * @returns {DreamSeeker[]} @@ -45,8 +51,8 @@ DreamSeeker.getInstancesByPids = async (pids) => { if (process.platform !== 'win32') { return []; } - const instances = []; - const pidsToResolve = []; + const instances: any[] = []; + const pidsToResolve: number[] = []; for (let pid of pids) { const instance = instanceByPid.get(pid); if (instance) { @@ -64,7 +70,7 @@ DreamSeeker.getInstancesByPids = async (pids) => { }); // Line format: // proto addr mask mode pid - const entries = []; + const entries: Entry[] = []; const lines = stdout.split('\r\n'); for (let line of lines) { const words = line.match(/\S+/g); diff --git a/tgui/packages/tgui-dev-server/index.js b/tgui/packages/tgui-dev-server/index.ts similarity index 100% rename from tgui/packages/tgui-dev-server/index.js rename to tgui/packages/tgui-dev-server/index.ts diff --git a/tgui/packages/tgui-dev-server/link/retrace.js b/tgui/packages/tgui-dev-server/link/retrace.ts similarity index 93% rename from tgui/packages/tgui-dev-server/link/retrace.js rename to tgui/packages/tgui-dev-server/link/retrace.ts index 083ddb37d1..4deb7df38c 100644 --- a/tgui/packages/tgui-dev-server/link/retrace.js +++ b/tgui/packages/tgui-dev-server/link/retrace.ts @@ -16,13 +16,15 @@ const { parse: parseStackTrace } = require('stacktrace-parser'); const logger = createLogger('retrace'); +type SourceMapData = { file: string; consumer: any }; + const { SourceMapConsumer } = SourceMap; -const sourceMaps = []; +const sourceMaps: SourceMapData[] = []; export const loadSourceMaps = async (bundleDir) => { // Destroy and garbage collect consumers while (sourceMaps.length !== 0) { - const { consumer } = sourceMaps.shift(); + const { consumer } = sourceMaps.shift() as SourceMapData; consumer.destroy(); } // Load new sourcemaps diff --git a/tgui/packages/tgui-dev-server/link/server.js b/tgui/packages/tgui-dev-server/link/server.ts similarity index 97% rename from tgui/packages/tgui-dev-server/link/server.js rename to tgui/packages/tgui-dev-server/link/server.ts index 2a1f551bf6..45c5633b1e 100644 --- a/tgui/packages/tgui-dev-server/link/server.js +++ b/tgui/packages/tgui-dev-server/link/server.ts @@ -22,6 +22,11 @@ export { loadSourceMaps }; export const setupLink = () => new LinkServer(); class LinkServer { + wss: any; + httpServer: http.Server< + typeof http.IncomingMessage, + typeof http.ServerResponse + >; constructor() { logger.log('setting up'); this.wss = null; diff --git a/tgui/packages/tgui-dev-server/logging.js b/tgui/packages/tgui-dev-server/logging.ts similarity index 100% rename from tgui/packages/tgui-dev-server/logging.js rename to tgui/packages/tgui-dev-server/logging.ts diff --git a/tgui/packages/tgui-dev-server/reloader.js b/tgui/packages/tgui-dev-server/reloader.ts similarity index 95% rename from tgui/packages/tgui-dev-server/reloader.js rename to tgui/packages/tgui-dev-server/reloader.ts index cb477a6523..7dc3cd9c6f 100644 --- a/tgui/packages/tgui-dev-server/reloader.js +++ b/tgui/packages/tgui-dev-server/reloader.ts @@ -29,7 +29,7 @@ const SEARCH_LOCATIONS = [ `/mnt/c/Users/*/*/BYOND/cache`, ]; -let cacheRoot; +let cacheRoot: string; export const findCacheRoot = async () => { if (cacheRoot) { @@ -83,9 +83,10 @@ export const reloadByondCache = async (bundleDir) => { return; } // Get dreamseeker instances - const pids = cacheDirs.map((cacheDir) => - parseInt(cacheDir.split('/cache/tmp').pop(), 10), - ); + const pids = cacheDirs.map((cacheDir) => { + const ourDir = cacheDir.split('/cache/tmp').pop(); + return parseInt(ourDir ? ourDir : '', 10); + }); const dssPromise = DreamSeeker.getInstancesByPids(pids); // Copy assets const assets = await resolveGlob( diff --git a/tgui/packages/tgui-dev-server/require.js b/tgui/packages/tgui-dev-server/require.ts similarity index 100% rename from tgui/packages/tgui-dev-server/require.js rename to tgui/packages/tgui-dev-server/require.ts diff --git a/tgui/packages/tgui-dev-server/util.js b/tgui/packages/tgui-dev-server/util.ts similarity index 94% rename from tgui/packages/tgui-dev-server/util.js rename to tgui/packages/tgui-dev-server/util.ts index 13fbef3b21..95258c63f9 100644 --- a/tgui/packages/tgui-dev-server/util.js +++ b/tgui/packages/tgui-dev-server/util.ts @@ -22,7 +22,7 @@ export const resolveGlob = (...sections) => { silent: true, windowsPathsNoEscape: true, }); - const safePaths = []; + const safePaths: string[] = []; for (let path of unsafePaths) { try { fs.statSync(path); diff --git a/tgui/packages/tgui-dev-server/webpack.js b/tgui/packages/tgui-dev-server/webpack.ts similarity index 97% rename from tgui/packages/tgui-dev-server/webpack.js rename to tgui/packages/tgui-dev-server/webpack.ts index e4fbdeb9f1..7aeb4c57c9 100644 --- a/tgui/packages/tgui-dev-server/webpack.js +++ b/tgui/packages/tgui-dev-server/webpack.ts @@ -26,6 +26,9 @@ export const createCompiler = async (options) => { }; class WebpackCompiler { + webpack: any; + config: any; + bundleDir: string; async setup(options) { // Create a require context that is relative to project root // and retrieve all necessary dependencies. diff --git a/tgui/packages/tgui-dev-server/winreg.js b/tgui/packages/tgui-dev-server/winreg.ts similarity index 100% rename from tgui/packages/tgui-dev-server/winreg.js rename to tgui/packages/tgui-dev-server/winreg.ts diff --git a/tgui/packages/tgui-polyfill/index.js b/tgui/packages/tgui-polyfill/index.ts similarity index 100% rename from tgui/packages/tgui-polyfill/index.js rename to tgui/packages/tgui-polyfill/index.ts diff --git a/tgui/packages/tgui/assets.ts b/tgui/packages/tgui/assets.ts index 23e4b03700..6ca5d5f167 100644 --- a/tgui/packages/tgui/assets.ts +++ b/tgui/packages/tgui/assets.ts @@ -4,7 +4,7 @@ * @license MIT */ -import { Action, AnyAction, Dispatch, Middleware } from 'common/redux'; +import type { Action, AnyAction, Dispatch, Middleware } from 'common/redux'; const EXCLUDED_PATTERNS = [/v4shim/i]; const loadedMappings: Record = {}; diff --git a/tgui/packages/tgui/debug/KitchenSink.jsx b/tgui/packages/tgui/debug/KitchenSink.tsx similarity index 78% rename from tgui/packages/tgui/debug/KitchenSink.jsx rename to tgui/packages/tgui/debug/KitchenSink.tsx index 2384ab5621..3eb7e19bb6 100644 --- a/tgui/packages/tgui/debug/KitchenSink.jsx +++ b/tgui/packages/tgui/debug/KitchenSink.tsx @@ -5,7 +5,7 @@ */ import { useState } from 'react'; -import { Flex, Section, Tabs } from 'tgui-core/components'; +import { Section, Stack, Tabs } from 'tgui-core/components'; import { Pane, Window } from '../layouts'; @@ -21,17 +21,17 @@ const r = require.context('../stories', false, /\.stories\.jsx$/); */ const getStories = () => r.keys().map((path) => r(path)); -export const KitchenSink = (props) => { +export const KitchenSink = (props: { panel: boolean }) => { const { panel } = props; - const [theme] = useState(null); + const [theme] = useState(undefined); const [pageIndex, setPageIndex] = useState(0); const stories = getStories(); const story = stories[pageIndex]; const Layout = panel ? Pane : Window; return ( - - + +
{stories.map((story, i) => ( @@ -46,11 +46,11 @@ export const KitchenSink = (props) => { ))}
-
- + + {story.meta.render()} - -
+ +
); }; diff --git a/tgui/packages/tgui/debug/actions.js b/tgui/packages/tgui/debug/actions.ts similarity index 100% rename from tgui/packages/tgui/debug/actions.js rename to tgui/packages/tgui/debug/actions.ts diff --git a/tgui/packages/tgui/debug/hooks.js b/tgui/packages/tgui/debug/hooks.ts similarity index 100% rename from tgui/packages/tgui/debug/hooks.js rename to tgui/packages/tgui/debug/hooks.ts diff --git a/tgui/packages/tgui/debug/middleware.js b/tgui/packages/tgui/debug/middleware.ts similarity index 84% rename from tgui/packages/tgui/debug/middleware.js rename to tgui/packages/tgui/debug/middleware.ts index 809bed4f81..55873ca6df 100644 --- a/tgui/packages/tgui/debug/middleware.js +++ b/tgui/packages/tgui/debug/middleware.ts @@ -4,6 +4,7 @@ * @license MIT */ +import type { AnyAction, Middleware } from 'common/redux'; import { globalEvents } from 'tgui-core/events'; import { acquireHotKey } from 'tgui-core/hotkeys'; import { KEY_BACKSPACE, KEY_F10, KEY_F11, KEY_F12 } from 'tgui-core/keycodes'; @@ -20,15 +21,15 @@ const relayedTypes = [ 'chat/message', ]; -export const debugMiddleware = (store) => { +export const debugMiddleware: Middleware = (store) => { acquireHotKey(KEY_F11); acquireHotKey(KEY_F12); globalEvents.on('keydown', (key) => { if (key.code === KEY_F11) { - store.dispatch(toggleDebugLayout()); + store.dispatch(toggleDebugLayout() as any); } if (key.code === KEY_F12) { - store.dispatch(toggleKitchenSink()); + store.dispatch(toggleKitchenSink() as any); } if (key.ctrl && key.alt && key.code === KEY_BACKSPACE) { // NOTE: We need to call this in a timeout, because we need a clean @@ -45,7 +46,7 @@ export const debugMiddleware = (store) => { return (next) => (action) => next(action); }; -export const relayMiddleware = (store) => { +export const relayMiddleware: Middleware = (store) => { const devServer = require('tgui-dev-server/link/client.cjs'); const externalBrowser = location.search === '?external'; if (externalBrowser) { @@ -62,12 +63,12 @@ export const relayMiddleware = (store) => { acquireHotKey(KEY_F10); globalEvents.on('keydown', (key) => { if (key === KEY_F10) { - store.dispatch(openExternalBrowser()); + store.dispatch(openExternalBrowser() as any); } }); } return (next) => (action) => { - const { type, payload, relayed } = action; + const { type, payload, relayed } = action as AnyAction; if (type === openExternalBrowser.type) { window.open(location.href + '?external', '_blank'); return; diff --git a/tgui/packages/tgui/debug/reducer.js b/tgui/packages/tgui/debug/reducer.ts similarity index 66% rename from tgui/packages/tgui/debug/reducer.js rename to tgui/packages/tgui/debug/reducer.ts index 76cb1db3bf..b14daa60c4 100644 --- a/tgui/packages/tgui/debug/reducer.js +++ b/tgui/packages/tgui/debug/reducer.ts @@ -4,7 +4,11 @@ * @license MIT */ -export const debugReducer = (state = {}, action) => { +import type { ActionData } from './types'; + +type StateData = { kitchenSink: boolean; debugLayout: boolean }; + +export const debugReducer = (state = {} as StateData, action: ActionData) => { const { type, payload } = action; if (type === 'debug/toggleKitchenSink') { return { diff --git a/tgui/packages/tgui/debug/selectors.js b/tgui/packages/tgui/debug/selectors.ts similarity index 100% rename from tgui/packages/tgui/debug/selectors.js rename to tgui/packages/tgui/debug/selectors.ts diff --git a/tgui/packages/tgui/debug/types.ts b/tgui/packages/tgui/debug/types.ts new file mode 100644 index 0000000000..b0ada39199 --- /dev/null +++ b/tgui/packages/tgui/debug/types.ts @@ -0,0 +1 @@ +export type ActionData = { type: string; payload: any; relayed: boolean }; diff --git a/tgui/packages/tgui/layouts/NtosWindow.jsx b/tgui/packages/tgui/layouts/NtosWindow.tsx similarity index 91% rename from tgui/packages/tgui/layouts/NtosWindow.jsx rename to tgui/packages/tgui/layouts/NtosWindow.tsx index 798b6c0eb6..7aeca760e1 100644 --- a/tgui/packages/tgui/layouts/NtosWindow.jsx +++ b/tgui/packages/tgui/layouts/NtosWindow.tsx @@ -10,9 +10,23 @@ import { Box, Button, Image } from 'tgui-core/components'; import { Window } from './Window'; +type Header = { icon: string }; + +type Data = { + PC_device_theme: string; + PC_batteryicon: string; + PC_showbatteryicon: boolean; + PC_batterypercent: number; + PC_ntneticon: string; + PC_stationdate: string; + PC_stationtime: string; + PC_programheaders: Header[]; + PC_showexitprogram: boolean; +}; + export const NtosWindow = (props) => { const { title, width = 575, height = 700, children } = props; - const { act, data } = useBackend(); + const { act, data } = useBackend(); const { PC_device_theme, PC_batteryicon, diff --git a/tgui/packages/tgui/stories/Blink.stories.tsx b/tgui/packages/tgui/stories/Blink.stories.tsx new file mode 100644 index 0000000000..66bcf0a460 --- /dev/null +++ b/tgui/packages/tgui/stories/Blink.stories.tsx @@ -0,0 +1,20 @@ +/** + * @file + * @copyright 2021 Aleksej Komarov + * @license MIT + */ + +import { Blink, Section } from 'tgui-core/components'; + +export const meta = { + title: 'Blink', + render: () => , +}; + +const Story = (props) => { + return ( +
+ Blink +
+ ); +}; diff --git a/tgui/packages/tgui/stories/BlockQuote.stories.tsx b/tgui/packages/tgui/stories/BlockQuote.stories.tsx new file mode 100644 index 0000000000..9641c024df --- /dev/null +++ b/tgui/packages/tgui/stories/BlockQuote.stories.tsx @@ -0,0 +1,24 @@ +/** + * @file + * @copyright 2021 Aleksej Komarov + * @license MIT + */ + +import { BlockQuote, Section } from 'tgui-core/components'; + +import { BoxWithSampleText } from './common'; + +export const meta = { + title: 'BlockQuote', + render: () => , +}; + +const Story = (props) => { + return ( +
+
+ +
+
+ ); +}; diff --git a/tgui/packages/tgui/stories/Box.stories.jsx b/tgui/packages/tgui/stories/Box.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Box.stories.jsx rename to tgui/packages/tgui/stories/Box.stories.tsx diff --git a/tgui/packages/tgui/stories/Button.stories.jsx b/tgui/packages/tgui/stories/Button.stories.tsx similarity index 96% rename from tgui/packages/tgui/stories/Button.stories.jsx rename to tgui/packages/tgui/stories/Button.stories.tsx index 7f92fb3e41..bab9db4474 100644 --- a/tgui/packages/tgui/stories/Button.stories.jsx +++ b/tgui/packages/tgui/stories/Button.stories.tsx @@ -34,7 +34,6 @@ const Story = (props) => { - diff --git a/tgui/packages/tgui/stories/ByondUi.stories.jsx b/tgui/packages/tgui/stories/ByondUi.stories.tsx similarity index 88% rename from tgui/packages/tgui/stories/ByondUi.stories.jsx rename to tgui/packages/tgui/stories/ByondUi.stories.tsx index f6a399f7a1..889dd80282 100644 --- a/tgui/packages/tgui/stories/ByondUi.stories.jsx +++ b/tgui/packages/tgui/stories/ByondUi.stories.tsx @@ -6,7 +6,7 @@ import { useState } from 'react'; import { logger } from 'tgui/logging'; -import { Box, Button, ByondUi, Section } from 'tgui-core/components'; +import { Button, ByondUi, Section, TextArea } from 'tgui-core/components'; export const meta = { title: 'ByondUi', @@ -52,14 +52,13 @@ const Story = (props) => { } > - setCode(e.target.value)} + onChange={(_, value) => setCode(value)} > {code} - + ); diff --git a/tgui/packages/tgui/stories/Collapsible.stories.jsx b/tgui/packages/tgui/stories/Collapsible.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Collapsible.stories.jsx rename to tgui/packages/tgui/stories/Collapsible.stories.tsx diff --git a/tgui/packages/tgui/stories/Flex.stories.jsx b/tgui/packages/tgui/stories/Flex.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Flex.stories.jsx rename to tgui/packages/tgui/stories/Flex.stories.tsx diff --git a/tgui/packages/tgui/stories/Input.stories.jsx b/tgui/packages/tgui/stories/Input.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Input.stories.jsx rename to tgui/packages/tgui/stories/Input.stories.tsx diff --git a/tgui/packages/tgui/stories/LabeledList.stories.jsx b/tgui/packages/tgui/stories/LabeledList.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/LabeledList.stories.jsx rename to tgui/packages/tgui/stories/LabeledList.stories.tsx diff --git a/tgui/packages/tgui/stories/Popper.stories.jsx b/tgui/packages/tgui/stories/Popper.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Popper.stories.jsx rename to tgui/packages/tgui/stories/Popper.stories.tsx diff --git a/tgui/packages/tgui/stories/ProgressBar.stories.jsx b/tgui/packages/tgui/stories/ProgressBar.stories.tsx similarity index 62% rename from tgui/packages/tgui/stories/ProgressBar.stories.jsx rename to tgui/packages/tgui/stories/ProgressBar.stories.tsx index cd2a928dfc..6de689c3b4 100644 --- a/tgui/packages/tgui/stories/ProgressBar.stories.jsx +++ b/tgui/packages/tgui/stories/ProgressBar.stories.tsx @@ -23,23 +23,28 @@ const Story = (props) => { const [progress, setProgress] = useState(0.5); const [color, setColor] = useState(''); - const color_data = color - ? { color: color } - : { - ranges: { - good: [0.5, Infinity], - bad: [-Infinity, 0.1], - average: [0, 0.5], - }, - }; - return (
- - Value: {Number(progress).toFixed(1)} - - - + {color ? ( + + Value: {Number(progress).toFixed(1)} + + ) : ( + + Value: {Number(progress).toFixed(1)} + + )} + + diff --git a/tgui/packages/tgui/stories/Stack.stories.jsx b/tgui/packages/tgui/stories/Stack.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Stack.stories.jsx rename to tgui/packages/tgui/stories/Stack.stories.tsx diff --git a/tgui/packages/tgui/stories/Storage.stories.jsx b/tgui/packages/tgui/stories/Storage.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Storage.stories.jsx rename to tgui/packages/tgui/stories/Storage.stories.tsx diff --git a/tgui/packages/tgui/stories/Tabs.stories.jsx b/tgui/packages/tgui/stories/Tabs.stories.tsx similarity index 86% rename from tgui/packages/tgui/stories/Tabs.stories.jsx rename to tgui/packages/tgui/stories/Tabs.stories.tsx index 8bb56bfbb9..a8fa42c32f 100644 --- a/tgui/packages/tgui/stories/Tabs.stories.jsx +++ b/tgui/packages/tgui/stories/Tabs.stories.tsx @@ -12,10 +12,19 @@ export const meta = { render: () => , }; +type TabProps = { + vertical: boolean; + leftSlot: boolean; + rightSlot: boolean; + icon: boolean; + fluid: boolean; + centered: boolean; +}; + const TAB_RANGE = ['Tab #1', 'Tab #2', 'Tab #3', 'Tab #4']; const Story = (props) => { - const [tabProps, setTabProps] = useState({}); + const [tabProps, setTabProps] = useState({} as TabProps); return ( <>
@@ -93,23 +102,23 @@ const Story = (props) => {
- +
- + Some text
Section-less tabs appear the same as tabs in a fitted section:
- + ); }; -const TabsPrefab = (props) => { +const TabsPrefab = (props: { tabProps: TabProps }) => { const [tabIndex, setTabIndex] = useState(0); - const [tabProps] = useState({}); + const { tabProps } = props; return ( { diff --git a/tgui/packages/tgui/stories/Themes.stories.jsx b/tgui/packages/tgui/stories/Themes.stories.tsx similarity index 61% rename from tgui/packages/tgui/stories/Themes.stories.jsx rename to tgui/packages/tgui/stories/Themes.stories.tsx index ecc86ad19a..a4d5feb3be 100644 --- a/tgui/packages/tgui/stories/Themes.stories.jsx +++ b/tgui/packages/tgui/stories/Themes.stories.tsx @@ -4,24 +4,25 @@ * @license MIT */ -import { useState } from 'react'; import { Input, LabeledList, Section } from 'tgui-core/components'; export const meta = { title: 'Themes', - render: () => , + render: (theme, setTheme) => , }; -const Story = (props) => { - const [theme, setTheme] = useState('kitchenSinkTheme'); +const Story = (props: { + readonly theme: string; + readonly setTheme: Function; +}) => { return (
setTheme(value)} + value={props.theme} + onInput={(e, value) => props.setTheme(value)} /> diff --git a/tgui/packages/tgui/stories/Tooltip.stories.jsx b/tgui/packages/tgui/stories/Tooltip.stories.tsx similarity index 100% rename from tgui/packages/tgui/stories/Tooltip.stories.jsx rename to tgui/packages/tgui/stories/Tooltip.stories.tsx diff --git a/tgui/packages/tgui/stories/common.jsx b/tgui/packages/tgui/stories/common.tsx similarity index 100% rename from tgui/packages/tgui/stories/common.jsx rename to tgui/packages/tgui/stories/common.tsx