x{(material.amount / SHEET_MATERIAL_AMOUNT).toFixed(2)}
diff --git a/tgui/packages/tgui/interfaces/Folder.tsx b/tgui/packages/tgui/interfaces/Folder.tsx
index 5faa9f62f5ceb..69ee8351cd81b 100644
--- a/tgui/packages/tgui/interfaces/Folder.tsx
+++ b/tgui/packages/tgui/interfaces/Folder.tsx
@@ -1,5 +1,6 @@
+import { Box, Button, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Button, Section, Stack } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/ForceEvent.tsx b/tgui/packages/tgui/interfaces/ForceEvent.tsx
index 4811e2fc20f2c..b8cee3cb2a39c 100644
--- a/tgui/packages/tgui/interfaces/ForceEvent.tsx
+++ b/tgui/packages/tgui/interfaces/ForceEvent.tsx
@@ -1,8 +1,15 @@
import { paginate } from 'common/collections';
-import { BooleanLike } from 'common/react';
+import {
+ Button,
+ Icon,
+ Input,
+ Section,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend, useLocalState } from '../backend';
-import { Button, Icon, Input, Section, Stack, Tabs } from '../components';
import { Window } from '../layouts';
const CATEGORY_PAGE_ITEMS = 4;
diff --git a/tgui/packages/tgui/interfaces/GasAnalyzer.tsx b/tgui/packages/tgui/interfaces/GasAnalyzer.tsx
index d92197887eb43..1528d295e7240 100644
--- a/tgui/packages/tgui/interfaces/GasAnalyzer.tsx
+++ b/tgui/packages/tgui/interfaces/GasAnalyzer.tsx
@@ -1,5 +1,6 @@
+import { Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Section } from '../components';
import { Window } from '../layouts';
import {
AtmosHandbookContent,
diff --git a/tgui/packages/tgui/interfaces/Gateway.jsx b/tgui/packages/tgui/interfaces/Gateway.jsx
index 5c56f3d9eec1d..7c2100829b4d0 100644
--- a/tgui/packages/tgui/interfaces/Gateway.jsx
+++ b/tgui/packages/tgui/interfaces/Gateway.jsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -6,7 +5,9 @@ import {
NoticeBox,
ProgressBar,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const Gateway = () => {
diff --git a/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx b/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx
index 8391ac97e044d..c6b415f8e2903 100644
--- a/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx
+++ b/tgui/packages/tgui/interfaces/GhostPoolProtection.jsx
@@ -1,5 +1,6 @@
+import { Button, Flex, NoticeBox, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Flex, NoticeBox, Section } from '../components';
import { Window } from '../layouts';
export const GhostPoolProtection = (props) => {
diff --git a/tgui/packages/tgui/interfaces/GlandDispenser.tsx b/tgui/packages/tgui/interfaces/GlandDispenser.tsx
index 5aa23b0457593..6206089269607 100644
--- a/tgui/packages/tgui/interfaces/GlandDispenser.tsx
+++ b/tgui/packages/tgui/interfaces/GlandDispenser.tsx
@@ -1,5 +1,6 @@
+import { Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Section } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/Gps.jsx b/tgui/packages/tgui/interfaces/Gps.jsx
index c12ba6a9efd7e..df751293e11f1 100644
--- a/tgui/packages/tgui/interfaces/Gps.jsx
+++ b/tgui/packages/tgui/interfaces/Gps.jsx
@@ -1,10 +1,17 @@
import { map, sortBy } from 'common/collections';
-import { flow } from 'common/fp';
-import { clamp } from 'common/math';
import { vecLength, vecSubtract } from 'common/vector';
+import {
+ Box,
+ Button,
+ Icon,
+ LabeledList,
+ Section,
+ Table,
+} from 'tgui-core/components';
+import { flow } from 'tgui-core/fp';
+import { clamp } from 'tgui-core/math';
import { useBackend } from '../backend';
-import { Box, Button, Icon, LabeledList, Section, Table } from '../components';
import { Window } from '../layouts';
const coordsToVec = (coords) => map(coords.split(', '), parseFloat);
diff --git a/tgui/packages/tgui/interfaces/GravityGenerator.jsx b/tgui/packages/tgui/interfaces/GravityGenerator.jsx
index fd5a2906225b2..1b96dc5d69616 100644
--- a/tgui/packages/tgui/interfaces/GravityGenerator.jsx
+++ b/tgui/packages/tgui/interfaces/GravityGenerator.jsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -6,7 +5,9 @@ import {
NoticeBox,
ProgressBar,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const GravityGenerator = (props) => {
diff --git a/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx b/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx
index 5a988907524e6..2b836cd995179 100644
--- a/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx
+++ b/tgui/packages/tgui/interfaces/GreyscaleModifyMenu.tsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -12,7 +11,9 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type ColorEntry = {
diff --git a/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx b/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx
index 48b01dfd88506..4cea15f229f7c 100644
--- a/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx
+++ b/tgui/packages/tgui/interfaces/GulagItemReclaimer.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Button, NoticeBox, Section, Table } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Button, NoticeBox, Section, Table } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx b/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx
index 857ae24173245..8362e1fa82b95 100644
--- a/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx
+++ b/tgui/packages/tgui/interfaces/GulagTeleporterConsole.jsx
@@ -1,5 +1,11 @@
+import {
+ Button,
+ LabeledList,
+ NumberInput,
+ Section,
+} from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, LabeledList, NumberInput, Section } from '../components';
import { Window } from '../layouts';
export const GulagTeleporterConsole = (props) => {
diff --git a/tgui/packages/tgui/interfaces/HealthSensor.tsx b/tgui/packages/tgui/interfaces/HealthSensor.tsx
index fbff3aaa1eae0..c6c0e1a549883 100644
--- a/tgui/packages/tgui/interfaces/HealthSensor.tsx
+++ b/tgui/packages/tgui/interfaces/HealthSensor.tsx
@@ -1,7 +1,12 @@
-import { BooleanLike } from 'common/react';
+import {
+ AnimatedNumber,
+ Button,
+ ProgressBar,
+ Section,
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { AnimatedNumber, Button, ProgressBar, Section } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx b/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx
index 835f94d8a7e1d..5bd8a94c06b2f 100644
--- a/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx
+++ b/tgui/packages/tgui/interfaces/HighLuminosityEyesMenu.tsx
@@ -1,5 +1,3 @@
-import { BooleanLike } from '../../common/react';
-import { useBackend } from '../backend';
import {
Button,
ColorBox,
@@ -7,7 +5,10 @@ import {
LabeledList,
NumberInput,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { BooleanLike } from '../../common/react';
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type EyeColorData = {
diff --git a/tgui/packages/tgui/interfaces/HoloPay.tsx b/tgui/packages/tgui/interfaces/HoloPay.tsx
index c0e3d134c8b31..c8e64f50b8644 100644
--- a/tgui/packages/tgui/interfaces/HoloPay.tsx
+++ b/tgui/packages/tgui/interfaces/HoloPay.tsx
@@ -1,6 +1,4 @@
-import { decodeHtmlEntities } from 'common/string';
import { useState } from 'react';
-import { useBackend } from 'tgui/backend';
import {
Box,
Button,
@@ -13,8 +11,11 @@ import {
Table,
TextArea,
Tooltip,
-} from 'tgui/components';
-import { Window } from 'tgui/layouts';
+} from 'tgui-core/components';
+import { decodeHtmlEntities } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
+import { Window } from '../layouts';
type HoloPayData = {
available_logos: string[];
diff --git a/tgui/packages/tgui/interfaces/Holodeck.jsx b/tgui/packages/tgui/interfaces/Holodeck.jsx
index 7ebff7d574e78..cf81bf04630d3 100644
--- a/tgui/packages/tgui/interfaces/Holodeck.jsx
+++ b/tgui/packages/tgui/interfaces/Holodeck.jsx
@@ -1,5 +1,6 @@
+import { Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Section } from '../components';
import { Window } from '../layouts';
export const Holodeck = (props) => {
diff --git a/tgui/packages/tgui/interfaces/Holopad.jsx b/tgui/packages/tgui/interfaces/Holopad.jsx
index 177c5566feb09..6c234c25bfa9f 100644
--- a/tgui/packages/tgui/interfaces/Holopad.jsx
+++ b/tgui/packages/tgui/interfaces/Holopad.jsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -8,7 +7,9 @@ import {
Modal,
NoticeBox,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const Holopad = (props) => {
diff --git a/tgui/packages/tgui/interfaces/HotkeysHelp.tsx b/tgui/packages/tgui/interfaces/HotkeysHelp.tsx
index 7f4a5f95e951c..96beb2aa10c08 100644
--- a/tgui/packages/tgui/interfaces/HotkeysHelp.tsx
+++ b/tgui/packages/tgui/interfaces/HotkeysHelp.tsx
@@ -1,5 +1,6 @@
+import { Box, Section, Table, Tooltip } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Section, Table, Tooltip } from '../components';
import { Window } from '../layouts';
type BindingInfo = {
diff --git a/tgui/packages/tgui/interfaces/HypnoChair.jsx b/tgui/packages/tgui/interfaces/HypnoChair.jsx
index 671cd16aa73c2..51ddf7f5064b6 100644
--- a/tgui/packages/tgui/interfaces/HypnoChair.jsx
+++ b/tgui/packages/tgui/interfaces/HypnoChair.jsx
@@ -1,5 +1,12 @@
+import {
+ Button,
+ Icon,
+ Input,
+ LabeledList,
+ Section,
+} from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Icon, Input, LabeledList, Section } from '../components';
import { Window } from '../layouts';
export const HypnoChair = (props) => {
diff --git a/tgui/packages/tgui/interfaces/IVDrip.tsx b/tgui/packages/tgui/interfaces/IVDrip.tsx
index 4254f53fa549b..8807ca7cd7f10 100644
--- a/tgui/packages/tgui/interfaces/IVDrip.tsx
+++ b/tgui/packages/tgui/interfaces/IVDrip.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
Section,
Slider,
Tooltip,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type IVDripData = {
diff --git a/tgui/packages/tgui/interfaces/ImplantChair.jsx b/tgui/packages/tgui/interfaces/ImplantChair.jsx
index 44d5f3a17240d..bb45f02a8bd6d 100644
--- a/tgui/packages/tgui/interfaces/ImplantChair.jsx
+++ b/tgui/packages/tgui/interfaces/ImplantChair.jsx
@@ -1,5 +1,6 @@
+import { Button, Icon, LabeledList, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Icon, LabeledList, Section } from '../components';
import { Window } from '../layouts';
export const ImplantChair = (props) => {
diff --git a/tgui/packages/tgui/interfaces/ImplantPad.tsx b/tgui/packages/tgui/interfaces/ImplantPad.tsx
index 90ec17261f613..ec5bf47d04240 100644
--- a/tgui/packages/tgui/interfaces/ImplantPad.tsx
+++ b/tgui/packages/tgui/interfaces/ImplantPad.tsx
@@ -1,6 +1,7 @@
+import { Box, Button, Divider, Flex } from 'tgui-core/components';
+
import { BooleanLike } from '../../common/react';
import { useBackend } from '../backend';
-import { Box, Button, Divider, Flex } from '../components';
import { Window } from '../layouts';
import { sanitizeText } from '../sanitize';
diff --git a/tgui/packages/tgui/interfaces/InfraredEmitter.tsx b/tgui/packages/tgui/interfaces/InfraredEmitter.tsx
index 24aad262f893f..ae2748c4ebc4c 100644
--- a/tgui/packages/tgui/interfaces/InfraredEmitter.tsx
+++ b/tgui/packages/tgui/interfaces/InfraredEmitter.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Button, LabeledList, Section } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Button, LabeledList, Section } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/InfuserBook.tsx b/tgui/packages/tgui/interfaces/InfuserBook.tsx
index 70169b44651de..d4091ae421860 100644
--- a/tgui/packages/tgui/interfaces/InfuserBook.tsx
+++ b/tgui/packages/tgui/interfaces/InfuserBook.tsx
@@ -1,8 +1,15 @@
import { paginate, range } from 'common/collections';
import { useState } from 'react';
+import {
+ BlockQuote,
+ Box,
+ Button,
+ Section,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
import { useBackend } from '../backend';
-import { BlockQuote, Box, Button, Section, Stack, Tabs } from '../components';
import { Window } from '../layouts';
type Entry = {
diff --git a/tgui/packages/tgui/interfaces/InstrumentEditor.tsx b/tgui/packages/tgui/interfaces/InstrumentEditor.tsx
index 0afbff0a967bb..594ebbcaff2f7 100644
--- a/tgui/packages/tgui/interfaces/InstrumentEditor.tsx
+++ b/tgui/packages/tgui/interfaces/InstrumentEditor.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
NumberInput,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/Intellicard.jsx b/tgui/packages/tgui/interfaces/Intellicard.jsx
index ed172df03d001..4bca0486d6a8a 100644
--- a/tgui/packages/tgui/interfaces/Intellicard.jsx
+++ b/tgui/packages/tgui/interfaces/Intellicard.jsx
@@ -1,11 +1,12 @@
-import { useBackend } from '../backend';
import {
BlockQuote,
Button,
LabeledList,
ProgressBar,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
export const Intellicard = (props) => {
diff --git a/tgui/packages/tgui/interfaces/Interview.tsx b/tgui/packages/tgui/interfaces/Interview.tsx
index 3f53a177c980f..a02e578e00755 100644
--- a/tgui/packages/tgui/interfaces/Interview.tsx
+++ b/tgui/packages/tgui/interfaces/Interview.tsx
@@ -1,6 +1,4 @@
import { ReactNode, useState } from 'react';
-
-import { useBackend } from '../backend';
import {
BlockQuote,
Box,
@@ -8,7 +6,9 @@ import {
NoticeBox,
Section,
TextArea,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/InterviewManager.jsx b/tgui/packages/tgui/interfaces/InterviewManager.jsx
index 0e92d662f3f50..d2e6d0fb85b06 100644
--- a/tgui/packages/tgui/interfaces/InterviewManager.jsx
+++ b/tgui/packages/tgui/interfaces/InterviewManager.jsx
@@ -1,5 +1,6 @@
+import { Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, Section } from '../components';
import { Window } from '../layouts';
export const InterviewManager = (props) => {
diff --git a/tgui/packages/tgui/interfaces/JobSelection.tsx b/tgui/packages/tgui/interfaces/JobSelection.tsx
index 44f7c8194f70a..e598ef37f7fe5 100644
--- a/tgui/packages/tgui/interfaces/JobSelection.tsx
+++ b/tgui/packages/tgui/interfaces/JobSelection.tsx
@@ -1,8 +1,5 @@
import { deepMerge } from 'common/collections';
-import { Color } from 'common/color';
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
+import { Color } from 'tgui-core/color';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
NoticeBox,
Stack,
StyleableSection,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
import { JOB2ICON } from './common/JobToIcon';
diff --git a/tgui/packages/tgui/interfaces/Jukebox.tsx b/tgui/packages/tgui/interfaces/Jukebox.tsx
index fe9eb054aef66..dd4155b0f466b 100644
--- a/tgui/packages/tgui/interfaces/Jukebox.tsx
+++ b/tgui/packages/tgui/interfaces/Jukebox.tsx
@@ -1,7 +1,4 @@
import { sortBy } from 'common/collections';
-
-import { BooleanLike } from '../../common/react';
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +7,10 @@ import {
LabeledControls,
LabeledList,
Section,
-} from '../components';
+} from 'tgui-core/components';
+
+import { BooleanLike } from '../../common/react';
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Song = {
diff --git a/tgui/packages/tgui/interfaces/KeyComboModal.tsx b/tgui/packages/tgui/interfaces/KeyComboModal.tsx
index 0340ae811cd77..e5368292e2e16 100644
--- a/tgui/packages/tgui/interfaces/KeyComboModal.tsx
+++ b/tgui/packages/tgui/interfaces/KeyComboModal.tsx
@@ -1,8 +1,8 @@
-import { isEscape, KEY } from 'common/keys';
import { useState } from 'react';
+import { Autofocus, Box, Button, Section, Stack } from 'tgui-core/components';
+import { isEscape, KEY } from 'tgui-core/keys';
import { useBackend, useLocalState } from '../backend';
-import { Autofocus, Box, Button, Section, Stack } from '../components';
import { Window } from '../layouts';
import { InputButtons } from './common/InputButtons';
import { Loader } from './common/Loader';
diff --git a/tgui/packages/tgui/interfaces/KeycardAuth.jsx b/tgui/packages/tgui/interfaces/KeycardAuth.jsx
index b29ac9de75e9a..b0d88d37735a7 100644
--- a/tgui/packages/tgui/interfaces/KeycardAuth.jsx
+++ b/tgui/packages/tgui/interfaces/KeycardAuth.jsx
@@ -1,5 +1,6 @@
+import { Box, Button, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Box, Button, Section } from '../components';
import { Window } from '../layouts';
export const KeycardAuth = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LTSRBT.tsx b/tgui/packages/tgui/interfaces/LTSRBT.tsx
index d8c399d2705a8..48e2941b53f86 100644
--- a/tgui/packages/tgui/interfaces/LTSRBT.tsx
+++ b/tgui/packages/tgui/interfaces/LTSRBT.tsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Button,
Image,
@@ -7,7 +6,9 @@ import {
Section,
Stack,
TextArea,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx b/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx
index 4e0aebdcdd5bb..0cd5f6823615e 100644
--- a/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx
+++ b/tgui/packages/tgui/interfaces/LaborClaimConsole.jsx
@@ -1,7 +1,6 @@
-import { toTitleCase } from 'common/string';
+import { Button, LabeledList, Section } from 'tgui-core/components';
import { useBackend } from '../backend';
-import { Box, Button, LabeledList, Section, Table } from '../components';
import { Window } from '../layouts';
export const LaborClaimConsole = (props) => {
@@ -40,8 +39,8 @@ export const LaborClaimConsole = (props) => {
materials, points will be calculated based on volume of delivered
materials.
- Please note that only sheets printed with our manufacturer's seal of
- quality, such as those produced from the work camp furnace, will be
+ Please note that only sheets printed with our manufacturer's seal
+ of quality, such as those produced from the work camp furnace, will be
accepted as proof of labour.
diff --git a/tgui/packages/tgui/interfaces/LanguageMenu.jsx b/tgui/packages/tgui/interfaces/LanguageMenu.jsx
index fc5a43feb6133..404ac8484ef99 100644
--- a/tgui/packages/tgui/interfaces/LanguageMenu.jsx
+++ b/tgui/packages/tgui/interfaces/LanguageMenu.jsx
@@ -1,5 +1,6 @@
+import { Button, LabeledList, Section } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, LabeledList, Section } from '../components';
import { Window } from '../layouts';
export const LanguageMenu = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx b/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx
index fdad995589449..e584a9deed0ce 100644
--- a/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx
+++ b/tgui/packages/tgui/interfaces/LaunchpadConsole.tsx
@@ -1,4 +1,3 @@
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -9,7 +8,9 @@ import {
Section,
Stack,
Tabs,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx b/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx
index 5e7d1ba8516b4..8dfa89318eda5 100644
--- a/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx
+++ b/tgui/packages/tgui/interfaces/LaunchpadRemote.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { NoticeBox } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { NoticeBox } from '../components';
import { Window } from '../layouts';
import { LaunchpadControl } from './LaunchpadConsole';
diff --git a/tgui/packages/tgui/interfaces/Lawpanel.tsx b/tgui/packages/tgui/interfaces/Lawpanel.tsx
index 3ce64868ff8aa..7d72c527ab25a 100644
--- a/tgui/packages/tgui/interfaces/Lawpanel.tsx
+++ b/tgui/packages/tgui/interfaces/Lawpanel.tsx
@@ -1,6 +1,3 @@
-import { BooleanLike } from 'common/react';
-
-import { useBackend } from '../backend';
import {
Button,
Collapsible,
@@ -11,7 +8,10 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
const lawtype_to_color = {
diff --git a/tgui/packages/tgui/interfaces/LibraryAdmin.tsx b/tgui/packages/tgui/interfaces/LibraryAdmin.tsx
index fd88fdc48fb2f..5e9ead80a6054 100644
--- a/tgui/packages/tgui/interfaces/LibraryAdmin.tsx
+++ b/tgui/packages/tgui/interfaces/LibraryAdmin.tsx
@@ -1,8 +1,5 @@
import { map, sortBy } from 'common/collections';
-import { capitalize } from 'common/string';
import { useState } from 'react';
-
-import { useBackend, useLocalState } from '../backend';
import {
Box,
Button,
@@ -13,7 +10,10 @@ import {
Stack,
Table,
TextArea,
-} from '../components';
+} from 'tgui-core/components';
+import { capitalize } from 'tgui-core/string';
+
+import { useBackend, useLocalState } from '../backend';
import { Window } from '../layouts';
import { PageSelect } from './LibraryConsole';
diff --git a/tgui/packages/tgui/interfaces/LibraryConsole.jsx b/tgui/packages/tgui/interfaces/LibraryConsole.jsx
index de10b3a2e86b0..87d87f9bac84f 100644
--- a/tgui/packages/tgui/interfaces/LibraryConsole.jsx
+++ b/tgui/packages/tgui/interfaces/LibraryConsole.jsx
@@ -1,8 +1,5 @@
import { map, sortBy } from 'common/collections';
-import { classes } from 'common/react';
import { useState } from 'react';
-
-import { useBackend, useLocalState } from '../backend';
import {
Box,
Button,
@@ -16,7 +13,10 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+import { classes } from 'tgui-core/react';
+
+import { useBackend, useLocalState } from '../backend';
import { Window } from '../layouts';
import { sanitizeText } from '../sanitize';
diff --git a/tgui/packages/tgui/interfaces/LibraryScanner.jsx b/tgui/packages/tgui/interfaces/LibraryScanner.jsx
index efa7156abfbee..3f06b7b3ab36f 100644
--- a/tgui/packages/tgui/interfaces/LibraryScanner.jsx
+++ b/tgui/packages/tgui/interfaces/LibraryScanner.jsx
@@ -1,5 +1,6 @@
+import { Button, NoticeBox, Section, Stack } from 'tgui-core/components';
+
import { useBackend } from '../backend';
-import { Button, NoticeBox, Section, Stack } from '../components';
import { Window } from '../layouts';
export const LibraryScanner = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LibraryVisitor.jsx b/tgui/packages/tgui/interfaces/LibraryVisitor.jsx
index cb27e42704d98..50ea9bad108c0 100644
--- a/tgui/packages/tgui/interfaces/LibraryVisitor.jsx
+++ b/tgui/packages/tgui/interfaces/LibraryVisitor.jsx
@@ -1,6 +1,4 @@
import { map, sortBy } from 'common/collections';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -10,7 +8,9 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
import { PageSelect } from './LibraryConsole';
diff --git a/tgui/packages/tgui/interfaces/LightController.tsx b/tgui/packages/tgui/interfaces/LightController.tsx
index 810b644f90f6b..e65104fd9c5a1 100644
--- a/tgui/packages/tgui/interfaces/LightController.tsx
+++ b/tgui/packages/tgui/interfaces/LightController.tsx
@@ -1,9 +1,17 @@
import { useState } from 'react';
+import {
+ Box,
+ Button,
+ Knob,
+ Section,
+ Slider,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
import { round } from '../../common/math';
import { BooleanLike, classes } from '../../common/react';
import { useBackend } from '../backend';
-import { Box, Button, Knob, Section, Slider, Stack, Tabs } from '../components';
import { Window } from '../layouts';
enum Direction {
diff --git a/tgui/packages/tgui/interfaces/LightSpawn.tsx b/tgui/packages/tgui/interfaces/LightSpawn.tsx
index 68e3430d8178e..75c1f2cf07d6c 100644
--- a/tgui/packages/tgui/interfaces/LightSpawn.tsx
+++ b/tgui/packages/tgui/interfaces/LightSpawn.tsx
@@ -1,8 +1,16 @@
import { useState } from 'react';
+import {
+ Box,
+ Button,
+ Knob,
+ Section,
+ Slider,
+ Stack,
+ Tabs,
+} from 'tgui-core/components';
import { classes } from '../../common/react';
import { useBackend, useLocalState } from '../backend';
-import { Box, Button, Knob, Section, Slider, Stack, Tabs } from '../components';
import { Window } from '../layouts';
enum Direction {
diff --git a/tgui/packages/tgui/interfaces/Limbgrower.jsx b/tgui/packages/tgui/interfaces/Limbgrower.jsx
index 363b416f12fde..8ee02d086b78e 100644
--- a/tgui/packages/tgui/interfaces/Limbgrower.jsx
+++ b/tgui/packages/tgui/interfaces/Limbgrower.jsx
@@ -1,4 +1,3 @@
-import { useBackend, useSharedState } from '../backend';
import {
Box,
Button,
@@ -7,7 +6,9 @@ import {
LabeledList,
Section,
Tabs,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend, useSharedState } from '../backend';
import { Window } from '../layouts';
export const Limbgrower = (props) => {
diff --git a/tgui/packages/tgui/interfaces/LingMMITalk.tsx b/tgui/packages/tgui/interfaces/LingMMITalk.tsx
index 9f4effb2e663a..fc1f0da7c9e80 100644
--- a/tgui/packages/tgui/interfaces/LingMMITalk.tsx
+++ b/tgui/packages/tgui/interfaces/LingMMITalk.tsx
@@ -1,7 +1,7 @@
import { useState } from 'react';
+import { Button, ByondUi, Stack, TextArea } from 'tgui-core/components';
import { useBackend } from '../backend';
-import { Button, ByondUi, Stack, TextArea } from '../components';
import { Window } from '../layouts';
type Data = {
diff --git a/tgui/packages/tgui/interfaces/LockedSafe.tsx b/tgui/packages/tgui/interfaces/LockedSafe.tsx
index ba8d6bc966140..77d042912afe1 100644
--- a/tgui/packages/tgui/interfaces/LockedSafe.tsx
+++ b/tgui/packages/tgui/interfaces/LockedSafe.tsx
@@ -1,7 +1,7 @@
-import { BooleanLike } from 'common/react';
+import { Box, Flex } from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
import { useBackend } from '../backend';
-import { Box, Flex } from '../components';
import { Window } from '../layouts';
import { NukeKeypad } from './NuclearBomb';
diff --git a/tgui/packages/tgui/interfaces/LogViewer.tsx b/tgui/packages/tgui/interfaces/LogViewer.tsx
index ffdd18a730fe1..0fe5daf5ec783 100644
--- a/tgui/packages/tgui/interfaces/LogViewer.tsx
+++ b/tgui/packages/tgui/interfaces/LogViewer.tsx
@@ -1,6 +1,4 @@
import { useState } from 'react';
-
-import { useBackend } from '../backend';
import {
Button,
Collapsible,
@@ -8,7 +6,9 @@ import {
NoticeBox,
Section,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
type LogViewerData = {
diff --git a/tgui/packages/tgui/interfaces/MODpaint.jsx b/tgui/packages/tgui/interfaces/MODpaint.jsx
index 7a047b384260c..0d9a56e459eb5 100644
--- a/tgui/packages/tgui/interfaces/MODpaint.jsx
+++ b/tgui/packages/tgui/interfaces/MODpaint.jsx
@@ -1,6 +1,3 @@
-import { capitalize } from 'common/string';
-
-import { useBackend } from '../backend';
import {
Box,
Button,
@@ -9,7 +6,10 @@ import {
Section,
Slider,
Stack,
-} from '../components';
+} from 'tgui-core/components';
+import { capitalize } from 'tgui-core/string';
+
+import { useBackend } from '../backend';
import { Window } from '../layouts';
const colorToMatrix = (param) => {
diff --git a/tgui/packages/tgui/interfaces/MODsuit.tsx b/tgui/packages/tgui/interfaces/MODsuit.tsx
index 11d1e294824aa..d2b96a7735c0f 100644
--- a/tgui/packages/tgui/interfaces/MODsuit.tsx
+++ b/tgui/packages/tgui/interfaces/MODsuit.tsx
@@ -1,7 +1,4 @@
-import { BooleanLike } from 'common/react';
import { useState } from 'react';
-
-import { useBackend } from '../backend';
import {
AnimatedNumber,
Box,
@@ -18,32 +15,39 @@ import {
Section,
Stack,
Table,
-} from '../components';
+} from 'tgui-core/components';
+import { BooleanLike } from 'tgui-core/react';
+
+import { useBackend } from '../backend';
import { formatSiUnit } from '../format';
import { Window } from '../layouts';
type MODsuitData = {
// Static
ui_theme: string;
- control: string;
complexity_max: number;
- parts: PartData[];
// Dynamic
suit_status: SuitStatus;
user_status: UserStatus;
module_custom_status: ModuleCustomStatus;
module_info: Module[];
+ control: string;
+ parts: PartData[];
};
type PartData = {
slot: string;
name: string;
+ deployed: BooleanLike;
+ ref: string;
};
type SuitStatus = {
core_name: string;
- cell_charge_current: number;
- cell_charge_max: number;
+ charge_current: number;
+ charge_max: number;
+ chargebar_color: string;
+ chargebar_string: string;
active: BooleanLike;
open: BooleanLike;
seconds_electrified: number;
@@ -53,8 +57,8 @@ type SuitStatus = {
complexity: number;
selected_module: string;
ai_name: string;
- has_pai: boolean;
- is_ai: boolean;
+ has_pai: BooleanLike;
+ is_ai: BooleanLike;
link_id: string;
link_freq: string;
link_call: string;
@@ -257,6 +261,20 @@ const ConfigurePinEntry = (props) => {
);
};
+// fuck u smartkar configs werent meant to be used as actions 🖕🖕🖕
+// and really u couldnt be bothered to make this and instead used
+// the pin entry? 🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕🖕
+const ConfigureButtonEntry = (props) => {
+ const { name, value, module_ref } = props;
+ const { act } = useBackend();
+ return (
+