diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm
index 572c1a5d26..c229630221 100644
--- a/code/modules/asset_cache/asset_list_items.dm
+++ b/code/modules/asset_cache/asset_list_items.dm
@@ -437,6 +437,37 @@
Insert("bottle-[i]", 'icons/obj/chemical.dmi', "bottle-[i]")
+// Robot UI sprites
+/datum/asset/spritesheet/robot_icons
+ name = "robot_icons"
+
+/datum/asset/spritesheet/robot_icons/create_spritesheets()
+ for(var/datum/robot_sprite/S as anything in typesof(/datum/robot_sprite))
+ if(!S.name)
+ continue
+ to_world("[S.name]]")
+ var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH)
+ var/icon/I_N = icon(S.sprite_icon, S.sprite_icon_state, NORTH)
+ var/icon/I_W = icon(S.sprite_icon, S.sprite_icon_state, WEST)
+ var/icon/I_E = icon(S.sprite_icon, S.sprite_icon_state, EAST)
+ var/icon/I_SE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH)
+ if(I_SE)
+ I_S.Blend(I_SE, ICON_OVERLAY)
+ var/icon/I_NE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", NORTH)
+ if(I_NE)
+ I_N.Blend(I_NE, ICON_OVERLAY)
+ var/icon/I_WE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", WEST)
+ if(I_WE)
+ I_W.Blend(I_WE, ICON_OVERLAY)
+ var/icon/I_EE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", EAST)
+ if(I_EE)
+ I_E.Blend(I_EE, ICON_OVERLAY)
+ Insert(S.module_type + S.name + "_S", I_S)
+ Insert(S.module_type + S.name + "_N", I_N)
+ Insert(S.module_type + S.name + "_W", I_W)
+ Insert(S.module_type + S.name + "_E", I_E)
+
+
//Cloning pod sprites for UIs
/datum/asset/simple/cloning
assets = list(
diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm
index 7ea6049d0e..5dc30cfdbc 100644
--- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm
+++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm
@@ -8,6 +8,10 @@
/datum/tgui_module/robot_ui_module/tgui_state(mob/user)
return GLOB.tgui_self_state
+
+/datum/tgui_module/robot_ui_module/ui_assets(mob/user)
+ . += get_asset_datum(/datum/asset/spritesheet/robot_icons)
+
/datum/tgui_module/robot_ui_module/tgui_static_data()
var/list/data = ..()
diff --git a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx
new file mode 100644
index 0000000000..f066f1b507
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx
@@ -0,0 +1,59 @@
+import { resolveAsset } from 'tgui/assets';
+import { useBackend } from 'tgui/backend';
+import { Button, Image, Section, Stack } from 'tgui-core/components';
+
+export const IconSection = (props: { module?: string; sprite?: string }) => {
+ const { act } = useBackend();
+ const { module, sprite } = props;
+
+ return (
+ act('confirm')}>
+ Confirm
+
+ }
+ >
+ {!!sprite && !!module && (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )}
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx
index 2a7fafc371..c90dbbe7be 100644
--- a/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx
+++ b/tgui/packages/tgui/interfaces/RobotChoose/ModuleSection.tsx
@@ -31,7 +31,7 @@ export const ModuleSection = (props: {
- {filtered &&
+ {!!filtered &&
filtered.map((filter) => (
- {' '}
>
diff --git a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx
index 31fb410700..13cba8fc05 100644
--- a/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx
+++ b/tgui/packages/tgui/interfaces/RobotChoose/SpriteSection.tsx
@@ -63,7 +63,7 @@ export const SpriteSection = (props: {
- {filtered &&
+ {!!filtered &&
filtered.map((filter) => (
{
- const { act, data } = useBackend();
+ const { data } = useBackend();
const {
possible_modules,
@@ -31,14 +32,7 @@ export const RobotChoose = (props) => {
sortable={possible_sprites}
selected={sprite_datum}
/>
-
-
-
+