dirk-cfx-react 1.1.86 → 1.1.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/BlipSelect.tsx","../../src/utils/colorWithAlpha.ts","../../src/utils/misc.ts","../../src/utils/useSettings.ts","../../src/utils/fetchNui.ts","../../src/utils/locales.ts","../../src/utils/useItems.ts","../../src/utils/useFrameworkGroups.ts","../../src/utils/inputMapper.ts","../../src/utils/gtaControls.ts","../../src/components/BorderedIcon.tsx","../../src/components/Motion.tsx","../../src/components/Counter.tsx","../../src/components/FloatingParticles.tsx","../../src/components/InfoBox.tsx","../../src/components/InputContainer.tsx","../../src/hooks/useAudio/store.ts","../../src/components/SegmentedControl.tsx","../../src/components/Navigation.tsx","../../src/components/SegmentedProgress.tsx","../../src/components/Title.tsx","../../src/components/LevelBanner.tsx","../../src/components/LevelPanel.tsx","../../src/components/Modal.tsx","../../src/components/PromptModal.tsx","../../src/components/ModalStore.tsx","../../src/components/ConfirmModal.tsx","../../src/components/MissingItemsBanner.tsx","../../src/hooks/useForm.tsx","../../src/hooks/useScriptConfig.ts","../../src/components/ConfigPanel.tsx","../../src/components/SelectItem.tsx","../../src/components/PositionPicker.tsx","../../src/components/GroupSelect.tsx","../../src/components/FiveMKeyBindInput.tsx","../../src/components/ControlSelect.tsx","../../src/components/AsyncSaveButton.tsx","../../src/components/AdminPageTitle.tsx","../../src/components/SwitchPanel.tsx","../../src/components/TestBed/main.tsx","../../src/components/ThemeOverrideSection.tsx","../../src/utils/gtaAnimPostFx.ts","../../src/components/AnimPostFxSelect.tsx","../../src/utils/gtaScenarios.ts","../../src/components/ScenarioSelect.tsx","../../src/components/DiscordRoleSelect.tsx","../../src/components/AccountSelect.tsx"],"names":["jsxs","Group","jsx","Image","Text","Box","Select","alpha","create","useMantineTheme","Flex","FontAwesomeIcon","motion","AnimatePresence","useRef","useState","useMotionValue","useEffect","Tooltip","Info","clickSoundUrl","hoverSoundUrl","createContext","useContext","useStore","Progress","RingProgress","Portal","X","Button","AlertTriangle","TextInput","t","Trash2","useCallback","RefreshCw","ChevronDown","Check","Copy","createStore","useMemo","QueryClient","Code2","JsonInput","useInfiniteQuery","History","Search","Filter","User","Loader","Fragment","notifications","ArrowLeft","Undo2","Redo2","SaveIcon","XCircle","RotateCcw","QueryClientProvider","MapPin","Crosshair","EyeOff","Eye","NumberInput","MultiSelect","Switch","FlaskConical","ActionIcon","ChevronUp","Stack","generateColors","Palette","ColorInput","Popover","buildGroupedData"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\r\n Group,\r\n Text,\r\n Image,\r\n Box,\r\n Select,\r\n} from \"@mantine/core\";\r\nimport type { ComboboxItem, SelectProps } from \"@mantine/core\";\r\n\r\n// ── Blip icons: [id, name, extension] ──────────────────────────────────────\r\n\r\nconst BLIP_ENTRIES: [number, string, string][] = [\r\n [0,\"radar_higher\",\"gif\"],[1,\"radar_level\",\"png\"],[2,\"radar_lower\",\"gif\"],[3,\"radar_police_ped\",\"gif\"],\r\n [4,\"radar_wanted_radius\",\"png\"],[5,\"radar_area_blip\",\"png\"],[6,\"radar_centre\",\"png\"],[7,\"radar_north\",\"png\"],\r\n [8,\"radar_waypoint\",\"png\"],[9,\"radar_radius_blip\",\"png\"],[10,\"radar_radius_outline_blip\",\"png\"],\r\n [11,\"radar_weapon_higher\",\"gif\"],[12,\"radar_weapon_lower\",\"gif\"],[13,\"radar_higher_ai\",\"gif\"],\r\n [14,\"radar_lower_ai\",\"gif\"],[15,\"radar_police_heli_spin\",\"gif\"],[16,\"radar_police_plane_move\",\"png\"],\r\n [27,\"radar_mp_crew\",\"png\"],[28,\"radar_mp_friendlies\",\"png\"],[36,\"radar_cable_car\",\"png\"],\r\n [37,\"radar_activities\",\"png\"],[38,\"radar_raceflag\",\"png\"],[40,\"radar_safehouse\",\"png\"],\r\n [41,\"radar_police\",\"gif\"],[42,\"radar_police_chase\",\"gif\"],[43,\"radar_police_heli\",\"png\"],\r\n [44,\"radar_bomb_a\",\"png\"],[47,\"radar_snitch\",\"png\"],[48,\"radar_planning_locations\",\"png\"],\r\n [50,\"radar_crim_carsteal\",\"png\"],[51,\"radar_crim_drugs\",\"png\"],[52,\"radar_crim_holdups\",\"png\"],\r\n [54,\"radar_crim_player\",\"png\"],[56,\"radar_cop_patrol\",\"png\"],[57,\"radar_cop_player\",\"png\"],\r\n [58,\"radar_crim_wanted\",\"png\"],[59,\"radar_heist\",\"png\"],[60,\"radar_police_station\",\"png\"],\r\n [61,\"radar_hospital\",\"png\"],[62,\"radar_assassins_mark\",\"png\"],[63,\"radar_elevator\",\"png\"],\r\n [64,\"radar_helicopter\",\"png\"],[66,\"radar_random_character\",\"png\"],[67,\"radar_security_van\",\"png\"],\r\n [68,\"radar_tow_truck\",\"png\"],[70,\"radar_illegal_parking\",\"png\"],[71,\"radar_barber\",\"png\"],\r\n [72,\"radar_car_mod_shop\",\"png\"],[73,\"radar_clothes_store\",\"png\"],[75,\"radar_tattoo\",\"png\"],\r\n [76,\"radar_armenian_family\",\"png\"],[77,\"radar_lester_family\",\"png\"],[78,\"radar_michael_family\",\"png\"],\r\n [79,\"radar_trevor_family\",\"png\"],[80,\"radar_jewelry_heist\",\"png\"],[82,\"radar_drag_race_finish\",\"png\"],\r\n [84,\"radar_rampage\",\"png\"],[85,\"radar_vinewood_tours\",\"png\"],[86,\"radar_lamar_family\",\"png\"],\r\n [88,\"radar_franklin_family\",\"png\"],[89,\"radar_chinese_strand\",\"png\"],[90,\"radar_flight_school\",\"png\"],\r\n [91,\"radar_eye_sky\",\"png\"],[92,\"radar_air_hockey\",\"png\"],[93,\"radar_bar\",\"png\"],\r\n [94,\"radar_base_jump\",\"png\"],[95,\"radar_basketball\",\"png\"],[96,\"radar_biolab_heist\",\"png\"],\r\n [99,\"radar_cabaret_club\",\"png\"],[100,\"radar_car_wash\",\"png\"],[102,\"radar_comedy_club\",\"png\"],\r\n [103,\"radar_darts\",\"png\"],[104,\"radar_docks_heist\",\"png\"],[105,\"radar_fbi_heist\",\"png\"],\r\n [106,\"radar_fbi_officers_strand\",\"png\"],[107,\"radar_finale_bank_heist\",\"png\"],\r\n [108,\"radar_financier_strand\",\"png\"],[109,\"radar_golf\",\"png\"],[110,\"radar_gun_shop\",\"png\"],\r\n [111,\"radar_internet_cafe\",\"png\"],[112,\"radar_michael_family_exile\",\"png\"],\r\n [113,\"radar_nice_house_heist\",\"png\"],[114,\"radar_random_female\",\"png\"],[115,\"radar_random_male\",\"png\"],\r\n [118,\"radar_rural_bank_heist\",\"png\"],[119,\"radar_shooting_range\",\"png\"],\r\n [120,\"radar_solomon_strand\",\"png\"],[121,\"radar_strip_club\",\"png\"],[122,\"radar_tennis\",\"png\"],\r\n [123,\"radar_trevor_family_exile\",\"png\"],[124,\"radar_michael_trevor_family\",\"png\"],\r\n [126,\"radar_triathlon\",\"png\"],[127,\"radar_off_road_racing\",\"png\"],[128,\"radar_gang_cops\",\"png\"],\r\n [129,\"radar_gang_mexicans\",\"png\"],[130,\"radar_gang_bikers\",\"png\"],[133,\"radar_snitch_red\",\"png\"],\r\n [134,\"radar_crim_cuff_keys\",\"png\"],[135,\"radar_cinema\",\"png\"],[136,\"radar_music_venue\",\"png\"],\r\n [137,\"radar_police_station_blue\",\"png\"],[138,\"radar_airport\",\"png\"],\r\n [139,\"radar_crim_saved_vehicle\",\"png\"],[140,\"radar_weed_stash\",\"png\"],[141,\"radar_hunting\",\"png\"],\r\n [142,\"radar_pool\",\"png\"],[143,\"radar_objective_blue\",\"png\"],[144,\"radar_objective_green\",\"png\"],\r\n [145,\"radar_objective_red\",\"png\"],[146,\"radar_objective_yellow\",\"png\"],[147,\"radar_arms_dealing\",\"png\"],\r\n [148,\"radar_mp_friend\",\"png\"],[149,\"radar_celebrity_theft\",\"png\"],\r\n [150,\"radar_weapon_assault_rifle\",\"png\"],[151,\"radar_weapon_bat\",\"png\"],\r\n [152,\"radar_weapon_grenade\",\"png\"],[153,\"radar_weapon_health\",\"png\"],[154,\"radar_weapon_knife\",\"png\"],\r\n [155,\"radar_weapon_molotov\",\"png\"],[156,\"radar_weapon_pistol\",\"png\"],[157,\"radar_weapon_rocket\",\"png\"],\r\n [158,\"radar_weapon_shotgun\",\"png\"],[159,\"radar_weapon_smg\",\"png\"],[160,\"radar_weapon_sniper\",\"png\"],\r\n [161,\"radar_mp_noise\",\"gif\"],[162,\"radar_poi\",\"png\"],[163,\"radar_passive\",\"png\"],\r\n [164,\"radar_usingmenu\",\"png\"],[171,\"radar_gang_cops_partner\",\"png\"],[173,\"radar_weapon_minigun\",\"png\"],\r\n [175,\"radar_weapon_armour\",\"png\"],[176,\"radar_property_takeover\",\"png\"],\r\n [177,\"radar_gang_mexicans_highlight\",\"png\"],[178,\"radar_gang_bikers_highlight\",\"png\"],\r\n [179,\"radar_triathlon_cycling\",\"png\"],[180,\"radar_triathlon_swimming\",\"png\"],\r\n [181,\"radar_property_takeover_bikers\",\"png\"],[182,\"radar_property_takeover_cops\",\"png\"],\r\n [183,\"radar_property_takeover_vagos\",\"png\"],[184,\"radar_camera\",\"png\"],\r\n [185,\"radar_centre_red\",\"png\"],[186,\"radar_handcuff_keys_bikers\",\"png\"],\r\n [187,\"radar_handcuff_keys_vagos\",\"png\"],[188,\"radar_handcuffs_closed_bikers\",\"png\"],\r\n [189,\"radar_handcuffs_closed_vagos\",\"png\"],[192,\"radar_camera_badger\",\"png\"],\r\n [193,\"radar_camera_facade\",\"png\"],[194,\"radar_camera_ifruit\",\"png\"],[197,\"radar_yoga\",\"png\"],\r\n [198,\"radar_taxi\",\"png\"],[205,\"radar_shrink\",\"png\"],[206,\"radar_epsilon\",\"png\"],\r\n [207,\"radar_financier_strand_grey\",\"png\"],[208,\"radar_trevor_family_grey\",\"png\"],\r\n [209,\"radar_trevor_family_red\",\"png\"],[210,\"radar_franklin_family_grey\",\"png\"],\r\n [211,\"radar_franklin_family_blue\",\"png\"],[212,\"radar_franklin_a\",\"png\"],[213,\"radar_franklin_b\",\"png\"],\r\n [214,\"radar_franklin_c\",\"png\"],[225,\"radar_gang_vehicle\",\"png\"],\r\n [226,\"radar_gang_vehicle_bikers\",\"png\"],[227,\"radar_gang_vehicle_cops\",\"png\"],\r\n [228,\"radar_gang_vehicle_vagos\",\"png\"],[229,\"radar_guncar\",\"png\"],\r\n [230,\"radar_driving_bikers\",\"png\"],[231,\"radar_driving_cops\",\"png\"],\r\n [232,\"radar_driving_vagos\",\"png\"],[233,\"radar_gang_cops_highlight\",\"png\"],\r\n [234,\"radar_shield_bikers\",\"png\"],[235,\"radar_shield_cops\",\"png\"],\r\n [236,\"radar_shield_vagos\",\"png\"],[237,\"radar_custody_bikers\",\"png\"],\r\n [238,\"radar_custody_vagos\",\"png\"],[251,\"radar_arms_dealing_air\",\"png\"],\r\n [252,\"radar_playerstate_arrested\",\"png\"],[253,\"radar_playerstate_custody\",\"png\"],\r\n [254,\"radar_playerstate_driving\",\"png\"],[255,\"radar_playerstate_keyholder\",\"png\"],\r\n [256,\"radar_playerstate_partner\",\"png\"],[262,\"radar_ztype\",\"png\"],[263,\"radar_stinger\",\"png\"],\r\n [264,\"radar_packer\",\"png\"],[265,\"radar_monroe\",\"png\"],[266,\"radar_fairground\",\"png\"],\r\n [267,\"radar_property\",\"png\"],[268,\"radar_gang_highlight\",\"png\"],[269,\"radar_altruist\",\"png\"],\r\n [270,\"radar_ai\",\"png\"],[271,\"radar_on_mission\",\"png\"],[272,\"radar_cash_pickup\",\"png\"],\r\n [273,\"radar_chop\",\"png\"],[274,\"radar_dead\",\"png\"],[275,\"radar_territory_locked\",\"png\"],\r\n [276,\"radar_cash_lost\",\"png\"],[277,\"radar_cash_vagos\",\"png\"],[278,\"radar_cash_cops\",\"png\"],\r\n [279,\"radar_hooker\",\"png\"],[280,\"radar_friend\",\"png\"],[281,\"radar_mission_2to4\",\"png\"],\r\n [282,\"radar_mission_2to8\",\"png\"],[283,\"radar_mission_2to12\",\"png\"],[284,\"radar_mission_2to16\",\"png\"],\r\n [285,\"radar_custody_dropoff\",\"png\"],[286,\"radar_onmission_cops\",\"png\"],\r\n [287,\"radar_onmission_lost\",\"png\"],[288,\"radar_onmission_vagos\",\"png\"],\r\n [289,\"radar_crim_carsteal_cops\",\"png\"],[290,\"radar_crim_carsteal_bikers\",\"png\"],\r\n [291,\"radar_crim_carsteal_vagos\",\"png\"],[292,\"radar_band_strand\",\"png\"],\r\n [293,\"radar_simeon_family\",\"png\"],[294,\"radar_mission_1\",\"png\"],[295,\"radar_mission_2\",\"png\"],\r\n [296,\"radar_friend_darts\",\"png\"],[297,\"radar_friend_comedyclub\",\"png\"],\r\n [298,\"radar_friend_cinema\",\"png\"],[299,\"radar_friend_tennis\",\"png\"],\r\n [300,\"radar_friend_stripclub\",\"png\"],[301,\"radar_friend_livemusic\",\"png\"],\r\n [302,\"radar_friend_golf\",\"png\"],[303,\"radar_bounty_hit\",\"png\"],[304,\"radar_ugc_mission\",\"png\"],\r\n [305,\"radar_horde\",\"png\"],[306,\"radar_cratedrop\",\"png\"],[307,\"radar_plane_drop\",\"png\"],\r\n [308,\"radar_sub\",\"png\"],[309,\"radar_race\",\"png\"],[310,\"radar_deathmatch\",\"png\"],\r\n [311,\"radar_arm_wrestling\",\"png\"],[312,\"radar_mission_1to2\",\"png\"],\r\n [313,\"radar_shootingrange_gunshop\",\"png\"],[314,\"radar_race_air\",\"png\"],\r\n [315,\"radar_race_land\",\"png\"],[316,\"radar_race_sea\",\"png\"],[317,\"radar_tow\",\"png\"],\r\n [318,\"radar_garbage\",\"png\"],[319,\"radar_drill\",\"png\"],[320,\"radar_spikes\",\"png\"],\r\n [321,\"radar_firetruck\",\"png\"],[322,\"radar_minigun2\",\"png\"],[323,\"radar_bugstar\",\"png\"],\r\n [324,\"radar_submarine\",\"png\"],[325,\"radar_chinook\",\"png\"],[326,\"radar_getaway_car\",\"png\"],\r\n [327,\"radar_mission_bikers_1\",\"png\"],[328,\"radar_mission_bikers_1to2\",\"png\"],\r\n [329,\"radar_mission_bikers_2\",\"png\"],[330,\"radar_mission_bikers_2to4\",\"png\"],\r\n [331,\"radar_mission_bikers_2to8\",\"png\"],[332,\"radar_mission_bikers_2to12\",\"png\"],\r\n [333,\"radar_mission_bikers_2to16\",\"png\"],[334,\"radar_mission_cops_1\",\"png\"],\r\n [335,\"radar_mission_cops_1to2\",\"png\"],[336,\"radar_mission_cops_2\",\"png\"],\r\n [337,\"radar_mission_cops_2to4\",\"png\"],[338,\"radar_mission_cops_2to8\",\"png\"],\r\n [339,\"radar_mission_cops_2to12\",\"png\"],[340,\"radar_mission_cops_2to16\",\"png\"],\r\n [341,\"radar_mission_vagos_1\",\"png\"],[342,\"radar_mission_vagos_1to2\",\"png\"],\r\n [343,\"radar_mission_vagos_2\",\"png\"],[344,\"radar_mission_vagos_2to4\",\"png\"],\r\n [345,\"radar_mission_vagos_2to8\",\"png\"],[346,\"radar_mission_vagos_2to12\",\"png\"],\r\n [347,\"radar_mission_vagos_2to16\",\"png\"],[348,\"radar_gang_bike\",\"png\"],\r\n [349,\"radar_gas_grenade\",\"png\"],[350,\"radar_property_for_sale\",\"png\"],\r\n [351,\"radar_gang_attack_package\",\"png\"],[352,\"radar_martin_madrazzo\",\"png\"],\r\n [353,\"radar_enemy_heli_spin\",\"gif\"],[354,\"radar_boost\",\"png\"],[355,\"radar_devin\",\"png\"],\r\n [356,\"radar_dock\",\"png\"],[357,\"radar_garage\",\"png\"],[358,\"radar_golf_flag\",\"png\"],\r\n [359,\"radar_hangar\",\"png\"],[360,\"radar_helipad\",\"png\"],[361,\"radar_jerry_can\",\"png\"],\r\n [362,\"radar_mask\",\"png\"],[363,\"radar_heist_prep\",\"png\"],[364,\"radar_incapacitated\",\"png\"],\r\n [365,\"radar_spawn_point_pickup\",\"png\"],[366,\"radar_boilersuit\",\"png\"],\r\n [367,\"radar_completed\",\"png\"],[368,\"radar_rockets\",\"png\"],[369,\"radar_garage_for_sale\",\"png\"],\r\n [370,\"radar_helipad_for_sale\",\"png\"],[371,\"radar_dock_for_sale\",\"png\"],\r\n [372,\"radar_hangar_for_sale\",\"png\"],[373,\"radar_placeholder_6\",\"png\"],\r\n [374,\"radar_business\",\"png\"],[375,\"radar_business_for_sale\",\"png\"],\r\n [376,\"radar_race_bike\",\"png\"],[377,\"radar_parachute\",\"png\"],[378,\"radar_team_deathmatch\",\"png\"],\r\n [379,\"radar_race_foot\",\"png\"],[380,\"radar_vehicle_deathmatch\",\"png\"],\r\n [381,\"radar_barry\",\"png\"],[382,\"radar_dom\",\"png\"],[383,\"radar_maryann\",\"png\"],\r\n [384,\"radar_cletus\",\"png\"],[385,\"radar_josh\",\"png\"],[386,\"radar_minute\",\"png\"],\r\n [387,\"radar_omega\",\"png\"],[388,\"radar_tonya\",\"png\"],[389,\"radar_paparazzo\",\"png\"],\r\n [390,\"radar_aim\",\"png\"],[391,\"radar_cratedrop_background\",\"png\"],\r\n [392,\"radar_green_and_net_player1\",\"png\"],[393,\"radar_green_and_net_player2\",\"png\"],\r\n [394,\"radar_green_and_net_player3\",\"png\"],[395,\"radar_green_and_friendly\",\"png\"],\r\n [396,\"radar_net_player1_and_net_player2\",\"png\"],[397,\"radar_net_player1_and_net_player3\",\"png\"],\r\n [398,\"radar_creator\",\"png\"],[399,\"radar_creator_direction\",\"png\"],[400,\"radar_abigail\",\"png\"],\r\n [401,\"radar_blimp\",\"png\"],[402,\"radar_repair\",\"png\"],[403,\"radar_testosterone\",\"png\"],\r\n [404,\"radar_dinghy\",\"png\"],[405,\"radar_fanatic\",\"png\"],[407,\"radar_info_icon\",\"png\"],\r\n [408,\"radar_capture_the_flag\",\"png\"],[409,\"radar_last_team_standing\",\"png\"],\r\n [410,\"radar_boat\",\"png\"],[411,\"radar_capture_the_flag_base\",\"png\"],\r\n [412,\"radar_mp_crew\",\"png\"],[413,\"radar_capture_the_flag_outline\",\"png\"],\r\n [414,\"radar_capture_the_flag_base_nobag\",\"png\"],[415,\"radar_weapon_jerrycan\",\"png\"],\r\n [416,\"radar_rp\",\"png\"],[417,\"radar_level_inside\",\"png\"],[418,\"radar_bounty_hit_inside\",\"png\"],\r\n [419,\"radar_capture_the_usaflag\",\"png\"],[420,\"radar_capture_the_usaflag_outline\",\"png\"],\r\n [421,\"radar_tank\",\"png\"],[422,\"radar_player_heli\",\"gif\"],[423,\"radar_player_plane\",\"png\"],\r\n [424,\"radar_player_jet\",\"png\"],[425,\"radar_centre_stroke\",\"png\"],\r\n [426,\"radar_player_guncar\",\"png\"],[427,\"radar_player_boat\",\"png\"],\r\n [428,\"radar_mp_heist\",\"png\"],[429,\"radar_temp_1\",\"png\"],[430,\"radar_temp_2\",\"png\"],\r\n [431,\"radar_temp_3\",\"png\"],[432,\"radar_temp_4\",\"png\"],[433,\"radar_temp_5\",\"png\"],\r\n [434,\"radar_temp_6\",\"png\"],[435,\"radar_race_stunt\",\"png\"],[436,\"radar_hot_property\",\"png\"],\r\n [437,\"radar_urbanwarfare_versus\",\"png\"],[438,\"radar_king_of_the_castle\",\"png\"],\r\n [439,\"radar_player_king\",\"png\"],[440,\"radar_dead_drop\",\"png\"],[441,\"radar_penned_in\",\"png\"],\r\n [442,\"radar_beast\",\"png\"],[443,\"radar_edge_pointer\",\"png\"],[444,\"radar_edge_crosstheline\",\"png\"],\r\n [445,\"radar_mp_lamar\",\"png\"],[446,\"radar_bennys\",\"png\"],[447,\"radar_corner_number_1\",\"png\"],\r\n [448,\"radar_corner_number_2\",\"png\"],[449,\"radar_corner_number_3\",\"png\"],\r\n [450,\"radar_corner_number_4\",\"png\"],[451,\"radar_corner_number_5\",\"png\"],\r\n [452,\"radar_corner_number_6\",\"png\"],[453,\"radar_corner_number_7\",\"png\"],\r\n [454,\"radar_corner_number_8\",\"png\"],[455,\"radar_yacht\",\"png\"],\r\n [456,\"radar_finders_keepers\",\"png\"],[457,\"radar_assault_package\",\"png\"],\r\n [458,\"radar_hunt_the_boss\",\"png\"],[459,\"radar_sightseer\",\"png\"],\r\n [460,\"radar_turreted_limo\",\"png\"],[461,\"radar_belly_of_the_beast\",\"png\"],\r\n [462,\"radar_yacht_location\",\"png\"],[463,\"radar_pickup_beast\",\"png\"],\r\n [464,\"radar_pickup_zoned\",\"png\"],[465,\"radar_pickup_random\",\"png\"],\r\n [466,\"radar_pickup_slow_time\",\"png\"],[467,\"radar_pickup_swap\",\"png\"],\r\n [468,\"radar_pickup_thermal\",\"png\"],[469,\"radar_pickup_weed\",\"png\"],\r\n [470,\"radar_weapon_railgun\",\"png\"],[471,\"radar_seashark\",\"png\"],\r\n [472,\"radar_pickup_hidden\",\"png\"],[473,\"radar_warehouse\",\"png\"],\r\n [474,\"radar_warehouse_for_sale\",\"png\"],[475,\"radar_office\",\"png\"],\r\n [476,\"radar_office_for_sale\",\"png\"],[477,\"radar_truck\",\"png\"],\r\n [478,\"radar_contraband\",\"png\"],[479,\"radar_trailer\",\"png\"],[480,\"radar_vip\",\"png\"],\r\n [481,\"radar_cargobob\",\"png\"],[482,\"radar_area_outline_blip\",\"png\"],\r\n [483,\"radar_pickup_accelerator\",\"png\"],[484,\"radar_pickup_ghost\",\"png\"],\r\n [485,\"radar_pickup_detonator\",\"png\"],[486,\"radar_pickup_bomb\",\"png\"],\r\n [487,\"radar_pickup_armoured\",\"png\"],[488,\"radar_stunt\",\"png\"],\r\n [489,\"radar_weapon_lives\",\"png\"],[490,\"radar_stunt_premium\",\"png\"],\r\n [491,\"radar_adversary\",\"png\"],[492,\"radar_biker_clubhouse\",\"png\"],\r\n [493,\"radar_biker_caged_in\",\"png\"],[494,\"radar_biker_turf_war\",\"png\"],\r\n [495,\"radar_biker_joust\",\"png\"],[496,\"radar_production_weed\",\"png\"],\r\n [497,\"radar_production_crack\",\"png\"],[498,\"radar_production_fake_id\",\"png\"],\r\n [499,\"radar_production_meth\",\"png\"],[500,\"radar_production_money\",\"png\"],\r\n [501,\"radar_package\",\"png\"],[502,\"radar_capture_1\",\"png\"],[503,\"radar_capture_2\",\"png\"],\r\n [504,\"radar_capture_3\",\"png\"],[505,\"radar_capture_4\",\"png\"],[506,\"radar_capture_5\",\"png\"],\r\n [507,\"radar_capture_6\",\"png\"],[508,\"radar_capture_7\",\"png\"],[509,\"radar_capture_8\",\"png\"],\r\n [510,\"radar_capture_9\",\"png\"],[511,\"radar_capture_10\",\"png\"],[512,\"radar_quad\",\"png\"],\r\n [513,\"radar_bus\",\"png\"],[514,\"radar_drugs_package\",\"png\"],[515,\"radar_pickup_jump\",\"png\"],\r\n [516,\"radar_adversary_4\",\"png\"],[517,\"radar_adversary_8\",\"png\"],\r\n [518,\"radar_adversary_10\",\"png\"],[519,\"radar_adversary_12\",\"png\"],\r\n [520,\"radar_adversary_16\",\"png\"],[521,\"radar_laptop\",\"png\"],\r\n [522,\"radar_pickup_deadline\",\"png\"],[523,\"radar_sports_car\",\"png\"],\r\n [524,\"radar_warehouse_vehicle\",\"png\"],[525,\"radar_reg_papers\",\"png\"],\r\n [526,\"radar_police_station_dropoff\",\"png\"],[527,\"radar_junkyard\",\"png\"],\r\n [528,\"radar_ex_vech_1\",\"png\"],[529,\"radar_ex_vech_2\",\"png\"],[530,\"radar_ex_vech_3\",\"png\"],\r\n [531,\"radar_ex_vech_4\",\"png\"],[532,\"radar_ex_vech_5\",\"png\"],[533,\"radar_ex_vech_6\",\"png\"],\r\n [534,\"radar_ex_vech_7\",\"png\"],[535,\"radar_target_a\",\"png\"],[536,\"radar_target_b\",\"png\"],\r\n [537,\"radar_target_c\",\"png\"],[538,\"radar_target_d\",\"png\"],[539,\"radar_target_e\",\"png\"],\r\n [540,\"radar_target_f\",\"png\"],[541,\"radar_target_g\",\"png\"],[542,\"radar_target_h\",\"png\"],\r\n [543,\"radar_jugg\",\"png\"],[544,\"radar_pickup_repair\",\"png\"],[545,\"radar_steeringwheel\",\"png\"],\r\n [546,\"radar_trophy\",\"png\"],[547,\"radar_pickup_rocket_boost\",\"png\"],\r\n [548,\"radar_pickup_homing_rocket\",\"png\"],[549,\"radar_pickup_machinegun\",\"png\"],\r\n [550,\"radar_pickup_parachute\",\"png\"],[551,\"radar_pickup_time_5\",\"png\"],\r\n [552,\"radar_pickup_time_10\",\"png\"],[553,\"radar_pickup_time_15\",\"png\"],\r\n [554,\"radar_pickup_time_20\",\"png\"],[555,\"radar_pickup_time_30\",\"png\"],\r\n [556,\"radar_supplies\",\"png\"],[557,\"radar_property_bunker\",\"png\"],\r\n [558,\"radar_gr_wvm_1\",\"png\"],[559,\"radar_gr_wvm_2\",\"png\"],[560,\"radar_gr_wvm_3\",\"png\"],\r\n [561,\"radar_gr_wvm_4\",\"png\"],[562,\"radar_gr_wvm_5\",\"png\"],[563,\"radar_gr_wvm_6\",\"png\"],\r\n [564,\"radar_gr_covert_ops\",\"png\"],[565,\"radar_adversary_bunker\",\"png\"],\r\n [566,\"radar_gr_moc_upgrade\",\"png\"],[567,\"radar_gr_w_upgrade\",\"png\"],\r\n [568,\"radar_sm_cargo\",\"png\"],[569,\"radar_sm_hangar\",\"png\"],[570,\"radar_tf_checkpoint\",\"png\"],\r\n [571,\"radar_race_tf\",\"png\"],[572,\"radar_sm_wp1\",\"png\"],[573,\"radar_sm_wp2\",\"png\"],\r\n [574,\"radar_sm_wp3\",\"png\"],[575,\"radar_sm_wp4\",\"png\"],[576,\"radar_sm_wp5\",\"png\"],\r\n [577,\"radar_sm_wp6\",\"png\"],[578,\"radar_sm_wp7\",\"png\"],[579,\"radar_sm_wp8\",\"png\"],\r\n [580,\"radar_sm_wp9\",\"png\"],[581,\"radar_sm_wp10\",\"png\"],[582,\"radar_sm_wp11\",\"png\"],\r\n [583,\"radar_sm_wp12\",\"png\"],[584,\"radar_sm_wp13\",\"png\"],[585,\"radar_sm_wp14\",\"png\"],\r\n [586,\"radar_nhp_bag\",\"png\"],[587,\"radar_nhp_chest\",\"png\"],[588,\"radar_nhp_orbit\",\"png\"],\r\n [589,\"radar_nhp_veh1\",\"png\"],[590,\"radar_nhp_base\",\"png\"],[591,\"radar_nhp_overlay\",\"png\"],\r\n [592,\"radar_nhp_turret\",\"png\"],[593,\"radar_nhp_mg_firewall\",\"png\"],\r\n [594,\"radar_nhp_mg_node\",\"png\"],[595,\"radar_nhp_wp1\",\"png\"],[596,\"radar_nhp_wp2\",\"png\"],\r\n [597,\"radar_nhp_wp3\",\"png\"],[598,\"radar_nhp_wp4\",\"png\"],[599,\"radar_nhp_wp5\",\"png\"],\r\n [600,\"radar_nhp_wp6\",\"png\"],[601,\"radar_nhp_wp7\",\"png\"],[602,\"radar_nhp_wp8\",\"png\"],\r\n [603,\"radar_nhp_wp9\",\"png\"],[604,\"radar_nhp_cctv\",\"png\"],[605,\"radar_nhp_starterpack\",\"png\"],\r\n [606,\"radar_nhp_turret_console\",\"png\"],[607,\"radar_nhp_mg_mir_rotate\",\"png\"],\r\n [608,\"radar_nhp_mg_mir_static\",\"png\"],[609,\"radar_nhp_mg_proxy\",\"png\"],\r\n [610,\"radar_acsr_race_target\",\"png\"],[611,\"radar_acsr_race_hotring\",\"png\"],\r\n [612,\"radar_acsr_wp1\",\"png\"],[613,\"radar_acsr_wp2\",\"png\"],\r\n [614,\"radar_bat_club_property\",\"png\"],[615,\"radar_bat_cargo\",\"png\"],\r\n [616,\"radar_bat_truck\",\"png\"],[617,\"radar_bat_hack_jewel\",\"png\"],\r\n [618,\"radar_bat_hack_gold\",\"png\"],[619,\"radar_bat_keypad\",\"png\"],\r\n [620,\"radar_bat_hack_target\",\"png\"],[621,\"radar_pickup_dtb_health\",\"png\"],\r\n [622,\"radar_pickup_dtb_blast_increase\",\"png\"],[623,\"radar_pickup_dtb_blast_decrease\",\"png\"],\r\n [624,\"radar_pickup_dtb_bomb_increase\",\"png\"],[625,\"radar_pickup_dtb_bomb_decrease\",\"png\"],\r\n [626,\"radar_bat_rival_club\",\"png\"],[627,\"radar_bat_drone\",\"png\"],\r\n [628,\"radar_bat_cash_reg\",\"png\"],[629,\"radar_cctv\",\"png\"],\r\n [630,\"radar_bat_assassinate\",\"png\"],[631,\"radar_bat_pbus\",\"png\"],\r\n [632,\"radar_bat_wp1\",\"png\"],[633,\"radar_bat_wp2\",\"png\"],[634,\"radar_bat_wp3\",\"png\"],\r\n [635,\"radar_bat_wp4\",\"png\"],[636,\"radar_bat_wp5\",\"png\"],[637,\"radar_bat_wp6\",\"png\"],\r\n [638,\"radar_blimp_2\",\"png\"],[639,\"radar_oppressor_2\",\"png\"],[640,\"radar_bat_wp7\",\"png\"],\r\n [641,\"radar_arena_series\",\"png\"],[642,\"radar_arena_premium\",\"png\"],\r\n [643,\"radar_arena_workshop\",\"png\"],[644,\"radar_race_wars\",\"png\"],\r\n [645,\"radar_arena_turret\",\"png\"],[646,\"radar_arena_rc_car\",\"png\"],\r\n [647,\"radar_arena_rc_workshop\",\"png\"],[648,\"radar_arena_trap_fire\",\"png\"],\r\n [649,\"radar_arena_trap_flip\",\"png\"],[650,\"radar_arena_trap_sea\",\"png\"],\r\n [651,\"radar_arena_trap_turn\",\"png\"],[652,\"radar_arena_trap_pit\",\"png\"],\r\n [653,\"radar_arena_trap_mine\",\"png\"],[654,\"radar_arena_trap_bomb\",\"png\"],\r\n [655,\"radar_arena_trap_wall\",\"png\"],[656,\"radar_arena_trap_brd\",\"png\"],\r\n [657,\"radar_arena_trap_sbrd\",\"png\"],[658,\"radar_arena_bruiser\",\"png\"],\r\n [659,\"radar_arena_brutus\",\"png\"],[660,\"radar_arena_cerberus\",\"png\"],\r\n [661,\"radar_arena_deathbike\",\"png\"],[662,\"radar_arena_dominator\",\"png\"],\r\n [663,\"radar_arena_impaler\",\"png\"],[664,\"radar_arena_imperator\",\"png\"],\r\n [665,\"radar_arena_issi\",\"png\"],[666,\"radar_arena_sasquatch\",\"png\"],\r\n [667,\"radar_arena_scarab\",\"png\"],[668,\"radar_arena_slamvan\",\"png\"],\r\n [669,\"radar_arena_zr380\",\"png\"],[670,\"radar_ap\",\"png\"],[671,\"radar_comic_store\",\"png\"],\r\n [672,\"radar_cop_car\",\"png\"],[673,\"radar_rc_time_trials\",\"png\"],\r\n [674,\"radar_king_of_the_hill\",\"png\"],[675,\"radar_king_of_the_hill_teams\",\"png\"],\r\n [676,\"radar_rucksack\",\"png\"],[677,\"radar_shipping_container\",\"png\"],\r\n [678,\"radar_agatha\",\"png\"],[679,\"radar_casino\",\"png\"],\r\n [680,\"radar_casino_table_games\",\"png\"],[681,\"radar_casino_wheel\",\"png\"],\r\n [682,\"radar_casino_concierge\",\"png\"],[683,\"radar_casino_chips\",\"png\"],\r\n [684,\"radar_casino_horse_racing\",\"png\"],[685,\"radar_adversary_featured\",\"png\"],\r\n [686,\"radar_roulette_1\",\"png\"],[687,\"radar_roulette_2\",\"png\"],\r\n [688,\"radar_roulette_3\",\"png\"],[689,\"radar_roulette_4\",\"png\"],\r\n [690,\"radar_roulette_5\",\"png\"],[691,\"radar_roulette_6\",\"png\"],\r\n [692,\"radar_roulette_7\",\"png\"],[693,\"radar_roulette_8\",\"png\"],\r\n [694,\"radar_roulette_9\",\"png\"],[695,\"radar_roulette_10\",\"png\"],\r\n [696,\"radar_roulette_11\",\"png\"],[697,\"radar_roulette_12\",\"png\"],\r\n [698,\"radar_roulette_13\",\"png\"],[699,\"radar_roulette_14\",\"png\"],\r\n [700,\"radar_roulette_15\",\"png\"],[701,\"radar_roulette_16\",\"png\"],\r\n [702,\"radar_roulette_17\",\"png\"],[703,\"radar_roulette_18\",\"png\"],\r\n [704,\"radar_roulette_19\",\"png\"],[705,\"radar_roulette_20\",\"png\"],\r\n [706,\"radar_roulette_21\",\"png\"],[707,\"radar_roulette_22\",\"png\"],\r\n [708,\"radar_roulette_23\",\"png\"],[709,\"radar_roulette_24\",\"png\"],\r\n [710,\"radar_roulette_25\",\"png\"],[711,\"radar_roulette_26\",\"png\"],\r\n [712,\"radar_roulette_27\",\"png\"],[713,\"radar_roulette_28\",\"png\"],\r\n [714,\"radar_roulette_29\",\"png\"],[715,\"radar_roulette_30\",\"png\"],\r\n [716,\"radar_roulette_31\",\"png\"],[717,\"radar_roulette_32\",\"png\"],\r\n [718,\"radar_roulette_33\",\"png\"],[719,\"radar_roulette_34\",\"png\"],\r\n [720,\"radar_roulette_35\",\"png\"],[721,\"radar_roulette_36\",\"png\"],\r\n [722,\"radar_roulette_0\",\"png\"],[723,\"radar_roulette_00\",\"png\"],\r\n [724,\"radar_limo\",\"png\"],[725,\"radar_weapon_alien\",\"png\"],\r\n [726,\"radar_race_open_wheel\",\"png\"],[727,\"radar_rappel\",\"png\"],\r\n [728,\"radar_swap_car\",\"png\"],[729,\"radar_scuba_gear\",\"png\"],\r\n [730,\"radar_cpanel_1\",\"png\"],[731,\"radar_cpanel_2\",\"png\"],\r\n [732,\"radar_cpanel_3\",\"png\"],[733,\"radar_cpanel_4\",\"png\"],\r\n [734,\"radar_snow_truck\",\"png\"],[735,\"radar_buggy_1\",\"png\"],[736,\"radar_buggy_2\",\"png\"],\r\n [737,\"radar_zhaba\",\"png\"],[738,\"radar_gerald\",\"png\"],[739,\"radar_ron\",\"png\"],\r\n [740,\"radar_arcade\",\"png\"],[741,\"radar_drone_controls\",\"png\"],[742,\"radar_rc_tank\",\"png\"],\r\n [743,\"radar_stairs\",\"png\"],[744,\"radar_camera_2\",\"png\"],[745,\"radar_winky\",\"png\"],\r\n [746,\"radar_mini_sub\",\"png\"],[747,\"radar_kart_retro\",\"png\"],[748,\"radar_kart_modern\",\"png\"],\r\n [749,\"radar_military_quad\",\"png\"],[750,\"radar_military_truck\",\"png\"],\r\n [751,\"radar_ship_wheel\",\"png\"],[752,\"radar_ufo\",\"png\"],[753,\"radar_seasparrow2\",\"png\"],\r\n [754,\"radar_dinghy2\",\"png\"],[755,\"radar_patrol_boat\",\"png\"],\r\n [756,\"radar_retro_sports_car\",\"png\"],[757,\"radar_squadee\",\"png\"],\r\n [758,\"radar_folding_wing_jet\",\"png\"],[759,\"radar_valkyrie2\",\"png\"],\r\n [760,\"radar_sub2\",\"png\"],[761,\"radar_bolt_cutters\",\"png\"],\r\n [762,\"radar_rappel_gear\",\"png\"],[763,\"radar_keycard\",\"png\"],\r\n [764,\"radar_password\",\"png\"],[765,\"radar_island_heist_prep\",\"png\"],\r\n [766,\"radar_island_party\",\"png\"],[767,\"radar_control_tower\",\"png\"],\r\n [768,\"radar_underwater_gate\",\"png\"],[769,\"radar_power_switch\",\"png\"],\r\n [770,\"radar_compound_gate\",\"png\"],[771,\"radar_rappel_point\",\"png\"],\r\n [772,\"radar_keypad\",\"png\"],[773,\"radar_sub_controls\",\"png\"],\r\n [774,\"radar_sub_periscope\",\"png\"],[775,\"radar_sub_missile\",\"png\"],\r\n [776,\"radar_painting\",\"png\"],[777,\"radar_car_meet\",\"png\"],\r\n [778,\"radar_car_test_area\",\"png\"],[779,\"radar_auto_shop_property\",\"png\"],\r\n [780,\"radar_docks_export\",\"png\"],[781,\"radar_prize_car\",\"png\"],\r\n [782,\"radar_test_car\",\"png\"],[783,\"radar_car_robbery_board\",\"png\"],\r\n [784,\"radar_car_robbery_prep\",\"png\"],[785,\"radar_street_race_series\",\"png\"],\r\n [786,\"radar_pursuit_series\",\"png\"],[787,\"radar_car_meet_organiser\",\"png\"],\r\n [788,\"radar_securoserv\",\"png\"],[789,\"radar_bounty_collectibles\",\"png\"],\r\n [790,\"radar_movie_collectibles\",\"png\"],[791,\"radar_trailer_ramp\",\"png\"],\r\n [792,\"radar_race_organiser\",\"png\"],[793,\"radar_chalkboard_list\",\"png\"],\r\n [794,\"radar_export_vehicle\",\"png\"],[795,\"radar_train\",\"png\"],\r\n [796,\"radar_heist_diamond\",\"png\"],[797,\"radar_heist_doomsday\",\"png\"],\r\n [798,\"radar_heist_island\",\"png\"],[799,\"radar_slamvan2\",\"png\"],\r\n [800,\"radar_crusader\",\"png\"],[801,\"radar_construction_outfit\",\"png\"],\r\n [802,\"radar_overlay_jammed\",\"png\"],[803,\"radar_heist_island_unavailable\",\"png\"],\r\n [804,\"radar_heist_diamond_unavailable\",\"png\"],[805,\"radar_heist_doomsday_unavailable\",\"png\"],\r\n [806,\"radar_placeholder_7\",\"png\"],[807,\"radar_placeholder_8\",\"png\"],\r\n [808,\"radar_placeholder_9\",\"png\"],[809,\"radar_featured_series\",\"png\"],\r\n [810,\"radar_vehicle_for_sale\",\"png\"],[811,\"radar_van_keys\",\"png\"],\r\n [812,\"radar_suv_service\",\"png\"],[813,\"radar_security_contract\",\"png\"],\r\n [814,\"radar_safe\",\"png\"],[815,\"radar_ped_r\",\"png\"],[816,\"radar_ped_e\",\"png\"],\r\n [817,\"radar_payphone\",\"png\"],[818,\"radar_patriot3\",\"png\"],\r\n [819,\"radar_music_studio\",\"png\"],[820,\"radar_jubilee\",\"png\"],\r\n [821,\"radar_granger2\",\"png\"],[822,\"radar_explosive_charge\",\"png\"],\r\n [823,\"radar_deity\",\"png\"],[824,\"radar_d_champion\",\"png\"],[825,\"radar_buffalo4\",\"png\"],\r\n [826,\"radar_agency\",\"png\"],[827,\"radar_biker_bar\",\"png\"],\r\n [828,\"radar_simeon_overlay\",\"png\"],[829,\"radar_junk_skydive\",\"png\"],\r\n [830,\"radar_luxury_car_showroom\",\"png\"],[831,\"radar_car_showroom\",\"png\"],\r\n [832,\"radar_car_showroom_simeon\",\"png\"],[833,\"radar_flaming_skull\",\"png\"],\r\n [834,\"radar_weapon_ammo\",\"png\"],[835,\"radar_community_series\",\"png\"],\r\n [836,\"radar_cayo_series\",\"png\"],[837,\"radar_clubhouse_contract\",\"png\"],\r\n [838,\"radar_agent_ulp\",\"png\"],[839,\"radar_acid\",\"png\"],[840,\"radar_acid_lab\",\"png\"],\r\n [841,\"radar_dax_overlay\",\"png\"],[842,\"radar_dead_drop_package\",\"png\"],\r\n [843,\"radar_downtown_cab\",\"png\"],[844,\"radar_gun_van\",\"png\"],\r\n [845,\"radar_stash_house\",\"png\"],[846,\"radar_tractor\",\"png\"],\r\n [847,\"radar_warehouse_juggalo\",\"png\"],[848,\"radar_warehouse_juggalo_dax\",\"png\"],\r\n [849,\"radar_weapon_crowbar\",\"png\"],[850,\"radar_duffel_bag\",\"png\"],\r\n [851,\"radar_oil_tanker\",\"png\"],[852,\"radar_acid_lab_tent\",\"png\"],\r\n [853,\"radar_van_burrito\",\"png\"],[854,\"radar_acid_boost\",\"png\"],\r\n [855,\"radar_ped_gang_leader\",\"png\"],[856,\"radar_multistorey_garage\",\"png\"],\r\n [857,\"radar_seized_asset_sales\",\"png\"],[858,\"radar_cayo_attrition\",\"png\"],\r\n [859,\"radar_bicycle\",\"png\"],[860,\"radar_bicycle_trial\",\"png\"],\r\n [861,\"radar_raiju\",\"png\"],[862,\"radar_conada2\",\"png\"],\r\n [863,\"radar_overlay_ready_for_sell\",\"png\"],[864,\"radar_overlay_missing_supplies\",\"png\"],\r\n [865,\"radar_streamer216\",\"png\"],[866,\"radar_signal_jammer\",\"png\"],\r\n [867,\"radar_salvage_yard\",\"png\"],[868,\"radar_robbery_prep_equipment\",\"png\"],\r\n [869,\"radar_robbery_prep_overlay\",\"png\"],[870,\"radar_yusuf\",\"png\"],\r\n [871,\"radar_vincent\",\"png\"],[872,\"radar_vinewood_garage\",\"png\"],\r\n [873,\"radar_lstb\",\"png\"],[874,\"radar_cctv_workstation\",\"png\"],\r\n [875,\"radar_hacking_device\",\"png\"],[876,\"radar_race_drag\",\"png\"],\r\n [877,\"radar_race_drift\",\"png\"],[878,\"radar_casino_prep\",\"png\"],\r\n [879,\"radar_planning_wall\",\"png\"],[880,\"radar_weapon_crate\",\"png\"],\r\n [881,\"radar_weapon_snowball\",\"png\"],[882,\"radar_train_signals_green\",\"png\"],\r\n [883,\"radar_train_signals_red\",\"png\"],[884,\"radar_office_transporter\",\"png\"],\r\n [885,\"radar_yankton_survival\",\"png\"],[886,\"radar_daily_bounty\",\"png\"],\r\n [887,\"radar_bounty_target\",\"png\"],[888,\"radar_filming_schedule\",\"png\"],\r\n [889,\"radar_pizza_this\",\"png\"],[890,\"radar_aircraft_carrier\",\"png\"],\r\n [891,\"radar_weapon_emp\",\"png\"],[892,\"radar_maude_eccles\",\"png\"],\r\n [893,\"radar_bail_bonds_office\",\"png\"],[894,\"radar_weapon_emp_mine\",\"png\"],\r\n [895,\"radar_zombie_disease\",\"png\"],[896,\"radar_zombie_proximity\",\"png\"],\r\n [897,\"radar_zombie_fire\",\"png\"],[898,\"radar_animal_possessed\",\"png\"],\r\n [899,\"radar_mobile_phone\",\"png\"],[900,\"radar_garment_factory\",\"png\"],\r\n [901,\"radar_garment_factory_for_sale\",\"png\"],[902,\"radar_garment_factory_equipment\",\"png\"],\r\n [903,\"radar_field_hangar\",\"png\"],[904,\"radar_field_hangar_for_sale\",\"png\"],\r\n [905,\"radar_cargobob_ch53\",\"png\"],[906,\"radar_chopper_lift_ammo\",\"png\"],\r\n [907,\"radar_chopper_lift_armor\",\"png\"],[908,\"radar_chopper_lift_explosives\",\"png\"],\r\n [909,\"radar_chopper_lift_upgrade\",\"png\"],[910,\"radar_chopper_lift_weapon\",\"png\"],\r\n [911,\"radar_cargo_ship\",\"png\"],[912,\"radar_submarine_missile\",\"png\"],\r\n [913,\"radar_propeller_engine\",\"png\"],[914,\"radar_shark\",\"png\"],\r\n [915,\"radar_fast_travel\",\"png\"],[916,\"radar_plane_duster2\",\"png\"],\r\n [917,\"radar_plane_titan2\",\"png\"],[918,\"radar_collectible\",\"png\"],\r\n [919,\"radar_field_hangar_discount\",\"png\"],[920,\"radar_garment_factory_discount\",\"png\"],\r\n [921,\"radar_weapon_gusenberg_sweeper\",\"png\"],[922,\"radar_weapon_tear_gas\",\"png\"],\r\n [923,\"radar_dog\",\"png\"],[924,\"radar_bobcat_security\",\"png\"],\r\n [925,\"radar_smoke_shop\",\"png\"],[926,\"radar_smoke_shop_for_sale\",\"png\"],\r\n [927,\"radar_smoke_shop_attention\",\"png\"],[928,\"radar_helitours\",\"png\"],\r\n [929,\"radar_helitours_for_sale\",\"png\"],[930,\"radar_helitours_attention\",\"png\"],\r\n [931,\"radar_car_wash_business\",\"png\"],[932,\"radar_car_wash_business_for_sale\",\"png\"],\r\n [933,\"radar_car_wash_business_attention\",\"png\"],[934,\"radar_attention\",\"png\"],\r\n [935,\"radar_alarm\",\"png\"],[936,\"radar_helitours_discount\",\"png\"],\r\n [937,\"radar_smoke_shop_discount\",\"png\"],[938,\"radar_car_wash_business_discount\",\"png\"],\r\n [939,\"radar_real_estate\",\"png\"],[940,\"radar_medical_courier\",\"png\"],\r\n [941,\"radar_gruppe_sechs\",\"png\"],[942,\"radar_fire_station\",\"png\"],\r\n [943,\"radar_fire_truck\",\"png\"],[944,\"radar_alpha_mail\",\"png\"],\r\n [945,\"radar_ls_meteor\",\"png\"],[946,\"radar_four20_survival\",\"png\"],\r\n [947,\"radar_community_mission_series\",\"png\"],[948,\"radar_property_mansion\",\"png\"],\r\n [949,\"radar_ai_keypad\",\"png\"],[950,\"radar_taxi_self_drive\",\"png\"],\r\n [951,\"radar_train_subway\",\"png\"],[952,\"radar_trashbag\",\"png\"],\r\n [953,\"radar_mission_creator\",\"png\"],[954,\"radar_cat\",\"png\"],\r\n [955,\"radar_mansion_ai_m\",\"png\"],[956,\"radar_mansion_ai_f\",\"png\"],\r\n [957,\"radar_mansion_ai_gang\",\"png\"],\r\n];\r\n\r\nconst BLIP_BASE = \"https://docs.fivem.net/blips/\";\r\n\r\nfunction blipUrl(name: string, ext: string) {\r\n return `${BLIP_BASE}${name}.${ext}`;\r\n}\r\n\r\n// ── Blip colors: [id, label, hex] ──────────────────────────────────────────\r\n\r\nconst BLIP_COLORS: [number, string, string][] = [\r\n [0,\"White\",\"#FFFFFF\"],[1,\"Red\",\"#E54141\"],[2,\"Green\",\"#3FA83F\"],\r\n [3,\"Blue\",\"#5B8CCF\"],[4,\"White\",\"#FFFFFF\"],[5,\"Yellow\",\"#F0D453\"],\r\n [6,\"Light Red\",\"#E88888\"],[7,\"Violet\",\"#8C5FA8\"],[8,\"Pink\",\"#E878C8\"],\r\n [9,\"Light Orange\",\"#F0A861\"],[10,\"Light Brown\",\"#C1A470\"],[11,\"Light Green\",\"#94D468\"],\r\n [12,\"Light Blue\",\"#68C8E8\"],[13,\"Light Purple\",\"#B898E8\"],[14,\"Dark Purple\",\"#583E8E\"],\r\n [15,\"Cyan\",\"#48C8B8\"],[16,\"Light Yellow\",\"#E8E898\"],[17,\"Orange\",\"#E87830\"],\r\n [18,\"Light Blue\",\"#78A8E8\"],[19,\"Dark Pink\",\"#C83878\"],[20,\"Dark Yellow\",\"#A0A038\"],\r\n [21,\"Dark Orange\",\"#B07828\"],[22,\"Light Gray\",\"#B0B0B0\"],[23,\"Light Pink\",\"#E8A8C0\"],\r\n [24,\"Lemon Green\",\"#88F068\"],[25,\"Forest Green\",\"#388038\"],[26,\"Electric Blue\",\"#2060E0\"],\r\n [27,\"Bright Purple\",\"#9840E0\"],[28,\"Dark Yellow\",\"#7C7C28\"],[29,\"Dark Blue\",\"#283878\"],\r\n [30,\"Dark Cyan\",\"#287078\"],[31,\"Light Brown\",\"#A08858\"],[32,\"Light Blue\",\"#78B0E8\"],\r\n [33,\"Light Yellow\",\"#E8E868\"],[34,\"Light Pink\",\"#F0A0C0\"],[35,\"Light Red\",\"#E07868\"],\r\n [36,\"Beige\",\"#D8C898\"],[37,\"White\",\"#FFFFFF\"],[38,\"Blue\",\"#4870A0\"],\r\n [39,\"Light Gray\",\"#909898\"],[40,\"Dark Gray\",\"#585858\"],[41,\"Pink Red\",\"#E07088\"],\r\n [42,\"Blue\",\"#5090B8\"],[43,\"Light Green\",\"#88C868\"],[44,\"Light Orange\",\"#E09048\"],\r\n [45,\"White\",\"#F0F0F0\"],[46,\"Gold\",\"#D8B838\"],[47,\"Orange\",\"#E07020\"],\r\n];\r\n\r\n// ── Data for Select ────────────────────────────────────────────────────────\r\n\r\nconst BLIP_ICON_DATA: ComboboxItem[] = BLIP_ENTRIES.map(([id, name]) => ({\r\n value: String(id),\r\n label: `${id} — ${name}`,\r\n}));\r\n\r\nconst BLIP_COLOR_DATA: ComboboxItem[] = BLIP_COLORS.map(([id, label]) => ({\r\n value: String(id),\r\n label: `${id} — ${label}`,\r\n}));\r\n\r\n// lookup maps for rendering\r\nconst blipEntryMap = new Map(BLIP_ENTRIES.map(([id, name, ext]) => [String(id), { id, name, ext }]));\r\nconst blipColorMap = new Map(BLIP_COLORS.map(([id, label, hex]) => [String(id), { id, label, hex }]));\r\n\r\n// ── Render helpers ─────────────────────────────────────────────────────────\r\n\r\nconst renderBlipOption: SelectProps[\"renderOption\"] = ({ option }) => {\r\n const entry = blipEntryMap.get(option.value);\r\n if (!entry) return option.label;\r\n return (\r\n <Group gap=\"sm\" wrap=\"nowrap\">\r\n <Image\r\n src={blipUrl(entry.name, entry.ext)}\r\n alt={entry.name}\r\n w={24} h={24}\r\n fit=\"contain\"\r\n style={{ imageRendering: \"pixelated\" }}\r\n />\r\n <Text size=\"xs\" truncate>\r\n {entry.id} — {entry.name}\r\n </Text>\r\n </Group>\r\n );\r\n};\r\n\r\nconst renderColorOption: SelectProps[\"renderOption\"] = ({ option }) => {\r\n const entry = blipColorMap.get(option.value);\r\n if (!entry) return option.label;\r\n return (\r\n <Group gap=\"sm\" wrap=\"nowrap\">\r\n <Box\r\n w={24} h={24}\r\n style={{\r\n borderRadius: 4,\r\n backgroundColor: entry.hex,\r\n border: \"1px solid rgba(255,255,255,0.15)\",\r\n flexShrink: 0,\r\n }}\r\n />\r\n <Text size=\"xs\" truncate>\r\n {entry.id} — {entry.label}\r\n </Text>\r\n </Group>\r\n );\r\n};\r\n\r\n// ── BlipIconSelect ─────────────────────────────────────────────────────────\r\n\r\nexport type BlipIconSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\" | \"searchable\" | \"renderOption\"> & {\r\n value: number | null;\r\n onChange: (id: number) => void;\r\n};\r\n\r\nexport function BlipIconSelect({ value, onChange, label = \"Blip Icon\", size = \"xs\", ...rest }: BlipIconSelectProps) {\r\n const entry = value != null ? blipEntryMap.get(String(value)) : undefined;\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n {...rest}\r\n searchable\r\n data={BLIP_ICON_DATA}\r\n value={value != null ? String(value) : null}\r\n onChange={(val) => val != null && onChange(Number(val))}\r\n renderOption={renderBlipOption}\r\n maxDropdownHeight={300}\r\n nothingFoundMessage=\"No results\"\r\n leftSection={\r\n entry ? (\r\n <Image\r\n src={blipUrl(entry.name, entry.ext)}\r\n alt={entry.name}\r\n w={18} h={18}\r\n fit=\"contain\"\r\n style={{ imageRendering: \"pixelated\" }}\r\n />\r\n ) : undefined\r\n }\r\n />\r\n );\r\n}\r\n\r\n// ── BlipColorSelect ────────────────────────────────────────────────────────\r\n\r\nexport type BlipColorSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\" | \"searchable\" | \"renderOption\"> & {\r\n value: number | null;\r\n onChange: (id: number) => void;\r\n};\r\n\r\nexport function BlipColorSelect({ value, onChange, label = \"Blip Color\", size = \"xs\", ...rest }: BlipColorSelectProps) {\r\n const entry = value != null ? blipColorMap.get(String(value)) : undefined;\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n {...rest}\r\n searchable\r\n data={BLIP_COLOR_DATA}\r\n value={value != null ? String(value) : null}\r\n onChange={(val) => val != null && onChange(Number(val))}\r\n renderOption={renderColorOption}\r\n maxDropdownHeight={300}\r\n nothingFoundMessage=\"No results\"\r\n leftSection={\r\n entry ? (\r\n <Box\r\n w={18} h={18}\r\n style={{\r\n borderRadius: 4,\r\n backgroundColor: entry.hex,\r\n border: \"1px solid rgba(255,255,255,0.15)\",\r\n flexShrink: 0,\r\n }}\r\n />\r\n ) : undefined\r\n }\r\n />\r\n );\r\n}\r\n\r\n// ── BlipDisplaySelect ──────────────────────────────────────────────────────\r\n// Sets the FiveM blip's display behaviour. Most server owners only want one\r\n// of the four meaningful patterns; the duplicate ids are exposed verbatim so\r\n// existing saved values keep displaying correctly.\r\n\r\nconst BLIP_DISPLAY_DATA: { value: string; label: string }[] = [\r\n { value: \"2\", label: \"2 — Main map + minimap (selectable)\" },\r\n { value: \"3\", label: \"3 — Main map only (selectable)\" },\r\n { value: \"4\", label: \"4 — Main map only (selectable)\" },\r\n { value: \"5\", label: \"5 — Minimap only\" },\r\n { value: \"6\", label: \"6 — Main map + minimap (selectable)\" },\r\n { value: \"8\", label: \"8 — Main map + minimap (not selectable)\" },\r\n { value: \"9\", label: \"9 — Minimap only\" },\r\n { value: \"10\", label: \"10 — Main map + minimap (not selectable)\" },\r\n];\r\n\r\nexport type BlipDisplaySelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\r\n value: number | null;\r\n onChange: (id: number) => void;\r\n};\r\n\r\nexport function BlipDisplaySelect({ value, onChange, label = \"Blip Display\", size = \"xs\", ...rest }: BlipDisplaySelectProps) {\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n {...rest}\r\n data={BLIP_DISPLAY_DATA}\r\n value={value != null ? String(value) : null}\r\n onChange={(val) => val != null && onChange(Number(val))}\r\n allowDeselect={false}\r\n maxDropdownHeight={300}\r\n />\r\n );\r\n}\r\n","\r\nconst colorNames = {\r\n AliceBlue: { r: 240, g: 248, b: 255 },\r\n AntiqueWhite: { r: 250, g: 235, b: 215 },\r\n Aqua: { r: 0, g: 255, b: 255 },\r\n Aquamarine: { r: 127, g: 255, b: 212 },\r\n Azure: { r: 240, g: 255, b: 255 },\r\n Beige: { r: 245, g: 245, b: 220 },\r\n Bisque: { r: 255, g: 228, b: 196 },\r\n Black: { r: 0, g: 0, b: 0 },\r\n BlanchedAlmond: { r: 255, g: 235, b: 205 },\r\n Blue: { r: 0, g: 0, b: 255 },\r\n BlueViolet: { r: 138, g: 43, b: 226 },\r\n Brown: { r: 165, g: 42, b: 42 },\r\n BurlyWood: { r: 222, g: 184, b: 135 },\r\n CadetBlue: { r: 95, g: 158, b: 160 },\r\n Chartreuse: { r: 127, g: 255, b: 0 },\r\n Chocolate: { r: 210, g: 105, b: 30 },\r\n Coral: { r: 255, g: 127, b: 80 },\r\n CornflowerBlue: { r: 100, g: 149, b: 237 },\r\n Cornsilk: { r: 255, g: 248, b: 220 },\r\n Crimson: { r: 220, g: 20, b: 60 },\r\n Cyan: { r: 0, g: 255, b: 255 },\r\n DarkBlue: { r: 0, g: 0, b: 139 },\r\n DarkCyan: { r: 0, g: 139, b: 139 },\r\n DarkGoldenRod: { r: 184, g: 134, b: 11 },\r\n DarkGray: { r: 169, g: 169, b: 169 },\r\n DarkGreen: { r: 0, g: 100, b: 0 },\r\n DarkKhaki: { r: 189, g: 183, b: 107 },\r\n DarkMagenta: { r: 139, g: 0, b: 139 },\r\n DarkOliveGreen: { r: 85, g: 107, b: 47 },\r\n DarkOrange: { r: 255, g: 140, b: 0 },\r\n DarkOrchid: { r: 153, g: 50, b: 204 },\r\n DarkRed: { r: 139, g: 0, b: 0 },\r\n DarkSalmon: { r: 233, g: 150, b: 122 },\r\n DarkSeaGreen: { r: 143, g: 188, b: 143 },\r\n DarkSlateBlue: { r: 72, g: 61, b: 139 },\r\n DarkSlateGray: { r: 47, g: 79, b: 79 },\r\n DarkTurquoise: { r: 0, g: 206, b: 209 },\r\n DarkViolet: { r: 148, g: 0, b: 211 },\r\n DeepPink: { r: 255, g: 20, b: 147 },\r\n DeepSkyBlue: { r: 0, g: 191, b: 255 },\r\n DimGray: { r: 105, g: 105, b: 105 },\r\n DodgerBlue: { r: 30, g: 144, b: 255 },\r\n FireBrick: { r: 178, g: 34, b: 34 },\r\n FloralWhite: { r: 255, g: 250, b: 240 },\r\n ForestGreen: { r: 34, g: 139, b: 34 },\r\n Fuchsia: { r: 255, g: 0, b: 255 },\r\n Gainsboro: { r: 220, g: 220, b: 220 },\r\n GhostWhite: { r: 248, g: 248, b: 255 },\r\n Gold: { r: 255, g: 215, b: 0 },\r\n GoldenRod: { r: 218, g: 165, b: 32 },\r\n Gray: { r: 128, g: 128, b: 128 },\r\n Green: { r: 0, g: 128, b: 0 },\r\n GreenYellow: { r: 173, g: 255, b: 47 },\r\n HoneyDew: { r: 240, g: 255, b: 240 },\r\n HotPink: { r: 255, g: 105, b: 180 },\r\n IndianRed: { r: 205, g: 92, b: 92 },\r\n Indigo: { r: 75, g: 0, b: 130 },\r\n Ivory: { r: 255, g: 255, b: 240 },\r\n Khaki: { r: 240, g: 230, b: 140 },\r\n Lavender: { r: 230, g: 230, b: 250 },\r\n LavenderBlush: { r: 255, g: 240, b: 245 },\r\n LawnGreen: { r: 124, g: 252, b: 0 },\r\n LemonChiffon: { r: 255, g: 250, b: 205 },\r\n LightBlue: { r: 173, g: 216, b: 230 },\r\n LightCoral: { r: 240, g: 128, b: 128 },\r\n LightCyan: { r: 224, g: 255, b: 255 },\r\n LightGoldenRodYellow: { r: 250, g: 250, b: 210 },\r\n LightGray: { r: 211, g: 211, b: 211 },\r\n LightGreen: { r: 144, g: 238, b: 144 },\r\n LightPink: { r: 255, g: 182, b: 193 },\r\n LightSalmon: { r: 255, g: 160, b: 122 },\r\n LightSeaGreen: { r: 32, g: 178, b: 170 },\r\n LightSkyBlue: { r: 135, g: 206, b: 250 },\r\n LightSlateGray: { r: 119, g: 136, b: 153 },\r\n LightSteelBlue: { r: 176, g: 196, b: 222 },\r\n LightYellow: { r: 255, g: 255, b: 224 },\r\n Lime: { r: 0, g: 255, b: 0 },\r\n LimeGreen: { r: 50, g: 205, b: 50 },\r\n Linen: { r: 250, g: 240, b: 230 },\r\n Magenta: { r: 255, g: 0, b: 255 },\r\n Maroon: { r: 128, g: 0, b: 0 }, // Maroon\r\n MediumAquaMarine: { r: 102, g: 205, b: 170 },\r\n MediumBlue: { r: 0, g: 0, b: 205 },\r\n MediumOrchid: { r: 186, g: 85, b: 211 },\r\n MediumPurple: { r: 147, g: 112, b: 219 },\r\n MediumSeaGreen: { r: 60, g: 179, b: 113 },\r\n MediumSlateBlue: { r: 123, g: 104, b: 238 },\r\n MediumSpringGreen: { r: 0, g: 250, b: 154 },\r\n MediumTurquoise: { r: 72, g: 209, b: 204 },\r\n MediumVioletRed: { r: 199, g: 21, b: 133 },\r\n MidnightBlue: { r: 25, g: 25, b: 112 },\r\n MintCream: { r: 245, g: 255, b: 250 },\r\n MistyRose: { r: 255, g: 228, b: 225 },\r\n Moccasin: { r: 255, g: 228, b: 181 },\r\n NavajoWhite: { r: 255, g: 222, b: 173 },\r\n Navy: { r: 0, g: 0, b: 128 },\r\n OldLace: { r: 253, g: 245, b: 230 },\r\n Olive: { r: 128, g: 128, b: 0 },\r\n OliveDrab: { r: 107, g: 142, b: 35 },\r\n Orange: { r: 255, g: 165, b: 0 },\r\n OrangeRed: { r: 255, g: 69, b: 0 },\r\n Orchid: { r: 218, g: 112, b: 214 },\r\n PaleGoldenRod: { r: 238, g: 232, b: 170 },\r\n PaleGreen: { r: 152, g: 251, b: 152 },\r\n PaleTurquoise: { r: 175, g: 238, b: 238 },\r\n PaleVioletRed: { r: 219, g: 112, b: 147 },\r\n PapayaWhip: { r: 255, g: 239, b: 213 },\r\n PeachPuff: { r: 255, g: 218, b: 185 },\r\n Peru: { r: 205, g: 133, b: 63 },\r\n Pink: { r: 255, g: 192, b: 203 },\r\n Plum: { r: 221, g: 160, b: 221 },\r\n PowderBlue: { r: 176, g: 224, b: 230 },\r\n Purple: { r: 128, g: 0, b: 128 },\r\n RebeccaPurple: { r: 102, g: 51, b: 153 },\r\n Red: { r: 255, g: 0, b: 0 },\r\n RosyBrown: { r: 188, g: 143, b: 143 },\r\n RoyalBlue: { r: 65, g: 105, b: 225 },\r\n SaddleBrown: { r: 139, g: 69, b: 19 },\r\n Salmon: { r: 250, g: 128, b: 114 },\r\n SandyBrown: { r: 244, g: 164, b: 96 },\r\n SeaGreen: { r: 46, g: 139, b: 87 },\r\n SeaShell: { r: 255, g: 245, b: 238 },\r\n Sienna: { r: 160, g: 82, b: 45 },\r\n Silver: { r: 192, g: 192, b: 192 },\r\n SkyBlue: { r: 135, g: 206, b: 235 },\r\n SlateBlue: { r: 106, g: 90, b: 205 },\r\n SlateGray: { r: 112, g: 128, b: 144 },\r\n Snow: { r: 255, g: 250, b: 250 },\r\n SpringGreen: { r: 0, g: 255, b: 127 },\r\n SteelBlue: { r: 70, g: 130, b: 180 },\r\n Tan: { r: 210, g: 180, b: 140 },\r\n Teal: { r: 0, g: 128, b: 128 },\r\n Thistle: { r: 216, g: 191, b: 216 },\r\n Tomato: { r: 255, g: 99, b: 71 },\r\n Turquoise: { r: 64, g: 224, b: 208 },\r\n Violet: { r: 238, g: 130, b: 238 },\r\n Wheat: { r: 245, g: 222, b: 179 },\r\n White: { r: 255, g: 255, b: 255 },\r\n WhiteSmoke: { r: 245, g: 245, b: 245 },\r\n Yellow: { r: 255, g: 255, b: 0 },\r\n YellowGreen: { r: 154, g: 205, b: 50 }\r\n};\r\n\r\n\r\n\r\n\r\nexport function colorWithAlpha(color: string, alpha: number): string {\r\n const lowerCasedColor = color.toLowerCase() as keyof typeof colorNames;\r\n \r\n if (colorNames[lowerCasedColor]) {\r\n const rgb = colorNames[lowerCasedColor];\r\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;\r\n }\r\n \r\n // If color is in hex format (#RRGGBB)\r\n if (/^#([A-Fa-f0-9]{6})$/.test(color)) {\r\n const hex = color.slice(1);\r\n const bigint = parseInt(hex, 16);\r\n const r = (bigint >> 16) & 255;\r\n const g = (bigint >> 8) & 255;\r\n const b = bigint & 255;\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n }\r\n \r\n // If color is in rgb format (rgb(r, g, b))\r\n if (/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/.test(color)) {\r\n const result = color.match(/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/);\r\n if (result) {\r\n return `rgba(${result[1]}, ${result[2]}, ${result[3]}, ${alpha})`;\r\n }\r\n }\r\n \r\n // Default to original color if format is not recognized\r\n return color;\r\n}","export const isEnvBrowser = (): boolean => !(window as any).invokeNative;\r\n\r\n// Basic no operation function\r\nexport const noop = () => {};\r\n\r\nexport const splitFAString = (faString:string) => {\r\n const [prefix, newIcon] = faString.split('-');\r\n if (!prefix || !newIcon) return {prefix: 'fas', newIcon: 'question'};\r\n return {prefix, newIcon};\r\n}\r\n\r\nexport const numberToRoman = (num:number) => {\r\n const romanNumerals = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'] \r\n return romanNumerals[num]\r\n}\r\n\r\nexport const copyToClipboard = (text:string) => {\r\n const el = document.createElement('textarea');\r\n el.value = text;\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n}\r\n\r\nexport const openLink = (url:string) => {\r\n if (isEnvBrowser()) {\r\n window.open(url, '_blank');\r\n } else {\r\n // @ts-expect-error -- invokeNative exists in NUI\r\n window.invokeNative('openLink', url);\r\n } \r\n}","import { MantineColorsTuple } from \"@mantine/core\";\r\nimport { create } from \"zustand\";\r\n\r\nexport type SettingsState = {\r\n game: \"fivem\" | \"rdr3\";\r\n currency: string;\r\n primaryColor: string;\r\n primaryShade: number;\r\n itemImgPath: string;\r\n resourceVersion?: string;\r\n customTheme?: MantineColorsTuple;\r\n overideResourceName?: string;\r\n serverName?: string;\r\n logo?: string;\r\n language?: string;\r\n};\r\n\r\nexport const useSettings = create<SettingsState>(() => ({\r\n currency: \"$\",\r\n game: \"fivem\",\r\n primaryColor: \"dirk\",\r\n primaryShade: 9,\r\n itemImgPath: \"\",\r\n resourceVersion: \"dev\",\r\n customTheme: [\r\n \"#f0f4ff\",\r\n \"#d9e3ff\",\r\n \"#bfcfff\",\r\n \"#a6bbff\",\r\n \"#8ca7ff\",\r\n \"#7393ff\",\r\n \"#5a7fff\",\r\n \"#406bff\",\r\n \"#2547ff\",\r\n \"#0b33ff\",\r\n ],\r\n}));\r\n\r\n// registerInitialFetch<Partial<SettingsState>>('GET_SETTINGS', undefined).then((data) => {\r\n// if (!data) {\r\n// console.warn('No settings data received from GET_SETTINGS fetch.');\r\n// return;\r\n// }\r\n// useSettings.setState({\r\n// ...data,\r\n// });\r\n// })\r\n","import { useEffect } from \"react\";\r\nimport { isEnvBrowser } from \"./misc\";\r\nimport { useSettings } from \"./useSettings\";\r\n\r\n/**\r\n * Simple wrapper around fetch API tailored for CEF/NUI use.\r\n */\r\nexport async function fetchNui<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const options = {\r\n method: \"post\",\r\n headers: {\r\n \"Content-Type\": \"application/json; charset=UTF-8\",\r\n },\r\n body: JSON.stringify(data),\r\n };\r\n\r\n if (isEnvBrowser() && mockData !== undefined) return mockData;\r\n if (isEnvBrowser() && mockData === undefined) {\r\n console.warn(\r\n `[fetchNui] Called fetchNui for event \"${eventName}\" in browser environment without mockData. Returning empty object.`,\r\n );\r\n return {} as T;\r\n }\r\n\r\n const overrideResourceName = useSettings.getState().overideResourceName;\r\n\r\n // Resource-name resolution:\r\n // 1. NUI iframes expose `window.GetParentResourceName` — use that.\r\n // 2. DUIs don't have it, but DirkProvider sets `overideResourceName`\r\n // once it mounts, so consumer DUIs that wait until then resolve fine.\r\n // 3. If NEITHER is available (e.g. a DUI before its DirkProvider has\r\n // mounted, which happens for module-level `registerInitialFetch`\r\n // calls in `locales.ts`), there's no valid resource to call. Skip\r\n // the fetch entirely — firing it against a placeholder URL just\r\n // produces a doomed network request + an \"Uncaught (in promise)\r\n // TypeError: Failed to fetch\" in older consumer builds that\r\n // lacked the try/catch fallback below. Caller can rely on the\r\n // mockData return or refetch once context is established.\r\n const hasResourceContext =\r\n typeof (window as any).GetParentResourceName === \"function\" ||\r\n !!overrideResourceName;\r\n\r\n if (!hasResourceContext) {\r\n return (mockData ?? ({} as T));\r\n }\r\n\r\n const resourceName = (window as any).GetParentResourceName\r\n ? (window as any).GetParentResourceName()\r\n : overrideResourceName as string;\r\n\r\n try {\r\n const resp = await fetch(`https://${resourceName}/${eventName}`, options);\r\n return await resp.json();\r\n } catch {\r\n return (mockData ?? ({} as T));\r\n }\r\n}\r\n\r\n// -----------------------------\r\n// Initial fetch registration\r\n// -----------------------------\r\nexport type InitialFetch<T> = () => Promise<T>;\r\nexport const initialFetches: Record<string, InitialFetch<unknown>> = {};\r\n\r\n/**\r\n * Registers an initial fetch that automatically uses fetchNui.\r\n * Works like:\r\n * ```ts\r\n * registerInitialFetch<{ name: string }>(\"MY_EVENT_NAME\", undefined, { name: \"Mocky\" });\r\n * ```\r\n * and returns a Promise resolving to the same type as fetchNui.\r\n */\r\nexport async function registerInitialFetch<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const fetcher = () => fetchNui<T>(eventName, data, mockData);\r\n initialFetches[eventName] = fetcher;\r\n return fetcher(); // run immediately if needed\r\n}\r\n\r\n/**\r\n * Runs all registered initial fetches in parallel.\r\n */\r\nexport async function runFetches() {\r\n return Promise.all(\r\n Object.entries(initialFetches).map(async ([eventName, fetcher]) => {\r\n const data = await fetcher();\r\n return { eventName, data };\r\n }),\r\n );\r\n}\r\n\r\n/**\r\n * React hook to automatically run all registered fetches on mount.\r\n */\r\nexport const useAutoFetcher = () => {\r\n useEffect(() => {\r\n if (isEnvBrowser()) return;\r\n runFetches().catch(() => {});\r\n }, []);\r\n};\r\n\r\n\r\nexport const fetchLuaTable = <T>(tableName: string, mockData?: T): Promise<T> => { \r\n return fetchNui<T>('FETCH_LUA_TABLE', { tableName }, mockData);\r\n} \r\n\r\nexport const registerInitialLuaTableFetch = <T>(tableName: string, mockData?: T): Promise<T> => { \r\n return registerInitialFetch<T>('FETCH_LUA_TABLE', { tableName }, mockData);\r\n} \r\n\r\n\r\n\r\n// useage example:\r\n// registerInitialLuaTableFetch<{ [key: string]: string }>('my_lua_table', { key1: 'value1', key2: 'value2' }); \r\n","import { create } from \"zustand\";\r\nimport { fetchNui, registerInitialFetch } from \"../utils/fetchNui\";\r\n\r\n\r\ntype localeType = (key: string, ...args: string[]) => string;\r\n\r\ntype LocalesProps = {\r\n [key: string]: string;\r\n}\r\n\r\ntype LocaleStoreProps = {\r\n locale: localeType;\r\n locales: LocalesProps;\r\n};\r\n\r\nconst reportedMissing = new Set<string>();\r\nfunction reportMissingLocale(key: string) {\r\n if (!key || reportedMissing.has(key)) return;\r\n reportedMissing.add(key);\r\n fetchNui('REPORT_MISSING_LOCALE', { key }).catch(() => {});\r\n}\r\n\r\n\r\nexport const localeStore = create<LocaleStoreProps>((set, get) => {\r\n return {\r\n locales: {\r\n \"OccupantsDesc\": \"Here you can view and manage the occupants of your traphouse. These occupants can be used mainly for selling drugs to the NPCs surrounding your traphouse. However they have other uses to so be careful who you add as an occupant.\",\r\n },\r\n locale: (key: string, ...args: (string|number)[]): string => {\r\n const exists = get().locales[key];\r\n if (!exists) reportMissingLocale(key);\r\n let translation = exists || key;\r\n if (args.length) {\r\n // convert the arg to a string and replace the %s in the translation\r\n \r\n\r\n translation = translation.replace(/%s/g, () => String(args.shift() || ''));\r\n }\r\n return translation;\r\n },\r\n };\r\n});\r\n\r\n// export locale as a standalone function\r\nexport const locale = localeStore.getState().locale;\r\n\r\nregisterInitialFetch<LocalesProps>('GET_LOCALES', undefined).then((data) => {\r\n localeStore.setState({ locales: data });\r\n}).catch(() => {})\r\n\r\n// dirk_lib broadcasts UPDATE_DIRK_LIB_LOCALES whenever an admin changes the\r\n// `language` setting, so the dict updates live without a resource restart.\r\nif (typeof window !== \"undefined\") {\r\n window.addEventListener(\"message\", (event) => {\r\n const msg = event.data;\r\n if (!msg || msg.action !== \"UPDATE_DIRK_LIB_LOCALES\") return;\r\n if (!msg.data || typeof msg.data !== \"object\") return;\r\n localeStore.setState({ locales: msg.data as LocalesProps });\r\n });\r\n}","import { create } from \"zustand\";\r\nimport { registerInitialFetch } from \"./fetchNui\";\r\n\r\nexport type InventoryItem = {\r\n name: string;\r\n label: string;\r\n weight: number;\r\n image: string;\r\n};\r\n\r\nexport type InventoryItems = Record<string, InventoryItem>;\r\n\r\nexport const useItems = create<InventoryItems>(() => ({}));\r\n\r\nexport const useItemsList = (excludeItemNames: string[] = []): InventoryItem[] => {\r\n const excludeSet = new Set(excludeItemNames);\r\n return Object.values(useItems.getState()).filter((item) => !excludeSet.has(item.name));\r\n};\r\n\r\nexport const getItemImageUrl = (itemName: string): string => {\r\n return useItems.getState()[itemName]?.image || \"\";\r\n};\r\n\r\nregisterInitialFetch<InventoryItems>(\"FETCH_ALL_ITEMS\", null, {\r\n item1: { name: \"item1\", label: \"Item 1\", weight: 0.5, image: \"item1.png\" },\r\n item2: { name: \"item2\", label: \"Item 2\", weight: 1.0, image: \"item2.png\" },\r\n item3: { name: \"item3\", label: \"Item 3\", weight: 2.5, image: \"item3.png\" },\r\n}).then((fetchedItems) => {\r\n if (!fetchedItems) return;\r\n useItems.setState(fetchedItems);\r\n}).catch(() => {});\r\n","import { create } from \"zustand\";\nimport { registerInitialFetch } from \"./fetchNui\";\n\n// Shape mirrors lib.framework.Group / lib.framework.Grade in dirk_lib.\n// payment is QB/qbx `payment` ⊕ ESX `salary`; nil on ND core.\n// bankAuth is qbx-native; defaults to isBoss on frameworks without it.\nexport type FrameworkGrade = {\n grade: number;\n name: string;\n label: string;\n payment?: number;\n isBoss: boolean;\n bankAuth: boolean;\n};\n\nexport type FrameworkGroup = {\n name: string;\n label: string;\n type: \"job\" | \"gang\";\n category?: string;\n whitelisted?: boolean;\n defaultDuty?: boolean;\n offDutyPay?: boolean;\n grades: FrameworkGrade[];\n};\n\ntype FrameworkGroupsBundle = {\n jobs: FrameworkGroup[];\n gangs: FrameworkGroup[];\n};\n\ntype FrameworkGroupsStore = FrameworkGroupsBundle & {\n loaded: boolean;\n};\n\nexport const useFrameworkGroups = create<FrameworkGroupsStore>(() => ({\n jobs: [],\n gangs: [],\n loaded: false,\n}));\n\n// Auto-fetch on module load — runs once, populates the store, and is also\n// re-fired via useAutoFetcher() on App mount as a safety net.\nregisterInitialFetch<FrameworkGroupsBundle>(\"GET_FRAMEWORK_GROUPS\", undefined)\n .then((data) => {\n useFrameworkGroups.setState({\n jobs: Array.isArray(data?.jobs) ? data.jobs : [],\n gangs: Array.isArray(data?.gangs) ? data.gangs : [],\n loaded: true,\n });\n })\n .catch(() => {\n useFrameworkGroups.setState({ loaded: true });\n });\n\n// Helper for components that don't care about the job/gang split.\nexport function selectAllGroups(state: FrameworkGroupsStore): FrameworkGroup[] {\n return [...state.jobs, ...state.gangs];\n}\n","export const INPUT_MAPPER_PRIMARY_OPTIONS = [\r\n \"DIGITALBUTTON_AXIS\",\r\n \"GAME_CONTROLLED\",\r\n \"JOYSTICK_AXIS\",\r\n \"JOYSTICK_AXIS_NEGATIVE\",\r\n \"JOYSTICK_AXIS_POSITIVE\",\r\n \"JOYSTICK_BUTTON\",\r\n \"JOYSTICK_IAXIS\",\r\n \"JOYSTICK_POV\",\r\n \"JOYSTICK_POV_AXIS\",\r\n \"KEYBOARD\",\r\n \"MKB_AXIS\",\r\n \"MOUSE_ABSOLUTEAXIS\",\r\n \"MOUSE_BUTTON\",\r\n \"MOUSE_CENTEREDAXIS\",\r\n \"MOUSE_NORMALIZED\",\r\n \"MOUSE_RELATIVEAXIS\",\r\n \"MOUSE_SCALEDAXIS\",\r\n \"MOUSE_WHEEL\",\r\n \"PAD_ANALOGBUTTON\",\r\n \"PAD_AXIS\",\r\n \"PAD_DEBUGBUTTON\",\r\n \"PAD_DIGITALBUTTON\",\r\n \"TOUCHPAD_ABSOLUTE_AXIS\",\r\n \"TOUCHPAD_CENTERED_AXIS\",\r\n] as const;\r\n\r\nconst KEYBOARD_KEYS = [\r\n \"BACK\", \"TAB\", \"RETURN\", \"PAUSE\", \"CAPITAL\", \"ESCAPE\", \"SPACE\", \"PAGEUP\", \"PAGEDOWN\",\r\n \"END\", \"HOME\", \"LEFT\", \"UP\", \"RIGHT\", \"DOWN\", \"INSERT\", \"DELETE\",\r\n \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\",\r\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\r\n \"F1\", \"F2\", \"F3\", \"F4\", \"F5\", \"F6\", \"F7\", \"F8\", \"F9\", \"F10\", \"F11\", \"F12\",\r\n \"NUMPAD0\", \"NUMPAD1\", \"NUMPAD2\", \"NUMPAD3\", \"NUMPAD4\", \"NUMPAD5\", \"NUMPAD6\", \"NUMPAD7\", \"NUMPAD8\", \"NUMPAD9\",\r\n \"MULTIPLY\", \"ADD\", \"SUBTRACT\", \"DECIMAL\", \"DIVIDE\", \"NUMPADENTER\",\r\n \"LSHIFT\", \"RSHIFT\", \"LCONTROL\", \"RCONTROL\", \"LMENU\", \"RMENU\",\r\n \"LWIN\", \"RWIN\", \"APPS\", \"NUMLOCK\", \"SCROLL\",\r\n \"OEM_1\", \"SEMICOLON\", \"EQUALS\", \"PLUS\", \"COMMA\", \"MINUS\", \"PERIOD\", \"SLASH\", \"OEM_2\", \"OEM_3\", \"GRAVE\",\r\n \"LBRACKET\", \"OEM_4\", \"BACKSLASH\", \"OEM_5\", \"RBRACKET\", \"OEM_6\", \"APOSTROPHE\", \"OEM_7\", \"OEM_102\",\r\n] as const;\r\n\r\nconst MOUSE_BUTTON_KEYS = [\r\n \"MOUSE_LEFT\",\r\n \"MOUSE_RIGHT\",\r\n \"MOUSE_MIDDLE\",\r\n \"MOUSE_EXTRABTN1\",\r\n \"MOUSE_EXTRABTN2\",\r\n \"MOUSE_EXTRABTN3\",\r\n \"MOUSE_EXTRABTN4\",\r\n \"MOUSE_EXTRABTN5\",\r\n \"IOM_WHEEL_UP\",\r\n \"IOM_WHEEL_DOWN\",\r\n] as const;\r\n\r\nconst MOUSE_WHEEL_KEYS = [\"IOM_WHEEL_UP\", \"IOM_WHEEL_DOWN\"] as const;\r\n\r\nconst MOUSE_AXIS_KEYS = [\r\n \"IOM_AXIS_X\",\r\n \"IOM_AXIS_Y\",\r\n \"IOM_AXIS_WHEEL\",\r\n \"IOM_AXIS_WHEEL_DELTA\",\r\n \"IOM_AXIS_WHEEL_RELATIVE\",\r\n \"IOM_IAXIS_X\",\r\n \"IOM_IAXIS_Y\",\r\n \"IOM_IAXIS_WHEEL\",\r\n \"IOM_IAXIS_WHEEL_DELTA\",\r\n \"IOM_IAXIS_WHEEL_RELATIVE\",\r\n \"IOM_AXIS_X_LEFT\",\r\n \"IOM_AXIS_X_RIGHT\",\r\n \"IOM_AXIS_Y_UP\",\r\n \"IOM_AXIS_Y_DOWN\",\r\n \"BASIC_MOUSE_AXIS_MAX\",\r\n \"MOUSE_AXIS_MAX\",\r\n] as const;\r\n\r\nconst PAD_BUTTON_KEYS = [\r\n \"L1_INDEX\",\r\n \"R1_INDEX\",\r\n \"L2_INDEX\",\r\n \"R2_INDEX\",\r\n \"L3_INDEX\",\r\n \"R3_INDEX\",\r\n \"LUP_INDEX\",\r\n \"LRIGHT_INDEX\",\r\n \"LDOWN_INDEX\",\r\n \"LLEFT_INDEX\",\r\n \"RUP_INDEX\",\r\n \"RRIGHT_INDEX\",\r\n \"RDOWN_INDEX\",\r\n \"RLEFT_INDEX\",\r\n \"SELECT_INDEX\",\r\n \"START_INDEX\",\r\n \"TOUCH_INDEX\",\r\n] as const;\r\n\r\nconst PAD_DEBUG_KEYS = [\r\n \"L1\",\r\n \"R1\",\r\n \"L2\",\r\n \"R2\",\r\n \"L3\",\r\n \"R3\",\r\n \"LUP\",\r\n \"LRIGHT\",\r\n \"LDOWN\",\r\n \"LLEFT\",\r\n \"RUP\",\r\n \"RRIGHT\",\r\n \"RDOWN\",\r\n \"RLEFT\",\r\n \"SELECT\",\r\n \"START\",\r\n \"TOUCH\",\r\n] as const;\r\n\r\nconst PAD_AXIS_KEYS = [\r\n \"IOM_AXIS_LX\",\r\n \"IOM_AXIS_LY\",\r\n \"IOM_AXIS_RX\",\r\n \"IOM_AXIS_RY\",\r\n \"IOM_AXIS_LUP\",\r\n \"IOM_AXIS_LDOWN\",\r\n \"IOM_AXIS_LLEFT\",\r\n \"IOM_AXIS_LRIGHT\",\r\n \"IOM_AXIS_LUR\",\r\n \"IOM_AXIS_LUL\",\r\n \"IOM_AXIS_LDR\",\r\n \"IOM_AXIS_LDL\",\r\n \"IOM_AXIS_RUP\",\r\n \"IOM_AXIS_RDOWN\",\r\n \"IOM_AXIS_RLEFT\",\r\n \"IOM_AXIS_RRIGHT\",\r\n \"IOM_AXIS_RUR\",\r\n \"IOM_AXIS_RUL\",\r\n \"IOM_AXIS_RDR\",\r\n \"IOM_AXIS_RDL\",\r\n \"IOM_AXIS_DPADX\",\r\n \"IOM_AXIS_DPADY\",\r\n \"IOM_AXIS_LY_UP\",\r\n \"IOM_AXIS_LY_DOWN\",\r\n \"IOM_AXIS_LX_LEFT\",\r\n \"IOM_AXIS_LX_RIGHT\",\r\n \"IOM_AXIS_RY_UP\",\r\n \"IOM_AXIS_RY_DOWN\",\r\n \"IOM_AXIS_RX_LEFT\",\r\n \"IOM_AXIS_RX_RIGHT\",\r\n] as const;\r\n\r\nconst JOYSTICK_AXIS_KEYS = Array.from({ length: 8 }, (_, i) => `IOM_JOYSTICK_AXIS${i + 1}`);\r\nconst JOYSTICK_BUTTON_KEYS = Array.from({ length: 32 }, (_, i) => `IOM_JOYSTICK_BUTTON${i + 1}`);\r\nconst JOYSTICK_POV_KEYS = Array.from({ length: 4 }, (_, p) => {\r\n const idx = p + 1;\r\n return [\r\n `IOM_POV${idx}_UP`,\r\n `IOM_POV${idx}_RIGHT`,\r\n `IOM_POV${idx}_DOWN`,\r\n `IOM_POV${idx}_LEFT`,\r\n ];\r\n}).flat();\r\n\r\nexport const INPUT_MAPPER_KEYS_BY_PRIMARY: Record<string, string[]> = {\r\n DIGITALBUTTON_AXIS: [],\r\n GAME_CONTROLLED: [],\r\n JOYSTICK_AXIS: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_AXIS_NEGATIVE: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_AXIS_POSITIVE: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_BUTTON: [...JOYSTICK_BUTTON_KEYS],\r\n JOYSTICK_IAXIS: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_POV: [...JOYSTICK_POV_KEYS],\r\n JOYSTICK_POV_AXIS: [...JOYSTICK_POV_KEYS],\r\n KEYBOARD: [...KEYBOARD_KEYS],\r\n MKB_AXIS: [],\r\n MOUSE_ABSOLUTEAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_BUTTON: [...MOUSE_BUTTON_KEYS],\r\n MOUSE_CENTEREDAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_NORMALIZED: [...MOUSE_AXIS_KEYS],\r\n MOUSE_RELATIVEAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_SCALEDAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_WHEEL: [...MOUSE_WHEEL_KEYS],\r\n PAD_ANALOGBUTTON: [...PAD_BUTTON_KEYS],\r\n PAD_AXIS: [...PAD_AXIS_KEYS],\r\n PAD_DEBUGBUTTON: [...PAD_DEBUG_KEYS],\r\n PAD_DIGITALBUTTON: [...PAD_BUTTON_KEYS],\r\n TOUCHPAD_ABSOLUTE_AXIS: [],\r\n TOUCHPAD_CENTERED_AXIS: [],\r\n};\r\n","// Curated list of FiveM control IDs (the IsControlPressed / DisableControlAction\n// numeric IDs). Sourced from https://docs.fivem.net/docs/game-references/controls/.\n// Not every control is included — the full list is ~349 entries and most are\n// obscure cellphone-scroll / replay-editor inputs no script ever cares about.\n// What's here covers the practical surface for scene whitelisting, raid\n// keybinds, vehicle scripts, etc. Add more as needed.\n\nexport type GtaControl = {\n /** Numeric control ID passed to IsControlPressed / EnableControlAction. */\n id: number;\n /** Symbolic name as it appears in the FiveM docs (e.g. INPUT_LOOK_LR). */\n symbol: string;\n /** Friendly label suitable for UI display (e.g. \"Look Left/Right\"). */\n label: string;\n /** Default keyboard binding shown for context (e.g. \"Mouse X\", \"E\"). */\n defaultKey?: string;\n /** Group used for ordering and section headers in pickers. */\n group: GtaControlGroup;\n};\n\nexport type GtaControlGroup =\n | \"Camera\"\n | \"Movement\"\n | \"Combat\"\n | \"Cover\"\n | \"Vehicle\"\n | \"Vehicle (Plane/Heli)\"\n | \"Vehicle (Boat/Bike)\"\n | \"Phone\"\n | \"Frontend / UI\"\n | \"Multiplayer\"\n | \"Misc\";\n\nexport const GTA_CONTROLS: GtaControl[] = [\n // ── Camera ─────────────────────────────────────────────────────────────────\n { id: 0, symbol: \"INPUT_NEXT_CAMERA\", label: \"Switch Camera\", defaultKey: \"V\", group: \"Camera\" },\n { id: 1, symbol: \"INPUT_LOOK_LR\", label: \"Look Left/Right\", defaultKey: \"Mouse X\", group: \"Camera\" },\n { id: 2, symbol: \"INPUT_LOOK_UD\", label: \"Look Up/Down\", defaultKey: \"Mouse Y\", group: \"Camera\" },\n { id: 3, symbol: \"INPUT_LOOK_UP_ONLY\", label: \"Look Up Only\", group: \"Camera\" },\n { id: 4, symbol: \"INPUT_LOOK_DOWN_ONLY\", label: \"Look Down Only\", group: \"Camera\" },\n { id: 5, symbol: \"INPUT_LOOK_LEFT_ONLY\", label: \"Look Left Only\", group: \"Camera\" },\n { id: 6, symbol: \"INPUT_LOOK_RIGHT_ONLY\", label: \"Look Right Only\", group: \"Camera\" },\n { id: 8, symbol: \"INPUT_CINEMATIC_SLOWMO\", label: \"Cinematic Slowmo\", defaultKey: \"Insert\", group: \"Camera\" },\n { id: 26, symbol: \"INPUT_LOOK_BEHIND\", label: \"Look Behind\", defaultKey: \"C\", group: \"Camera\" },\n { id: 27, symbol: \"INPUT_PHONE\", label: \"Phone\", defaultKey: \"Up Arrow\", group: \"Phone\" },\n\n // ── Movement ───────────────────────────────────────────────────────────────\n { id: 21, symbol: \"INPUT_SPRINT\", label: \"Sprint\", defaultKey: \"Left Shift\", group: \"Movement\" },\n { id: 22, symbol: \"INPUT_JUMP\", label: \"Jump\", defaultKey: \"Space\", group: \"Movement\" },\n { id: 23, symbol: \"INPUT_ENTER\", label: \"Enter Vehicle\", defaultKey: \"F\", group: \"Movement\" },\n { id: 30, symbol: \"INPUT_MOVE_LR\", label: \"Move Left/Right\", group: \"Movement\" },\n { id: 31, symbol: \"INPUT_MOVE_UD\", label: \"Move Up/Down\", group: \"Movement\" },\n { id: 32, symbol: \"INPUT_MOVE_UP_ONLY\", label: \"Move Forward (W)\", group: \"Movement\" },\n { id: 33, symbol: \"INPUT_MOVE_DOWN_ONLY\", label: \"Move Back (S)\", group: \"Movement\" },\n { id: 34, symbol: \"INPUT_MOVE_LEFT_ONLY\", label: \"Move Left (A)\", group: \"Movement\" },\n { id: 35, symbol: \"INPUT_MOVE_RIGHT_ONLY\", label: \"Move Right (D)\", group: \"Movement\" },\n { id: 36, symbol: \"INPUT_DUCK\", label: \"Duck / Stealth\", defaultKey: \"Left Ctrl\", group: \"Movement\" },\n { id: 37, symbol: \"INPUT_SELECT_WEAPON\", label: \"Weapon Wheel\", defaultKey: \"Tab\", group: \"Combat\" },\n { id: 38, symbol: \"INPUT_PICKUP\", label: \"Pickup / Interact\", defaultKey: \"E\", group: \"Movement\" },\n\n // ── Combat ─────────────────────────────────────────────────────────────────\n { id: 24, symbol: \"INPUT_ATTACK\", label: \"Attack / Fire\", defaultKey: \"Mouse 1\", group: \"Combat\" },\n { id: 25, symbol: \"INPUT_AIM\", label: \"Aim\", defaultKey: \"Mouse 2\", group: \"Combat\" },\n { id: 45, symbol: \"INPUT_RELOAD\", label: \"Reload\", defaultKey: \"R\", group: \"Combat\" },\n { id: 47, symbol: \"INPUT_DETONATE\", label: \"Detonate\", defaultKey: \"G\", group: \"Combat\" },\n { id: 257, symbol: \"INPUT_ATTACK2\", label: \"Attack 2\", group: \"Combat\" },\n { id: 140, symbol: \"INPUT_MELEE_ATTACK_LIGHT\", label: \"Melee Light\", defaultKey: \"R\", group: \"Combat\" },\n { id: 141, symbol: \"INPUT_MELEE_ATTACK_HEAVY\", label: \"Melee Heavy\", defaultKey: \"Q\", group: \"Combat\" },\n { id: 142, symbol: \"INPUT_MELEE_ATTACK_ALTERNATE\", label: \"Melee Alternate\", defaultKey: \"Mouse 1\", group: \"Combat\" },\n { id: 263, symbol: \"INPUT_MELEE_ATTACK1\", label: \"Melee Attack 1\", group: \"Combat\" },\n { id: 264, symbol: \"INPUT_MELEE_ATTACK2\", label: \"Melee Attack 2\", group: \"Combat\" },\n\n // ── Cover ──────────────────────────────────────────────────────────────────\n { id: 44, symbol: \"INPUT_COVER\", label: \"Cover\", defaultKey: \"Q\", group: \"Cover\" },\n\n // ── Vehicle (general) ──────────────────────────────────────────────────────\n { id: 59, symbol: \"INPUT_VEH_MOVE_LR\", label: \"Vehicle Steering\", group: \"Vehicle\" },\n { id: 63, symbol: \"INPUT_VEH_MOVE_LEFT_ONLY\", label: \"Vehicle Steer Left\", group: \"Vehicle\" },\n { id: 64, symbol: \"INPUT_VEH_MOVE_RIGHT_ONLY\", label: \"Vehicle Steer Right\", group: \"Vehicle\" },\n { id: 71, symbol: \"INPUT_VEH_ACCELERATE\", label: \"Vehicle Accelerate\", defaultKey: \"W\", group: \"Vehicle\" },\n { id: 72, symbol: \"INPUT_VEH_BRAKE\", label: \"Vehicle Brake\", defaultKey: \"S\", group: \"Vehicle\" },\n { id: 73, symbol: \"INPUT_VEH_DUCK\", label: \"Vehicle Duck\", defaultKey: \"X\", group: \"Vehicle\" },\n { id: 74, symbol: \"INPUT_VEH_HEADLIGHT\", label: \"Headlights\", defaultKey: \"H\", group: \"Vehicle\" },\n { id: 75, symbol: \"INPUT_VEH_EXIT\", label: \"Exit Vehicle\", defaultKey: \"F\", group: \"Vehicle\" },\n { id: 76, symbol: \"INPUT_VEH_HANDBRAKE\", label: \"Handbrake\", defaultKey: \"Space\", group: \"Vehicle\" },\n { id: 80, symbol: \"INPUT_VEH_CIN_CAM\", label: \"Cinematic Cam\", defaultKey: \"R\", group: \"Vehicle\" },\n { id: 81, symbol: \"INPUT_VEH_NEXT_RADIO\", label: \"Radio Next\", group: \"Vehicle\" },\n { id: 82, symbol: \"INPUT_VEH_PREV_RADIO\", label: \"Radio Prev\", group: \"Vehicle\" },\n { id: 83, symbol: \"INPUT_VEH_NEXT_RADIO_TRACK\", label: \"Radio Next Track\", group: \"Vehicle\" },\n { id: 84, symbol: \"INPUT_VEH_PREV_RADIO_TRACK\", label: \"Radio Prev Track\", group: \"Vehicle\" },\n { id: 85, symbol: \"INPUT_VEH_RADIO_WHEEL\", label: \"Radio Wheel\", defaultKey: \"Q\", group: \"Vehicle\" },\n { id: 86, symbol: \"INPUT_VEH_HORN\", label: \"Horn\", defaultKey: \"E\", group: \"Vehicle\" },\n { id: 90, symbol: \"INPUT_VEH_AIM\", label: \"Vehicle Aim\", group: \"Vehicle\" },\n { id: 91, symbol: \"INPUT_VEH_ATTACK\", label: \"Vehicle Attack\", group: \"Vehicle\" },\n { id: 92, symbol: \"INPUT_VEH_ATTACK2\", label: \"Vehicle Attack 2\", group: \"Vehicle\" },\n { id: 99, symbol: \"INPUT_VEH_SELECT_NEXT_WEAPON\", label: \"Veh Next Weapon\", group: \"Vehicle\" },\n { id: 100, symbol: \"INPUT_VEH_SELECT_PREV_WEAPON\", label: \"Veh Prev Weapon\", group: \"Vehicle\" },\n\n // ── Vehicle (Plane/Heli) ───────────────────────────────────────────────────\n { id: 152, symbol: \"INPUT_VEH_FLY_THROTTLE_UP\", label: \"Plane Throttle Up\", defaultKey: \"W\", group: \"Vehicle (Plane/Heli)\" },\n { id: 153, symbol: \"INPUT_VEH_FLY_THROTTLE_DOWN\", label: \"Plane Throttle Down\", defaultKey: \"S\", group: \"Vehicle (Plane/Heli)\" },\n { id: 154, symbol: \"INPUT_VEH_FLY_YAW_LEFT\", label: \"Plane Yaw Left\", defaultKey: \"A\", group: \"Vehicle (Plane/Heli)\" },\n { id: 155, symbol: \"INPUT_VEH_FLY_YAW_RIGHT\", label: \"Plane Yaw Right\", defaultKey: \"D\", group: \"Vehicle (Plane/Heli)\" },\n { id: 158, symbol: \"INPUT_VEH_FLY_ATTACK\", label: \"Plane Attack\", defaultKey: \"Mouse 1\", group: \"Vehicle (Plane/Heli)\" },\n\n // ── Vehicle (Boat / Bike) ──────────────────────────────────────────────────\n { id: 198, symbol: \"INPUT_VEH_BICYCLE_PEDAL\", label: \"Bike Pedal\", group: \"Vehicle (Boat/Bike)\" },\n\n // ── Phone ──────────────────────────────────────────────────────────────────\n { id: 137, symbol: \"INPUT_FRONTEND_SOCIAL_CLUB_SECONDARY\", label: \"Toggle Phone (alt)\", group: \"Phone\" },\n\n // ── Frontend / UI ──────────────────────────────────────────────────────────\n { id: 199, symbol: \"INPUT_FRONTEND_PAUSE\", label: \"Pause Menu\", defaultKey: \"P\", group: \"Frontend / UI\" },\n { id: 200, symbol: \"INPUT_FRONTEND_PAUSE_ALTERNATE\", label: \"Pause Menu (alt)\", defaultKey: \"Esc\", group: \"Frontend / UI\" },\n { id: 201, symbol: \"INPUT_FRONTEND_ACCEPT\", label: \"Accept\", defaultKey: \"Enter\", group: \"Frontend / UI\" },\n { id: 202, symbol: \"INPUT_FRONTEND_CANCEL\", label: \"Cancel\", defaultKey: \"Esc\", group: \"Frontend / UI\" },\n { id: 244, symbol: \"INPUT_INTERACTION_MENU\", label: \"Interaction Menu\", defaultKey: \"M\", group: \"Frontend / UI\" },\n\n // ── Multiplayer ────────────────────────────────────────────────────────────\n { id: 245, symbol: \"INPUT_MP_TEXT_CHAT_ALL\", label: \"Chat (All)\", defaultKey: \"T\", group: \"Multiplayer\" },\n { id: 246, symbol: \"INPUT_MP_TEXT_CHAT_TEAM\", label: \"Chat (Team)\", defaultKey: \"Y\", group: \"Multiplayer\" },\n { id: 247, symbol: \"INPUT_MP_TEXT_CHAT_FRIENDS\", label: \"Chat (Friends)\", group: \"Multiplayer\" },\n { id: 248, symbol: \"INPUT_MP_TEXT_CHAT_CREW\", label: \"Chat (Crew)\", group: \"Multiplayer\" },\n { id: 249, symbol: \"INPUT_PUSH_TO_TALK\", label: \"Push To Talk\", defaultKey: \"N\", group: \"Multiplayer\" },\n\n // ── Misc ───────────────────────────────────────────────────────────────────\n { id: 51, symbol: \"INPUT_CONTEXT\", label: \"Context (E)\", defaultKey: \"E\", group: \"Misc\" },\n { id: 52, symbol: \"INPUT_CONTEXT_SECONDARY\", label: \"Context Secondary\", defaultKey: \"Q\", group: \"Misc\" },\n { id: 19, symbol: \"INPUT_CHARACTER_WHEEL\", label: \"Character Wheel\", defaultKey: \"Left Alt\", group: \"Misc\" },\n { id: 105, symbol: \"INPUT_HUD_SPECIAL\", label: \"Special Ability\", defaultKey: \"Caps Lock\", group: \"Misc\" },\n { id: 121, symbol: \"INPUT_MULTIPLAYER_INFO\", label: \"Player List\", defaultKey: \"Z\", group: \"Misc\" },\n { id: 170, symbol: \"INPUT_SAVE_REPLAY_CLIP\", label: \"Save Replay Clip\", defaultKey: \"F1\", group: \"Misc\" },\n { id: 288, symbol: \"INPUT_REPLAY_START_STOP_RECORDING\", label: \"Replay Record\", defaultKey: \"F1\", group: \"Misc\" },\n { id: 289, symbol: \"INPUT_REPLAY_START_STOP_RECORDING_SECONDARY\", label: \"Replay Record (alt)\", group: \"Misc\" },\n];\n\nconst BY_ID = new Map<number, GtaControl>(GTA_CONTROLS.map((c) => [c.id, c]));\n\nexport function getGtaControl(id: number): GtaControl | undefined {\n return BY_ID.get(id);\n}\n\n/** Format a control id as `Label (id)`, falling back to `Control id` if unknown. */\nexport function formatGtaControl(id: number): string {\n const c = BY_ID.get(id);\n if (!c) return `Control ${id}`;\n return c.defaultKey ? `${c.label} (${id} · ${c.defaultKey})` : `${c.label} (${id})`;\n}\n\n/** Group order used by ControlSelect / ControlMultiSelect for the dropdown headings. */\nexport const GTA_CONTROL_GROUP_ORDER: GtaControlGroup[] = [\n \"Camera\",\n \"Movement\",\n \"Combat\",\n \"Cover\",\n \"Vehicle\",\n \"Vehicle (Plane/Heli)\",\n \"Vehicle (Boat/Bike)\",\n \"Phone\",\n \"Frontend / UI\",\n \"Multiplayer\",\n \"Misc\",\n];\n","import { colorWithAlpha } from \"@/utils\";\r\nimport { IconName } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Flex, useMantineTheme } from \"@mantine/core\";\r\n\r\nexport type BorderedIconProps = {\r\n icon: string;\r\n color?: string;\r\n fontSize?: string;\r\n hovered?: boolean;\r\n hoverable?: boolean;\r\n radius?: string;\r\n p?: string;\r\n}\r\n\r\nexport function BorderedIcon(props: BorderedIconProps){\r\n const theme = useMantineTheme();\r\n return (\r\n <Flex\r\n bg='rgba(0, 0, 0, 0.5)'\r\n p={props.p || 'xs'}\r\n justify='center'\r\n align='center'\r\n style={{\r\n aspectRatio: '1/1', \r\n \r\n borderRadius: theme.radius.xs,\r\n // border: `2px solid var(--mantine-primary-color-9)`,\r\n outline: `0.2vh solid ${colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][9], 0.8)}`,\r\n boxShadow: `inset 0 0 2vh ${colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][7], 0.5)}`\r\n }}\r\n \r\n >\r\n <FontAwesomeIcon\r\n icon={props.icon as IconName}\r\n color={colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][theme.primaryShade as number], props.hovered ? 0.9: 0.9)}\r\n style={{\r\n fontSize: props.fontSize ? props.fontSize: '2.5vh',\r\n }}\r\n />\r\n </Flex>\r\n )\r\n}","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Flex, Image, Text } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport React from \"react\";\r\n\r\n// @ts-expect-error ts-migrate(7006) FIXME: Parameter 'Flex' implicitly has an 'any' type.\r\nexport const MotionFlex = motion.create(Flex) as React.ComponentType<any>;\r\n// @ts-expect-error ts-migrate(7006) FIXME: Parameter 'Text' implicitly has an 'any' type.\r\nexport const MotionText = motion.create(Text) as React.ComponentType<any>;\r\n// @ts-expect-error ts-migrate(7006) FIXME: Parameter 'Image' implicitly has an 'any' type.\r\nexport const MotionImage = motion.create(Image) as React.ComponentType<any>;\r\n\r\nexport const MotionIcon = motion.create(FontAwesomeIcon);\r\n\r\n\r\n\r\n\r\n","import { AnimatePresence } from \"framer-motion\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\nexport function Counter(props: {count: number, color?: string, style?: React.CSSProperties}) {\r\n return (\r\n <AnimatePresence>\r\n {props.count > 0 && (\r\n <MotionFlex\r\n key='counter'\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n\r\n fz='1.25vh'\r\n h='1.75vh'\r\n justify={'center'}\r\n align='center'\r\n bg={props.color || 'rgba(0, 0, 0, 0.51)'}\r\n style={{\r\n borderRadius: '50%',\r\n aspectRatio: '1/1',\r\n marginBottom: '0.3vh',\r\n fontFamily: 'Akrobat Bold',\r\n boxShadow: '0 0 5px rgba(0, 0, 0, 0.3)',\r\n ...props.style\r\n }}\r\n >\r\n {props.count}\r\n </MotionFlex> \r\n )}\r\n </AnimatePresence>\r\n\r\n )\r\n}","import React, { useRef, useEffect, useState } from 'react';\r\nimport { motion, useMotionValue } from 'framer-motion';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nexport type FloatingParticlesProps = {\r\n icons?: React.ReactNode[];\r\n particleCount?: number;\r\n color?: string;\r\n size?: number;\r\n speed?: 'slow' | 'medium' | 'fast';\r\n opacity?: number;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n mouseRepelDistance?: number;\r\n mouseRepelStrength?: number;\r\n backgroundColor?: string;\r\n}\r\n\r\nexport type ParticleState = {\r\n id: number;\r\n baseX: number;\r\n baseY: number;\r\n currentX: number;\r\n currentY: number;\r\n icon: React.ReactNode | null;\r\n animationDuration: number;\r\n}\r\n\r\n\r\n\r\nexport const FloatingParticles: React.FC<FloatingParticlesProps> = ({\r\n icons = [],\r\n particleCount = 55,\r\n color = '#00a552ff',\r\n size = 32,\r\n speed = 'slow',\r\n opacity = 0.3,\r\n style = {},\r\n mouseRepelDistance = 150,\r\n mouseRepelStrength = 50,\r\n backgroundColor = 'transparent',\r\n}) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [particles, setParticles] = useState<ParticleState[]>([]);\r\n \r\n const mouseX = useMotionValue(0);\r\n const mouseY = useMotionValue(0);\r\n\r\n const durationMap = {\r\n slow: { base: 10, variance: 10 },\r\n medium: { base: 2, variance: 2},\r\n fast: { base: 4, variance: 2 },\r\n };\r\n\r\n const duration = durationMap[speed];\r\n\r\n const seededRandom = (seed: number) => {\r\n const x = Math.sin(seed) * 10000;\r\n return x - Math.floor(x);\r\n };\r\n\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const bounds = containerRef.current.getBoundingClientRect();\r\n\r\n const newParticles: ParticleState[] = [...Array(particleCount)].map((_, i) => {\r\n const seedX = i * 123.456;\r\n const seedY = i * 789.012;\r\n const seedDuration = i * 345.678;\r\n \r\n const baseX = seededRandom(seedX) * bounds.width;\r\n const baseY = seededRandom(seedY) * bounds.height;\r\n \r\n return {\r\n id: i,\r\n baseX,\r\n baseY,\r\n currentX: baseX,\r\n currentY: baseY,\r\n icon: icons.length > 0 ? icons[i % icons.length] : null,\r\n animationDuration: duration.base + seededRandom(seedDuration) * duration.variance,\r\n };\r\n });\r\n\r\n setParticles(newParticles);\r\n }, [particleCount, icons.length, duration.base, duration.variance]);\r\n\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n const bounds = containerRef.current!.getBoundingClientRect();\r\n const x = e.clientX - bounds.left;\r\n const y = e.clientY - bounds.top;\r\n \r\n mouseX.set(x);\r\n mouseY.set(y);\r\n\r\n setParticles(prevParticles => \r\n prevParticles.map(particle => {\r\n const dx = x - particle.baseX;\r\n const dy = y - particle.baseY;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n\r\n if (distance < mouseRepelDistance && distance > 0) {\r\n const force = (mouseRepelDistance - distance) / mouseRepelDistance;\r\n const repelX = (dx / distance) * force * mouseRepelStrength * -1;\r\n const repelY = (dy / distance) * force * mouseRepelStrength * -1;\r\n\r\n return {\r\n ...particle,\r\n currentX: particle.baseX + repelX,\r\n currentY: particle.baseY + repelY,\r\n };\r\n } else {\r\n return {\r\n ...particle,\r\n currentX: particle.baseX,\r\n currentY: particle.baseY,\r\n };\r\n }\r\n })\r\n );\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setParticles(prevParticles =>\r\n prevParticles.map(particle => ({\r\n ...particle,\r\n currentX: particle.baseX,\r\n currentY: particle.baseY,\r\n }))\r\n );\r\n };\r\n\r\n const container = containerRef.current;\r\n container.addEventListener('mousemove', handleMouseMove);\r\n container.addEventListener('mouseleave', handleMouseLeave);\r\n\r\n return () => {\r\n container.removeEventListener('mousemove', handleMouseMove);\r\n container.removeEventListener('mouseleave', handleMouseLeave);\r\n };\r\n }, [mouseX, mouseY, mouseRepelDistance, mouseRepelStrength]);\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n if (!containerRef.current) return;\r\n \r\n const bounds = containerRef.current.getBoundingClientRect();\r\n \r\n setParticles(prevParticles =>\r\n prevParticles.map((particle, i) => {\r\n const seedX = i * 123.456 + bounds.width;\r\n const seedY = i * 789.012 + bounds.height;\r\n \r\n const newBaseX = seededRandom(seedX) * bounds.width;\r\n const newBaseY = seededRandom(seedY) * bounds.height;\r\n \r\n return {\r\n ...particle,\r\n baseX: newBaseX,\r\n baseY: newBaseY,\r\n currentX: newBaseX,\r\n currentY: newBaseY,\r\n };\r\n })\r\n );\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return (\r\n <div \r\n ref={containerRef}\r\n style={{\r\n position: 'absolute',\r\n overflow: 'hidden',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: -1,\r\n \r\n backgroundColor,\r\n ...style,\r\n }}\r\n >\r\n <div style={{ position: 'absolute', inset: 0, pointerEvents: 'none' }}>\r\n {particles.map((particle) => (\r\n <motion.div\r\n key={particle.id}\r\n style={{\r\n position: 'absolute',\r\n width: size,\r\n height: size,\r\n color,\r\n opacity,\r\n left: 0,\r\n top: 0,\r\n }}\r\n animate={{\r\n x: particle.currentX,\r\n y: particle.currentY,\r\n scale: [0.8, 1.1, 0.8],\r\n opacity: [opacity * 0.5, opacity, opacity * 0.5],\r\n // random rotate between 0 and 360 so that not all particles rotate the same\r\n rotate: particle.id % 2 === 0 ? [0, 360] : [360, 0],\r\n }}\r\n transition={{\r\n x: { type: \"spring\", stiffness: 150, damping: 20 },\r\n y: { type: \"spring\", stiffness: 150, damping: 20 },\r\n rotate: {\r\n duration: particle.animationDuration,\r\n repeat: Infinity,\r\n ease: 'linear',\r\n \r\n },\r\n scale: {\r\n duration: particle.animationDuration,\r\n repeat: Infinity,\r\n delay: seededRandom(particle.id * 111.222) * 5,\r\n ease: 'easeInOut',\r\n },\r\n opacity: {\r\n duration: particle.animationDuration,\r\n repeat: Infinity,\r\n delay: seededRandom(particle.id * 333.444) * 5,\r\n ease: 'easeInOut',\r\n },\r\n }}\r\n >\r\n {particle.icon ? (\r\n <div style={{ width: '100%', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n <FontAwesomeIcon icon={particle.icon as any} style={{ width: '70%', height: '70%' }} />\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: '50%',\r\n backgroundColor: color,\r\n }}\r\n />\r\n )}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n","import { useMantineTheme, Flex, Text } from \"@mantine/core\";\r\n\r\nexport type InfoBoxProps = {\r\n leftSide: string;\r\n rightSide: string;\r\n};\r\n\r\nexport function InfoBox(props: InfoBoxProps) {\r\n const theme = useMantineTheme();\r\n\r\n\r\n return (\r\n <Flex\r\n w='fit-content'\r\n h='fit-content'\r\n style={{\r\n borderRadius: theme.radius.xs,\r\n overflow: 'hidden',\r\n border: `0.2vh solid rgba(77,77,77,0.3)`\r\n }}\r\n align='center'\r\n >\r\n <Flex\r\n miw='4vh'\r\n p='xxs'\r\n bg='rgba(77,77,77,0.2)'\r\n direction='column'\r\n justify='center'\r\n align='center'\r\n >\r\n <Text c='lightgrey' size='xxs'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}>{props.leftSide}</Text>\r\n </Flex>\r\n\r\n <Flex\r\n p='xxs'\r\n flex={1}\r\n miw='4vh'\r\n bg='rgba(77,77,77,0.5)'\r\n direction='column'\r\n align='center'\r\n justify='center'\r\n >\r\n <Text c='lightgrey' size='xxs'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}\r\n >{props.rightSide}</Text>\r\n </Flex>\r\n\r\n </Flex>\r\n );\r\n}\r\n","import { useMantineTheme, Flex, Text, alpha, Tooltip } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\nimport { Variants } from \"framer-motion\";\r\nimport { colorWithAlpha } from \"@/utils\";\r\nimport { Info } from \"lucide-react\";\r\n\r\nexport type InputContainerProps = {\r\n title?:string;\r\n error?: string;\r\n description?:string;\r\n children?:React.ReactNode;\r\n w?:string | number;\r\n flex?:number | string;\r\n h?:string | number;\r\n bg?:string;\r\n p?:string | number;\r\n variants?: Variants;\r\n style?:React.CSSProperties;\r\n rightSection?:React.ReactNode;\r\n}\r\n\r\nexport function InputContainer(props: InputContainerProps){\r\n const theme = useMantineTheme()\r\n return (\r\n <MotionFlex\r\n w={props.w || '100%'}\r\n flex={props.flex}\r\n direction='column'\r\n h={props.h}\r\n gap={props.title ? 'xs' : 0}\r\n \r\n\r\n bg={props.bg || alpha(theme.colors.dark[9], 0.65)}\r\n p={props.p || 'sm'}\r\n style={{\r\n borderRadius: theme.radius.xs,\r\n boxShadow: theme.shadows.sm,\r\n overflow: 'hidden',\r\n border: props.error ? `1px solid rgba(255, 100, 100, 0.8)` : '1px solid var(--mantine-color-dark-7)', \r\n ...props.style,\r\n }}\r\n variants={props.variants}\r\n >\r\n\r\n <Flex\r\n align='center'\r\n gap='xs'\r\n >\r\n {(props.title || props.description) && (\r\n <Flex\r\n align='center'\r\n flex={1}\r\n p={props.p == '0' ? 'sm' : 0}\r\n >\r\n {props.title && (\r\n <Text\r\n size=\"sm\"\r\n style={{\r\n lineHeight: '1.25vh',\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}\r\n >{props.title}</Text>\r\n )}\r\n {props.description && (\r\n <Tooltip\r\n label={props.description}\r\n position=\"top-end\"\r\n withArrow\r\n multiline\r\n maw=\"22vh\"\r\n styles={{\r\n tooltip: {\r\n background: alpha(theme.colors.dark[7], 0.95),\r\n border: `0.1vh solid rgba(255,255,255,0.1)`,\r\n color: 'rgba(255,255,255,0.75)',\r\n fontFamily: 'Akrobat Bold',\r\n fontSize: '1.3vh',\r\n lineHeight: 1.3,\r\n padding: '0.6vh 0.8vh',\r\n letterSpacing: '0.03em',\r\n },\r\n }}\r\n >\r\n <Flex align='center' justify='center' style={{ marginLeft: 'auto', cursor: 'help' }}>\r\n <Info size=\"1.6vh\" color={alpha(theme.colors[theme.primaryColor][5], 0.45)} />\r\n </Flex>\r\n </Tooltip>\r\n )}\r\n </Flex>\r\n )}\r\n {props.error && (\r\n <Text\r\n size='xs'\r\n c={theme.colors.red[9]}\r\n fw={600}\r\n mb='auto'\r\n lh='0.8'\r\n >\r\n {props.error}\r\n </Text>\r\n )}\r\n {props.rightSection && (\r\n <Flex>\r\n {props.rightSection}\r\n </Flex>\r\n )}\r\n </Flex>\r\n {props.children} \r\n </MotionFlex>\r\n )\r\n}","import { create } from 'zustand';\r\n\r\n// Import sounds as URLs (TypeScript-safe)\r\nimport clickSoundUrl from './click_sound.mp3';\r\nimport hoverSoundUrl from './hover_sound.mp3';\r\n\r\n// Define a type for the store state and actions\r\ntype AudioPlayerStore = {\r\n play: (sound: string) => void;\r\n stop: (sound: string) => void;\r\n};\r\n\r\n// Create the store using Zustand\r\nexport const useAudio = create<AudioPlayerStore>(() => {\r\n const audioRefs: Record<string, HTMLAudioElement> = {};\r\n\r\n // Predefined sounds\r\n const sounds: Record<string, string> = {\r\n click: clickSoundUrl,\r\n hover: hoverSoundUrl,\r\n };\r\n\r\n // Initialize audio elements for each sound\r\n for (const [key, src] of Object.entries(sounds)) {\r\n audioRefs[key] = new Audio(src);\r\n }\r\n\r\n return {\r\n play: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.currentTime = 0;\r\n audio.volume = 0.1;\r\n audio.play();\r\n },\r\n stop: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.pause();\r\n audio.currentTime = 0;\r\n },\r\n };\r\n});\r\n","\r\nimport { useAudio } from \"@/hooks/useAudio/store\";\r\nimport { colorWithAlpha } from \"@/utils\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { alpha, Flex, FlexProps, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { MotionFlex, MotionIcon, MotionText } from \"./Motion\";\r\n\r\n\r\nexport type SegmentProps = {\r\n label: string;\r\n value: string;\r\n icon?: string; // Optional icon for the segment\r\n rightSection?: React.ReactNode;\r\n color?: string;\r\n}\r\n\r\nexport type SegmentedControlProps = {\r\n w?: string; // Width of the entire control\r\n multi?: boolean; // Optional prop to allow multiple selections\r\n value?: string | string[]; // Controlled value, if provided\r\n onChange?: (value: string | string[]) => void; // Callback for value change\r\n fz?: string; // Font size for the segments\r\n justify?: FlexProps['justify']; \r\n items: SegmentProps[];\r\n sounds?: boolean;\r\n roundEdges?: boolean;\r\n color?: string;\r\n} & FlexProps;\r\n\r\nexport function SegmentedControl(props: SegmentedControlProps) {\r\n const theme = useMantineTheme();\r\n const play = useAudio((state) => state.play);\r\n\r\n const handleChange = (newValue: string | string[]) => {\r\n if (props.sounds) play('click');\r\n if (props.onChange) {\r\n props.onChange(newValue);\r\n }\r\n };\r\n\r\n return (\r\n <Flex\r\n bg='rgba(33, 33, 33, 0.6)'\r\n w={props.w || 'fit-content'}\r\n style={{\r\n borderRadius: props.roundEdges !== false ? theme.radius.xs : 0,\r\n overflow: 'hidden',\r\n }}\r\n {...props}\r\n >\r\n {props.items.map((item, index) => (\r\n <motion.div\r\n key={index}\r\n initial={{ x: -100, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, delay: index * 0.1, ease: 'easeInOut' }}\r\n\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flex: 1,\r\n }}\r\n >\r\n <Segment\r\n key={item.value}\r\n label={item.label}\r\n value={item.value}\r\n icon={item.icon}\r\n rightSection={item.rightSection}\r\n fz={props.fz}\r\n color={props.color}\r\n selected={!props.multi ? props.value === item.value : Array.isArray(props.value) && props.value.includes(item.value)}\r\n onClick={() => {\r\n\r\n if (props.multi) {\r\n const newValue = Array.isArray(props.value)\r\n ? props.value.includes(item.value)\r\n ? props.value.filter((v) => v !== item.value)\r\n : [...props.value, item.value]\r\n : [item.value];\r\n\r\n handleChange(newValue);\r\n } else {\r\n handleChange(item.value);\r\n }\r\n }}\r\n />\r\n </motion.div>\r\n ))}\r\n </Flex>\r\n )\r\n}\r\n\r\nfunction Segment(props: SegmentProps & {\r\n selected: boolean;\r\n onClick: () => void;\r\n fz?: string;\r\n}) {\r\n const theme = useMantineTheme();\r\n\r\n return (\r\n <MotionFlex\r\n onClick={props.onClick}\r\n w='100%'\r\n direction=\"column\"\r\n align=\"center\"\r\n // p='xs'\r\n h='100%'\r\n bg={props.selected ? props.color ? colorWithAlpha(props.color, 0.2) : colorWithAlpha(theme.colors[theme.primaryColor][theme.primaryShade as number], 0.2) : 'transparent'}\r\n pos=\"relative\"\r\n style={{\r\n // position: \"relative\",\r\n cursor: \"pointer\",\r\n }}\r\n justify={'center'}\r\n whileHover={{ scale: 1.05 }}\r\n whileTap={{ scale: 0.95 }}\r\n >\r\n <Flex\r\n align='center'\r\n gap='xs'\r\n // bg='red'\r\n p='xs'\r\n >\r\n \r\n {props.icon && \r\n <MotionIcon\r\n icon={props.icon as IconProp}\r\n // size='sm'\r\n initial={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'inherit', \r\n }}\r\n animate={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'inherit', \r\n }}\r\n exit={{\r\n color: 'inherit',\r\n }}\r\n style={{\r\n fontSize: theme.fontSizes.xs,\r\n marginBottom: '0.2vh',\r\n }}\r\n />\r\n }\r\n <MotionText\r\n size={props.fz || 'xs'}\r\n initial={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'rgba(255, 255, 255, 0.7)', \r\n }}\r\n animate={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'rgba(255, 255, 255, 0.7)', \r\n }}\r\n exit={{\r\n color: 'rgba(255, 255, 255, 0.7)',\r\n }}\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em',\r\n textTransform: 'uppercase',\r\n }}\r\n >{props.label.toUpperCase()}</MotionText>\r\n {props.rightSection}\r\n </Flex>\r\n\r\n {/* Enhanced bottom border with smooth animation */}\r\n <motion.div\r\n initial={false}\r\n animate={{\r\n scaleX: props.selected ? 1 : 0,\r\n opacity: props.selected ? 1 : 0,\r\n }}\r\n transition={{\r\n duration: 0.3,\r\n ease: [0.4, 0, 0.2, 1], // Custom easing curve for smooth feel\r\n }}\r\n style={{\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n height: '0.2vh',\r\n backgroundColor: props.color || theme.colors[theme.primaryColor][5],\r\n transformOrigin: 'center',\r\n }}\r\n />\r\n </MotionFlex>\r\n );\r\n}","import { createContext, useContext, useRef } from \"react\";\r\nimport { create, StoreApi, useStore } from \"zustand\";\r\nimport {SegmentedControl, SegmentProps} from \"./SegmentedControl\";\r\n\r\nexport type NavigationStore = {\r\n pageId: string;\r\n}\r\n\r\nexport const NavigationContext = createContext<StoreApi<NavigationStore> | null>(null);\r\n\r\nexport function useNavigation<T>(selector: (state: NavigationStore) => T){\r\n const navigation = useContext(NavigationContext);\r\n if(!navigation){\r\n throw new Error('useNavigation must be used within a NavigationProvider');\r\n }\r\n return useStore(navigation, selector);\r\n}\r\n\r\n// Hook to get the store API for setting state\r\nexport function useNavigationStore(){\r\n const navigation = useContext(NavigationContext);\r\n if(!navigation){\r\n throw new Error('useNavigationStore must be used within a NavigationProvider');\r\n }\r\n return navigation;\r\n}\r\n\r\nexport function NavigationProvider({ children, defaultPage }: { children: React.ReactNode, defaultPage?: string }){\r\n const storeRef = useRef<StoreApi<NavigationStore>>(\r\n create<NavigationStore>(() => ({\r\n pageId: defaultPage || 'home',\r\n }))\r\n );\r\n\r\n return (\r\n <NavigationContext.Provider value={storeRef.current}>\r\n {children}\r\n </NavigationContext.Provider>\r\n );\r\n}\r\n\r\nexport function NavBar(props: {\r\n items: SegmentProps[];\r\n}){\r\n const pageId = useNavigation((state) => state.pageId);\r\n const store = useNavigationStore();\r\n \r\n return (\r\n <SegmentedControl\r\n sounds\r\n w='100%'\r\n value={pageId}\r\n items={props.items}\r\n onChange={(value) => {\r\n store.setState({ pageId: value as string });\r\n }}\r\n />\r\n )\r\n}","import { motion, Variants } from \"framer-motion\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\nexport type ProgressProps = {\r\n progress: number; // 0 - 100 range\r\n segments: number; // Number of segments (e.g., 5, 10, etc.)\r\n size?: string | number;\r\n};\r\n\r\nconst containerVariants: Variants = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: 0.1,\r\n delayChildren: 0.05,\r\n }\r\n },\r\n exit: {\r\n opacity: 0,\r\n transition: {\r\n staggerChildren: 0.05,\r\n staggerDirection: -1,\r\n }\r\n }\r\n};\r\n\r\n// Child item variants\r\nconst itemVariants: Variants = {\r\n hidden: { \r\n opacity: 0, \r\n x: 20,\r\n scale: 0.95,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n scale: 1,\r\n transition: {\r\n type: \"spring\",\r\n stiffness: 300,\r\n damping: 24,\r\n }\r\n },\r\n exit: {\r\n opacity: 0,\r\n x: -10,\r\n scale: 0.95,\r\n transition: {\r\n duration: 0.2,\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\nexport function SegmentedProgress(props: ProgressProps) {\r\n const progressPerSegment = 100 / props.segments; // Percentage per segment\r\n const filledSegments = Math.floor(props.progress / progressPerSegment);\r\n const partialFill = (props.progress % progressPerSegment) / progressPerSegment; // 0 to 1 range for partial fill\r\n\r\n return (\r\n <MotionFlex \r\n w=\"100%\" \r\n h={props.size || '1vh'}\r\n gap='xs'\r\n initial='hidden'\r\n animate='visible'\r\n variants={containerVariants}\r\n >\r\n {[...Array(props.segments)].map((_, index) => {\r\n const isFilled = index < filledSegments;\r\n const isPartial = index === filledSegments;\r\n\r\n return (\r\n <motion.div\r\n key={index}\r\n variants={itemVariants}\r\n style={{\r\n flex: 1,\r\n height: \"100%\",\r\n background: isFilled\r\n ? \"rgba(255, 255, 255, 0.8)\"\r\n : isPartial\r\n ? `linear-gradient(to right, rgba(255, 255, 255, 0.8) ${partialFill * 100}%, rgba(255, 255, 255, 0.2) ${partialFill * 100}%)`\r\n : \"rgba(255, 255, 255, 0.2)\",\r\n transition: \"background 0.3s ease\",\r\n }}\r\n />\r\n );\r\n })}\r\n </MotionFlex>\r\n );\r\n}","import { colorWithAlpha } from \"@/utils\";\nimport { IconName } from \"@fortawesome/fontawesome-svg-core\";\nimport { Flex, MantineSize, Text, useMantineTheme } from \"@mantine/core\";\nimport { BorderedIcon } from \"./BorderedIcon\";\nimport { useSettings } from \"@/utils/useSettings\";\n\nexport type ButtonProps = {\n icon: string;\n onClick?: () => void;\n};\n\nexport type TitleSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type TitleProps = {\n title: string;\n description: string;\n icon: string;\n iconColor?: string;\n bg?: string;\n w?: string;\n removeBorder?: boolean;\n borderColor?: string;\n p?: string;\n /**\n * Scale of the whole block — icon, title text, description text, and inner\n * spacing all follow this single value. Defaults to \"md\" to preserve the\n * historical look so existing consumers don't shift.\n */\n size?: TitleSize;\n rightSection?: React.ReactNode;\n};\n\ntype SizePreset = {\n iconFontSize: string;\n iconPadding: string;\n titleSize: MantineSize | string;\n titleLineHeight: string;\n descriptionSize: MantineSize | string;\n innerGap: MantineSize | string;\n bottomPad: MantineSize | string;\n};\n\nfunction getSizePreset(size: TitleSize, themeMdFontSize: string): SizePreset {\n switch (size) {\n case \"xs\":\n return { iconFontSize: \"1.2vh\", iconPadding: \"xxs\", titleSize: \"xxs\", titleLineHeight: \"1.2vh\", descriptionSize: \"xxs\", innerGap: \"xs\", bottomPad: \"xs\" };\n case \"sm\":\n return { iconFontSize: \"1.6vh\", iconPadding: \"xxs\", titleSize: \"xs\", titleLineHeight: \"1.6vh\", descriptionSize: \"xxs\", innerGap: \"xs\", bottomPad: \"xs\" };\n case \"lg\":\n return { iconFontSize: \"2.6vh\", iconPadding: \"sm\", titleSize: \"md\", titleLineHeight: \"2.6vh\", descriptionSize: \"sm\", innerGap: \"sm\", bottomPad: \"sm\" };\n case \"xl\":\n return { iconFontSize: \"3.2vh\", iconPadding: \"sm\", titleSize: \"lg\", titleLineHeight: \"3.2vh\", descriptionSize: \"md\", innerGap: \"md\", bottomPad: \"md\" };\n case \"md\":\n default:\n return { iconFontSize: themeMdFontSize, iconPadding: \"xs\", titleSize: \"sm\", titleLineHeight: themeMdFontSize, descriptionSize: \"xs\", innerGap: \"sm\", bottomPad: \"sm\" };\n }\n}\n\nexport function Title(props: TitleProps) {\n const game = useSettings((state) => state.game);\n const theme = useMantineTheme();\n const preset = getSizePreset(props.size ?? \"md\", theme.fontSizes.md);\n return (\n <Flex\n direction=\"column\"\n bg={props.bg || \"transparent\"}\n gap=\"xs\"\n w={props.w || \"100%\"}\n p={props.p || \"unset\"}\n pb={!props.p ? preset.bottomPad : props.p}\n style={{\n userSelect: \"none\",\n borderBottom: props.removeBorder ? \"none\" : `0.3vh solid ${props.borderColor || colorWithAlpha(theme.colors[theme.primaryColor][9], 0.5)}`,\n }}\n >\n <Flex align=\"center\" justify={\"center\"}>\n <Flex align=\"center\" gap={preset.innerGap} pr=\"xs\">\n <BorderedIcon\n icon={props.icon as IconName}\n fontSize={preset.iconFontSize}\n color={props.iconColor}\n p={preset.iconPadding}\n />\n <Flex direction=\"column\" gap=\"0.25vh\">\n <Text\n p=\"0\"\n size={preset.titleSize as MantineSize}\n style={{\n lineHeight: preset.titleLineHeight,\n fontFamily: game == \"fivem\" ? \"Akrobat Bold\" : \"Red Dead\",\n letterSpacing: \"0.05em\",\n textTransform: \"uppercase\",\n }}\n >\n {props.title}\n </Text>\n <Text\n size={preset.descriptionSize as MantineSize}\n c=\"grey\"\n style={{ whiteSpace: \"normal\", wordWrap: \"break-word\" }}\n >\n {props.description}\n </Text>\n </Flex>\n </Flex>\n <Flex ml=\"auto\" align=\"center\" gap=\"xs\">\n {props.rightSection}\n </Flex>\n </Flex>\n </Flex>\n );\n}\n","\r\nimport { Flex, Progress, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\n\r\nexport function LevelBanner(props: {\r\n exp: number;\r\n level: number;\r\n nextLevelXP: number;\r\n progressToLevel: number;\r\n\r\n color?: string;\r\n}){ \r\n return (\r\n <MotionFlex\r\n // bg='rgba(77, 77, 77, 0.3)'\r\n w='35vh'\r\n pos='absolute'\r\n left='50%'\r\n align='center'\r\n gap='xs'\r\n style={{\r\n \r\n borderRadius: useMantineTheme().radius.xxs,\r\n }}\r\n // direction={'column'}\r\n initial={{ opacity: 0, y: -10, transform: 'translateX(-50%)' }}\r\n animate={{ opacity: 1, y: 0, transform: 'translateX(-50%)' }}\r\n exit={{ opacity: 0, y: -10, transform: 'translateX(-50%)' }}\r\n transition={{ duration: 0.3 }}\r\n direction={'column'}\r\n >\r\n <Flex\r\n w='100%'\r\n justify={'space-between'}\r\n >\r\n <Text\r\n size='xxs'\r\n c='rgba(255, 255, 255, 0.9)'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em',\r\n }}\r\n >LVL {props.level}</Text>\r\n <Text\r\n size='xxs'\r\n c='rgba(255, 255, 255, 0.7)'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em',\r\n }}\r\n >{props.exp}/{props.nextLevelXP} XP</Text>\r\n <Text\r\n size='xxs'\r\n c='rgba(255, 255, 255, 0.7)'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em', \r\n }}\r\n >LVL {props.level + 1}</Text>\r\n </Flex>\r\n <Progress\r\n color={props.color}\r\n w='100%'\r\n size='sm'\r\n value={props.progressToLevel}\r\n />\r\n </MotionFlex>\r\n\r\n )\r\n}\r\n\r\n","import { colorWithAlpha, locale } from \"@/utils\";\r\nimport { Flex, RingProgress, Text, alpha, useMantineTheme } from \"@mantine/core\";\r\n\r\nexport function LevelPanel(props: {\r\n exp: number;\r\n level: number;\r\n nextLevelXP: number;\r\n progressToLevel: number;\r\n text?: string;\r\n color?: string;\r\n}){\r\n const theme = useMantineTheme();\r\n\r\n return (\r\n <Flex\r\n w='fit-content'\r\n pr='8vh'\r\n pl='8vh'\r\n \r\n bg='linear-gradient(180deg, rgba(30, 30, 30, 0.82) 0%, rgba(30, 30, 30, 0.3) 50%, rgba(30, 30, 30, 0.6) 100%)' \r\n style={{\r\n borderRadius: theme.radius.xs,\r\n boxShadow: theme.shadows.sm,\r\n outline: '0.2vh solid rgba(255,255,255,0.1)',\r\n }}\r\n justify={'center'}\r\n align={'center'}\r\n direction={'column'}\r\n p='sm'\r\n >\r\n\r\n <RingProgress\r\n size={190}\r\n roundCaps\r\n thickness={10}\r\n sections={[{ value: props.progressToLevel, color:colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade as number], 0.9) }]}\r\n label={\r\n <Flex\r\n justify={'center'}\r\n align={'center'}\r\n direction={'column'}\r\n >\r\n <Text\r\n size='6vh'\r\n c={colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade as number], 0.9)}\r\n style={{\r\n fontFamily: 'Akrobat Black',\r\n textShadow: `0 0 10px ${colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade as number], 0.7)}`, \r\n }}\r\n >\r\n {props.level}\r\n </Text>\r\n </Flex>\r\n }\r\n />\r\n <Text\r\n size='sm'\r\n style={{\r\n fontFamily: 'Akrobat Black',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}\r\n >\r\n {props.text || locale('Level')}\r\n </Text>\r\n <Text\r\n size='xs'\r\n c='rgba(255,255,255,0.6)'\r\n >\r\n {props.exp}/{props.nextLevelXP} {locale('EXP')}\r\n </Text>\r\n </Flex>\r\n )\r\n}\r\n","import { alpha, Flex, Portal, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { X } from \"lucide-react\";\r\nimport React, { useRef } from \"react\";\r\n\r\nexport type ModalProps = {\r\n title: string;\r\n icon?: React.ElementType;\r\n iconColor?: string;\r\n description?: string;\r\n badge?: { label: string; color: string };\r\n onClose: () => void;\r\n width?: string;\r\n maxHeight?: string;\r\n height?: string;\r\n zIndex?: number;\r\n clickOutside?: boolean;\r\n children: React.ReactNode;\r\n};\r\n\r\nexport function Modal({\r\n title,\r\n icon: Icon,\r\n iconColor,\r\n description,\r\n badge,\r\n onClose,\r\n width = \"52vh\",\r\n maxHeight = \"85vh\",\r\n height,\r\n zIndex = 100,\r\n clickOutside = true,\r\n children,\r\n}: ModalProps) {\r\n const theme = useMantineTheme();\r\n const pointerDownOnOverlay = useRef(false);\r\n\r\n return (\r\n <Portal>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n background: \"rgba(0,0,0,0.65)\",\r\n }}\r\n onPointerDown={(e) => {\r\n pointerDownOnOverlay.current = e.target === e.currentTarget;\r\n }}\r\n onClick={(e) => {\r\n if (clickOutside && e.target === e.currentTarget && pointerDownOnOverlay.current) {\r\n onClose();\r\n }\r\n }}\r\n >\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.96, y: 8 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.96, y: 8 }}\r\n transition={{ duration: 0.18, ease: \"easeOut\" }}\r\n style={{\r\n background: alpha(theme.colors.dark[9], 0.98),\r\n border: `0.1vh solid ${theme.colors.dark[7]}`,\r\n borderRadius: theme.radius.sm,\r\n width,\r\n maxHeight,\r\n height,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {/* Header */}\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n px=\"sm\"\r\n py=\"xs\"\r\n style={{\r\n borderBottom: `0.1vh solid ${theme.colors.dark[7]}`,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <Flex align=\"center\" gap=\"xs\">\r\n {Icon && (\r\n <Icon\r\n color={iconColor ?? \"rgba(255,255,255,0.6)\"}\r\n size=\"2vh\"\r\n />\r\n )}\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"sm\"\r\n tt=\"uppercase\"\r\n lts=\"0.06em\"\r\n c=\"rgba(255,255,255,0.85)\"\r\n >\r\n {title}\r\n </Text>\r\n {badge && (\r\n <div\r\n style={{\r\n background: alpha(badge.color, 0.12),\r\n border: `0.1vh solid ${alpha(badge.color, 0.35)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: `0 ${theme.spacing.xxs}`,\r\n }}\r\n >\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.06em\"\r\n c={badge.color}\r\n >\r\n {badge.label}\r\n </Text>\r\n </div>\r\n )}\r\n </Flex>\r\n <motion.button\r\n onClick={onClose}\r\n whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }}\r\n style={{\r\n background: \"transparent\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: theme.spacing.xxs,\r\n borderRadius: theme.radius.xs,\r\n display: \"flex\",\r\n }}\r\n >\r\n <X color=\"rgba(255,255,255,0.4)\" />\r\n </motion.button>\r\n </Flex>\r\n\r\n {/* Description */}\r\n {description && (\r\n <Flex px=\"sm\" pt=\"xs\">\r\n <Text\r\n ff=\"Akrobat Regular\"\r\n size=\"xs\"\r\n c=\"rgba(255,255,255,0.65)\"\r\n style={{ lineHeight: 1.5 }}\r\n >\r\n {description}\r\n </Text>\r\n </Flex>\r\n )}\r\n\r\n {/* Content */}\r\n <div style={{ flex: 1, minHeight: 0, display: \"flex\", flexDirection: \"column\" }}>\r\n {children}\r\n </div>\r\n </motion.div>\r\n </motion.div>\r\n </Portal>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Button, Flex, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\n\r\nexport type PromptButton = {\r\n icon?: string;\r\n text: string;\r\n color?: string;\r\n variant?: 'filled' | 'outline' | 'light' | 'subtle' | 'default';\r\n onClick: () => void;\r\n}\r\n\r\nexport type Prompt = {\r\n message: string;\r\n buttons: PromptButton[];\r\n};\r\n\r\nexport function PromptModal(props: Prompt) {\r\n const theme = useMantineTheme();\r\n return (\r\n <MotionFlex\r\n gap='sm'\r\n direction={'column'}\r\n flex={1}\r\n >\r\n <Text\r\n size='xs'\r\n c='rgba(255, 255, 255, 0.8)'\r\n >{props.message}</Text>\r\n <Flex\r\n gap='sm'\r\n >\r\n {props.buttons.map((button, index) => (\r\n <Button\r\n key={index}\r\n variant={button.variant}\r\n color={button.color}\r\n flex={0.5}\r\n onClick={button.onClick}\r\n leftSection={button.icon ? (\r\n <FontAwesomeIcon\r\n icon={button.icon as IconProp}\r\n style={{\r\n fontSize: theme.fontSizes.xs,\r\n }}\r\n />\r\n ): undefined}\r\n >\r\n {button.text}\r\n </Button>\r\n ))}\r\n </Flex>\r\n </MotionFlex>\r\n )\r\n} \r\n\r\n","import { createContext, useContext, useRef } from \"react\";\r\nimport { create, StoreApi, useStore } from \"zustand\";\r\nimport { Modal } from \"./Modal\";\r\nimport { AnimatePresence } from \"framer-motion\";\r\nimport React from \"react\";\r\n\r\nexport type StoreModalProps = {\r\n children: React.ReactNode;\r\n title: string;\r\n icon?: React.ElementType;\r\n iconColor?: string;\r\n description?: string;\r\n badge?: { label: string; color: string };\r\n height?: string;\r\n width?: string;\r\n maxHeight?: string;\r\n zIndex?: number;\r\n clickOutside?: boolean;\r\n};\r\n\r\ntype ModalStore = {\r\n active: StoreModalProps | null;\r\n}\r\n\r\nexport const ModalContext = createContext<StoreApi<ModalStore> | null>(null);\r\n\r\nexport function useModal<T>(selector: (state: ModalStore) => T): T {\r\n const modal = useContext(ModalContext);\r\n if(!modal){\r\n throw new Error('useModal must be used within a ModalProvider');\r\n }\r\n return useStore(modal, selector);\r\n}\r\n\r\nfunction StoreModal() {\r\n const active = useModal((state) => state.active);\r\n const { hideModal } = useModalActions();\r\n\r\n return (\r\n <AnimatePresence>\r\n {active && (\r\n <Modal\r\n title={active.title}\r\n icon={active.icon}\r\n iconColor={active.iconColor}\r\n description={active.description}\r\n badge={active.badge}\r\n onClose={hideModal}\r\n width={active.width}\r\n maxHeight={active.maxHeight}\r\n height={active.height}\r\n zIndex={active.zIndex}\r\n clickOutside={active.clickOutside}\r\n >\r\n {active.children}\r\n </Modal>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ModalProvider({ children }: { children: React.ReactNode }){\r\n const storeRef = useRef<StoreApi<ModalStore>>(\r\n create<ModalStore>(() => ({\r\n active: null,\r\n }))\r\n );\r\n\r\n return (\r\n <ModalContext.Provider value={storeRef.current}>\r\n <StoreModal/>\r\n {children}\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport function useModalActions() {\r\n const modal = useContext(ModalContext);\r\n if (!modal) throw new Error(\"useModalActions must be used within a ModalProvider\");\r\n\r\n const showModal = (openModal: StoreModalProps) => {\r\n modal.setState({ active: openModal });\r\n };\r\n\r\n const hideModal = () => {\r\n modal.setState({ active: null });\r\n };\r\n\r\n return { showModal, hideModal };\r\n}\r\n\r\n","import { alpha, Flex, Portal, Text, TextInput, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { AlertTriangle, Trash2, X } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\n\r\nexport type ConfirmModalProps = {\r\n title: string;\r\n description: string;\r\n confirmLabel?: string;\r\n /** If provided, user must type this exact string to enable the confirm button */\r\n confirmText?: string;\r\n onConfirm: () => void;\r\n onClose: () => void;\r\n zIndex?: number;\r\n};\r\n\r\nexport function ConfirmModal({\r\n title,\r\n description,\r\n confirmLabel = \"Delete\",\r\n confirmText,\r\n onConfirm,\r\n onClose,\r\n zIndex = 200,\r\n}: ConfirmModalProps) {\r\n const theme = useMantineTheme();\r\n const [typed, setTyped] = useState(\"\");\r\n const canConfirm = !confirmText || typed === confirmText;\r\n\r\n return (\r\n <Portal>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n background: \"rgba(0,0,0,0.7)\",\r\n }}\r\n onClick={onClose}\r\n >\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 8 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 8 }}\r\n transition={{ duration: 0.18, ease: \"easeOut\" }}\r\n onClick={(e) => e.stopPropagation()}\r\n style={{\r\n background: alpha(theme.colors.dark[9], 0.98),\r\n border: `0.1vh solid ${alpha(\"#ef4444\", 0.3)}`,\r\n borderRadius: theme.radius.sm,\r\n width: \"44vh\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {/* Header */}\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n px=\"sm\"\r\n py=\"xs\"\r\n style={{\r\n borderBottom: `0.1vh solid ${alpha(\"#ef4444\", 0.2)}`,\r\n background: alpha(\"#ef4444\", 0.06),\r\n flexShrink: 0,\r\n }}\r\n >\r\n <Flex align=\"center\" gap=\"xs\">\r\n <AlertTriangle size=\"1.8vh\" color=\"#ef4444\" />\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"sm\"\r\n tt=\"uppercase\"\r\n lts=\"0.05em\"\r\n c=\"#ef4444\"\r\n >\r\n {title}\r\n </Text>\r\n </Flex>\r\n <motion.button\r\n onClick={onClose}\r\n whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }}\r\n style={{\r\n background: \"transparent\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: theme.spacing.xxs,\r\n borderRadius: theme.radius.xs,\r\n display: \"flex\",\r\n }}\r\n >\r\n <X color=\"rgba(255,255,255,0.4)\" />\r\n </motion.button>\r\n </Flex>\r\n\r\n {/* Body */}\r\n <Flex direction=\"column\" gap=\"sm\" p=\"sm\">\r\n <Text\r\n ff=\"Akrobat Regular\"\r\n size=\"xs\"\r\n c=\"rgba(255,255,255,0.65)\"\r\n style={{ lineHeight: 1.5 }}\r\n >\r\n {description}\r\n </Text>\r\n\r\n {confirmText && (\r\n <Flex direction=\"column\" gap=\"xxs\">\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.07em\"\r\n c=\"rgba(255,255,255,0.35)\"\r\n >\r\n Type{\" \"}\r\n <Text component=\"span\" ff=\"Akrobat Bold\" c=\"#ef4444\">\r\n {confirmText}\r\n </Text>{\" \"}\r\n to confirm\r\n </Text>\r\n <TextInput\r\n size=\"xs\"\r\n placeholder={confirmText}\r\n value={typed}\r\n onChange={(e) => setTyped(e.currentTarget.value)}\r\n styles={(t) => ({\r\n input: {\r\n backgroundColor: alpha(t.colors.dark[7], 0.5),\r\n border: `0.1vh solid ${alpha(\r\n typed === confirmText\r\n ? \"#ef4444\"\r\n : t.colors.dark[5],\r\n 0.5\r\n )}`,\r\n color: \"rgba(255,255,255,0.85)\",\r\n fontFamily: \"Akrobat Regular\",\r\n },\r\n })}\r\n autoFocus\r\n />\r\n </Flex>\r\n )}\r\n </Flex>\r\n\r\n {/* Footer */}\r\n <Flex\r\n justify=\"flex-end\"\r\n gap=\"xs\"\r\n px=\"sm\"\r\n py=\"sm\"\r\n style={{\r\n borderTop: `0.1vh solid ${theme.colors.dark[7]}`,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <motion.button\r\n onClick={onClose}\r\n whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{\r\n background: \"transparent\",\r\n border: `0.1vh solid ${theme.colors.dark[6]}`,\r\n borderRadius: theme.radius.xs,\r\n padding: \"0.5vh 1vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"0.4vh\",\r\n }}\r\n >\r\n <X size=\"1.4vh\" color=\"rgba(255,255,255,0.4)\" />\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.05em\"\r\n c=\"rgba(255,255,255,0.4)\"\r\n >\r\n Cancel\r\n </Text>\r\n </motion.button>\r\n\r\n <motion.button\r\n onClick={() => {\r\n if (canConfirm) {\r\n onConfirm();\r\n onClose();\r\n }\r\n }}\r\n whileHover={\r\n canConfirm\r\n ? {\r\n background: alpha(\"#ef4444\", 0.22),\r\n borderColor: alpha(\"#ef4444\", 0.6),\r\n }\r\n : undefined\r\n }\r\n whileTap={canConfirm ? { scale: 0.97 } : undefined}\r\n style={{\r\n background: alpha(\"#ef4444\", canConfirm ? 0.14 : 0.05),\r\n border: `0.1vh solid ${alpha(\r\n \"#ef4444\",\r\n canConfirm ? 0.45 : 0.15\r\n )}`,\r\n borderRadius: theme.radius.xs,\r\n padding: \"0.5vh 1vh\",\r\n cursor: canConfirm ? \"pointer\" : \"not-allowed\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"0.4vh\",\r\n opacity: canConfirm ? 1 : 0.45,\r\n transition: \"opacity 0.15s\",\r\n }}\r\n >\r\n <Trash2 size=\"1.4vh\" color=\"#ef4444\" />\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.05em\"\r\n c=\"#ef4444\"\r\n >\r\n {confirmLabel}\r\n </Text>\r\n </motion.button>\r\n </Flex>\r\n </motion.div>\r\n </motion.div>\r\n </Portal>\r\n );\r\n}\r\n","// Yellow ⚠ warning banner shown at the top of any scriptConfig admin panel\n// when one or more configured items aren't registered in the player's\n// inventory items table.\n//\n// Driven by dirk_lib's `<scriptName>:getMissingItems` callback (server-side\n// audit walks the schema's x-installItem / x-installItemList annotations,\n// cross-references `lib.inventory.item(name)`, and returns the missing names\n// + ready-to-paste install snippets per format).\n//\n// Auto-mounted by ConfigPanel above its tab AnimatePresence so it survives\n// tab switches without remounting. Consumers can suppress it by passing\n// `suppressMissingItemsBanner` to ConfigPanel.\n//\n// To use this in another consumer: nothing to do. ConfigPanel mounts it.\n// Just annotate the consumer's schema.json with x-installItem /\n// x-installItemList on item-name fields, and dirk_lib does the rest.\n\nimport { alpha, Flex, Text, useMantineTheme } from \"@mantine/core\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { AlertTriangle, ChevronDown, Check, Copy, RefreshCw } from \"lucide-react\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { create } from \"zustand\";\nimport { fetchNui } from \"../utils/fetchNui\";\n\ntype MissingItem = {\n name: string;\n label?: string;\n weight?: number;\n description?: string;\n};\n\ntype AuditPayload = {\n missing: MissingItem[];\n snippets: { ox: string; qb: string; esx: string };\n};\n\ntype AuditResponse = {\n success: boolean;\n _error?: string;\n data?: AuditPayload;\n};\n\ntype TabId = \"ox\" | \"qb\" | \"esx\";\n\nconst TABS: { id: TabId; label: string }[] = [\n { id: \"ox\", label: \"ox_inventory\" },\n { id: \"qb\", label: \"qb-inventory\" },\n { id: \"esx\", label: \"ESX legacy SQL\" },\n];\n\n// Module-level audit store. Persists across component re-mounts (ConfigPanel\n// keys its tab content by activeTab, so each tab switch unmounts + remounts\n// children). Stored data survives, fetch fires once per panel session.\ntype AuditStore = {\n data: AuditPayload | null;\n loaded: boolean;\n inFlight: boolean;\n refresh: () => Promise<void>;\n};\n\nexport const useMissingItemsAudit = create<AuditStore>((set, get) => ({\n data: null,\n loaded: false,\n inFlight: false,\n refresh: async () => {\n if (get().inFlight) return;\n set({ inFlight: true });\n try {\n const res = await fetchNui<AuditResponse>(\"GET_MISSING_ITEMS\", undefined, {\n success: true,\n data: { missing: [], snippets: { ox: \"\", qb: \"\", esx: \"\" } },\n });\n if (res?.success && res.data) {\n set({ data: res.data, loaded: true });\n } else {\n set({ loaded: true });\n }\n } catch {\n set({ loaded: true });\n } finally {\n set({ inFlight: false });\n }\n },\n}));\n\nexport function MissingItemsBanner() {\n const theme = useMantineTheme();\n const audit = useMissingItemsAudit((s) => s.data);\n const loaded = useMissingItemsAudit((s) => s.loaded);\n const inFlight = useMissingItemsAudit((s) => s.inFlight);\n const refresh = useMissingItemsAudit((s) => s.refresh);\n const [expanded, setExpanded] = useState(false);\n const [activeTab, setActiveTab] = useState<TabId>(\"ox\");\n const [hoveredTab, setHoveredTab] = useState<TabId | null>(null);\n const [copied, setCopied] = useState<TabId | null>(null);\n\n // First fetch — only when not yet loaded. Re-mount across tab switches\n // re-fires this useEffect but the `loaded` guard blocks the second hit.\n useEffect(() => {\n if (!loaded) refresh();\n }, [loaded, refresh]);\n\n const handleCopy = useCallback((tab: TabId) => {\n if (!audit) return;\n const text = audit.snippets[tab] ?? \"\";\n navigator.clipboard.writeText(text).then(() => {\n setCopied(tab);\n setTimeout(() => setCopied((c) => (c === tab ? null : c)), 1500);\n }).catch(() => {});\n }, [audit]);\n\n const handleRefresh = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n refresh();\n }, [refresh]);\n\n if (!audit || audit.missing.length === 0) return null;\n\n const warnColor = \"#f59e0b\"; // amber\n const names = audit.missing.map((m) => m.name);\n\n return (\n <div\n style={{\n background: alpha(warnColor, 0.06),\n border: `0.1vh solid ${alpha(warnColor, 0.35)}`,\n borderLeft: `0.3vh solid ${warnColor}`,\n borderRadius: theme.radius.xs,\n margin: \"0.6vh 1vh\",\n overflow: \"hidden\",\n }}\n >\n {/* Summary row */}\n <Flex align=\"center\" gap=\"0.8vh\" p=\"0.8vh 1vh\" style={{ cursor: \"pointer\" }} onClick={() => setExpanded((e) => !e)}>\n <AlertTriangle size=\"1.8vh\" color={warnColor} strokeWidth={2.5} />\n <Flex direction=\"column\" style={{ flex: 1, minWidth: 0 }}>\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.07em\" c={warnColor}>\n {audit.missing.length === 1\n ? \"1 item missing from your inventory\"\n : `${audit.missing.length} items missing from your inventory`}\n </Text>\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.5)\" lineClamp={1} style={{ fontFamily: \"monospace\" }}>\n {names.join(\", \")}\n </Text>\n </Flex>\n {/* Refresh button — re-runs the audit. Bounded: server callback, no\n event listener loops. */}\n <button\n onClick={handleRefresh}\n disabled={inFlight}\n style={{\n background: \"transparent\",\n border: \"none\",\n padding: \"0.3vh\",\n cursor: inFlight ? \"wait\" : \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: inFlight ? 0.4 : 0.7,\n }}\n title=\"Re-check\"\n >\n <motion.span\n animate={{ rotate: inFlight ? 360 : 0 }}\n transition={inFlight ? { duration: 1, repeat: Infinity, ease: \"linear\" } : { duration: 0 }}\n style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <RefreshCw size=\"1.5vh\" color={alpha(warnColor, 0.7)} />\n </motion.span>\n </button>\n <motion.div\n animate={{ rotate: expanded ? 180 : 0 }}\n transition={{ duration: 0.18 }}\n style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <ChevronDown size=\"1.8vh\" color={alpha(warnColor, 0.7)} />\n </motion.div>\n </Flex>\n\n {/* Expandable code view */}\n <AnimatePresence initial={false}>\n {expanded && (\n <motion.div\n key=\"expanded\"\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: \"auto\", opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.18, ease: \"easeOut\" }}\n style={{ overflow: \"hidden\", borderTop: `0.1vh solid ${alpha(warnColor, 0.18)}` }}\n >\n {/* Tab strip — plain buttons. Framer-motion's whileHover/whileTap\n caused two glitches we don't need: a shrink-spring on click\n and stuck hover-tint on the previously-active tab until you\n hover it again. CSS-driven hover state is sync'd with React\n state cleanly. */}\n <Flex gap=\"0\" style={{ borderBottom: `0.1vh solid ${alpha(warnColor, 0.18)}` }}>\n {TABS.map((tab) => {\n const active = tab.id === activeTab;\n const hovered = hoveredTab === tab.id;\n let bg: string = \"transparent\";\n if (active) bg = alpha(warnColor, 0.12);\n else if (hovered) bg = alpha(warnColor, 0.08);\n return (\n <button\n key={tab.id}\n onClick={(e) => { e.stopPropagation(); setActiveTab(tab.id); }}\n onMouseEnter={() => setHoveredTab(tab.id)}\n onMouseLeave={() => setHoveredTab((h) => (h === tab.id ? null : h))}\n style={{\n flex: 1,\n background: bg,\n border: \"none\",\n borderBottom: active ? `0.2vh solid ${warnColor}` : \"0.2vh solid transparent\",\n padding: \"0.3vh 1vh\",\n cursor: active ? \"default\" : \"pointer\",\n color: active ? warnColor : \"rgba(255,255,255,0.5)\",\n fontFamily: \"Akrobat Bold\",\n fontSize: \"var(--mantine-font-size-xxs)\",\n letterSpacing: \"0.07em\",\n textTransform: \"uppercase\",\n transition: \"background 0.12s\",\n }}\n >\n {tab.label}\n </button>\n );\n })}\n </Flex>\n\n <CodeView\n code={audit.snippets[activeTab] ?? \"\"}\n copied={copied === activeTab}\n onCopy={(e) => { e.stopPropagation(); handleCopy(activeTab); }}\n warnColor={warnColor}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n}\n\nfunction CodeView({\n code,\n copied,\n onCopy,\n warnColor,\n}: {\n code: string;\n copied: boolean;\n onCopy: (e: React.MouseEvent) => void;\n warnColor: string;\n}) {\n const theme = useMantineTheme();\n const [hovered, setHovered] = useState(false);\n const lines = code === \"\" ? [\"\"] : code.split(\"\\n\");\n const lineNumWidth = String(lines.length).length;\n\n const copyBg = copied\n ? alpha(\"#22c55e\", 0.15)\n : hovered\n ? alpha(warnColor, 0.18)\n : alpha(warnColor, 0.1);\n\n return (\n <div style={{ position: \"relative\" }}>\n <button\n onClick={onCopy}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n position: \"absolute\",\n top: \"0.6vh\",\n right: \"0.8vh\",\n zIndex: 2,\n background: copyBg,\n border: `0.1vh solid ${alpha(copied ? \"#22c55e\" : warnColor, 0.35)}`,\n borderRadius: theme.radius.xs,\n padding: \"0.4vh 0.7vh\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.4vh\",\n transition: \"background 0.12s\",\n }}\n >\n {copied\n ? <Check size=\"1.4vh\" color=\"#22c55e\" />\n : <Copy size=\"1.4vh\" color={warnColor} />}\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={copied ? \"#22c55e\" : warnColor}>\n {copied ? \"Copied\" : \"Copy\"}\n </Text>\n </button>\n\n <div style={{\n background: alpha(theme.colors.dark[9], 0.6),\n maxHeight: \"40vh\",\n overflowY: \"auto\",\n overflowX: \"auto\",\n padding: \"0.6vh 0\",\n }}>\n <table style={{ borderCollapse: \"collapse\", width: \"100%\", fontFamily: \"monospace\", fontSize: \"1.2vh\", lineHeight: 1.5 }}>\n <tbody>\n {lines.map((line, i) => (\n <tr key={i}>\n <td style={{\n width: `${lineNumWidth + 2}ch`,\n textAlign: \"right\",\n padding: \"0 0.8vh 0 1vh\",\n color: \"rgba(255,255,255,0.25)\",\n userSelect: \"none\",\n whiteSpace: \"nowrap\",\n verticalAlign: \"top\",\n }}>{i + 1}</td>\n <td style={{\n padding: \"0 1vh\",\n color: \"rgba(255,255,255,0.85)\",\n whiteSpace: \"pre\",\n verticalAlign: \"top\",\n }}>{line || \"\"}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport React, { createContext, useContext, useMemo, useRef } from \"react\";\r\nimport { createStore, StoreApi, useStore } from \"zustand\";\r\n\r\n/* ======================================================\r\n Type Utilities\r\n====================================================== */\r\n\r\ntype PathValue<T, P extends string> = P extends keyof T\r\n ? T[P]\r\n : P extends `${infer K}.${infer R}`\r\n ? K extends keyof T\r\n ? PathValue<T[K], R>\r\n : never\r\n : never;\r\n\r\ntype Paths<T> = T extends object\r\n ? {\r\n [K in keyof T]: K extends string\r\n ? T[K] extends object\r\n ? T[K] extends any[] | Date | Function\r\n ? K\r\n : K | `${K}.${Paths<T[K]>}`\r\n : K\r\n : never;\r\n }[keyof T]\r\n : never;\r\n\r\ntype LoosePaths<T> = Paths<T> | (string & {});\r\n\r\n/* ======================================================\r\n Utilities\r\n====================================================== */\r\n\r\nfunction getNested(obj: any, path: string): any {\r\n return path.split(\".\").reduce((acc, key) => (acc ? acc[key] : undefined), obj);\r\n}\r\n\r\nfunction setNested(obj: any, path: string, value: any): any {\r\n const keys = path.split(\".\");\r\n const root = Array.isArray(obj) ? [...obj] : { ...obj };\r\n let current = root;\r\n\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n const nextKey = keys[i + 1];\r\n const isIndex = !isNaN(Number(nextKey));\r\n\r\n const existing = current[key];\r\n\r\n current[key] =\r\n existing != null\r\n ? Array.isArray(existing)\r\n ? [...existing]\r\n : { ...existing }\r\n : isIndex\r\n ? []\r\n : {};\r\n\r\n current = current[key];\r\n }\r\n\r\n current[keys[keys.length - 1]] = value;\r\n return root;\r\n}\r\n\r\nfunction deleteNested(obj: any, path: string): any {\r\n const keys = path.split(\".\");\r\n const newObj = { ...obj };\r\n let current = newObj;\r\n\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n if (!current[key]) return obj;\r\n current[key] = { ...current[key] };\r\n current = current[key];\r\n }\r\n\r\n delete current[keys[keys.length - 1]];\r\n return newObj;\r\n}\r\n\r\nfunction isPlainObject(value: any): value is Record<string, any> {\r\n return (\r\n value !== null &&\r\n typeof value === \"object\" &&\r\n !Array.isArray(value) &&\r\n !(value instanceof Date)\r\n );\r\n}\r\n\r\nfunction collectChangedPaths(values: any, initial: any, prefix = \"\"): string[] {\r\n if (Object.is(values, initial)) return [];\r\n\r\n const valuesIsObj = isPlainObject(values);\r\n const initialIsObj = isPlainObject(initial);\r\n const valuesIsArr = Array.isArray(values);\r\n const initialIsArr = Array.isArray(initial);\r\n\r\n if (valuesIsArr || initialIsArr) {\r\n const maxLen = Math.max(values?.length ?? 0, initial?.length ?? 0);\r\n const fields: string[] = [];\r\n for (let i = 0; i < maxLen; i++) {\r\n const nextPrefix = prefix ? `${prefix}.${i}` : `${i}`;\r\n fields.push(...collectChangedPaths(values?.[i], initial?.[i], nextPrefix));\r\n }\r\n return fields;\r\n }\r\n\r\n if (valuesIsObj || initialIsObj) {\r\n const keys = new Set([\r\n ...Object.keys(values ?? {}),\r\n ...Object.keys(initial ?? {}),\r\n ]);\r\n const fields: string[] = [];\r\n for (const key of keys) {\r\n const nextPrefix = prefix ? `${prefix}.${key}` : key;\r\n fields.push(...collectChangedPaths(values?.[key], initial?.[key], nextPrefix));\r\n }\r\n return fields;\r\n }\r\n\r\n return prefix ? [prefix] : [];\r\n}\r\n\r\nfunction computeChangedState<T>(\r\n values: Partial<T>,\r\n initialVals: Partial<T>\r\n): { fields: string[]; partial: Partial<T> } {\r\n const fields = collectChangedPaths(values, initialVals);\r\n let partial: Partial<T> = {};\r\n\r\n for (const path of fields) {\r\n partial = setNested(partial, path, getNested(values, path));\r\n }\r\n\r\n return { fields, partial };\r\n}\r\n\r\nfunction flattenRules(\r\n rules: any,\r\n prefix = \"\"\r\n): Record<string, ValidatorFn> {\r\n const result: Record<string, ValidatorFn> = {};\r\n\r\n for (const key in rules) {\r\n const fullPath = prefix ? `${prefix}.${key}` : key;\r\n const val = rules[key];\r\n\r\n if (typeof val === \"function\") result[fullPath] = val;\r\n else if (typeof val === \"object\")\r\n Object.assign(result, flattenRules(val, fullPath));\r\n }\r\n\r\n return result;\r\n}\r\n\r\nasync function runRule(\r\n rule: ValidatorFn,\r\n value: any,\r\n values: any\r\n): Promise<string | null> {\r\n const result = rule(value, values);\r\n return result instanceof Promise ? await result : result;\r\n}\r\n\r\n/* ======================================================\r\n Types\r\n====================================================== */\r\n\r\nexport type ValidatorFn<T = any> =\r\n | ((value: any, values: Partial<T>) => string | null)\r\n | ((value: any, values: Partial<T>) => Promise<string | null>);\r\n\r\nexport type ValidationRules<T> = {\r\n [K in keyof T]?: T[K] extends object\r\n ? ValidationRules<T[K]>\r\n : ValidatorFn<T>;\r\n};\r\n\r\nexport type FormState<T> = {\r\n values: Partial<T>;\r\n initialValues: Partial<T>;\r\n errors: Record<string, string>;\r\n\r\n partialChanged: Partial<T>;\r\n\r\n getInputProps: (path: string) => {\r\n value: any;\r\n error?: string;\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n };\r\n\r\n setValue: (path: string, value: any, options?: { validate?: boolean }) => void;\r\n setInitialValues: (newInitialValues: Partial<T>) => void;\r\n\r\n setError: (path: string, message: string) => void;\r\n clearError: (path: string) => void;\r\n\r\n validate: () => Promise<boolean>;\r\n validateField: (path: string) => Promise<boolean>;\r\n\r\n reset: () => void;\r\n reinitialize: (newValues: Partial<T>) => void;\r\n\r\n back: () => void;\r\n forward: () => void;\r\n canBack: boolean;\r\n canForward: boolean;\r\n\r\n changedFields: string[];\r\n changedCount: number;\r\n resetChangeCount: () => void;\r\n\r\n onSubmit?: (form: FormState<T>) => void;\r\n submit: () => Promise<void>;\r\n};\r\n\r\n/* ======================================================\r\n Store\r\n====================================================== */\r\n\r\nexport function createFormStore<T>(\r\n initialValues: Partial<T>,\r\n validationRules?: ValidationRules<T>,\r\n onSubmit?: (form: FormState<T>) => void\r\n) {\r\n const flatRules = validationRules ? flattenRules(validationRules) : {};\r\n\r\n const history: Partial<T>[] = [];\r\n const future: Partial<T>[] = [];\r\n const changed = new Set<string>();\r\n\r\n return createStore<FormState<T>>((set, get) => ({\r\n initialValues,\r\n values: initialValues,\r\n errors: {},\r\n partialChanged: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n onSubmit,\r\n\r\n submit: async () => {\r\n const state = get();\r\n const isValid = await state.validate();\r\n if (isValid && state.onSubmit) {\r\n state.onSubmit(get());\r\n }\r\n },\r\n\r\n getInputProps: (path: string) => {\r\n return {\r\n value: getNested(get().values, path) ?? \"\",\r\n error: get().errors[path],\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\r\n get().setValue(path, e.target.value, { validate: true });\r\n },\r\n };\r\n },\r\n\r\n resetChangeCount: () => {\r\n changed.clear();\r\n set({ changedFields: [], changedCount: 0, partialChanged: {} });\r\n },\r\n\r\n setInitialValues: (newInitialValues) =>\r\n set({ initialValues: newInitialValues }),\r\n\r\n setValue: (path, value, options) => {\r\n const state = get();\r\n const currentValues = state.values;\r\n const newValues = setNested(currentValues, path, value);\r\n\r\n const oldValue = getNested(state.initialValues, path);\r\n const hasChanged = value !== oldValue;\r\n\r\n history.push(currentValues);\r\n future.length = 0;\r\n\r\n let newPartial = state.partialChanged;\r\n\r\n if (hasChanged) {\r\n changed.add(path);\r\n newPartial = setNested(newPartial, path, value);\r\n } else {\r\n changed.delete(path);\r\n newPartial = deleteNested(newPartial, path);\r\n }\r\n\r\n set({\r\n values: newValues,\r\n partialChanged: newPartial,\r\n canBack: history.length > 0,\r\n canForward: false,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n\r\n if (!options?.validate) return;\r\n\r\n const rule = flatRules[path];\r\n if (!rule) return;\r\n\r\n Promise.resolve(runRule(rule, value, newValues)).then((error) => {\r\n if (error)\r\n set((s) => ({ errors: setNested(s.errors, path, error) }));\r\n else\r\n set((s) => ({ errors: deleteNested(s.errors, path) }));\r\n });\r\n },\r\n\r\n setError: (path, message) =>\r\n set((s) => ({ errors: setNested(s.errors, path, message) })),\r\n\r\n clearError: (path) =>\r\n set((s) => ({ errors: deleteNested(s.errors, path) })),\r\n\r\n validateField: async (path) => {\r\n const state = get();\r\n const rule = flatRules[path];\r\n if (!rule) return true;\r\n\r\n const value = getNested(state.values, path);\r\n const error = await runRule(rule, value, state.values);\r\n\r\n if (error) {\r\n set((s) => ({ errors: setNested(s.errors, path, error) }));\r\n return false;\r\n }\r\n\r\n set((s) => ({ errors: deleteNested(s.errors, path) }));\r\n return true;\r\n },\r\n\r\n validate: async () => {\r\n const state = get();\r\n let isValid = true;\r\n let newErrors: Record<string, string> = {};\r\n\r\n for (const path in flatRules) {\r\n const rule = flatRules[path];\r\n const value = getNested(state.values, path);\r\n const error = await runRule(rule, value, state.values);\r\n\r\n if (error) {\r\n isValid = false;\r\n newErrors = setNested(newErrors, path, error);\r\n }\r\n }\r\n\r\n set({ errors: newErrors });\r\n return isValid;\r\n },\r\n\r\n reset: () => {\r\n history.length = 0;\r\n future.length = 0;\r\n changed.clear();\r\n\r\n set({\r\n values: get().initialValues,\r\n errors: {},\r\n partialChanged: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n });\r\n },\r\n\r\n reinitialize: (newValues) => {\r\n history.length = 0;\r\n future.length = 0;\r\n changed.clear();\r\n\r\n set({\r\n values: newValues,\r\n initialValues: newValues,\r\n errors: {},\r\n partialChanged: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n });\r\n },\r\n\r\n back: () => {\r\n if (!history.length) return;\r\n\r\n const prev = history.pop()!;\r\n future.push(get().values);\r\n\r\n const { fields, partial } = computeChangedState(prev, get().initialValues);\r\n\r\n set({\r\n values: prev,\r\n partialChanged: partial,\r\n canBack: history.length > 0,\r\n canForward: true,\r\n changedFields: fields,\r\n changedCount: fields.length,\r\n });\r\n },\r\n\r\n forward: () => {\r\n if (!future.length) return;\r\n\r\n const next = future.pop()!;\r\n history.push(get().values);\r\n\r\n const { fields, partial } = computeChangedState(next, get().initialValues);\r\n\r\n set({\r\n values: next,\r\n partialChanged: partial,\r\n canBack: true,\r\n canForward: future.length > 0,\r\n changedFields: fields,\r\n changedCount: fields.length,\r\n });\r\n },\r\n }));\r\n}\r\n\r\n/* ======================================================\r\n Context + Hook\r\n====================================================== */\r\n\r\nconst FormContext = createContext<StoreApi<FormState<any>> | null>(null);\r\n\r\nexport function FormProvider<T>({\r\n initialValues,\r\n validate,\r\n onSubmit,\r\n children,\r\n}: {\r\n initialValues: Partial<T>;\r\n validate?: ValidationRules<T>;\r\n onSubmit?: (form: FormState<T>) => void;\r\n children: React.ReactNode;\r\n}) {\r\n const storeRef = useRef(\r\n createFormStore<T>(initialValues, validate, onSubmit)\r\n );\r\n\r\n return (\r\n <FormContext.Provider value={storeRef.current}>\r\n {children}\r\n </FormContext.Provider>\r\n );\r\n}\r\n\r\nexport function useForm<T>() {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useForm must be used inside <FormProvider>\");\r\n }\r\n const state = useStore(store) as FormState<T>;\r\n\r\n const changedFields = useMemo(() => {\r\n return collectChangedPaths(state.values, state.initialValues);\r\n }, [state.values, state.initialValues]);\r\n\r\n return { ...state, changedFields, changedCount: changedFields.length } as FormState<T>;\r\n}\r\n\r\nexport function useFormField<T, P extends LoosePaths<T> = LoosePaths<T>>(\r\n path: P\r\n): P extends Paths<T> ? PathValue<T, P> | undefined : any {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormField must be used inside <FormProvider>\");\r\n }\r\n return useStore(store, (s) => getNested(s.values, path));\r\n}\r\n\r\nexport function useFormFields<T, P extends LoosePaths<T> = LoosePaths<T>>(\r\n ...paths: P[]\r\n): { [K in P]: K extends Paths<T> ? PathValue<T, K> | undefined : any } {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormFields must be used inside <FormProvider>\");\r\n }\r\n \r\n return useStore(store, (s) => {\r\n const result = {} as { [K in P]: K extends Paths<T> ? PathValue<T, K> | undefined : any };\r\n for (const path of paths) {\r\n result[path] = getNested(s.values, path);\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function useFormError(path: string) {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormError must be used inside <FormProvider>\");\r\n }\r\n return useStore(store, (s) => s.errors[path]);\r\n}\r\n\r\nexport function useFormErrors(...paths: string[]) {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormErrors must be used inside <FormProvider>\");\r\n }\r\n return useStore(store, (s) => {\r\n const result: Record<string, string | undefined> = {};\r\n for (const path of paths) {\r\n result[path] = s.errors[path];\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function useFormActions<T>() {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormActions must be used inside <FormProvider>\");\r\n }\r\n return store.getState() as Pick<\r\n FormState<T>,\r\n | \"setValue\"\r\n | \"setError\"\r\n | \"clearError\"\r\n | \"validate\"\r\n | \"validateField\"\r\n | \"reset\"\r\n | \"reinitialize\"\r\n | \"back\"\r\n | \"forward\"\r\n | \"canBack\"\r\n | \"canForward\"\r\n | \"submit\"\r\n >;\r\n}","import { fetchNui } from \"@/utils\";\nimport { useNuiEvent } from \"@/hooks/useNuiEvent\";\nimport { create } from \"zustand\";\n\ntype ScriptConfigUpdateMeta<T> = {\n client_version?: number;\n latestVersion?: number;\n latestData?: Partial<T>;\n changed_paths?: Array<{ path: string; old: unknown; new: unknown }>;\n lastEditor?: { source?: number; name?: string; identifier?: string };\n};\n\nexport type ScriptConfigHistoryChange = {\n path: string;\n old: unknown;\n new: unknown;\n};\n\nexport type ScriptConfigHistoryEntry = {\n at_unix: number;\n at_utc: string;\n script: string;\n admin?: { source?: number; name?: string; identifier?: string };\n expected_version?: number;\n applied_version?: number;\n changes: ScriptConfigHistoryChange[];\n};\n\nexport type ScriptConfigHistoryRequest = {\n offset?: number;\n limit?: number;\n query?: string;\n path?: string;\n admin?: string;\n fromUnix?: number;\n toUnix?: number;\n};\n\nexport type ScriptConfigHistoryResponse = {\n success: boolean;\n _error?: string;\n data?: {\n items: ScriptConfigHistoryEntry[];\n total: number;\n limit: number;\n offset: number;\n nextOffset?: number;\n };\n};\n\ntype NuiResponse<T> = {\n success: boolean;\n message?: string;\n _error?: string;\n meta?: ScriptConfigUpdateMeta<T>;\n};\n\n// ── Singleton registry ────────────────────────────────────────────────────────\n\nexport interface ScriptConfigInstance<T = any> {\n store: { getState: () => T; setState: (partial: Partial<T> | ((prev: T) => T)) => void };\n updateConfig: (newConfig: Partial<T>) => Promise<NuiResponse<T>>;\n resetConfig: () => Promise<{ success: boolean; _error?: string }>;\n getHistory: (params?: ScriptConfigHistoryRequest) => Promise<ScriptConfigHistoryResponse>;\n fetchConfig: () => Promise<T | null>;\n}\n\nlet _instance: ScriptConfigInstance | null = null;\n\nexport function getScriptConfigInstance<T = any>(): ScriptConfigInstance<T> {\n if (!_instance) throw new Error(\"[dirk-cfx-react] createScriptConfig must be called before using ConfigPanel\");\n return _instance as ScriptConfigInstance<T>;\n}\n\nexport function createScriptConfig<T>(defaultValue: T) {\n const store = create<T>(() => defaultValue);\n let clientVersion = 0;\n\n const useScriptConfigHooks = () => {\n useNuiEvent<{ config?: Partial<T>; clientVersion?: number }>(\"UPDATE_SCRIPT_CONFIG\", (data) => {\n if (!data) return;\n\n if (typeof data.clientVersion === \"number\") {\n clientVersion = data.clientVersion as number;\n }\n\n if (data.config && typeof data.config === \"object\") {\n store.setState((prev) => ({ ...prev, ...(data.config as Partial<T>) }));\n }\n });\n };\n\n const fetchScriptConfig = async (): Promise<T | null> => {\n try {\n const response = await fetchNui<{\n success: boolean;\n data?: { config: T; clientVersion: number };\n }>(\"GET_FULL_SCRIPT_CONFIG\");\n\n if (response?.success && response.data?.config) {\n store.setState(() => response.data!.config as T);\n if (typeof response.data.clientVersion === \"number\") {\n clientVersion = response.data.clientVersion;\n }\n return response.data.config;\n }\n } catch { /* fallback to current store state */ }\n return null;\n };\n\n const updateScriptConfig = async (newConfig: Partial<T>): Promise<NuiResponse<T>> => {\n store.setState((prev) => ({ ...prev, ...newConfig }));\n\n const response = await fetchNui<NuiResponse<T>>(\"UPDATE_SCRIPT_CONFIG\", {\n data: newConfig,\n expectedVersion: clientVersion,\n });\n\n if (response?.meta?.client_version != null) {\n clientVersion = response.meta.client_version as number;\n }\n\n if (response?.success === false && response?.meta?.latestData) {\n store.setState((prev) => ({ ...prev, ...(response.meta!.latestData as Partial<T>) }));\n }\n\n return response;\n };\n\n const getScriptConfigHistory = async (\n params: ScriptConfigHistoryRequest = {}\n ): Promise<ScriptConfigHistoryResponse> => {\n return fetchNui<ScriptConfigHistoryResponse>('GET_SCRIPT_CONFIG_HISTORY', params);\n };\n\n const resetConfig = async (): Promise<{ success: boolean; _error?: string }> => {\n const response = await fetchNui<{ success: boolean; _error?: string }>('RESET_SCRIPT_CONFIG');\n if (response?.success) {\n const fresh = await fetchScriptConfig();\n if (fresh) {\n store.setState(() => fresh);\n }\n }\n return response;\n };\n\n _instance = {\n store,\n updateConfig: updateScriptConfig,\n resetConfig,\n getHistory: getScriptConfigHistory,\n fetchConfig: fetchScriptConfig,\n };\n\n return {store, updateScriptConfig, resetConfig, getScriptConfigHistory, useScriptConfigHooks, fetchScriptConfig}\n}\n","import { alpha, Box, Flex, JsonInput, Loader, Text, TextInput, useMantineTheme } from \"@mantine/core\";\r\nimport { notifications } from \"@mantine/notifications\";\r\nimport { useInfiniteQuery, QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\r\nimport { locale } from \"../utils/locales\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport {\r\n ArrowLeft, Check, ChevronDown, Code2, Filter, History, Redo2, RotateCcw,\r\n Save as SaveIcon, Search, Undo2, User, X, XCircle,\r\n} from \"lucide-react\";\r\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport type { UIEvent } from \"react\";\r\nimport { ConfirmModal } from \"./ConfirmModal\";\r\nimport { Modal } from \"./Modal\";\r\nimport { MissingItemsBanner, useMissingItemsAudit } from \"./MissingItemsBanner\";\r\nimport { MotionFlex } from \"./Motion\";\r\nimport { FormProvider, useForm, useFormActions } from \"../hooks/useForm\";\r\nimport { useSettings } from \"../utils/useSettings\";\r\nimport { fetchNui } from \"../utils/fetchNui\";\r\nimport { getScriptConfigInstance } from \"../hooks/useScriptConfig\";\r\nimport type {\r\n ScriptConfigHistoryEntry,\r\n ScriptConfigHistoryRequest,\r\n ScriptConfigHistoryResponse,\r\n} from \"../hooks/useScriptConfig\";\r\n\r\n// ── Types ─────────────────────────────────────────────────────────────────────\r\n\r\nexport interface NavItem {\r\n id: string;\r\n icon: React.ElementType;\r\n label: string;\r\n}\r\n\r\nexport interface ConfigPanelProps<T extends Record<string, any> = Record<string, any>> {\r\n navItems: readonly NavItem[];\r\n title: string;\r\n subtitle?: string;\r\n open: boolean;\r\n /** Defaults to fetchNui(\"CLOSE_ADMIN_SECTION\") */\r\n onClose?: () => void;\r\n children: (activeTab: string) => React.ReactNode;\r\n /** Default config for reset */\r\n defaultConfig: T;\r\n /** Zod schema for JSON validation (.safeParse) */\r\n schema?: { safeParse: (data: unknown) => { success: boolean; data?: T; error?: { issues: { path: PropertyKey[]; message: string }[] } } };\r\n /** Reset confirm typed text (e.g. \"dirk_fishing\") */\r\n resetConfirmText?: string;\r\n width?: string;\r\n height?: string;\r\n /** Skip the auto-mounted MissingItemsBanner. Default: false (banner shown).\r\n The banner self-hides when nothing is missing, so leaving it on costs\r\n nothing visually. */\r\n suppressMissingItemsBanner?: boolean;\r\n}\r\n\r\n// ── Internal query client ─────────────────────────────────────────────────────\r\n\r\nconst configPanelQueryClient = new QueryClient({\r\n defaultOptions: { queries: { staleTime: 30_000, gcTime: 5 * 60_000 } },\r\n});\r\n\r\n// ── NavItem Button ────────────────────────────────────────────────────────────\r\n\r\nfunction NavItemButton({\r\n icon: Icon, label, active, onClick,\r\n}: {\r\n icon: React.ElementType;\r\n label: string;\r\n active: boolean;\r\n onClick: () => void;\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n\r\n return (\r\n <motion.button\r\n onClick={onClick}\r\n whileHover={{ background: active ? alpha(color, 0.15) : \"rgba(255,255,255,0.04)\" }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{\r\n width: \"100%\",\r\n background: active ? alpha(color, 0.12) : \"transparent\",\r\n border: \"none\",\r\n borderLeft: `0.2vh solid ${active ? color : \"transparent\"}`,\r\n borderRadius: `0 ${theme.radius.xs} ${theme.radius.xs} 0`,\r\n padding: \"0.7vh 1vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"0.7vh\",\r\n transition: \"border-color 0.15s, background 0.15s\",\r\n }}\r\n >\r\n <Icon color={active ? color : \"rgba(255,255,255,0.35)\"} />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.06em\" c={active ? color : \"rgba(255,255,255,0.35)\"}>\r\n {label}\r\n </Text>\r\n {active && (\r\n <motion.div\r\n layoutId=\"nav-active-dot\"\r\n style={{ marginLeft: \"auto\", width: \"0.4vh\", height: \"0.4vh\", borderRadius: \"50%\", background: color }}\r\n />\r\n )}\r\n </motion.button>\r\n );\r\n}\r\n\r\n// ── Config JSON Modal ─────────────────────────────────────────────────────────\r\n\r\nfunction ConfigJsonModal<T extends Record<string, any>>({\r\n onClose, schema,\r\n}: {\r\n onClose: () => void;\r\n schema?: ConfigPanelProps<T>[\"schema\"];\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const form = useForm<T>();\r\n const [json, setJson] = useState(() => JSON.stringify(form.values, null, 2));\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const handleSave = () => {\r\n try {\r\n const parsed = JSON.parse(json);\r\n if (schema) {\r\n const result = schema.safeParse(parsed);\r\n if (!result.success) {\r\n setError(result.error!.issues.map((i) => `${i.path.join(\".\")}: ${i.message}`).join(\"\\n\"));\r\n return;\r\n }\r\n const current = form.values as T;\r\n (Object.keys(result.data!) as (keyof T)[]).forEach((key) => {\r\n if (JSON.stringify(result.data![key]) !== JSON.stringify(current[key])) {\r\n form.setValue(key as string, result.data![key]);\r\n }\r\n });\r\n } else {\r\n const current = form.values as T;\r\n (Object.keys(parsed) as (keyof T)[]).forEach((key) => {\r\n if (JSON.stringify(parsed[key]) !== JSON.stringify(current[key])) {\r\n form.setValue(key as string, parsed[key]);\r\n }\r\n });\r\n }\r\n onClose();\r\n } catch (e: any) {\r\n setError(e.message);\r\n }\r\n };\r\n\r\n return (\r\n <Modal title=\"Config JSON\" icon={Code2} iconColor={color} onClose={onClose} width=\"60vh\" maxHeight=\"80vh\" zIndex={200}>\r\n <Box flex={1} p=\"0.8vh\" style={{ overflowY: \"auto\" }}>\r\n <JsonInput\r\n value={json}\r\n spellCheck={false}\r\n onChange={setJson}\r\n rows={22}\r\n formatOnBlur\r\n validationError=\"Invalid JSON\"\r\n styles={() => ({\r\n input: { fontFamily: \"monospace\", fontSize: \"1.3vh\", lineHeight: 1.6, resize: \"none\" },\r\n })}\r\n />\r\n {error && <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"#ef4444\" mt=\"xxs\">{error}</Text>}\r\n </Box>\r\n <Flex justify=\"flex-end\" gap=\"xs\" px=\"sm\" py=\"xs\" style={{ borderTop: `0.1vh solid ${theme.colors.dark[7]}`, flexShrink: 0 }}>\r\n <motion.button onClick={onClose} whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: \"transparent\", border: `0.1vh solid ${theme.colors.dark[6]}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: theme.spacing.xxs }}>\r\n <X color=\"rgba(255,255,255,0.4)\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.05em\" c=\"rgba(255,255,255,0.4)\">Cancel</Text>\r\n </motion.button>\r\n <motion.button onClick={handleSave} whileHover={{ background: alpha(color, 0.25) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: alpha(color, 0.14), border: `0.1vh solid ${alpha(color, 0.4)}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: theme.spacing.xxs }}>\r\n <Check color={color} />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.05em\" c={color}>Apply</Text>\r\n </motion.button>\r\n </Flex>\r\n </Modal>\r\n );\r\n}\r\n\r\n// ── History helpers ───────────────────────────────────────────────────────────\r\n\r\nfunction formatValue(value: unknown): string {\r\n if (value === null) return \"null\";\r\n if (value === undefined) return \"undefined\";\r\n if (typeof value === \"string\") return value;\r\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\r\n try { return JSON.stringify(value); } catch { return String(value); }\r\n}\r\n\r\nfunction formatHistoryDateTime(entry: ScriptConfigHistoryEntry): string {\r\n if (entry.at_unix) {\r\n const date = new Date(entry.at_unix * 1000);\r\n if (!Number.isNaN(date.getTime())) {\r\n return date.toLocaleString(undefined, { year: \"numeric\", month: \"short\", day: \"2-digit\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" });\r\n }\r\n }\r\n if (entry.at_utc) {\r\n const date = new Date(entry.at_utc);\r\n if (!Number.isNaN(date.getTime())) {\r\n return date.toLocaleString(undefined, { year: \"numeric\", month: \"short\", day: \"2-digit\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" });\r\n }\r\n }\r\n return \"Unknown time\";\r\n}\r\n\r\nfunction historyEntryKey(entry: ScriptConfigHistoryEntry, index: number) {\r\n return `${entry.at_unix}-${entry.applied_version}-${index}`;\r\n}\r\n\r\n// ── History sub-components ────────────────────────────────────────────────────\r\n\r\nfunction ChangeDetails({ entry }: { entry: ScriptConfigHistoryEntry }) {\r\n const theme = useMantineTheme();\r\n return (\r\n <Flex direction=\"column\" gap=\"0.45vh\" p=\"0.8vh\" style={{ border: `0.1vh solid ${alpha(theme.colors.dark[6], 0.8)}`, borderRadius: theme.radius.xs, background: alpha(theme.colors.dark[9], 0.35) }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">\r\n Version {entry.expected_version ?? \"?\"} {\"\\u2192\"} {entry.applied_version ?? \"?\"}\r\n </Text>\r\n <div style={{ display: \"grid\", gridTemplateColumns: \"minmax(18vh, 22vh) minmax(0, 1fr) minmax(0, 1fr)\", gap: \"0.1vh\", border: `0.1vh solid ${alpha(theme.colors.dark[6], 0.9)}`, borderRadius: theme.radius.xs, overflow: \"hidden\", background: alpha(theme.colors.dark[6], 0.8) }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\" px=\"0.6vh\" py=\"0.45vh\" style={{ background: alpha(theme.colors.dark[8], 0.85) }}>Path</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\" px=\"0.6vh\" py=\"0.45vh\" style={{ background: alpha(theme.colors.dark[8], 0.85) }}>From</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\" px=\"0.6vh\" py=\"0.45vh\" style={{ background: alpha(theme.colors.dark[8], 0.85) }}>To</Text>\r\n {(entry.changes || []).map((change, idx) => {\r\n const bg = idx % 2 === 0 ? alpha(theme.colors.dark[9], 0.5) : alpha(theme.colors.dark[8], 0.42);\r\n return [\r\n <Text key={`${idx}-p`} ff=\"Akrobat Bold\" size=\"xxs\" c=\"#8ad1ff\" px=\"0.6vh\" py=\"0.55vh\" style={{ background: bg, wordBreak: \"break-word\" }}>{change.path}</Text>,\r\n <Text key={`${idx}-o`} ff=\"monospace\" size=\"xxs\" c=\"rgba(255,255,255,0.5)\" px=\"0.6vh\" py=\"0.55vh\" style={{ background: bg, wordBreak: \"break-word\", whiteSpace: \"pre-wrap\" }}>{formatValue(change.old)}</Text>,\r\n <Text key={`${idx}-n`} ff=\"monospace\" size=\"xxs\" c=\"rgba(255,255,255,0.78)\" px=\"0.6vh\" py=\"0.55vh\" style={{ background: bg, wordBreak: \"break-word\", whiteSpace: \"pre-wrap\" }}>{formatValue(change.new)}</Text>,\r\n ];\r\n })}\r\n </div>\r\n </Flex>\r\n );\r\n}\r\n\r\nfunction HistoryTableRow({ entry, expanded, onToggle }: { entry: ScriptConfigHistoryEntry; expanded: boolean; onToggle: () => void }) {\r\n const theme = useMantineTheme();\r\n const admin = entry.admin?.name || entry.admin?.identifier || \"unknown\";\r\n const firstPath = entry.changes?.[0]?.path || \"-\";\r\n const changeCount = entry.changes?.length || 0;\r\n const versionText = `${entry.expected_version ?? \"?\"} \\u2192 ${entry.applied_version ?? \"?\"}`;\r\n\r\n return (\r\n <motion.div layout initial={{ opacity: 0, y: 6 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.16, ease: \"easeOut\" }}>\r\n <Flex direction=\"column\" gap=\"0.45vh\">\r\n <motion.button onClick={onToggle} whileHover={{ scale: 1.002 }} whileTap={{ scale: 0.997 }} transition={{ duration: 0.12 }}\r\n style={{ background: expanded ? alpha(theme.colors.dark[7], 0.45) : alpha(theme.colors.dark[8], 0.35), border: `0.1vh solid ${expanded ? alpha(theme.colors[theme.primaryColor][5], 0.35) : alpha(theme.colors.dark[6], 0.75)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.75vh\", cursor: \"pointer\", textAlign: \"left\" }}>\r\n <div style={{ display: \"grid\", gridTemplateColumns: \"2.2vh 20vh 12vh 6vh 1fr minmax(16vh, auto)\", gap: \"0.8vh\", alignItems: \"center\" }}>\r\n <div style={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <motion.div animate={{ rotate: expanded ? 0 : -90 }} transition={{ duration: 0.18, ease: \"easeOut\" }}>\r\n <ChevronDown size=\"1.5vh\" color={expanded ? \"rgba(255,255,255,0.6)\" : \"rgba(255,255,255,0.45)\"} />\r\n </motion.div>\r\n </div>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.75)\" lineClamp={1}>{formatHistoryDateTime(entry)}</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.68)\" lineClamp={1}>{admin}</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.68)\">{changeCount}</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.58)\" lineClamp={1}>{firstPath}</Text>\r\n <Text ff=\"monospace\" size=\"xxs\" c=\"rgba(255,255,255,0.68)\">{versionText}</Text>\r\n </div>\r\n </motion.button>\r\n <AnimatePresence initial={false}>\r\n {expanded && (\r\n <motion.div key=\"details\" initial={{ opacity: 0, height: 0, y: -4 }} animate={{ opacity: 1, height: \"auto\", y: 0 }} exit={{ opacity: 0, height: 0, y: -4 }} transition={{ duration: 0.2, ease: \"easeInOut\" }} style={{ overflow: \"hidden\" }}>\r\n <ChangeDetails entry={entry} />\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </Flex>\r\n </motion.div>\r\n );\r\n}\r\n\r\nfunction HistoryTableHeader() {\r\n const theme = useMantineTheme();\r\n return (\r\n <div style={{ display: \"grid\", gridTemplateColumns: \"2.2vh 20vh 12vh 6vh 1fr minmax(16vh, auto)\", gap: \"0.8vh\", alignItems: \"center\", border: `0.1vh solid ${alpha(theme.colors.dark[6], 0.8)}`, borderRadius: theme.radius.xs, background: alpha(theme.colors.dark[8], 0.55), padding: \"0.55vh 0.75vh\" }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.35)\"> </Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">Time</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">Admin</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">#</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">First Change</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">Version</Text>\r\n </div>\r\n );\r\n}\r\n\r\n// ── History Modal ─────────────────────────────────────────────────────────────\r\n\r\nfunction ConfigHistoryModal({\r\n onClose,\r\n}: {\r\n onClose: () => void;\r\n}) {\r\n const { getHistory } = getScriptConfigInstance();\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const [queryInput, setQueryInput] = useState(\"\");\r\n const [pathInput, setPathInput] = useState(\"\");\r\n const [adminInput, setAdminInput] = useState(\"\");\r\n const [query, setQuery] = useState(\"\");\r\n const [path, setPath] = useState(\"\");\r\n const [admin, setAdmin] = useState(\"\");\r\n const [expandedKey, setExpandedKey] = useState<string | null>(null);\r\n\r\n const filters = useMemo(() => ({ query, path, admin }), [query, path, admin]);\r\n\r\n const historyQuery = useInfiniteQuery({\r\n queryKey: [\"scriptConfigHistory\", filters],\r\n initialPageParam: 0,\r\n queryFn: async ({ pageParam }) => {\r\n const response = await getHistory({\r\n offset: pageParam,\r\n limit: 25,\r\n query: filters.query || undefined,\r\n path: filters.path || undefined,\r\n admin: filters.admin || undefined,\r\n });\r\n if (!response?.success || !response.data) {\r\n throw new Error(response?._error || \"Failed to load config history\");\r\n }\r\n return response.data;\r\n },\r\n getNextPageParam: (lastPage) => lastPage.nextOffset,\r\n });\r\n\r\n const rows = historyQuery.data?.pages.flatMap((page) => page.items) ?? [];\r\n const total = historyQuery.data?.pages[0]?.total ?? 0;\r\n\r\n const handleListScroll = (e: UIEvent<HTMLDivElement>) => {\r\n const el = e.currentTarget;\r\n if (el.scrollHeight - el.scrollTop - el.clientHeight < 280 && historyQuery.hasNextPage && !historyQuery.isFetchingNextPage) {\r\n historyQuery.fetchNextPage();\r\n }\r\n };\r\n\r\n return (\r\n <Modal title=\"Config History\" icon={History} iconColor={color} onClose={onClose} width=\"88vh\" maxHeight=\"82vh\" zIndex={260}>\r\n <Flex direction=\"column\" style={{ flex: 1, minHeight: 0 }}>\r\n <Flex gap=\"xs\" p=\"sm\" style={{ borderBottom: `0.1vh solid ${alpha(theme.colors.dark[7], 0.8)}` }}>\r\n <TextInput leftSection={<Search size=\"1.4vh\" />} placeholder=\"Search path/admin/value\" value={queryInput} onChange={(e) => setQueryInput(e.currentTarget.value)} size=\"xs\" style={{ flex: 1 }} />\r\n <TextInput leftSection={<Filter size=\"1.4vh\" />} placeholder=\"Path filter (e.g. basic.weightUnit)\" value={pathInput} onChange={(e) => setPathInput(e.currentTarget.value)} size=\"xs\" style={{ flex: 1 }} />\r\n <TextInput leftSection={<User size=\"1.4vh\" />} placeholder=\"Admin filter\" value={adminInput} onChange={(e) => setAdminInput(e.currentTarget.value)} size=\"xs\" style={{ flex: 1 }} />\r\n <motion.button\r\n onClick={() => { setExpandedKey(null); setQuery(queryInput.trim()); setPath(pathInput.trim().toLowerCase()); setAdmin(adminInput.trim().toLowerCase()); }}\r\n whileHover={{ background: alpha(color, 0.2) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: alpha(color, 0.12), border: `0.1vh solid ${alpha(color, 0.35)}`, borderRadius: theme.radius.xs, padding: \"0.55vh 0.85vh\", cursor: \"pointer\" }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={color}>Apply</Text>\r\n </motion.button>\r\n </Flex>\r\n\r\n <Flex direction=\"column\" gap=\"xs\" p=\"sm\" style={{ flex: 1, minHeight: 0, overflowY: \"auto\" }} onScroll={handleListScroll}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">\r\n {historyQuery.isFetching && !historyQuery.data ? \"Loading history...\" : `${total} entries`}\r\n </Text>\r\n <HistoryTableHeader />\r\n {historyQuery.isError && <Text ff=\"Akrobat Bold\" size=\"xs\" c=\"#ef4444\">{(historyQuery.error as Error).message}</Text>}\r\n {!historyQuery.isLoading && rows.length === 0 && !historyQuery.isError && (\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" c=\"rgba(255,255,255,0.45)\">No history found for current filters.</Text>\r\n )}\r\n <AnimatePresence initial={false}>\r\n {rows.map((entry, index) => {\r\n const key = historyEntryKey(entry, index);\r\n return <HistoryTableRow key={key} entry={entry} expanded={expandedKey === key} onToggle={() => setExpandedKey(expandedKey === key ? null : key)} />;\r\n })}\r\n </AnimatePresence>\r\n {(historyQuery.isFetchingNextPage || historyQuery.isLoading) && (\r\n <Flex justify=\"center\" py=\"sm\"><Loader size=\"sm\" color={color} /></Flex>\r\n )}\r\n </Flex>\r\n </Flex>\r\n <Flex justify=\"flex-end\" gap=\"xs\" px=\"sm\" py=\"xs\" style={{ borderTop: `0.1vh solid ${theme.colors.dark[7]}`, flexShrink: 0 }}>\r\n <motion.button onClick={onClose} whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: \"transparent\", border: `0.1vh solid ${theme.colors.dark[6]}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: theme.spacing.xxs }}>\r\n <X color=\"rgba(255,255,255,0.4)\" size=\"1.5vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.05em\" c=\"rgba(255,255,255,0.4)\">Close</Text>\r\n </motion.button>\r\n </Flex>\r\n </Modal>\r\n );\r\n}\r\n\r\n// ── ConfigPanel Inner ─────────────────────────────────────────────────────────\r\n\r\nfunction ConfigPanelInner<T extends Record<string, any>>({\r\n navItems, title, subtitle, children, isSaving, onClose,\r\n schema, resetConfirmText, defaultConfig,\r\n width, height, suppressMissingItemsBanner,\r\n}: Omit<ConfigPanelProps<T>, \"open\" | \"onClose\"> & { isSaving: boolean; onClose: () => void }) {\r\n const { updateConfig, resetConfig, getHistory } = getScriptConfigInstance<T>();\r\n const form = useForm<T>();\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const version = useSettings((s) => s.resourceVersion);\r\n const [activeTab, setActiveTab] = useState(navItems[0]?.id ?? \"\");\r\n const firstMountRef = useRef(true);\r\n const [jsonOpen, setJsonOpen] = useState(false);\r\n const [historyOpen, setHistoryOpen] = useState(false);\r\n const [resetOpen, setResetOpen] = useState(false);\r\n const [pendingAction, setPendingAction] = useState<\"close\" | \"back\" | null>(null);\r\n const changedCount = form.changedCount ?? 0;\r\n const isDirty = changedCount > 0;\r\n\r\n const goBack = () => fetchNui(\"CONFIG_PANEL_BACK\");\r\n\r\n const handleBack = () => {\r\n if (isDirty) {\r\n setPendingAction(\"back\");\r\n return;\r\n }\r\n goBack();\r\n };\r\n\r\n useEffect(() => {\r\n function handleKeyDown(e: KeyboardEvent) {\r\n if (e.key !== \"Escape\") return;\r\n if (isDirty) {\r\n e.preventDefault();\r\n setPendingAction(\"close\");\r\n return;\r\n }\r\n onClose();\r\n }\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [isDirty, onClose]);\r\n\r\n return (\r\n <>\r\n <AnimatePresence>{jsonOpen && <ConfigJsonModal onClose={() => setJsonOpen(false)} schema={schema} />}</AnimatePresence>\r\n <AnimatePresence>{historyOpen && <ConfigHistoryModal onClose={() => setHistoryOpen(false)} />}</AnimatePresence>\r\n <AnimatePresence>\r\n {resetOpen && (\r\n <ConfirmModal\r\n title=\"Reset to Defaults\"\r\n description=\"This will permanently reset ALL config back to the defaults. Every value you have configured will be overwritten. This cannot be undone.\"\r\n confirmLabel=\"Reset Config\"\r\n confirmText={resetConfirmText}\r\n onConfirm={async () => {\r\n setResetOpen(false);\r\n const result = await resetConfig();\r\n if (result?.success) {\r\n const { store } = getScriptConfigInstance<T>();\r\n form.reinitialize(cloneConfig(store.getState()));\r\n // Mirror the save-success toast so the admin gets visible\r\n // feedback that the reset actually applied — previously the\r\n // modal just closed silently and admins had no way to tell\r\n // whether it had worked.\r\n notifications.show({\r\n color: \"green\",\r\n title: locale(\"ConfigResetSuccessTitle\"),\r\n message: locale(\"ConfigResetSuccessBody\"),\r\n autoClose: 3000,\r\n });\r\n return;\r\n }\r\n const err = result?._error || \"Unknown\";\r\n console.warn(`[ConfigPanel] config reset failed: ${err}`);\r\n notifications.show({\r\n color: \"red\",\r\n title: locale(\"ConfigResetFailedTitle\"),\r\n message: locale(\"ConfigResetFailedBody\", err),\r\n autoClose: 6000,\r\n });\r\n }}\r\n onClose={() => setResetOpen(false)}\r\n zIndex={300}\r\n />\r\n )}\r\n </AnimatePresence>\r\n <AnimatePresence>\r\n {pendingAction !== null && (\r\n <ConfirmModal\r\n title=\"Discard Unsaved Changes?\"\r\n description={\r\n pendingAction === \"back\"\r\n ? \"You have unsaved changes. Going back now will discard them.\"\r\n : \"You have unsaved changes. Closing now will discard them.\"\r\n }\r\n confirmLabel={pendingAction === \"back\" ? \"Go Back Without Saving\" : \"Close Without Saving\"}\r\n onConfirm={() => {\r\n const action = pendingAction;\r\n setPendingAction(null);\r\n if (action === \"back\") goBack();\r\n else onClose();\r\n }}\r\n onClose={() => setPendingAction(null)}\r\n zIndex={300}\r\n />\r\n )}\r\n </AnimatePresence>\r\n\r\n <MotionFlex\r\n pos=\"absolute\" left=\"50%\" top=\"50%\"\r\n bg={alpha(theme.colors.dark[9], 0.9)}\r\n w={width ?? \"120vh\"} h={height ?? \"80vh\"} bdrs=\"sm\"\r\n style={{\r\n userSelect: \"none\", overflow: \"hidden\",\r\n transform: \"translate(-50%, -50%)\",\r\n boxShadow: \"0 0 10px rgba(0,0,0,0.5)\",\r\n border: `0.1vh solid ${theme.colors.dark[7]}`,\r\n }}\r\n direction=\"row\"\r\n initial={{ scale: 0.3, opacity: 0, transform: \"translate(-50%, -50%)\" }}\r\n animate={{ scale: 1, opacity: 1, transform: \"translate(-50%, -50%)\" }}\r\n exit={{ scale: 0.3, opacity: 0, transform: \"translate(-50%, -50%)\" }}\r\n >\r\n {/* ── Sidebar ── */}\r\n <Flex direction=\"column\" style={{ width: \"18vh\", flexShrink: 0, borderRight: `0.1vh solid ${alpha(theme.colors.dark[6], 0.8)}`, background: alpha(theme.colors.dark[8], 0.6), overflow: \"hidden\" }}>\r\n <Flex align=\"center\" gap=\"0.6vh\" px=\"sm\" py=\"sm\" style={{ borderBottom: `0.1vh solid ${alpha(theme.colors.dark[6], 0.5)}`, flexShrink: 0 }}>\r\n <motion.button\r\n title=\"Back to script list\"\r\n onClick={handleBack}\r\n whileHover={{ background: alpha(color, 0.16), borderColor: alpha(color, 0.45) }}\r\n whileTap={{ scale: 0.95 }}\r\n style={{\r\n aspectRatio: \"1 / 1\",\r\n height: \"2.4vh\",\r\n background: alpha(color, 0.08),\r\n border: `0.1vh solid ${alpha(color, 0.3)}`,\r\n borderRadius: theme.radius.xs,\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <ArrowLeft size=\"1.4vh\" color={color} />\r\n </motion.button>\r\n <Flex direction=\"column\" style={{ minWidth: 0, flex: 1, lineHeight: 1, overflow: \"hidden\" }}>\r\n <Text size=\"md\" ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.04em\" truncate>{title}</Text>\r\n {subtitle && (\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.08em\" c={color} truncate>\r\n {subtitle}\r\n </Text>\r\n )}\r\n </Flex>\r\n </Flex>\r\n\r\n {/* Quick controls */}\r\n <Flex gap=\"xxs\" px=\"xs\" py=\"xs\" style={{ borderBottom: `0.1vh solid ${alpha(theme.colors.dark[6], 0.4)}`, flexShrink: 0 }}>\r\n <motion.button title=\"Undo\" onClick={() => form.canBack && form.back()} disabled={!form.canBack}\r\n whileHover={form.canBack ? { background: \"rgba(255,255,255,0.07)\" } : undefined}\r\n whileTap={form.canBack ? { scale: 0.97 } : undefined}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: \"transparent\", border: `0.1vh solid ${alpha(theme.colors.dark[5], form.canBack ? 0.6 : 0.3)}`, borderRadius: theme.radius.xs, cursor: form.canBack ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", opacity: form.canBack ? 1 : 0.35, transition: \"opacity 0.2s\" }}>\r\n <Undo2 size=\"1.5vh\" color=\"rgba(255,255,255,0.7)\" />\r\n </motion.button>\r\n <motion.button title=\"Redo\" onClick={() => form.canForward && form.forward()} disabled={!form.canForward}\r\n whileHover={form.canForward ? { background: \"rgba(255,255,255,0.07)\" } : undefined}\r\n whileTap={form.canForward ? { scale: 0.97 } : undefined}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: \"transparent\", border: `0.1vh solid ${alpha(theme.colors.dark[5], form.canForward ? 0.6 : 0.3)}`, borderRadius: theme.radius.xs, cursor: form.canForward ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", opacity: form.canForward ? 1 : 0.35, transition: \"opacity 0.2s\" }}>\r\n <Redo2 size=\"1.5vh\" color=\"rgba(255,255,255,0.7)\" />\r\n </motion.button>\r\n <motion.button title={isSaving ? \"Saving...\" : isDirty ? `Save (${changedCount})` : \"Save\"}\r\n onClick={() => isDirty && !isSaving && form.submit()} disabled={!isDirty || isSaving}\r\n whileHover={isDirty && !isSaving ? { background: alpha(color, 0.25), borderColor: alpha(color, 0.5) } : undefined}\r\n whileTap={isDirty && !isSaving ? { scale: 0.97 } : undefined}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: isDirty ? alpha(color, 0.14) : \"transparent\", border: `0.1vh solid ${isDirty ? alpha(color, 0.35) : alpha(theme.colors.dark[5], 0.3)}`, borderRadius: theme.radius.xs, cursor: isDirty && !isSaving ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", opacity: isDirty ? 1 : 0.35, transition: \"opacity 0.2s, background 0.15s\" }}>\r\n {isSaving ? <Loader size=\"1.5vh\" color={color} type=\"dots\" /> : <SaveIcon color={isDirty ? color : \"rgba(255,255,255,0.35)\"} size=\"1.5vh\" />}\r\n </motion.button>\r\n <motion.button title=\"History\" onClick={() => setHistoryOpen(true)}\r\n whileHover={{ background: alpha(\"#22d3ee\", 0.16), borderColor: alpha(\"#22d3ee\", 0.5) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: alpha(\"#22d3ee\", 0.07), border: `0.1vh solid ${alpha(\"#22d3ee\", 0.25)}`, borderRadius: theme.radius.xs, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\r\n <History color=\"#22d3ee\" size=\"1.5vh\" />\r\n </motion.button>\r\n </Flex>\r\n\r\n {/* Nav items */}\r\n <Flex direction=\"column\" gap=\"xxs\" p=\"xs\" style={{ flex: 1, overflowY: \"auto\" }}>\r\n {navItems.map((item) => (\r\n <NavItemButton key={item.id} icon={item.icon} label={item.label} active={activeTab === item.id} onClick={() => setActiveTab(item.id)} />\r\n ))}\r\n </Flex>\r\n\r\n {/* Bottom actions */}\r\n <Flex direction=\"column\" p=\"xs\" gap=\"xs\" style={{ borderTop: `0.1vh solid ${alpha(theme.colors.dark[6], 0.5)}`, flexShrink: 0 }}>\r\n <motion.button onClick={() => isDirty && form.reset()} disabled={!isDirty}\r\n whileHover={isDirty ? { background: alpha(\"#f97316\", 0.12), borderColor: alpha(\"#f97316\", 0.45) } : undefined}\r\n whileTap={isDirty ? { scale: 0.97 } : undefined}\r\n style={{ width: \"100%\", background: \"transparent\", border: `0.1vh solid ${isDirty ? alpha(\"#f97316\", 0.35) : alpha(theme.colors.dark[5], 0.3)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.8vh\", cursor: isDirty ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", gap: \"0.55vh\", opacity: isDirty ? 1 : 0.35, transition: \"opacity 0.2s\" }}>\r\n <XCircle color={isDirty ? \"#f97316\" : \"rgba(255,255,255,0.35)\"} size=\"1.6vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={isDirty ? \"#f97316\" : \"rgba(255,255,255,0.35)\"}>Discard</Text>\r\n </motion.button>\r\n\r\n <div style={{ height: \"0.05vh\", background: \"rgba(255,255,255,0.07)\", margin: \"0.1vh 0\" }} />\r\n\r\n <motion.button onClick={() => setJsonOpen(true)}\r\n whileHover={{ background: alpha(color, 0.16), borderColor: alpha(color, 0.45) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{ width: \"100%\", background: alpha(color, 0.07), border: `0.1vh solid ${alpha(color, 0.28)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.8vh\", cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: \"0.55vh\" }}>\r\n <Code2 color={color} size=\"1.6vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>Manual Edit</Text>\r\n </motion.button>\r\n\r\n <motion.button onClick={() => setResetOpen(true)}\r\n whileHover={{ background: alpha(\"#ef4444\", 0.16), borderColor: alpha(\"#ef4444\", 0.5) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{ width: \"100%\", background: alpha(\"#ef4444\", 0.07), border: `0.1vh solid ${alpha(\"#ef4444\", 0.25)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.8vh\", cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: \"0.55vh\" }}>\r\n <RotateCcw color=\"#ef4444\" size=\"1.6vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c=\"#ef4444\">Reset Defaults</Text>\r\n </motion.button>\r\n\r\n {version && (\r\n <Text size=\"0.95vh\" c=\"dimmed\" ta=\"center\" style={{ letterSpacing: \"0.04em\", opacity: 0.8 }}>\r\n Version {version}\r\n </Text>\r\n )}\r\n </Flex>\r\n </Flex>\r\n\r\n {/* ── Right column: banner stacked above content ── */}\r\n {/* Wrapped in a column flex so the banner sits on top of the tab\r\n content. The parent MotionFlex is `direction=\"row\"` for sidebar +\r\n content-area, so without this wrapper the banner becomes a third\r\n column and gets squeezed to the left edge of the content area. */}\r\n <Flex direction=\"column\" style={{ flex: 1, minWidth: 0, overflow: \"hidden\" }}>\r\n {/* Above the AnimatePresence so it doesn't unmount on every tab\r\n switch. Self-hides when nothing's missing; consumers can disable\r\n entirely via `suppressMissingItemsBanner`. */}\r\n {!suppressMissingItemsBanner && <MissingItemsBanner />}\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div key={activeTab} initial={firstMountRef.current ? (firstMountRef.current = false, false) : { opacity: 0, y: 4 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: -4 }} transition={{ duration: 0.15 }}\r\n style={{ flex: 1, display: \"flex\", flexDirection: \"column\", overflowY: \"auto\" }}>\r\n {children(activeTab)}\r\n </motion.div>\r\n </AnimatePresence>\r\n </Flex>\r\n </MotionFlex>\r\n </>\r\n );\r\n}\r\n\r\n// ── Utility ───────────────────────────────────────────────────────────────────\r\n\r\nfunction cloneConfig<T>(value: T): T {\r\n return JSON.parse(JSON.stringify(value)) as T;\r\n}\r\n\r\n// ── ServerOnly Fetcher (merges x-serverOnly paths into form on admin open) ───\r\n\r\nfunction ServerOnlyFetcher<T extends Record<string, any>>() {\r\n const { fetchConfig } = getScriptConfigInstance<T>();\r\n const { reinitialize } = useFormActions<T>();\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n fetchConfig().then((full) => {\r\n if (!cancelled && full) reinitialize(full as Partial<T>);\r\n }).catch(() => {});\r\n return () => { cancelled = true; };\r\n }, []);\r\n\r\n return null;\r\n}\r\n\r\n// ── Public ConfigPanel ────────────────────────────────────────────────────────\r\n\r\nconst defaultOnClose = () => fetchNui(\"CLOSE_ADMIN_SECTION\");\r\n\r\nexport function ConfigPanel<T extends Record<string, any>>(props: ConfigPanelProps<T>) {\r\n const { open, onClose = defaultOnClose } = props;\r\n const { store, updateConfig } = getScriptConfigInstance<T>();\r\n const [isSaving, setIsSaving] = useState(false);\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <QueryClientProvider client={configPanelQueryClient}>\r\n <FormProvider<T>\r\n initialValues={cloneConfig(store.getState())}\r\n onSubmit={async (form) => {\r\n if (isSaving) return;\r\n setIsSaving(true);\r\n try {\r\n const result: any = await updateConfig(form.values as T);\r\n if (result?.success) {\r\n form.reinitialize(cloneConfig(form.values as T));\r\n configPanelQueryClient.invalidateQueries({ queryKey: [\"scriptConfigHistory\"] });\r\n // Re-run the missing-items audit since item-name fields might\r\n // have changed in this save. One-shot per save — not an event\r\n // listener loop, no spam.\r\n useMissingItemsAudit.getState().refresh();\r\n notifications.show({\r\n color: \"green\",\r\n title: locale(\"ConfigSaveSuccessTitle\"),\r\n message: locale(\"ConfigSaveSuccessBody\"),\r\n autoClose: 3000,\r\n });\r\n return;\r\n }\r\n form.reinitialize(cloneConfig(store.getState()));\r\n const err = result?._error || \"Unknown\";\r\n console.warn(`[ConfigPanel] config save failed: ${err}`);\r\n // Map common server-side error codes to friendlier copy. Falls\r\n // back to the raw code so unknown errors still surface something\r\n // visible instead of swallowing silently.\r\n const titleKey = err === \"NoPermission\" ? \"ConfigSaveNoPermissionTitle\"\r\n : err === \"VersionConflict\" ? \"ConfigSaveVersionConflictTitle\"\r\n : err === \"NotReady\" ? \"ConfigSaveNotReadyTitle\"\r\n : \"ConfigSaveFailedTitle\";\r\n const bodyKey = err === \"NoPermission\" ? \"ConfigSaveNoPermissionBody\"\r\n : err === \"VersionConflict\" ? \"ConfigSaveVersionConflictBody\"\r\n : err === \"NotReady\" ? \"ConfigSaveNotReadyBody\"\r\n : \"ConfigSaveFailedBody\";\r\n notifications.show({\r\n color: \"red\",\r\n title: locale(titleKey),\r\n message: locale(bodyKey, err),\r\n autoClose: 6000,\r\n });\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n }}\r\n >\r\n <ServerOnlyFetcher<T> />\r\n <AnimatePresence>\r\n {open && (\r\n <ConfigPanelInner<T>\r\n {...props}\r\n onClose={onClose}\r\n isSaving={isSaving}\r\n />\r\n )}\r\n </AnimatePresence>\r\n </FormProvider>\r\n </QueryClientProvider>\r\n );\r\n}\r\n","import { Flex, Image, Select, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { AlertTriangle } from \"lucide-react\";\r\nimport { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { locale } from \"../utils/locales\";\r\nimport { useItems, useItemsList } from \"../utils/useItems\";\r\n\r\nexport type SelectItemProps = {\r\n label: string;\r\n value: string;\r\n onChange: (value: string) => void;\r\n style?: React.CSSProperties;\r\n excludeItemNames?: string[];\r\n};\r\n\r\nconst MISSING_COLOR = \"#f59e0b\"; // amber — matches MissingItemsBanner\r\n\r\nfunction LazyImage({ src, style }: { src: string; style?: React.CSSProperties }) {\r\n const [visible, setVisible] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(([entry]) => {\r\n if (entry.isIntersecting) {\r\n setVisible(true);\r\n observer.disconnect();\r\n }\r\n });\r\n if (ref.current) observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n // No alt — when an item's image src 404s the alt string would render in\r\n // place of the image and blow the cell out, throwing the input layout\r\n // off (clicking the icon area then misses the input click target).\r\n return (\r\n <div ref={ref} style={{ width: \"4vh\", height: \"4vh\" }}>\r\n {visible && <Image src={src} fit=\"contain\" style={style} />}\r\n </div>\r\n );\r\n}\r\n\r\nexport function SelectItem(props: SelectItemProps) {\r\n const invItems = useItems();\r\n\r\n // True when something IS configured but it's not registered in the player's\r\n // items table. Drives all the amber styling below.\r\n const isMissing = !!props.value && !invItems[props.value];\r\n\r\n const formattedItems = useMemo(() => {\r\n const seen = new Set<string>();\r\n const list = useItemsList(props.excludeItemNames ?? [])\r\n .filter((item) => {\r\n if (seen.has(item.name)) return false;\r\n seen.add(item.name);\r\n return true;\r\n })\r\n .map((item) => ({ value: item.name, label: item.label, image: item.image }));\r\n\r\n // If the configured value isn't in the inventory items table, prepend a\r\n // synthetic entry so Mantine has something to match `value` against —\r\n // otherwise the input renders blank with no signal that anything's\r\n // configured. The raw item name doubles as the displayed label.\r\n if (isMissing) {\r\n list.unshift({ value: props.value, label: props.value, image: \"\" });\r\n }\r\n return list;\r\n // `useItemsList` already depends on `invItems` internally; `isMissing`\r\n // captures the value-vs-inventory delta so this list rebuilds whenever\r\n // the configured value or the items table changes.\r\n }, [invItems, props.excludeItemNames, props.value, isMissing]);\r\n\r\n return (\r\n <Select\r\n maxDropdownHeight=\"30vh\"\r\n label={locale(props.label)}\r\n size=\"xs\"\r\n flex={1}\r\n style={props.style}\r\n limit={50}\r\n value={props.value}\r\n onChange={(v) => props.onChange(v as string)}\r\n data={formattedItems}\r\n allowDeselect={false}\r\n searchable\r\n // Amber-tint the input text when the configured value isn't registered\r\n // — a glance is enough to spot which field is broken.\r\n styles={isMissing ? { input: { color: MISSING_COLOR } } : undefined}\r\n // Portal the dropdown so it isn't clipped by overflow:hidden parents\r\n // (e.g. live-editor side panels) and stack it above modal content.\r\n comboboxProps={{ withinPortal: true, zIndex: 2000 }}\r\n leftSectionWidth=\"4vh\"\r\n // Pointer events off on the leftSection so clicks anywhere on the\r\n // input (including over the item icon) bubble through to the input\r\n // and open the dropdown.\r\n leftSectionPointerEvents=\"none\"\r\n leftSection={\r\n isMissing ? (\r\n <Flex align=\"center\" justify=\"center\" w=\"4vh\" h=\"4vh\">\r\n <AlertTriangle size=\"2vh\" color={MISSING_COLOR} strokeWidth={2.5} />\r\n </Flex>\r\n ) : props.value ? (\r\n <Image\r\n fallbackSrc=\"/placeholder.png\"\r\n src={invItems[props.value]?.image || \"\"}\r\n fit=\"contain\"\r\n maw=\"4vh\"\r\n style={{ aspectRatio: \"1 / 1\" }}\r\n />\r\n ) : null\r\n }\r\n nothingFoundMessage={locale(\"NoItemsFound\")}\r\n renderOption={(item) => {\r\n const optionMissing = !invItems[item.option.value] && item.option.value === props.value;\r\n if (optionMissing) {\r\n return (\r\n <Flex align=\"center\" gap=\"xs\" w=\"100%\">\r\n <Flex align=\"center\" justify=\"center\" w=\"4vh\" h=\"4vh\" style={{ flexShrink: 0 }}>\r\n <AlertTriangle size=\"2vh\" color={MISSING_COLOR} strokeWidth={2.5} />\r\n </Flex>\r\n <Flex direction=\"column\" style={{ flex: 1, minWidth: 0 }}>\r\n <Text size=\"sm\" c={MISSING_COLOR} style={{ fontFamily: \"monospace\" }}>\r\n {item.option.value}\r\n </Text>\r\n <Text size=\"xxs\" c=\"dimmed\">\r\n {locale(\"ItemNotInInventory\")}\r\n </Text>\r\n </Flex>\r\n <div style={{\r\n background: \"rgba(245,158,11,0.12)\",\r\n border: `0.1vh solid ${MISSING_COLOR}59`,\r\n borderRadius: \"0.3vh\",\r\n padding: \"0.1vh 0.6vh\",\r\n }}>\r\n <Text size=\"xxs\" c={MISSING_COLOR} ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.06em\">\r\n {locale(\"Missing\")}\r\n </Text>\r\n </div>\r\n </Flex>\r\n );\r\n }\r\n return (\r\n <Flex align=\"center\" gap=\"xs\" w=\"100%\">\r\n <LazyImage\r\n src={invItems[item.option.value]?.image || \"\"}\r\n style={{ aspectRatio: \"1 / 1\" }}\r\n />\r\n <Flex direction=\"column\">\r\n <Text size=\"sm\">{item.option.label}</Text>\r\n <Text size=\"xxs\" c=\"dimmed\">{item.option.value}</Text>\r\n </Flex>\r\n </Flex>\r\n );\r\n }}\r\n />\r\n );\r\n}\r\n","import { alpha, Flex, NumberInput, Text, Tooltip, useMantineTheme } from \"@mantine/core\";\nimport { motion } from \"framer-motion\";\nimport { Crosshair, Eye, EyeOff, MapPin, RotateCcw, Trash2 } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { fetchNui } from \"../utils/fetchNui\";\nimport { locale } from \"../utils/locales\";\n\nexport type Vector4Value = { x: number; y: number; z: number; w: number };\n\nexport type PositionPickerProps = {\n label?: string;\n value: Vector4Value;\n onChange: (v: Vector4Value) => void;\n /**\n * If set, the picker treats `value` as an offset from this entity reference\n * (e.g. \"shell\"). The Lua side must handle GET_POSITION + relativeTo by\n * returning (playerCoords - entityCoords) instead of world coords, and must\n * resolve the same reference when previewing.\n */\n relativeTo?: string;\n /** Optional NUI event name to fetch the current position. Defaults to GET_POSITION. */\n fetchEvent?: string;\n /** Optional NUI event name to draw a marker at the value. Defaults to PREVIEW_POSITION. */\n previewEvent?: string;\n /** Optional NUI event name to clear the preview marker. Defaults to STOP_PREVIEW_POSITION. */\n stopPreviewEvent?: string;\n description?: string;\n showHeading?: boolean;\n};\n\nconst ZERO: Vector4Value = { x: 0, y: 0, z: 0, w: 0 };\n\nexport function PositionPicker(props: PositionPickerProps) {\n const {\n label,\n value,\n onChange,\n relativeTo,\n fetchEvent = \"GET_POSITION\",\n previewEvent = \"PREVIEW_POSITION\",\n stopPreviewEvent = \"STOP_PREVIEW_POSITION\",\n description,\n showHeading = true,\n } = props;\n\n const theme = useMantineTheme();\n const color = theme.colors[theme.primaryColor][5];\n\n const [previewing, setPreviewing] = useState(false);\n const previewingRef = useRef(false);\n\n useEffect(() => {\n return () => {\n if (previewingRef.current) {\n fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {});\n }\n };\n }, [stopPreviewEvent, relativeTo]);\n\n const set = <K extends keyof Vector4Value>(key: K, val: number) => {\n const next = { ...value, [key]: val };\n onChange(next);\n if (previewingRef.current) {\n fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {});\n }\n };\n\n const grab = async () => {\n try {\n const resp = await fetchNui<Vector4Value | null>(fetchEvent, { relativeTo }, value);\n if (resp && typeof resp === \"object\") {\n const next: Vector4Value = {\n x: Number(resp.x ?? 0),\n y: Number(resp.y ?? 0),\n z: Number(resp.z ?? 0),\n w: Number(resp.w ?? 0),\n };\n onChange(next);\n if (previewingRef.current) {\n fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {});\n }\n }\n } catch {\n // ignore — Lua side may not be wired up yet\n }\n };\n\n const togglePreview = async () => {\n const nextState = !previewing;\n setPreviewing(nextState);\n previewingRef.current = nextState;\n if (nextState) {\n await fetchNui(previewEvent, { value, relativeTo }).catch(() => {});\n } else {\n await fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {});\n }\n };\n\n const reset = () => {\n onChange({ ...ZERO });\n if (previewingRef.current) {\n fetchNui(previewEvent, { value: ZERO, relativeTo }).catch(() => {});\n }\n };\n\n const numberStyles = {\n input: { textAlign: \"right\" as const, fontFamily: \"monospace\" },\n };\n\n return (\n <Flex\n direction=\"column\"\n gap=\"xxs\"\n p=\"xs\"\n style={{\n background: alpha(theme.colors.dark[5], 0.35),\n border: \"0.1vh solid rgba(255,255,255,0.05)\",\n borderRadius: theme.radius.xs,\n }}\n >\n {(label || description) && (\n <Flex justify=\"space-between\" align=\"center\" gap=\"xs\">\n <Flex direction=\"column\" gap={0} style={{ minWidth: 0 }}>\n {label && (\n <Flex align=\"center\" gap=\"xxs\">\n <MapPin size=\"1.4vh\" color={alpha(color, 0.7)} />\n <Text\n ff=\"Akrobat Bold\"\n size=\"xxs\"\n tt=\"uppercase\"\n lts=\"0.05em\"\n c=\"rgba(255,255,255,0.75)\"\n >\n {locale(label)}\n </Text>\n {relativeTo && (\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={alpha(color, 0.5)} lts=\"0.05em\">\n · {locale(\"RelativeTo\")} {relativeTo}\n </Text>\n )}\n </Flex>\n )}\n {description && (\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"dimmed\" lh={1.3}>\n {locale(description)}\n </Text>\n )}\n </Flex>\n\n <Flex gap=\"xxs\" style={{ flexShrink: 0 }}>\n <PickerButton tooltip={locale(\"GrabMyPosition\")} onClick={grab} color={color}>\n <Crosshair size=\"1.4vh\" color={color} />\n </PickerButton>\n <PickerButton\n tooltip={previewing ? locale(\"StopPreview\") : locale(\"PreviewInWorld\")}\n onClick={togglePreview}\n color={color}\n active={previewing}\n >\n {previewing ? (\n <EyeOff size=\"1.4vh\" color={color} />\n ) : (\n <Eye size=\"1.4vh\" color={alpha(color, 0.7)} />\n )}\n </PickerButton>\n <PickerButton tooltip={locale(\"Reset\")} onClick={reset} color=\"#ef4444\">\n <RotateCcw size=\"1.4vh\" color=\"#ef4444\" />\n </PickerButton>\n </Flex>\n </Flex>\n )}\n\n <Flex gap=\"xxs\">\n <NumberInput\n size=\"xs\"\n label=\"X\"\n value={value.x}\n onChange={(v) => set(\"x\", Number(v))}\n decimalScale={4}\n step={0.1}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n <NumberInput\n size=\"xs\"\n label=\"Y\"\n value={value.y}\n onChange={(v) => set(\"y\", Number(v))}\n decimalScale={4}\n step={0.1}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n <NumberInput\n size=\"xs\"\n label=\"Z\"\n value={value.z}\n onChange={(v) => set(\"z\", Number(v))}\n decimalScale={4}\n step={0.1}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n {showHeading && (\n <NumberInput\n size=\"xs\"\n label=\"W\"\n value={value.w}\n onChange={(v) => set(\"w\", Number(v))}\n decimalScale={2}\n step={1}\n min={0}\n max={360}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n )}\n </Flex>\n </Flex>\n );\n}\n\nfunction PickerButton({\n children,\n onClick,\n tooltip,\n color,\n active,\n}: {\n children: React.ReactNode;\n onClick: () => void;\n tooltip: string;\n color: string;\n active?: boolean;\n}) {\n const theme = useMantineTheme();\n return (\n <Tooltip label={tooltip} position=\"top\" withArrow>\n <motion.button\n onClick={onClick}\n whileHover={{ background: alpha(color, 0.18) }}\n whileTap={{ scale: 0.95 }}\n style={{\n background: active ? alpha(color, 0.22) : alpha(color, 0.08),\n border: `0.1vh solid ${alpha(color, active ? 0.5 : 0.3)}`,\n borderRadius: theme.radius.xs,\n padding: \"0.4vh 0.6vh\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {children}\n </motion.button>\n </Tooltip>\n );\n}\n\n// ── Compact row pieces ───────────────────────────────────────────────────────\n// Lower-friction siblings of <PositionPicker> for cases where you want a\n// scannable list of positions instead of a single full editor. Use these\n// when each row in a list should expose Set / Goto actions and just show\n// the resulting `vector4(x, y, z, w)` underneath — no inline number inputs.\n//\n// Lua side must register `GET_POSITION` (returns current world coords + heading)\n// and `GOTO_POSITION` (teleports the player to {x,y,z,w}). dirk_druglabsv2's\n// `src/client/shellEditor.lua` is the canonical example.\n\nfunction fmtV4(n: number) {\n return Number.isFinite(n) ? n.toFixed(2) : \"0.00\";\n}\n\n/** Read-only `vector4(x, y, z, w)` line in the same boxed style as PositionPicker. */\nexport function Vector4Display({ value }: { value: Vector4Value }) {\n const theme = useMantineTheme();\n return (\n <Flex\n align=\"center\"\n gap=\"xs\"\n p=\"xs\"\n style={{\n background: alpha(theme.colors.dark[5], 0.35),\n border: \"0.1vh solid rgba(255,255,255,0.05)\",\n borderRadius: theme.radius.xs,\n }}\n >\n <Text\n ff=\"monospace\"\n size=\"xxs\"\n c=\"rgba(255,255,255,0.85)\"\n style={{ flex: 1, letterSpacing: \"0.02em\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}\n >\n vector4({fmtV4(value.x)}, {fmtV4(value.y)}, {fmtV4(value.z)}, {fmtV4(value.w)})\n </Text>\n </Flex>\n );\n}\n\n/** Reusable styled action button used by Set/Goto/etc. */\nfunction Vector4ActionButton({\n icon,\n label,\n tooltip,\n onClick,\n color,\n compact,\n}: {\n icon: React.ReactNode;\n label: string;\n tooltip: string;\n onClick: () => void;\n color: string;\n compact?: boolean;\n}) {\n const theme = useMantineTheme();\n return (\n <Tooltip label={tooltip} position=\"top\" withArrow withinPortal zIndex={2000}>\n <motion.button\n onClick={onClick}\n whileHover={{ background: alpha(color, 0.18) }}\n whileTap={{ scale: 0.95 }}\n style={{\n background: alpha(color, 0.1),\n border: `0.1vh solid ${alpha(color, 0.35)}`,\n borderRadius: theme.radius.xs,\n padding: compact ? \"0.25vh 0.6vh\" : \"0.5vh 0.8vh\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: compact ? \"0.3vh\" : \"0.4vh\",\n }}\n >\n {icon}\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>\n {label}\n </Text>\n </motion.button>\n </Tooltip>\n );\n}\n\n/** Grabs the player's current world coords+heading via `GET_POSITION`. */\nexport function WorldPositionSetButton({\n value,\n onChange,\n compact,\n}: {\n value: Vector4Value;\n onChange: (v: Vector4Value) => void;\n compact?: boolean;\n}) {\n const theme = useMantineTheme();\n const color = theme.colors[theme.primaryColor][5];\n const grab = async () => {\n try {\n const resp = await fetchNui<Vector4Value | null>(\"GET_POSITION\", {}, value);\n if (!resp || typeof resp !== \"object\") return;\n onChange({\n x: Number(resp.x ?? 0),\n y: Number(resp.y ?? 0),\n z: Number(resp.z ?? 0),\n w: Number(resp.w ?? 0),\n });\n } catch {\n // Lua surfaces a notify on failure\n }\n };\n return (\n <Vector4ActionButton\n icon={<Crosshair size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\n label={locale(\"Set\")}\n tooltip={locale(\"SetWorldTooltip\")}\n onClick={grab}\n color={color}\n compact={compact}\n />\n );\n}\n\n/** Teleports the player to the stored coords via `GOTO_POSITION`. */\nexport function WorldPositionGotoButton({\n value,\n compact,\n}: {\n value: Vector4Value;\n compact?: boolean;\n}) {\n const theme = useMantineTheme();\n const color = theme.colors[theme.primaryColor][5];\n const goto = () => {\n fetchNui(\"GOTO_POSITION\", value).catch(() => {});\n };\n return (\n <Vector4ActionButton\n icon={<MapPin size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\n label={locale(\"Goto\")}\n tooltip={locale(\"GotoWorldTooltip\")}\n onClick={goto}\n color={color}\n compact={compact}\n />\n );\n}\n\n/** Red-tinted Delete button matching the Set/Goto styling. */\nexport function Vector4DeleteButton({\n onClick,\n compact,\n}: {\n onClick: () => void;\n compact?: boolean;\n}) {\n const color = \"#ef4444\";\n return (\n <Vector4ActionButton\n icon={<Trash2 size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\n label={locale(\"Delete\")}\n tooltip={locale(\"Delete\")}\n onClick={onClick}\n color={color}\n compact={compact}\n />\n );\n}\n\n","// Group / rank pickers backed by lib.framework on the Lua side.\n//\n// Two usage modes:\n//\n// Compound (group + rank pair):\n// <GroupSelect value={{ name: 'police', grade: 2 }} onChange={setValue} type=\"job\">\n// <GroupName />\n// <GroupRank />\n// </GroupSelect>\n//\n// Standalone (just the group name, no rank):\n// <GroupName value=\"police\" onChange={setName} type=\"job\" />\n//\n// <GroupRank> is compound-only — it reads the currently selected group\n// from context and lists that group's grades. Throws when used outside.\n\nimport { Select } from \"@mantine/core\";\nimport React, { createContext, useContext } from \"react\";\nimport {\n FrameworkGroup,\n selectAllGroups,\n useFrameworkGroups,\n} from \"../utils/useFrameworkGroups\";\nimport { locale } from \"../utils/locales\";\n\nexport type GroupValue = {\n name?: string;\n grade?: number;\n};\n\nexport type GroupType = \"job\" | \"gang\";\n\ntype GroupSelectContextShape = {\n value: GroupValue;\n onChange: (next: GroupValue) => void;\n type?: GroupType;\n};\n\nconst GroupSelectContext = createContext<GroupSelectContextShape | null>(null);\n\n// ── <GroupSelect> ────────────────────────────────────────────────────────────\n// Wrapper that owns the {name, grade} pair and exposes it to children via\n// context. Renders nothing of its own — children handle presentation. Pass\n// any layout props through `style` if needed (e.g. width).\n\nexport type GroupSelectProps = {\n value: GroupValue;\n onChange: (next: GroupValue) => void;\n type?: GroupType;\n children: React.ReactNode;\n style?: React.CSSProperties;\n};\n\nexport function GroupSelect({\n value,\n onChange,\n type,\n children,\n style,\n}: GroupSelectProps) {\n return (\n <GroupSelectContext.Provider value={{ value, onChange, type }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.4vh\", ...style }}>\n {children}\n </div>\n </GroupSelectContext.Provider>\n );\n}\n\n// ── filtering ────────────────────────────────────────────────────────────────\n\nfunction filterByType(\n jobs: FrameworkGroup[],\n gangs: FrameworkGroup[],\n type?: GroupType,\n): FrameworkGroup[] {\n if (type === \"job\") return jobs;\n if (type === \"gang\") return gangs;\n return [...jobs, ...gangs];\n}\n\n// ── <GroupName> ──────────────────────────────────────────────────────────────\n// Group dropdown. Works standalone (own value/onChange) OR inside\n// <GroupSelect> (reads context, ignores standalone props). When the name\n// changes inside compound mode, the grade is reset to undefined since the\n// previous grade key may not exist in the new group.\n\nexport type GroupNameProps = {\n value?: string;\n onChange?: (name: string) => void;\n type?: GroupType;\n label?: string;\n description?: string;\n placeholder?: string;\n size?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n};\n\nexport function GroupName(props: GroupNameProps) {\n const ctx = useContext(GroupSelectContext);\n const jobs = useFrameworkGroups((s) => s.jobs);\n const gangs = useFrameworkGroups((s) => s.gangs);\n\n const inCompound = ctx !== null;\n const currentValue = inCompound ? ctx!.value.name : props.value;\n const filterType = inCompound ? ctx!.type : props.type;\n\n const list = filterByType(jobs, gangs, filterType);\n\n // When type is undefined we render Mantine's grouped data shape so the\n // user sees Jobs / Gangs sections in the dropdown.\n const data =\n filterType === undefined\n ? [\n { group: locale(\"Jobs\") || \"Jobs\", items: jobs.map((g) => ({ value: g.name, label: g.label })) },\n { group: locale(\"Gangs\") || \"Gangs\", items: gangs.map((g) => ({ value: g.name, label: g.label })) },\n ]\n : list.map((g) => ({ value: g.name, label: g.label }));\n\n return (\n <Select\n label={props.label}\n description={props.description}\n placeholder={props.placeholder ?? (locale(\"SelectGroup\") || \"Select…\")}\n size={props.size ?? \"xs\"}\n disabled={props.disabled}\n style={props.style}\n data={data as any}\n value={currentValue ?? null}\n searchable\n onChange={(v) => {\n const name = v ?? \"\";\n if (inCompound) {\n // Reset grade when the group changes — old grade likely invalid.\n ctx!.onChange({ name: name || undefined, grade: undefined });\n } else if (props.onChange) {\n props.onChange(name);\n }\n }}\n allowDeselect={false}\n />\n );\n}\n\n// ── <GroupRank> ──────────────────────────────────────────────────────────────\n// Grade dropdown for the currently-selected group. Compound-only. Disabled\n// when no group is selected or the group has no grades.\n\nexport type GroupRankProps = {\n label?: string;\n description?: string;\n placeholder?: string;\n size?: string;\n style?: React.CSSProperties;\n};\n\nexport function GroupRank(props: GroupRankProps) {\n const ctx = useContext(GroupSelectContext);\n if (ctx === null) {\n throw new Error(\"<GroupRank> must be a child of <GroupSelect>\");\n }\n const jobs = useFrameworkGroups((s) => s.jobs);\n const gangs = useFrameworkGroups((s) => s.gangs);\n\n const all = [...jobs, ...gangs];\n const selectedGroup = all.find((g) => g.name === ctx.value.name) ?? null;\n const grades = selectedGroup?.grades ?? [];\n\n const data = grades.map((g) => ({\n value: String(g.grade),\n label: `${g.grade} — ${g.label || g.name}${g.isBoss ? \" (boss)\" : \"\"}`,\n }));\n\n return (\n <Select\n label={props.label}\n description={props.description}\n placeholder={props.placeholder ?? (locale(\"SelectGrade\") || \"Select grade…\")}\n size={props.size ?? \"xs\"}\n style={props.style}\n data={data}\n value={ctx.value.grade != null ? String(ctx.value.grade) : null}\n onChange={(v) => {\n ctx.onChange({\n ...ctx.value,\n grade: v != null ? Number(v) : undefined,\n });\n }}\n disabled={!selectedGroup || grades.length === 0}\n allowDeselect={false}\n />\n );\n}\n\n// Convenience namespace export so consumers can write\n// `<GroupSelect.Name>` / `<GroupSelect.Rank>` if they prefer.\nGroupSelect.Name = GroupName;\nGroupSelect.Rank = GroupRank;\n","import { createContext, useContext, type ReactNode } from \"react\";\r\nimport { Flex, Select, TextInput } from \"@mantine/core\";\r\nimport { INPUT_MAPPER_KEYS_BY_PRIMARY, INPUT_MAPPER_PRIMARY_OPTIONS } from \"@/utils/inputMapper\";\r\n\r\nexport type FiveMControls = {\r\n _type: string;\r\n _key: string;\r\n};\r\n\r\ntype KeyBindContextValue = {\r\n value: FiveMControls;\r\n onChange: (next: FiveMControls) => void;\r\n};\r\n\r\nconst KeyBindContext = createContext<KeyBindContextValue | null>(null);\r\n\r\nfunction useKeyBindContext(): KeyBindContextValue {\r\n const ctx = useContext(KeyBindContext);\r\n if (!ctx) {\r\n throw new Error(\"FiveMKeyBindInput.* must be used inside <FiveMKeyBindInput>\");\r\n }\r\n return ctx;\r\n}\r\n\r\ntype RootProps = {\r\n value: FiveMControls;\r\n onChange: (next: FiveMControls) => void;\r\n children: ReactNode;\r\n};\r\n\r\nfunction Root({ value, onChange, children }: RootProps) {\r\n return (\r\n <KeyBindContext.Provider value={{ value, onChange }}>\r\n <Flex gap=\"xs\" style={{ flex: 1 }}>\r\n {children}\r\n </Flex>\r\n </KeyBindContext.Provider>\r\n );\r\n}\r\n\r\ntype CategoryProps = {\r\n label?: string;\r\n};\r\n\r\nfunction Category({ label = \"Primary\" }: CategoryProps) {\r\n const { value, onChange } = useKeyBindContext();\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n value={value._type}\r\n data={[...INPUT_MAPPER_PRIMARY_OPTIONS]}\r\n onChange={(nextType) => {\r\n if (!nextType) return;\r\n\r\n const keyOptions = INPUT_MAPPER_KEYS_BY_PRIMARY[nextType] ?? [];\r\n const hasCurrentKey = keyOptions.includes(value._key);\r\n const nextKey = hasCurrentKey ? value._key : (keyOptions[0] ?? value._key);\r\n\r\n onChange({\r\n ...value,\r\n _type: nextType,\r\n _key: nextKey,\r\n });\r\n }}\r\n searchable\r\n allowDeselect={false}\r\n />\r\n );\r\n}\r\n\r\ntype KeyProps = {\r\n label?: string;\r\n};\r\n\r\nfunction Key({ label = \"Key\" }: KeyProps) {\r\n const { value, onChange } = useKeyBindContext();\r\n\r\n const keyOptions = INPUT_MAPPER_KEYS_BY_PRIMARY[value._type] ?? [];\r\n\r\n if (keyOptions.length === 0) {\r\n return (\r\n <TextInput\r\n label={label}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n value={value._key}\r\n onChange={(e) => onChange({ ...value, _key: e.currentTarget.value })}\r\n placeholder=\"Type key value\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n value={value._key}\r\n data={keyOptions}\r\n onChange={(nextKey) => {\r\n if (!nextKey) return;\r\n onChange({ ...value, _key: nextKey });\r\n }}\r\n searchable\r\n allowDeselect={false}\r\n />\r\n );\r\n}\r\n\r\nexport const FiveMKeyBindInput = Object.assign(Root, {\r\n Category,\r\n Key,\r\n});\r\n","// FiveM control-id pickers. These are for the numeric control IDs you pass\n// to IsControlPressed / DisableControlAction / EnableControlAction (the\n// ones documented at https://docs.fivem.net/docs/game-references/controls/),\n// not for keybind primary keys — for those use FiveMKeyBindInput.\n//\n// Two flavours:\n// • <ControlSelect> — single id, returns number\n// • <ControlMultiSelect> — array of ids, returns number[]\n//\n// Both accept arbitrary Mantine Select / MultiSelect props so callers can\n// style/portal/disable as they need. Custom (uncatalogued) IDs the data\n// already contains in `value` are still rendered — they just appear in a\n// \"Custom\" group so the user can see and remove them.\n\nimport { MultiSelect, Select } from \"@mantine/core\";\nimport type { MultiSelectProps, SelectProps } from \"@mantine/core\";\nimport {\n GTA_CONTROLS,\n GTA_CONTROL_GROUP_ORDER,\n formatGtaControl,\n type GtaControl,\n type GtaControlGroup,\n} from \"@/utils/gtaControls\";\n\n// Build the grouped Mantine data once per module-load. Each group entry is\n// `{ group: name, items: [{ value, label }, ...] }`.\nfunction buildGroupedData(extraIds: number[] = []) {\n // Dedupe by id — Mantine throws \"Duplicate options\" if two entries share\n // the same value. First occurrence wins so the catalogue order in\n // GTA_CONTROLS stays authoritative.\n const groups = new Map<GtaControlGroup, GtaControl[]>();\n const seen = new Set<number>();\n for (const c of GTA_CONTROLS) {\n if (seen.has(c.id)) continue;\n seen.add(c.id);\n if (!groups.has(c.group)) groups.set(c.group, []);\n groups.get(c.group)!.push(c);\n }\n\n const data = GTA_CONTROL_GROUP_ORDER.flatMap((g) => {\n const items = groups.get(g);\n if (!items || items.length === 0) return [];\n return [\n {\n group: g,\n items: items.map((c) => ({\n value: String(c.id),\n label: formatGtaControl(c.id),\n })),\n },\n ];\n });\n\n // Surface custom (uncatalogued) ids in a \"Custom\" group so they're visible\n // in the dropdown rather than disappearing. Without this, MultiSelect drops\n // the chip silently when the value isn't in `data`.\n const knownIds = new Set(GTA_CONTROLS.map((c) => c.id));\n const customs = extraIds.filter((id) => !knownIds.has(id));\n if (customs.length > 0) {\n // The \"Custom\" group label is just a heading for unrecognised IDs the\n // caller has in their data — it's not a real GtaControlGroup, so cast\n // through unknown.\n data.push({\n group: \"Custom\" as unknown as GtaControlGroup,\n items: customs.map((id) => ({ value: String(id), label: `Control ${id}` })),\n });\n }\n\n return data;\n}\n\n// ── Single-control Select ──────────────────────────────────────────────────\n\nexport type ControlSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\n value: number | null | undefined;\n onChange: (id: number | null) => void;\n};\n\nexport function ControlSelect({\n value,\n onChange,\n label = \"Control\",\n size = \"xs\",\n searchable = true,\n ...rest\n}: ControlSelectProps) {\n const data = buildGroupedData(value != null ? [value] : []);\n return (\n <Select\n label={label}\n size={size}\n searchable={searchable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching controls\"\n {...rest}\n data={data}\n value={value != null ? String(value) : null}\n onChange={(v) => onChange(v == null ? null : Number(v))}\n />\n );\n}\n\n// ── Multi-control MultiSelect ──────────────────────────────────────────────\n\nexport type ControlMultiSelectProps = Omit<MultiSelectProps, \"data\" | \"value\" | \"onChange\"> & {\n value: number[];\n onChange: (ids: number[]) => void;\n};\n\nexport function ControlMultiSelect({\n value,\n onChange,\n label = \"Controls\",\n size = \"xs\",\n searchable = true,\n ...rest\n}: ControlMultiSelectProps) {\n const data = buildGroupedData(value);\n return (\n <MultiSelect\n label={label}\n size={size}\n searchable={searchable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching controls\"\n {...rest}\n data={data}\n value={value.map(String)}\n onChange={(vals) => onChange(vals.map((v) => Number(v)).filter((n) => Number.isFinite(n)))}\n />\n );\n}\n","import { alpha, Loader, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { Check, X } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\n\r\ntype SaveState = \"idle\" | \"pending\" | \"success\" | \"error\";\r\n\r\nexport function AsyncSaveButton({\r\n onSave,\r\n color,\r\n label = \"Save Changes\",\r\n style,\r\n}: {\r\n onSave: () => Promise<any>;\r\n color: string;\r\n label?: string;\r\n style?: React.CSSProperties;\r\n}) {\r\n const theme = useMantineTheme();\r\n const [state, setState] = useState<SaveState>(\"idle\");\r\n\r\n const handleClick = async () => {\r\n if (state === \"pending\") return;\r\n setState(\"pending\");\r\n try {\r\n const result = await onSave();\r\n setState(result?.success === false ? \"error\" : \"success\");\r\n } catch {\r\n setState(\"error\");\r\n }\r\n setTimeout(() => setState(\"idle\"), 2000);\r\n };\r\n\r\n const c = state === \"error\" ? \"#ef4444\" : color;\r\n\r\n return (\r\n <motion.button\r\n onClick={handleClick}\r\n disabled={state === \"pending\"}\r\n whileHover={state === \"pending\" ? {} : { background: alpha(c, 0.25) }}\r\n whileTap={state === \"pending\" ? {} : { scale: 0.98 }}\r\n style={{\r\n background: alpha(c, 0.14),\r\n border: `0.1vh solid ${alpha(c, 0.4)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: `${theme.spacing.xxs} ${theme.spacing.xs}`,\r\n cursor: state === \"pending\" ? \"default\" : \"pointer\",\r\n display: \"flex\", alignItems: \"center\",\r\n justifyContent: \"center\", gap: theme.spacing.xxs,\r\n transition: \"background 0.2s, border-color 0.2s\",\r\n alignSelf: \"flex-end\",\r\n ...style,\r\n }}\r\n >\r\n {state === \"pending\"\r\n ? <Loader size=\"1.4vh\" color={c} type=\"oval\" />\r\n : state === \"error\"\r\n ? <X size=\"1.4vh\" color={c} />\r\n : <Check size=\"1.4vh\" color={c} />\r\n }\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.06em\" c={c}>\r\n {state === \"success\" ? \"Saved!\" : state === \"error\" ? \"Failed!\" : label}\r\n </Text>\r\n </motion.button>\r\n );\r\n}\r\n","import { Flex, Text } from \"@mantine/core\";\r\nimport { locale } from \"@/utils\";\r\nimport { LucideProps } from \"lucide-react\";\r\nimport { ComponentType } from \"react\";\r\n\r\nexport type AdminPageTitleProps = {\r\n title: string;\r\n icon: ComponentType<LucideProps>;\r\n color: string;\r\n};\r\n\r\nexport function AdminPageTitle(props: AdminPageTitleProps) {\r\n return (\r\n <Flex align=\"center\" gap=\"xs\">\r\n <props.icon color={props.color} />\r\n <Text ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.1em\" size=\"sm\" c=\"rgba(255,255,255,0.6)\">\r\n {locale(props.title)}\r\n </Text>\r\n </Flex>\r\n );\r\n}\r\n","// Shared \"label + description + Switch on the right\" panel used across\n// configurators (BasicSection, BackstoriesSection, ThemeOverrideSection, …).\n// Centralising it here means a single visual style — dark[5] tinted\n// background, faint white outline, primary-colored track when on — instead of\n// each consumer hand-rolling slightly different borders/colours.\n//\n// Variants:\n// • default — tall row with description, used at the top of a tab/section\n// • compact — smaller padding + sm switch, for nested editor cards (e.g.\n// waypoint useNavmesh inside the SceneEditor walk-path block)\n//\n// `thumbIcon` supports the Lock-on-thumb pattern used by gated toggles.\n\nimport { alpha, Flex, Switch, Text, useMantineTheme } from \"@mantine/core\";\nimport { ReactNode } from \"react\";\n\nexport type SwitchPanelProps = {\n label: ReactNode;\n description?: ReactNode;\n checked: boolean;\n onChange: (v: boolean) => void;\n disabled?: boolean;\n /** Icon rendered on the Switch's thumb (e.g. a Lock when locked). */\n thumbIcon?: ReactNode;\n /** Compact variant — used for nested rows inside an editor card. */\n compact?: boolean;\n};\n\nexport function SwitchPanel({\n label,\n description,\n checked,\n onChange,\n disabled,\n thumbIcon,\n compact,\n}: SwitchPanelProps) {\n const theme = useMantineTheme();\n const pc = theme.colors[theme.primaryColor];\n\n const bg = compact\n ? alpha(theme.colors.dark[6], 0.5)\n : alpha(theme.colors.dark[5], 0.35);\n const border = compact\n ? \"0.1vh solid rgba(255,255,255,0.04)\"\n : \"0.1vh solid rgba(255,255,255,0.05)\";\n\n return (\n <Flex\n justify=\"space-between\"\n align=\"center\"\n px={compact ? \"xs\" : \"xs\"}\n py={compact ? \"xxs\" : \"xs\"}\n style={{\n background: bg,\n border,\n borderRadius: theme.radius.xs,\n opacity: disabled ? 0.5 : 1,\n }}\n >\n <Flex direction=\"column\" gap=\"xxs\" style={{ flex: 1, minWidth: 0 }}>\n {typeof label === \"string\" ? (\n compact ? (\n <Text\n ff=\"Akrobat Bold\"\n size=\"xxs\"\n c=\"rgba(255,255,255,0.85)\"\n tt=\"uppercase\"\n lts=\"0.05em\"\n >\n {label}\n </Text>\n ) : (\n <Text ff=\"Akrobat Bold\" size=\"xs\" c=\"rgba(255,255,255,0.85)\">\n {label}\n </Text>\n )\n ) : (\n label\n )}\n {description && (\n typeof description === \"string\" ? (\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={compact ? \"rgba(255,255,255,0.4)\" : \"rgba(255,255,255,0.45)\"}>\n {description}\n </Text>\n ) : (\n description\n )\n )}\n </Flex>\n <Switch\n checked={checked}\n disabled={disabled}\n onChange={(e) => onChange(e.currentTarget.checked)}\n size={compact ? \"sm\" : \"md\"}\n thumbIcon={thumbIcon}\n styles={{\n track: {\n background: checked ? alpha(pc[6], 0.4) : \"rgba(255,255,255,0.08)\",\n borderColor: checked ? alpha(pc[6], 0.6) : \"rgba(255,255,255,0.1)\",\n },\n }}\n />\n </Flex>\n );\n}\n","import { ActionIcon, Flex, Stack, Text } from \"@mantine/core\";\nimport { ChevronDown, ChevronUp, FlaskConical } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { isEnvBrowser } from \"../../utils/misc\";\n\nexport interface TestBedItem {\n key: string;\n label: string;\n active: boolean;\n onToggle: (next: boolean) => void;\n}\n\nexport type TestBedPlacement = \"top-left\" | \"top-center\" | \"top-right\";\n\nexport interface TestBedProps {\n items: TestBedItem[];\n /** localStorage key used to persist toggled state across reloads. Default: \"testbed:open-state\". */\n storageKey?: string;\n /** Disable localStorage persistence entirely. Default: false. */\n disablePersistence?: boolean;\n /** Header label shown in the collapsed pill. Default: \"TestBed\". */\n title?: string;\n /** Where to anchor the floating panel. Default: \"top-left\". */\n placement?: TestBedPlacement;\n}\n\nconst placementStyle = (placement: TestBedPlacement): React.CSSProperties => {\n switch (placement) {\n case \"top-center\":\n return { top: \"1vh\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"top-right\":\n return { top: \"1vh\", right: \"1vh\" };\n case \"top-left\":\n default:\n return { top: \"1vh\", left: \"1vh\" };\n }\n};\n\nconst loadPersistedState = (storageKey: string): Record<string, boolean> => {\n try {\n const raw = localStorage.getItem(storageKey);\n return raw ? JSON.parse(raw) : {};\n } catch {\n return {};\n }\n};\n\nconst savePersistedState = (storageKey: string, state: Record<string, boolean>) => {\n try {\n localStorage.setItem(storageKey, JSON.stringify(state));\n } catch {}\n};\n\nexport function TestBed({\n items,\n storageKey = \"testbed:open-state\",\n disablePersistence = false,\n title = \"TestBed\",\n placement = \"top-left\",\n}: TestBedProps) {\n const [open, setOpen] = useState(false);\n const itemsRef = useRef(items);\n itemsRef.current = items;\n\n useEffect(() => {\n if (!isEnvBrowser() || disablePersistence) return;\n const persisted = loadPersistedState(storageKey);\n itemsRef.current.forEach((item) => {\n const persistedValue = persisted[item.key];\n if (typeof persistedValue === \"boolean\" && persistedValue !== item.active) {\n item.onToggle(persistedValue);\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!isEnvBrowser()) return null;\n\n const toggle = (item: TestBedItem) => {\n const next = !item.active;\n item.onToggle(next);\n if (!disablePersistence) {\n const persisted = loadPersistedState(storageKey);\n persisted[item.key] = next;\n savePersistedState(storageKey, persisted);\n }\n };\n\n return (\n <div\n style={{\n position: \"fixed\",\n ...placementStyle(placement),\n zIndex: 2147483647,\n pointerEvents: \"auto\",\n fontSize: \"1.4vh\",\n }}\n >\n <Flex\n align=\"center\"\n gap=\"xs\"\n px=\"sm\"\n py=\"xs\"\n onClick={() => setOpen((v) => !v)}\n style={{\n cursor: \"pointer\",\n background: \"rgba(0,0,0,0.55)\",\n backdropFilter: \"blur(0.6vh)\",\n WebkitBackdropFilter: \"blur(0.6vh)\",\n border: \"0.1vh solid rgba(255,255,255,0.1)\",\n borderRadius: \"var(--mantine-radius-sm)\",\n userSelect: \"none\",\n minWidth: \"16vh\",\n }}\n >\n <FlaskConical size={14} color=\"rgba(255,255,255,0.7)\" />\n <Text\n size=\"xs\"\n ff=\"Akrobat Bold\"\n tt=\"uppercase\"\n lts=\"0.08em\"\n c=\"rgba(255,255,255,0.85)\"\n style={{ flex: 1 }}\n >\n {title}\n </Text>\n <ActionIcon size=\"xs\" variant=\"transparent\" c=\"rgba(255,255,255,0.6)\">\n {open ? <ChevronUp size={14} /> : <ChevronDown size={14} />}\n </ActionIcon>\n </Flex>\n\n {open && (\n <Stack\n gap={4}\n mt=\"xxs\"\n p=\"xs\"\n style={{\n background: \"rgba(0,0,0,0.55)\",\n backdropFilter: \"blur(0.6vh)\",\n WebkitBackdropFilter: \"blur(0.6vh)\",\n border: \"0.1vh solid rgba(255,255,255,0.1)\",\n borderRadius: \"var(--mantine-radius-sm)\",\n minWidth: \"16vh\",\n maxHeight: \"80vh\",\n overflowY: \"auto\",\n }}\n >\n {items.map((item) => (\n <Flex\n key={item.key}\n align=\"center\"\n justify=\"space-between\"\n gap=\"xs\"\n px=\"xs\"\n py=\"xxs\"\n onClick={() => toggle(item)}\n style={{\n cursor: \"pointer\",\n borderRadius: \"var(--mantine-radius-xs)\",\n background: item.active ? \"rgba(245,158,11,0.15)\" : \"rgba(255,255,255,0.03)\",\n border: `0.1vh solid ${item.active ? \"rgba(245,158,11,0.35)\" : \"rgba(255,255,255,0.05)\"}`,\n userSelect: \"none\",\n }}\n >\n <Text\n size=\"xs\"\n ff=\"Akrobat Bold\"\n c={item.active ? \"#f59e0b\" : \"rgba(255,255,255,0.75)\"}\n >\n {item.label}\n </Text>\n <Text\n size=\"xxs\"\n ff=\"Akrobat Bold\"\n tt=\"uppercase\"\n lts=\"0.06em\"\n c={item.active ? \"#f59e0b\" : \"rgba(255,255,255,0.35)\"}\n >\n {item.active ? \"On\" : \"Off\"}\n </Text>\n </Flex>\n ))}\n </Stack>\n )}\n </div>\n );\n}\n","// Per-resource theme override editor. Rendered inside a consumer resource's\n// configurator (e.g. dirk_multichar, dirk_fishing) to let admins decouple\n// that resource's theme from dirk_lib's global appearance.\n//\n// Data shape (driven by a schema block on the consumer side):\n// theme: {\n// useOverride: boolean,\n// primaryColor: string, // \"dirk\" | \"custom\" | mantine palette name\n// primaryShade: 0..9,\n// customTheme: string[10], // hex stops\n// }\n//\n// The override flag goes through the same scriptConfig path as everything\n// else — the resource's GET_SETTINGS callback is responsible for deciding\n// whether to push the global theme keys or the override keys to NUI on\n// hydration. DirkProvider's UPDATE_DIRK_LIB_SETTINGS listener gates global\n// pushes when the consumer has its own override active (see useSettings).\n//\n// Reset-to-global = flip the override switch off. The saved palette stays so\n// admins can re-enable without re-picking colours. A separate wipe trash icon\n// nukes the local palette back to the schema default.\n\nimport { generateColors } from \"@mantine/colors-generator\";\nimport {\n ActionIcon,\n ColorInput,\n Flex,\n NumberInput,\n Popover,\n Select,\n Switch,\n Text,\n useMantineTheme,\n} from \"@mantine/core\";\nimport { Palette, RotateCcw } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useFormActions, useFormField } from \"@/hooks/useForm\";\nimport { locale } from \"@/utils/locales\";\nimport { AdminPageTitle } from \"./AdminPageTitle\";\nimport { SwitchPanel } from \"./SwitchPanel\";\n\nconst MANTINE_COLOR_OPTIONS = [\n \"dirk\",\n \"red\",\n \"pink\",\n \"grape\",\n \"violet\",\n \"indigo\",\n \"blue\",\n \"cyan\",\n \"teal\",\n \"green\",\n \"lime\",\n \"yellow\",\n \"orange\",\n].map((value) => ({ value, label: value }));\n\nexport type ThemeOverrideValue = {\n useOverride: boolean;\n primaryColor: string;\n primaryShade: number;\n customTheme: string[];\n};\n\nconst DEFAULT_PALETTE: string[] = [\n \"#f0f4ff\",\n \"#d9e3ff\",\n \"#bfcfff\",\n \"#a6bbff\",\n \"#8ca7ff\",\n \"#7393ff\",\n \"#5a7fff\",\n \"#406bff\",\n \"#2547ff\",\n \"#0b33ff\",\n];\n\nconst DEFAULT_VALUE: ThemeOverrideValue = {\n useOverride: false,\n primaryColor: \"dirk\",\n primaryShade: 5,\n customTheme: DEFAULT_PALETTE,\n};\n\nfunction GroupLabel({ label }: { label: string }) {\n return (\n <Flex align=\"center\" gap=\"xs\" mt=\"xxs\">\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.07em\" c=\"rgba(255,255,255,0.2)\">\n {label}\n </Text>\n <div style={{ flex: 1, height: \"0.05vh\", background: \"rgba(255,255,255,0.06)\" }} />\n </Flex>\n );\n}\n\nexport type ThemeOverrideSectionProps = {\n /**\n * Schema path the consumer stores its override block under. Defaults to\n * \"theme\" — matches the recommended schema key.\n */\n schemaKey?: string;\n /**\n * Optional title for the AdminPageTitle. Defaults to the localized\n * \"Theme\" string with a fallback.\n */\n title?: string;\n};\n\nexport function ThemeOverrideSection({\n schemaKey = \"theme\",\n title,\n}: ThemeOverrideSectionProps) {\n const mantineTheme = useMantineTheme();\n const color = mantineTheme.colors[mantineTheme.primaryColor][5];\n\n const raw = useFormField<Record<string, ThemeOverrideValue>>(schemaKey as never) as\n | Partial<ThemeOverrideValue>\n | undefined;\n // Normalise — the form field could be undefined at first paint, and any of\n // the inner fields could be missing if the schema default block hasn't\n // fully hydrated. Merge against DEFAULT_VALUE so the inputs always have\n // something to render.\n const value: ThemeOverrideValue = {\n useOverride: raw?.useOverride ?? DEFAULT_VALUE.useOverride,\n primaryColor: raw?.primaryColor ?? DEFAULT_VALUE.primaryColor,\n primaryShade: raw?.primaryShade ?? DEFAULT_VALUE.primaryShade,\n customTheme:\n Array.isArray(raw?.customTheme) && raw!.customTheme.length === 10\n ? (raw!.customTheme as string[])\n : DEFAULT_VALUE.customTheme,\n };\n\n const { setValue } = useFormActions<Record<string, ThemeOverrideValue>>();\n const set = <K extends keyof ThemeOverrideValue>(key: K, val: ThemeOverrideValue[K]) =>\n setValue(schemaKey as never, { ...value, [key]: val } as never);\n\n const useCustom = value.primaryColor === \"custom\";\n const editable = value.useOverride;\n\n const setSwatch = (index: number, hex: string) => {\n const next = [...value.customTheme];\n next[index] = hex;\n set(\"customTheme\", next);\n };\n\n const generateFromBase = (hex: string) => {\n try {\n const generated = generateColors(hex);\n set(\"customTheme\", generated as unknown as string[]);\n } catch {\n // invalid colour — ignore\n }\n };\n\n const resetPalette = () => set(\"customTheme\", DEFAULT_PALETTE);\n\n return (\n <Flex\n direction=\"column\"\n gap=\"xs\"\n p=\"sm\"\n style={{ flex: 1, minHeight: 0, overflowY: \"auto\" }}\n >\n <AdminPageTitle\n icon={Palette}\n title={title || locale(\"Theme\") || \"Theme\"}\n color={color}\n />\n\n {/* Master toggle — flipping this off resets the resource to follow the\n global dirk_lib theme. The saved palette is preserved so re-enabling\n doesn't lose work. Uses the shared SwitchPanel so the outline + Switch\n styling match every other configurator section. */}\n <SwitchPanel\n label={locale(\"OverrideGlobalTheme\") || \"Override global theme\"}\n description={\n locale(\"OverrideGlobalThemeDesc\") ||\n \"When on, this resource uses its own primary colour and palette instead of dirk_lib's. Turn off to fall back to the global theme — your custom palette is kept.\"\n }\n checked={value.useOverride}\n onChange={(v) => set(\"useOverride\", v)}\n />\n\n <div\n style={{\n opacity: editable ? 1 : 0.4,\n pointerEvents: editable ? \"auto\" : \"none\",\n transition: \"opacity 0.15s\",\n }}\n >\n <GroupLabel label={locale(\"PrimaryColor\") || \"Primary Colour\"} />\n\n <Switch\n label={locale(\"UseCustomPalette\") || \"Use custom palette\"}\n size=\"md\"\n mt=\"xs\"\n checked={useCustom}\n onChange={(e) => set(\"primaryColor\", e.currentTarget.checked ? \"custom\" : \"dirk\")}\n styles={{\n label: {\n fontFamily: \"Akrobat Bold\",\n fontSize: \"0.65em\",\n letterSpacing: \"0.06em\",\n textTransform: \"uppercase\",\n color: \"rgba(255,255,255,0.35)\",\n },\n }}\n />\n\n <Flex gap=\"xs\" mt=\"xs\">\n {!useCustom && (\n <Select\n label={locale(\"MantinePalette\") || \"Mantine palette\"}\n size=\"xs\"\n style={{ flex: 1 }}\n value={value.primaryColor}\n data={MANTINE_COLOR_OPTIONS}\n allowDeselect={false}\n onChange={(v) => v && set(\"primaryColor\", v)}\n />\n )}\n <NumberInput\n label={locale(\"Shade\") || \"Shade\"}\n size=\"xs\"\n style={{ flex: 1 }}\n min={0}\n max={9}\n value={value.primaryShade}\n onChange={(v) => set(\"primaryShade\", Number(v))}\n />\n </Flex>\n\n {useCustom && (\n <>\n <Flex align=\"center\" justify=\"space-between\" mt=\"sm\">\n <Text\n ff=\"Akrobat Bold\"\n size=\"xxs\"\n tt=\"uppercase\"\n lts=\"0.07em\"\n c=\"rgba(255,255,255,0.2)\"\n >\n {locale(\"CustomPalette\") || \"Custom palette\"}\n </Text>\n <ActionIcon\n size=\"sm\"\n variant=\"subtle\"\n onClick={resetPalette}\n title={locale(\"ResetPalette\") || \"Reset palette\"}\n >\n <RotateCcw size=\"1.4vh\" />\n </ActionIcon>\n </Flex>\n\n <ColorInput\n label={locale(\"BaseColor\") || \"Base colour\"}\n size=\"xs\"\n value={value.customTheme[value.primaryShade] ?? value.customTheme[5] ?? \"#000000\"}\n onChange={generateFromBase}\n eyeDropperIcon={<></>}\n />\n\n <Flex gap=\"xxs\" mt=\"xxs\">\n {value.customTheme.map((swatch, i) => (\n <SwatchTile\n key={i}\n index={i}\n value={swatch}\n isPrimary={i === value.primaryShade}\n onChange={(v) => setSwatch(i, v)}\n />\n ))}\n </Flex>\n </>\n )}\n </div>\n </Flex>\n );\n}\n\nfunction SwatchTile({\n index,\n value,\n isPrimary,\n onChange,\n}: {\n index: number;\n value: string;\n isPrimary: boolean;\n onChange: (v: string) => void;\n}) {\n const [opened, setOpened] = useState(false);\n return (\n <Popover opened={opened} onChange={setOpened} position=\"bottom\" withArrow zIndex={10000}>\n <Popover.Target>\n <button\n onClick={() => setOpened((o) => !o)}\n title={`${index} · ${value}`}\n style={{\n flex: 1,\n aspectRatio: \"1 / 1\",\n background: value,\n border: isPrimary\n ? \"0.2vh solid rgba(255,255,255,0.85)\"\n : \"0.1vh solid rgba(255,255,255,0.15)\",\n borderRadius: \"0.4vh\",\n cursor: \"pointer\",\n padding: 0,\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"flex-end\",\n position: \"relative\",\n }}\n >\n <span\n style={{\n fontFamily: \"Akrobat Bold\",\n fontSize: \"0.9vh\",\n lineHeight: 1,\n padding: \"0.2vh 0.3vh\",\n color: \"rgba(0,0,0,0.55)\",\n background: \"rgba(255,255,255,0.55)\",\n borderRadius: \"0.25vh\",\n margin: \"0.2vh\",\n }}\n >\n {index}\n </span>\n </button>\n </Popover.Target>\n <Popover.Dropdown p=\"xs\">\n <ColorInput\n size=\"xs\"\n value={value}\n onChange={onChange}\n format=\"hex\"\n eyeDropperIcon={<></>}\n />\n </Popover.Dropdown>\n </Popover>\n );\n}\n","// Curated list of GTA V AnimPostFX screen effects passed to AnimpostfxPlay().\n// Sourced from https://docs.altv.mp/gta/articles/references/animpost-fx.html\n// plus a handful of community-known effects (ULP_*, common cutscene overlays)\n// that ship in scene defaults across dirk_multichar / fishing / drug labs.\n//\n// Effects are grouped by what they're commonly used for so a picker can\n// present them with section headings instead of one giant alphabetical list.\n// Add new entries by appending to the right group — the picker reflows\n// automatically.\n\nexport type GtaAnimPostFx = {\n /** Effect name passed to AnimpostfxPlay(). Case-sensitive. */\n name: string;\n /** Friendly label for UI display. Defaults to the name if absent. */\n label?: string;\n /** Group used for ordering and section headers. */\n group: GtaAnimPostFxGroup;\n};\n\nexport type GtaAnimPostFxGroup =\n | \"Wake Up / Sleep\"\n | \"Character Switch\"\n | \"Cinematic Push-In\"\n | \"Death / Fail\"\n | \"Heist\"\n | \"Minigame\"\n | \"Drug / Trip\"\n | \"Color Filter / Tint\"\n | \"Multiplayer\"\n | \"Misc\";\n\nexport const GTA_ANIM_POST_FX_GROUP_ORDER: GtaAnimPostFxGroup[] = [\n \"Wake Up / Sleep\",\n \"Character Switch\",\n \"Cinematic Push-In\",\n \"Death / Fail\",\n \"Heist\",\n \"Minigame\",\n \"Drug / Trip\",\n \"Color Filter / Tint\",\n \"Multiplayer\",\n \"Misc\",\n];\n\nexport const GTA_ANIM_POST_FX: GtaAnimPostFx[] = [\n // ── Wake Up / Sleep (community-known; not in altV docs) ────────────────────\n { name: \"ULP_PlayerWakeUp\", label: \"Player Wake Up\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndNeutral\", label: \"Minigame End — Neutral\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndFranklin\", label: \"Minigame End — Franklin\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndMichael\", label: \"Minigame End — Michael\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndTrevor\", label: \"Minigame End — Trevor\", group: \"Wake Up / Sleep\" },\n\n // ── Character Switch (Franklin / Michael / Trevor / Neutral variants) ─────\n { name: \"SwitchHUDIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDOut\", group: \"Character Switch\" },\n { name: \"SwitchHUDFranklinIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDFranklinOut\", group: \"Character Switch\" },\n { name: \"SwitchHUDMichaelIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDMichaelOut\", group: \"Character Switch\" },\n { name: \"SwitchHUDTrevorIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDTrevorOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenFranklin\", group: \"Character Switch\" },\n { name: \"SwitchOpenFranklinIn\", group: \"Character Switch\" },\n { name: \"SwitchOpenFranklinOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenMichaelIn\", group: \"Character Switch\" },\n { name: \"SwitchOpenMichaelMid\", group: \"Character Switch\" },\n { name: \"SwitchOpenMichaelOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenTrevorIn\", group: \"Character Switch\" },\n { name: \"SwitchOpenTrevorOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenNeutralFIB5\", group: \"Character Switch\" },\n { name: \"SwitchOpenNeutralOutHeist\", group: \"Character Switch\" },\n { name: \"SwitchSceneFranklin\", group: \"Character Switch\" },\n { name: \"SwitchSceneMichael\", group: \"Character Switch\" },\n { name: \"SwitchSceneNeutral\", group: \"Character Switch\" },\n { name: \"SwitchSceneTrevor\", group: \"Character Switch\" },\n { name: \"SwitchShortFranklinIn\", group: \"Character Switch\" },\n { name: \"SwitchShortFranklinMid\", group: \"Character Switch\" },\n { name: \"SwitchShortMichaelIn\", group: \"Character Switch\" },\n { name: \"SwitchShortMichaelMid\", group: \"Character Switch\" },\n { name: \"SwitchShortNeutralIn\", group: \"Character Switch\" },\n { name: \"SwitchShortNeutralMid\", group: \"Character Switch\" },\n { name: \"SwitchShortTrevorIn\", group: \"Character Switch\" },\n { name: \"SwitchShortTrevorMid\", group: \"Character Switch\" },\n { name: \"switch_cam_1\", group: \"Character Switch\" },\n { name: \"switch_cam_2\", group: \"Character Switch\" },\n\n // ── Cinematic Push-In (slow zoom intro to a character) ────────────────────\n { name: \"CamPushInFranklin\", group: \"Cinematic Push-In\" },\n { name: \"CamPushInMichael\", group: \"Cinematic Push-In\" },\n { name: \"CamPushInTrevor\", group: \"Cinematic Push-In\" },\n { name: \"CamPushInNeutral\", group: \"Cinematic Push-In\" },\n { name: \"BeastIntroScene\", label: \"Beast Intro\", group: \"Cinematic Push-In\" },\n { name: \"BeastLaunch\", group: \"Cinematic Push-In\" },\n { name: \"BeastTransition\", group: \"Cinematic Push-In\" },\n\n // ── Death / Fail (red tint, slow-mo blur) ─────────────────────────────────\n { name: \"DeathFailNeutralIn\", group: \"Death / Fail\" },\n { name: \"DeathFailFranklinIn\", group: \"Death / Fail\" },\n { name: \"DeathFailMichaelIn\", group: \"Death / Fail\" },\n { name: \"DeathFailTrevorIn\", group: \"Death / Fail\" },\n { name: \"DeathFailMPIn\", label: \"Death Fail — MP\", group: \"Death / Fail\" },\n { name: \"DeathFailMPDark\", label: \"Death Fail — MP Dark\", group: \"Death / Fail\" },\n { name: \"DeathFailOut\", group: \"Death / Fail\" },\n { name: \"Rampage\", group: \"Death / Fail\" },\n { name: \"RampageOut\", group: \"Death / Fail\" },\n\n // ── Heist (celebration / locate / pass) ───────────────────────────────────\n { name: \"HeistCelebEnd\", group: \"Heist\" },\n { name: \"HeistCelebPass\", group: \"Heist\" },\n { name: \"HeistCelebPassBW\", label: \"Heist Celeb Pass (B/W)\", group: \"Heist\" },\n { name: \"HeistCelebToast\", group: \"Heist\" },\n { name: \"HeistLocate\", group: \"Heist\" },\n { name: \"HeistTripSkipFade\", group: \"Heist\" },\n\n // ── Minigame / Menu ───────────────────────────────────────────────────────\n { name: \"MenuMGIn\", group: \"Minigame\" },\n { name: \"MenuMGHeistIn\", group: \"Minigame\" },\n { name: \"MenuMGHeistIntro\", group: \"Minigame\" },\n { name: \"MenuMGHeistOut\", group: \"Minigame\" },\n { name: \"MenuMGHeistTint\", group: \"Minigame\" },\n { name: \"MenuMGSelectionIn\", group: \"Minigame\" },\n { name: \"MenuMGSelectionTint\", group: \"Minigame\" },\n { name: \"MenuMGTournamentIn\", group: \"Minigame\" },\n { name: \"MenuMGTournamentTint\", group: \"Minigame\" },\n { name: \"MinigameTransitionIn\", group: \"Minigame\" },\n { name: \"MinigameTransitionOut\", group: \"Minigame\" },\n\n // ── Drug / Trip (psychedelic, blur, distortion) ───────────────────────────\n { name: \"DMT_flight\", group: \"Drug / Trip\" },\n { name: \"DMT_flight_intro\", group: \"Drug / Trip\" },\n { name: \"PeyoteIn\", group: \"Drug / Trip\" },\n { name: \"PeyoteOut\", group: \"Drug / Trip\" },\n { name: \"PeyoteEndIn\", group: \"Drug / Trip\" },\n { name: \"PeyoteEndOut\", group: \"Drug / Trip\" },\n { name: \"DrugsDrivingIn\", group: \"Drug / Trip\" },\n { name: \"DrugsDrivingOut\", group: \"Drug / Trip\" },\n { name: \"DrugsMichaelAliensFight\", group: \"Drug / Trip\" },\n { name: \"DrugsMichaelAliensFightIn\", group: \"Drug / Trip\" },\n { name: \"DrugsMichaelAliensFightOut\", group: \"Drug / Trip\" },\n { name: \"DrugsTrevorClownsFight\", group: \"Drug / Trip\" },\n { name: \"DrugsTrevorClownsFightIn\",group: \"Drug / Trip\" },\n { name: \"DrugsTrevorClownsFightOut\", group: \"Drug / Trip\" },\n { name: \"ChopVision\", label: \"Chop Vision (dog)\", group: \"Drug / Trip\" },\n\n // ── Color Filter / Tint (one-off and biker formation filters) ─────────────\n { name: \"PPFilter\", group: \"Color Filter / Tint\" },\n { name: \"PPFilterOut\", group: \"Color Filter / Tint\" },\n { name: \"PPGreen\", group: \"Color Filter / Tint\" },\n { name: \"PPGreenOut\", group: \"Color Filter / Tint\" },\n { name: \"PPOrange\", group: \"Color Filter / Tint\" },\n { name: \"PPOrangeOut\", group: \"Color Filter / Tint\" },\n { name: \"PPPink\", group: \"Color Filter / Tint\" },\n { name: \"PPPinkOut\", group: \"Color Filter / Tint\" },\n { name: \"PPPurple\", group: \"Color Filter / Tint\" },\n { name: \"PPPurpleOut\", group: \"Color Filter / Tint\" },\n { name: \"BikerFilter\", group: \"Color Filter / Tint\" },\n { name: \"BikerFilterOut\", group: \"Color Filter / Tint\" },\n { name: \"BikerFormation\", group: \"Color Filter / Tint\" },\n { name: \"BikerFormationOut\", group: \"Color Filter / Tint\" },\n { name: \"InchOrange\", group: \"Color Filter / Tint\" },\n { name: \"InchOrangeOut\", group: \"Color Filter / Tint\" },\n { name: \"InchPurple\", group: \"Color Filter / Tint\" },\n { name: \"InchPurpleOut\", group: \"Color Filter / Tint\" },\n { name: \"InchPickup\", group: \"Color Filter / Tint\" },\n { name: \"InchPickupOut\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerGreen\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerGreenOut\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerPink\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerPinkOut\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerIntroCam\", group: \"Color Filter / Tint\" },\n { name: \"DeadlineNeon\", group: \"Color Filter / Tint\" },\n\n // ── Multiplayer (celeb, killstreak, race, etc.) ───────────────────────────\n { name: \"MP_Celeb_Win\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Win_Out\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Lose\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Lose_Out\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Preload\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Preload_Fade\", group: \"Multiplayer\" },\n { name: \"MP_Bull_tost\", group: \"Multiplayer\" },\n { name: \"MP_Bull_tost_Out\", group: \"Multiplayer\" },\n { name: \"MP_Killstreak\", group: \"Multiplayer\" },\n { name: \"MP_Killstreak_Out\", group: \"Multiplayer\" },\n { name: \"MP_Loser_Streak_Out\", group: \"Multiplayer\" },\n { name: \"MP_OrbitalCannon\", group: \"Multiplayer\" },\n { name: \"MP_Powerplay\", group: \"Multiplayer\" },\n { name: \"MP_Powerplay_Out\", group: \"Multiplayer\" },\n { name: \"MP_SmugglerCheckpoint\", group: \"Multiplayer\" },\n { name: \"MP_TransformRaceFlash\", group: \"Multiplayer\" },\n { name: \"MP_WarpCheckpoint\", group: \"Multiplayer\" },\n { name: \"MP_corona_switch\", group: \"Multiplayer\" },\n { name: \"MP_intro_logo\", group: \"Multiplayer\" },\n { name: \"MP_job_load\", group: \"Multiplayer\" },\n { name: \"MP_race_crash\", group: \"Multiplayer\" },\n\n // ── Misc (success notifs, special weapons, sniper / pause / explosions) ───\n { name: \"SuccessFranklin\", group: \"Misc\" },\n { name: \"SuccessMichael\", group: \"Misc\" },\n { name: \"SuccessNeutral\", group: \"Misc\" },\n { name: \"SuccessTrevor\", group: \"Misc\" },\n { name: \"FocusIn\", group: \"Misc\" },\n { name: \"FocusOut\", group: \"Misc\" },\n { name: \"CrossLine\", group: \"Misc\" },\n { name: \"CrossLineOut\", group: \"Misc\" },\n { name: \"SniperOverlay\", group: \"Misc\" },\n { name: \"ExplosionJosh3\", group: \"Misc\" },\n { name: \"WeaponUpgrade\", group: \"Misc\" },\n { name: \"Dont_tazeme_bro\", label: \"Don't Taze Me Bro\", group: \"Misc\" },\n { name: \"LostTimeDay\", group: \"Misc\" },\n { name: \"LostTimeNight\", group: \"Misc\" },\n { name: \"PauseMenuOut\", group: \"Misc\" },\n { name: \"pennedIn\", group: \"Misc\" },\n { name: \"PennedInOut\", group: \"Misc\" },\n { name: \"RaceTurbo\", group: \"Misc\" },\n { name: \"DefaultFlash\", group: \"Misc\" },\n];\n\nexport function formatGtaAnimPostFx(name: string): string {\n const entry = GTA_ANIM_POST_FX.find((fx) => fx.name === name);\n return entry?.label ?? name;\n}\n","// FiveM AnimPostFX picker. Curated list from the altV docs + a few common\n// community-known overlays (ULP_PlayerWakeUp etc.) grouped by use-case so\n// admins building cutscenes can find \"the wake-up effect\" without reading\n// 150 raw effect names.\n//\n// Single-value Select (the AnimpostfxPlay native takes one effect name).\n// Custom uncatalogued values in `value` are preserved under a \"Custom\"\n// group so old data with effect names we haven't catalogued still display.\n//\n// For full freedom (typing any arbitrary effect name), pass `creatable` —\n// users can hit Enter on a search term to add it as a custom value.\n\nimport { Select } from \"@mantine/core\";\nimport type { SelectProps } from \"@mantine/core\";\nimport {\n GTA_ANIM_POST_FX,\n GTA_ANIM_POST_FX_GROUP_ORDER,\n formatGtaAnimPostFx,\n type GtaAnimPostFx,\n type GtaAnimPostFxGroup,\n} from \"@/utils/gtaAnimPostFx\";\n\nfunction buildGroupedData(extraNames: string[] = []) {\n const groups = new Map<GtaAnimPostFxGroup, GtaAnimPostFx[]>();\n const seen = new Set<string>();\n for (const fx of GTA_ANIM_POST_FX) {\n if (seen.has(fx.name)) continue;\n seen.add(fx.name);\n if (!groups.has(fx.group)) groups.set(fx.group, []);\n groups.get(fx.group)!.push(fx);\n }\n\n const data = GTA_ANIM_POST_FX_GROUP_ORDER.flatMap((g) => {\n const items = groups.get(g);\n if (!items || items.length === 0) return [];\n return [\n {\n group: g,\n items: items.map((fx) => ({\n value: fx.name,\n label: formatGtaAnimPostFx(fx.name),\n })),\n },\n ];\n });\n\n // Surface custom values so the dropdown still shows the current selection.\n // Mantine drops chips silently when the value isn't in the data array.\n const knownNames = new Set(GTA_ANIM_POST_FX.map((fx) => fx.name));\n const customs = extraNames.filter((n) => n && !knownNames.has(n));\n if (customs.length > 0) {\n data.push({\n group: \"Custom\" as GtaAnimPostFxGroup,\n items: customs.map((n) => ({ value: n, label: n })),\n });\n }\n\n return data;\n}\n\nexport type AnimPostFxSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\n /** Current effect name. Empty string = no effect selected. */\n value: string;\n onChange: (name: string) => void;\n};\n\nexport function AnimPostFxSelect({\n value,\n onChange,\n label = \"Screen FX\",\n size = \"xs\",\n searchable = true,\n clearable = true,\n ...rest\n}: AnimPostFxSelectProps) {\n const data = buildGroupedData([value]);\n return (\n <Select\n label={label}\n size={size}\n searchable={searchable}\n clearable={clearable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching effects\"\n placeholder=\"Pick an effect...\"\n {...rest}\n data={data}\n value={value || null}\n onChange={(v) => onChange(v ?? \"\")}\n />\n );\n}\n","// Curated list of GTA V scenario identifiers passed to\n// TaskStartScenarioInPlace / TaskStartScenarioAtPosition. Sourced from\n// https://wiki.rage.mp/wiki/Scenarios via the DurtyFree gta-v-data-dumps\n// mirror (scenariosCompact.json).\n//\n// Scenarios are grouped by what the ped is *doing* so a picker can present\n// section headings instead of one giant alphabetical list of ~250 entries.\n// Add new entries by appending to the right group — the picker reflows\n// automatically. Group order = the order they appear in a dropdown.\n\nexport type GtaScenario = {\n /** Scenario identifier passed to the TaskStartScenario* natives. Case-sensitive. */\n name: string;\n /** Friendly label for UI display. Falls back to the auto-formatted name. */\n label?: string;\n /** Group used for ordering and section headers. */\n group: GtaScenarioGroup;\n};\n\nexport type GtaScenarioGroup =\n | \"Sitting\"\n | \"Standing & Idle\"\n | \"Eating & Drinking\"\n | \"Smoking & Substances\"\n | \"Working\"\n | \"Sports & Fitness\"\n | \"Cops & Security\"\n | \"Crime & Streets\"\n | \"Tourists & Crowds\"\n | \"Props (Misc)\"\n | \"Movement\"\n | \"Animals\"\n | \"Vehicles\"\n | \"Code (Advanced)\";\n\nexport const GTA_SCENARIO_GROUP_ORDER: GtaScenarioGroup[] = [\n \"Sitting\",\n \"Standing & Idle\",\n \"Eating & Drinking\",\n \"Smoking & Substances\",\n \"Working\",\n \"Sports & Fitness\",\n \"Cops & Security\",\n \"Crime & Streets\",\n \"Tourists & Crowds\",\n \"Props (Misc)\",\n \"Movement\",\n \"Animals\",\n \"Vehicles\",\n \"Code (Advanced)\",\n];\n\nexport const GTA_SCENARIOS: GtaScenario[] = [\n // ── Sitting ────────────────────────────────────────────────────────────────\n { name: \"PROP_HUMAN_SEAT_ARMCHAIR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BAR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_FACILITY\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK_FACILITY\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK_BEER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_FOOD\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_FOOD_FACILITY\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BUS_STOP_WAIT\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_DRINK\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_DRINK_BEER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_FOOD\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_UPRIGHT\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_UPRIGHT_SHOWROOM\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_MP_PLAYER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_COMPUTER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_COMPUTER_LOW\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_DECKCHAIR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_DECKCHAIR_DRINK\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_SEWING\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_STRIP_WATCH\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_SUNLOUNGER\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_LEDGE\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_LEDGE_EATING\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_STEPS\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_WALL\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_WALL_EATING\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_WALL_TABLET\", group: \"Sitting\" },\n\n // ── Standing & Idle ────────────────────────────────────────────────────────\n { name: \"Standing\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_HANG_OUT_STREET\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_LEANING\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_LEANING_CASINO_TERRACE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_FACILITY\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT_FACILITY\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_FACILITY\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_UPRIGHT\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_FIRE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_FISHING\", group: \"Standing & Idle\" },\n { name: \"PROP_HUMAN_STAND_IMPATIENT\", group: \"Standing & Idle\" },\n\n // ── Eating & Drinking ──────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_DRINKING\", group: \"Eating & Drinking\" },\n { name: \"WORLD_HUMAN_DRINKING_FACILITY\", group: \"Eating & Drinking\" },\n { name: \"WORLD_HUMAN_DRINKING_CASINO_TERRACE\", group: \"Eating & Drinking\" },\n { name: \"WORLD_HUMAN_PICNIC\", group: \"Eating & Drinking\" },\n\n // ── Smoking & Substances ───────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_AA_COFFEE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_AA_SMOKE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING_CLUBHOUSE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING_POT\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING_POT_CLUBHOUSE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_STUPOR\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_STUPOR_CLUBHOUSE\", group: \"Smoking & Substances\" },\n\n // ── Working ────────────────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_CAR_PARK_ATTENDANT\", group: \"Working\" },\n { name: \"WORLD_HUMAN_CLIPBOARD\", group: \"Working\" },\n { name: \"WORLD_HUMAN_CLIPBOARD_FACILITY\", group: \"Working\" },\n { name: \"WORLD_HUMAN_CONST_DRILL\", group: \"Working\" },\n { name: \"WORLD_HUMAN_GARDENER_LEAF_BLOWER\", group: \"Working\" },\n { name: \"WORLD_HUMAN_GARDENER_PLANT\", group: \"Working\" },\n { name: \"WORLD_HUMAN_HAMMERING\", group: \"Working\" },\n { name: \"WORLD_HUMAN_JANITOR\", group: \"Working\" },\n { name: \"WORLD_HUMAN_MAID_CLEAN\", group: \"Working\" },\n { name: \"WORLD_HUMAN_MUSICIAN\", group: \"Working\" },\n { name: \"WORLD_HUMAN_VALET\", group: \"Working\" },\n { name: \"WORLD_HUMAN_VEHICLE_MECHANIC\", group: \"Working\" },\n { name: \"WORLD_HUMAN_WELDING\", group: \"Working\" },\n\n // ── Sports & Fitness ───────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_GOLF_PLAYER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_HIKER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_HIKER_STANDING\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_JOG\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_JOG_STANDING\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_MUSCLE_FLEX\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_MUSCLE_FREE_WEIGHTS\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_POWER_WALKER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_PUSH_UPS\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SIT_UPS\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SUNBATHE\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SUNBATHE_BACK\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SWIMMING\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_TENNIS_PLAYER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_YOGA\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS_ARMY\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS_PRISON\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS_PRISON\", group: \"Sports & Fitness\" },\n\n // ── Cops & Security ────────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_COP_IDLES\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_PATROL\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_CASINO\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_CLUBHOUSE\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_FACILITY\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_ARMY\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_SECURITY_SHINE_TORCH\", group: \"Cops & Security\" },\n\n // ── Crime & Streets ────────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_DRUG_DEALER\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_DEALER_HARD\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_FIELD_WORKERS_RAKE\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_FIELD_WORKERS_WEEDING\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_PROCESSORS_COKE\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_PROCESSORS_WEED\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_PROSTITUTE_HIGH_CLASS\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_PROSTITUTE_LOW_CLASS\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_FREEWAY\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_SLUMPED\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_STANDING\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_WASH\", group: \"Crime & Streets\" },\n { name: \"PROP_HUMAN_BUM_BIN\", group: \"Crime & Streets\" },\n { name: \"PROP_HUMAN_BUM_SHOPPING_CART\", group: \"Crime & Streets\" },\n\n // ── Tourists & Crowds ──────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_BINOCULARS\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_CHEERING\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_HUMAN_STATUE\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_INSPECT_CROUCH\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_INSPECT_STAND\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_MOBILE_FILM_SHOCKING\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_PAPARAZZI\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_PARTYING\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_STRIP_WATCH_STAND\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_SUPERHERO\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_TOURIST_MAP\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_TOURIST_MOBILE\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_WINDOW_SHOP_BROWSE\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_WINDOW_SHOP_BROWSE_SHOWROOM\", group: \"Tourists & Crowds\" },\n\n // ── Props (Misc) ───────────────────────────────────────────────────────────\n { name: \"PROP_HUMAN_ATM\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_BBQ\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_PARKING_METER\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_MOVIE_BULB\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_MOVIE_STUDIO_LIGHT\", group: \"Props (Misc)\" },\n { name: \"PROP_BIRD_IN_TREE\", group: \"Props (Misc)\" },\n { name: \"PROP_BIRD_TELEGRAPH_POLE\", group: \"Props (Misc)\" },\n\n // ── Movement ───────────────────────────────────────────────────────────────\n { name: \"Walk\", group: \"Movement\" },\n { name: \"Walk_Facility\", group: \"Movement\" },\n\n // ── Animals ────────────────────────────────────────────────────────────────\n { name: \"WORLD_BOAR_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_CAT_SLEEPING_GROUND\", group: \"Animals\" },\n { name: \"WORLD_CAT_SLEEPING_LEDGE\", group: \"Animals\" },\n { name: \"WORLD_COW_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_HOWL\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_REST\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_WANDER\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_WALK\", group: \"Animals\" },\n { name: \"WORLD_CHICKENHAWK_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_CHICKENHAWK_STANDING\", group: \"Animals\" },\n { name: \"WORLD_CORMORANT_STANDING\", group: \"Animals\" },\n { name: \"WORLD_CROW_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_CROW_STANDING\", group: \"Animals\" },\n { name: \"WORLD_DEER_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_ROTTWEILER\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_RETRIEVER\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_SHEPHERD\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_SMALL\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_ROTTWEILER\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_RETRIEVER\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_SHEPHERD\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_SMALL\", group: \"Animals\" },\n { name: \"WORLD_DOLPHIN_SWIM\", group: \"Animals\" },\n { name: \"WORLD_FISH_FLEE\", group: \"Animals\" },\n { name: \"WORLD_FISH_IDLE\", group: \"Animals\" },\n { name: \"WORLD_GULL_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_GULL_STANDING\", group: \"Animals\" },\n { name: \"WORLD_HEN_FLEE\", group: \"Animals\" },\n { name: \"WORLD_HEN_PECKING\", group: \"Animals\" },\n { name: \"WORLD_HEN_STANDING\", group: \"Animals\" },\n { name: \"WORLD_MOUNTAIN_LION_REST\", group: \"Animals\" },\n { name: \"WORLD_MOUNTAIN_LION_WANDER\", group: \"Animals\" },\n { name: \"WORLD_ORCA_SWIM\", group: \"Animals\" },\n { name: \"WORLD_PIG_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_PIGEON_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_PIGEON_STANDING\", group: \"Animals\" },\n { name: \"WORLD_RABBIT_EATING\", group: \"Animals\" },\n { name: \"WORLD_RABBIT_FLEE\", group: \"Animals\" },\n { name: \"WORLD_RATS_EATING\", group: \"Animals\" },\n { name: \"WORLD_RATS_FLEEING\", group: \"Animals\" },\n { name: \"WORLD_SHARK_SWIM\", group: \"Animals\" },\n { name: \"WORLD_SHARK_HAMMERHEAD_SWIM\", group: \"Animals\" },\n { name: \"WORLD_STINGRAY_SWIM\", group: \"Animals\" },\n { name: \"WORLD_WHALE_SWIM\", group: \"Animals\" },\n\n // ── Vehicles ───────────────────────────────────────────────────────────────\n { name: \"DRIVE\", group: \"Vehicles\" },\n { name: \"PARK_VEHICLE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_ATTRACTOR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_AMBULANCE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_BALLAS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_FAMILY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_HARMONY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_VAGOS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_MOUNTAIN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_ROAD\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BIKE_OFF_ROAD_RACE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BIKER\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BOAT_IDLE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BOAT_IDLE_ALAMO\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BOAT_IDLE_MARQUIS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BROKEN_DOWN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BUSINESSMEN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_CLUCKIN_BELL_TRAILER\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_CONSTRUCTION_SOLO\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_CONSTRUCTION_PASSENGERS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DISTANT_EMPTY_GROUND\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DRIVE_PASSENGERS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DRIVE_PASSENGERS_LIMITED\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DRIVE_SOLO\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_EMPTY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_FARM_WORKER\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_FIRE_TRUCK\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_HELI_LIFEGUARD\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MARIACHI\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MECHANIC\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MILITARY_PLANES_BIG\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MILITARY_PLANES_SMALL\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_PARK_PARALLEL\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_PASSENGER_EXIT\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_POLICE_BIKE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_POLICE_CAR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_POLICE_NEXT_TO_CAR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_QUARRY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_SALTON\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_SALTON_DIRT_BIKE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_SECURITY_CAR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_STREETRACE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TANDL\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TOURBUS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TOURIST\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRACTOR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRACTOR_BEACH\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRUCK_LOGS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRUCKS_TRAILERS\", group: \"Vehicles\" },\n\n // ── Code (Advanced) ────────────────────────────────────────────────────────\n // These are engine-internal scenarios — rarely the right pick for cinematic\n // ped placements, but exposed because the game-data dump includes them.\n { name: \"CODE_HUMAN_COWER\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_CROSS_ROAD_WAIT\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_PARK_CAR\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_MEDIC_KNEEL\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_MEDIC_TEND_TO_DEAD\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_MEDIC_TIME_OF_DEATH\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_POLICE_CROWD_CONTROL\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_POLICE_INVESTIGATE\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_STAND_COWER\", group: \"Code (Advanced)\" },\n { name: \"CHAINING_ENTRY\", group: \"Code (Advanced)\" },\n { name: \"CHAINING_EXIT\", group: \"Code (Advanced)\" },\n { name: \"EAR_TO_TEXT\", group: \"Code (Advanced)\" },\n { name: \"EAR_TO_TEXT_FAT\", group: \"Code (Advanced)\" },\n { name: \"WORLD_LOOKAT_POINT\", group: \"Code (Advanced)\" },\n];\n\n// ── Display helpers ──────────────────────────────────────────────────────────\n\n// \"PROP_HUMAN_SEAT_CHAIR_FOOD\" → \"Seat Chair Food\". Strips the WORLD_/PROP_/\n// CODE_ prefix and the redundant HUMAN_/BIRD_/VEHICLE_ infix so the label\n// reads naturally, then title-cases each underscore-separated word.\nconst PREFIX_RE = /^(WORLD|PROP|CODE)_(HUMAN_|BIRD_|VEHICLE_|CAT_|DOG_|COYOTE_|FISH_|HEN_|GULL_|CROW_|RABBIT_|RATS_|SHARK_|PIGEON_|ORCA_|WHALE_|STINGRAY_|DOLPHIN_|MOUNTAIN_LION_|PIG_|COW_|DEER_|BOAR_|CHICKENHAWK_|CORMORANT_)?/;\n\nexport function formatGtaScenario(name: string): string {\n if (!name) return \"\";\n const stripped = name.replace(PREFIX_RE, \"\");\n const cleaned = stripped.length > 0 ? stripped : name;\n return cleaned\n .toLowerCase()\n .split(\"_\")\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n","// FiveM scenario picker. Curated list from\n// https://wiki.rage.mp/wiki/Scenarios (via DurtyFree's data dump) grouped by\n// what the ped is actually doing — Sitting, Working, Sports, etc. — so admins\n// building a scene can find \"the chair with food\" without scrolling 250\n// alphabetical rows.\n//\n// Single-value Select (TaskStartScenarioInPlace/AtPosition takes one name).\n// Custom values in `value` that don't match a catalogued scenario are kept\n// in a \"Custom\" group so externally-loaded scenario keys still display.\n\nimport { Select } from \"@mantine/core\";\nimport type { SelectProps } from \"@mantine/core\";\nimport {\n GTA_SCENARIOS,\n GTA_SCENARIO_GROUP_ORDER,\n formatGtaScenario,\n type GtaScenario,\n type GtaScenarioGroup,\n} from \"@/utils/gtaScenarios\";\n\nfunction buildGroupedData(extraNames: string[] = []) {\n const groups = new Map<GtaScenarioGroup, GtaScenario[]>();\n const seen = new Set<string>();\n for (const sc of GTA_SCENARIOS) {\n if (seen.has(sc.name)) continue;\n seen.add(sc.name);\n if (!groups.has(sc.group)) groups.set(sc.group, []);\n groups.get(sc.group)!.push(sc);\n }\n\n const data = GTA_SCENARIO_GROUP_ORDER.flatMap((g) => {\n const items = groups.get(g);\n if (!items || items.length === 0) return [];\n return [\n {\n group: g,\n items: items.map((sc) => ({\n value: sc.name,\n label: sc.label ?? formatGtaScenario(sc.name),\n })),\n },\n ];\n });\n\n // Surface custom values so the dropdown still shows the current selection.\n // Mantine silently drops chips when the value isn't in the data array.\n const knownNames = new Set(GTA_SCENARIOS.map((sc) => sc.name));\n const customs = extraNames.filter((n) => n && !knownNames.has(n));\n if (customs.length > 0) {\n data.push({\n group: \"Custom\" as GtaScenarioGroup,\n items: customs.map((n) => ({ value: n, label: n })),\n });\n }\n\n return data;\n}\n\nexport type ScenarioSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\n /** Current scenario name. Empty string = no scenario selected. */\n value: string;\n onChange: (name: string) => void;\n};\n\nexport function ScenarioSelect({\n value,\n onChange,\n label = \"Scenario\",\n size = \"xs\",\n searchable = true,\n clearable = true,\n ...rest\n}: ScenarioSelectProps) {\n const data = buildGroupedData([value]);\n return (\n <Select\n label={label}\n size={size}\n searchable={searchable}\n clearable={clearable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching scenarios\"\n placeholder=\"Pick a scenario...\"\n {...rest}\n data={data}\n value={value || null}\n onChange={(v) => onChange(v ?? \"\")}\n />\n );\n}\n","// Discord role picker. Mantine Select / MultiSelect populated from a NUI\n// callback the consumer registers (which in turn calls lib.discord.getRoles\n// on the server). Each role shows its actual Discord colour as a swatch.\n//\n// The consumer wires up the NUI side once:\n//\n// RegisterNuiCallback('LIST_DISCORD_ROLES', function(_, cb)\n// local roles, err = lib.callback.await('myresource:listDiscordRoles')\n// cb({ ok = roles ~= nil, _error = err, roles = roles or {} })\n// end)\n//\n// server callback:\n// lib.callback.register('myresource:listDiscordRoles', function(src)\n// -- (admin perm check here)\n// local roles, err = lib.discord.getRoles()\n// return roles, err\n// end)\n//\n// And then renders:\n// <DiscordRoleSelect endpoint=\"LIST_DISCORD_ROLES\" value={...} onChange={...} />\n//\n// When lib.discord returns 'NotConfigured' the picker swaps in a friendly\n// banner pointing the admin at /dirk_lib so they go set credentials.\n\nimport { ActionIcon, Flex, MultiSelect, Select, Text } from \"@mantine/core\";\nimport type { ComboboxItem, SelectProps, MultiSelectProps } from \"@mantine/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { AlertTriangle, RefreshCw } from \"lucide-react\";\nimport { fetchNui } from \"@/utils/fetchNui\";\nimport { locale } from \"@/utils/locales\";\n\n// locale() returns the **key itself** on miss (see utils/locales.ts), so the\n// classic `locale(k) || fallback` pattern never falls through. This helper\n// returns `fallback` whenever locale gave us the key back unchanged.\nconst t = (key: string, fallback: string) => {\n const v = locale(key);\n return v === key ? fallback : v;\n};\n\n// Subset of the Discord role payload we actually use. Everything else\n// (mentionable, hoist, permissions, etc.) is on the server-side cache;\n// the picker only needs id/name/colour/position.\nexport type DiscordRole = {\n id: string;\n name: string;\n color: number; // 24-bit integer; 0 = no colour (Discord default)\n position?: number;\n};\n\ntype ListResponse = {\n ok: boolean;\n _error?: string;\n roles?: DiscordRole[];\n};\n\nfunction decimalToHex(color: number): string | null {\n if (!color || color === 0) return null;\n return \"#\" + color.toString(16).padStart(6, \"0\");\n}\n\n// Custom option renderer — swatch + role name. Falls back to a neutral\n// grey dot when the role has no Discord colour set (decimal 0).\nfunction RoleOption({ role }: { role: DiscordRole }) {\n const swatch = decimalToHex(role.color) || \"rgba(255,255,255,0.25)\";\n return (\n <Flex align=\"center\" gap=\"0.6vh\">\n <div\n style={{\n width: \"1vh\",\n height: \"1vh\",\n borderRadius: \"50%\",\n background: swatch,\n flexShrink: 0,\n boxShadow: role.color ? `0 0 0.4vh ${swatch}` : undefined,\n }}\n />\n <Text size=\"xs\" c=\"rgba(255,255,255,0.9)\">\n {role.name}\n </Text>\n </Flex>\n );\n}\n\n// Styling shared by the not-configured stand-in — a disabled Select that\n// shares the exact same shell as a real picker, so neighbouring inputs\n// (e.g. a NumberInput sitting next to us in a flex row) line up. The tint\n// is a subtle amber so the admin notices it's degraded without losing\n// the form's visual rhythm.\nconst NOT_CONFIGURED_TINT = \"rgba(255,184,0,0.35)\";\nconst NOT_CONFIGURED_FILL = \"rgba(255,184,0,0.05)\";\n\ntype SharedProps = {\n /** NUI callback name registered by the consumer that returns ListResponse. */\n endpoint: string;\n /** Optional label / size / placeholder forwarded to the underlying Mantine Select. */\n label?: React.ReactNode;\n size?: SelectProps[\"size\"];\n placeholder?: string;\n disabled?: boolean;\n /** Style props applied to the wrapping Select/MultiSelect. */\n style?: React.CSSProperties;\n styles?: SelectProps[\"styles\"];\n};\n\ntype SingleProps = SharedProps & {\n multi?: false;\n value: string | null;\n onChange: (id: string | null) => void;\n};\n\ntype MultiProps = SharedProps & {\n multi: true;\n value: string[];\n onChange: (ids: string[]) => void;\n};\n\nexport type DiscordRoleSelectProps = SingleProps | MultiProps;\n\nexport function DiscordRoleSelect(props: DiscordRoleSelectProps) {\n const { endpoint, label, size = \"xs\", placeholder, disabled, style, styles } = props;\n const [roles, setRoles] = useState<DiscordRole[] | null>(null);\n const [loading, setLoading] = useState(false);\n const [errorCode, setErrorCode] = useState<string | null>(null);\n\n const refresh = async () => {\n setLoading(true);\n try {\n const res = await fetchNui<ListResponse>(endpoint, {}, {\n // Browser dev fallback so the component renders something useful\n // outside FiveM.\n ok: true,\n roles: [\n { id: \"1\", name: \"Admin\", color: 0xed4245, position: 5 },\n { id: \"2\", name: \"VIP Gold\", color: 0xfaa61a, position: 4 },\n { id: \"3\", name: \"Member\", color: 0x57f287, position: 3 },\n { id: \"4\", name: \"Guest\", color: 0, position: 2 },\n ],\n });\n if (res?.ok) {\n setRoles(res.roles ?? []);\n setErrorCode(null);\n } else {\n setRoles(null);\n setErrorCode(res?._error || \"FetchFailed\");\n }\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n refresh();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [endpoint]);\n\n const rolesById = useMemo(() => {\n const map: Record<string, DiscordRole> = {};\n for (const r of roles ?? []) map[r.id] = r;\n return map;\n }, [roles]);\n\n // Show a disabled stand-in instead of a broken empty picker. Uses the\n // exact same Mantine Select/MultiSelect shell as the real component so\n // neighbouring inputs (NumberInputs in the same flex row, etc.) line up\n // pixel-for-pixel — only the input border tints amber to signal \"not\n // wired up yet, see /dirk_lib\".\n if (errorCode === \"NotConfigured\") {\n const notConfiguredPlaceholder = t(\n \"DiscordNotConfigured\",\n \"Not configured — set in /dirk_lib\",\n );\n const notConfiguredStyles = {\n ...(styles as Record<string, unknown> | undefined),\n input: {\n ...((styles as { input?: Record<string, unknown> } | undefined)?.input ?? {}),\n borderColor: NOT_CONFIGURED_TINT,\n backgroundColor: NOT_CONFIGURED_FILL,\n },\n } as SelectProps[\"styles\"];\n const warnIcon = (\n <AlertTriangle size=\"1.2vh\" color={NOT_CONFIGURED_TINT.replace(/0\\.35\\)$/, \"0.85)\")} />\n );\n if (props.multi) {\n return (\n <MultiSelect\n label={label}\n size={size}\n placeholder={notConfiguredPlaceholder}\n data={[]}\n value={[]}\n onChange={() => {}}\n disabled\n rightSection={warnIcon}\n style={style}\n styles={notConfiguredStyles as MultiSelectProps[\"styles\"]}\n />\n );\n }\n return (\n <Select\n label={label}\n size={size}\n placeholder={notConfiguredPlaceholder}\n data={[]}\n value={null}\n onChange={() => {}}\n disabled\n rightSection={warnIcon}\n style={style}\n styles={notConfiguredStyles}\n />\n );\n }\n\n // Mantine Select expects {value, label} options. We also pass the role\n // object inline so the custom renderer can read the colour.\n const data: ComboboxItem[] = (roles ?? []).map((r) => ({\n value: r.id,\n label: r.name,\n }));\n\n const renderOption: SelectProps[\"renderOption\"] = ({ option }) => {\n const role = rolesById[option.value];\n return role ? <RoleOption role={role} /> : <Text size=\"xs\">{option.label}</Text>;\n };\n\n // Mantine Select default `rightSectionPointerEvents=\"none\"` makes the\n // icon visual-only — clicks fall through to the combobox toggle. We\n // explicitly enable pointer events here so the refresh button actually\n // refreshes, and stopPropagation prevents the dropdown from opening\n // when the icon is clicked.\n const refreshButton = (\n <ActionIcon\n size=\"xs\"\n variant=\"subtle\"\n onMouseDown={(e) => { e.stopPropagation(); }}\n onClick={(e) => { e.stopPropagation(); refresh(); }}\n title={t(\"Refresh\", \"Refresh\")}\n loading={loading}\n aria-label={t(\"Refresh\", \"Refresh\")}\n >\n <RefreshCw size=\"1.2vh\" />\n </ActionIcon>\n );\n\n if (props.multi) {\n return (\n <MultiSelect\n label={label}\n size={size}\n placeholder={placeholder || t(\"PickRoles\", \"Pick roles...\")}\n data={data}\n value={props.value || []}\n onChange={(ids) => props.onChange(ids)}\n renderOption={renderOption as MultiSelectProps[\"renderOption\"]}\n searchable\n clearable\n disabled={disabled || (loading && !roles)}\n rightSection={refreshButton}\n rightSectionPointerEvents=\"all\"\n style={style}\n styles={styles as MultiSelectProps[\"styles\"]}\n nothingFoundMessage={\n errorCode\n ? `${t(\"Error\", \"Error\")} (${errorCode})`\n : t(\"NoRoles\", \"No roles found\")\n }\n />\n );\n }\n\n return (\n <Select\n label={label}\n size={size}\n placeholder={placeholder || t(\"PickRole\", \"Pick a role...\")}\n data={data}\n value={props.value || null}\n onChange={(id) => props.onChange(id)}\n renderOption={renderOption}\n searchable\n clearable\n disabled={disabled || (loading && !roles)}\n rightSection={refreshButton}\n rightSectionPointerEvents=\"all\"\n style={style}\n styles={styles}\n nothingFoundMessage={\n errorCode\n ? `${t(\"Error\", \"Error\")} (${errorCode})`\n : t(\"NoRoles\", \"No roles found\")\n }\n />\n );\n}\n","// Account picker. Mantine Select / MultiSelect populated from a NUI\n// callback the consumer registers (which in turn calls\n// lib.accounts.list() on the server, reaching dirk_lib's framework\n// introspection).\n//\n// Consumer wiring (once):\n//\n// RegisterNuiCallback('LIST_ACCOUNTS', function(_, cb)\n// local info = lib.accounts.list()\n// cb(info)\n// end)\n//\n// Then:\n// <AccountSelect endpoint=\"LIST_ACCOUNTS\" value={...} onChange={...} />\n// <AccountSelect endpoint=\"LIST_ACCOUNTS\" multi value={[...]} onChange={...} />\n//\n// Behaviour:\n// • If the framework reports accounts (ESX / qb-core), the dropdown is\n// pre-populated with the canonical list. Each option shows name +\n// pretty label when available.\n// • In `multi` mode, the dropdown is `creatable` — admin can type a\n// custom account name and press Enter to add it. Needed for qbx_core\n// and any ESX server that adds custom accounts at runtime.\n// • Single-pick mode is strict (no free-form entry).\n// • Framework hint chip renders below the field so the admin knows\n// where the list came from (\"from ESX Config.Accounts\", \"default\n// QBox trio\", etc.).\n\nimport { ActionIcon, Flex, MultiSelect, Select, Text, alpha, useMantineTheme } from \"@mantine/core\";\nimport type { ComboboxItem, MultiSelectProps, SelectProps } from \"@mantine/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { RefreshCw } from \"lucide-react\";\nimport { fetchNui } from \"@/utils/fetchNui\";\nimport { locale } from \"@/utils/locales\";\n\nconst t = (key: string, fallback: string) => {\n const v = locale(key);\n return v === key ? fallback : v;\n};\n\nexport type FrameworkAccount = {\n name: string;\n label?: string;\n default?: number;\n round?: boolean;\n};\n\ntype ListResponse = {\n ok: boolean;\n framework?: string;\n accounts?: FrameworkAccount[];\n};\n\nconst FRAMEWORK_HINTS: Record<string, string> = {\n \"es_extended\": \"from ESX Config.Accounts\",\n \"qb-core\": \"from QBCore Money.MoneyTypes\",\n \"qbx_core\": \"default QBox trio (cash/bank/crypto) — server may have custom names, add them manually\",\n \"nd-framework\": \"ND_Core only supports cash + bank\",\n \"unknown\": \"no framework detected — type account names manually\",\n};\n\ntype SharedProps = {\n endpoint: string;\n label?: React.ReactNode;\n size?: SelectProps[\"size\"];\n placeholder?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n styles?: SelectProps[\"styles\"];\n /** Hide the framework-hint chip below the field. */\n hideFrameworkHint?: boolean;\n};\n\ntype SingleProps = SharedProps & {\n multi?: false;\n value: string | null;\n onChange: (name: string | null) => void;\n};\n\ntype MultiProps = SharedProps & {\n multi: true;\n value: string[];\n onChange: (names: string[]) => void;\n};\n\nexport type AccountSelectProps = SingleProps | MultiProps;\n\nfunction AccountOption({ account }: { account: FrameworkAccount }) {\n return (\n <Flex direction=\"column\" gap=\"0\">\n <Text size=\"xs\" c=\"rgba(255,255,255,0.9)\" ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.04em\">\n {account.name}\n </Text>\n {account.label && (\n <Text size=\"xxs\" c=\"rgba(255,255,255,0.4)\">\n {account.label}\n </Text>\n )}\n </Flex>\n );\n}\n\nfunction FrameworkHint({ framework }: { framework: string | undefined }) {\n const theme = useMantineTheme();\n if (!framework) return null;\n const hintKey = `AccountFrameworkHint_${framework}`;\n const text = t(hintKey, FRAMEWORK_HINTS[framework] || FRAMEWORK_HINTS.unknown);\n return (\n <Flex\n align=\"center\" gap=\"xs\" px=\"xs\" py=\"0.3vh\"\n style={{\n background: alpha(theme.colors.dark[5], 0.4),\n border: \"0.1vh solid rgba(255,255,255,0.04)\",\n borderRadius: theme.radius.xs,\n }}\n >\n <Text size=\"xxs\" ff=\"Akrobat Bold\" c=\"rgba(255,255,255,0.45)\" tt=\"uppercase\" lts=\"0.04em\">\n {framework}\n </Text>\n <Text size=\"xxs\" ff=\"Akrobat\" c=\"rgba(255,255,255,0.35)\" style={{ flex: 1 }} lineClamp={2}>\n {text}\n </Text>\n </Flex>\n );\n}\n\nexport function AccountSelect(props: AccountSelectProps) {\n const { endpoint, label, size = \"xs\", placeholder, disabled, style, styles, hideFrameworkHint } = props;\n const [accounts, setAccounts] = useState<FrameworkAccount[] | null>(null);\n const [framework, setFramework] = useState<string | undefined>(undefined);\n const [loading, setLoading] = useState(false);\n\n const refresh = async () => {\n setLoading(true);\n try {\n const res = await fetchNui<ListResponse>(endpoint, {}, {\n // Browser dev fallback. Shows a recognisable ESX-style list.\n ok: true,\n framework: \"es_extended\",\n accounts: [\n { name: \"money\", label: \"Cash\" },\n { name: \"bank\", label: \"Bank\" },\n { name: \"black_money\", label: \"Dirty Money\" },\n ],\n });\n if (res?.ok) {\n setAccounts(res.accounts ?? []);\n setFramework(res.framework);\n } else {\n setAccounts([]);\n setFramework(res?.framework);\n }\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n refresh();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [endpoint]);\n\n const accountsByName = useMemo(() => {\n const map: Record<string, FrameworkAccount> = {};\n for (const a of accounts ?? []) map[a.name] = a;\n // In multi mode we also need to handle account names the admin typed\n // that aren't in the framework list (e.g. custom qbx_core accounts).\n if (props.multi) {\n for (const n of props.value ?? []) {\n if (n && !map[n]) map[n] = { name: n };\n }\n } else if (props.value && !map[props.value]) {\n map[props.value] = { name: props.value };\n }\n return map;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [accounts, props.multi, props.multi ? props.value?.join(\",\") : props.value]);\n\n const data: ComboboxItem[] = Object.values(accountsByName).map((a) => ({\n value: a.name,\n label: a.label ? `${a.name} — ${a.label}` : a.name,\n }));\n\n const renderOption: SelectProps[\"renderOption\"] = ({ option }) => {\n const acc = accountsByName[option.value];\n return acc ? <AccountOption account={acc} /> : <Text size=\"xs\">{option.label}</Text>;\n };\n\n const refreshButton = (\n <ActionIcon\n size=\"xs\" variant=\"subtle\"\n onMouseDown={(e) => { e.stopPropagation(); }}\n onClick={(e) => { e.stopPropagation(); refresh(); }}\n title={t(\"Refresh\", \"Refresh\")}\n loading={loading}\n aria-label={t(\"Refresh\", \"Refresh\")}\n >\n <RefreshCw size=\"1.2vh\" />\n </ActionIcon>\n );\n\n const sharedSelectProps = {\n label,\n size,\n data,\n searchable: true,\n clearable: true,\n disabled: disabled || (loading && !accounts),\n rightSection: refreshButton,\n rightSectionPointerEvents: \"all\" as const,\n style,\n nothingFoundMessage: t(\"NoAccounts\", \"No accounts available\"),\n };\n\n return (\n <Flex direction=\"column\" gap=\"0.3vh\" style={style}>\n {props.multi ? (\n <MultiSelect\n {...sharedSelectProps}\n placeholder={placeholder || t(\"PickAccounts\", \"Pick accounts (or type custom)...\")}\n value={props.value || []}\n onChange={(names) => props.onChange(names)}\n renderOption={renderOption as MultiSelectProps[\"renderOption\"]}\n // Free-form entry so admins can add account names the framework\n // exposes via `PlayerData.money` keys we couldn't enumerate (qbx).\n // The user types a name + presses Enter to commit it.\n searchable\n hidePickedOptions\n // Mantine 7 spelling — accepts unknown values as tags.\n // `creatable` was renamed in v7+ but legacy fallback is OK.\n styles={styles as MultiSelectProps[\"styles\"]}\n />\n ) : (\n <Select\n {...sharedSelectProps}\n placeholder={placeholder || t(\"PickAccount\", \"Pick an account...\")}\n value={props.value || null}\n onChange={(name) => props.onChange(name)}\n renderOption={renderOption}\n styles={styles}\n />\n )}\n {!hideFrameworkHint && <FrameworkHint framework={framework} />}\n </Flex>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/BlipSelect.tsx","../../src/utils/colorWithAlpha.ts","../../src/utils/misc.ts","../../src/utils/useSettings.ts","../../src/utils/fetchNui.ts","../../src/utils/locales.ts","../../src/utils/useItems.ts","../../src/utils/useFrameworkGroups.ts","../../src/utils/inputMapper.ts","../../src/utils/gtaControls.ts","../../src/components/BorderedIcon.tsx","../../src/components/Motion.tsx","../../src/components/Counter.tsx","../../src/components/FloatingParticles.tsx","../../src/components/InfoBox.tsx","../../src/components/InputContainer.tsx","../../src/hooks/useAudio/store.ts","../../src/components/SegmentedControl.tsx","../../src/components/Navigation.tsx","../../src/components/SegmentedProgress.tsx","../../src/components/Title.tsx","../../src/components/LevelBanner.tsx","../../src/components/LevelPanel.tsx","../../src/components/Modal.tsx","../../src/components/PromptModal.tsx","../../src/components/ModalStore.tsx","../../src/components/ConfirmModal.tsx","../../src/components/MissingItemsBanner.tsx","../../src/hooks/useForm.tsx","../../src/hooks/useScriptConfig.ts","../../src/components/ConfigPanel.tsx","../../src/components/SelectItem.tsx","../../src/components/PositionPicker.tsx","../../src/components/GroupSelect.tsx","../../src/components/FiveMKeyBindInput.tsx","../../src/components/ControlSelect.tsx","../../src/components/AsyncSaveButton.tsx","../../src/components/AdminPageTitle.tsx","../../src/components/SwitchPanel.tsx","../../src/components/TestBed/main.tsx","../../src/components/ThemeOverrideSection.tsx","../../src/utils/gtaAnimPostFx.ts","../../src/components/AnimPostFxSelect.tsx","../../src/utils/gtaScenarios.ts","../../src/components/ScenarioSelect.tsx","../../src/components/DiscordRoleSelect.tsx","../../src/components/AccountSelect.tsx"],"names":["jsxs","Group","jsx","Image","Text","Box","Select","alpha","create","useMantineTheme","Flex","FontAwesomeIcon","motion","AnimatePresence","useRef","useState","useMotionValue","useEffect","Tooltip","Info","clickSoundUrl","hoverSoundUrl","createContext","useContext","useStore","Progress","RingProgress","Portal","X","Button","AlertTriangle","TextInput","t","Trash2","useCallback","RefreshCw","ChevronDown","Check","Copy","createStore","useMemo","QueryClient","Code2","JsonInput","useInfiniteQuery","History","Search","Filter","User","Loader","Fragment","notifications","ArrowLeft","Undo2","Redo2","SaveIcon","XCircle","RotateCcw","QueryClientProvider","MapPin","Crosshair","EyeOff","Eye","NumberInput","MultiSelect","Switch","FlaskConical","ActionIcon","ChevronUp","Stack","generateColors","Palette","ColorInput","Popover","buildGroupedData"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\r\n Group,\r\n Text,\r\n Image,\r\n Box,\r\n Select,\r\n} from \"@mantine/core\";\r\nimport type { ComboboxItem, SelectProps } from \"@mantine/core\";\r\n\r\n// ── Blip icons: [id, name, extension] ──────────────────────────────────────\r\n\r\nconst BLIP_ENTRIES: [number, string, string][] = [\r\n [0,\"radar_higher\",\"gif\"],[1,\"radar_level\",\"png\"],[2,\"radar_lower\",\"gif\"],[3,\"radar_police_ped\",\"gif\"],\r\n [4,\"radar_wanted_radius\",\"png\"],[5,\"radar_area_blip\",\"png\"],[6,\"radar_centre\",\"png\"],[7,\"radar_north\",\"png\"],\r\n [8,\"radar_waypoint\",\"png\"],[9,\"radar_radius_blip\",\"png\"],[10,\"radar_radius_outline_blip\",\"png\"],\r\n [11,\"radar_weapon_higher\",\"gif\"],[12,\"radar_weapon_lower\",\"gif\"],[13,\"radar_higher_ai\",\"gif\"],\r\n [14,\"radar_lower_ai\",\"gif\"],[15,\"radar_police_heli_spin\",\"gif\"],[16,\"radar_police_plane_move\",\"png\"],\r\n [27,\"radar_mp_crew\",\"png\"],[28,\"radar_mp_friendlies\",\"png\"],[36,\"radar_cable_car\",\"png\"],\r\n [37,\"radar_activities\",\"png\"],[38,\"radar_raceflag\",\"png\"],[40,\"radar_safehouse\",\"png\"],\r\n [41,\"radar_police\",\"gif\"],[42,\"radar_police_chase\",\"gif\"],[43,\"radar_police_heli\",\"png\"],\r\n [44,\"radar_bomb_a\",\"png\"],[47,\"radar_snitch\",\"png\"],[48,\"radar_planning_locations\",\"png\"],\r\n [50,\"radar_crim_carsteal\",\"png\"],[51,\"radar_crim_drugs\",\"png\"],[52,\"radar_crim_holdups\",\"png\"],\r\n [54,\"radar_crim_player\",\"png\"],[56,\"radar_cop_patrol\",\"png\"],[57,\"radar_cop_player\",\"png\"],\r\n [58,\"radar_crim_wanted\",\"png\"],[59,\"radar_heist\",\"png\"],[60,\"radar_police_station\",\"png\"],\r\n [61,\"radar_hospital\",\"png\"],[62,\"radar_assassins_mark\",\"png\"],[63,\"radar_elevator\",\"png\"],\r\n [64,\"radar_helicopter\",\"png\"],[66,\"radar_random_character\",\"png\"],[67,\"radar_security_van\",\"png\"],\r\n [68,\"radar_tow_truck\",\"png\"],[70,\"radar_illegal_parking\",\"png\"],[71,\"radar_barber\",\"png\"],\r\n [72,\"radar_car_mod_shop\",\"png\"],[73,\"radar_clothes_store\",\"png\"],[75,\"radar_tattoo\",\"png\"],\r\n [76,\"radar_armenian_family\",\"png\"],[77,\"radar_lester_family\",\"png\"],[78,\"radar_michael_family\",\"png\"],\r\n [79,\"radar_trevor_family\",\"png\"],[80,\"radar_jewelry_heist\",\"png\"],[82,\"radar_drag_race_finish\",\"png\"],\r\n [84,\"radar_rampage\",\"png\"],[85,\"radar_vinewood_tours\",\"png\"],[86,\"radar_lamar_family\",\"png\"],\r\n [88,\"radar_franklin_family\",\"png\"],[89,\"radar_chinese_strand\",\"png\"],[90,\"radar_flight_school\",\"png\"],\r\n [91,\"radar_eye_sky\",\"png\"],[92,\"radar_air_hockey\",\"png\"],[93,\"radar_bar\",\"png\"],\r\n [94,\"radar_base_jump\",\"png\"],[95,\"radar_basketball\",\"png\"],[96,\"radar_biolab_heist\",\"png\"],\r\n [99,\"radar_cabaret_club\",\"png\"],[100,\"radar_car_wash\",\"png\"],[102,\"radar_comedy_club\",\"png\"],\r\n [103,\"radar_darts\",\"png\"],[104,\"radar_docks_heist\",\"png\"],[105,\"radar_fbi_heist\",\"png\"],\r\n [106,\"radar_fbi_officers_strand\",\"png\"],[107,\"radar_finale_bank_heist\",\"png\"],\r\n [108,\"radar_financier_strand\",\"png\"],[109,\"radar_golf\",\"png\"],[110,\"radar_gun_shop\",\"png\"],\r\n [111,\"radar_internet_cafe\",\"png\"],[112,\"radar_michael_family_exile\",\"png\"],\r\n [113,\"radar_nice_house_heist\",\"png\"],[114,\"radar_random_female\",\"png\"],[115,\"radar_random_male\",\"png\"],\r\n [118,\"radar_rural_bank_heist\",\"png\"],[119,\"radar_shooting_range\",\"png\"],\r\n [120,\"radar_solomon_strand\",\"png\"],[121,\"radar_strip_club\",\"png\"],[122,\"radar_tennis\",\"png\"],\r\n [123,\"radar_trevor_family_exile\",\"png\"],[124,\"radar_michael_trevor_family\",\"png\"],\r\n [126,\"radar_triathlon\",\"png\"],[127,\"radar_off_road_racing\",\"png\"],[128,\"radar_gang_cops\",\"png\"],\r\n [129,\"radar_gang_mexicans\",\"png\"],[130,\"radar_gang_bikers\",\"png\"],[133,\"radar_snitch_red\",\"png\"],\r\n [134,\"radar_crim_cuff_keys\",\"png\"],[135,\"radar_cinema\",\"png\"],[136,\"radar_music_venue\",\"png\"],\r\n [137,\"radar_police_station_blue\",\"png\"],[138,\"radar_airport\",\"png\"],\r\n [139,\"radar_crim_saved_vehicle\",\"png\"],[140,\"radar_weed_stash\",\"png\"],[141,\"radar_hunting\",\"png\"],\r\n [142,\"radar_pool\",\"png\"],[143,\"radar_objective_blue\",\"png\"],[144,\"radar_objective_green\",\"png\"],\r\n [145,\"radar_objective_red\",\"png\"],[146,\"radar_objective_yellow\",\"png\"],[147,\"radar_arms_dealing\",\"png\"],\r\n [148,\"radar_mp_friend\",\"png\"],[149,\"radar_celebrity_theft\",\"png\"],\r\n [150,\"radar_weapon_assault_rifle\",\"png\"],[151,\"radar_weapon_bat\",\"png\"],\r\n [152,\"radar_weapon_grenade\",\"png\"],[153,\"radar_weapon_health\",\"png\"],[154,\"radar_weapon_knife\",\"png\"],\r\n [155,\"radar_weapon_molotov\",\"png\"],[156,\"radar_weapon_pistol\",\"png\"],[157,\"radar_weapon_rocket\",\"png\"],\r\n [158,\"radar_weapon_shotgun\",\"png\"],[159,\"radar_weapon_smg\",\"png\"],[160,\"radar_weapon_sniper\",\"png\"],\r\n [161,\"radar_mp_noise\",\"gif\"],[162,\"radar_poi\",\"png\"],[163,\"radar_passive\",\"png\"],\r\n [164,\"radar_usingmenu\",\"png\"],[171,\"radar_gang_cops_partner\",\"png\"],[173,\"radar_weapon_minigun\",\"png\"],\r\n [175,\"radar_weapon_armour\",\"png\"],[176,\"radar_property_takeover\",\"png\"],\r\n [177,\"radar_gang_mexicans_highlight\",\"png\"],[178,\"radar_gang_bikers_highlight\",\"png\"],\r\n [179,\"radar_triathlon_cycling\",\"png\"],[180,\"radar_triathlon_swimming\",\"png\"],\r\n [181,\"radar_property_takeover_bikers\",\"png\"],[182,\"radar_property_takeover_cops\",\"png\"],\r\n [183,\"radar_property_takeover_vagos\",\"png\"],[184,\"radar_camera\",\"png\"],\r\n [185,\"radar_centre_red\",\"png\"],[186,\"radar_handcuff_keys_bikers\",\"png\"],\r\n [187,\"radar_handcuff_keys_vagos\",\"png\"],[188,\"radar_handcuffs_closed_bikers\",\"png\"],\r\n [189,\"radar_handcuffs_closed_vagos\",\"png\"],[192,\"radar_camera_badger\",\"png\"],\r\n [193,\"radar_camera_facade\",\"png\"],[194,\"radar_camera_ifruit\",\"png\"],[197,\"radar_yoga\",\"png\"],\r\n [198,\"radar_taxi\",\"png\"],[205,\"radar_shrink\",\"png\"],[206,\"radar_epsilon\",\"png\"],\r\n [207,\"radar_financier_strand_grey\",\"png\"],[208,\"radar_trevor_family_grey\",\"png\"],\r\n [209,\"radar_trevor_family_red\",\"png\"],[210,\"radar_franklin_family_grey\",\"png\"],\r\n [211,\"radar_franklin_family_blue\",\"png\"],[212,\"radar_franklin_a\",\"png\"],[213,\"radar_franklin_b\",\"png\"],\r\n [214,\"radar_franklin_c\",\"png\"],[225,\"radar_gang_vehicle\",\"png\"],\r\n [226,\"radar_gang_vehicle_bikers\",\"png\"],[227,\"radar_gang_vehicle_cops\",\"png\"],\r\n [228,\"radar_gang_vehicle_vagos\",\"png\"],[229,\"radar_guncar\",\"png\"],\r\n [230,\"radar_driving_bikers\",\"png\"],[231,\"radar_driving_cops\",\"png\"],\r\n [232,\"radar_driving_vagos\",\"png\"],[233,\"radar_gang_cops_highlight\",\"png\"],\r\n [234,\"radar_shield_bikers\",\"png\"],[235,\"radar_shield_cops\",\"png\"],\r\n [236,\"radar_shield_vagos\",\"png\"],[237,\"radar_custody_bikers\",\"png\"],\r\n [238,\"radar_custody_vagos\",\"png\"],[251,\"radar_arms_dealing_air\",\"png\"],\r\n [252,\"radar_playerstate_arrested\",\"png\"],[253,\"radar_playerstate_custody\",\"png\"],\r\n [254,\"radar_playerstate_driving\",\"png\"],[255,\"radar_playerstate_keyholder\",\"png\"],\r\n [256,\"radar_playerstate_partner\",\"png\"],[262,\"radar_ztype\",\"png\"],[263,\"radar_stinger\",\"png\"],\r\n [264,\"radar_packer\",\"png\"],[265,\"radar_monroe\",\"png\"],[266,\"radar_fairground\",\"png\"],\r\n [267,\"radar_property\",\"png\"],[268,\"radar_gang_highlight\",\"png\"],[269,\"radar_altruist\",\"png\"],\r\n [270,\"radar_ai\",\"png\"],[271,\"radar_on_mission\",\"png\"],[272,\"radar_cash_pickup\",\"png\"],\r\n [273,\"radar_chop\",\"png\"],[274,\"radar_dead\",\"png\"],[275,\"radar_territory_locked\",\"png\"],\r\n [276,\"radar_cash_lost\",\"png\"],[277,\"radar_cash_vagos\",\"png\"],[278,\"radar_cash_cops\",\"png\"],\r\n [279,\"radar_hooker\",\"png\"],[280,\"radar_friend\",\"png\"],[281,\"radar_mission_2to4\",\"png\"],\r\n [282,\"radar_mission_2to8\",\"png\"],[283,\"radar_mission_2to12\",\"png\"],[284,\"radar_mission_2to16\",\"png\"],\r\n [285,\"radar_custody_dropoff\",\"png\"],[286,\"radar_onmission_cops\",\"png\"],\r\n [287,\"radar_onmission_lost\",\"png\"],[288,\"radar_onmission_vagos\",\"png\"],\r\n [289,\"radar_crim_carsteal_cops\",\"png\"],[290,\"radar_crim_carsteal_bikers\",\"png\"],\r\n [291,\"radar_crim_carsteal_vagos\",\"png\"],[292,\"radar_band_strand\",\"png\"],\r\n [293,\"radar_simeon_family\",\"png\"],[294,\"radar_mission_1\",\"png\"],[295,\"radar_mission_2\",\"png\"],\r\n [296,\"radar_friend_darts\",\"png\"],[297,\"radar_friend_comedyclub\",\"png\"],\r\n [298,\"radar_friend_cinema\",\"png\"],[299,\"radar_friend_tennis\",\"png\"],\r\n [300,\"radar_friend_stripclub\",\"png\"],[301,\"radar_friend_livemusic\",\"png\"],\r\n [302,\"radar_friend_golf\",\"png\"],[303,\"radar_bounty_hit\",\"png\"],[304,\"radar_ugc_mission\",\"png\"],\r\n [305,\"radar_horde\",\"png\"],[306,\"radar_cratedrop\",\"png\"],[307,\"radar_plane_drop\",\"png\"],\r\n [308,\"radar_sub\",\"png\"],[309,\"radar_race\",\"png\"],[310,\"radar_deathmatch\",\"png\"],\r\n [311,\"radar_arm_wrestling\",\"png\"],[312,\"radar_mission_1to2\",\"png\"],\r\n [313,\"radar_shootingrange_gunshop\",\"png\"],[314,\"radar_race_air\",\"png\"],\r\n [315,\"radar_race_land\",\"png\"],[316,\"radar_race_sea\",\"png\"],[317,\"radar_tow\",\"png\"],\r\n [318,\"radar_garbage\",\"png\"],[319,\"radar_drill\",\"png\"],[320,\"radar_spikes\",\"png\"],\r\n [321,\"radar_firetruck\",\"png\"],[322,\"radar_minigun2\",\"png\"],[323,\"radar_bugstar\",\"png\"],\r\n [324,\"radar_submarine\",\"png\"],[325,\"radar_chinook\",\"png\"],[326,\"radar_getaway_car\",\"png\"],\r\n [327,\"radar_mission_bikers_1\",\"png\"],[328,\"radar_mission_bikers_1to2\",\"png\"],\r\n [329,\"radar_mission_bikers_2\",\"png\"],[330,\"radar_mission_bikers_2to4\",\"png\"],\r\n [331,\"radar_mission_bikers_2to8\",\"png\"],[332,\"radar_mission_bikers_2to12\",\"png\"],\r\n [333,\"radar_mission_bikers_2to16\",\"png\"],[334,\"radar_mission_cops_1\",\"png\"],\r\n [335,\"radar_mission_cops_1to2\",\"png\"],[336,\"radar_mission_cops_2\",\"png\"],\r\n [337,\"radar_mission_cops_2to4\",\"png\"],[338,\"radar_mission_cops_2to8\",\"png\"],\r\n [339,\"radar_mission_cops_2to12\",\"png\"],[340,\"radar_mission_cops_2to16\",\"png\"],\r\n [341,\"radar_mission_vagos_1\",\"png\"],[342,\"radar_mission_vagos_1to2\",\"png\"],\r\n [343,\"radar_mission_vagos_2\",\"png\"],[344,\"radar_mission_vagos_2to4\",\"png\"],\r\n [345,\"radar_mission_vagos_2to8\",\"png\"],[346,\"radar_mission_vagos_2to12\",\"png\"],\r\n [347,\"radar_mission_vagos_2to16\",\"png\"],[348,\"radar_gang_bike\",\"png\"],\r\n [349,\"radar_gas_grenade\",\"png\"],[350,\"radar_property_for_sale\",\"png\"],\r\n [351,\"radar_gang_attack_package\",\"png\"],[352,\"radar_martin_madrazzo\",\"png\"],\r\n [353,\"radar_enemy_heli_spin\",\"gif\"],[354,\"radar_boost\",\"png\"],[355,\"radar_devin\",\"png\"],\r\n [356,\"radar_dock\",\"png\"],[357,\"radar_garage\",\"png\"],[358,\"radar_golf_flag\",\"png\"],\r\n [359,\"radar_hangar\",\"png\"],[360,\"radar_helipad\",\"png\"],[361,\"radar_jerry_can\",\"png\"],\r\n [362,\"radar_mask\",\"png\"],[363,\"radar_heist_prep\",\"png\"],[364,\"radar_incapacitated\",\"png\"],\r\n [365,\"radar_spawn_point_pickup\",\"png\"],[366,\"radar_boilersuit\",\"png\"],\r\n [367,\"radar_completed\",\"png\"],[368,\"radar_rockets\",\"png\"],[369,\"radar_garage_for_sale\",\"png\"],\r\n [370,\"radar_helipad_for_sale\",\"png\"],[371,\"radar_dock_for_sale\",\"png\"],\r\n [372,\"radar_hangar_for_sale\",\"png\"],[373,\"radar_placeholder_6\",\"png\"],\r\n [374,\"radar_business\",\"png\"],[375,\"radar_business_for_sale\",\"png\"],\r\n [376,\"radar_race_bike\",\"png\"],[377,\"radar_parachute\",\"png\"],[378,\"radar_team_deathmatch\",\"png\"],\r\n [379,\"radar_race_foot\",\"png\"],[380,\"radar_vehicle_deathmatch\",\"png\"],\r\n [381,\"radar_barry\",\"png\"],[382,\"radar_dom\",\"png\"],[383,\"radar_maryann\",\"png\"],\r\n [384,\"radar_cletus\",\"png\"],[385,\"radar_josh\",\"png\"],[386,\"radar_minute\",\"png\"],\r\n [387,\"radar_omega\",\"png\"],[388,\"radar_tonya\",\"png\"],[389,\"radar_paparazzo\",\"png\"],\r\n [390,\"radar_aim\",\"png\"],[391,\"radar_cratedrop_background\",\"png\"],\r\n [392,\"radar_green_and_net_player1\",\"png\"],[393,\"radar_green_and_net_player2\",\"png\"],\r\n [394,\"radar_green_and_net_player3\",\"png\"],[395,\"radar_green_and_friendly\",\"png\"],\r\n [396,\"radar_net_player1_and_net_player2\",\"png\"],[397,\"radar_net_player1_and_net_player3\",\"png\"],\r\n [398,\"radar_creator\",\"png\"],[399,\"radar_creator_direction\",\"png\"],[400,\"radar_abigail\",\"png\"],\r\n [401,\"radar_blimp\",\"png\"],[402,\"radar_repair\",\"png\"],[403,\"radar_testosterone\",\"png\"],\r\n [404,\"radar_dinghy\",\"png\"],[405,\"radar_fanatic\",\"png\"],[407,\"radar_info_icon\",\"png\"],\r\n [408,\"radar_capture_the_flag\",\"png\"],[409,\"radar_last_team_standing\",\"png\"],\r\n [410,\"radar_boat\",\"png\"],[411,\"radar_capture_the_flag_base\",\"png\"],\r\n [412,\"radar_mp_crew\",\"png\"],[413,\"radar_capture_the_flag_outline\",\"png\"],\r\n [414,\"radar_capture_the_flag_base_nobag\",\"png\"],[415,\"radar_weapon_jerrycan\",\"png\"],\r\n [416,\"radar_rp\",\"png\"],[417,\"radar_level_inside\",\"png\"],[418,\"radar_bounty_hit_inside\",\"png\"],\r\n [419,\"radar_capture_the_usaflag\",\"png\"],[420,\"radar_capture_the_usaflag_outline\",\"png\"],\r\n [421,\"radar_tank\",\"png\"],[422,\"radar_player_heli\",\"gif\"],[423,\"radar_player_plane\",\"png\"],\r\n [424,\"radar_player_jet\",\"png\"],[425,\"radar_centre_stroke\",\"png\"],\r\n [426,\"radar_player_guncar\",\"png\"],[427,\"radar_player_boat\",\"png\"],\r\n [428,\"radar_mp_heist\",\"png\"],[429,\"radar_temp_1\",\"png\"],[430,\"radar_temp_2\",\"png\"],\r\n [431,\"radar_temp_3\",\"png\"],[432,\"radar_temp_4\",\"png\"],[433,\"radar_temp_5\",\"png\"],\r\n [434,\"radar_temp_6\",\"png\"],[435,\"radar_race_stunt\",\"png\"],[436,\"radar_hot_property\",\"png\"],\r\n [437,\"radar_urbanwarfare_versus\",\"png\"],[438,\"radar_king_of_the_castle\",\"png\"],\r\n [439,\"radar_player_king\",\"png\"],[440,\"radar_dead_drop\",\"png\"],[441,\"radar_penned_in\",\"png\"],\r\n [442,\"radar_beast\",\"png\"],[443,\"radar_edge_pointer\",\"png\"],[444,\"radar_edge_crosstheline\",\"png\"],\r\n [445,\"radar_mp_lamar\",\"png\"],[446,\"radar_bennys\",\"png\"],[447,\"radar_corner_number_1\",\"png\"],\r\n [448,\"radar_corner_number_2\",\"png\"],[449,\"radar_corner_number_3\",\"png\"],\r\n [450,\"radar_corner_number_4\",\"png\"],[451,\"radar_corner_number_5\",\"png\"],\r\n [452,\"radar_corner_number_6\",\"png\"],[453,\"radar_corner_number_7\",\"png\"],\r\n [454,\"radar_corner_number_8\",\"png\"],[455,\"radar_yacht\",\"png\"],\r\n [456,\"radar_finders_keepers\",\"png\"],[457,\"radar_assault_package\",\"png\"],\r\n [458,\"radar_hunt_the_boss\",\"png\"],[459,\"radar_sightseer\",\"png\"],\r\n [460,\"radar_turreted_limo\",\"png\"],[461,\"radar_belly_of_the_beast\",\"png\"],\r\n [462,\"radar_yacht_location\",\"png\"],[463,\"radar_pickup_beast\",\"png\"],\r\n [464,\"radar_pickup_zoned\",\"png\"],[465,\"radar_pickup_random\",\"png\"],\r\n [466,\"radar_pickup_slow_time\",\"png\"],[467,\"radar_pickup_swap\",\"png\"],\r\n [468,\"radar_pickup_thermal\",\"png\"],[469,\"radar_pickup_weed\",\"png\"],\r\n [470,\"radar_weapon_railgun\",\"png\"],[471,\"radar_seashark\",\"png\"],\r\n [472,\"radar_pickup_hidden\",\"png\"],[473,\"radar_warehouse\",\"png\"],\r\n [474,\"radar_warehouse_for_sale\",\"png\"],[475,\"radar_office\",\"png\"],\r\n [476,\"radar_office_for_sale\",\"png\"],[477,\"radar_truck\",\"png\"],\r\n [478,\"radar_contraband\",\"png\"],[479,\"radar_trailer\",\"png\"],[480,\"radar_vip\",\"png\"],\r\n [481,\"radar_cargobob\",\"png\"],[482,\"radar_area_outline_blip\",\"png\"],\r\n [483,\"radar_pickup_accelerator\",\"png\"],[484,\"radar_pickup_ghost\",\"png\"],\r\n [485,\"radar_pickup_detonator\",\"png\"],[486,\"radar_pickup_bomb\",\"png\"],\r\n [487,\"radar_pickup_armoured\",\"png\"],[488,\"radar_stunt\",\"png\"],\r\n [489,\"radar_weapon_lives\",\"png\"],[490,\"radar_stunt_premium\",\"png\"],\r\n [491,\"radar_adversary\",\"png\"],[492,\"radar_biker_clubhouse\",\"png\"],\r\n [493,\"radar_biker_caged_in\",\"png\"],[494,\"radar_biker_turf_war\",\"png\"],\r\n [495,\"radar_biker_joust\",\"png\"],[496,\"radar_production_weed\",\"png\"],\r\n [497,\"radar_production_crack\",\"png\"],[498,\"radar_production_fake_id\",\"png\"],\r\n [499,\"radar_production_meth\",\"png\"],[500,\"radar_production_money\",\"png\"],\r\n [501,\"radar_package\",\"png\"],[502,\"radar_capture_1\",\"png\"],[503,\"radar_capture_2\",\"png\"],\r\n [504,\"radar_capture_3\",\"png\"],[505,\"radar_capture_4\",\"png\"],[506,\"radar_capture_5\",\"png\"],\r\n [507,\"radar_capture_6\",\"png\"],[508,\"radar_capture_7\",\"png\"],[509,\"radar_capture_8\",\"png\"],\r\n [510,\"radar_capture_9\",\"png\"],[511,\"radar_capture_10\",\"png\"],[512,\"radar_quad\",\"png\"],\r\n [513,\"radar_bus\",\"png\"],[514,\"radar_drugs_package\",\"png\"],[515,\"radar_pickup_jump\",\"png\"],\r\n [516,\"radar_adversary_4\",\"png\"],[517,\"radar_adversary_8\",\"png\"],\r\n [518,\"radar_adversary_10\",\"png\"],[519,\"radar_adversary_12\",\"png\"],\r\n [520,\"radar_adversary_16\",\"png\"],[521,\"radar_laptop\",\"png\"],\r\n [522,\"radar_pickup_deadline\",\"png\"],[523,\"radar_sports_car\",\"png\"],\r\n [524,\"radar_warehouse_vehicle\",\"png\"],[525,\"radar_reg_papers\",\"png\"],\r\n [526,\"radar_police_station_dropoff\",\"png\"],[527,\"radar_junkyard\",\"png\"],\r\n [528,\"radar_ex_vech_1\",\"png\"],[529,\"radar_ex_vech_2\",\"png\"],[530,\"radar_ex_vech_3\",\"png\"],\r\n [531,\"radar_ex_vech_4\",\"png\"],[532,\"radar_ex_vech_5\",\"png\"],[533,\"radar_ex_vech_6\",\"png\"],\r\n [534,\"radar_ex_vech_7\",\"png\"],[535,\"radar_target_a\",\"png\"],[536,\"radar_target_b\",\"png\"],\r\n [537,\"radar_target_c\",\"png\"],[538,\"radar_target_d\",\"png\"],[539,\"radar_target_e\",\"png\"],\r\n [540,\"radar_target_f\",\"png\"],[541,\"radar_target_g\",\"png\"],[542,\"radar_target_h\",\"png\"],\r\n [543,\"radar_jugg\",\"png\"],[544,\"radar_pickup_repair\",\"png\"],[545,\"radar_steeringwheel\",\"png\"],\r\n [546,\"radar_trophy\",\"png\"],[547,\"radar_pickup_rocket_boost\",\"png\"],\r\n [548,\"radar_pickup_homing_rocket\",\"png\"],[549,\"radar_pickup_machinegun\",\"png\"],\r\n [550,\"radar_pickup_parachute\",\"png\"],[551,\"radar_pickup_time_5\",\"png\"],\r\n [552,\"radar_pickup_time_10\",\"png\"],[553,\"radar_pickup_time_15\",\"png\"],\r\n [554,\"radar_pickup_time_20\",\"png\"],[555,\"radar_pickup_time_30\",\"png\"],\r\n [556,\"radar_supplies\",\"png\"],[557,\"radar_property_bunker\",\"png\"],\r\n [558,\"radar_gr_wvm_1\",\"png\"],[559,\"radar_gr_wvm_2\",\"png\"],[560,\"radar_gr_wvm_3\",\"png\"],\r\n [561,\"radar_gr_wvm_4\",\"png\"],[562,\"radar_gr_wvm_5\",\"png\"],[563,\"radar_gr_wvm_6\",\"png\"],\r\n [564,\"radar_gr_covert_ops\",\"png\"],[565,\"radar_adversary_bunker\",\"png\"],\r\n [566,\"radar_gr_moc_upgrade\",\"png\"],[567,\"radar_gr_w_upgrade\",\"png\"],\r\n [568,\"radar_sm_cargo\",\"png\"],[569,\"radar_sm_hangar\",\"png\"],[570,\"radar_tf_checkpoint\",\"png\"],\r\n [571,\"radar_race_tf\",\"png\"],[572,\"radar_sm_wp1\",\"png\"],[573,\"radar_sm_wp2\",\"png\"],\r\n [574,\"radar_sm_wp3\",\"png\"],[575,\"radar_sm_wp4\",\"png\"],[576,\"radar_sm_wp5\",\"png\"],\r\n [577,\"radar_sm_wp6\",\"png\"],[578,\"radar_sm_wp7\",\"png\"],[579,\"radar_sm_wp8\",\"png\"],\r\n [580,\"radar_sm_wp9\",\"png\"],[581,\"radar_sm_wp10\",\"png\"],[582,\"radar_sm_wp11\",\"png\"],\r\n [583,\"radar_sm_wp12\",\"png\"],[584,\"radar_sm_wp13\",\"png\"],[585,\"radar_sm_wp14\",\"png\"],\r\n [586,\"radar_nhp_bag\",\"png\"],[587,\"radar_nhp_chest\",\"png\"],[588,\"radar_nhp_orbit\",\"png\"],\r\n [589,\"radar_nhp_veh1\",\"png\"],[590,\"radar_nhp_base\",\"png\"],[591,\"radar_nhp_overlay\",\"png\"],\r\n [592,\"radar_nhp_turret\",\"png\"],[593,\"radar_nhp_mg_firewall\",\"png\"],\r\n [594,\"radar_nhp_mg_node\",\"png\"],[595,\"radar_nhp_wp1\",\"png\"],[596,\"radar_nhp_wp2\",\"png\"],\r\n [597,\"radar_nhp_wp3\",\"png\"],[598,\"radar_nhp_wp4\",\"png\"],[599,\"radar_nhp_wp5\",\"png\"],\r\n [600,\"radar_nhp_wp6\",\"png\"],[601,\"radar_nhp_wp7\",\"png\"],[602,\"radar_nhp_wp8\",\"png\"],\r\n [603,\"radar_nhp_wp9\",\"png\"],[604,\"radar_nhp_cctv\",\"png\"],[605,\"radar_nhp_starterpack\",\"png\"],\r\n [606,\"radar_nhp_turret_console\",\"png\"],[607,\"radar_nhp_mg_mir_rotate\",\"png\"],\r\n [608,\"radar_nhp_mg_mir_static\",\"png\"],[609,\"radar_nhp_mg_proxy\",\"png\"],\r\n [610,\"radar_acsr_race_target\",\"png\"],[611,\"radar_acsr_race_hotring\",\"png\"],\r\n [612,\"radar_acsr_wp1\",\"png\"],[613,\"radar_acsr_wp2\",\"png\"],\r\n [614,\"radar_bat_club_property\",\"png\"],[615,\"radar_bat_cargo\",\"png\"],\r\n [616,\"radar_bat_truck\",\"png\"],[617,\"radar_bat_hack_jewel\",\"png\"],\r\n [618,\"radar_bat_hack_gold\",\"png\"],[619,\"radar_bat_keypad\",\"png\"],\r\n [620,\"radar_bat_hack_target\",\"png\"],[621,\"radar_pickup_dtb_health\",\"png\"],\r\n [622,\"radar_pickup_dtb_blast_increase\",\"png\"],[623,\"radar_pickup_dtb_blast_decrease\",\"png\"],\r\n [624,\"radar_pickup_dtb_bomb_increase\",\"png\"],[625,\"radar_pickup_dtb_bomb_decrease\",\"png\"],\r\n [626,\"radar_bat_rival_club\",\"png\"],[627,\"radar_bat_drone\",\"png\"],\r\n [628,\"radar_bat_cash_reg\",\"png\"],[629,\"radar_cctv\",\"png\"],\r\n [630,\"radar_bat_assassinate\",\"png\"],[631,\"radar_bat_pbus\",\"png\"],\r\n [632,\"radar_bat_wp1\",\"png\"],[633,\"radar_bat_wp2\",\"png\"],[634,\"radar_bat_wp3\",\"png\"],\r\n [635,\"radar_bat_wp4\",\"png\"],[636,\"radar_bat_wp5\",\"png\"],[637,\"radar_bat_wp6\",\"png\"],\r\n [638,\"radar_blimp_2\",\"png\"],[639,\"radar_oppressor_2\",\"png\"],[640,\"radar_bat_wp7\",\"png\"],\r\n [641,\"radar_arena_series\",\"png\"],[642,\"radar_arena_premium\",\"png\"],\r\n [643,\"radar_arena_workshop\",\"png\"],[644,\"radar_race_wars\",\"png\"],\r\n [645,\"radar_arena_turret\",\"png\"],[646,\"radar_arena_rc_car\",\"png\"],\r\n [647,\"radar_arena_rc_workshop\",\"png\"],[648,\"radar_arena_trap_fire\",\"png\"],\r\n [649,\"radar_arena_trap_flip\",\"png\"],[650,\"radar_arena_trap_sea\",\"png\"],\r\n [651,\"radar_arena_trap_turn\",\"png\"],[652,\"radar_arena_trap_pit\",\"png\"],\r\n [653,\"radar_arena_trap_mine\",\"png\"],[654,\"radar_arena_trap_bomb\",\"png\"],\r\n [655,\"radar_arena_trap_wall\",\"png\"],[656,\"radar_arena_trap_brd\",\"png\"],\r\n [657,\"radar_arena_trap_sbrd\",\"png\"],[658,\"radar_arena_bruiser\",\"png\"],\r\n [659,\"radar_arena_brutus\",\"png\"],[660,\"radar_arena_cerberus\",\"png\"],\r\n [661,\"radar_arena_deathbike\",\"png\"],[662,\"radar_arena_dominator\",\"png\"],\r\n [663,\"radar_arena_impaler\",\"png\"],[664,\"radar_arena_imperator\",\"png\"],\r\n [665,\"radar_arena_issi\",\"png\"],[666,\"radar_arena_sasquatch\",\"png\"],\r\n [667,\"radar_arena_scarab\",\"png\"],[668,\"radar_arena_slamvan\",\"png\"],\r\n [669,\"radar_arena_zr380\",\"png\"],[670,\"radar_ap\",\"png\"],[671,\"radar_comic_store\",\"png\"],\r\n [672,\"radar_cop_car\",\"png\"],[673,\"radar_rc_time_trials\",\"png\"],\r\n [674,\"radar_king_of_the_hill\",\"png\"],[675,\"radar_king_of_the_hill_teams\",\"png\"],\r\n [676,\"radar_rucksack\",\"png\"],[677,\"radar_shipping_container\",\"png\"],\r\n [678,\"radar_agatha\",\"png\"],[679,\"radar_casino\",\"png\"],\r\n [680,\"radar_casino_table_games\",\"png\"],[681,\"radar_casino_wheel\",\"png\"],\r\n [682,\"radar_casino_concierge\",\"png\"],[683,\"radar_casino_chips\",\"png\"],\r\n [684,\"radar_casino_horse_racing\",\"png\"],[685,\"radar_adversary_featured\",\"png\"],\r\n [686,\"radar_roulette_1\",\"png\"],[687,\"radar_roulette_2\",\"png\"],\r\n [688,\"radar_roulette_3\",\"png\"],[689,\"radar_roulette_4\",\"png\"],\r\n [690,\"radar_roulette_5\",\"png\"],[691,\"radar_roulette_6\",\"png\"],\r\n [692,\"radar_roulette_7\",\"png\"],[693,\"radar_roulette_8\",\"png\"],\r\n [694,\"radar_roulette_9\",\"png\"],[695,\"radar_roulette_10\",\"png\"],\r\n [696,\"radar_roulette_11\",\"png\"],[697,\"radar_roulette_12\",\"png\"],\r\n [698,\"radar_roulette_13\",\"png\"],[699,\"radar_roulette_14\",\"png\"],\r\n [700,\"radar_roulette_15\",\"png\"],[701,\"radar_roulette_16\",\"png\"],\r\n [702,\"radar_roulette_17\",\"png\"],[703,\"radar_roulette_18\",\"png\"],\r\n [704,\"radar_roulette_19\",\"png\"],[705,\"radar_roulette_20\",\"png\"],\r\n [706,\"radar_roulette_21\",\"png\"],[707,\"radar_roulette_22\",\"png\"],\r\n [708,\"radar_roulette_23\",\"png\"],[709,\"radar_roulette_24\",\"png\"],\r\n [710,\"radar_roulette_25\",\"png\"],[711,\"radar_roulette_26\",\"png\"],\r\n [712,\"radar_roulette_27\",\"png\"],[713,\"radar_roulette_28\",\"png\"],\r\n [714,\"radar_roulette_29\",\"png\"],[715,\"radar_roulette_30\",\"png\"],\r\n [716,\"radar_roulette_31\",\"png\"],[717,\"radar_roulette_32\",\"png\"],\r\n [718,\"radar_roulette_33\",\"png\"],[719,\"radar_roulette_34\",\"png\"],\r\n [720,\"radar_roulette_35\",\"png\"],[721,\"radar_roulette_36\",\"png\"],\r\n [722,\"radar_roulette_0\",\"png\"],[723,\"radar_roulette_00\",\"png\"],\r\n [724,\"radar_limo\",\"png\"],[725,\"radar_weapon_alien\",\"png\"],\r\n [726,\"radar_race_open_wheel\",\"png\"],[727,\"radar_rappel\",\"png\"],\r\n [728,\"radar_swap_car\",\"png\"],[729,\"radar_scuba_gear\",\"png\"],\r\n [730,\"radar_cpanel_1\",\"png\"],[731,\"radar_cpanel_2\",\"png\"],\r\n [732,\"radar_cpanel_3\",\"png\"],[733,\"radar_cpanel_4\",\"png\"],\r\n [734,\"radar_snow_truck\",\"png\"],[735,\"radar_buggy_1\",\"png\"],[736,\"radar_buggy_2\",\"png\"],\r\n [737,\"radar_zhaba\",\"png\"],[738,\"radar_gerald\",\"png\"],[739,\"radar_ron\",\"png\"],\r\n [740,\"radar_arcade\",\"png\"],[741,\"radar_drone_controls\",\"png\"],[742,\"radar_rc_tank\",\"png\"],\r\n [743,\"radar_stairs\",\"png\"],[744,\"radar_camera_2\",\"png\"],[745,\"radar_winky\",\"png\"],\r\n [746,\"radar_mini_sub\",\"png\"],[747,\"radar_kart_retro\",\"png\"],[748,\"radar_kart_modern\",\"png\"],\r\n [749,\"radar_military_quad\",\"png\"],[750,\"radar_military_truck\",\"png\"],\r\n [751,\"radar_ship_wheel\",\"png\"],[752,\"radar_ufo\",\"png\"],[753,\"radar_seasparrow2\",\"png\"],\r\n [754,\"radar_dinghy2\",\"png\"],[755,\"radar_patrol_boat\",\"png\"],\r\n [756,\"radar_retro_sports_car\",\"png\"],[757,\"radar_squadee\",\"png\"],\r\n [758,\"radar_folding_wing_jet\",\"png\"],[759,\"radar_valkyrie2\",\"png\"],\r\n [760,\"radar_sub2\",\"png\"],[761,\"radar_bolt_cutters\",\"png\"],\r\n [762,\"radar_rappel_gear\",\"png\"],[763,\"radar_keycard\",\"png\"],\r\n [764,\"radar_password\",\"png\"],[765,\"radar_island_heist_prep\",\"png\"],\r\n [766,\"radar_island_party\",\"png\"],[767,\"radar_control_tower\",\"png\"],\r\n [768,\"radar_underwater_gate\",\"png\"],[769,\"radar_power_switch\",\"png\"],\r\n [770,\"radar_compound_gate\",\"png\"],[771,\"radar_rappel_point\",\"png\"],\r\n [772,\"radar_keypad\",\"png\"],[773,\"radar_sub_controls\",\"png\"],\r\n [774,\"radar_sub_periscope\",\"png\"],[775,\"radar_sub_missile\",\"png\"],\r\n [776,\"radar_painting\",\"png\"],[777,\"radar_car_meet\",\"png\"],\r\n [778,\"radar_car_test_area\",\"png\"],[779,\"radar_auto_shop_property\",\"png\"],\r\n [780,\"radar_docks_export\",\"png\"],[781,\"radar_prize_car\",\"png\"],\r\n [782,\"radar_test_car\",\"png\"],[783,\"radar_car_robbery_board\",\"png\"],\r\n [784,\"radar_car_robbery_prep\",\"png\"],[785,\"radar_street_race_series\",\"png\"],\r\n [786,\"radar_pursuit_series\",\"png\"],[787,\"radar_car_meet_organiser\",\"png\"],\r\n [788,\"radar_securoserv\",\"png\"],[789,\"radar_bounty_collectibles\",\"png\"],\r\n [790,\"radar_movie_collectibles\",\"png\"],[791,\"radar_trailer_ramp\",\"png\"],\r\n [792,\"radar_race_organiser\",\"png\"],[793,\"radar_chalkboard_list\",\"png\"],\r\n [794,\"radar_export_vehicle\",\"png\"],[795,\"radar_train\",\"png\"],\r\n [796,\"radar_heist_diamond\",\"png\"],[797,\"radar_heist_doomsday\",\"png\"],\r\n [798,\"radar_heist_island\",\"png\"],[799,\"radar_slamvan2\",\"png\"],\r\n [800,\"radar_crusader\",\"png\"],[801,\"radar_construction_outfit\",\"png\"],\r\n [802,\"radar_overlay_jammed\",\"png\"],[803,\"radar_heist_island_unavailable\",\"png\"],\r\n [804,\"radar_heist_diamond_unavailable\",\"png\"],[805,\"radar_heist_doomsday_unavailable\",\"png\"],\r\n [806,\"radar_placeholder_7\",\"png\"],[807,\"radar_placeholder_8\",\"png\"],\r\n [808,\"radar_placeholder_9\",\"png\"],[809,\"radar_featured_series\",\"png\"],\r\n [810,\"radar_vehicle_for_sale\",\"png\"],[811,\"radar_van_keys\",\"png\"],\r\n [812,\"radar_suv_service\",\"png\"],[813,\"radar_security_contract\",\"png\"],\r\n [814,\"radar_safe\",\"png\"],[815,\"radar_ped_r\",\"png\"],[816,\"radar_ped_e\",\"png\"],\r\n [817,\"radar_payphone\",\"png\"],[818,\"radar_patriot3\",\"png\"],\r\n [819,\"radar_music_studio\",\"png\"],[820,\"radar_jubilee\",\"png\"],\r\n [821,\"radar_granger2\",\"png\"],[822,\"radar_explosive_charge\",\"png\"],\r\n [823,\"radar_deity\",\"png\"],[824,\"radar_d_champion\",\"png\"],[825,\"radar_buffalo4\",\"png\"],\r\n [826,\"radar_agency\",\"png\"],[827,\"radar_biker_bar\",\"png\"],\r\n [828,\"radar_simeon_overlay\",\"png\"],[829,\"radar_junk_skydive\",\"png\"],\r\n [830,\"radar_luxury_car_showroom\",\"png\"],[831,\"radar_car_showroom\",\"png\"],\r\n [832,\"radar_car_showroom_simeon\",\"png\"],[833,\"radar_flaming_skull\",\"png\"],\r\n [834,\"radar_weapon_ammo\",\"png\"],[835,\"radar_community_series\",\"png\"],\r\n [836,\"radar_cayo_series\",\"png\"],[837,\"radar_clubhouse_contract\",\"png\"],\r\n [838,\"radar_agent_ulp\",\"png\"],[839,\"radar_acid\",\"png\"],[840,\"radar_acid_lab\",\"png\"],\r\n [841,\"radar_dax_overlay\",\"png\"],[842,\"radar_dead_drop_package\",\"png\"],\r\n [843,\"radar_downtown_cab\",\"png\"],[844,\"radar_gun_van\",\"png\"],\r\n [845,\"radar_stash_house\",\"png\"],[846,\"radar_tractor\",\"png\"],\r\n [847,\"radar_warehouse_juggalo\",\"png\"],[848,\"radar_warehouse_juggalo_dax\",\"png\"],\r\n [849,\"radar_weapon_crowbar\",\"png\"],[850,\"radar_duffel_bag\",\"png\"],\r\n [851,\"radar_oil_tanker\",\"png\"],[852,\"radar_acid_lab_tent\",\"png\"],\r\n [853,\"radar_van_burrito\",\"png\"],[854,\"radar_acid_boost\",\"png\"],\r\n [855,\"radar_ped_gang_leader\",\"png\"],[856,\"radar_multistorey_garage\",\"png\"],\r\n [857,\"radar_seized_asset_sales\",\"png\"],[858,\"radar_cayo_attrition\",\"png\"],\r\n [859,\"radar_bicycle\",\"png\"],[860,\"radar_bicycle_trial\",\"png\"],\r\n [861,\"radar_raiju\",\"png\"],[862,\"radar_conada2\",\"png\"],\r\n [863,\"radar_overlay_ready_for_sell\",\"png\"],[864,\"radar_overlay_missing_supplies\",\"png\"],\r\n [865,\"radar_streamer216\",\"png\"],[866,\"radar_signal_jammer\",\"png\"],\r\n [867,\"radar_salvage_yard\",\"png\"],[868,\"radar_robbery_prep_equipment\",\"png\"],\r\n [869,\"radar_robbery_prep_overlay\",\"png\"],[870,\"radar_yusuf\",\"png\"],\r\n [871,\"radar_vincent\",\"png\"],[872,\"radar_vinewood_garage\",\"png\"],\r\n [873,\"radar_lstb\",\"png\"],[874,\"radar_cctv_workstation\",\"png\"],\r\n [875,\"radar_hacking_device\",\"png\"],[876,\"radar_race_drag\",\"png\"],\r\n [877,\"radar_race_drift\",\"png\"],[878,\"radar_casino_prep\",\"png\"],\r\n [879,\"radar_planning_wall\",\"png\"],[880,\"radar_weapon_crate\",\"png\"],\r\n [881,\"radar_weapon_snowball\",\"png\"],[882,\"radar_train_signals_green\",\"png\"],\r\n [883,\"radar_train_signals_red\",\"png\"],[884,\"radar_office_transporter\",\"png\"],\r\n [885,\"radar_yankton_survival\",\"png\"],[886,\"radar_daily_bounty\",\"png\"],\r\n [887,\"radar_bounty_target\",\"png\"],[888,\"radar_filming_schedule\",\"png\"],\r\n [889,\"radar_pizza_this\",\"png\"],[890,\"radar_aircraft_carrier\",\"png\"],\r\n [891,\"radar_weapon_emp\",\"png\"],[892,\"radar_maude_eccles\",\"png\"],\r\n [893,\"radar_bail_bonds_office\",\"png\"],[894,\"radar_weapon_emp_mine\",\"png\"],\r\n [895,\"radar_zombie_disease\",\"png\"],[896,\"radar_zombie_proximity\",\"png\"],\r\n [897,\"radar_zombie_fire\",\"png\"],[898,\"radar_animal_possessed\",\"png\"],\r\n [899,\"radar_mobile_phone\",\"png\"],[900,\"radar_garment_factory\",\"png\"],\r\n [901,\"radar_garment_factory_for_sale\",\"png\"],[902,\"radar_garment_factory_equipment\",\"png\"],\r\n [903,\"radar_field_hangar\",\"png\"],[904,\"radar_field_hangar_for_sale\",\"png\"],\r\n [905,\"radar_cargobob_ch53\",\"png\"],[906,\"radar_chopper_lift_ammo\",\"png\"],\r\n [907,\"radar_chopper_lift_armor\",\"png\"],[908,\"radar_chopper_lift_explosives\",\"png\"],\r\n [909,\"radar_chopper_lift_upgrade\",\"png\"],[910,\"radar_chopper_lift_weapon\",\"png\"],\r\n [911,\"radar_cargo_ship\",\"png\"],[912,\"radar_submarine_missile\",\"png\"],\r\n [913,\"radar_propeller_engine\",\"png\"],[914,\"radar_shark\",\"png\"],\r\n [915,\"radar_fast_travel\",\"png\"],[916,\"radar_plane_duster2\",\"png\"],\r\n [917,\"radar_plane_titan2\",\"png\"],[918,\"radar_collectible\",\"png\"],\r\n [919,\"radar_field_hangar_discount\",\"png\"],[920,\"radar_garment_factory_discount\",\"png\"],\r\n [921,\"radar_weapon_gusenberg_sweeper\",\"png\"],[922,\"radar_weapon_tear_gas\",\"png\"],\r\n [923,\"radar_dog\",\"png\"],[924,\"radar_bobcat_security\",\"png\"],\r\n [925,\"radar_smoke_shop\",\"png\"],[926,\"radar_smoke_shop_for_sale\",\"png\"],\r\n [927,\"radar_smoke_shop_attention\",\"png\"],[928,\"radar_helitours\",\"png\"],\r\n [929,\"radar_helitours_for_sale\",\"png\"],[930,\"radar_helitours_attention\",\"png\"],\r\n [931,\"radar_car_wash_business\",\"png\"],[932,\"radar_car_wash_business_for_sale\",\"png\"],\r\n [933,\"radar_car_wash_business_attention\",\"png\"],[934,\"radar_attention\",\"png\"],\r\n [935,\"radar_alarm\",\"png\"],[936,\"radar_helitours_discount\",\"png\"],\r\n [937,\"radar_smoke_shop_discount\",\"png\"],[938,\"radar_car_wash_business_discount\",\"png\"],\r\n [939,\"radar_real_estate\",\"png\"],[940,\"radar_medical_courier\",\"png\"],\r\n [941,\"radar_gruppe_sechs\",\"png\"],[942,\"radar_fire_station\",\"png\"],\r\n [943,\"radar_fire_truck\",\"png\"],[944,\"radar_alpha_mail\",\"png\"],\r\n [945,\"radar_ls_meteor\",\"png\"],[946,\"radar_four20_survival\",\"png\"],\r\n [947,\"radar_community_mission_series\",\"png\"],[948,\"radar_property_mansion\",\"png\"],\r\n [949,\"radar_ai_keypad\",\"png\"],[950,\"radar_taxi_self_drive\",\"png\"],\r\n [951,\"radar_train_subway\",\"png\"],[952,\"radar_trashbag\",\"png\"],\r\n [953,\"radar_mission_creator\",\"png\"],[954,\"radar_cat\",\"png\"],\r\n [955,\"radar_mansion_ai_m\",\"png\"],[956,\"radar_mansion_ai_f\",\"png\"],\r\n [957,\"radar_mansion_ai_gang\",\"png\"],\r\n];\r\n\r\nconst BLIP_BASE = \"https://docs.fivem.net/blips/\";\r\n\r\nfunction blipUrl(name: string, ext: string) {\r\n return `${BLIP_BASE}${name}.${ext}`;\r\n}\r\n\r\n// ── Blip colors: [id, label, hex] ──────────────────────────────────────────\r\n\r\nconst BLIP_COLORS: [number, string, string][] = [\r\n [0,\"White\",\"#FFFFFF\"],[1,\"Red\",\"#E54141\"],[2,\"Green\",\"#3FA83F\"],\r\n [3,\"Blue\",\"#5B8CCF\"],[4,\"White\",\"#FFFFFF\"],[5,\"Yellow\",\"#F0D453\"],\r\n [6,\"Light Red\",\"#E88888\"],[7,\"Violet\",\"#8C5FA8\"],[8,\"Pink\",\"#E878C8\"],\r\n [9,\"Light Orange\",\"#F0A861\"],[10,\"Light Brown\",\"#C1A470\"],[11,\"Light Green\",\"#94D468\"],\r\n [12,\"Light Blue\",\"#68C8E8\"],[13,\"Light Purple\",\"#B898E8\"],[14,\"Dark Purple\",\"#583E8E\"],\r\n [15,\"Cyan\",\"#48C8B8\"],[16,\"Light Yellow\",\"#E8E898\"],[17,\"Orange\",\"#E87830\"],\r\n [18,\"Light Blue\",\"#78A8E8\"],[19,\"Dark Pink\",\"#C83878\"],[20,\"Dark Yellow\",\"#A0A038\"],\r\n [21,\"Dark Orange\",\"#B07828\"],[22,\"Light Gray\",\"#B0B0B0\"],[23,\"Light Pink\",\"#E8A8C0\"],\r\n [24,\"Lemon Green\",\"#88F068\"],[25,\"Forest Green\",\"#388038\"],[26,\"Electric Blue\",\"#2060E0\"],\r\n [27,\"Bright Purple\",\"#9840E0\"],[28,\"Dark Yellow\",\"#7C7C28\"],[29,\"Dark Blue\",\"#283878\"],\r\n [30,\"Dark Cyan\",\"#287078\"],[31,\"Light Brown\",\"#A08858\"],[32,\"Light Blue\",\"#78B0E8\"],\r\n [33,\"Light Yellow\",\"#E8E868\"],[34,\"Light Pink\",\"#F0A0C0\"],[35,\"Light Red\",\"#E07868\"],\r\n [36,\"Beige\",\"#D8C898\"],[37,\"White\",\"#FFFFFF\"],[38,\"Blue\",\"#4870A0\"],\r\n [39,\"Light Gray\",\"#909898\"],[40,\"Dark Gray\",\"#585858\"],[41,\"Pink Red\",\"#E07088\"],\r\n [42,\"Blue\",\"#5090B8\"],[43,\"Light Green\",\"#88C868\"],[44,\"Light Orange\",\"#E09048\"],\r\n [45,\"White\",\"#F0F0F0\"],[46,\"Gold\",\"#D8B838\"],[47,\"Orange\",\"#E07020\"],\r\n];\r\n\r\n// ── Data for Select ────────────────────────────────────────────────────────\r\n\r\nconst BLIP_ICON_DATA: ComboboxItem[] = BLIP_ENTRIES.map(([id, name]) => ({\r\n value: String(id),\r\n label: `${id} — ${name}`,\r\n}));\r\n\r\nconst BLIP_COLOR_DATA: ComboboxItem[] = BLIP_COLORS.map(([id, label]) => ({\r\n value: String(id),\r\n label: `${id} — ${label}`,\r\n}));\r\n\r\n// lookup maps for rendering\r\nconst blipEntryMap = new Map(BLIP_ENTRIES.map(([id, name, ext]) => [String(id), { id, name, ext }]));\r\nconst blipColorMap = new Map(BLIP_COLORS.map(([id, label, hex]) => [String(id), { id, label, hex }]));\r\n\r\n// ── Render helpers ─────────────────────────────────────────────────────────\r\n\r\nconst renderBlipOption: SelectProps[\"renderOption\"] = ({ option }) => {\r\n const entry = blipEntryMap.get(option.value);\r\n if (!entry) return option.label;\r\n return (\r\n <Group gap=\"sm\" wrap=\"nowrap\">\r\n <Image\r\n src={blipUrl(entry.name, entry.ext)}\r\n alt={entry.name}\r\n w={24} h={24}\r\n fit=\"contain\"\r\n style={{ imageRendering: \"pixelated\" }}\r\n />\r\n <Text size=\"xs\" truncate>\r\n {entry.id} — {entry.name}\r\n </Text>\r\n </Group>\r\n );\r\n};\r\n\r\nconst renderColorOption: SelectProps[\"renderOption\"] = ({ option }) => {\r\n const entry = blipColorMap.get(option.value);\r\n if (!entry) return option.label;\r\n return (\r\n <Group gap=\"sm\" wrap=\"nowrap\">\r\n <Box\r\n w={24} h={24}\r\n style={{\r\n borderRadius: 4,\r\n backgroundColor: entry.hex,\r\n border: \"1px solid rgba(255,255,255,0.15)\",\r\n flexShrink: 0,\r\n }}\r\n />\r\n <Text size=\"xs\" truncate>\r\n {entry.id} — {entry.label}\r\n </Text>\r\n </Group>\r\n );\r\n};\r\n\r\n// ── BlipIconSelect ─────────────────────────────────────────────────────────\r\n\r\nexport type BlipIconSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\" | \"searchable\" | \"renderOption\"> & {\r\n value: number | null;\r\n onChange: (id: number) => void;\r\n};\r\n\r\nexport function BlipIconSelect({ value, onChange, label = \"Blip Icon\", size = \"xs\", ...rest }: BlipIconSelectProps) {\r\n const entry = value != null ? blipEntryMap.get(String(value)) : undefined;\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n {...rest}\r\n searchable\r\n data={BLIP_ICON_DATA}\r\n value={value != null ? String(value) : null}\r\n onChange={(val) => val != null && onChange(Number(val))}\r\n renderOption={renderBlipOption}\r\n maxDropdownHeight={300}\r\n nothingFoundMessage=\"No results\"\r\n leftSection={\r\n entry ? (\r\n <Image\r\n src={blipUrl(entry.name, entry.ext)}\r\n alt={entry.name}\r\n w={18} h={18}\r\n fit=\"contain\"\r\n style={{ imageRendering: \"pixelated\" }}\r\n />\r\n ) : undefined\r\n }\r\n />\r\n );\r\n}\r\n\r\n// ── BlipColorSelect ────────────────────────────────────────────────────────\r\n\r\nexport type BlipColorSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\" | \"searchable\" | \"renderOption\"> & {\r\n value: number | null;\r\n onChange: (id: number) => void;\r\n};\r\n\r\nexport function BlipColorSelect({ value, onChange, label = \"Blip Color\", size = \"xs\", ...rest }: BlipColorSelectProps) {\r\n const entry = value != null ? blipColorMap.get(String(value)) : undefined;\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n {...rest}\r\n searchable\r\n data={BLIP_COLOR_DATA}\r\n value={value != null ? String(value) : null}\r\n onChange={(val) => val != null && onChange(Number(val))}\r\n renderOption={renderColorOption}\r\n maxDropdownHeight={300}\r\n nothingFoundMessage=\"No results\"\r\n leftSection={\r\n entry ? (\r\n <Box\r\n w={18} h={18}\r\n style={{\r\n borderRadius: 4,\r\n backgroundColor: entry.hex,\r\n border: \"1px solid rgba(255,255,255,0.15)\",\r\n flexShrink: 0,\r\n }}\r\n />\r\n ) : undefined\r\n }\r\n />\r\n );\r\n}\r\n\r\n// ── BlipDisplaySelect ──────────────────────────────────────────────────────\r\n// Sets the FiveM blip's display behaviour. Most server owners only want one\r\n// of the four meaningful patterns; the duplicate ids are exposed verbatim so\r\n// existing saved values keep displaying correctly.\r\n\r\nconst BLIP_DISPLAY_DATA: { value: string; label: string }[] = [\r\n { value: \"2\", label: \"2 — Main map + minimap (selectable)\" },\r\n { value: \"3\", label: \"3 — Main map only (selectable)\" },\r\n { value: \"4\", label: \"4 — Main map only (selectable)\" },\r\n { value: \"5\", label: \"5 — Minimap only\" },\r\n { value: \"6\", label: \"6 — Main map + minimap (selectable)\" },\r\n { value: \"8\", label: \"8 — Main map + minimap (not selectable)\" },\r\n { value: \"9\", label: \"9 — Minimap only\" },\r\n { value: \"10\", label: \"10 — Main map + minimap (not selectable)\" },\r\n];\r\n\r\nexport type BlipDisplaySelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\r\n value: number | null;\r\n onChange: (id: number) => void;\r\n};\r\n\r\nexport function BlipDisplaySelect({ value, onChange, label = \"Blip Display\", size = \"xs\", ...rest }: BlipDisplaySelectProps) {\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n {...rest}\r\n data={BLIP_DISPLAY_DATA}\r\n value={value != null ? String(value) : null}\r\n onChange={(val) => val != null && onChange(Number(val))}\r\n allowDeselect={false}\r\n maxDropdownHeight={300}\r\n />\r\n );\r\n}\r\n","\r\nconst colorNames = {\r\n AliceBlue: { r: 240, g: 248, b: 255 },\r\n AntiqueWhite: { r: 250, g: 235, b: 215 },\r\n Aqua: { r: 0, g: 255, b: 255 },\r\n Aquamarine: { r: 127, g: 255, b: 212 },\r\n Azure: { r: 240, g: 255, b: 255 },\r\n Beige: { r: 245, g: 245, b: 220 },\r\n Bisque: { r: 255, g: 228, b: 196 },\r\n Black: { r: 0, g: 0, b: 0 },\r\n BlanchedAlmond: { r: 255, g: 235, b: 205 },\r\n Blue: { r: 0, g: 0, b: 255 },\r\n BlueViolet: { r: 138, g: 43, b: 226 },\r\n Brown: { r: 165, g: 42, b: 42 },\r\n BurlyWood: { r: 222, g: 184, b: 135 },\r\n CadetBlue: { r: 95, g: 158, b: 160 },\r\n Chartreuse: { r: 127, g: 255, b: 0 },\r\n Chocolate: { r: 210, g: 105, b: 30 },\r\n Coral: { r: 255, g: 127, b: 80 },\r\n CornflowerBlue: { r: 100, g: 149, b: 237 },\r\n Cornsilk: { r: 255, g: 248, b: 220 },\r\n Crimson: { r: 220, g: 20, b: 60 },\r\n Cyan: { r: 0, g: 255, b: 255 },\r\n DarkBlue: { r: 0, g: 0, b: 139 },\r\n DarkCyan: { r: 0, g: 139, b: 139 },\r\n DarkGoldenRod: { r: 184, g: 134, b: 11 },\r\n DarkGray: { r: 169, g: 169, b: 169 },\r\n DarkGreen: { r: 0, g: 100, b: 0 },\r\n DarkKhaki: { r: 189, g: 183, b: 107 },\r\n DarkMagenta: { r: 139, g: 0, b: 139 },\r\n DarkOliveGreen: { r: 85, g: 107, b: 47 },\r\n DarkOrange: { r: 255, g: 140, b: 0 },\r\n DarkOrchid: { r: 153, g: 50, b: 204 },\r\n DarkRed: { r: 139, g: 0, b: 0 },\r\n DarkSalmon: { r: 233, g: 150, b: 122 },\r\n DarkSeaGreen: { r: 143, g: 188, b: 143 },\r\n DarkSlateBlue: { r: 72, g: 61, b: 139 },\r\n DarkSlateGray: { r: 47, g: 79, b: 79 },\r\n DarkTurquoise: { r: 0, g: 206, b: 209 },\r\n DarkViolet: { r: 148, g: 0, b: 211 },\r\n DeepPink: { r: 255, g: 20, b: 147 },\r\n DeepSkyBlue: { r: 0, g: 191, b: 255 },\r\n DimGray: { r: 105, g: 105, b: 105 },\r\n DodgerBlue: { r: 30, g: 144, b: 255 },\r\n FireBrick: { r: 178, g: 34, b: 34 },\r\n FloralWhite: { r: 255, g: 250, b: 240 },\r\n ForestGreen: { r: 34, g: 139, b: 34 },\r\n Fuchsia: { r: 255, g: 0, b: 255 },\r\n Gainsboro: { r: 220, g: 220, b: 220 },\r\n GhostWhite: { r: 248, g: 248, b: 255 },\r\n Gold: { r: 255, g: 215, b: 0 },\r\n GoldenRod: { r: 218, g: 165, b: 32 },\r\n Gray: { r: 128, g: 128, b: 128 },\r\n Green: { r: 0, g: 128, b: 0 },\r\n GreenYellow: { r: 173, g: 255, b: 47 },\r\n HoneyDew: { r: 240, g: 255, b: 240 },\r\n HotPink: { r: 255, g: 105, b: 180 },\r\n IndianRed: { r: 205, g: 92, b: 92 },\r\n Indigo: { r: 75, g: 0, b: 130 },\r\n Ivory: { r: 255, g: 255, b: 240 },\r\n Khaki: { r: 240, g: 230, b: 140 },\r\n Lavender: { r: 230, g: 230, b: 250 },\r\n LavenderBlush: { r: 255, g: 240, b: 245 },\r\n LawnGreen: { r: 124, g: 252, b: 0 },\r\n LemonChiffon: { r: 255, g: 250, b: 205 },\r\n LightBlue: { r: 173, g: 216, b: 230 },\r\n LightCoral: { r: 240, g: 128, b: 128 },\r\n LightCyan: { r: 224, g: 255, b: 255 },\r\n LightGoldenRodYellow: { r: 250, g: 250, b: 210 },\r\n LightGray: { r: 211, g: 211, b: 211 },\r\n LightGreen: { r: 144, g: 238, b: 144 },\r\n LightPink: { r: 255, g: 182, b: 193 },\r\n LightSalmon: { r: 255, g: 160, b: 122 },\r\n LightSeaGreen: { r: 32, g: 178, b: 170 },\r\n LightSkyBlue: { r: 135, g: 206, b: 250 },\r\n LightSlateGray: { r: 119, g: 136, b: 153 },\r\n LightSteelBlue: { r: 176, g: 196, b: 222 },\r\n LightYellow: { r: 255, g: 255, b: 224 },\r\n Lime: { r: 0, g: 255, b: 0 },\r\n LimeGreen: { r: 50, g: 205, b: 50 },\r\n Linen: { r: 250, g: 240, b: 230 },\r\n Magenta: { r: 255, g: 0, b: 255 },\r\n Maroon: { r: 128, g: 0, b: 0 }, // Maroon\r\n MediumAquaMarine: { r: 102, g: 205, b: 170 },\r\n MediumBlue: { r: 0, g: 0, b: 205 },\r\n MediumOrchid: { r: 186, g: 85, b: 211 },\r\n MediumPurple: { r: 147, g: 112, b: 219 },\r\n MediumSeaGreen: { r: 60, g: 179, b: 113 },\r\n MediumSlateBlue: { r: 123, g: 104, b: 238 },\r\n MediumSpringGreen: { r: 0, g: 250, b: 154 },\r\n MediumTurquoise: { r: 72, g: 209, b: 204 },\r\n MediumVioletRed: { r: 199, g: 21, b: 133 },\r\n MidnightBlue: { r: 25, g: 25, b: 112 },\r\n MintCream: { r: 245, g: 255, b: 250 },\r\n MistyRose: { r: 255, g: 228, b: 225 },\r\n Moccasin: { r: 255, g: 228, b: 181 },\r\n NavajoWhite: { r: 255, g: 222, b: 173 },\r\n Navy: { r: 0, g: 0, b: 128 },\r\n OldLace: { r: 253, g: 245, b: 230 },\r\n Olive: { r: 128, g: 128, b: 0 },\r\n OliveDrab: { r: 107, g: 142, b: 35 },\r\n Orange: { r: 255, g: 165, b: 0 },\r\n OrangeRed: { r: 255, g: 69, b: 0 },\r\n Orchid: { r: 218, g: 112, b: 214 },\r\n PaleGoldenRod: { r: 238, g: 232, b: 170 },\r\n PaleGreen: { r: 152, g: 251, b: 152 },\r\n PaleTurquoise: { r: 175, g: 238, b: 238 },\r\n PaleVioletRed: { r: 219, g: 112, b: 147 },\r\n PapayaWhip: { r: 255, g: 239, b: 213 },\r\n PeachPuff: { r: 255, g: 218, b: 185 },\r\n Peru: { r: 205, g: 133, b: 63 },\r\n Pink: { r: 255, g: 192, b: 203 },\r\n Plum: { r: 221, g: 160, b: 221 },\r\n PowderBlue: { r: 176, g: 224, b: 230 },\r\n Purple: { r: 128, g: 0, b: 128 },\r\n RebeccaPurple: { r: 102, g: 51, b: 153 },\r\n Red: { r: 255, g: 0, b: 0 },\r\n RosyBrown: { r: 188, g: 143, b: 143 },\r\n RoyalBlue: { r: 65, g: 105, b: 225 },\r\n SaddleBrown: { r: 139, g: 69, b: 19 },\r\n Salmon: { r: 250, g: 128, b: 114 },\r\n SandyBrown: { r: 244, g: 164, b: 96 },\r\n SeaGreen: { r: 46, g: 139, b: 87 },\r\n SeaShell: { r: 255, g: 245, b: 238 },\r\n Sienna: { r: 160, g: 82, b: 45 },\r\n Silver: { r: 192, g: 192, b: 192 },\r\n SkyBlue: { r: 135, g: 206, b: 235 },\r\n SlateBlue: { r: 106, g: 90, b: 205 },\r\n SlateGray: { r: 112, g: 128, b: 144 },\r\n Snow: { r: 255, g: 250, b: 250 },\r\n SpringGreen: { r: 0, g: 255, b: 127 },\r\n SteelBlue: { r: 70, g: 130, b: 180 },\r\n Tan: { r: 210, g: 180, b: 140 },\r\n Teal: { r: 0, g: 128, b: 128 },\r\n Thistle: { r: 216, g: 191, b: 216 },\r\n Tomato: { r: 255, g: 99, b: 71 },\r\n Turquoise: { r: 64, g: 224, b: 208 },\r\n Violet: { r: 238, g: 130, b: 238 },\r\n Wheat: { r: 245, g: 222, b: 179 },\r\n White: { r: 255, g: 255, b: 255 },\r\n WhiteSmoke: { r: 245, g: 245, b: 245 },\r\n Yellow: { r: 255, g: 255, b: 0 },\r\n YellowGreen: { r: 154, g: 205, b: 50 }\r\n};\r\n\r\n\r\n\r\n\r\nexport function colorWithAlpha(color: string, alpha: number): string {\r\n const lowerCasedColor = color.toLowerCase() as keyof typeof colorNames;\r\n \r\n if (colorNames[lowerCasedColor]) {\r\n const rgb = colorNames[lowerCasedColor];\r\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;\r\n }\r\n \r\n // If color is in hex format (#RRGGBB)\r\n if (/^#([A-Fa-f0-9]{6})$/.test(color)) {\r\n const hex = color.slice(1);\r\n const bigint = parseInt(hex, 16);\r\n const r = (bigint >> 16) & 255;\r\n const g = (bigint >> 8) & 255;\r\n const b = bigint & 255;\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n }\r\n \r\n // If color is in rgb format (rgb(r, g, b))\r\n if (/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/.test(color)) {\r\n const result = color.match(/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/);\r\n if (result) {\r\n return `rgba(${result[1]}, ${result[2]}, ${result[3]}, ${alpha})`;\r\n }\r\n }\r\n \r\n // Default to original color if format is not recognized\r\n return color;\r\n}","export const isEnvBrowser = (): boolean => !(window as any).invokeNative;\r\n\r\n// Basic no operation function\r\nexport const noop = () => {};\r\n\r\nexport const splitFAString = (faString:string) => {\r\n const [prefix, newIcon] = faString.split('-');\r\n if (!prefix || !newIcon) return {prefix: 'fas', newIcon: 'question'};\r\n return {prefix, newIcon};\r\n}\r\n\r\nexport const numberToRoman = (num:number) => {\r\n const romanNumerals = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'] \r\n return romanNumerals[num]\r\n}\r\n\r\nexport const copyToClipboard = (text:string) => {\r\n const el = document.createElement('textarea');\r\n el.value = text;\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n}\r\n\r\nexport const openLink = (url:string) => {\r\n if (isEnvBrowser()) {\r\n window.open(url, '_blank');\r\n } else {\r\n // @ts-expect-error -- invokeNative exists in NUI\r\n window.invokeNative('openLink', url);\r\n } \r\n}","import { MantineColorsTuple } from \"@mantine/core\";\r\nimport { create } from \"zustand\";\r\n\r\nexport type SettingsState = {\r\n game: \"fivem\" | \"rdr3\";\r\n currency: string;\r\n primaryColor: string;\r\n primaryShade: number;\r\n itemImgPath: string;\r\n resourceVersion?: string;\r\n customTheme?: MantineColorsTuple;\r\n overideResourceName?: string;\r\n serverName?: string;\r\n logo?: string;\r\n language?: string;\r\n};\r\n\r\nexport const useSettings = create<SettingsState>(() => ({\r\n currency: \"$\",\r\n game: \"fivem\",\r\n primaryColor: \"dirk\",\r\n primaryShade: 9,\r\n itemImgPath: \"\",\r\n resourceVersion: \"dev\",\r\n customTheme: [\r\n \"#f0f4ff\",\r\n \"#d9e3ff\",\r\n \"#bfcfff\",\r\n \"#a6bbff\",\r\n \"#8ca7ff\",\r\n \"#7393ff\",\r\n \"#5a7fff\",\r\n \"#406bff\",\r\n \"#2547ff\",\r\n \"#0b33ff\",\r\n ],\r\n}));\r\n\r\n// registerInitialFetch<Partial<SettingsState>>('GET_SETTINGS', undefined).then((data) => {\r\n// if (!data) {\r\n// console.warn('No settings data received from GET_SETTINGS fetch.');\r\n// return;\r\n// }\r\n// useSettings.setState({\r\n// ...data,\r\n// });\r\n// })\r\n","import { useEffect } from \"react\";\r\nimport { isEnvBrowser } from \"./misc\";\r\nimport { useSettings } from \"./useSettings\";\r\n\r\n/**\r\n * Simple wrapper around fetch API tailored for CEF/NUI use.\r\n */\r\nexport async function fetchNui<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const options = {\r\n method: \"post\",\r\n headers: {\r\n \"Content-Type\": \"application/json; charset=UTF-8\",\r\n },\r\n body: JSON.stringify(data),\r\n };\r\n\r\n if (isEnvBrowser() && mockData !== undefined) return mockData;\r\n if (isEnvBrowser() && mockData === undefined) {\r\n console.warn(\r\n `[fetchNui] Called fetchNui for event \"${eventName}\" in browser environment without mockData. Returning empty object.`,\r\n );\r\n return {} as T;\r\n }\r\n\r\n const overrideResourceName = useSettings.getState().overideResourceName;\r\n\r\n // Resource-name resolution:\r\n // 1. NUI iframes expose `window.GetParentResourceName` — use that.\r\n // 2. DUIs don't have it, but DirkProvider sets `overideResourceName`\r\n // once it mounts, so consumer DUIs that wait until then resolve fine.\r\n // 3. If NEITHER is available (e.g. a DUI before its DirkProvider has\r\n // mounted, which happens for module-level `registerInitialFetch`\r\n // calls in `locales.ts`), there's no valid resource to call. Skip\r\n // the fetch entirely — firing it against a placeholder URL just\r\n // produces a doomed network request + an \"Uncaught (in promise)\r\n // TypeError: Failed to fetch\" in older consumer builds that\r\n // lacked the try/catch fallback below. Caller can rely on the\r\n // mockData return or refetch once context is established.\r\n const hasResourceContext =\r\n typeof (window as any).GetParentResourceName === \"function\" ||\r\n !!overrideResourceName;\r\n\r\n if (!hasResourceContext) {\r\n return (mockData ?? ({} as T));\r\n }\r\n\r\n const resourceName = (window as any).GetParentResourceName\r\n ? (window as any).GetParentResourceName()\r\n : overrideResourceName as string;\r\n\r\n try {\r\n const resp = await fetch(`https://${resourceName}/${eventName}`, options);\r\n return await resp.json();\r\n } catch {\r\n return (mockData ?? ({} as T));\r\n }\r\n}\r\n\r\n// -----------------------------\r\n// Initial fetch registration\r\n// -----------------------------\r\nexport type InitialFetch<T> = () => Promise<T>;\r\nexport const initialFetches: Record<string, InitialFetch<unknown>> = {};\r\n\r\n/**\r\n * Registers an initial fetch that automatically uses fetchNui.\r\n * Works like:\r\n * ```ts\r\n * registerInitialFetch<{ name: string }>(\"MY_EVENT_NAME\", undefined, { name: \"Mocky\" });\r\n * ```\r\n * and returns a Promise resolving to the same type as fetchNui.\r\n */\r\nexport async function registerInitialFetch<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const fetcher = () => fetchNui<T>(eventName, data, mockData);\r\n initialFetches[eventName] = fetcher;\r\n return fetcher(); // run immediately if needed\r\n}\r\n\r\n/**\r\n * Runs all registered initial fetches in parallel.\r\n */\r\nexport async function runFetches() {\r\n return Promise.all(\r\n Object.entries(initialFetches).map(async ([eventName, fetcher]) => {\r\n const data = await fetcher();\r\n return { eventName, data };\r\n }),\r\n );\r\n}\r\n\r\n/**\r\n * React hook to automatically run all registered fetches on mount.\r\n */\r\nexport const useAutoFetcher = () => {\r\n useEffect(() => {\r\n if (isEnvBrowser()) return;\r\n runFetches().catch(() => {});\r\n }, []);\r\n};\r\n\r\n\r\nexport const fetchLuaTable = <T>(tableName: string, mockData?: T): Promise<T> => { \r\n return fetchNui<T>('FETCH_LUA_TABLE', { tableName }, mockData);\r\n} \r\n\r\nexport const registerInitialLuaTableFetch = <T>(tableName: string, mockData?: T): Promise<T> => { \r\n return registerInitialFetch<T>('FETCH_LUA_TABLE', { tableName }, mockData);\r\n} \r\n\r\n\r\n\r\n// useage example:\r\n// registerInitialLuaTableFetch<{ [key: string]: string }>('my_lua_table', { key1: 'value1', key2: 'value2' }); \r\n","import { create } from \"zustand\";\r\nimport { fetchNui, registerInitialFetch } from \"../utils/fetchNui\";\r\n\r\n\r\ntype localeType = (key: string, ...args: string[]) => string;\r\n\r\ntype LocalesProps = {\r\n [key: string]: string;\r\n}\r\n\r\ntype LocaleStoreProps = {\r\n locale: localeType;\r\n locales: LocalesProps;\r\n};\r\n\r\nconst reportedMissing = new Set<string>();\r\nfunction reportMissingLocale(key: string) {\r\n if (!key || reportedMissing.has(key)) return;\r\n reportedMissing.add(key);\r\n fetchNui('REPORT_MISSING_LOCALE', { key }).catch(() => {});\r\n}\r\n\r\n\r\nexport const localeStore = create<LocaleStoreProps>((set, get) => {\r\n return {\r\n locales: {\r\n \"OccupantsDesc\": \"Here you can view and manage the occupants of your traphouse. These occupants can be used mainly for selling drugs to the NPCs surrounding your traphouse. However they have other uses to so be careful who you add as an occupant.\",\r\n },\r\n locale: (key: string, ...args: (string|number)[]): string => {\r\n const exists = get().locales[key];\r\n if (!exists) reportMissingLocale(key);\r\n let translation = exists || key;\r\n if (args.length) {\r\n // convert the arg to a string and replace the %s in the translation\r\n \r\n\r\n translation = translation.replace(/%s/g, () => String(args.shift() || ''));\r\n }\r\n return translation;\r\n },\r\n };\r\n});\r\n\r\n// export locale as a standalone function\r\nexport const locale = localeStore.getState().locale;\r\n\r\nregisterInitialFetch<LocalesProps>('GET_LOCALES', undefined).then((data) => {\r\n localeStore.setState({ locales: data });\r\n}).catch(() => {})\r\n\r\n// dirk_lib broadcasts UPDATE_DIRK_LIB_LOCALES whenever an admin changes the\r\n// `language` setting, so the dict updates live without a resource restart.\r\nif (typeof window !== \"undefined\") {\r\n window.addEventListener(\"message\", (event) => {\r\n const msg = event.data;\r\n if (!msg || msg.action !== \"UPDATE_DIRK_LIB_LOCALES\") return;\r\n if (!msg.data || typeof msg.data !== \"object\") return;\r\n localeStore.setState({ locales: msg.data as LocalesProps });\r\n });\r\n}","import { create } from \"zustand\";\r\nimport { registerInitialFetch } from \"./fetchNui\";\r\n\r\nexport type InventoryItem = {\r\n name: string;\r\n label: string;\r\n weight: number;\r\n image: string;\r\n};\r\n\r\nexport type InventoryItems = Record<string, InventoryItem>;\r\n\r\nexport const useItems = create<InventoryItems>(() => ({}));\r\n\r\nexport const useItemsList = (excludeItemNames: string[] = []): InventoryItem[] => {\r\n const excludeSet = new Set(excludeItemNames);\r\n return Object.values(useItems.getState()).filter((item) => !excludeSet.has(item.name));\r\n};\r\n\r\nexport const getItemImageUrl = (itemName: string): string => {\r\n return useItems.getState()[itemName]?.image || \"\";\r\n};\r\n\r\nregisterInitialFetch<InventoryItems>(\"FETCH_ALL_ITEMS\", null, {\r\n item1: { name: \"item1\", label: \"Item 1\", weight: 0.5, image: \"item1.png\" },\r\n item2: { name: \"item2\", label: \"Item 2\", weight: 1.0, image: \"item2.png\" },\r\n item3: { name: \"item3\", label: \"Item 3\", weight: 2.5, image: \"item3.png\" },\r\n}).then((fetchedItems) => {\r\n if (!fetchedItems) return;\r\n useItems.setState(fetchedItems);\r\n}).catch(() => {});\r\n","import { create } from \"zustand\";\nimport { registerInitialFetch } from \"./fetchNui\";\n\n// Shape mirrors lib.framework.Group / lib.framework.Grade in dirk_lib.\n// payment is QB/qbx `payment` ⊕ ESX `salary`; nil on ND core.\n// bankAuth is qbx-native; defaults to isBoss on frameworks without it.\nexport type FrameworkGrade = {\n grade: number;\n name: string;\n label: string;\n payment?: number;\n isBoss: boolean;\n bankAuth: boolean;\n};\n\nexport type FrameworkGroup = {\n name: string;\n label: string;\n type: \"job\" | \"gang\";\n category?: string;\n whitelisted?: boolean;\n defaultDuty?: boolean;\n offDutyPay?: boolean;\n grades: FrameworkGrade[];\n};\n\ntype FrameworkGroupsBundle = {\n jobs: FrameworkGroup[];\n gangs: FrameworkGroup[];\n};\n\ntype FrameworkGroupsStore = FrameworkGroupsBundle & {\n loaded: boolean;\n};\n\nexport const useFrameworkGroups = create<FrameworkGroupsStore>(() => ({\n jobs: [],\n gangs: [],\n loaded: false,\n}));\n\n// Auto-fetch on module load — runs once, populates the store, and is also\n// re-fired via useAutoFetcher() on App mount as a safety net.\nregisterInitialFetch<FrameworkGroupsBundle>(\"GET_FRAMEWORK_GROUPS\", undefined)\n .then((data) => {\n useFrameworkGroups.setState({\n jobs: Array.isArray(data?.jobs) ? data.jobs : [],\n gangs: Array.isArray(data?.gangs) ? data.gangs : [],\n loaded: true,\n });\n })\n .catch(() => {\n useFrameworkGroups.setState({ loaded: true });\n });\n\n// Helper for components that don't care about the job/gang split.\nexport function selectAllGroups(state: FrameworkGroupsStore): FrameworkGroup[] {\n return [...state.jobs, ...state.gangs];\n}\n","export const INPUT_MAPPER_PRIMARY_OPTIONS = [\r\n \"DIGITALBUTTON_AXIS\",\r\n \"GAME_CONTROLLED\",\r\n \"JOYSTICK_AXIS\",\r\n \"JOYSTICK_AXIS_NEGATIVE\",\r\n \"JOYSTICK_AXIS_POSITIVE\",\r\n \"JOYSTICK_BUTTON\",\r\n \"JOYSTICK_IAXIS\",\r\n \"JOYSTICK_POV\",\r\n \"JOYSTICK_POV_AXIS\",\r\n \"KEYBOARD\",\r\n \"MKB_AXIS\",\r\n \"MOUSE_ABSOLUTEAXIS\",\r\n \"MOUSE_BUTTON\",\r\n \"MOUSE_CENTEREDAXIS\",\r\n \"MOUSE_NORMALIZED\",\r\n \"MOUSE_RELATIVEAXIS\",\r\n \"MOUSE_SCALEDAXIS\",\r\n \"MOUSE_WHEEL\",\r\n \"PAD_ANALOGBUTTON\",\r\n \"PAD_AXIS\",\r\n \"PAD_DEBUGBUTTON\",\r\n \"PAD_DIGITALBUTTON\",\r\n \"TOUCHPAD_ABSOLUTE_AXIS\",\r\n \"TOUCHPAD_CENTERED_AXIS\",\r\n] as const;\r\n\r\nconst KEYBOARD_KEYS = [\r\n \"BACK\", \"TAB\", \"RETURN\", \"PAUSE\", \"CAPITAL\", \"ESCAPE\", \"SPACE\", \"PAGEUP\", \"PAGEDOWN\",\r\n \"END\", \"HOME\", \"LEFT\", \"UP\", \"RIGHT\", \"DOWN\", \"INSERT\", \"DELETE\",\r\n \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\",\r\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\r\n \"F1\", \"F2\", \"F3\", \"F4\", \"F5\", \"F6\", \"F7\", \"F8\", \"F9\", \"F10\", \"F11\", \"F12\",\r\n \"NUMPAD0\", \"NUMPAD1\", \"NUMPAD2\", \"NUMPAD3\", \"NUMPAD4\", \"NUMPAD5\", \"NUMPAD6\", \"NUMPAD7\", \"NUMPAD8\", \"NUMPAD9\",\r\n \"MULTIPLY\", \"ADD\", \"SUBTRACT\", \"DECIMAL\", \"DIVIDE\", \"NUMPADENTER\",\r\n \"LSHIFT\", \"RSHIFT\", \"LCONTROL\", \"RCONTROL\", \"LMENU\", \"RMENU\",\r\n \"LWIN\", \"RWIN\", \"APPS\", \"NUMLOCK\", \"SCROLL\",\r\n \"OEM_1\", \"SEMICOLON\", \"EQUALS\", \"PLUS\", \"COMMA\", \"MINUS\", \"PERIOD\", \"SLASH\", \"OEM_2\", \"OEM_3\", \"GRAVE\",\r\n \"LBRACKET\", \"OEM_4\", \"BACKSLASH\", \"OEM_5\", \"RBRACKET\", \"OEM_6\", \"APOSTROPHE\", \"OEM_7\", \"OEM_102\",\r\n] as const;\r\n\r\nconst MOUSE_BUTTON_KEYS = [\r\n \"MOUSE_LEFT\",\r\n \"MOUSE_RIGHT\",\r\n \"MOUSE_MIDDLE\",\r\n \"MOUSE_EXTRABTN1\",\r\n \"MOUSE_EXTRABTN2\",\r\n \"MOUSE_EXTRABTN3\",\r\n \"MOUSE_EXTRABTN4\",\r\n \"MOUSE_EXTRABTN5\",\r\n \"IOM_WHEEL_UP\",\r\n \"IOM_WHEEL_DOWN\",\r\n] as const;\r\n\r\nconst MOUSE_WHEEL_KEYS = [\"IOM_WHEEL_UP\", \"IOM_WHEEL_DOWN\"] as const;\r\n\r\nconst MOUSE_AXIS_KEYS = [\r\n \"IOM_AXIS_X\",\r\n \"IOM_AXIS_Y\",\r\n \"IOM_AXIS_WHEEL\",\r\n \"IOM_AXIS_WHEEL_DELTA\",\r\n \"IOM_AXIS_WHEEL_RELATIVE\",\r\n \"IOM_IAXIS_X\",\r\n \"IOM_IAXIS_Y\",\r\n \"IOM_IAXIS_WHEEL\",\r\n \"IOM_IAXIS_WHEEL_DELTA\",\r\n \"IOM_IAXIS_WHEEL_RELATIVE\",\r\n \"IOM_AXIS_X_LEFT\",\r\n \"IOM_AXIS_X_RIGHT\",\r\n \"IOM_AXIS_Y_UP\",\r\n \"IOM_AXIS_Y_DOWN\",\r\n \"BASIC_MOUSE_AXIS_MAX\",\r\n \"MOUSE_AXIS_MAX\",\r\n] as const;\r\n\r\nconst PAD_BUTTON_KEYS = [\r\n \"L1_INDEX\",\r\n \"R1_INDEX\",\r\n \"L2_INDEX\",\r\n \"R2_INDEX\",\r\n \"L3_INDEX\",\r\n \"R3_INDEX\",\r\n \"LUP_INDEX\",\r\n \"LRIGHT_INDEX\",\r\n \"LDOWN_INDEX\",\r\n \"LLEFT_INDEX\",\r\n \"RUP_INDEX\",\r\n \"RRIGHT_INDEX\",\r\n \"RDOWN_INDEX\",\r\n \"RLEFT_INDEX\",\r\n \"SELECT_INDEX\",\r\n \"START_INDEX\",\r\n \"TOUCH_INDEX\",\r\n] as const;\r\n\r\nconst PAD_DEBUG_KEYS = [\r\n \"L1\",\r\n \"R1\",\r\n \"L2\",\r\n \"R2\",\r\n \"L3\",\r\n \"R3\",\r\n \"LUP\",\r\n \"LRIGHT\",\r\n \"LDOWN\",\r\n \"LLEFT\",\r\n \"RUP\",\r\n \"RRIGHT\",\r\n \"RDOWN\",\r\n \"RLEFT\",\r\n \"SELECT\",\r\n \"START\",\r\n \"TOUCH\",\r\n] as const;\r\n\r\nconst PAD_AXIS_KEYS = [\r\n \"IOM_AXIS_LX\",\r\n \"IOM_AXIS_LY\",\r\n \"IOM_AXIS_RX\",\r\n \"IOM_AXIS_RY\",\r\n \"IOM_AXIS_LUP\",\r\n \"IOM_AXIS_LDOWN\",\r\n \"IOM_AXIS_LLEFT\",\r\n \"IOM_AXIS_LRIGHT\",\r\n \"IOM_AXIS_LUR\",\r\n \"IOM_AXIS_LUL\",\r\n \"IOM_AXIS_LDR\",\r\n \"IOM_AXIS_LDL\",\r\n \"IOM_AXIS_RUP\",\r\n \"IOM_AXIS_RDOWN\",\r\n \"IOM_AXIS_RLEFT\",\r\n \"IOM_AXIS_RRIGHT\",\r\n \"IOM_AXIS_RUR\",\r\n \"IOM_AXIS_RUL\",\r\n \"IOM_AXIS_RDR\",\r\n \"IOM_AXIS_RDL\",\r\n \"IOM_AXIS_DPADX\",\r\n \"IOM_AXIS_DPADY\",\r\n \"IOM_AXIS_LY_UP\",\r\n \"IOM_AXIS_LY_DOWN\",\r\n \"IOM_AXIS_LX_LEFT\",\r\n \"IOM_AXIS_LX_RIGHT\",\r\n \"IOM_AXIS_RY_UP\",\r\n \"IOM_AXIS_RY_DOWN\",\r\n \"IOM_AXIS_RX_LEFT\",\r\n \"IOM_AXIS_RX_RIGHT\",\r\n] as const;\r\n\r\nconst JOYSTICK_AXIS_KEYS = Array.from({ length: 8 }, (_, i) => `IOM_JOYSTICK_AXIS${i + 1}`);\r\nconst JOYSTICK_BUTTON_KEYS = Array.from({ length: 32 }, (_, i) => `IOM_JOYSTICK_BUTTON${i + 1}`);\r\nconst JOYSTICK_POV_KEYS = Array.from({ length: 4 }, (_, p) => {\r\n const idx = p + 1;\r\n return [\r\n `IOM_POV${idx}_UP`,\r\n `IOM_POV${idx}_RIGHT`,\r\n `IOM_POV${idx}_DOWN`,\r\n `IOM_POV${idx}_LEFT`,\r\n ];\r\n}).flat();\r\n\r\nexport const INPUT_MAPPER_KEYS_BY_PRIMARY: Record<string, string[]> = {\r\n DIGITALBUTTON_AXIS: [],\r\n GAME_CONTROLLED: [],\r\n JOYSTICK_AXIS: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_AXIS_NEGATIVE: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_AXIS_POSITIVE: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_BUTTON: [...JOYSTICK_BUTTON_KEYS],\r\n JOYSTICK_IAXIS: [...JOYSTICK_AXIS_KEYS],\r\n JOYSTICK_POV: [...JOYSTICK_POV_KEYS],\r\n JOYSTICK_POV_AXIS: [...JOYSTICK_POV_KEYS],\r\n KEYBOARD: [...KEYBOARD_KEYS],\r\n MKB_AXIS: [],\r\n MOUSE_ABSOLUTEAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_BUTTON: [...MOUSE_BUTTON_KEYS],\r\n MOUSE_CENTEREDAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_NORMALIZED: [...MOUSE_AXIS_KEYS],\r\n MOUSE_RELATIVEAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_SCALEDAXIS: [...MOUSE_AXIS_KEYS],\r\n MOUSE_WHEEL: [...MOUSE_WHEEL_KEYS],\r\n PAD_ANALOGBUTTON: [...PAD_BUTTON_KEYS],\r\n PAD_AXIS: [...PAD_AXIS_KEYS],\r\n PAD_DEBUGBUTTON: [...PAD_DEBUG_KEYS],\r\n PAD_DIGITALBUTTON: [...PAD_BUTTON_KEYS],\r\n TOUCHPAD_ABSOLUTE_AXIS: [],\r\n TOUCHPAD_CENTERED_AXIS: [],\r\n};\r\n","// Curated list of FiveM control IDs (the IsControlPressed / DisableControlAction\n// numeric IDs). Sourced from https://docs.fivem.net/docs/game-references/controls/.\n// Not every control is included — the full list is ~349 entries and most are\n// obscure cellphone-scroll / replay-editor inputs no script ever cares about.\n// What's here covers the practical surface for scene whitelisting, raid\n// keybinds, vehicle scripts, etc. Add more as needed.\n\nexport type GtaControl = {\n /** Numeric control ID passed to IsControlPressed / EnableControlAction. */\n id: number;\n /** Symbolic name as it appears in the FiveM docs (e.g. INPUT_LOOK_LR). */\n symbol: string;\n /** Friendly label suitable for UI display (e.g. \"Look Left/Right\"). */\n label: string;\n /** Default keyboard binding shown for context (e.g. \"Mouse X\", \"E\"). */\n defaultKey?: string;\n /** Group used for ordering and section headers in pickers. */\n group: GtaControlGroup;\n};\n\nexport type GtaControlGroup =\n | \"Camera\"\n | \"Movement\"\n | \"Combat\"\n | \"Cover\"\n | \"Vehicle\"\n | \"Vehicle (Plane/Heli)\"\n | \"Vehicle (Boat/Bike)\"\n | \"Phone\"\n | \"Frontend / UI\"\n | \"Multiplayer\"\n | \"Misc\";\n\nexport const GTA_CONTROLS: GtaControl[] = [\n // ── Camera ─────────────────────────────────────────────────────────────────\n { id: 0, symbol: \"INPUT_NEXT_CAMERA\", label: \"Switch Camera\", defaultKey: \"V\", group: \"Camera\" },\n { id: 1, symbol: \"INPUT_LOOK_LR\", label: \"Look Left/Right\", defaultKey: \"Mouse X\", group: \"Camera\" },\n { id: 2, symbol: \"INPUT_LOOK_UD\", label: \"Look Up/Down\", defaultKey: \"Mouse Y\", group: \"Camera\" },\n { id: 3, symbol: \"INPUT_LOOK_UP_ONLY\", label: \"Look Up Only\", group: \"Camera\" },\n { id: 4, symbol: \"INPUT_LOOK_DOWN_ONLY\", label: \"Look Down Only\", group: \"Camera\" },\n { id: 5, symbol: \"INPUT_LOOK_LEFT_ONLY\", label: \"Look Left Only\", group: \"Camera\" },\n { id: 6, symbol: \"INPUT_LOOK_RIGHT_ONLY\", label: \"Look Right Only\", group: \"Camera\" },\n { id: 8, symbol: \"INPUT_CINEMATIC_SLOWMO\", label: \"Cinematic Slowmo\", defaultKey: \"Insert\", group: \"Camera\" },\n { id: 26, symbol: \"INPUT_LOOK_BEHIND\", label: \"Look Behind\", defaultKey: \"C\", group: \"Camera\" },\n { id: 27, symbol: \"INPUT_PHONE\", label: \"Phone\", defaultKey: \"Up Arrow\", group: \"Phone\" },\n\n // ── Movement ───────────────────────────────────────────────────────────────\n { id: 21, symbol: \"INPUT_SPRINT\", label: \"Sprint\", defaultKey: \"Left Shift\", group: \"Movement\" },\n { id: 22, symbol: \"INPUT_JUMP\", label: \"Jump\", defaultKey: \"Space\", group: \"Movement\" },\n { id: 23, symbol: \"INPUT_ENTER\", label: \"Enter Vehicle\", defaultKey: \"F\", group: \"Movement\" },\n { id: 30, symbol: \"INPUT_MOVE_LR\", label: \"Move Left/Right\", group: \"Movement\" },\n { id: 31, symbol: \"INPUT_MOVE_UD\", label: \"Move Up/Down\", group: \"Movement\" },\n { id: 32, symbol: \"INPUT_MOVE_UP_ONLY\", label: \"Move Forward (W)\", group: \"Movement\" },\n { id: 33, symbol: \"INPUT_MOVE_DOWN_ONLY\", label: \"Move Back (S)\", group: \"Movement\" },\n { id: 34, symbol: \"INPUT_MOVE_LEFT_ONLY\", label: \"Move Left (A)\", group: \"Movement\" },\n { id: 35, symbol: \"INPUT_MOVE_RIGHT_ONLY\", label: \"Move Right (D)\", group: \"Movement\" },\n { id: 36, symbol: \"INPUT_DUCK\", label: \"Duck / Stealth\", defaultKey: \"Left Ctrl\", group: \"Movement\" },\n { id: 37, symbol: \"INPUT_SELECT_WEAPON\", label: \"Weapon Wheel\", defaultKey: \"Tab\", group: \"Combat\" },\n { id: 38, symbol: \"INPUT_PICKUP\", label: \"Pickup / Interact\", defaultKey: \"E\", group: \"Movement\" },\n\n // ── Combat ─────────────────────────────────────────────────────────────────\n { id: 24, symbol: \"INPUT_ATTACK\", label: \"Attack / Fire\", defaultKey: \"Mouse 1\", group: \"Combat\" },\n { id: 25, symbol: \"INPUT_AIM\", label: \"Aim\", defaultKey: \"Mouse 2\", group: \"Combat\" },\n { id: 45, symbol: \"INPUT_RELOAD\", label: \"Reload\", defaultKey: \"R\", group: \"Combat\" },\n { id: 47, symbol: \"INPUT_DETONATE\", label: \"Detonate\", defaultKey: \"G\", group: \"Combat\" },\n { id: 257, symbol: \"INPUT_ATTACK2\", label: \"Attack 2\", group: \"Combat\" },\n { id: 140, symbol: \"INPUT_MELEE_ATTACK_LIGHT\", label: \"Melee Light\", defaultKey: \"R\", group: \"Combat\" },\n { id: 141, symbol: \"INPUT_MELEE_ATTACK_HEAVY\", label: \"Melee Heavy\", defaultKey: \"Q\", group: \"Combat\" },\n { id: 142, symbol: \"INPUT_MELEE_ATTACK_ALTERNATE\", label: \"Melee Alternate\", defaultKey: \"Mouse 1\", group: \"Combat\" },\n { id: 263, symbol: \"INPUT_MELEE_ATTACK1\", label: \"Melee Attack 1\", group: \"Combat\" },\n { id: 264, symbol: \"INPUT_MELEE_ATTACK2\", label: \"Melee Attack 2\", group: \"Combat\" },\n\n // ── Cover ──────────────────────────────────────────────────────────────────\n { id: 44, symbol: \"INPUT_COVER\", label: \"Cover\", defaultKey: \"Q\", group: \"Cover\" },\n\n // ── Vehicle (general) ──────────────────────────────────────────────────────\n { id: 59, symbol: \"INPUT_VEH_MOVE_LR\", label: \"Vehicle Steering\", group: \"Vehicle\" },\n { id: 63, symbol: \"INPUT_VEH_MOVE_LEFT_ONLY\", label: \"Vehicle Steer Left\", group: \"Vehicle\" },\n { id: 64, symbol: \"INPUT_VEH_MOVE_RIGHT_ONLY\", label: \"Vehicle Steer Right\", group: \"Vehicle\" },\n { id: 71, symbol: \"INPUT_VEH_ACCELERATE\", label: \"Vehicle Accelerate\", defaultKey: \"W\", group: \"Vehicle\" },\n { id: 72, symbol: \"INPUT_VEH_BRAKE\", label: \"Vehicle Brake\", defaultKey: \"S\", group: \"Vehicle\" },\n { id: 73, symbol: \"INPUT_VEH_DUCK\", label: \"Vehicle Duck\", defaultKey: \"X\", group: \"Vehicle\" },\n { id: 74, symbol: \"INPUT_VEH_HEADLIGHT\", label: \"Headlights\", defaultKey: \"H\", group: \"Vehicle\" },\n { id: 75, symbol: \"INPUT_VEH_EXIT\", label: \"Exit Vehicle\", defaultKey: \"F\", group: \"Vehicle\" },\n { id: 76, symbol: \"INPUT_VEH_HANDBRAKE\", label: \"Handbrake\", defaultKey: \"Space\", group: \"Vehicle\" },\n { id: 80, symbol: \"INPUT_VEH_CIN_CAM\", label: \"Cinematic Cam\", defaultKey: \"R\", group: \"Vehicle\" },\n { id: 81, symbol: \"INPUT_VEH_NEXT_RADIO\", label: \"Radio Next\", group: \"Vehicle\" },\n { id: 82, symbol: \"INPUT_VEH_PREV_RADIO\", label: \"Radio Prev\", group: \"Vehicle\" },\n { id: 83, symbol: \"INPUT_VEH_NEXT_RADIO_TRACK\", label: \"Radio Next Track\", group: \"Vehicle\" },\n { id: 84, symbol: \"INPUT_VEH_PREV_RADIO_TRACK\", label: \"Radio Prev Track\", group: \"Vehicle\" },\n { id: 85, symbol: \"INPUT_VEH_RADIO_WHEEL\", label: \"Radio Wheel\", defaultKey: \"Q\", group: \"Vehicle\" },\n { id: 86, symbol: \"INPUT_VEH_HORN\", label: \"Horn\", defaultKey: \"E\", group: \"Vehicle\" },\n { id: 90, symbol: \"INPUT_VEH_AIM\", label: \"Vehicle Aim\", group: \"Vehicle\" },\n { id: 91, symbol: \"INPUT_VEH_ATTACK\", label: \"Vehicle Attack\", group: \"Vehicle\" },\n { id: 92, symbol: \"INPUT_VEH_ATTACK2\", label: \"Vehicle Attack 2\", group: \"Vehicle\" },\n { id: 99, symbol: \"INPUT_VEH_SELECT_NEXT_WEAPON\", label: \"Veh Next Weapon\", group: \"Vehicle\" },\n { id: 100, symbol: \"INPUT_VEH_SELECT_PREV_WEAPON\", label: \"Veh Prev Weapon\", group: \"Vehicle\" },\n\n // ── Vehicle (Plane/Heli) ───────────────────────────────────────────────────\n { id: 152, symbol: \"INPUT_VEH_FLY_THROTTLE_UP\", label: \"Plane Throttle Up\", defaultKey: \"W\", group: \"Vehicle (Plane/Heli)\" },\n { id: 153, symbol: \"INPUT_VEH_FLY_THROTTLE_DOWN\", label: \"Plane Throttle Down\", defaultKey: \"S\", group: \"Vehicle (Plane/Heli)\" },\n { id: 154, symbol: \"INPUT_VEH_FLY_YAW_LEFT\", label: \"Plane Yaw Left\", defaultKey: \"A\", group: \"Vehicle (Plane/Heli)\" },\n { id: 155, symbol: \"INPUT_VEH_FLY_YAW_RIGHT\", label: \"Plane Yaw Right\", defaultKey: \"D\", group: \"Vehicle (Plane/Heli)\" },\n { id: 158, symbol: \"INPUT_VEH_FLY_ATTACK\", label: \"Plane Attack\", defaultKey: \"Mouse 1\", group: \"Vehicle (Plane/Heli)\" },\n\n // ── Vehicle (Boat / Bike) ──────────────────────────────────────────────────\n { id: 198, symbol: \"INPUT_VEH_BICYCLE_PEDAL\", label: \"Bike Pedal\", group: \"Vehicle (Boat/Bike)\" },\n\n // ── Phone ──────────────────────────────────────────────────────────────────\n { id: 137, symbol: \"INPUT_FRONTEND_SOCIAL_CLUB_SECONDARY\", label: \"Toggle Phone (alt)\", group: \"Phone\" },\n\n // ── Frontend / UI ──────────────────────────────────────────────────────────\n { id: 199, symbol: \"INPUT_FRONTEND_PAUSE\", label: \"Pause Menu\", defaultKey: \"P\", group: \"Frontend / UI\" },\n { id: 200, symbol: \"INPUT_FRONTEND_PAUSE_ALTERNATE\", label: \"Pause Menu (alt)\", defaultKey: \"Esc\", group: \"Frontend / UI\" },\n { id: 201, symbol: \"INPUT_FRONTEND_ACCEPT\", label: \"Accept\", defaultKey: \"Enter\", group: \"Frontend / UI\" },\n { id: 202, symbol: \"INPUT_FRONTEND_CANCEL\", label: \"Cancel\", defaultKey: \"Esc\", group: \"Frontend / UI\" },\n { id: 244, symbol: \"INPUT_INTERACTION_MENU\", label: \"Interaction Menu\", defaultKey: \"M\", group: \"Frontend / UI\" },\n\n // ── Multiplayer ────────────────────────────────────────────────────────────\n { id: 245, symbol: \"INPUT_MP_TEXT_CHAT_ALL\", label: \"Chat (All)\", defaultKey: \"T\", group: \"Multiplayer\" },\n { id: 246, symbol: \"INPUT_MP_TEXT_CHAT_TEAM\", label: \"Chat (Team)\", defaultKey: \"Y\", group: \"Multiplayer\" },\n { id: 247, symbol: \"INPUT_MP_TEXT_CHAT_FRIENDS\", label: \"Chat (Friends)\", group: \"Multiplayer\" },\n { id: 248, symbol: \"INPUT_MP_TEXT_CHAT_CREW\", label: \"Chat (Crew)\", group: \"Multiplayer\" },\n { id: 249, symbol: \"INPUT_PUSH_TO_TALK\", label: \"Push To Talk\", defaultKey: \"N\", group: \"Multiplayer\" },\n\n // ── Misc ───────────────────────────────────────────────────────────────────\n { id: 51, symbol: \"INPUT_CONTEXT\", label: \"Context (E)\", defaultKey: \"E\", group: \"Misc\" },\n { id: 52, symbol: \"INPUT_CONTEXT_SECONDARY\", label: \"Context Secondary\", defaultKey: \"Q\", group: \"Misc\" },\n { id: 19, symbol: \"INPUT_CHARACTER_WHEEL\", label: \"Character Wheel\", defaultKey: \"Left Alt\", group: \"Misc\" },\n { id: 105, symbol: \"INPUT_HUD_SPECIAL\", label: \"Special Ability\", defaultKey: \"Caps Lock\", group: \"Misc\" },\n { id: 121, symbol: \"INPUT_MULTIPLAYER_INFO\", label: \"Player List\", defaultKey: \"Z\", group: \"Misc\" },\n { id: 170, symbol: \"INPUT_SAVE_REPLAY_CLIP\", label: \"Save Replay Clip\", defaultKey: \"F1\", group: \"Misc\" },\n { id: 288, symbol: \"INPUT_REPLAY_START_STOP_RECORDING\", label: \"Replay Record\", defaultKey: \"F1\", group: \"Misc\" },\n { id: 289, symbol: \"INPUT_REPLAY_START_STOP_RECORDING_SECONDARY\", label: \"Replay Record (alt)\", group: \"Misc\" },\n];\n\nconst BY_ID = new Map<number, GtaControl>(GTA_CONTROLS.map((c) => [c.id, c]));\n\nexport function getGtaControl(id: number): GtaControl | undefined {\n return BY_ID.get(id);\n}\n\n/** Format a control id as `Label (id)`, falling back to `Control id` if unknown. */\nexport function formatGtaControl(id: number): string {\n const c = BY_ID.get(id);\n if (!c) return `Control ${id}`;\n return c.defaultKey ? `${c.label} (${id} · ${c.defaultKey})` : `${c.label} (${id})`;\n}\n\n/** Group order used by ControlSelect / ControlMultiSelect for the dropdown headings. */\nexport const GTA_CONTROL_GROUP_ORDER: GtaControlGroup[] = [\n \"Camera\",\n \"Movement\",\n \"Combat\",\n \"Cover\",\n \"Vehicle\",\n \"Vehicle (Plane/Heli)\",\n \"Vehicle (Boat/Bike)\",\n \"Phone\",\n \"Frontend / UI\",\n \"Multiplayer\",\n \"Misc\",\n];\n","import { colorWithAlpha } from \"@/utils\";\r\nimport { IconName } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Flex, useMantineTheme } from \"@mantine/core\";\r\n\r\nexport type BorderedIconProps = {\r\n icon: string;\r\n color?: string;\r\n fontSize?: string;\r\n hovered?: boolean;\r\n hoverable?: boolean;\r\n radius?: string;\r\n p?: string;\r\n}\r\n\r\nexport function BorderedIcon(props: BorderedIconProps){\r\n const theme = useMantineTheme();\r\n return (\r\n <Flex\r\n bg='rgba(0, 0, 0, 0.5)'\r\n p={props.p || 'xs'}\r\n justify='center'\r\n align='center'\r\n style={{\r\n aspectRatio: '1/1', \r\n \r\n borderRadius: theme.radius.xs,\r\n // border: `2px solid var(--mantine-primary-color-9)`,\r\n outline: `0.2vh solid ${colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][9], 0.8)}`,\r\n boxShadow: `inset 0 0 2vh ${colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][7], 0.5)}`\r\n }}\r\n \r\n >\r\n <FontAwesomeIcon\r\n icon={props.icon as IconName}\r\n color={colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][theme.primaryShade as number], props.hovered ? 0.9: 0.9)}\r\n style={{\r\n fontSize: props.fontSize ? props.fontSize: '2.5vh',\r\n }}\r\n />\r\n </Flex>\r\n )\r\n}","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Flex, Image, Text } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport React from \"react\";\r\n\r\n// @ts-expect-error ts-migrate(7006) FIXME: Parameter 'Flex' implicitly has an 'any' type.\r\nexport const MotionFlex = motion.create(Flex) as React.ComponentType<any>;\r\n// @ts-expect-error ts-migrate(7006) FIXME: Parameter 'Text' implicitly has an 'any' type.\r\nexport const MotionText = motion.create(Text) as React.ComponentType<any>;\r\n// @ts-expect-error ts-migrate(7006) FIXME: Parameter 'Image' implicitly has an 'any' type.\r\nexport const MotionImage = motion.create(Image) as React.ComponentType<any>;\r\n\r\nexport const MotionIcon = motion.create(FontAwesomeIcon);\r\n\r\n\r\n\r\n\r\n","import { AnimatePresence } from \"framer-motion\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\nexport function Counter(props: {count: number, color?: string, style?: React.CSSProperties}) {\r\n return (\r\n <AnimatePresence>\r\n {props.count > 0 && (\r\n <MotionFlex\r\n key='counter'\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n\r\n fz='1.25vh'\r\n h='1.75vh'\r\n justify={'center'}\r\n align='center'\r\n bg={props.color || 'rgba(0, 0, 0, 0.51)'}\r\n style={{\r\n borderRadius: '50%',\r\n aspectRatio: '1/1',\r\n marginBottom: '0.3vh',\r\n fontFamily: 'Akrobat Bold',\r\n boxShadow: '0 0 5px rgba(0, 0, 0, 0.3)',\r\n ...props.style\r\n }}\r\n >\r\n {props.count}\r\n </MotionFlex> \r\n )}\r\n </AnimatePresence>\r\n\r\n )\r\n}","import React, { useRef, useEffect, useState } from 'react';\r\nimport { motion, useMotionValue } from 'framer-motion';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nexport type FloatingParticlesProps = {\r\n icons?: React.ReactNode[];\r\n particleCount?: number;\r\n color?: string;\r\n size?: number;\r\n speed?: 'slow' | 'medium' | 'fast';\r\n opacity?: number;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n mouseRepelDistance?: number;\r\n mouseRepelStrength?: number;\r\n backgroundColor?: string;\r\n}\r\n\r\nexport type ParticleState = {\r\n id: number;\r\n baseX: number;\r\n baseY: number;\r\n currentX: number;\r\n currentY: number;\r\n icon: React.ReactNode | null;\r\n animationDuration: number;\r\n}\r\n\r\n\r\n\r\nexport const FloatingParticles: React.FC<FloatingParticlesProps> = ({\r\n icons = [],\r\n particleCount = 55,\r\n color = '#00a552ff',\r\n size = 32,\r\n speed = 'slow',\r\n opacity = 0.3,\r\n style = {},\r\n mouseRepelDistance = 150,\r\n mouseRepelStrength = 50,\r\n backgroundColor = 'transparent',\r\n}) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [particles, setParticles] = useState<ParticleState[]>([]);\r\n \r\n const mouseX = useMotionValue(0);\r\n const mouseY = useMotionValue(0);\r\n\r\n const durationMap = {\r\n slow: { base: 10, variance: 10 },\r\n medium: { base: 2, variance: 2},\r\n fast: { base: 4, variance: 2 },\r\n };\r\n\r\n const duration = durationMap[speed];\r\n\r\n const seededRandom = (seed: number) => {\r\n const x = Math.sin(seed) * 10000;\r\n return x - Math.floor(x);\r\n };\r\n\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const bounds = containerRef.current.getBoundingClientRect();\r\n\r\n const newParticles: ParticleState[] = [...Array(particleCount)].map((_, i) => {\r\n const seedX = i * 123.456;\r\n const seedY = i * 789.012;\r\n const seedDuration = i * 345.678;\r\n \r\n const baseX = seededRandom(seedX) * bounds.width;\r\n const baseY = seededRandom(seedY) * bounds.height;\r\n \r\n return {\r\n id: i,\r\n baseX,\r\n baseY,\r\n currentX: baseX,\r\n currentY: baseY,\r\n icon: icons.length > 0 ? icons[i % icons.length] : null,\r\n animationDuration: duration.base + seededRandom(seedDuration) * duration.variance,\r\n };\r\n });\r\n\r\n setParticles(newParticles);\r\n }, [particleCount, icons.length, duration.base, duration.variance]);\r\n\r\n useEffect(() => {\r\n if (!containerRef.current) return;\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n const bounds = containerRef.current!.getBoundingClientRect();\r\n const x = e.clientX - bounds.left;\r\n const y = e.clientY - bounds.top;\r\n \r\n mouseX.set(x);\r\n mouseY.set(y);\r\n\r\n setParticles(prevParticles => \r\n prevParticles.map(particle => {\r\n const dx = x - particle.baseX;\r\n const dy = y - particle.baseY;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n\r\n if (distance < mouseRepelDistance && distance > 0) {\r\n const force = (mouseRepelDistance - distance) / mouseRepelDistance;\r\n const repelX = (dx / distance) * force * mouseRepelStrength * -1;\r\n const repelY = (dy / distance) * force * mouseRepelStrength * -1;\r\n\r\n return {\r\n ...particle,\r\n currentX: particle.baseX + repelX,\r\n currentY: particle.baseY + repelY,\r\n };\r\n } else {\r\n return {\r\n ...particle,\r\n currentX: particle.baseX,\r\n currentY: particle.baseY,\r\n };\r\n }\r\n })\r\n );\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setParticles(prevParticles =>\r\n prevParticles.map(particle => ({\r\n ...particle,\r\n currentX: particle.baseX,\r\n currentY: particle.baseY,\r\n }))\r\n );\r\n };\r\n\r\n const container = containerRef.current;\r\n container.addEventListener('mousemove', handleMouseMove);\r\n container.addEventListener('mouseleave', handleMouseLeave);\r\n\r\n return () => {\r\n container.removeEventListener('mousemove', handleMouseMove);\r\n container.removeEventListener('mouseleave', handleMouseLeave);\r\n };\r\n }, [mouseX, mouseY, mouseRepelDistance, mouseRepelStrength]);\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n if (!containerRef.current) return;\r\n \r\n const bounds = containerRef.current.getBoundingClientRect();\r\n \r\n setParticles(prevParticles =>\r\n prevParticles.map((particle, i) => {\r\n const seedX = i * 123.456 + bounds.width;\r\n const seedY = i * 789.012 + bounds.height;\r\n \r\n const newBaseX = seededRandom(seedX) * bounds.width;\r\n const newBaseY = seededRandom(seedY) * bounds.height;\r\n \r\n return {\r\n ...particle,\r\n baseX: newBaseX,\r\n baseY: newBaseY,\r\n currentX: newBaseX,\r\n currentY: newBaseY,\r\n };\r\n })\r\n );\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return (\r\n <div \r\n ref={containerRef}\r\n style={{\r\n position: 'absolute',\r\n overflow: 'hidden',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: -1,\r\n \r\n backgroundColor,\r\n ...style,\r\n }}\r\n >\r\n <div style={{ position: 'absolute', inset: 0, pointerEvents: 'none' }}>\r\n {particles.map((particle) => (\r\n <motion.div\r\n key={particle.id}\r\n style={{\r\n position: 'absolute',\r\n width: size,\r\n height: size,\r\n color,\r\n opacity,\r\n left: 0,\r\n top: 0,\r\n }}\r\n animate={{\r\n x: particle.currentX,\r\n y: particle.currentY,\r\n scale: [0.8, 1.1, 0.8],\r\n opacity: [opacity * 0.5, opacity, opacity * 0.5],\r\n // random rotate between 0 and 360 so that not all particles rotate the same\r\n rotate: particle.id % 2 === 0 ? [0, 360] : [360, 0],\r\n }}\r\n transition={{\r\n x: { type: \"spring\", stiffness: 150, damping: 20 },\r\n y: { type: \"spring\", stiffness: 150, damping: 20 },\r\n rotate: {\r\n duration: particle.animationDuration,\r\n repeat: Infinity,\r\n ease: 'linear',\r\n \r\n },\r\n scale: {\r\n duration: particle.animationDuration,\r\n repeat: Infinity,\r\n delay: seededRandom(particle.id * 111.222) * 5,\r\n ease: 'easeInOut',\r\n },\r\n opacity: {\r\n duration: particle.animationDuration,\r\n repeat: Infinity,\r\n delay: seededRandom(particle.id * 333.444) * 5,\r\n ease: 'easeInOut',\r\n },\r\n }}\r\n >\r\n {particle.icon ? (\r\n <div style={{ width: '100%', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n <FontAwesomeIcon icon={particle.icon as any} style={{ width: '70%', height: '70%' }} />\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: '50%',\r\n backgroundColor: color,\r\n }}\r\n />\r\n )}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n","import { useMantineTheme, Flex, Text } from \"@mantine/core\";\r\n\r\nexport type InfoBoxProps = {\r\n leftSide: string;\r\n rightSide: string;\r\n};\r\n\r\nexport function InfoBox(props: InfoBoxProps) {\r\n const theme = useMantineTheme();\r\n\r\n\r\n return (\r\n <Flex\r\n w='fit-content'\r\n h='fit-content'\r\n style={{\r\n borderRadius: theme.radius.xs,\r\n overflow: 'hidden',\r\n border: `0.2vh solid rgba(77,77,77,0.3)`\r\n }}\r\n align='center'\r\n >\r\n <Flex\r\n miw='4vh'\r\n p='xxs'\r\n bg='rgba(77,77,77,0.2)'\r\n direction='column'\r\n justify='center'\r\n align='center'\r\n >\r\n <Text c='lightgrey' size='xxs'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}>{props.leftSide}</Text>\r\n </Flex>\r\n\r\n <Flex\r\n p='xxs'\r\n flex={1}\r\n miw='4vh'\r\n bg='rgba(77,77,77,0.5)'\r\n direction='column'\r\n align='center'\r\n justify='center'\r\n >\r\n <Text c='lightgrey' size='xxs'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}\r\n >{props.rightSide}</Text>\r\n </Flex>\r\n\r\n </Flex>\r\n );\r\n}\r\n","import { useMantineTheme, Flex, Text, alpha, Tooltip } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\nimport { Variants } from \"framer-motion\";\r\nimport { colorWithAlpha } from \"@/utils\";\r\nimport { Info } from \"lucide-react\";\r\n\r\nexport type InputContainerProps = {\r\n title?:string;\r\n error?: string;\r\n description?:string;\r\n children?:React.ReactNode;\r\n w?:string | number;\r\n flex?:number | string;\r\n h?:string | number;\r\n bg?:string;\r\n p?:string | number;\r\n variants?: Variants;\r\n style?:React.CSSProperties;\r\n rightSection?:React.ReactNode;\r\n}\r\n\r\nexport function InputContainer(props: InputContainerProps){\r\n const theme = useMantineTheme()\r\n return (\r\n <MotionFlex\r\n w={props.w || '100%'}\r\n flex={props.flex}\r\n direction='column'\r\n h={props.h}\r\n gap={props.title ? 'xs' : 0}\r\n \r\n\r\n bg={props.bg || alpha(theme.colors.dark[9], 0.65)}\r\n p={props.p || 'sm'}\r\n style={{\r\n borderRadius: theme.radius.xs,\r\n boxShadow: theme.shadows.sm,\r\n overflow: 'hidden',\r\n border: props.error ? `1px solid rgba(255, 100, 100, 0.8)` : '1px solid var(--mantine-color-dark-7)', \r\n ...props.style,\r\n }}\r\n variants={props.variants}\r\n >\r\n\r\n <Flex\r\n align='center'\r\n gap='xs'\r\n >\r\n {(props.title || props.description) && (\r\n <Flex\r\n align='center'\r\n flex={1}\r\n p={props.p == '0' ? 'sm' : 0}\r\n >\r\n {props.title && (\r\n <Text\r\n size=\"sm\"\r\n style={{\r\n lineHeight: '1.25vh',\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}\r\n >{props.title}</Text>\r\n )}\r\n {props.description && (\r\n <Tooltip\r\n label={props.description}\r\n position=\"top-end\"\r\n withArrow\r\n multiline\r\n maw=\"22vh\"\r\n styles={{\r\n tooltip: {\r\n background: alpha(theme.colors.dark[7], 0.95),\r\n border: `0.1vh solid rgba(255,255,255,0.1)`,\r\n color: 'rgba(255,255,255,0.75)',\r\n fontFamily: 'Akrobat Bold',\r\n fontSize: '1.3vh',\r\n lineHeight: 1.3,\r\n padding: '0.6vh 0.8vh',\r\n letterSpacing: '0.03em',\r\n },\r\n }}\r\n >\r\n <Flex align='center' justify='center' style={{ marginLeft: 'auto', cursor: 'help' }}>\r\n <Info size=\"1.6vh\" color={alpha(theme.colors[theme.primaryColor][5], 0.45)} />\r\n </Flex>\r\n </Tooltip>\r\n )}\r\n </Flex>\r\n )}\r\n {props.error && (\r\n <Text\r\n size='xs'\r\n c={theme.colors.red[9]}\r\n fw={600}\r\n mb='auto'\r\n lh='0.8'\r\n >\r\n {props.error}\r\n </Text>\r\n )}\r\n {props.rightSection && (\r\n <Flex>\r\n {props.rightSection}\r\n </Flex>\r\n )}\r\n </Flex>\r\n {props.children} \r\n </MotionFlex>\r\n )\r\n}","import { create } from 'zustand';\r\n\r\n// Import sounds as URLs (TypeScript-safe)\r\nimport clickSoundUrl from './click_sound.mp3';\r\nimport hoverSoundUrl from './hover_sound.mp3';\r\n\r\n// Define a type for the store state and actions\r\ntype AudioPlayerStore = {\r\n play: (sound: string) => void;\r\n stop: (sound: string) => void;\r\n};\r\n\r\n// Create the store using Zustand\r\nexport const useAudio = create<AudioPlayerStore>(() => {\r\n const audioRefs: Record<string, HTMLAudioElement> = {};\r\n\r\n // Predefined sounds\r\n const sounds: Record<string, string> = {\r\n click: clickSoundUrl,\r\n hover: hoverSoundUrl,\r\n };\r\n\r\n // Initialize audio elements for each sound\r\n for (const [key, src] of Object.entries(sounds)) {\r\n audioRefs[key] = new Audio(src);\r\n }\r\n\r\n return {\r\n play: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.currentTime = 0;\r\n audio.volume = 0.1;\r\n audio.play();\r\n },\r\n stop: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.pause();\r\n audio.currentTime = 0;\r\n },\r\n };\r\n});\r\n","\r\nimport { useAudio } from \"@/hooks/useAudio/store\";\r\nimport { colorWithAlpha } from \"@/utils\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { alpha, Flex, FlexProps, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { MotionFlex, MotionIcon, MotionText } from \"./Motion\";\r\n\r\n\r\nexport type SegmentProps = {\r\n label: string;\r\n value: string;\r\n icon?: string; // Optional icon for the segment\r\n rightSection?: React.ReactNode;\r\n color?: string;\r\n}\r\n\r\nexport type SegmentedControlProps = {\r\n w?: string; // Width of the entire control\r\n multi?: boolean; // Optional prop to allow multiple selections\r\n value?: string | string[]; // Controlled value, if provided\r\n onChange?: (value: string | string[]) => void; // Callback for value change\r\n fz?: string; // Font size for the segments\r\n justify?: FlexProps['justify']; \r\n items: SegmentProps[];\r\n sounds?: boolean;\r\n roundEdges?: boolean;\r\n color?: string;\r\n} & FlexProps;\r\n\r\nexport function SegmentedControl(props: SegmentedControlProps) {\r\n const theme = useMantineTheme();\r\n const play = useAudio((state) => state.play);\r\n\r\n const handleChange = (newValue: string | string[]) => {\r\n if (props.sounds) play('click');\r\n if (props.onChange) {\r\n props.onChange(newValue);\r\n }\r\n };\r\n\r\n return (\r\n <Flex\r\n bg='rgba(33, 33, 33, 0.6)'\r\n w={props.w || 'fit-content'}\r\n style={{\r\n borderRadius: props.roundEdges !== false ? theme.radius.xs : 0,\r\n overflow: 'hidden',\r\n }}\r\n {...props}\r\n >\r\n {props.items.map((item, index) => (\r\n <motion.div\r\n key={index}\r\n initial={{ x: -100, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, delay: index * 0.1, ease: 'easeInOut' }}\r\n\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flex: 1,\r\n }}\r\n >\r\n <Segment\r\n key={item.value}\r\n label={item.label}\r\n value={item.value}\r\n icon={item.icon}\r\n rightSection={item.rightSection}\r\n fz={props.fz}\r\n color={props.color}\r\n selected={!props.multi ? props.value === item.value : Array.isArray(props.value) && props.value.includes(item.value)}\r\n onClick={() => {\r\n\r\n if (props.multi) {\r\n const newValue = Array.isArray(props.value)\r\n ? props.value.includes(item.value)\r\n ? props.value.filter((v) => v !== item.value)\r\n : [...props.value, item.value]\r\n : [item.value];\r\n\r\n handleChange(newValue);\r\n } else {\r\n handleChange(item.value);\r\n }\r\n }}\r\n />\r\n </motion.div>\r\n ))}\r\n </Flex>\r\n )\r\n}\r\n\r\nfunction Segment(props: SegmentProps & {\r\n selected: boolean;\r\n onClick: () => void;\r\n fz?: string;\r\n}) {\r\n const theme = useMantineTheme();\r\n\r\n return (\r\n <MotionFlex\r\n onClick={props.onClick}\r\n w='100%'\r\n direction=\"column\"\r\n align=\"center\"\r\n // p='xs'\r\n h='100%'\r\n bg={props.selected ? props.color ? colorWithAlpha(props.color, 0.2) : colorWithAlpha(theme.colors[theme.primaryColor][theme.primaryShade as number], 0.2) : 'transparent'}\r\n pos=\"relative\"\r\n style={{\r\n // position: \"relative\",\r\n cursor: \"pointer\",\r\n }}\r\n justify={'center'}\r\n whileHover={{ scale: 1.05 }}\r\n whileTap={{ scale: 0.95 }}\r\n >\r\n <Flex\r\n align='center'\r\n gap='xs'\r\n // bg='red'\r\n p='xs'\r\n >\r\n \r\n {props.icon && \r\n <MotionIcon\r\n icon={props.icon as IconProp}\r\n // size='sm'\r\n initial={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'inherit', \r\n }}\r\n animate={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'inherit', \r\n }}\r\n exit={{\r\n color: 'inherit',\r\n }}\r\n style={{\r\n fontSize: theme.fontSizes.xs,\r\n marginBottom: '0.2vh',\r\n }}\r\n />\r\n }\r\n <MotionText\r\n size={props.fz || 'xs'}\r\n initial={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'rgba(255, 255, 255, 0.7)', \r\n }}\r\n animate={{\r\n color: props.selected ? props.color || theme.colors[theme.primaryColor][5] : 'rgba(255, 255, 255, 0.7)', \r\n }}\r\n exit={{\r\n color: 'rgba(255, 255, 255, 0.7)',\r\n }}\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em',\r\n textTransform: 'uppercase',\r\n }}\r\n >{props.label.toUpperCase()}</MotionText>\r\n {props.rightSection}\r\n </Flex>\r\n\r\n {/* Enhanced bottom border with smooth animation */}\r\n <motion.div\r\n initial={false}\r\n animate={{\r\n scaleX: props.selected ? 1 : 0,\r\n opacity: props.selected ? 1 : 0,\r\n }}\r\n transition={{\r\n duration: 0.3,\r\n ease: [0.4, 0, 0.2, 1], // Custom easing curve for smooth feel\r\n }}\r\n style={{\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n height: '0.2vh',\r\n backgroundColor: props.color || theme.colors[theme.primaryColor][5],\r\n transformOrigin: 'center',\r\n }}\r\n />\r\n </MotionFlex>\r\n );\r\n}","import { createContext, useContext, useRef } from \"react\";\r\nimport { create, StoreApi, useStore } from \"zustand\";\r\nimport {SegmentedControl, SegmentProps} from \"./SegmentedControl\";\r\n\r\nexport type NavigationStore = {\r\n pageId: string;\r\n}\r\n\r\nexport const NavigationContext = createContext<StoreApi<NavigationStore> | null>(null);\r\n\r\nexport function useNavigation<T>(selector: (state: NavigationStore) => T){\r\n const navigation = useContext(NavigationContext);\r\n if(!navigation){\r\n throw new Error('useNavigation must be used within a NavigationProvider');\r\n }\r\n return useStore(navigation, selector);\r\n}\r\n\r\n// Hook to get the store API for setting state\r\nexport function useNavigationStore(){\r\n const navigation = useContext(NavigationContext);\r\n if(!navigation){\r\n throw new Error('useNavigationStore must be used within a NavigationProvider');\r\n }\r\n return navigation;\r\n}\r\n\r\nexport function NavigationProvider({ children, defaultPage }: { children: React.ReactNode, defaultPage?: string }){\r\n const storeRef = useRef<StoreApi<NavigationStore>>(\r\n create<NavigationStore>(() => ({\r\n pageId: defaultPage || 'home',\r\n }))\r\n );\r\n\r\n return (\r\n <NavigationContext.Provider value={storeRef.current}>\r\n {children}\r\n </NavigationContext.Provider>\r\n );\r\n}\r\n\r\nexport function NavBar(props: {\r\n items: SegmentProps[];\r\n}){\r\n const pageId = useNavigation((state) => state.pageId);\r\n const store = useNavigationStore();\r\n \r\n return (\r\n <SegmentedControl\r\n sounds\r\n w='100%'\r\n value={pageId}\r\n items={props.items}\r\n onChange={(value) => {\r\n store.setState({ pageId: value as string });\r\n }}\r\n />\r\n )\r\n}","import { motion, Variants } from \"framer-motion\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\nexport type ProgressProps = {\r\n progress: number; // 0 - 100 range\r\n segments: number; // Number of segments (e.g., 5, 10, etc.)\r\n size?: string | number;\r\n};\r\n\r\nconst containerVariants: Variants = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: 0.1,\r\n delayChildren: 0.05,\r\n }\r\n },\r\n exit: {\r\n opacity: 0,\r\n transition: {\r\n staggerChildren: 0.05,\r\n staggerDirection: -1,\r\n }\r\n }\r\n};\r\n\r\n// Child item variants\r\nconst itemVariants: Variants = {\r\n hidden: { \r\n opacity: 0, \r\n x: 20,\r\n scale: 0.95,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n scale: 1,\r\n transition: {\r\n type: \"spring\",\r\n stiffness: 300,\r\n damping: 24,\r\n }\r\n },\r\n exit: {\r\n opacity: 0,\r\n x: -10,\r\n scale: 0.95,\r\n transition: {\r\n duration: 0.2,\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\nexport function SegmentedProgress(props: ProgressProps) {\r\n const progressPerSegment = 100 / props.segments; // Percentage per segment\r\n const filledSegments = Math.floor(props.progress / progressPerSegment);\r\n const partialFill = (props.progress % progressPerSegment) / progressPerSegment; // 0 to 1 range for partial fill\r\n\r\n return (\r\n <MotionFlex \r\n w=\"100%\" \r\n h={props.size || '1vh'}\r\n gap='xs'\r\n initial='hidden'\r\n animate='visible'\r\n variants={containerVariants}\r\n >\r\n {[...Array(props.segments)].map((_, index) => {\r\n const isFilled = index < filledSegments;\r\n const isPartial = index === filledSegments;\r\n\r\n return (\r\n <motion.div\r\n key={index}\r\n variants={itemVariants}\r\n style={{\r\n flex: 1,\r\n height: \"100%\",\r\n background: isFilled\r\n ? \"rgba(255, 255, 255, 0.8)\"\r\n : isPartial\r\n ? `linear-gradient(to right, rgba(255, 255, 255, 0.8) ${partialFill * 100}%, rgba(255, 255, 255, 0.2) ${partialFill * 100}%)`\r\n : \"rgba(255, 255, 255, 0.2)\",\r\n transition: \"background 0.3s ease\",\r\n }}\r\n />\r\n );\r\n })}\r\n </MotionFlex>\r\n );\r\n}","import { colorWithAlpha } from \"@/utils\";\nimport { IconName } from \"@fortawesome/fontawesome-svg-core\";\nimport { Flex, MantineSize, Text, useMantineTheme } from \"@mantine/core\";\nimport { BorderedIcon } from \"./BorderedIcon\";\nimport { useSettings } from \"@/utils/useSettings\";\n\nexport type ButtonProps = {\n icon: string;\n onClick?: () => void;\n};\n\nexport type TitleSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type TitleProps = {\n title: string;\n description: string;\n icon: string;\n iconColor?: string;\n bg?: string;\n w?: string;\n removeBorder?: boolean;\n borderColor?: string;\n p?: string;\n /**\n * Scale of the whole block — icon, title text, description text, and inner\n * spacing all follow this single value. Defaults to \"md\" to preserve the\n * historical look so existing consumers don't shift.\n */\n size?: TitleSize;\n rightSection?: React.ReactNode;\n};\n\ntype SizePreset = {\n iconFontSize: string;\n iconPadding: string;\n titleSize: MantineSize | string;\n titleLineHeight: string;\n descriptionSize: MantineSize | string;\n innerGap: MantineSize | string;\n bottomPad: MantineSize | string;\n};\n\nfunction getSizePreset(size: TitleSize, themeMdFontSize: string): SizePreset {\n switch (size) {\n case \"xs\":\n return { iconFontSize: \"1.2vh\", iconPadding: \"xxs\", titleSize: \"xxs\", titleLineHeight: \"1.2vh\", descriptionSize: \"xxs\", innerGap: \"xs\", bottomPad: \"xs\" };\n case \"sm\":\n return { iconFontSize: \"1.6vh\", iconPadding: \"xxs\", titleSize: \"xs\", titleLineHeight: \"1.6vh\", descriptionSize: \"xxs\", innerGap: \"xs\", bottomPad: \"xs\" };\n case \"lg\":\n return { iconFontSize: \"2.6vh\", iconPadding: \"sm\", titleSize: \"md\", titleLineHeight: \"2.6vh\", descriptionSize: \"sm\", innerGap: \"sm\", bottomPad: \"sm\" };\n case \"xl\":\n return { iconFontSize: \"3.2vh\", iconPadding: \"sm\", titleSize: \"lg\", titleLineHeight: \"3.2vh\", descriptionSize: \"md\", innerGap: \"md\", bottomPad: \"md\" };\n case \"md\":\n default:\n return { iconFontSize: themeMdFontSize, iconPadding: \"xs\", titleSize: \"sm\", titleLineHeight: themeMdFontSize, descriptionSize: \"xs\", innerGap: \"sm\", bottomPad: \"sm\" };\n }\n}\n\nexport function Title(props: TitleProps) {\n const game = useSettings((state) => state.game);\n const theme = useMantineTheme();\n const preset = getSizePreset(props.size ?? \"md\", theme.fontSizes.md);\n return (\n <Flex\n direction=\"column\"\n bg={props.bg || \"transparent\"}\n gap=\"xs\"\n w={props.w || \"100%\"}\n p={props.p || \"unset\"}\n pb={!props.p ? preset.bottomPad : props.p}\n style={{\n userSelect: \"none\",\n borderBottom: props.removeBorder ? \"none\" : `0.3vh solid ${props.borderColor || colorWithAlpha(theme.colors[theme.primaryColor][9], 0.5)}`,\n }}\n >\n <Flex align=\"center\" justify={\"center\"}>\n <Flex align=\"center\" gap={preset.innerGap} pr=\"xs\">\n <BorderedIcon\n icon={props.icon as IconName}\n fontSize={preset.iconFontSize}\n color={props.iconColor}\n p={preset.iconPadding}\n />\n <Flex direction=\"column\" gap=\"0.25vh\">\n <Text\n p=\"0\"\n size={preset.titleSize as MantineSize}\n style={{\n lineHeight: preset.titleLineHeight,\n fontFamily: game == \"fivem\" ? \"Akrobat Bold\" : \"Red Dead\",\n letterSpacing: \"0.05em\",\n textTransform: \"uppercase\",\n }}\n >\n {props.title}\n </Text>\n <Text\n size={preset.descriptionSize as MantineSize}\n c=\"grey\"\n style={{ whiteSpace: \"normal\", wordWrap: \"break-word\" }}\n >\n {props.description}\n </Text>\n </Flex>\n </Flex>\n <Flex ml=\"auto\" align=\"center\" gap=\"xs\">\n {props.rightSection}\n </Flex>\n </Flex>\n </Flex>\n );\n}\n","\r\nimport { Flex, Progress, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\n\r\nexport function LevelBanner(props: {\r\n exp: number;\r\n level: number;\r\n nextLevelXP: number;\r\n progressToLevel: number;\r\n\r\n color?: string;\r\n}){ \r\n return (\r\n <MotionFlex\r\n // bg='rgba(77, 77, 77, 0.3)'\r\n w='35vh'\r\n pos='absolute'\r\n left='50%'\r\n align='center'\r\n gap='xs'\r\n style={{\r\n \r\n borderRadius: useMantineTheme().radius.xxs,\r\n }}\r\n // direction={'column'}\r\n initial={{ opacity: 0, y: -10, transform: 'translateX(-50%)' }}\r\n animate={{ opacity: 1, y: 0, transform: 'translateX(-50%)' }}\r\n exit={{ opacity: 0, y: -10, transform: 'translateX(-50%)' }}\r\n transition={{ duration: 0.3 }}\r\n direction={'column'}\r\n >\r\n <Flex\r\n w='100%'\r\n justify={'space-between'}\r\n >\r\n <Text\r\n size='xxs'\r\n c='rgba(255, 255, 255, 0.9)'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em',\r\n }}\r\n >LVL {props.level}</Text>\r\n <Text\r\n size='xxs'\r\n c='rgba(255, 255, 255, 0.7)'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em',\r\n }}\r\n >{props.exp}/{props.nextLevelXP} XP</Text>\r\n <Text\r\n size='xxs'\r\n c='rgba(255, 255, 255, 0.7)'\r\n style={{\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.1em', \r\n }}\r\n >LVL {props.level + 1}</Text>\r\n </Flex>\r\n <Progress\r\n color={props.color}\r\n w='100%'\r\n size='sm'\r\n value={props.progressToLevel}\r\n />\r\n </MotionFlex>\r\n\r\n )\r\n}\r\n\r\n","import { colorWithAlpha, locale } from \"@/utils\";\r\nimport { Flex, RingProgress, Text, alpha, useMantineTheme } from \"@mantine/core\";\r\n\r\nexport function LevelPanel(props: {\r\n exp: number;\r\n level: number;\r\n nextLevelXP: number;\r\n progressToLevel: number;\r\n text?: string;\r\n color?: string;\r\n}){\r\n const theme = useMantineTheme();\r\n\r\n return (\r\n <Flex\r\n w='fit-content'\r\n pr='8vh'\r\n pl='8vh'\r\n \r\n bg='linear-gradient(180deg, rgba(30, 30, 30, 0.82) 0%, rgba(30, 30, 30, 0.3) 50%, rgba(30, 30, 30, 0.6) 100%)' \r\n style={{\r\n borderRadius: theme.radius.xs,\r\n boxShadow: theme.shadows.sm,\r\n outline: '0.2vh solid rgba(255,255,255,0.1)',\r\n }}\r\n justify={'center'}\r\n align={'center'}\r\n direction={'column'}\r\n p='sm'\r\n >\r\n\r\n <RingProgress\r\n size={190}\r\n roundCaps\r\n thickness={10}\r\n sections={[{ value: props.progressToLevel, color:colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade as number], 0.9) }]}\r\n label={\r\n <Flex\r\n justify={'center'}\r\n align={'center'}\r\n direction={'column'}\r\n >\r\n <Text\r\n size='6vh'\r\n c={colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade as number], 0.9)}\r\n style={{\r\n fontFamily: 'Akrobat Black',\r\n textShadow: `0 0 10px ${colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade as number], 0.7)}`, \r\n }}\r\n >\r\n {props.level}\r\n </Text>\r\n </Flex>\r\n }\r\n />\r\n <Text\r\n size='sm'\r\n style={{\r\n fontFamily: 'Akrobat Black',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}\r\n >\r\n {props.text || locale('Level')}\r\n </Text>\r\n <Text\r\n size='xs'\r\n c='rgba(255,255,255,0.6)'\r\n >\r\n {props.exp}/{props.nextLevelXP} {locale('EXP')}\r\n </Text>\r\n </Flex>\r\n )\r\n}\r\n","import { alpha, Flex, Portal, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { X } from \"lucide-react\";\r\nimport React, { useRef } from \"react\";\r\n\r\nexport type ModalProps = {\r\n title: string;\r\n icon?: React.ElementType;\r\n iconColor?: string;\r\n description?: string;\r\n badge?: { label: string; color: string };\r\n onClose: () => void;\r\n width?: string;\r\n maxHeight?: string;\r\n height?: string;\r\n zIndex?: number;\r\n clickOutside?: boolean;\r\n children: React.ReactNode;\r\n};\r\n\r\nexport function Modal({\r\n title,\r\n icon: Icon,\r\n iconColor,\r\n description,\r\n badge,\r\n onClose,\r\n width = \"52vh\",\r\n maxHeight = \"85vh\",\r\n height,\r\n zIndex = 100,\r\n clickOutside = true,\r\n children,\r\n}: ModalProps) {\r\n const theme = useMantineTheme();\r\n const pointerDownOnOverlay = useRef(false);\r\n\r\n return (\r\n <Portal>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n background: \"rgba(0,0,0,0.65)\",\r\n }}\r\n onPointerDown={(e) => {\r\n pointerDownOnOverlay.current = e.target === e.currentTarget;\r\n }}\r\n onClick={(e) => {\r\n if (clickOutside && e.target === e.currentTarget && pointerDownOnOverlay.current) {\r\n onClose();\r\n }\r\n }}\r\n >\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.96, y: 8 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.96, y: 8 }}\r\n transition={{ duration: 0.18, ease: \"easeOut\" }}\r\n style={{\r\n background: alpha(theme.colors.dark[9], 0.98),\r\n border: `0.1vh solid ${theme.colors.dark[7]}`,\r\n borderRadius: theme.radius.sm,\r\n width,\r\n maxHeight,\r\n height,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {/* Header */}\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n px=\"sm\"\r\n py=\"xs\"\r\n style={{\r\n borderBottom: `0.1vh solid ${theme.colors.dark[7]}`,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <Flex align=\"center\" gap=\"xs\">\r\n {Icon && (\r\n <Icon\r\n color={iconColor ?? \"rgba(255,255,255,0.6)\"}\r\n size=\"2vh\"\r\n />\r\n )}\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"sm\"\r\n tt=\"uppercase\"\r\n lts=\"0.06em\"\r\n c=\"rgba(255,255,255,0.85)\"\r\n >\r\n {title}\r\n </Text>\r\n {badge && (\r\n <div\r\n style={{\r\n background: alpha(badge.color, 0.12),\r\n border: `0.1vh solid ${alpha(badge.color, 0.35)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: `0 ${theme.spacing.xxs}`,\r\n }}\r\n >\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.06em\"\r\n c={badge.color}\r\n >\r\n {badge.label}\r\n </Text>\r\n </div>\r\n )}\r\n </Flex>\r\n <motion.button\r\n onClick={onClose}\r\n whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }}\r\n style={{\r\n background: \"transparent\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: theme.spacing.xxs,\r\n borderRadius: theme.radius.xs,\r\n display: \"flex\",\r\n }}\r\n >\r\n <X color=\"rgba(255,255,255,0.4)\" />\r\n </motion.button>\r\n </Flex>\r\n\r\n {/* Description */}\r\n {description && (\r\n <Flex px=\"sm\" pt=\"xs\">\r\n <Text\r\n ff=\"Akrobat Regular\"\r\n size=\"xs\"\r\n c=\"rgba(255,255,255,0.65)\"\r\n style={{ lineHeight: 1.5 }}\r\n >\r\n {description}\r\n </Text>\r\n </Flex>\r\n )}\r\n\r\n {/* Content */}\r\n <div style={{ flex: 1, minHeight: 0, display: \"flex\", flexDirection: \"column\" }}>\r\n {children}\r\n </div>\r\n </motion.div>\r\n </motion.div>\r\n </Portal>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Button, Flex, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\n\r\n\r\nexport type PromptButton = {\r\n icon?: string;\r\n text: string;\r\n color?: string;\r\n variant?: 'filled' | 'outline' | 'light' | 'subtle' | 'default';\r\n onClick: () => void;\r\n}\r\n\r\nexport type Prompt = {\r\n message: string;\r\n buttons: PromptButton[];\r\n};\r\n\r\nexport function PromptModal(props: Prompt) {\r\n const theme = useMantineTheme();\r\n return (\r\n <MotionFlex\r\n gap='sm'\r\n direction={'column'}\r\n flex={1}\r\n >\r\n <Text\r\n size='xs'\r\n c='rgba(255, 255, 255, 0.8)'\r\n >{props.message}</Text>\r\n <Flex\r\n gap='sm'\r\n >\r\n {props.buttons.map((button, index) => (\r\n <Button\r\n key={index}\r\n variant={button.variant}\r\n color={button.color}\r\n flex={0.5}\r\n onClick={button.onClick}\r\n leftSection={button.icon ? (\r\n <FontAwesomeIcon\r\n icon={button.icon as IconProp}\r\n style={{\r\n fontSize: theme.fontSizes.xs,\r\n }}\r\n />\r\n ): undefined}\r\n >\r\n {button.text}\r\n </Button>\r\n ))}\r\n </Flex>\r\n </MotionFlex>\r\n )\r\n} \r\n\r\n","import { createContext, useContext, useRef } from \"react\";\r\nimport { create, StoreApi, useStore } from \"zustand\";\r\nimport { Modal } from \"./Modal\";\r\nimport { AnimatePresence } from \"framer-motion\";\r\nimport React from \"react\";\r\n\r\nexport type StoreModalProps = {\r\n children: React.ReactNode;\r\n title: string;\r\n icon?: React.ElementType;\r\n iconColor?: string;\r\n description?: string;\r\n badge?: { label: string; color: string };\r\n height?: string;\r\n width?: string;\r\n maxHeight?: string;\r\n zIndex?: number;\r\n clickOutside?: boolean;\r\n};\r\n\r\ntype ModalStore = {\r\n active: StoreModalProps | null;\r\n}\r\n\r\nexport const ModalContext = createContext<StoreApi<ModalStore> | null>(null);\r\n\r\nexport function useModal<T>(selector: (state: ModalStore) => T): T {\r\n const modal = useContext(ModalContext);\r\n if(!modal){\r\n throw new Error('useModal must be used within a ModalProvider');\r\n }\r\n return useStore(modal, selector);\r\n}\r\n\r\nfunction StoreModal() {\r\n const active = useModal((state) => state.active);\r\n const { hideModal } = useModalActions();\r\n\r\n return (\r\n <AnimatePresence>\r\n {active && (\r\n <Modal\r\n title={active.title}\r\n icon={active.icon}\r\n iconColor={active.iconColor}\r\n description={active.description}\r\n badge={active.badge}\r\n onClose={hideModal}\r\n width={active.width}\r\n maxHeight={active.maxHeight}\r\n height={active.height}\r\n zIndex={active.zIndex}\r\n clickOutside={active.clickOutside}\r\n >\r\n {active.children}\r\n </Modal>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ModalProvider({ children }: { children: React.ReactNode }){\r\n const storeRef = useRef<StoreApi<ModalStore>>(\r\n create<ModalStore>(() => ({\r\n active: null,\r\n }))\r\n );\r\n\r\n return (\r\n <ModalContext.Provider value={storeRef.current}>\r\n <StoreModal/>\r\n {children}\r\n </ModalContext.Provider>\r\n );\r\n}\r\n\r\nexport function useModalActions() {\r\n const modal = useContext(ModalContext);\r\n if (!modal) throw new Error(\"useModalActions must be used within a ModalProvider\");\r\n\r\n const showModal = (openModal: StoreModalProps) => {\r\n modal.setState({ active: openModal });\r\n };\r\n\r\n const hideModal = () => {\r\n modal.setState({ active: null });\r\n };\r\n\r\n return { showModal, hideModal };\r\n}\r\n\r\n","import { alpha, Flex, Portal, Text, TextInput, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { AlertTriangle, Trash2, X } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\n\r\nexport type ConfirmModalProps = {\r\n title: string;\r\n description: string;\r\n confirmLabel?: string;\r\n /** If provided, user must type this exact string to enable the confirm button */\r\n confirmText?: string;\r\n onConfirm: () => void;\r\n onClose: () => void;\r\n zIndex?: number;\r\n};\r\n\r\nexport function ConfirmModal({\r\n title,\r\n description,\r\n confirmLabel = \"Delete\",\r\n confirmText,\r\n onConfirm,\r\n onClose,\r\n zIndex = 200,\r\n}: ConfirmModalProps) {\r\n const theme = useMantineTheme();\r\n const [typed, setTyped] = useState(\"\");\r\n const canConfirm = !confirmText || typed === confirmText;\r\n\r\n return (\r\n <Portal>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n background: \"rgba(0,0,0,0.7)\",\r\n }}\r\n onClick={onClose}\r\n >\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 8 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 8 }}\r\n transition={{ duration: 0.18, ease: \"easeOut\" }}\r\n onClick={(e) => e.stopPropagation()}\r\n style={{\r\n background: alpha(theme.colors.dark[9], 0.98),\r\n border: `0.1vh solid ${alpha(\"#ef4444\", 0.3)}`,\r\n borderRadius: theme.radius.sm,\r\n width: \"44vh\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {/* Header */}\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n px=\"sm\"\r\n py=\"xs\"\r\n style={{\r\n borderBottom: `0.1vh solid ${alpha(\"#ef4444\", 0.2)}`,\r\n background: alpha(\"#ef4444\", 0.06),\r\n flexShrink: 0,\r\n }}\r\n >\r\n <Flex align=\"center\" gap=\"xs\">\r\n <AlertTriangle size=\"1.8vh\" color=\"#ef4444\" />\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"sm\"\r\n tt=\"uppercase\"\r\n lts=\"0.05em\"\r\n c=\"#ef4444\"\r\n >\r\n {title}\r\n </Text>\r\n </Flex>\r\n <motion.button\r\n onClick={onClose}\r\n whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }}\r\n style={{\r\n background: \"transparent\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: theme.spacing.xxs,\r\n borderRadius: theme.radius.xs,\r\n display: \"flex\",\r\n }}\r\n >\r\n <X color=\"rgba(255,255,255,0.4)\" />\r\n </motion.button>\r\n </Flex>\r\n\r\n {/* Body */}\r\n <Flex direction=\"column\" gap=\"sm\" p=\"sm\">\r\n <Text\r\n ff=\"Akrobat Regular\"\r\n size=\"xs\"\r\n c=\"rgba(255,255,255,0.65)\"\r\n style={{ lineHeight: 1.5 }}\r\n >\r\n {description}\r\n </Text>\r\n\r\n {confirmText && (\r\n <Flex direction=\"column\" gap=\"xxs\">\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.07em\"\r\n c=\"rgba(255,255,255,0.35)\"\r\n >\r\n Type{\" \"}\r\n <Text component=\"span\" ff=\"Akrobat Bold\" c=\"#ef4444\">\r\n {confirmText}\r\n </Text>{\" \"}\r\n to confirm\r\n </Text>\r\n <TextInput\r\n size=\"xs\"\r\n placeholder={confirmText}\r\n value={typed}\r\n onChange={(e) => setTyped(e.currentTarget.value)}\r\n styles={(t) => ({\r\n input: {\r\n backgroundColor: alpha(t.colors.dark[7], 0.5),\r\n border: `0.1vh solid ${alpha(\r\n typed === confirmText\r\n ? \"#ef4444\"\r\n : t.colors.dark[5],\r\n 0.5\r\n )}`,\r\n color: \"rgba(255,255,255,0.85)\",\r\n fontFamily: \"Akrobat Regular\",\r\n },\r\n })}\r\n autoFocus\r\n />\r\n </Flex>\r\n )}\r\n </Flex>\r\n\r\n {/* Footer */}\r\n <Flex\r\n justify=\"flex-end\"\r\n gap=\"xs\"\r\n px=\"sm\"\r\n py=\"sm\"\r\n style={{\r\n borderTop: `0.1vh solid ${theme.colors.dark[7]}`,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <motion.button\r\n onClick={onClose}\r\n whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{\r\n background: \"transparent\",\r\n border: `0.1vh solid ${theme.colors.dark[6]}`,\r\n borderRadius: theme.radius.xs,\r\n padding: \"0.5vh 1vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"0.4vh\",\r\n }}\r\n >\r\n <X size=\"1.4vh\" color=\"rgba(255,255,255,0.4)\" />\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.05em\"\r\n c=\"rgba(255,255,255,0.4)\"\r\n >\r\n Cancel\r\n </Text>\r\n </motion.button>\r\n\r\n <motion.button\r\n onClick={() => {\r\n if (canConfirm) {\r\n onConfirm();\r\n onClose();\r\n }\r\n }}\r\n whileHover={\r\n canConfirm\r\n ? {\r\n background: alpha(\"#ef4444\", 0.22),\r\n borderColor: alpha(\"#ef4444\", 0.6),\r\n }\r\n : undefined\r\n }\r\n whileTap={canConfirm ? { scale: 0.97 } : undefined}\r\n style={{\r\n background: alpha(\"#ef4444\", canConfirm ? 0.14 : 0.05),\r\n border: `0.1vh solid ${alpha(\r\n \"#ef4444\",\r\n canConfirm ? 0.45 : 0.15\r\n )}`,\r\n borderRadius: theme.radius.xs,\r\n padding: \"0.5vh 1vh\",\r\n cursor: canConfirm ? \"pointer\" : \"not-allowed\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"0.4vh\",\r\n opacity: canConfirm ? 1 : 0.45,\r\n transition: \"opacity 0.15s\",\r\n }}\r\n >\r\n <Trash2 size=\"1.4vh\" color=\"#ef4444\" />\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n tt=\"uppercase\"\r\n lts=\"0.05em\"\r\n c=\"#ef4444\"\r\n >\r\n {confirmLabel}\r\n </Text>\r\n </motion.button>\r\n </Flex>\r\n </motion.div>\r\n </motion.div>\r\n </Portal>\r\n );\r\n}\r\n","// Yellow ⚠ warning banner shown at the top of any scriptConfig admin panel\n// when one or more configured items aren't registered in the player's\n// inventory items table.\n//\n// Driven by dirk_lib's `<scriptName>:getMissingItems` callback (server-side\n// audit walks the schema's x-installItem / x-installItemList annotations,\n// cross-references `lib.inventory.item(name)`, and returns the missing names\n// + ready-to-paste install snippets per format).\n//\n// Auto-mounted by ConfigPanel above its tab AnimatePresence so it survives\n// tab switches without remounting. Consumers can suppress it by passing\n// `suppressMissingItemsBanner` to ConfigPanel.\n//\n// To use this in another consumer: nothing to do. ConfigPanel mounts it.\n// Just annotate the consumer's schema.json with x-installItem /\n// x-installItemList on item-name fields, and dirk_lib does the rest.\n\nimport { alpha, Flex, Text, useMantineTheme } from \"@mantine/core\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { AlertTriangle, ChevronDown, Check, Copy, RefreshCw } from \"lucide-react\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { create } from \"zustand\";\nimport { fetchNui } from \"../utils/fetchNui\";\n\ntype MissingItem = {\n name: string;\n label?: string;\n weight?: number;\n description?: string;\n};\n\ntype AuditPayload = {\n missing: MissingItem[];\n snippets: { ox: string; qb: string; esx: string };\n};\n\ntype AuditResponse = {\n success: boolean;\n _error?: string;\n data?: AuditPayload;\n};\n\ntype TabId = \"ox\" | \"qb\" | \"esx\";\n\nconst TABS: { id: TabId; label: string }[] = [\n { id: \"ox\", label: \"ox_inventory\" },\n { id: \"qb\", label: \"qb-inventory\" },\n { id: \"esx\", label: \"ESX legacy SQL\" },\n];\n\n// Module-level audit store. Persists across component re-mounts (ConfigPanel\n// keys its tab content by activeTab, so each tab switch unmounts + remounts\n// children). Stored data survives, fetch fires once per panel session.\ntype AuditStore = {\n data: AuditPayload | null;\n loaded: boolean;\n inFlight: boolean;\n refresh: () => Promise<void>;\n};\n\nexport const useMissingItemsAudit = create<AuditStore>((set, get) => ({\n data: null,\n loaded: false,\n inFlight: false,\n refresh: async () => {\n if (get().inFlight) return;\n set({ inFlight: true });\n try {\n const res = await fetchNui<AuditResponse>(\"GET_MISSING_ITEMS\", undefined, {\n success: true,\n data: { missing: [], snippets: { ox: \"\", qb: \"\", esx: \"\" } },\n });\n if (res?.success && res.data) {\n set({ data: res.data, loaded: true });\n } else {\n set({ loaded: true });\n }\n } catch {\n set({ loaded: true });\n } finally {\n set({ inFlight: false });\n }\n },\n}));\n\nexport function MissingItemsBanner() {\n const theme = useMantineTheme();\n const audit = useMissingItemsAudit((s) => s.data);\n const loaded = useMissingItemsAudit((s) => s.loaded);\n const inFlight = useMissingItemsAudit((s) => s.inFlight);\n const refresh = useMissingItemsAudit((s) => s.refresh);\n const [expanded, setExpanded] = useState(false);\n const [activeTab, setActiveTab] = useState<TabId>(\"ox\");\n const [hoveredTab, setHoveredTab] = useState<TabId | null>(null);\n const [copied, setCopied] = useState<TabId | null>(null);\n\n // First fetch — only when not yet loaded. Re-mount across tab switches\n // re-fires this useEffect but the `loaded` guard blocks the second hit.\n useEffect(() => {\n if (!loaded) refresh();\n }, [loaded, refresh]);\n\n const handleCopy = useCallback((tab: TabId) => {\n if (!audit) return;\n const text = audit.snippets[tab] ?? \"\";\n navigator.clipboard.writeText(text).then(() => {\n setCopied(tab);\n setTimeout(() => setCopied((c) => (c === tab ? null : c)), 1500);\n }).catch(() => {});\n }, [audit]);\n\n const handleRefresh = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n refresh();\n }, [refresh]);\n\n if (!audit || audit.missing.length === 0) return null;\n\n const warnColor = \"#f59e0b\"; // amber\n const names = audit.missing.map((m) => m.name);\n\n return (\n <div\n style={{\n background: alpha(warnColor, 0.06),\n border: `0.1vh solid ${alpha(warnColor, 0.35)}`,\n borderLeft: `0.3vh solid ${warnColor}`,\n borderRadius: theme.radius.xs,\n margin: \"0.6vh 1vh\",\n overflow: \"hidden\",\n }}\n >\n {/* Summary row */}\n <Flex align=\"center\" gap=\"0.8vh\" p=\"0.8vh 1vh\" style={{ cursor: \"pointer\" }} onClick={() => setExpanded((e) => !e)}>\n <AlertTriangle size=\"1.8vh\" color={warnColor} strokeWidth={2.5} />\n <Flex direction=\"column\" style={{ flex: 1, minWidth: 0 }}>\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.07em\" c={warnColor}>\n {audit.missing.length === 1\n ? \"1 item missing from your inventory\"\n : `${audit.missing.length} items missing from your inventory`}\n </Text>\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.5)\" lineClamp={1} style={{ fontFamily: \"monospace\" }}>\n {names.join(\", \")}\n </Text>\n </Flex>\n {/* Refresh button — re-runs the audit. Bounded: server callback, no\n event listener loops. */}\n <button\n onClick={handleRefresh}\n disabled={inFlight}\n style={{\n background: \"transparent\",\n border: \"none\",\n padding: \"0.3vh\",\n cursor: inFlight ? \"wait\" : \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: inFlight ? 0.4 : 0.7,\n }}\n title=\"Re-check\"\n >\n <motion.span\n animate={{ rotate: inFlight ? 360 : 0 }}\n transition={inFlight ? { duration: 1, repeat: Infinity, ease: \"linear\" } : { duration: 0 }}\n style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <RefreshCw size=\"1.5vh\" color={alpha(warnColor, 0.7)} />\n </motion.span>\n </button>\n <motion.div\n animate={{ rotate: expanded ? 180 : 0 }}\n transition={{ duration: 0.18 }}\n style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <ChevronDown size=\"1.8vh\" color={alpha(warnColor, 0.7)} />\n </motion.div>\n </Flex>\n\n {/* Expandable code view */}\n <AnimatePresence initial={false}>\n {expanded && (\n <motion.div\n key=\"expanded\"\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: \"auto\", opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.18, ease: \"easeOut\" }}\n style={{ overflow: \"hidden\", borderTop: `0.1vh solid ${alpha(warnColor, 0.18)}` }}\n >\n {/* Tab strip — plain buttons. Framer-motion's whileHover/whileTap\n caused two glitches we don't need: a shrink-spring on click\n and stuck hover-tint on the previously-active tab until you\n hover it again. CSS-driven hover state is sync'd with React\n state cleanly. */}\n <Flex gap=\"0\" style={{ borderBottom: `0.1vh solid ${alpha(warnColor, 0.18)}` }}>\n {TABS.map((tab) => {\n const active = tab.id === activeTab;\n const hovered = hoveredTab === tab.id;\n let bg: string = \"transparent\";\n if (active) bg = alpha(warnColor, 0.12);\n else if (hovered) bg = alpha(warnColor, 0.08);\n return (\n <button\n key={tab.id}\n onClick={(e) => { e.stopPropagation(); setActiveTab(tab.id); }}\n onMouseEnter={() => setHoveredTab(tab.id)}\n onMouseLeave={() => setHoveredTab((h) => (h === tab.id ? null : h))}\n style={{\n flex: 1,\n background: bg,\n border: \"none\",\n borderBottom: active ? `0.2vh solid ${warnColor}` : \"0.2vh solid transparent\",\n padding: \"0.3vh 1vh\",\n cursor: active ? \"default\" : \"pointer\",\n color: active ? warnColor : \"rgba(255,255,255,0.5)\",\n fontFamily: \"Akrobat Bold\",\n fontSize: \"var(--mantine-font-size-xxs)\",\n letterSpacing: \"0.07em\",\n textTransform: \"uppercase\",\n transition: \"background 0.12s\",\n }}\n >\n {tab.label}\n </button>\n );\n })}\n </Flex>\n\n <CodeView\n code={audit.snippets[activeTab] ?? \"\"}\n copied={copied === activeTab}\n onCopy={(e) => { e.stopPropagation(); handleCopy(activeTab); }}\n warnColor={warnColor}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n}\n\nfunction CodeView({\n code,\n copied,\n onCopy,\n warnColor,\n}: {\n code: string;\n copied: boolean;\n onCopy: (e: React.MouseEvent) => void;\n warnColor: string;\n}) {\n const theme = useMantineTheme();\n const [hovered, setHovered] = useState(false);\n const lines = code === \"\" ? [\"\"] : code.split(\"\\n\");\n const lineNumWidth = String(lines.length).length;\n\n const copyBg = copied\n ? alpha(\"#22c55e\", 0.15)\n : hovered\n ? alpha(warnColor, 0.18)\n : alpha(warnColor, 0.1);\n\n return (\n <div style={{ position: \"relative\" }}>\n <button\n onClick={onCopy}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n position: \"absolute\",\n top: \"0.6vh\",\n right: \"0.8vh\",\n zIndex: 2,\n background: copyBg,\n border: `0.1vh solid ${alpha(copied ? \"#22c55e\" : warnColor, 0.35)}`,\n borderRadius: theme.radius.xs,\n padding: \"0.4vh 0.7vh\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.4vh\",\n transition: \"background 0.12s\",\n }}\n >\n {copied\n ? <Check size=\"1.4vh\" color=\"#22c55e\" />\n : <Copy size=\"1.4vh\" color={warnColor} />}\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={copied ? \"#22c55e\" : warnColor}>\n {copied ? \"Copied\" : \"Copy\"}\n </Text>\n </button>\n\n <div style={{\n background: alpha(theme.colors.dark[9], 0.6),\n maxHeight: \"40vh\",\n overflowY: \"auto\",\n overflowX: \"auto\",\n padding: \"0.6vh 0\",\n }}>\n <table style={{ borderCollapse: \"collapse\", width: \"100%\", fontFamily: \"monospace\", fontSize: \"1.2vh\", lineHeight: 1.5 }}>\n <tbody>\n {lines.map((line, i) => (\n <tr key={i}>\n <td style={{\n width: `${lineNumWidth + 2}ch`,\n textAlign: \"right\",\n padding: \"0 0.8vh 0 1vh\",\n color: \"rgba(255,255,255,0.25)\",\n userSelect: \"none\",\n whiteSpace: \"nowrap\",\n verticalAlign: \"top\",\n }}>{i + 1}</td>\n <td style={{\n padding: \"0 1vh\",\n color: \"rgba(255,255,255,0.85)\",\n whiteSpace: \"pre\",\n verticalAlign: \"top\",\n }}>{line || \"\"}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport React, { createContext, useContext, useMemo, useRef } from \"react\";\r\nimport { createStore, StoreApi, useStore } from \"zustand\";\r\n\r\n/* ======================================================\r\n Type Utilities\r\n====================================================== */\r\n\r\ntype PathValue<T, P extends string> = P extends keyof T\r\n ? T[P]\r\n : P extends `${infer K}.${infer R}`\r\n ? K extends keyof T\r\n ? PathValue<T[K], R>\r\n : never\r\n : never;\r\n\r\ntype Paths<T> = T extends object\r\n ? {\r\n [K in keyof T]: K extends string\r\n ? T[K] extends object\r\n ? T[K] extends any[] | Date | Function\r\n ? K\r\n : K | `${K}.${Paths<T[K]>}`\r\n : K\r\n : never;\r\n }[keyof T]\r\n : never;\r\n\r\ntype LoosePaths<T> = Paths<T> | (string & {});\r\n\r\n/* ======================================================\r\n Utilities\r\n====================================================== */\r\n\r\nfunction getNested(obj: any, path: string): any {\r\n return path.split(\".\").reduce((acc, key) => (acc ? acc[key] : undefined), obj);\r\n}\r\n\r\nfunction setNested(obj: any, path: string, value: any): any {\r\n const keys = path.split(\".\");\r\n const root = Array.isArray(obj) ? [...obj] : { ...obj };\r\n let current = root;\r\n\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n const nextKey = keys[i + 1];\r\n const isIndex = !isNaN(Number(nextKey));\r\n\r\n const existing = current[key];\r\n\r\n current[key] =\r\n existing != null\r\n ? Array.isArray(existing)\r\n ? [...existing]\r\n : { ...existing }\r\n : isIndex\r\n ? []\r\n : {};\r\n\r\n current = current[key];\r\n }\r\n\r\n current[keys[keys.length - 1]] = value;\r\n return root;\r\n}\r\n\r\nfunction deleteNested(obj: any, path: string): any {\r\n const keys = path.split(\".\");\r\n const newObj = { ...obj };\r\n let current = newObj;\r\n\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n if (!current[key]) return obj;\r\n current[key] = { ...current[key] };\r\n current = current[key];\r\n }\r\n\r\n delete current[keys[keys.length - 1]];\r\n return newObj;\r\n}\r\n\r\nfunction isPlainObject(value: any): value is Record<string, any> {\r\n return (\r\n value !== null &&\r\n typeof value === \"object\" &&\r\n !Array.isArray(value) &&\r\n !(value instanceof Date)\r\n );\r\n}\r\n\r\nfunction collectChangedPaths(values: any, initial: any, prefix = \"\"): string[] {\r\n if (Object.is(values, initial)) return [];\r\n\r\n const valuesIsObj = isPlainObject(values);\r\n const initialIsObj = isPlainObject(initial);\r\n const valuesIsArr = Array.isArray(values);\r\n const initialIsArr = Array.isArray(initial);\r\n\r\n if (valuesIsArr || initialIsArr) {\r\n const maxLen = Math.max(values?.length ?? 0, initial?.length ?? 0);\r\n const fields: string[] = [];\r\n for (let i = 0; i < maxLen; i++) {\r\n const nextPrefix = prefix ? `${prefix}.${i}` : `${i}`;\r\n fields.push(...collectChangedPaths(values?.[i], initial?.[i], nextPrefix));\r\n }\r\n return fields;\r\n }\r\n\r\n if (valuesIsObj || initialIsObj) {\r\n const keys = new Set([\r\n ...Object.keys(values ?? {}),\r\n ...Object.keys(initial ?? {}),\r\n ]);\r\n const fields: string[] = [];\r\n for (const key of keys) {\r\n const nextPrefix = prefix ? `${prefix}.${key}` : key;\r\n fields.push(...collectChangedPaths(values?.[key], initial?.[key], nextPrefix));\r\n }\r\n return fields;\r\n }\r\n\r\n return prefix ? [prefix] : [];\r\n}\r\n\r\nfunction computeChangedState<T>(\r\n values: Partial<T>,\r\n initialVals: Partial<T>\r\n): { fields: string[]; partial: Partial<T> } {\r\n const fields = collectChangedPaths(values, initialVals);\r\n let partial: Partial<T> = {};\r\n\r\n for (const path of fields) {\r\n partial = setNested(partial, path, getNested(values, path));\r\n }\r\n\r\n return { fields, partial };\r\n}\r\n\r\nfunction flattenRules(\r\n rules: any,\r\n prefix = \"\"\r\n): Record<string, ValidatorFn> {\r\n const result: Record<string, ValidatorFn> = {};\r\n\r\n for (const key in rules) {\r\n const fullPath = prefix ? `${prefix}.${key}` : key;\r\n const val = rules[key];\r\n\r\n if (typeof val === \"function\") result[fullPath] = val;\r\n else if (typeof val === \"object\")\r\n Object.assign(result, flattenRules(val, fullPath));\r\n }\r\n\r\n return result;\r\n}\r\n\r\nasync function runRule(\r\n rule: ValidatorFn,\r\n value: any,\r\n values: any\r\n): Promise<string | null> {\r\n const result = rule(value, values);\r\n return result instanceof Promise ? await result : result;\r\n}\r\n\r\n/* ======================================================\r\n Types\r\n====================================================== */\r\n\r\nexport type ValidatorFn<T = any> =\r\n | ((value: any, values: Partial<T>) => string | null)\r\n | ((value: any, values: Partial<T>) => Promise<string | null>);\r\n\r\nexport type ValidationRules<T> = {\r\n [K in keyof T]?: T[K] extends object\r\n ? ValidationRules<T[K]>\r\n : ValidatorFn<T>;\r\n};\r\n\r\nexport type FormState<T> = {\r\n values: Partial<T>;\r\n initialValues: Partial<T>;\r\n errors: Record<string, string>;\r\n\r\n partialChanged: Partial<T>;\r\n\r\n getInputProps: (path: string) => {\r\n value: any;\r\n error?: string;\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n };\r\n\r\n setValue: (path: string, value: any, options?: { validate?: boolean }) => void;\r\n setInitialValues: (newInitialValues: Partial<T>) => void;\r\n\r\n setError: (path: string, message: string) => void;\r\n clearError: (path: string) => void;\r\n\r\n validate: () => Promise<boolean>;\r\n validateField: (path: string) => Promise<boolean>;\r\n\r\n reset: () => void;\r\n reinitialize: (newValues: Partial<T>) => void;\r\n\r\n back: () => void;\r\n forward: () => void;\r\n canBack: boolean;\r\n canForward: boolean;\r\n\r\n changedFields: string[];\r\n changedCount: number;\r\n resetChangeCount: () => void;\r\n\r\n onSubmit?: (form: FormState<T>) => void;\r\n submit: () => Promise<void>;\r\n};\r\n\r\n/* ======================================================\r\n Store\r\n====================================================== */\r\n\r\nexport function createFormStore<T>(\r\n initialValues: Partial<T>,\r\n validationRules?: ValidationRules<T>,\r\n onSubmit?: (form: FormState<T>) => void\r\n) {\r\n const flatRules = validationRules ? flattenRules(validationRules) : {};\r\n\r\n const history: Partial<T>[] = [];\r\n const future: Partial<T>[] = [];\r\n const changed = new Set<string>();\r\n\r\n return createStore<FormState<T>>((set, get) => ({\r\n initialValues,\r\n values: initialValues,\r\n errors: {},\r\n partialChanged: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n onSubmit,\r\n\r\n submit: async () => {\r\n const state = get();\r\n const isValid = await state.validate();\r\n if (isValid && state.onSubmit) {\r\n state.onSubmit(get());\r\n }\r\n },\r\n\r\n getInputProps: (path: string) => {\r\n return {\r\n value: getNested(get().values, path) ?? \"\",\r\n error: get().errors[path],\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\r\n get().setValue(path, e.target.value, { validate: true });\r\n },\r\n };\r\n },\r\n\r\n resetChangeCount: () => {\r\n changed.clear();\r\n set({ changedFields: [], changedCount: 0, partialChanged: {} });\r\n },\r\n\r\n setInitialValues: (newInitialValues) =>\r\n set({ initialValues: newInitialValues }),\r\n\r\n setValue: (path, value, options) => {\r\n const state = get();\r\n const currentValues = state.values;\r\n const newValues = setNested(currentValues, path, value);\r\n\r\n const oldValue = getNested(state.initialValues, path);\r\n const hasChanged = value !== oldValue;\r\n\r\n history.push(currentValues);\r\n future.length = 0;\r\n\r\n let newPartial = state.partialChanged;\r\n\r\n if (hasChanged) {\r\n changed.add(path);\r\n newPartial = setNested(newPartial, path, value);\r\n } else {\r\n changed.delete(path);\r\n newPartial = deleteNested(newPartial, path);\r\n }\r\n\r\n set({\r\n values: newValues,\r\n partialChanged: newPartial,\r\n canBack: history.length > 0,\r\n canForward: false,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n\r\n if (!options?.validate) return;\r\n\r\n const rule = flatRules[path];\r\n if (!rule) return;\r\n\r\n Promise.resolve(runRule(rule, value, newValues)).then((error) => {\r\n if (error)\r\n set((s) => ({ errors: setNested(s.errors, path, error) }));\r\n else\r\n set((s) => ({ errors: deleteNested(s.errors, path) }));\r\n });\r\n },\r\n\r\n setError: (path, message) =>\r\n set((s) => ({ errors: setNested(s.errors, path, message) })),\r\n\r\n clearError: (path) =>\r\n set((s) => ({ errors: deleteNested(s.errors, path) })),\r\n\r\n validateField: async (path) => {\r\n const state = get();\r\n const rule = flatRules[path];\r\n if (!rule) return true;\r\n\r\n const value = getNested(state.values, path);\r\n const error = await runRule(rule, value, state.values);\r\n\r\n if (error) {\r\n set((s) => ({ errors: setNested(s.errors, path, error) }));\r\n return false;\r\n }\r\n\r\n set((s) => ({ errors: deleteNested(s.errors, path) }));\r\n return true;\r\n },\r\n\r\n validate: async () => {\r\n const state = get();\r\n let isValid = true;\r\n let newErrors: Record<string, string> = {};\r\n\r\n for (const path in flatRules) {\r\n const rule = flatRules[path];\r\n const value = getNested(state.values, path);\r\n const error = await runRule(rule, value, state.values);\r\n\r\n if (error) {\r\n isValid = false;\r\n newErrors = setNested(newErrors, path, error);\r\n }\r\n }\r\n\r\n set({ errors: newErrors });\r\n return isValid;\r\n },\r\n\r\n reset: () => {\r\n history.length = 0;\r\n future.length = 0;\r\n changed.clear();\r\n\r\n set({\r\n values: get().initialValues,\r\n errors: {},\r\n partialChanged: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n });\r\n },\r\n\r\n reinitialize: (newValues) => {\r\n history.length = 0;\r\n future.length = 0;\r\n changed.clear();\r\n\r\n set({\r\n values: newValues,\r\n initialValues: newValues,\r\n errors: {},\r\n partialChanged: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n });\r\n },\r\n\r\n back: () => {\r\n if (!history.length) return;\r\n\r\n const prev = history.pop()!;\r\n future.push(get().values);\r\n\r\n const { fields, partial } = computeChangedState(prev, get().initialValues);\r\n\r\n set({\r\n values: prev,\r\n partialChanged: partial,\r\n canBack: history.length > 0,\r\n canForward: true,\r\n changedFields: fields,\r\n changedCount: fields.length,\r\n });\r\n },\r\n\r\n forward: () => {\r\n if (!future.length) return;\r\n\r\n const next = future.pop()!;\r\n history.push(get().values);\r\n\r\n const { fields, partial } = computeChangedState(next, get().initialValues);\r\n\r\n set({\r\n values: next,\r\n partialChanged: partial,\r\n canBack: true,\r\n canForward: future.length > 0,\r\n changedFields: fields,\r\n changedCount: fields.length,\r\n });\r\n },\r\n }));\r\n}\r\n\r\n/* ======================================================\r\n Context + Hook\r\n====================================================== */\r\n\r\nconst FormContext = createContext<StoreApi<FormState<any>> | null>(null);\r\n\r\nexport function FormProvider<T>({\r\n initialValues,\r\n validate,\r\n onSubmit,\r\n children,\r\n}: {\r\n initialValues: Partial<T>;\r\n validate?: ValidationRules<T>;\r\n onSubmit?: (form: FormState<T>) => void;\r\n children: React.ReactNode;\r\n}) {\r\n const storeRef = useRef(\r\n createFormStore<T>(initialValues, validate, onSubmit)\r\n );\r\n\r\n return (\r\n <FormContext.Provider value={storeRef.current}>\r\n {children}\r\n </FormContext.Provider>\r\n );\r\n}\r\n\r\nexport function useForm<T>() {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useForm must be used inside <FormProvider>\");\r\n }\r\n const state = useStore(store) as FormState<T>;\r\n\r\n const changedFields = useMemo(() => {\r\n return collectChangedPaths(state.values, state.initialValues);\r\n }, [state.values, state.initialValues]);\r\n\r\n return { ...state, changedFields, changedCount: changedFields.length } as FormState<T>;\r\n}\r\n\r\nexport function useFormField<T, P extends LoosePaths<T> = LoosePaths<T>>(\r\n path: P\r\n): P extends Paths<T> ? PathValue<T, P> | undefined : any {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormField must be used inside <FormProvider>\");\r\n }\r\n return useStore(store, (s) => getNested(s.values, path));\r\n}\r\n\r\nexport function useFormFields<T, P extends LoosePaths<T> = LoosePaths<T>>(\r\n ...paths: P[]\r\n): { [K in P]: K extends Paths<T> ? PathValue<T, K> | undefined : any } {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormFields must be used inside <FormProvider>\");\r\n }\r\n \r\n return useStore(store, (s) => {\r\n const result = {} as { [K in P]: K extends Paths<T> ? PathValue<T, K> | undefined : any };\r\n for (const path of paths) {\r\n result[path] = getNested(s.values, path);\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function useFormError(path: string) {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormError must be used inside <FormProvider>\");\r\n }\r\n return useStore(store, (s) => s.errors[path]);\r\n}\r\n\r\nexport function useFormErrors(...paths: string[]) {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormErrors must be used inside <FormProvider>\");\r\n }\r\n return useStore(store, (s) => {\r\n const result: Record<string, string | undefined> = {};\r\n for (const path of paths) {\r\n result[path] = s.errors[path];\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function useFormActions<T>() {\r\n const store = useContext(FormContext);\r\n if (!store) {\r\n throw new Error(\"useFormActions must be used inside <FormProvider>\");\r\n }\r\n return store.getState() as Pick<\r\n FormState<T>,\r\n | \"setValue\"\r\n | \"setError\"\r\n | \"clearError\"\r\n | \"validate\"\r\n | \"validateField\"\r\n | \"reset\"\r\n | \"reinitialize\"\r\n | \"back\"\r\n | \"forward\"\r\n | \"canBack\"\r\n | \"canForward\"\r\n | \"submit\"\r\n >;\r\n}","import { fetchNui } from \"@/utils\";\nimport { useNuiEvent } from \"@/hooks/useNuiEvent\";\nimport { create } from \"zustand\";\n\ntype ScriptConfigUpdateMeta<T> = {\n client_version?: number;\n latestVersion?: number;\n latestData?: Partial<T>;\n changed_paths?: Array<{ path: string; old: unknown; new: unknown }>;\n lastEditor?: { source?: number; name?: string; identifier?: string };\n};\n\nexport type ScriptConfigHistoryChange = {\n path: string;\n old: unknown;\n new: unknown;\n};\n\nexport type ScriptConfigHistoryEntry = {\n at_unix: number;\n at_utc: string;\n script: string;\n admin?: { source?: number; name?: string; identifier?: string };\n expected_version?: number;\n applied_version?: number;\n changes: ScriptConfigHistoryChange[];\n};\n\nexport type ScriptConfigHistoryRequest = {\n offset?: number;\n limit?: number;\n query?: string;\n path?: string;\n admin?: string;\n fromUnix?: number;\n toUnix?: number;\n};\n\nexport type ScriptConfigHistoryResponse = {\n success: boolean;\n _error?: string;\n data?: {\n items: ScriptConfigHistoryEntry[];\n total: number;\n limit: number;\n offset: number;\n nextOffset?: number;\n };\n};\n\ntype NuiResponse<T> = {\n success: boolean;\n message?: string;\n _error?: string;\n meta?: ScriptConfigUpdateMeta<T>;\n};\n\n// ── Singleton registry ────────────────────────────────────────────────────────\n\nexport interface ScriptConfigInstance<T = any> {\n store: { getState: () => T; setState: (partial: Partial<T> | ((prev: T) => T)) => void };\n updateConfig: (newConfig: Partial<T>) => Promise<NuiResponse<T>>;\n resetConfig: () => Promise<{ success: boolean; _error?: string }>;\n getHistory: (params?: ScriptConfigHistoryRequest) => Promise<ScriptConfigHistoryResponse>;\n fetchConfig: () => Promise<T | null>;\n}\n\nlet _instance: ScriptConfigInstance | null = null;\n\nexport function getScriptConfigInstance<T = any>(): ScriptConfigInstance<T> {\n if (!_instance) throw new Error(\"[dirk-cfx-react] createScriptConfig must be called before using ConfigPanel\");\n return _instance as ScriptConfigInstance<T>;\n}\n\nexport function createScriptConfig<T>(defaultValue: T) {\n const store = create<T>(() => defaultValue);\n let clientVersion = 0;\n\n const useScriptConfigHooks = () => {\n useNuiEvent<{ config?: Partial<T>; clientVersion?: number }>(\"UPDATE_SCRIPT_CONFIG\", (data) => {\n if (!data) return;\n\n if (typeof data.clientVersion === \"number\") {\n clientVersion = data.clientVersion as number;\n }\n\n if (data.config && typeof data.config === \"object\") {\n store.setState((prev) => ({ ...prev, ...(data.config as Partial<T>) }));\n }\n });\n };\n\n const fetchScriptConfig = async (): Promise<T | null> => {\n try {\n const response = await fetchNui<{\n success: boolean;\n data?: { config: T; clientVersion: number };\n }>(\"GET_FULL_SCRIPT_CONFIG\");\n\n if (response?.success && response.data?.config) {\n store.setState(() => response.data!.config as T);\n if (typeof response.data.clientVersion === \"number\") {\n clientVersion = response.data.clientVersion;\n }\n return response.data.config;\n }\n } catch { /* fallback to current store state */ }\n return null;\n };\n\n const updateScriptConfig = async (newConfig: Partial<T>): Promise<NuiResponse<T>> => {\n store.setState((prev) => ({ ...prev, ...newConfig }));\n\n const response = await fetchNui<NuiResponse<T>>(\"UPDATE_SCRIPT_CONFIG\", {\n data: newConfig,\n expectedVersion: clientVersion,\n });\n\n if (response?.meta?.client_version != null) {\n clientVersion = response.meta.client_version as number;\n }\n\n if (response?.success === false && response?.meta?.latestData) {\n store.setState((prev) => ({ ...prev, ...(response.meta!.latestData as Partial<T>) }));\n }\n\n return response;\n };\n\n const getScriptConfigHistory = async (\n params: ScriptConfigHistoryRequest = {}\n ): Promise<ScriptConfigHistoryResponse> => {\n return fetchNui<ScriptConfigHistoryResponse>('GET_SCRIPT_CONFIG_HISTORY', params);\n };\n\n const resetConfig = async (): Promise<{ success: boolean; _error?: string }> => {\n const response = await fetchNui<{ success: boolean; _error?: string }>('RESET_SCRIPT_CONFIG');\n if (response?.success) {\n const fresh = await fetchScriptConfig();\n if (fresh) {\n store.setState(() => fresh);\n }\n }\n return response;\n };\n\n _instance = {\n store,\n updateConfig: updateScriptConfig,\n resetConfig,\n getHistory: getScriptConfigHistory,\n fetchConfig: fetchScriptConfig,\n };\n\n return {store, updateScriptConfig, resetConfig, getScriptConfigHistory, useScriptConfigHooks, fetchScriptConfig}\n}\n","import { alpha, Box, Flex, JsonInput, Loader, Text, TextInput, useMantineTheme } from \"@mantine/core\";\r\nimport { notifications } from \"@mantine/notifications\";\r\nimport { useInfiniteQuery, QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\r\nimport { locale } from \"../utils/locales\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport {\r\n ArrowLeft, Check, ChevronDown, Code2, Filter, History, Redo2, RotateCcw,\r\n Save as SaveIcon, Search, Undo2, User, X, XCircle,\r\n} from \"lucide-react\";\r\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport type { UIEvent } from \"react\";\r\nimport { ConfirmModal } from \"./ConfirmModal\";\r\nimport { Modal } from \"./Modal\";\r\nimport { MissingItemsBanner, useMissingItemsAudit } from \"./MissingItemsBanner\";\r\nimport { MotionFlex } from \"./Motion\";\r\nimport { FormProvider, useForm, useFormActions } from \"../hooks/useForm\";\r\nimport { useSettings } from \"../utils/useSettings\";\r\nimport { fetchNui } from \"../utils/fetchNui\";\r\nimport { getScriptConfigInstance } from \"../hooks/useScriptConfig\";\r\nimport type {\r\n ScriptConfigHistoryEntry,\r\n ScriptConfigHistoryRequest,\r\n ScriptConfigHistoryResponse,\r\n} from \"../hooks/useScriptConfig\";\r\n\r\n// ── Types ─────────────────────────────────────────────────────────────────────\r\n\r\nexport interface NavItem {\r\n id: string;\r\n icon: React.ElementType;\r\n label: string;\r\n}\r\n\r\nexport interface ConfigPanelProps<T extends Record<string, any> = Record<string, any>> {\r\n navItems: readonly NavItem[];\r\n title: string;\r\n subtitle?: string;\r\n open: boolean;\r\n /** Defaults to fetchNui(\"CLOSE_ADMIN_SECTION\") */\r\n onClose?: () => void;\r\n children: (activeTab: string) => React.ReactNode;\r\n /** Default config for reset */\r\n defaultConfig: T;\r\n /** Zod schema for JSON validation (.safeParse) */\r\n schema?: { safeParse: (data: unknown) => { success: boolean; data?: T; error?: { issues: { path: PropertyKey[]; message: string }[] } } };\r\n /** Reset confirm typed text (e.g. \"dirk_fishing\") */\r\n resetConfirmText?: string;\r\n width?: string;\r\n height?: string;\r\n /** Skip the auto-mounted MissingItemsBanner. Default: false (banner shown).\r\n The banner self-hides when nothing is missing, so leaving it on costs\r\n nothing visually. */\r\n suppressMissingItemsBanner?: boolean;\r\n}\r\n\r\n// ── Internal query client ─────────────────────────────────────────────────────\r\n\r\nconst configPanelQueryClient = new QueryClient({\r\n defaultOptions: { queries: { staleTime: 30_000, gcTime: 5 * 60_000 } },\r\n});\r\n\r\n// ── NavItem Button ────────────────────────────────────────────────────────────\r\n\r\nfunction NavItemButton({\r\n icon: Icon, label, active, onClick,\r\n}: {\r\n icon: React.ElementType;\r\n label: string;\r\n active: boolean;\r\n onClick: () => void;\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n\r\n return (\r\n <motion.button\r\n onClick={onClick}\r\n whileHover={{ background: active ? alpha(color, 0.15) : \"rgba(255,255,255,0.04)\" }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{\r\n width: \"100%\",\r\n background: active ? alpha(color, 0.12) : \"transparent\",\r\n border: \"none\",\r\n borderLeft: `0.2vh solid ${active ? color : \"transparent\"}`,\r\n borderRadius: `0 ${theme.radius.xs} ${theme.radius.xs} 0`,\r\n padding: \"0.7vh 1vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"0.7vh\",\r\n transition: \"border-color 0.15s, background 0.15s\",\r\n }}\r\n >\r\n <Icon color={active ? color : \"rgba(255,255,255,0.35)\"} />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.06em\" c={active ? color : \"rgba(255,255,255,0.35)\"}>\r\n {label}\r\n </Text>\r\n {active && (\r\n <motion.div\r\n layoutId=\"nav-active-dot\"\r\n style={{ marginLeft: \"auto\", width: \"0.4vh\", height: \"0.4vh\", borderRadius: \"50%\", background: color }}\r\n />\r\n )}\r\n </motion.button>\r\n );\r\n}\r\n\r\n// ── Config JSON Modal ─────────────────────────────────────────────────────────\r\n\r\nfunction ConfigJsonModal<T extends Record<string, any>>({\r\n onClose, schema,\r\n}: {\r\n onClose: () => void;\r\n schema?: ConfigPanelProps<T>[\"schema\"];\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const form = useForm<T>();\r\n const [json, setJson] = useState(() => JSON.stringify(form.values, null, 2));\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const handleSave = () => {\r\n try {\r\n const parsed = JSON.parse(json);\r\n if (schema) {\r\n const result = schema.safeParse(parsed);\r\n if (!result.success) {\r\n setError(result.error!.issues.map((i) => `${i.path.join(\".\")}: ${i.message}`).join(\"\\n\"));\r\n return;\r\n }\r\n const current = form.values as T;\r\n (Object.keys(result.data!) as (keyof T)[]).forEach((key) => {\r\n if (JSON.stringify(result.data![key]) !== JSON.stringify(current[key])) {\r\n form.setValue(key as string, result.data![key]);\r\n }\r\n });\r\n } else {\r\n const current = form.values as T;\r\n (Object.keys(parsed) as (keyof T)[]).forEach((key) => {\r\n if (JSON.stringify(parsed[key]) !== JSON.stringify(current[key])) {\r\n form.setValue(key as string, parsed[key]);\r\n }\r\n });\r\n }\r\n onClose();\r\n } catch (e: any) {\r\n setError(e.message);\r\n }\r\n };\r\n\r\n return (\r\n <Modal title=\"Config JSON\" icon={Code2} iconColor={color} onClose={onClose} width=\"60vh\" maxHeight=\"80vh\" zIndex={200}>\r\n <Box flex={1} p=\"0.8vh\" style={{ overflowY: \"auto\" }}>\r\n <JsonInput\r\n value={json}\r\n spellCheck={false}\r\n onChange={setJson}\r\n rows={22}\r\n formatOnBlur\r\n validationError=\"Invalid JSON\"\r\n styles={() => ({\r\n input: { fontFamily: \"monospace\", fontSize: \"1.3vh\", lineHeight: 1.6, resize: \"none\" },\r\n })}\r\n />\r\n {error && <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"#ef4444\" mt=\"xxs\">{error}</Text>}\r\n </Box>\r\n <Flex justify=\"flex-end\" gap=\"xs\" px=\"sm\" py=\"xs\" style={{ borderTop: `0.1vh solid ${theme.colors.dark[7]}`, flexShrink: 0 }}>\r\n <motion.button onClick={onClose} whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: \"transparent\", border: `0.1vh solid ${theme.colors.dark[6]}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: theme.spacing.xxs }}>\r\n <X color=\"rgba(255,255,255,0.4)\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.05em\" c=\"rgba(255,255,255,0.4)\">Cancel</Text>\r\n </motion.button>\r\n <motion.button onClick={handleSave} whileHover={{ background: alpha(color, 0.25) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: alpha(color, 0.14), border: `0.1vh solid ${alpha(color, 0.4)}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: theme.spacing.xxs }}>\r\n <Check color={color} />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.05em\" c={color}>Apply</Text>\r\n </motion.button>\r\n </Flex>\r\n </Modal>\r\n );\r\n}\r\n\r\n// ── History helpers ───────────────────────────────────────────────────────────\r\n\r\nfunction formatValue(value: unknown): string {\r\n if (value === null) return \"null\";\r\n if (value === undefined) return \"undefined\";\r\n if (typeof value === \"string\") return value;\r\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\r\n try { return JSON.stringify(value); } catch { return String(value); }\r\n}\r\n\r\nfunction formatHistoryDateTime(entry: ScriptConfigHistoryEntry): string {\r\n if (entry.at_unix) {\r\n const date = new Date(entry.at_unix * 1000);\r\n if (!Number.isNaN(date.getTime())) {\r\n return date.toLocaleString(undefined, { year: \"numeric\", month: \"short\", day: \"2-digit\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" });\r\n }\r\n }\r\n if (entry.at_utc) {\r\n const date = new Date(entry.at_utc);\r\n if (!Number.isNaN(date.getTime())) {\r\n return date.toLocaleString(undefined, { year: \"numeric\", month: \"short\", day: \"2-digit\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" });\r\n }\r\n }\r\n return \"Unknown time\";\r\n}\r\n\r\nfunction historyEntryKey(entry: ScriptConfigHistoryEntry, index: number) {\r\n return `${entry.at_unix}-${entry.applied_version}-${index}`;\r\n}\r\n\r\n// ── History sub-components ────────────────────────────────────────────────────\r\n\r\nfunction ChangeDetails({ entry }: { entry: ScriptConfigHistoryEntry }) {\r\n const theme = useMantineTheme();\r\n return (\r\n <Flex direction=\"column\" gap=\"0.45vh\" p=\"0.8vh\" style={{ border: `0.1vh solid ${alpha(theme.colors.dark[6], 0.8)}`, borderRadius: theme.radius.xs, background: alpha(theme.colors.dark[9], 0.35) }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">\r\n Version {entry.expected_version ?? \"?\"} {\"\\u2192\"} {entry.applied_version ?? \"?\"}\r\n </Text>\r\n <div style={{ display: \"grid\", gridTemplateColumns: \"minmax(18vh, 22vh) minmax(0, 1fr) minmax(0, 1fr)\", gap: \"0.1vh\", border: `0.1vh solid ${alpha(theme.colors.dark[6], 0.9)}`, borderRadius: theme.radius.xs, overflow: \"hidden\", background: alpha(theme.colors.dark[6], 0.8) }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\" px=\"0.6vh\" py=\"0.45vh\" style={{ background: alpha(theme.colors.dark[8], 0.85) }}>Path</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\" px=\"0.6vh\" py=\"0.45vh\" style={{ background: alpha(theme.colors.dark[8], 0.85) }}>From</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\" px=\"0.6vh\" py=\"0.45vh\" style={{ background: alpha(theme.colors.dark[8], 0.85) }}>To</Text>\r\n {(entry.changes || []).map((change, idx) => {\r\n const bg = idx % 2 === 0 ? alpha(theme.colors.dark[9], 0.5) : alpha(theme.colors.dark[8], 0.42);\r\n return [\r\n <Text key={`${idx}-p`} ff=\"Akrobat Bold\" size=\"xxs\" c=\"#8ad1ff\" px=\"0.6vh\" py=\"0.55vh\" style={{ background: bg, wordBreak: \"break-word\" }}>{change.path}</Text>,\r\n <Text key={`${idx}-o`} ff=\"monospace\" size=\"xxs\" c=\"rgba(255,255,255,0.5)\" px=\"0.6vh\" py=\"0.55vh\" style={{ background: bg, wordBreak: \"break-word\", whiteSpace: \"pre-wrap\" }}>{formatValue(change.old)}</Text>,\r\n <Text key={`${idx}-n`} ff=\"monospace\" size=\"xxs\" c=\"rgba(255,255,255,0.78)\" px=\"0.6vh\" py=\"0.55vh\" style={{ background: bg, wordBreak: \"break-word\", whiteSpace: \"pre-wrap\" }}>{formatValue(change.new)}</Text>,\r\n ];\r\n })}\r\n </div>\r\n </Flex>\r\n );\r\n}\r\n\r\nfunction HistoryTableRow({ entry, expanded, onToggle }: { entry: ScriptConfigHistoryEntry; expanded: boolean; onToggle: () => void }) {\r\n const theme = useMantineTheme();\r\n const admin = entry.admin?.name || entry.admin?.identifier || \"unknown\";\r\n const firstPath = entry.changes?.[0]?.path || \"-\";\r\n const changeCount = entry.changes?.length || 0;\r\n const versionText = `${entry.expected_version ?? \"?\"} \\u2192 ${entry.applied_version ?? \"?\"}`;\r\n\r\n return (\r\n <motion.div layout initial={{ opacity: 0, y: 6 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.16, ease: \"easeOut\" }}>\r\n <Flex direction=\"column\" gap=\"0.45vh\">\r\n <motion.button onClick={onToggle} whileHover={{ scale: 1.002 }} whileTap={{ scale: 0.997 }} transition={{ duration: 0.12 }}\r\n style={{ background: expanded ? alpha(theme.colors.dark[7], 0.45) : alpha(theme.colors.dark[8], 0.35), border: `0.1vh solid ${expanded ? alpha(theme.colors[theme.primaryColor][5], 0.35) : alpha(theme.colors.dark[6], 0.75)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.75vh\", cursor: \"pointer\", textAlign: \"left\" }}>\r\n <div style={{ display: \"grid\", gridTemplateColumns: \"2.2vh 20vh 12vh 6vh 1fr minmax(16vh, auto)\", gap: \"0.8vh\", alignItems: \"center\" }}>\r\n <div style={{ display: \"flex\", justifyContent: \"center\" }}>\r\n <motion.div animate={{ rotate: expanded ? 0 : -90 }} transition={{ duration: 0.18, ease: \"easeOut\" }}>\r\n <ChevronDown size=\"1.5vh\" color={expanded ? \"rgba(255,255,255,0.6)\" : \"rgba(255,255,255,0.45)\"} />\r\n </motion.div>\r\n </div>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.75)\" lineClamp={1}>{formatHistoryDateTime(entry)}</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.68)\" lineClamp={1}>{admin}</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.68)\">{changeCount}</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.58)\" lineClamp={1}>{firstPath}</Text>\r\n <Text ff=\"monospace\" size=\"xxs\" c=\"rgba(255,255,255,0.68)\">{versionText}</Text>\r\n </div>\r\n </motion.button>\r\n <AnimatePresence initial={false}>\r\n {expanded && (\r\n <motion.div key=\"details\" initial={{ opacity: 0, height: 0, y: -4 }} animate={{ opacity: 1, height: \"auto\", y: 0 }} exit={{ opacity: 0, height: 0, y: -4 }} transition={{ duration: 0.2, ease: \"easeInOut\" }} style={{ overflow: \"hidden\" }}>\r\n <ChangeDetails entry={entry} />\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </Flex>\r\n </motion.div>\r\n );\r\n}\r\n\r\nfunction HistoryTableHeader() {\r\n const theme = useMantineTheme();\r\n return (\r\n <div style={{ display: \"grid\", gridTemplateColumns: \"2.2vh 20vh 12vh 6vh 1fr minmax(16vh, auto)\", gap: \"0.8vh\", alignItems: \"center\", border: `0.1vh solid ${alpha(theme.colors.dark[6], 0.8)}`, borderRadius: theme.radius.xs, background: alpha(theme.colors.dark[8], 0.55), padding: \"0.55vh 0.75vh\" }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.35)\"> </Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">Time</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">Admin</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">#</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">First Change</Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">Version</Text>\r\n </div>\r\n );\r\n}\r\n\r\n// ── History Modal ─────────────────────────────────────────────────────────────\r\n\r\nfunction ConfigHistoryModal({\r\n onClose,\r\n}: {\r\n onClose: () => void;\r\n}) {\r\n const { getHistory } = getScriptConfigInstance();\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const [queryInput, setQueryInput] = useState(\"\");\r\n const [pathInput, setPathInput] = useState(\"\");\r\n const [adminInput, setAdminInput] = useState(\"\");\r\n const [query, setQuery] = useState(\"\");\r\n const [path, setPath] = useState(\"\");\r\n const [admin, setAdmin] = useState(\"\");\r\n const [expandedKey, setExpandedKey] = useState<string | null>(null);\r\n\r\n const filters = useMemo(() => ({ query, path, admin }), [query, path, admin]);\r\n\r\n const historyQuery = useInfiniteQuery({\r\n queryKey: [\"scriptConfigHistory\", filters],\r\n initialPageParam: 0,\r\n queryFn: async ({ pageParam }) => {\r\n const response = await getHistory({\r\n offset: pageParam,\r\n limit: 25,\r\n query: filters.query || undefined,\r\n path: filters.path || undefined,\r\n admin: filters.admin || undefined,\r\n });\r\n if (!response?.success || !response.data) {\r\n throw new Error(response?._error || \"Failed to load config history\");\r\n }\r\n return response.data;\r\n },\r\n getNextPageParam: (lastPage) => lastPage.nextOffset,\r\n });\r\n\r\n const rows = historyQuery.data?.pages.flatMap((page) => page.items) ?? [];\r\n const total = historyQuery.data?.pages[0]?.total ?? 0;\r\n\r\n const handleListScroll = (e: UIEvent<HTMLDivElement>) => {\r\n const el = e.currentTarget;\r\n if (el.scrollHeight - el.scrollTop - el.clientHeight < 280 && historyQuery.hasNextPage && !historyQuery.isFetchingNextPage) {\r\n historyQuery.fetchNextPage();\r\n }\r\n };\r\n\r\n return (\r\n <Modal title=\"Config History\" icon={History} iconColor={color} onClose={onClose} width=\"88vh\" maxHeight=\"82vh\" zIndex={260}>\r\n <Flex direction=\"column\" style={{ flex: 1, minHeight: 0 }}>\r\n <Flex gap=\"xs\" p=\"sm\" style={{ borderBottom: `0.1vh solid ${alpha(theme.colors.dark[7], 0.8)}` }}>\r\n <TextInput leftSection={<Search size=\"1.4vh\" />} placeholder=\"Search path/admin/value\" value={queryInput} onChange={(e) => setQueryInput(e.currentTarget.value)} size=\"xs\" style={{ flex: 1 }} />\r\n <TextInput leftSection={<Filter size=\"1.4vh\" />} placeholder=\"Path filter (e.g. basic.weightUnit)\" value={pathInput} onChange={(e) => setPathInput(e.currentTarget.value)} size=\"xs\" style={{ flex: 1 }} />\r\n <TextInput leftSection={<User size=\"1.4vh\" />} placeholder=\"Admin filter\" value={adminInput} onChange={(e) => setAdminInput(e.currentTarget.value)} size=\"xs\" style={{ flex: 1 }} />\r\n <motion.button\r\n onClick={() => { setExpandedKey(null); setQuery(queryInput.trim()); setPath(pathInput.trim().toLowerCase()); setAdmin(adminInput.trim().toLowerCase()); }}\r\n whileHover={{ background: alpha(color, 0.2) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: alpha(color, 0.12), border: `0.1vh solid ${alpha(color, 0.35)}`, borderRadius: theme.radius.xs, padding: \"0.55vh 0.85vh\", cursor: \"pointer\" }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={color}>Apply</Text>\r\n </motion.button>\r\n </Flex>\r\n\r\n <Flex direction=\"column\" gap=\"xs\" p=\"sm\" style={{ flex: 1, minHeight: 0, overflowY: \"auto\" }} onScroll={handleListScroll}>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.45)\">\r\n {historyQuery.isFetching && !historyQuery.data ? \"Loading history...\" : `${total} entries`}\r\n </Text>\r\n <HistoryTableHeader />\r\n {historyQuery.isError && <Text ff=\"Akrobat Bold\" size=\"xs\" c=\"#ef4444\">{(historyQuery.error as Error).message}</Text>}\r\n {!historyQuery.isLoading && rows.length === 0 && !historyQuery.isError && (\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" c=\"rgba(255,255,255,0.45)\">No history found for current filters.</Text>\r\n )}\r\n <AnimatePresence initial={false}>\r\n {rows.map((entry, index) => {\r\n const key = historyEntryKey(entry, index);\r\n return <HistoryTableRow key={key} entry={entry} expanded={expandedKey === key} onToggle={() => setExpandedKey(expandedKey === key ? null : key)} />;\r\n })}\r\n </AnimatePresence>\r\n {(historyQuery.isFetchingNextPage || historyQuery.isLoading) && (\r\n <Flex justify=\"center\" py=\"sm\"><Loader size=\"sm\" color={color} /></Flex>\r\n )}\r\n </Flex>\r\n </Flex>\r\n <Flex justify=\"flex-end\" gap=\"xs\" px=\"sm\" py=\"xs\" style={{ borderTop: `0.1vh solid ${theme.colors.dark[7]}`, flexShrink: 0 }}>\r\n <motion.button onClick={onClose} whileHover={{ background: alpha(theme.colors.dark[7], 0.5) }} whileTap={{ scale: 0.97 }}\r\n style={{ background: \"transparent\", border: `0.1vh solid ${theme.colors.dark[6]}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: theme.spacing.xxs }}>\r\n <X color=\"rgba(255,255,255,0.4)\" size=\"1.5vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.05em\" c=\"rgba(255,255,255,0.4)\">Close</Text>\r\n </motion.button>\r\n </Flex>\r\n </Modal>\r\n );\r\n}\r\n\r\n// ── ConfigPanel Inner ─────────────────────────────────────────────────────────\r\n\r\nfunction ConfigPanelInner<T extends Record<string, any>>({\r\n navItems, title, subtitle, children, isSaving, onClose,\r\n schema, resetConfirmText, defaultConfig,\r\n width, height, suppressMissingItemsBanner,\r\n}: Omit<ConfigPanelProps<T>, \"open\" | \"onClose\"> & { isSaving: boolean; onClose: () => void }) {\r\n const { updateConfig, resetConfig, getHistory } = getScriptConfigInstance<T>();\r\n const form = useForm<T>();\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const version = useSettings((s) => s.resourceVersion);\r\n const [activeTab, setActiveTab] = useState(navItems[0]?.id ?? \"\");\r\n const firstMountRef = useRef(true);\r\n const [jsonOpen, setJsonOpen] = useState(false);\r\n const [historyOpen, setHistoryOpen] = useState(false);\r\n const [resetOpen, setResetOpen] = useState(false);\r\n const [pendingAction, setPendingAction] = useState<\"close\" | \"back\" | null>(null);\r\n const changedCount = form.changedCount ?? 0;\r\n const isDirty = changedCount > 0;\r\n\r\n const goBack = () => fetchNui(\"CONFIG_PANEL_BACK\");\r\n\r\n const handleBack = () => {\r\n if (isDirty) {\r\n setPendingAction(\"back\");\r\n return;\r\n }\r\n goBack();\r\n };\r\n\r\n useEffect(() => {\r\n function handleKeyDown(e: KeyboardEvent) {\r\n if (e.key !== \"Escape\") return;\r\n if (isDirty) {\r\n e.preventDefault();\r\n setPendingAction(\"close\");\r\n return;\r\n }\r\n onClose();\r\n }\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [isDirty, onClose]);\r\n\r\n return (\r\n <>\r\n <AnimatePresence>{jsonOpen && <ConfigJsonModal onClose={() => setJsonOpen(false)} schema={schema} />}</AnimatePresence>\r\n <AnimatePresence>{historyOpen && <ConfigHistoryModal onClose={() => setHistoryOpen(false)} />}</AnimatePresence>\r\n <AnimatePresence>\r\n {resetOpen && (\r\n <ConfirmModal\r\n title=\"Reset to Defaults\"\r\n description=\"This will permanently reset ALL config back to the defaults. Every value you have configured will be overwritten. This cannot be undone.\"\r\n confirmLabel=\"Reset Config\"\r\n confirmText={resetConfirmText}\r\n onConfirm={async () => {\r\n setResetOpen(false);\r\n const result = await resetConfig();\r\n if (result?.success) {\r\n const { store } = getScriptConfigInstance<T>();\r\n form.reinitialize(cloneConfig(store.getState()));\r\n // Mirror the save-success toast so the admin gets visible\r\n // feedback that the reset actually applied — previously the\r\n // modal just closed silently and admins had no way to tell\r\n // whether it had worked.\r\n notifications.show({\r\n color: \"green\",\r\n title: locale(\"ConfigResetSuccessTitle\"),\r\n message: locale(\"ConfigResetSuccessBody\"),\r\n autoClose: 3000,\r\n });\r\n return;\r\n }\r\n const err = result?._error || \"Unknown\";\r\n console.warn(`[ConfigPanel] config reset failed: ${err}`);\r\n notifications.show({\r\n color: \"red\",\r\n title: locale(\"ConfigResetFailedTitle\"),\r\n message: locale(\"ConfigResetFailedBody\", err),\r\n autoClose: 6000,\r\n });\r\n }}\r\n onClose={() => setResetOpen(false)}\r\n zIndex={300}\r\n />\r\n )}\r\n </AnimatePresence>\r\n <AnimatePresence>\r\n {pendingAction !== null && (\r\n <ConfirmModal\r\n title=\"Discard Unsaved Changes?\"\r\n description={\r\n pendingAction === \"back\"\r\n ? \"You have unsaved changes. Going back now will discard them.\"\r\n : \"You have unsaved changes. Closing now will discard them.\"\r\n }\r\n confirmLabel={pendingAction === \"back\" ? \"Go Back Without Saving\" : \"Close Without Saving\"}\r\n onConfirm={() => {\r\n const action = pendingAction;\r\n setPendingAction(null);\r\n if (action === \"back\") goBack();\r\n else onClose();\r\n }}\r\n onClose={() => setPendingAction(null)}\r\n zIndex={300}\r\n />\r\n )}\r\n </AnimatePresence>\r\n\r\n <MotionFlex\r\n pos=\"absolute\" left=\"50%\" top=\"50%\"\r\n bg={alpha(theme.colors.dark[9], 0.9)}\r\n w={width ?? \"120vh\"} h={height ?? \"80vh\"} bdrs=\"sm\"\r\n style={{\r\n userSelect: \"none\", overflow: \"hidden\",\r\n transform: \"translate(-50%, -50%)\",\r\n boxShadow: \"0 0 10px rgba(0,0,0,0.5)\",\r\n border: `0.1vh solid ${theme.colors.dark[7]}`,\r\n }}\r\n direction=\"row\"\r\n initial={{ scale: 0.3, opacity: 0, transform: \"translate(-50%, -50%)\" }}\r\n animate={{ scale: 1, opacity: 1, transform: \"translate(-50%, -50%)\" }}\r\n exit={{ scale: 0.3, opacity: 0, transform: \"translate(-50%, -50%)\" }}\r\n >\r\n {/* ── Sidebar ── */}\r\n <Flex direction=\"column\" style={{ width: \"18vh\", flexShrink: 0, borderRight: `0.1vh solid ${alpha(theme.colors.dark[6], 0.8)}`, background: alpha(theme.colors.dark[8], 0.6), overflow: \"hidden\" }}>\r\n <Flex align=\"center\" gap=\"0.6vh\" px=\"sm\" py=\"sm\" style={{ borderBottom: `0.1vh solid ${alpha(theme.colors.dark[6], 0.5)}`, flexShrink: 0 }}>\r\n <motion.button\r\n title=\"Back to script list\"\r\n onClick={handleBack}\r\n whileHover={{ background: alpha(color, 0.16), borderColor: alpha(color, 0.45) }}\r\n whileTap={{ scale: 0.95 }}\r\n style={{\r\n aspectRatio: \"1 / 1\",\r\n height: \"2.4vh\",\r\n background: alpha(color, 0.08),\r\n border: `0.1vh solid ${alpha(color, 0.3)}`,\r\n borderRadius: theme.radius.xs,\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n <ArrowLeft size=\"1.4vh\" color={color} />\r\n </motion.button>\r\n <Flex direction=\"column\" style={{ minWidth: 0, flex: 1, lineHeight: 1, overflow: \"hidden\" }}>\r\n <Text size=\"md\" ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.04em\" truncate>{title}</Text>\r\n {subtitle && (\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.08em\" c={color} truncate>\r\n {subtitle}\r\n </Text>\r\n )}\r\n </Flex>\r\n </Flex>\r\n\r\n {/* Quick controls */}\r\n <Flex gap=\"xxs\" px=\"xs\" py=\"xs\" style={{ borderBottom: `0.1vh solid ${alpha(theme.colors.dark[6], 0.4)}`, flexShrink: 0 }}>\r\n <motion.button title=\"Undo\" onClick={() => form.canBack && form.back()} disabled={!form.canBack}\r\n whileHover={form.canBack ? { background: \"rgba(255,255,255,0.07)\" } : undefined}\r\n whileTap={form.canBack ? { scale: 0.97 } : undefined}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: \"transparent\", border: `0.1vh solid ${alpha(theme.colors.dark[5], form.canBack ? 0.6 : 0.3)}`, borderRadius: theme.radius.xs, cursor: form.canBack ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", opacity: form.canBack ? 1 : 0.35, transition: \"opacity 0.2s\" }}>\r\n <Undo2 size=\"1.5vh\" color=\"rgba(255,255,255,0.7)\" />\r\n </motion.button>\r\n <motion.button title=\"Redo\" onClick={() => form.canForward && form.forward()} disabled={!form.canForward}\r\n whileHover={form.canForward ? { background: \"rgba(255,255,255,0.07)\" } : undefined}\r\n whileTap={form.canForward ? { scale: 0.97 } : undefined}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: \"transparent\", border: `0.1vh solid ${alpha(theme.colors.dark[5], form.canForward ? 0.6 : 0.3)}`, borderRadius: theme.radius.xs, cursor: form.canForward ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", opacity: form.canForward ? 1 : 0.35, transition: \"opacity 0.2s\" }}>\r\n <Redo2 size=\"1.5vh\" color=\"rgba(255,255,255,0.7)\" />\r\n </motion.button>\r\n <motion.button title={isSaving ? \"Saving...\" : isDirty ? `Save (${changedCount})` : \"Save\"}\r\n onClick={() => isDirty && !isSaving && form.submit()} disabled={!isDirty || isSaving}\r\n whileHover={isDirty && !isSaving ? { background: alpha(color, 0.25), borderColor: alpha(color, 0.5) } : undefined}\r\n whileTap={isDirty && !isSaving ? { scale: 0.97 } : undefined}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: isDirty ? alpha(color, 0.14) : \"transparent\", border: `0.1vh solid ${isDirty ? alpha(color, 0.35) : alpha(theme.colors.dark[5], 0.3)}`, borderRadius: theme.radius.xs, cursor: isDirty && !isSaving ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", opacity: isDirty ? 1 : 0.35, transition: \"opacity 0.2s, background 0.15s\" }}>\r\n {isSaving ? <Loader size=\"1.5vh\" color={color} type=\"dots\" /> : <SaveIcon color={isDirty ? color : \"rgba(255,255,255,0.35)\"} size=\"1.5vh\" />}\r\n </motion.button>\r\n <motion.button title=\"History\" onClick={() => setHistoryOpen(true)}\r\n whileHover={{ background: alpha(\"#22d3ee\", 0.16), borderColor: alpha(\"#22d3ee\", 0.5) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{ flex: 1, aspectRatio: \"1 / 1\", background: alpha(\"#22d3ee\", 0.07), border: `0.1vh solid ${alpha(\"#22d3ee\", 0.25)}`, borderRadius: theme.radius.xs, cursor: \"pointer\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\r\n <History color=\"#22d3ee\" size=\"1.5vh\" />\r\n </motion.button>\r\n </Flex>\r\n\r\n {/* Nav items */}\r\n <Flex direction=\"column\" gap=\"xxs\" p=\"xs\" style={{ flex: 1, overflowY: \"auto\" }}>\r\n {navItems.map((item) => (\r\n <NavItemButton key={item.id} icon={item.icon} label={item.label} active={activeTab === item.id} onClick={() => setActiveTab(item.id)} />\r\n ))}\r\n </Flex>\r\n\r\n {/* Bottom actions */}\r\n <Flex direction=\"column\" p=\"xs\" gap=\"xs\" style={{ borderTop: `0.1vh solid ${alpha(theme.colors.dark[6], 0.5)}`, flexShrink: 0 }}>\r\n <motion.button onClick={() => isDirty && form.reset()} disabled={!isDirty}\r\n whileHover={isDirty ? { background: alpha(\"#f97316\", 0.12), borderColor: alpha(\"#f97316\", 0.45) } : undefined}\r\n whileTap={isDirty ? { scale: 0.97 } : undefined}\r\n style={{ width: \"100%\", background: \"transparent\", border: `0.1vh solid ${isDirty ? alpha(\"#f97316\", 0.35) : alpha(theme.colors.dark[5], 0.3)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.8vh\", cursor: isDirty ? \"pointer\" : \"default\", display: \"flex\", alignItems: \"center\", gap: \"0.55vh\", opacity: isDirty ? 1 : 0.35, transition: \"opacity 0.2s\" }}>\r\n <XCircle color={isDirty ? \"#f97316\" : \"rgba(255,255,255,0.35)\"} size=\"1.6vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={isDirty ? \"#f97316\" : \"rgba(255,255,255,0.35)\"}>Discard</Text>\r\n </motion.button>\r\n\r\n <div style={{ height: \"0.05vh\", background: \"rgba(255,255,255,0.07)\", margin: \"0.1vh 0\" }} />\r\n\r\n <motion.button onClick={() => setJsonOpen(true)}\r\n whileHover={{ background: alpha(color, 0.16), borderColor: alpha(color, 0.45) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{ width: \"100%\", background: alpha(color, 0.07), border: `0.1vh solid ${alpha(color, 0.28)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.8vh\", cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: \"0.55vh\" }}>\r\n <Code2 color={color} size=\"1.6vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>Manual Edit</Text>\r\n </motion.button>\r\n\r\n <motion.button onClick={() => setResetOpen(true)}\r\n whileHover={{ background: alpha(\"#ef4444\", 0.16), borderColor: alpha(\"#ef4444\", 0.5) }}\r\n whileTap={{ scale: 0.97 }}\r\n style={{ width: \"100%\", background: alpha(\"#ef4444\", 0.07), border: `0.1vh solid ${alpha(\"#ef4444\", 0.25)}`, borderRadius: theme.radius.xs, padding: \"0.65vh 0.8vh\", cursor: \"pointer\", display: \"flex\", alignItems: \"center\", gap: \"0.55vh\" }}>\r\n <RotateCcw color=\"#ef4444\" size=\"1.6vh\" />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c=\"#ef4444\">Reset Defaults</Text>\r\n </motion.button>\r\n\r\n {version && (\r\n <Text size=\"0.95vh\" c=\"dimmed\" ta=\"center\" style={{ letterSpacing: \"0.04em\", opacity: 0.8 }}>\r\n Version {version}\r\n </Text>\r\n )}\r\n </Flex>\r\n </Flex>\r\n\r\n {/* ── Right column: banner stacked above content ── */}\r\n {/* Wrapped in a column flex so the banner sits on top of the tab\r\n content. The parent MotionFlex is `direction=\"row\"` for sidebar +\r\n content-area, so without this wrapper the banner becomes a third\r\n column and gets squeezed to the left edge of the content area. */}\r\n <Flex direction=\"column\" style={{ flex: 1, minWidth: 0, overflow: \"hidden\" }}>\r\n {/* Above the AnimatePresence so it doesn't unmount on every tab\r\n switch. Self-hides when nothing's missing; consumers can disable\r\n entirely via `suppressMissingItemsBanner`. */}\r\n {!suppressMissingItemsBanner && <MissingItemsBanner />}\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.div key={activeTab} initial={firstMountRef.current ? (firstMountRef.current = false, false) : { opacity: 0, y: 4 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: -4 }} transition={{ duration: 0.15 }}\r\n style={{ flex: 1, display: \"flex\", flexDirection: \"column\", overflowY: \"auto\" }}>\r\n {children(activeTab)}\r\n </motion.div>\r\n </AnimatePresence>\r\n </Flex>\r\n </MotionFlex>\r\n </>\r\n );\r\n}\r\n\r\n// ── Utility ───────────────────────────────────────────────────────────────────\r\n\r\nfunction cloneConfig<T>(value: T): T {\r\n return JSON.parse(JSON.stringify(value)) as T;\r\n}\r\n\r\n// ── ServerOnly Fetcher (merges x-serverOnly paths into form on admin open) ───\r\n\r\nfunction ServerOnlyFetcher<T extends Record<string, any>>() {\r\n const { fetchConfig } = getScriptConfigInstance<T>();\r\n const { reinitialize } = useFormActions<T>();\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n fetchConfig().then((full) => {\r\n if (!cancelled && full) reinitialize(full as Partial<T>);\r\n }).catch(() => {});\r\n return () => { cancelled = true; };\r\n }, []);\r\n\r\n return null;\r\n}\r\n\r\n// ── Public ConfigPanel ────────────────────────────────────────────────────────\r\n\r\nconst defaultOnClose = () => fetchNui(\"CLOSE_ADMIN_SECTION\");\r\n\r\nexport function ConfigPanel<T extends Record<string, any>>(props: ConfigPanelProps<T>) {\r\n const { open, onClose = defaultOnClose } = props;\r\n const { store, updateConfig } = getScriptConfigInstance<T>();\r\n const [isSaving, setIsSaving] = useState(false);\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <QueryClientProvider client={configPanelQueryClient}>\r\n <FormProvider<T>\r\n initialValues={cloneConfig(store.getState())}\r\n onSubmit={async (form) => {\r\n if (isSaving) return;\r\n setIsSaving(true);\r\n try {\r\n const result: any = await updateConfig(form.values as T);\r\n if (result?.success) {\r\n form.reinitialize(cloneConfig(form.values as T));\r\n configPanelQueryClient.invalidateQueries({ queryKey: [\"scriptConfigHistory\"] });\r\n // Re-run the missing-items audit since item-name fields might\r\n // have changed in this save. One-shot per save — not an event\r\n // listener loop, no spam.\r\n useMissingItemsAudit.getState().refresh();\r\n notifications.show({\r\n color: \"green\",\r\n title: locale(\"ConfigSaveSuccessTitle\"),\r\n message: locale(\"ConfigSaveSuccessBody\"),\r\n autoClose: 3000,\r\n });\r\n return;\r\n }\r\n form.reinitialize(cloneConfig(store.getState()));\r\n const err = result?._error || \"Unknown\";\r\n console.warn(`[ConfigPanel] config save failed: ${err}`);\r\n // Map common server-side error codes to friendlier copy. Falls\r\n // back to the raw code so unknown errors still surface something\r\n // visible instead of swallowing silently.\r\n const titleKey = err === \"NoPermission\" ? \"ConfigSaveNoPermissionTitle\"\r\n : err === \"VersionConflict\" ? \"ConfigSaveVersionConflictTitle\"\r\n : err === \"NotReady\" ? \"ConfigSaveNotReadyTitle\"\r\n : \"ConfigSaveFailedTitle\";\r\n const bodyKey = err === \"NoPermission\" ? \"ConfigSaveNoPermissionBody\"\r\n : err === \"VersionConflict\" ? \"ConfigSaveVersionConflictBody\"\r\n : err === \"NotReady\" ? \"ConfigSaveNotReadyBody\"\r\n : \"ConfigSaveFailedBody\";\r\n notifications.show({\r\n color: \"red\",\r\n title: locale(titleKey),\r\n message: locale(bodyKey, err),\r\n autoClose: 6000,\r\n });\r\n } finally {\r\n setIsSaving(false);\r\n }\r\n }}\r\n >\r\n <ServerOnlyFetcher<T> />\r\n <AnimatePresence>\r\n {open && (\r\n <ConfigPanelInner<T>\r\n {...props}\r\n onClose={onClose}\r\n isSaving={isSaving}\r\n />\r\n )}\r\n </AnimatePresence>\r\n </FormProvider>\r\n </QueryClientProvider>\r\n );\r\n}\r\n","import { Flex, Image, Select, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { AlertTriangle } from \"lucide-react\";\r\nimport { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { locale } from \"../utils/locales\";\r\nimport { useItems, useItemsList } from \"../utils/useItems\";\r\n\r\nexport type SelectItemProps = {\r\n label: string;\r\n value: string;\r\n onChange: (value: string) => void;\r\n style?: React.CSSProperties;\r\n excludeItemNames?: string[];\r\n};\r\n\r\nconst MISSING_COLOR = \"#f59e0b\"; // amber — matches MissingItemsBanner\r\n\r\nfunction LazyImage({ src, style }: { src: string; style?: React.CSSProperties }) {\r\n const [visible, setVisible] = useState(false);\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const observer = new IntersectionObserver(([entry]) => {\r\n if (entry.isIntersecting) {\r\n setVisible(true);\r\n observer.disconnect();\r\n }\r\n });\r\n if (ref.current) observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n // No alt — when an item's image src 404s the alt string would render in\r\n // place of the image and blow the cell out, throwing the input layout\r\n // off (clicking the icon area then misses the input click target).\r\n return (\r\n <div ref={ref} style={{ width: \"4vh\", height: \"4vh\" }}>\r\n {visible && <Image src={src} fit=\"contain\" style={style} />}\r\n </div>\r\n );\r\n}\r\n\r\nexport function SelectItem(props: SelectItemProps) {\r\n const invItems = useItems();\r\n\r\n // True when something IS configured but it's not registered in the player's\r\n // items table. Drives all the amber styling below.\r\n const isMissing = !!props.value && !invItems[props.value];\r\n\r\n const formattedItems = useMemo(() => {\r\n const seen = new Set<string>();\r\n const list = useItemsList(props.excludeItemNames ?? [])\r\n .filter((item) => {\r\n if (seen.has(item.name)) return false;\r\n seen.add(item.name);\r\n return true;\r\n })\r\n .map((item) => ({ value: item.name, label: item.label, image: item.image }));\r\n\r\n // If the configured value isn't in the inventory items table, prepend a\r\n // synthetic entry so Mantine has something to match `value` against —\r\n // otherwise the input renders blank with no signal that anything's\r\n // configured. The raw item name doubles as the displayed label.\r\n if (isMissing) {\r\n list.unshift({ value: props.value, label: props.value, image: \"\" });\r\n }\r\n return list;\r\n // `useItemsList` already depends on `invItems` internally; `isMissing`\r\n // captures the value-vs-inventory delta so this list rebuilds whenever\r\n // the configured value or the items table changes.\r\n }, [invItems, props.excludeItemNames, props.value, isMissing]);\r\n\r\n return (\r\n <Select\r\n maxDropdownHeight=\"30vh\"\r\n label={locale(props.label)}\r\n size=\"xs\"\r\n flex={1}\r\n style={props.style}\r\n limit={50}\r\n value={props.value}\r\n onChange={(v) => props.onChange(v as string)}\r\n data={formattedItems}\r\n allowDeselect={false}\r\n searchable\r\n // Amber-tint the input text when the configured value isn't registered\r\n // — a glance is enough to spot which field is broken.\r\n styles={isMissing ? { input: { color: MISSING_COLOR } } : undefined}\r\n // Portal the dropdown so it isn't clipped by overflow:hidden parents\r\n // (e.g. live-editor side panels) and stack it above modal content.\r\n comboboxProps={{ withinPortal: true, zIndex: 2000 }}\r\n leftSectionWidth=\"4vh\"\r\n // Pointer events off on the leftSection so clicks anywhere on the\r\n // input (including over the item icon) bubble through to the input\r\n // and open the dropdown.\r\n leftSectionPointerEvents=\"none\"\r\n leftSection={\r\n isMissing ? (\r\n <Flex align=\"center\" justify=\"center\" w=\"4vh\" h=\"4vh\">\r\n <AlertTriangle size=\"2vh\" color={MISSING_COLOR} strokeWidth={2.5} />\r\n </Flex>\r\n ) : props.value ? (\r\n <Image\r\n fallbackSrc=\"/placeholder.png\"\r\n src={invItems[props.value]?.image || \"\"}\r\n fit=\"contain\"\r\n maw=\"4vh\"\r\n style={{ aspectRatio: \"1 / 1\" }}\r\n />\r\n ) : null\r\n }\r\n nothingFoundMessage={locale(\"NoItemsFound\")}\r\n renderOption={(item) => {\r\n const optionMissing = !invItems[item.option.value] && item.option.value === props.value;\r\n if (optionMissing) {\r\n return (\r\n <Flex align=\"center\" gap=\"xs\" w=\"100%\">\r\n <Flex align=\"center\" justify=\"center\" w=\"4vh\" h=\"4vh\" style={{ flexShrink: 0 }}>\r\n <AlertTriangle size=\"2vh\" color={MISSING_COLOR} strokeWidth={2.5} />\r\n </Flex>\r\n <Flex direction=\"column\" style={{ flex: 1, minWidth: 0 }}>\r\n <Text size=\"sm\" c={MISSING_COLOR} style={{ fontFamily: \"monospace\" }}>\r\n {item.option.value}\r\n </Text>\r\n <Text size=\"xxs\" c=\"dimmed\">\r\n {locale(\"ItemNotInInventory\")}\r\n </Text>\r\n </Flex>\r\n <div style={{\r\n background: \"rgba(245,158,11,0.12)\",\r\n border: `0.1vh solid ${MISSING_COLOR}59`,\r\n borderRadius: \"0.3vh\",\r\n padding: \"0.1vh 0.6vh\",\r\n }}>\r\n <Text size=\"xxs\" c={MISSING_COLOR} ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.06em\">\r\n {locale(\"Missing\")}\r\n </Text>\r\n </div>\r\n </Flex>\r\n );\r\n }\r\n return (\r\n <Flex align=\"center\" gap=\"xs\" w=\"100%\">\r\n <LazyImage\r\n src={invItems[item.option.value]?.image || \"\"}\r\n style={{ aspectRatio: \"1 / 1\" }}\r\n />\r\n <Flex direction=\"column\">\r\n <Text size=\"sm\">{item.option.label}</Text>\r\n <Text size=\"xxs\" c=\"dimmed\">{item.option.value}</Text>\r\n </Flex>\r\n </Flex>\r\n );\r\n }}\r\n />\r\n );\r\n}\r\n","import { alpha, Flex, NumberInput, Text, Tooltip, useMantineTheme } from \"@mantine/core\";\nimport { motion } from \"framer-motion\";\nimport { Crosshair, Eye, EyeOff, MapPin, RotateCcw, Trash2 } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { fetchNui } from \"../utils/fetchNui\";\nimport { locale } from \"../utils/locales\";\n\nexport type Vector4Value = { x: number; y: number; z: number; w: number };\n\nexport type PositionPickerProps = {\n label?: string;\n value: Vector4Value;\n onChange: (v: Vector4Value) => void;\n /**\n * If set, the picker treats `value` as an offset from this entity reference\n * (e.g. \"shell\"). The Lua side must handle GET_POSITION + relativeTo by\n * returning (playerCoords - entityCoords) instead of world coords, and must\n * resolve the same reference when previewing.\n */\n relativeTo?: string;\n /** Optional NUI event name to fetch the current position. Defaults to GET_POSITION. */\n fetchEvent?: string;\n /** Optional NUI event name to draw a marker at the value. Defaults to PREVIEW_POSITION. */\n previewEvent?: string;\n /** Optional NUI event name to clear the preview marker. Defaults to STOP_PREVIEW_POSITION. */\n stopPreviewEvent?: string;\n description?: string;\n showHeading?: boolean;\n};\n\nconst ZERO: Vector4Value = { x: 0, y: 0, z: 0, w: 0 };\n\nexport function PositionPicker(props: PositionPickerProps) {\n const {\n label,\n value,\n onChange,\n relativeTo,\n fetchEvent = \"GET_POSITION\",\n previewEvent = \"PREVIEW_POSITION\",\n stopPreviewEvent = \"STOP_PREVIEW_POSITION\",\n description,\n showHeading = true,\n } = props;\n\n const theme = useMantineTheme();\n const color = theme.colors[theme.primaryColor][5];\n\n const [previewing, setPreviewing] = useState(false);\n const previewingRef = useRef(false);\n\n useEffect(() => {\n return () => {\n if (previewingRef.current) {\n fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {});\n }\n };\n }, [stopPreviewEvent, relativeTo]);\n\n const set = <K extends keyof Vector4Value>(key: K, val: number) => {\n const next = { ...value, [key]: val };\n onChange(next);\n if (previewingRef.current) {\n fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {});\n }\n };\n\n const grab = async () => {\n try {\n const resp = await fetchNui<Vector4Value | null>(fetchEvent, { relativeTo }, value);\n if (resp && typeof resp === \"object\") {\n const next: Vector4Value = {\n x: Number(resp.x ?? 0),\n y: Number(resp.y ?? 0),\n z: Number(resp.z ?? 0),\n w: Number(resp.w ?? 0),\n };\n onChange(next);\n if (previewingRef.current) {\n fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {});\n }\n }\n } catch {\n // ignore — Lua side may not be wired up yet\n }\n };\n\n const togglePreview = async () => {\n const nextState = !previewing;\n setPreviewing(nextState);\n previewingRef.current = nextState;\n if (nextState) {\n await fetchNui(previewEvent, { value, relativeTo }).catch(() => {});\n } else {\n await fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {});\n }\n };\n\n const reset = () => {\n onChange({ ...ZERO });\n if (previewingRef.current) {\n fetchNui(previewEvent, { value: ZERO, relativeTo }).catch(() => {});\n }\n };\n\n const numberStyles = {\n input: { textAlign: \"right\" as const, fontFamily: \"monospace\" },\n };\n\n return (\n <Flex\n direction=\"column\"\n gap=\"xxs\"\n p=\"xs\"\n style={{\n background: alpha(theme.colors.dark[5], 0.35),\n border: \"0.1vh solid rgba(255,255,255,0.05)\",\n borderRadius: theme.radius.xs,\n }}\n >\n {(label || description) && (\n <Flex justify=\"space-between\" align=\"center\" gap=\"xs\">\n <Flex direction=\"column\" gap={0} style={{ minWidth: 0 }}>\n {label && (\n <Flex align=\"center\" gap=\"xxs\">\n <MapPin size=\"1.4vh\" color={alpha(color, 0.7)} />\n <Text\n ff=\"Akrobat Bold\"\n size=\"xxs\"\n tt=\"uppercase\"\n lts=\"0.05em\"\n c=\"rgba(255,255,255,0.75)\"\n >\n {locale(label)}\n </Text>\n {relativeTo && (\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={alpha(color, 0.5)} lts=\"0.05em\">\n · {locale(\"RelativeTo\")} {relativeTo}\n </Text>\n )}\n </Flex>\n )}\n {description && (\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"dimmed\" lh={1.3}>\n {locale(description)}\n </Text>\n )}\n </Flex>\n\n <Flex gap=\"xxs\" style={{ flexShrink: 0 }}>\n <PickerButton tooltip={locale(\"GrabMyPosition\")} onClick={grab} color={color}>\n <Crosshair size=\"1.4vh\" color={color} />\n </PickerButton>\n <PickerButton\n tooltip={previewing ? locale(\"StopPreview\") : locale(\"PreviewInWorld\")}\n onClick={togglePreview}\n color={color}\n active={previewing}\n >\n {previewing ? (\n <EyeOff size=\"1.4vh\" color={color} />\n ) : (\n <Eye size=\"1.4vh\" color={alpha(color, 0.7)} />\n )}\n </PickerButton>\n <PickerButton tooltip={locale(\"Reset\")} onClick={reset} color=\"#ef4444\">\n <RotateCcw size=\"1.4vh\" color=\"#ef4444\" />\n </PickerButton>\n </Flex>\n </Flex>\n )}\n\n <Flex gap=\"xxs\">\n <NumberInput\n size=\"xs\"\n label=\"X\"\n value={value.x}\n onChange={(v) => set(\"x\", Number(v))}\n decimalScale={4}\n step={0.1}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n <NumberInput\n size=\"xs\"\n label=\"Y\"\n value={value.y}\n onChange={(v) => set(\"y\", Number(v))}\n decimalScale={4}\n step={0.1}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n <NumberInput\n size=\"xs\"\n label=\"Z\"\n value={value.z}\n onChange={(v) => set(\"z\", Number(v))}\n decimalScale={4}\n step={0.1}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n {showHeading && (\n <NumberInput\n size=\"xs\"\n label=\"W\"\n value={value.w}\n onChange={(v) => set(\"w\", Number(v))}\n decimalScale={2}\n step={1}\n min={0}\n max={360}\n style={{ flex: 1 }}\n styles={numberStyles}\n />\n )}\n </Flex>\n </Flex>\n );\n}\n\nfunction PickerButton({\n children,\n onClick,\n tooltip,\n color,\n active,\n}: {\n children: React.ReactNode;\n onClick: () => void;\n tooltip: string;\n color: string;\n active?: boolean;\n}) {\n const theme = useMantineTheme();\n return (\n <Tooltip label={tooltip} position=\"top\" withArrow>\n <motion.button\n onClick={onClick}\n whileHover={{ background: alpha(color, 0.18) }}\n whileTap={{ scale: 0.95 }}\n style={{\n background: active ? alpha(color, 0.22) : alpha(color, 0.08),\n border: `0.1vh solid ${alpha(color, active ? 0.5 : 0.3)}`,\n borderRadius: theme.radius.xs,\n padding: \"0.4vh 0.6vh\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {children}\n </motion.button>\n </Tooltip>\n );\n}\n\n// ── Compact row pieces ───────────────────────────────────────────────────────\n// Lower-friction siblings of <PositionPicker> for cases where you want a\n// scannable list of positions instead of a single full editor. Use these\n// when each row in a list should expose Set / Goto actions and just show\n// the resulting `vector4(x, y, z, w)` underneath — no inline number inputs.\n//\n// Lua side must register `GET_POSITION` (returns current world coords + heading)\n// and `GOTO_POSITION` (teleports the player to {x,y,z,w}). dirk_druglabsv2's\n// `src/client/shellEditor.lua` is the canonical example.\n\nfunction fmtV4(n: number) {\n return Number.isFinite(n) ? n.toFixed(2) : \"0.00\";\n}\n\n/** Read-only `vector4(x, y, z, w)` line in the same boxed style as PositionPicker. */\nexport function Vector4Display({ value }: { value: Vector4Value }) {\n const theme = useMantineTheme();\n return (\n <Flex\n align=\"center\"\n gap=\"xs\"\n p=\"xs\"\n style={{\n background: alpha(theme.colors.dark[5], 0.35),\n border: \"0.1vh solid rgba(255,255,255,0.05)\",\n borderRadius: theme.radius.xs,\n }}\n >\n <Text\n ff=\"monospace\"\n size=\"xxs\"\n c=\"rgba(255,255,255,0.85)\"\n style={{ flex: 1, letterSpacing: \"0.02em\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}\n >\n vector4({fmtV4(value.x)}, {fmtV4(value.y)}, {fmtV4(value.z)}, {fmtV4(value.w)})\n </Text>\n </Flex>\n );\n}\n\n/** Reusable styled action button used by Set/Goto/etc. */\nfunction Vector4ActionButton({\n icon,\n label,\n tooltip,\n onClick,\n color,\n compact,\n}: {\n icon: React.ReactNode;\n label: string;\n tooltip: string;\n onClick: () => void;\n color: string;\n compact?: boolean;\n}) {\n const theme = useMantineTheme();\n return (\n <Tooltip label={tooltip} position=\"top\" withArrow withinPortal zIndex={2000}>\n <motion.button\n onClick={onClick}\n whileHover={{ background: alpha(color, 0.18) }}\n whileTap={{ scale: 0.95 }}\n style={{\n background: alpha(color, 0.1),\n border: `0.1vh solid ${alpha(color, 0.35)}`,\n borderRadius: theme.radius.xs,\n padding: compact ? \"0.25vh 0.6vh\" : \"0.5vh 0.8vh\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: compact ? \"0.3vh\" : \"0.4vh\",\n }}\n >\n {icon}\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>\n {label}\n </Text>\n </motion.button>\n </Tooltip>\n );\n}\n\n/** Grabs the player's current world coords+heading via `GET_POSITION`. */\nexport function WorldPositionSetButton({\n value,\n onChange,\n compact,\n}: {\n value: Vector4Value;\n onChange: (v: Vector4Value) => void;\n compact?: boolean;\n}) {\n const theme = useMantineTheme();\n const color = theme.colors[theme.primaryColor][5];\n const grab = async () => {\n try {\n const resp = await fetchNui<Vector4Value | null>(\"GET_POSITION\", {}, value);\n if (!resp || typeof resp !== \"object\") return;\n onChange({\n x: Number(resp.x ?? 0),\n y: Number(resp.y ?? 0),\n z: Number(resp.z ?? 0),\n w: Number(resp.w ?? 0),\n });\n } catch {\n // Lua surfaces a notify on failure\n }\n };\n return (\n <Vector4ActionButton\n icon={<Crosshair size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\n label={locale(\"Set\")}\n tooltip={locale(\"SetWorldTooltip\")}\n onClick={grab}\n color={color}\n compact={compact}\n />\n );\n}\n\n/** Teleports the player to the stored coords via `GOTO_POSITION`. */\nexport function WorldPositionGotoButton({\n value,\n compact,\n}: {\n value: Vector4Value;\n compact?: boolean;\n}) {\n const theme = useMantineTheme();\n const color = theme.colors[theme.primaryColor][5];\n const goto = () => {\n fetchNui(\"GOTO_POSITION\", value).catch(() => {});\n };\n return (\n <Vector4ActionButton\n icon={<MapPin size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\n label={locale(\"Goto\")}\n tooltip={locale(\"GotoWorldTooltip\")}\n onClick={goto}\n color={color}\n compact={compact}\n />\n );\n}\n\n/** Red-tinted Delete button matching the Set/Goto styling. */\nexport function Vector4DeleteButton({\n onClick,\n compact,\n}: {\n onClick: () => void;\n compact?: boolean;\n}) {\n const color = \"#ef4444\";\n return (\n <Vector4ActionButton\n icon={<Trash2 size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\n label={locale(\"Delete\")}\n tooltip={locale(\"Delete\")}\n onClick={onClick}\n color={color}\n compact={compact}\n />\n );\n}\n\n","// Group / rank pickers backed by lib.framework on the Lua side.\n//\n// Two usage modes:\n//\n// Compound (group + rank pair):\n// <GroupSelect value={{ name: 'police', grade: 2 }} onChange={setValue} type=\"job\">\n// <GroupName />\n// <GroupRank />\n// </GroupSelect>\n//\n// Standalone (just the group name, no rank):\n// <GroupName value=\"police\" onChange={setName} type=\"job\" />\n//\n// <GroupRank> is compound-only — it reads the currently selected group\n// from context and lists that group's grades. Throws when used outside.\n\nimport { Select } from \"@mantine/core\";\nimport React, { createContext, useContext } from \"react\";\nimport {\n FrameworkGroup,\n selectAllGroups,\n useFrameworkGroups,\n} from \"../utils/useFrameworkGroups\";\nimport { locale } from \"../utils/locales\";\n\nexport type GroupValue = {\n name?: string;\n grade?: number;\n};\n\nexport type GroupType = \"job\" | \"gang\";\n\ntype GroupSelectContextShape = {\n value: GroupValue;\n onChange: (next: GroupValue) => void;\n type?: GroupType;\n};\n\nconst GroupSelectContext = createContext<GroupSelectContextShape | null>(null);\n\n// ── <GroupSelect> ────────────────────────────────────────────────────────────\n// Wrapper that owns the {name, grade} pair and exposes it to children via\n// context. Renders nothing of its own — children handle presentation. Pass\n// any layout props through `style` if needed (e.g. width).\n\nexport type GroupSelectProps = {\n value: GroupValue;\n onChange: (next: GroupValue) => void;\n type?: GroupType;\n children: React.ReactNode;\n style?: React.CSSProperties;\n};\n\nexport function GroupSelect({\n value,\n onChange,\n type,\n children,\n style,\n}: GroupSelectProps) {\n return (\n <GroupSelectContext.Provider value={{ value, onChange, type }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.4vh\", ...style }}>\n {children}\n </div>\n </GroupSelectContext.Provider>\n );\n}\n\n// ── filtering ────────────────────────────────────────────────────────────────\n\nfunction filterByType(\n jobs: FrameworkGroup[],\n gangs: FrameworkGroup[],\n type?: GroupType,\n): FrameworkGroup[] {\n if (type === \"job\") return jobs;\n if (type === \"gang\") return gangs;\n return [...jobs, ...gangs];\n}\n\n// ── <GroupName> ──────────────────────────────────────────────────────────────\n// Group dropdown. Works standalone (own value/onChange) OR inside\n// <GroupSelect> (reads context, ignores standalone props). When the name\n// changes inside compound mode, the grade is reset to undefined since the\n// previous grade key may not exist in the new group.\n\nexport type GroupNameProps = {\n value?: string;\n onChange?: (name: string) => void;\n type?: GroupType;\n label?: string;\n description?: string;\n placeholder?: string;\n size?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n};\n\nexport function GroupName(props: GroupNameProps) {\n const ctx = useContext(GroupSelectContext);\n const jobs = useFrameworkGroups((s) => s.jobs);\n const gangs = useFrameworkGroups((s) => s.gangs);\n\n const inCompound = ctx !== null;\n const currentValue = inCompound ? ctx!.value.name : props.value;\n const filterType = inCompound ? ctx!.type : props.type;\n\n const list = filterByType(jobs, gangs, filterType);\n\n // When type is undefined we render Mantine's grouped data shape so the\n // user sees Jobs / Gangs sections in the dropdown.\n const data =\n filterType === undefined\n ? [\n { group: locale(\"Jobs\") || \"Jobs\", items: jobs.map((g) => ({ value: g.name, label: g.label })) },\n { group: locale(\"Gangs\") || \"Gangs\", items: gangs.map((g) => ({ value: g.name, label: g.label })) },\n ]\n : list.map((g) => ({ value: g.name, label: g.label }));\n\n return (\n <Select\n label={props.label}\n description={props.description}\n placeholder={props.placeholder ?? (locale(\"SelectGroup\") || \"Select…\")}\n size={props.size ?? \"xs\"}\n disabled={props.disabled}\n style={props.style}\n data={data as any}\n value={currentValue ?? null}\n searchable\n onChange={(v) => {\n const name = v ?? \"\";\n if (inCompound) {\n // Reset grade when the group changes — old grade likely invalid.\n ctx!.onChange({ name: name || undefined, grade: undefined });\n } else if (props.onChange) {\n props.onChange(name);\n }\n }}\n allowDeselect={false}\n />\n );\n}\n\n// ── <GroupRank> ──────────────────────────────────────────────────────────────\n// Grade dropdown for the currently-selected group. Compound-only. Disabled\n// when no group is selected or the group has no grades.\n\nexport type GroupRankProps = {\n label?: string;\n description?: string;\n placeholder?: string;\n size?: string;\n style?: React.CSSProperties;\n};\n\nexport function GroupRank(props: GroupRankProps) {\n const ctx = useContext(GroupSelectContext);\n if (ctx === null) {\n throw new Error(\"<GroupRank> must be a child of <GroupSelect>\");\n }\n const jobs = useFrameworkGroups((s) => s.jobs);\n const gangs = useFrameworkGroups((s) => s.gangs);\n\n const all = [...jobs, ...gangs];\n const selectedGroup = all.find((g) => g.name === ctx.value.name) ?? null;\n const grades = selectedGroup?.grades ?? [];\n\n const data = grades.map((g) => ({\n value: String(g.grade),\n label: `${g.grade} — ${g.label || g.name}${g.isBoss ? \" (boss)\" : \"\"}`,\n }));\n\n return (\n <Select\n label={props.label}\n description={props.description}\n placeholder={props.placeholder ?? (locale(\"SelectGrade\") || \"Select grade…\")}\n size={props.size ?? \"xs\"}\n style={props.style}\n data={data}\n value={ctx.value.grade != null ? String(ctx.value.grade) : null}\n onChange={(v) => {\n ctx.onChange({\n ...ctx.value,\n grade: v != null ? Number(v) : undefined,\n });\n }}\n disabled={!selectedGroup || grades.length === 0}\n allowDeselect={false}\n />\n );\n}\n\n// Convenience namespace export so consumers can write\n// `<GroupSelect.Name>` / `<GroupSelect.Rank>` if they prefer.\nGroupSelect.Name = GroupName;\nGroupSelect.Rank = GroupRank;\n","import { createContext, useContext, type ReactNode } from \"react\";\r\nimport { Flex, Select, TextInput } from \"@mantine/core\";\r\nimport { INPUT_MAPPER_KEYS_BY_PRIMARY, INPUT_MAPPER_PRIMARY_OPTIONS } from \"@/utils/inputMapper\";\r\n\r\nexport type FiveMControls = {\r\n _type: string;\r\n _key: string;\r\n};\r\n\r\ntype KeyBindContextValue = {\r\n value: FiveMControls;\r\n onChange: (next: FiveMControls) => void;\r\n};\r\n\r\nconst KeyBindContext = createContext<KeyBindContextValue | null>(null);\r\n\r\nfunction useKeyBindContext(): KeyBindContextValue {\r\n const ctx = useContext(KeyBindContext);\r\n if (!ctx) {\r\n throw new Error(\"FiveMKeyBindInput.* must be used inside <FiveMKeyBindInput>\");\r\n }\r\n return ctx;\r\n}\r\n\r\ntype RootProps = {\r\n value: FiveMControls;\r\n onChange: (next: FiveMControls) => void;\r\n children: ReactNode;\r\n};\r\n\r\nfunction Root({ value, onChange, children }: RootProps) {\r\n return (\r\n <KeyBindContext.Provider value={{ value, onChange }}>\r\n <Flex gap=\"xs\" style={{ flex: 1 }}>\r\n {children}\r\n </Flex>\r\n </KeyBindContext.Provider>\r\n );\r\n}\r\n\r\ntype CategoryProps = {\r\n label?: string;\r\n};\r\n\r\nfunction Category({ label = \"Primary\" }: CategoryProps) {\r\n const { value, onChange } = useKeyBindContext();\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n value={value._type}\r\n data={[...INPUT_MAPPER_PRIMARY_OPTIONS]}\r\n onChange={(nextType) => {\r\n if (!nextType) return;\r\n\r\n const keyOptions = INPUT_MAPPER_KEYS_BY_PRIMARY[nextType] ?? [];\r\n const hasCurrentKey = keyOptions.includes(value._key);\r\n const nextKey = hasCurrentKey ? value._key : (keyOptions[0] ?? value._key);\r\n\r\n onChange({\r\n ...value,\r\n _type: nextType,\r\n _key: nextKey,\r\n });\r\n }}\r\n searchable\r\n allowDeselect={false}\r\n />\r\n );\r\n}\r\n\r\ntype KeyProps = {\r\n label?: string;\r\n};\r\n\r\nfunction Key({ label = \"Key\" }: KeyProps) {\r\n const { value, onChange } = useKeyBindContext();\r\n\r\n const keyOptions = INPUT_MAPPER_KEYS_BY_PRIMARY[value._type] ?? [];\r\n\r\n if (keyOptions.length === 0) {\r\n return (\r\n <TextInput\r\n label={label}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n value={value._key}\r\n onChange={(e) => onChange({ ...value, _key: e.currentTarget.value })}\r\n placeholder=\"Type key value\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n value={value._key}\r\n data={keyOptions}\r\n onChange={(nextKey) => {\r\n if (!nextKey) return;\r\n onChange({ ...value, _key: nextKey });\r\n }}\r\n searchable\r\n allowDeselect={false}\r\n />\r\n );\r\n}\r\n\r\nexport const FiveMKeyBindInput = Object.assign(Root, {\r\n Category,\r\n Key,\r\n});\r\n","// FiveM control-id pickers. These are for the numeric control IDs you pass\n// to IsControlPressed / DisableControlAction / EnableControlAction (the\n// ones documented at https://docs.fivem.net/docs/game-references/controls/),\n// not for keybind primary keys — for those use FiveMKeyBindInput.\n//\n// Two flavours:\n// • <ControlSelect> — single id, returns number\n// • <ControlMultiSelect> — array of ids, returns number[]\n//\n// Both accept arbitrary Mantine Select / MultiSelect props so callers can\n// style/portal/disable as they need. Custom (uncatalogued) IDs the data\n// already contains in `value` are still rendered — they just appear in a\n// \"Custom\" group so the user can see and remove them.\n\nimport { MultiSelect, Select } from \"@mantine/core\";\nimport type { MultiSelectProps, SelectProps } from \"@mantine/core\";\nimport {\n GTA_CONTROLS,\n GTA_CONTROL_GROUP_ORDER,\n formatGtaControl,\n type GtaControl,\n type GtaControlGroup,\n} from \"@/utils/gtaControls\";\n\n// Build the grouped Mantine data once per module-load. Each group entry is\n// `{ group: name, items: [{ value, label }, ...] }`.\nfunction buildGroupedData(extraIds: number[] = []) {\n // Dedupe by id — Mantine throws \"Duplicate options\" if two entries share\n // the same value. First occurrence wins so the catalogue order in\n // GTA_CONTROLS stays authoritative.\n const groups = new Map<GtaControlGroup, GtaControl[]>();\n const seen = new Set<number>();\n for (const c of GTA_CONTROLS) {\n if (seen.has(c.id)) continue;\n seen.add(c.id);\n if (!groups.has(c.group)) groups.set(c.group, []);\n groups.get(c.group)!.push(c);\n }\n\n const data = GTA_CONTROL_GROUP_ORDER.flatMap((g) => {\n const items = groups.get(g);\n if (!items || items.length === 0) return [];\n return [\n {\n group: g,\n items: items.map((c) => ({\n value: String(c.id),\n label: formatGtaControl(c.id),\n })),\n },\n ];\n });\n\n // Surface custom (uncatalogued) ids in a \"Custom\" group so they're visible\n // in the dropdown rather than disappearing. Without this, MultiSelect drops\n // the chip silently when the value isn't in `data`.\n const knownIds = new Set(GTA_CONTROLS.map((c) => c.id));\n const customs = extraIds.filter((id) => !knownIds.has(id));\n if (customs.length > 0) {\n // The \"Custom\" group label is just a heading for unrecognised IDs the\n // caller has in their data — it's not a real GtaControlGroup, so cast\n // through unknown.\n data.push({\n group: \"Custom\" as unknown as GtaControlGroup,\n items: customs.map((id) => ({ value: String(id), label: `Control ${id}` })),\n });\n }\n\n return data;\n}\n\n// ── Single-control Select ──────────────────────────────────────────────────\n\nexport type ControlSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\n value: number | null | undefined;\n onChange: (id: number | null) => void;\n};\n\nexport function ControlSelect({\n value,\n onChange,\n label = \"Control\",\n size = \"xs\",\n searchable = true,\n ...rest\n}: ControlSelectProps) {\n const data = buildGroupedData(value != null ? [value] : []);\n return (\n <Select\n label={label}\n size={size}\n searchable={searchable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching controls\"\n {...rest}\n data={data}\n value={value != null ? String(value) : null}\n onChange={(v) => onChange(v == null ? null : Number(v))}\n />\n );\n}\n\n// ── Multi-control MultiSelect ──────────────────────────────────────────────\n\nexport type ControlMultiSelectProps = Omit<MultiSelectProps, \"data\" | \"value\" | \"onChange\"> & {\n value: number[];\n onChange: (ids: number[]) => void;\n};\n\nexport function ControlMultiSelect({\n value,\n onChange,\n label = \"Controls\",\n size = \"xs\",\n searchable = true,\n ...rest\n}: ControlMultiSelectProps) {\n const data = buildGroupedData(value);\n return (\n <MultiSelect\n label={label}\n size={size}\n searchable={searchable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching controls\"\n {...rest}\n data={data}\n value={value.map(String)}\n onChange={(vals) => onChange(vals.map((v) => Number(v)).filter((n) => Number.isFinite(n)))}\n />\n );\n}\n","import { alpha, Loader, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { Check, X } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\n\r\ntype SaveState = \"idle\" | \"pending\" | \"success\" | \"error\";\r\n\r\nexport function AsyncSaveButton({\r\n onSave,\r\n color,\r\n label = \"Save Changes\",\r\n style,\r\n}: {\r\n onSave: () => Promise<any>;\r\n color: string;\r\n label?: string;\r\n style?: React.CSSProperties;\r\n}) {\r\n const theme = useMantineTheme();\r\n const [state, setState] = useState<SaveState>(\"idle\");\r\n\r\n const handleClick = async () => {\r\n if (state === \"pending\") return;\r\n setState(\"pending\");\r\n try {\r\n const result = await onSave();\r\n setState(result?.success === false ? \"error\" : \"success\");\r\n } catch {\r\n setState(\"error\");\r\n }\r\n setTimeout(() => setState(\"idle\"), 2000);\r\n };\r\n\r\n const c = state === \"error\" ? \"#ef4444\" : color;\r\n\r\n return (\r\n <motion.button\r\n onClick={handleClick}\r\n disabled={state === \"pending\"}\r\n whileHover={state === \"pending\" ? {} : { background: alpha(c, 0.25) }}\r\n whileTap={state === \"pending\" ? {} : { scale: 0.98 }}\r\n style={{\r\n background: alpha(c, 0.14),\r\n border: `0.1vh solid ${alpha(c, 0.4)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: `${theme.spacing.xxs} ${theme.spacing.xs}`,\r\n cursor: state === \"pending\" ? \"default\" : \"pointer\",\r\n display: \"flex\", alignItems: \"center\",\r\n justifyContent: \"center\", gap: theme.spacing.xxs,\r\n transition: \"background 0.2s, border-color 0.2s\",\r\n alignSelf: \"flex-end\",\r\n ...style,\r\n }}\r\n >\r\n {state === \"pending\"\r\n ? <Loader size=\"1.4vh\" color={c} type=\"oval\" />\r\n : state === \"error\"\r\n ? <X size=\"1.4vh\" color={c} />\r\n : <Check size=\"1.4vh\" color={c} />\r\n }\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.06em\" c={c}>\r\n {state === \"success\" ? \"Saved!\" : state === \"error\" ? \"Failed!\" : label}\r\n </Text>\r\n </motion.button>\r\n );\r\n}\r\n","import { Flex, Text } from \"@mantine/core\";\r\nimport { locale } from \"@/utils\";\r\nimport { LucideProps } from \"lucide-react\";\r\nimport { ComponentType } from \"react\";\r\n\r\nexport type AdminPageTitleProps = {\r\n title: string;\r\n icon: ComponentType<LucideProps>;\r\n color: string;\r\n};\r\n\r\nexport function AdminPageTitle(props: AdminPageTitleProps) {\r\n return (\r\n <Flex align=\"center\" gap=\"xs\">\r\n <props.icon color={props.color} />\r\n <Text ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.1em\" size=\"sm\" c=\"rgba(255,255,255,0.6)\">\r\n {locale(props.title)}\r\n </Text>\r\n </Flex>\r\n );\r\n}\r\n","// Shared \"label + description + Switch on the right\" panel used across\n// configurators (BasicSection, BackstoriesSection, ThemeOverrideSection, …).\n// Centralising it here means a single visual style — dark[5] tinted\n// background, faint white outline, primary-colored track when on — instead of\n// each consumer hand-rolling slightly different borders/colours.\n//\n// Variants:\n// • default — tall row with description, used at the top of a tab/section\n// • compact — smaller padding + sm switch, for nested editor cards (e.g.\n// waypoint useNavmesh inside the SceneEditor walk-path block)\n//\n// `thumbIcon` supports the Lock-on-thumb pattern used by gated toggles.\n\nimport { alpha, Flex, Switch, Text, useMantineTheme } from \"@mantine/core\";\nimport { ReactNode } from \"react\";\n\nexport type SwitchPanelProps = {\n label: ReactNode;\n description?: ReactNode;\n checked: boolean;\n onChange: (v: boolean) => void;\n disabled?: boolean;\n /** Icon rendered on the Switch's thumb (e.g. a Lock when locked). */\n thumbIcon?: ReactNode;\n /** Compact variant — used for nested rows inside an editor card. */\n compact?: boolean;\n};\n\nexport function SwitchPanel({\n label,\n description,\n checked,\n onChange,\n disabled,\n thumbIcon,\n compact,\n}: SwitchPanelProps) {\n const theme = useMantineTheme();\n const pc = theme.colors[theme.primaryColor];\n\n const bg = compact\n ? alpha(theme.colors.dark[6], 0.5)\n : alpha(theme.colors.dark[5], 0.35);\n const border = compact\n ? \"0.1vh solid rgba(255,255,255,0.04)\"\n : \"0.1vh solid rgba(255,255,255,0.05)\";\n\n return (\n <Flex\n justify=\"space-between\"\n align=\"center\"\n px={compact ? \"xs\" : \"xs\"}\n py={compact ? \"xxs\" : \"xs\"}\n style={{\n background: bg,\n border,\n borderRadius: theme.radius.xs,\n opacity: disabled ? 0.5 : 1,\n }}\n >\n <Flex direction=\"column\" gap=\"xxs\" style={{ flex: 1, minWidth: 0 }}>\n {typeof label === \"string\" ? (\n compact ? (\n <Text\n ff=\"Akrobat Bold\"\n size=\"xxs\"\n c=\"rgba(255,255,255,0.85)\"\n tt=\"uppercase\"\n lts=\"0.05em\"\n >\n {label}\n </Text>\n ) : (\n <Text ff=\"Akrobat Bold\" size=\"xs\" c=\"rgba(255,255,255,0.85)\">\n {label}\n </Text>\n )\n ) : (\n label\n )}\n {description && (\n typeof description === \"string\" ? (\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={compact ? \"rgba(255,255,255,0.4)\" : \"rgba(255,255,255,0.45)\"}>\n {description}\n </Text>\n ) : (\n description\n )\n )}\n </Flex>\n <Switch\n checked={checked}\n disabled={disabled}\n onChange={(e) => onChange(e.currentTarget.checked)}\n size={compact ? \"sm\" : \"md\"}\n thumbIcon={thumbIcon}\n styles={{\n track: {\n background: checked ? alpha(pc[6], 0.4) : \"rgba(255,255,255,0.08)\",\n borderColor: checked ? alpha(pc[6], 0.6) : \"rgba(255,255,255,0.1)\",\n },\n }}\n />\n </Flex>\n );\n}\n","import { ActionIcon, Flex, Stack, Text } from \"@mantine/core\";\nimport { ChevronDown, ChevronUp, FlaskConical } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { isEnvBrowser } from \"../../utils/misc\";\n\nexport interface TestBedItem {\n key: string;\n label: string;\n active: boolean;\n onToggle: (next: boolean) => void;\n}\n\nexport type TestBedPlacement = \"top-left\" | \"top-center\" | \"top-right\";\n\nexport interface TestBedProps {\n items: TestBedItem[];\n /** localStorage key used to persist toggled state across reloads. Default: \"testbed:open-state\". */\n storageKey?: string;\n /** Disable localStorage persistence entirely. Default: false. */\n disablePersistence?: boolean;\n /** Header label shown in the collapsed pill. Default: \"TestBed\". */\n title?: string;\n /** Where to anchor the floating panel. Default: \"top-left\". */\n placement?: TestBedPlacement;\n}\n\nconst placementStyle = (placement: TestBedPlacement): React.CSSProperties => {\n switch (placement) {\n case \"top-center\":\n return { top: \"1vh\", left: \"50%\", transform: \"translateX(-50%)\" };\n case \"top-right\":\n return { top: \"1vh\", right: \"1vh\" };\n case \"top-left\":\n default:\n return { top: \"1vh\", left: \"1vh\" };\n }\n};\n\nconst loadPersistedState = (storageKey: string): Record<string, boolean> => {\n try {\n const raw = localStorage.getItem(storageKey);\n return raw ? JSON.parse(raw) : {};\n } catch {\n return {};\n }\n};\n\nconst savePersistedState = (storageKey: string, state: Record<string, boolean>) => {\n try {\n localStorage.setItem(storageKey, JSON.stringify(state));\n } catch {}\n};\n\nexport function TestBed({\n items,\n storageKey = \"testbed:open-state\",\n disablePersistence = false,\n title = \"TestBed\",\n placement = \"top-left\",\n}: TestBedProps) {\n const [open, setOpen] = useState(false);\n const itemsRef = useRef(items);\n itemsRef.current = items;\n\n useEffect(() => {\n if (!isEnvBrowser() || disablePersistence) return;\n const persisted = loadPersistedState(storageKey);\n itemsRef.current.forEach((item) => {\n const persistedValue = persisted[item.key];\n if (typeof persistedValue === \"boolean\" && persistedValue !== item.active) {\n item.onToggle(persistedValue);\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!isEnvBrowser()) return null;\n\n const toggle = (item: TestBedItem) => {\n const next = !item.active;\n item.onToggle(next);\n if (!disablePersistence) {\n const persisted = loadPersistedState(storageKey);\n persisted[item.key] = next;\n savePersistedState(storageKey, persisted);\n }\n };\n\n return (\n <div\n style={{\n position: \"fixed\",\n ...placementStyle(placement),\n zIndex: 2147483647,\n pointerEvents: \"auto\",\n fontSize: \"1.4vh\",\n }}\n >\n <Flex\n align=\"center\"\n gap=\"xs\"\n px=\"sm\"\n py=\"xs\"\n onClick={() => setOpen((v) => !v)}\n style={{\n cursor: \"pointer\",\n background: \"rgba(0,0,0,0.55)\",\n backdropFilter: \"blur(0.6vh)\",\n WebkitBackdropFilter: \"blur(0.6vh)\",\n border: \"0.1vh solid rgba(255,255,255,0.1)\",\n borderRadius: \"var(--mantine-radius-sm)\",\n userSelect: \"none\",\n minWidth: \"16vh\",\n }}\n >\n <FlaskConical size={14} color=\"rgba(255,255,255,0.7)\" />\n <Text\n size=\"xs\"\n ff=\"Akrobat Bold\"\n tt=\"uppercase\"\n lts=\"0.08em\"\n c=\"rgba(255,255,255,0.85)\"\n style={{ flex: 1 }}\n >\n {title}\n </Text>\n <ActionIcon size=\"xs\" variant=\"transparent\" c=\"rgba(255,255,255,0.6)\">\n {open ? <ChevronUp size={14} /> : <ChevronDown size={14} />}\n </ActionIcon>\n </Flex>\n\n {open && (\n <Stack\n gap={4}\n mt=\"xxs\"\n p=\"xs\"\n style={{\n background: \"rgba(0,0,0,0.55)\",\n backdropFilter: \"blur(0.6vh)\",\n WebkitBackdropFilter: \"blur(0.6vh)\",\n border: \"0.1vh solid rgba(255,255,255,0.1)\",\n borderRadius: \"var(--mantine-radius-sm)\",\n minWidth: \"16vh\",\n maxHeight: \"80vh\",\n overflowY: \"auto\",\n }}\n >\n {items.map((item) => (\n <Flex\n key={item.key}\n align=\"center\"\n justify=\"space-between\"\n gap=\"xs\"\n px=\"xs\"\n py=\"xxs\"\n onClick={() => toggle(item)}\n style={{\n cursor: \"pointer\",\n borderRadius: \"var(--mantine-radius-xs)\",\n background: item.active ? \"rgba(245,158,11,0.15)\" : \"rgba(255,255,255,0.03)\",\n border: `0.1vh solid ${item.active ? \"rgba(245,158,11,0.35)\" : \"rgba(255,255,255,0.05)\"}`,\n userSelect: \"none\",\n }}\n >\n <Text\n size=\"xs\"\n ff=\"Akrobat Bold\"\n c={item.active ? \"#f59e0b\" : \"rgba(255,255,255,0.75)\"}\n >\n {item.label}\n </Text>\n <Text\n size=\"xxs\"\n ff=\"Akrobat Bold\"\n tt=\"uppercase\"\n lts=\"0.06em\"\n c={item.active ? \"#f59e0b\" : \"rgba(255,255,255,0.35)\"}\n >\n {item.active ? \"On\" : \"Off\"}\n </Text>\n </Flex>\n ))}\n </Stack>\n )}\n </div>\n );\n}\n","// Per-resource theme override editor. Rendered inside a consumer resource's\n// configurator (e.g. dirk_multichar, dirk_fishing) to let admins decouple\n// that resource's theme from dirk_lib's global appearance.\n//\n// Data shape (driven by a schema block on the consumer side):\n// theme: {\n// useOverride: boolean,\n// primaryColor: string, // \"dirk\" | \"custom\" | mantine palette name\n// primaryShade: 0..9,\n// customTheme: string[10], // hex stops\n// }\n//\n// The override flag goes through the same scriptConfig path as everything\n// else — the resource's GET_SETTINGS callback is responsible for deciding\n// whether to push the global theme keys or the override keys to NUI on\n// hydration. DirkProvider's UPDATE_DIRK_LIB_SETTINGS listener gates global\n// pushes when the consumer has its own override active (see useSettings).\n//\n// Reset-to-global = flip the override switch off. The saved palette stays so\n// admins can re-enable without re-picking colours. A separate wipe trash icon\n// nukes the local palette back to the schema default.\n\nimport { generateColors } from \"@mantine/colors-generator\";\nimport {\n ActionIcon,\n ColorInput,\n Flex,\n NumberInput,\n Popover,\n Select,\n Switch,\n Text,\n useMantineTheme,\n} from \"@mantine/core\";\nimport { Palette, RotateCcw } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useFormActions, useFormField } from \"@/hooks/useForm\";\nimport { locale } from \"@/utils/locales\";\nimport { AdminPageTitle } from \"./AdminPageTitle\";\nimport { SwitchPanel } from \"./SwitchPanel\";\n\nconst MANTINE_COLOR_OPTIONS = [\n \"dirk\",\n \"red\",\n \"pink\",\n \"grape\",\n \"violet\",\n \"indigo\",\n \"blue\",\n \"cyan\",\n \"teal\",\n \"green\",\n \"lime\",\n \"yellow\",\n \"orange\",\n].map((value) => ({ value, label: value }));\n\nexport type ThemeOverrideValue = {\n useOverride: boolean;\n primaryColor: string;\n primaryShade: number;\n customTheme: string[];\n};\n\nconst DEFAULT_PALETTE: string[] = [\n \"#f0f4ff\",\n \"#d9e3ff\",\n \"#bfcfff\",\n \"#a6bbff\",\n \"#8ca7ff\",\n \"#7393ff\",\n \"#5a7fff\",\n \"#406bff\",\n \"#2547ff\",\n \"#0b33ff\",\n];\n\nconst DEFAULT_VALUE: ThemeOverrideValue = {\n useOverride: false,\n primaryColor: \"dirk\",\n primaryShade: 5,\n customTheme: DEFAULT_PALETTE,\n};\n\nfunction GroupLabel({ label }: { label: string }) {\n return (\n <Flex align=\"center\" gap=\"xs\" mt=\"xxs\">\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.07em\" c=\"rgba(255,255,255,0.2)\">\n {label}\n </Text>\n <div style={{ flex: 1, height: \"0.05vh\", background: \"rgba(255,255,255,0.06)\" }} />\n </Flex>\n );\n}\n\nexport type ThemeOverrideSectionProps = {\n /**\n * Schema path the consumer stores its override block under. Defaults to\n * \"theme\" — matches the recommended schema key.\n */\n schemaKey?: string;\n /**\n * Optional title for the AdminPageTitle. Defaults to the localized\n * \"Theme\" string with a fallback.\n */\n title?: string;\n};\n\nexport function ThemeOverrideSection({\n schemaKey = \"theme\",\n title,\n}: ThemeOverrideSectionProps) {\n const mantineTheme = useMantineTheme();\n const color = mantineTheme.colors[mantineTheme.primaryColor][5];\n\n const raw = useFormField<Record<string, ThemeOverrideValue>>(schemaKey as never) as\n | Partial<ThemeOverrideValue>\n | undefined;\n // Normalise — the form field could be undefined at first paint, and any of\n // the inner fields could be missing if the schema default block hasn't\n // fully hydrated. Merge against DEFAULT_VALUE so the inputs always have\n // something to render.\n const value: ThemeOverrideValue = {\n useOverride: raw?.useOverride ?? DEFAULT_VALUE.useOverride,\n primaryColor: raw?.primaryColor ?? DEFAULT_VALUE.primaryColor,\n primaryShade: raw?.primaryShade ?? DEFAULT_VALUE.primaryShade,\n customTheme:\n Array.isArray(raw?.customTheme) && raw!.customTheme.length === 10\n ? (raw!.customTheme as string[])\n : DEFAULT_VALUE.customTheme,\n };\n\n const { setValue } = useFormActions<Record<string, ThemeOverrideValue>>();\n const set = <K extends keyof ThemeOverrideValue>(key: K, val: ThemeOverrideValue[K]) =>\n setValue(schemaKey as never, { ...value, [key]: val } as never);\n\n const useCustom = value.primaryColor === \"custom\";\n const editable = value.useOverride;\n\n const setSwatch = (index: number, hex: string) => {\n const next = [...value.customTheme];\n next[index] = hex;\n set(\"customTheme\", next);\n };\n\n const generateFromBase = (hex: string) => {\n try {\n const generated = generateColors(hex);\n set(\"customTheme\", generated as unknown as string[]);\n } catch {\n // invalid colour — ignore\n }\n };\n\n const resetPalette = () => set(\"customTheme\", DEFAULT_PALETTE);\n\n return (\n <Flex\n direction=\"column\"\n gap=\"xs\"\n p=\"sm\"\n style={{ flex: 1, minHeight: 0, overflowY: \"auto\" }}\n >\n <AdminPageTitle\n icon={Palette}\n title={title || locale(\"Theme\") || \"Theme\"}\n color={color}\n />\n\n {/* Master toggle — flipping this off resets the resource to follow the\n global dirk_lib theme. The saved palette is preserved so re-enabling\n doesn't lose work. Uses the shared SwitchPanel so the outline + Switch\n styling match every other configurator section. */}\n <SwitchPanel\n label={locale(\"OverrideGlobalTheme\") || \"Override global theme\"}\n description={\n locale(\"OverrideGlobalThemeDesc\") ||\n \"When on, this resource uses its own primary colour and palette instead of dirk_lib's. Turn off to fall back to the global theme — your custom palette is kept.\"\n }\n checked={value.useOverride}\n onChange={(v) => set(\"useOverride\", v)}\n />\n\n <div\n style={{\n opacity: editable ? 1 : 0.4,\n pointerEvents: editable ? \"auto\" : \"none\",\n transition: \"opacity 0.15s\",\n }}\n >\n <GroupLabel label={locale(\"PrimaryColor\") || \"Primary Colour\"} />\n\n <Switch\n label={locale(\"UseCustomPalette\") || \"Use custom palette\"}\n size=\"md\"\n mt=\"xs\"\n checked={useCustom}\n onChange={(e) => set(\"primaryColor\", e.currentTarget.checked ? \"custom\" : \"dirk\")}\n styles={{\n label: {\n fontFamily: \"Akrobat Bold\",\n fontSize: \"0.65em\",\n letterSpacing: \"0.06em\",\n textTransform: \"uppercase\",\n color: \"rgba(255,255,255,0.35)\",\n },\n }}\n />\n\n <Flex gap=\"xs\" mt=\"xs\">\n {!useCustom && (\n <Select\n label={locale(\"MantinePalette\") || \"Mantine palette\"}\n size=\"xs\"\n style={{ flex: 1 }}\n value={value.primaryColor}\n data={MANTINE_COLOR_OPTIONS}\n allowDeselect={false}\n onChange={(v) => v && set(\"primaryColor\", v)}\n />\n )}\n <NumberInput\n label={locale(\"Shade\") || \"Shade\"}\n size=\"xs\"\n style={{ flex: 1 }}\n min={0}\n max={9}\n value={value.primaryShade}\n onChange={(v) => set(\"primaryShade\", Number(v))}\n />\n </Flex>\n\n {useCustom && (\n <>\n <Flex align=\"center\" justify=\"space-between\" mt=\"sm\">\n <Text\n ff=\"Akrobat Bold\"\n size=\"xxs\"\n tt=\"uppercase\"\n lts=\"0.07em\"\n c=\"rgba(255,255,255,0.2)\"\n >\n {locale(\"CustomPalette\") || \"Custom palette\"}\n </Text>\n <ActionIcon\n size=\"sm\"\n variant=\"subtle\"\n onClick={resetPalette}\n title={locale(\"ResetPalette\") || \"Reset palette\"}\n >\n <RotateCcw size=\"1.4vh\" />\n </ActionIcon>\n </Flex>\n\n <ColorInput\n label={locale(\"BaseColor\") || \"Base colour\"}\n size=\"xs\"\n value={value.customTheme[value.primaryShade] ?? value.customTheme[5] ?? \"#000000\"}\n onChange={generateFromBase}\n eyeDropperIcon={<></>}\n />\n\n <Flex gap=\"xxs\" mt=\"xxs\">\n {value.customTheme.map((swatch, i) => (\n <SwatchTile\n key={i}\n index={i}\n value={swatch}\n isPrimary={i === value.primaryShade}\n onChange={(v) => setSwatch(i, v)}\n />\n ))}\n </Flex>\n </>\n )}\n </div>\n </Flex>\n );\n}\n\nfunction SwatchTile({\n index,\n value,\n isPrimary,\n onChange,\n}: {\n index: number;\n value: string;\n isPrimary: boolean;\n onChange: (v: string) => void;\n}) {\n const [opened, setOpened] = useState(false);\n return (\n <Popover opened={opened} onChange={setOpened} position=\"bottom\" withArrow zIndex={10000}>\n <Popover.Target>\n <button\n onClick={() => setOpened((o) => !o)}\n title={`${index} · ${value}`}\n style={{\n flex: 1,\n aspectRatio: \"1 / 1\",\n background: value,\n border: isPrimary\n ? \"0.2vh solid rgba(255,255,255,0.85)\"\n : \"0.1vh solid rgba(255,255,255,0.15)\",\n borderRadius: \"0.4vh\",\n cursor: \"pointer\",\n padding: 0,\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"flex-end\",\n position: \"relative\",\n }}\n >\n <span\n style={{\n fontFamily: \"Akrobat Bold\",\n fontSize: \"0.9vh\",\n lineHeight: 1,\n padding: \"0.2vh 0.3vh\",\n color: \"rgba(0,0,0,0.55)\",\n background: \"rgba(255,255,255,0.55)\",\n borderRadius: \"0.25vh\",\n margin: \"0.2vh\",\n }}\n >\n {index}\n </span>\n </button>\n </Popover.Target>\n <Popover.Dropdown p=\"xs\">\n <ColorInput\n size=\"xs\"\n value={value}\n onChange={onChange}\n format=\"hex\"\n eyeDropperIcon={<></>}\n />\n </Popover.Dropdown>\n </Popover>\n );\n}\n","// Curated list of GTA V AnimPostFX screen effects passed to AnimpostfxPlay().\n// Sourced from https://docs.altv.mp/gta/articles/references/animpost-fx.html\n// plus a handful of community-known effects (ULP_*, common cutscene overlays)\n// that ship in scene defaults across dirk_multichar / fishing / drug labs.\n//\n// Effects are grouped by what they're commonly used for so a picker can\n// present them with section headings instead of one giant alphabetical list.\n// Add new entries by appending to the right group — the picker reflows\n// automatically.\n\nexport type GtaAnimPostFx = {\n /** Effect name passed to AnimpostfxPlay(). Case-sensitive. */\n name: string;\n /** Friendly label for UI display. Defaults to the name if absent. */\n label?: string;\n /** Group used for ordering and section headers. */\n group: GtaAnimPostFxGroup;\n};\n\nexport type GtaAnimPostFxGroup =\n | \"Wake Up / Sleep\"\n | \"Character Switch\"\n | \"Cinematic Push-In\"\n | \"Death / Fail\"\n | \"Heist\"\n | \"Minigame\"\n | \"Drug / Trip\"\n | \"Color Filter / Tint\"\n | \"Multiplayer\"\n | \"Misc\";\n\nexport const GTA_ANIM_POST_FX_GROUP_ORDER: GtaAnimPostFxGroup[] = [\n \"Wake Up / Sleep\",\n \"Character Switch\",\n \"Cinematic Push-In\",\n \"Death / Fail\",\n \"Heist\",\n \"Minigame\",\n \"Drug / Trip\",\n \"Color Filter / Tint\",\n \"Multiplayer\",\n \"Misc\",\n];\n\nexport const GTA_ANIM_POST_FX: GtaAnimPostFx[] = [\n // ── Wake Up / Sleep (community-known; not in altV docs) ────────────────────\n { name: \"ULP_PlayerWakeUp\", label: \"Player Wake Up\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndNeutral\", label: \"Minigame End — Neutral\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndFranklin\", label: \"Minigame End — Franklin\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndMichael\", label: \"Minigame End — Michael\", group: \"Wake Up / Sleep\" },\n { name: \"MinigameEndTrevor\", label: \"Minigame End — Trevor\", group: \"Wake Up / Sleep\" },\n\n // ── Character Switch (Franklin / Michael / Trevor / Neutral variants) ─────\n { name: \"SwitchHUDIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDOut\", group: \"Character Switch\" },\n { name: \"SwitchHUDFranklinIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDFranklinOut\", group: \"Character Switch\" },\n { name: \"SwitchHUDMichaelIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDMichaelOut\", group: \"Character Switch\" },\n { name: \"SwitchHUDTrevorIn\", group: \"Character Switch\" },\n { name: \"SwitchHUDTrevorOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenFranklin\", group: \"Character Switch\" },\n { name: \"SwitchOpenFranklinIn\", group: \"Character Switch\" },\n { name: \"SwitchOpenFranklinOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenMichaelIn\", group: \"Character Switch\" },\n { name: \"SwitchOpenMichaelMid\", group: \"Character Switch\" },\n { name: \"SwitchOpenMichaelOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenTrevorIn\", group: \"Character Switch\" },\n { name: \"SwitchOpenTrevorOut\", group: \"Character Switch\" },\n { name: \"SwitchOpenNeutralFIB5\", group: \"Character Switch\" },\n { name: \"SwitchOpenNeutralOutHeist\", group: \"Character Switch\" },\n { name: \"SwitchSceneFranklin\", group: \"Character Switch\" },\n { name: \"SwitchSceneMichael\", group: \"Character Switch\" },\n { name: \"SwitchSceneNeutral\", group: \"Character Switch\" },\n { name: \"SwitchSceneTrevor\", group: \"Character Switch\" },\n { name: \"SwitchShortFranklinIn\", group: \"Character Switch\" },\n { name: \"SwitchShortFranklinMid\", group: \"Character Switch\" },\n { name: \"SwitchShortMichaelIn\", group: \"Character Switch\" },\n { name: \"SwitchShortMichaelMid\", group: \"Character Switch\" },\n { name: \"SwitchShortNeutralIn\", group: \"Character Switch\" },\n { name: \"SwitchShortNeutralMid\", group: \"Character Switch\" },\n { name: \"SwitchShortTrevorIn\", group: \"Character Switch\" },\n { name: \"SwitchShortTrevorMid\", group: \"Character Switch\" },\n { name: \"switch_cam_1\", group: \"Character Switch\" },\n { name: \"switch_cam_2\", group: \"Character Switch\" },\n\n // ── Cinematic Push-In (slow zoom intro to a character) ────────────────────\n { name: \"CamPushInFranklin\", group: \"Cinematic Push-In\" },\n { name: \"CamPushInMichael\", group: \"Cinematic Push-In\" },\n { name: \"CamPushInTrevor\", group: \"Cinematic Push-In\" },\n { name: \"CamPushInNeutral\", group: \"Cinematic Push-In\" },\n { name: \"BeastIntroScene\", label: \"Beast Intro\", group: \"Cinematic Push-In\" },\n { name: \"BeastLaunch\", group: \"Cinematic Push-In\" },\n { name: \"BeastTransition\", group: \"Cinematic Push-In\" },\n\n // ── Death / Fail (red tint, slow-mo blur) ─────────────────────────────────\n { name: \"DeathFailNeutralIn\", group: \"Death / Fail\" },\n { name: \"DeathFailFranklinIn\", group: \"Death / Fail\" },\n { name: \"DeathFailMichaelIn\", group: \"Death / Fail\" },\n { name: \"DeathFailTrevorIn\", group: \"Death / Fail\" },\n { name: \"DeathFailMPIn\", label: \"Death Fail — MP\", group: \"Death / Fail\" },\n { name: \"DeathFailMPDark\", label: \"Death Fail — MP Dark\", group: \"Death / Fail\" },\n { name: \"DeathFailOut\", group: \"Death / Fail\" },\n { name: \"Rampage\", group: \"Death / Fail\" },\n { name: \"RampageOut\", group: \"Death / Fail\" },\n\n // ── Heist (celebration / locate / pass) ───────────────────────────────────\n { name: \"HeistCelebEnd\", group: \"Heist\" },\n { name: \"HeistCelebPass\", group: \"Heist\" },\n { name: \"HeistCelebPassBW\", label: \"Heist Celeb Pass (B/W)\", group: \"Heist\" },\n { name: \"HeistCelebToast\", group: \"Heist\" },\n { name: \"HeistLocate\", group: \"Heist\" },\n { name: \"HeistTripSkipFade\", group: \"Heist\" },\n\n // ── Minigame / Menu ───────────────────────────────────────────────────────\n { name: \"MenuMGIn\", group: \"Minigame\" },\n { name: \"MenuMGHeistIn\", group: \"Minigame\" },\n { name: \"MenuMGHeistIntro\", group: \"Minigame\" },\n { name: \"MenuMGHeistOut\", group: \"Minigame\" },\n { name: \"MenuMGHeistTint\", group: \"Minigame\" },\n { name: \"MenuMGSelectionIn\", group: \"Minigame\" },\n { name: \"MenuMGSelectionTint\", group: \"Minigame\" },\n { name: \"MenuMGTournamentIn\", group: \"Minigame\" },\n { name: \"MenuMGTournamentTint\", group: \"Minigame\" },\n { name: \"MinigameTransitionIn\", group: \"Minigame\" },\n { name: \"MinigameTransitionOut\", group: \"Minigame\" },\n\n // ── Drug / Trip (psychedelic, blur, distortion) ───────────────────────────\n { name: \"DMT_flight\", group: \"Drug / Trip\" },\n { name: \"DMT_flight_intro\", group: \"Drug / Trip\" },\n { name: \"PeyoteIn\", group: \"Drug / Trip\" },\n { name: \"PeyoteOut\", group: \"Drug / Trip\" },\n { name: \"PeyoteEndIn\", group: \"Drug / Trip\" },\n { name: \"PeyoteEndOut\", group: \"Drug / Trip\" },\n { name: \"DrugsDrivingIn\", group: \"Drug / Trip\" },\n { name: \"DrugsDrivingOut\", group: \"Drug / Trip\" },\n { name: \"DrugsMichaelAliensFight\", group: \"Drug / Trip\" },\n { name: \"DrugsMichaelAliensFightIn\", group: \"Drug / Trip\" },\n { name: \"DrugsMichaelAliensFightOut\", group: \"Drug / Trip\" },\n { name: \"DrugsTrevorClownsFight\", group: \"Drug / Trip\" },\n { name: \"DrugsTrevorClownsFightIn\",group: \"Drug / Trip\" },\n { name: \"DrugsTrevorClownsFightOut\", group: \"Drug / Trip\" },\n { name: \"ChopVision\", label: \"Chop Vision (dog)\", group: \"Drug / Trip\" },\n\n // ── Color Filter / Tint (one-off and biker formation filters) ─────────────\n { name: \"PPFilter\", group: \"Color Filter / Tint\" },\n { name: \"PPFilterOut\", group: \"Color Filter / Tint\" },\n { name: \"PPGreen\", group: \"Color Filter / Tint\" },\n { name: \"PPGreenOut\", group: \"Color Filter / Tint\" },\n { name: \"PPOrange\", group: \"Color Filter / Tint\" },\n { name: \"PPOrangeOut\", group: \"Color Filter / Tint\" },\n { name: \"PPPink\", group: \"Color Filter / Tint\" },\n { name: \"PPPinkOut\", group: \"Color Filter / Tint\" },\n { name: \"PPPurple\", group: \"Color Filter / Tint\" },\n { name: \"PPPurpleOut\", group: \"Color Filter / Tint\" },\n { name: \"BikerFilter\", group: \"Color Filter / Tint\" },\n { name: \"BikerFilterOut\", group: \"Color Filter / Tint\" },\n { name: \"BikerFormation\", group: \"Color Filter / Tint\" },\n { name: \"BikerFormationOut\", group: \"Color Filter / Tint\" },\n { name: \"InchOrange\", group: \"Color Filter / Tint\" },\n { name: \"InchOrangeOut\", group: \"Color Filter / Tint\" },\n { name: \"InchPurple\", group: \"Color Filter / Tint\" },\n { name: \"InchPurpleOut\", group: \"Color Filter / Tint\" },\n { name: \"InchPickup\", group: \"Color Filter / Tint\" },\n { name: \"InchPickupOut\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerGreen\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerGreenOut\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerPink\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerPinkOut\", group: \"Color Filter / Tint\" },\n { name: \"TinyRacerIntroCam\", group: \"Color Filter / Tint\" },\n { name: \"DeadlineNeon\", group: \"Color Filter / Tint\" },\n\n // ── Multiplayer (celeb, killstreak, race, etc.) ───────────────────────────\n { name: \"MP_Celeb_Win\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Win_Out\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Lose\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Lose_Out\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Preload\", group: \"Multiplayer\" },\n { name: \"MP_Celeb_Preload_Fade\", group: \"Multiplayer\" },\n { name: \"MP_Bull_tost\", group: \"Multiplayer\" },\n { name: \"MP_Bull_tost_Out\", group: \"Multiplayer\" },\n { name: \"MP_Killstreak\", group: \"Multiplayer\" },\n { name: \"MP_Killstreak_Out\", group: \"Multiplayer\" },\n { name: \"MP_Loser_Streak_Out\", group: \"Multiplayer\" },\n { name: \"MP_OrbitalCannon\", group: \"Multiplayer\" },\n { name: \"MP_Powerplay\", group: \"Multiplayer\" },\n { name: \"MP_Powerplay_Out\", group: \"Multiplayer\" },\n { name: \"MP_SmugglerCheckpoint\", group: \"Multiplayer\" },\n { name: \"MP_TransformRaceFlash\", group: \"Multiplayer\" },\n { name: \"MP_WarpCheckpoint\", group: \"Multiplayer\" },\n { name: \"MP_corona_switch\", group: \"Multiplayer\" },\n { name: \"MP_intro_logo\", group: \"Multiplayer\" },\n { name: \"MP_job_load\", group: \"Multiplayer\" },\n { name: \"MP_race_crash\", group: \"Multiplayer\" },\n\n // ── Misc (success notifs, special weapons, sniper / pause / explosions) ───\n { name: \"SuccessFranklin\", group: \"Misc\" },\n { name: \"SuccessMichael\", group: \"Misc\" },\n { name: \"SuccessNeutral\", group: \"Misc\" },\n { name: \"SuccessTrevor\", group: \"Misc\" },\n { name: \"FocusIn\", group: \"Misc\" },\n { name: \"FocusOut\", group: \"Misc\" },\n { name: \"CrossLine\", group: \"Misc\" },\n { name: \"CrossLineOut\", group: \"Misc\" },\n { name: \"SniperOverlay\", group: \"Misc\" },\n { name: \"ExplosionJosh3\", group: \"Misc\" },\n { name: \"WeaponUpgrade\", group: \"Misc\" },\n { name: \"Dont_tazeme_bro\", label: \"Don't Taze Me Bro\", group: \"Misc\" },\n { name: \"LostTimeDay\", group: \"Misc\" },\n { name: \"LostTimeNight\", group: \"Misc\" },\n { name: \"PauseMenuOut\", group: \"Misc\" },\n { name: \"pennedIn\", group: \"Misc\" },\n { name: \"PennedInOut\", group: \"Misc\" },\n { name: \"RaceTurbo\", group: \"Misc\" },\n { name: \"DefaultFlash\", group: \"Misc\" },\n];\n\nexport function formatGtaAnimPostFx(name: string): string {\n const entry = GTA_ANIM_POST_FX.find((fx) => fx.name === name);\n return entry?.label ?? name;\n}\n","// FiveM AnimPostFX picker. Curated list from the altV docs + a few common\n// community-known overlays (ULP_PlayerWakeUp etc.) grouped by use-case so\n// admins building cutscenes can find \"the wake-up effect\" without reading\n// 150 raw effect names.\n//\n// Single-value Select (the AnimpostfxPlay native takes one effect name).\n// Custom uncatalogued values in `value` are preserved under a \"Custom\"\n// group so old data with effect names we haven't catalogued still display.\n//\n// For full freedom (typing any arbitrary effect name), pass `creatable` —\n// users can hit Enter on a search term to add it as a custom value.\n\nimport { Select } from \"@mantine/core\";\nimport type { SelectProps } from \"@mantine/core\";\nimport {\n GTA_ANIM_POST_FX,\n GTA_ANIM_POST_FX_GROUP_ORDER,\n formatGtaAnimPostFx,\n type GtaAnimPostFx,\n type GtaAnimPostFxGroup,\n} from \"@/utils/gtaAnimPostFx\";\n\nfunction buildGroupedData(extraNames: string[] = []) {\n const groups = new Map<GtaAnimPostFxGroup, GtaAnimPostFx[]>();\n const seen = new Set<string>();\n for (const fx of GTA_ANIM_POST_FX) {\n if (seen.has(fx.name)) continue;\n seen.add(fx.name);\n if (!groups.has(fx.group)) groups.set(fx.group, []);\n groups.get(fx.group)!.push(fx);\n }\n\n const data = GTA_ANIM_POST_FX_GROUP_ORDER.flatMap((g) => {\n const items = groups.get(g);\n if (!items || items.length === 0) return [];\n return [\n {\n group: g,\n items: items.map((fx) => ({\n value: fx.name,\n label: formatGtaAnimPostFx(fx.name),\n })),\n },\n ];\n });\n\n // Surface custom values so the dropdown still shows the current selection.\n // Mantine drops chips silently when the value isn't in the data array.\n const knownNames = new Set(GTA_ANIM_POST_FX.map((fx) => fx.name));\n const customs = extraNames.filter((n) => n && !knownNames.has(n));\n if (customs.length > 0) {\n data.push({\n group: \"Custom\" as GtaAnimPostFxGroup,\n items: customs.map((n) => ({ value: n, label: n })),\n });\n }\n\n return data;\n}\n\nexport type AnimPostFxSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\n /** Current effect name. Empty string = no effect selected. */\n value: string;\n onChange: (name: string) => void;\n};\n\nexport function AnimPostFxSelect({\n value,\n onChange,\n label = \"Screen FX\",\n size = \"xs\",\n searchable = true,\n clearable = true,\n ...rest\n}: AnimPostFxSelectProps) {\n const data = buildGroupedData([value]);\n return (\n <Select\n label={label}\n size={size}\n searchable={searchable}\n clearable={clearable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching effects\"\n placeholder=\"Pick an effect...\"\n {...rest}\n data={data}\n value={value || null}\n onChange={(v) => onChange(v ?? \"\")}\n />\n );\n}\n","// Curated list of GTA V scenario identifiers passed to\n// TaskStartScenarioInPlace / TaskStartScenarioAtPosition. Sourced from\n// https://wiki.rage.mp/wiki/Scenarios via the DurtyFree gta-v-data-dumps\n// mirror (scenariosCompact.json).\n//\n// Scenarios are grouped by what the ped is *doing* so a picker can present\n// section headings instead of one giant alphabetical list of ~250 entries.\n// Add new entries by appending to the right group — the picker reflows\n// automatically. Group order = the order they appear in a dropdown.\n\nexport type GtaScenario = {\n /** Scenario identifier passed to the TaskStartScenario* natives. Case-sensitive. */\n name: string;\n /** Friendly label for UI display. Falls back to the auto-formatted name. */\n label?: string;\n /** Group used for ordering and section headers. */\n group: GtaScenarioGroup;\n};\n\nexport type GtaScenarioGroup =\n | \"Sitting\"\n | \"Standing & Idle\"\n | \"Eating & Drinking\"\n | \"Smoking & Substances\"\n | \"Working\"\n | \"Sports & Fitness\"\n | \"Cops & Security\"\n | \"Crime & Streets\"\n | \"Tourists & Crowds\"\n | \"Props (Misc)\"\n | \"Movement\"\n | \"Animals\"\n | \"Vehicles\"\n | \"Code (Advanced)\";\n\nexport const GTA_SCENARIO_GROUP_ORDER: GtaScenarioGroup[] = [\n \"Sitting\",\n \"Standing & Idle\",\n \"Eating & Drinking\",\n \"Smoking & Substances\",\n \"Working\",\n \"Sports & Fitness\",\n \"Cops & Security\",\n \"Crime & Streets\",\n \"Tourists & Crowds\",\n \"Props (Misc)\",\n \"Movement\",\n \"Animals\",\n \"Vehicles\",\n \"Code (Advanced)\",\n];\n\nexport const GTA_SCENARIOS: GtaScenario[] = [\n // ── Sitting ────────────────────────────────────────────────────────────────\n { name: \"PROP_HUMAN_SEAT_ARMCHAIR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BAR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_FACILITY\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK_FACILITY\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK_BEER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_FOOD\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BENCH_FOOD_FACILITY\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_BUS_STOP_WAIT\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_DRINK\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_DRINK_BEER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_FOOD\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_UPRIGHT\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_UPRIGHT_SHOWROOM\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_CHAIR_MP_PLAYER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_COMPUTER\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_COMPUTER_LOW\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_DECKCHAIR\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_DECKCHAIR_DRINK\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_SEWING\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_STRIP_WATCH\", group: \"Sitting\" },\n { name: \"PROP_HUMAN_SEAT_SUNLOUNGER\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_LEDGE\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_LEDGE_EATING\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_STEPS\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_WALL\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_WALL_EATING\", group: \"Sitting\" },\n { name: \"WORLD_HUMAN_SEAT_WALL_TABLET\", group: \"Sitting\" },\n\n // ── Standing & Idle ────────────────────────────────────────────────────────\n { name: \"Standing\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_HANG_OUT_STREET\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_LEANING\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_LEANING_CASINO_TERRACE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_FACILITY\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT_FACILITY\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_FACILITY\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_UPRIGHT\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_FIRE\", group: \"Standing & Idle\" },\n { name: \"WORLD_HUMAN_STAND_FISHING\", group: \"Standing & Idle\" },\n { name: \"PROP_HUMAN_STAND_IMPATIENT\", group: \"Standing & Idle\" },\n\n // ── Eating & Drinking ──────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_DRINKING\", group: \"Eating & Drinking\" },\n { name: \"WORLD_HUMAN_DRINKING_FACILITY\", group: \"Eating & Drinking\" },\n { name: \"WORLD_HUMAN_DRINKING_CASINO_TERRACE\", group: \"Eating & Drinking\" },\n { name: \"WORLD_HUMAN_PICNIC\", group: \"Eating & Drinking\" },\n\n // ── Smoking & Substances ───────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_AA_COFFEE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_AA_SMOKE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING_CLUBHOUSE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING_POT\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_SMOKING_POT_CLUBHOUSE\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_STUPOR\", group: \"Smoking & Substances\" },\n { name: \"WORLD_HUMAN_STUPOR_CLUBHOUSE\", group: \"Smoking & Substances\" },\n\n // ── Working ────────────────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_CAR_PARK_ATTENDANT\", group: \"Working\" },\n { name: \"WORLD_HUMAN_CLIPBOARD\", group: \"Working\" },\n { name: \"WORLD_HUMAN_CLIPBOARD_FACILITY\", group: \"Working\" },\n { name: \"WORLD_HUMAN_CONST_DRILL\", group: \"Working\" },\n { name: \"WORLD_HUMAN_GARDENER_LEAF_BLOWER\", group: \"Working\" },\n { name: \"WORLD_HUMAN_GARDENER_PLANT\", group: \"Working\" },\n { name: \"WORLD_HUMAN_HAMMERING\", group: \"Working\" },\n { name: \"WORLD_HUMAN_JANITOR\", group: \"Working\" },\n { name: \"WORLD_HUMAN_MAID_CLEAN\", group: \"Working\" },\n { name: \"WORLD_HUMAN_MUSICIAN\", group: \"Working\" },\n { name: \"WORLD_HUMAN_VALET\", group: \"Working\" },\n { name: \"WORLD_HUMAN_VEHICLE_MECHANIC\", group: \"Working\" },\n { name: \"WORLD_HUMAN_WELDING\", group: \"Working\" },\n\n // ── Sports & Fitness ───────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_GOLF_PLAYER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_HIKER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_HIKER_STANDING\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_JOG\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_JOG_STANDING\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_MUSCLE_FLEX\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_MUSCLE_FREE_WEIGHTS\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_POWER_WALKER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_PUSH_UPS\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SIT_UPS\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SUNBATHE\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SUNBATHE_BACK\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_SWIMMING\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_TENNIS_PLAYER\", group: \"Sports & Fitness\" },\n { name: \"WORLD_HUMAN_YOGA\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS_ARMY\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS_PRISON\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS\", group: \"Sports & Fitness\" },\n { name: \"PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS_PRISON\", group: \"Sports & Fitness\" },\n\n // ── Cops & Security ────────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_COP_IDLES\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_PATROL\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_CASINO\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_CLUBHOUSE\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_FACILITY\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_GUARD_STAND_ARMY\", group: \"Cops & Security\" },\n { name: \"WORLD_HUMAN_SECURITY_SHINE_TORCH\", group: \"Cops & Security\" },\n\n // ── Crime & Streets ────────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_DRUG_DEALER\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_DEALER_HARD\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_FIELD_WORKERS_RAKE\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_FIELD_WORKERS_WEEDING\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_PROCESSORS_COKE\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_DRUG_PROCESSORS_WEED\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_PROSTITUTE_HIGH_CLASS\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_PROSTITUTE_LOW_CLASS\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_FREEWAY\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_SLUMPED\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_STANDING\", group: \"Crime & Streets\" },\n { name: \"WORLD_HUMAN_BUM_WASH\", group: \"Crime & Streets\" },\n { name: \"PROP_HUMAN_BUM_BIN\", group: \"Crime & Streets\" },\n { name: \"PROP_HUMAN_BUM_SHOPPING_CART\", group: \"Crime & Streets\" },\n\n // ── Tourists & Crowds ──────────────────────────────────────────────────────\n { name: \"WORLD_HUMAN_BINOCULARS\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_CHEERING\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_HUMAN_STATUE\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_INSPECT_CROUCH\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_INSPECT_STAND\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_MOBILE_FILM_SHOCKING\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_PAPARAZZI\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_PARTYING\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_STRIP_WATCH_STAND\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_SUPERHERO\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_TOURIST_MAP\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_TOURIST_MOBILE\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_WINDOW_SHOP_BROWSE\", group: \"Tourists & Crowds\" },\n { name: \"WORLD_HUMAN_WINDOW_SHOP_BROWSE_SHOWROOM\", group: \"Tourists & Crowds\" },\n\n // ── Props (Misc) ───────────────────────────────────────────────────────────\n { name: \"PROP_HUMAN_ATM\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_BBQ\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_PARKING_METER\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_MOVIE_BULB\", group: \"Props (Misc)\" },\n { name: \"PROP_HUMAN_MOVIE_STUDIO_LIGHT\", group: \"Props (Misc)\" },\n { name: \"PROP_BIRD_IN_TREE\", group: \"Props (Misc)\" },\n { name: \"PROP_BIRD_TELEGRAPH_POLE\", group: \"Props (Misc)\" },\n\n // ── Movement ───────────────────────────────────────────────────────────────\n { name: \"Walk\", group: \"Movement\" },\n { name: \"Walk_Facility\", group: \"Movement\" },\n\n // ── Animals ────────────────────────────────────────────────────────────────\n { name: \"WORLD_BOAR_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_CAT_SLEEPING_GROUND\", group: \"Animals\" },\n { name: \"WORLD_CAT_SLEEPING_LEDGE\", group: \"Animals\" },\n { name: \"WORLD_COW_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_HOWL\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_REST\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_WANDER\", group: \"Animals\" },\n { name: \"WORLD_COYOTE_WALK\", group: \"Animals\" },\n { name: \"WORLD_CHICKENHAWK_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_CHICKENHAWK_STANDING\", group: \"Animals\" },\n { name: \"WORLD_CORMORANT_STANDING\", group: \"Animals\" },\n { name: \"WORLD_CROW_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_CROW_STANDING\", group: \"Animals\" },\n { name: \"WORLD_DEER_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_ROTTWEILER\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_RETRIEVER\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_SHEPHERD\", group: \"Animals\" },\n { name: \"WORLD_DOG_BARKING_SMALL\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_ROTTWEILER\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_RETRIEVER\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_SHEPHERD\", group: \"Animals\" },\n { name: \"WORLD_DOG_SITTING_SMALL\", group: \"Animals\" },\n { name: \"WORLD_DOLPHIN_SWIM\", group: \"Animals\" },\n { name: \"WORLD_FISH_FLEE\", group: \"Animals\" },\n { name: \"WORLD_FISH_IDLE\", group: \"Animals\" },\n { name: \"WORLD_GULL_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_GULL_STANDING\", group: \"Animals\" },\n { name: \"WORLD_HEN_FLEE\", group: \"Animals\" },\n { name: \"WORLD_HEN_PECKING\", group: \"Animals\" },\n { name: \"WORLD_HEN_STANDING\", group: \"Animals\" },\n { name: \"WORLD_MOUNTAIN_LION_REST\", group: \"Animals\" },\n { name: \"WORLD_MOUNTAIN_LION_WANDER\", group: \"Animals\" },\n { name: \"WORLD_ORCA_SWIM\", group: \"Animals\" },\n { name: \"WORLD_PIG_GRAZING\", group: \"Animals\" },\n { name: \"WORLD_PIGEON_FEEDING\", group: \"Animals\" },\n { name: \"WORLD_PIGEON_STANDING\", group: \"Animals\" },\n { name: \"WORLD_RABBIT_EATING\", group: \"Animals\" },\n { name: \"WORLD_RABBIT_FLEE\", group: \"Animals\" },\n { name: \"WORLD_RATS_EATING\", group: \"Animals\" },\n { name: \"WORLD_RATS_FLEEING\", group: \"Animals\" },\n { name: \"WORLD_SHARK_SWIM\", group: \"Animals\" },\n { name: \"WORLD_SHARK_HAMMERHEAD_SWIM\", group: \"Animals\" },\n { name: \"WORLD_STINGRAY_SWIM\", group: \"Animals\" },\n { name: \"WORLD_WHALE_SWIM\", group: \"Animals\" },\n\n // ── Vehicles ───────────────────────────────────────────────────────────────\n { name: \"DRIVE\", group: \"Vehicles\" },\n { name: \"PARK_VEHICLE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_ATTRACTOR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_AMBULANCE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_BALLAS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_FAMILY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_HARMONY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_VAGOS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_MOUNTAIN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BICYCLE_ROAD\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BIKE_OFF_ROAD_RACE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BIKER\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BOAT_IDLE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BOAT_IDLE_ALAMO\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BOAT_IDLE_MARQUIS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BROKEN_DOWN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_BUSINESSMEN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_CLUCKIN_BELL_TRAILER\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_CONSTRUCTION_SOLO\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_CONSTRUCTION_PASSENGERS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DISTANT_EMPTY_GROUND\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DRIVE_PASSENGERS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DRIVE_PASSENGERS_LIMITED\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_DRIVE_SOLO\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_EMPTY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_FARM_WORKER\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_FIRE_TRUCK\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_HELI_LIFEGUARD\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MARIACHI\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MECHANIC\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MILITARY_PLANES_BIG\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_MILITARY_PLANES_SMALL\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_PARK_PARALLEL\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_PASSENGER_EXIT\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_POLICE_BIKE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_POLICE_CAR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_POLICE_NEXT_TO_CAR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_QUARRY\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_SALTON\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_SALTON_DIRT_BIKE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_SECURITY_CAR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_STREETRACE\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TANDL\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TOURBUS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TOURIST\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRACTOR\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRACTOR_BEACH\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRUCK_LOGS\", group: \"Vehicles\" },\n { name: \"WORLD_VEHICLE_TRUCKS_TRAILERS\", group: \"Vehicles\" },\n\n // ── Code (Advanced) ────────────────────────────────────────────────────────\n // These are engine-internal scenarios — rarely the right pick for cinematic\n // ped placements, but exposed because the game-data dump includes them.\n { name: \"CODE_HUMAN_COWER\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_CROSS_ROAD_WAIT\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_PARK_CAR\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_MEDIC_KNEEL\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_MEDIC_TEND_TO_DEAD\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_MEDIC_TIME_OF_DEATH\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_POLICE_CROWD_CONTROL\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_POLICE_INVESTIGATE\", group: \"Code (Advanced)\" },\n { name: \"CODE_HUMAN_STAND_COWER\", group: \"Code (Advanced)\" },\n { name: \"CHAINING_ENTRY\", group: \"Code (Advanced)\" },\n { name: \"CHAINING_EXIT\", group: \"Code (Advanced)\" },\n { name: \"EAR_TO_TEXT\", group: \"Code (Advanced)\" },\n { name: \"EAR_TO_TEXT_FAT\", group: \"Code (Advanced)\" },\n { name: \"WORLD_LOOKAT_POINT\", group: \"Code (Advanced)\" },\n];\n\n// ── Display helpers ──────────────────────────────────────────────────────────\n\n// \"PROP_HUMAN_SEAT_CHAIR_FOOD\" → \"Seat Chair Food\". Strips the WORLD_/PROP_/\n// CODE_ prefix and the redundant HUMAN_/BIRD_/VEHICLE_ infix so the label\n// reads naturally, then title-cases each underscore-separated word.\nconst PREFIX_RE = /^(WORLD|PROP|CODE)_(HUMAN_|BIRD_|VEHICLE_|CAT_|DOG_|COYOTE_|FISH_|HEN_|GULL_|CROW_|RABBIT_|RATS_|SHARK_|PIGEON_|ORCA_|WHALE_|STINGRAY_|DOLPHIN_|MOUNTAIN_LION_|PIG_|COW_|DEER_|BOAR_|CHICKENHAWK_|CORMORANT_)?/;\n\nexport function formatGtaScenario(name: string): string {\n if (!name) return \"\";\n const stripped = name.replace(PREFIX_RE, \"\");\n const cleaned = stripped.length > 0 ? stripped : name;\n return cleaned\n .toLowerCase()\n .split(\"_\")\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n","// FiveM scenario picker. Curated list from\n// https://wiki.rage.mp/wiki/Scenarios (via DurtyFree's data dump) grouped by\n// what the ped is actually doing — Sitting, Working, Sports, etc. — so admins\n// building a scene can find \"the chair with food\" without scrolling 250\n// alphabetical rows.\n//\n// Single-value Select (TaskStartScenarioInPlace/AtPosition takes one name).\n// Custom values in `value` that don't match a catalogued scenario are kept\n// in a \"Custom\" group so externally-loaded scenario keys still display.\n\nimport { Select } from \"@mantine/core\";\nimport type { SelectProps } from \"@mantine/core\";\nimport {\n GTA_SCENARIOS,\n GTA_SCENARIO_GROUP_ORDER,\n formatGtaScenario,\n type GtaScenario,\n type GtaScenarioGroup,\n} from \"@/utils/gtaScenarios\";\n\nfunction buildGroupedData(extraNames: string[] = []) {\n const groups = new Map<GtaScenarioGroup, GtaScenario[]>();\n const seen = new Set<string>();\n for (const sc of GTA_SCENARIOS) {\n if (seen.has(sc.name)) continue;\n seen.add(sc.name);\n if (!groups.has(sc.group)) groups.set(sc.group, []);\n groups.get(sc.group)!.push(sc);\n }\n\n const data = GTA_SCENARIO_GROUP_ORDER.flatMap((g) => {\n const items = groups.get(g);\n if (!items || items.length === 0) return [];\n return [\n {\n group: g,\n items: items.map((sc) => ({\n value: sc.name,\n label: sc.label ?? formatGtaScenario(sc.name),\n })),\n },\n ];\n });\n\n // Surface custom values so the dropdown still shows the current selection.\n // Mantine silently drops chips when the value isn't in the data array.\n const knownNames = new Set(GTA_SCENARIOS.map((sc) => sc.name));\n const customs = extraNames.filter((n) => n && !knownNames.has(n));\n if (customs.length > 0) {\n data.push({\n group: \"Custom\" as GtaScenarioGroup,\n items: customs.map((n) => ({ value: n, label: n })),\n });\n }\n\n return data;\n}\n\nexport type ScenarioSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\n /** Current scenario name. Empty string = no scenario selected. */\n value: string;\n onChange: (name: string) => void;\n};\n\nexport function ScenarioSelect({\n value,\n onChange,\n label = \"Scenario\",\n size = \"xs\",\n searchable = true,\n clearable = true,\n ...rest\n}: ScenarioSelectProps) {\n const data = buildGroupedData([value]);\n return (\n <Select\n label={label}\n size={size}\n searchable={searchable}\n clearable={clearable}\n maxDropdownHeight={320}\n nothingFoundMessage=\"No matching scenarios\"\n placeholder=\"Pick a scenario...\"\n {...rest}\n data={data}\n value={value || null}\n onChange={(v) => onChange(v ?? \"\")}\n />\n );\n}\n","// Discord role picker. Mantine Select / MultiSelect populated from a NUI\n// callback the consumer registers (which in turn calls lib.discord.getRoles\n// on the server). Each role shows its actual Discord colour as a swatch.\n//\n// The consumer wires up the NUI side once:\n//\n// RegisterNuiCallback('LIST_DISCORD_ROLES', function(_, cb)\n// local roles, err = lib.callback.await('myresource:listDiscordRoles')\n// cb({ ok = roles ~= nil, _error = err, roles = roles or {} })\n// end)\n//\n// server callback:\n// lib.callback.register('myresource:listDiscordRoles', function(src)\n// -- (admin perm check here)\n// local roles, err = lib.discord.getRoles()\n// return roles, err\n// end)\n//\n// And then renders:\n// <DiscordRoleSelect endpoint=\"LIST_DISCORD_ROLES\" value={...} onChange={...} />\n//\n// When lib.discord returns 'NotConfigured' the picker swaps in a friendly\n// banner pointing the admin at /dirk_lib so they go set credentials.\n\nimport { ActionIcon, Flex, MultiSelect, Select, Text } from \"@mantine/core\";\nimport type { ComboboxItem, SelectProps, MultiSelectProps } from \"@mantine/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { AlertTriangle, RefreshCw } from \"lucide-react\";\nimport { fetchNui } from \"@/utils/fetchNui\";\nimport { locale } from \"@/utils/locales\";\n\n// locale() returns the **key itself** on miss (see utils/locales.ts), so the\n// classic `locale(k) || fallback` pattern never falls through. This helper\n// returns `fallback` whenever locale gave us the key back unchanged.\nconst t = (key: string, fallback: string) => {\n const v = locale(key);\n return v === key ? fallback : v;\n};\n\n// Subset of the Discord role payload we actually use. Everything else\n// (mentionable, hoist, permissions, etc.) is on the server-side cache;\n// the picker only needs id/name/colour/position.\nexport type DiscordRole = {\n id: string;\n name: string;\n color: number; // 24-bit integer; 0 = no colour (Discord default)\n position?: number;\n};\n\ntype ListResponse = {\n ok: boolean;\n _error?: string;\n roles?: DiscordRole[];\n};\n\nfunction decimalToHex(color: number): string | null {\n if (!color || color === 0) return null;\n return \"#\" + color.toString(16).padStart(6, \"0\");\n}\n\n// Custom option renderer — swatch + role name. Falls back to a neutral\n// grey dot when the role has no Discord colour set (decimal 0).\nfunction RoleOption({ role }: { role: DiscordRole }) {\n const swatch = decimalToHex(role.color) || \"rgba(255,255,255,0.25)\";\n return (\n <Flex align=\"center\" gap=\"0.6vh\">\n <div\n style={{\n width: \"1vh\",\n height: \"1vh\",\n borderRadius: \"50%\",\n background: swatch,\n flexShrink: 0,\n boxShadow: role.color ? `0 0 0.4vh ${swatch}` : undefined,\n }}\n />\n <Text size=\"xs\" c=\"rgba(255,255,255,0.9)\">\n {role.name}\n </Text>\n </Flex>\n );\n}\n\n// Styling shared by the not-configured stand-in — a disabled Select that\n// shares the exact same shell as a real picker, so neighbouring inputs\n// (e.g. a NumberInput sitting next to us in a flex row) line up. The tint\n// is a subtle amber so the admin notices it's degraded without losing\n// the form's visual rhythm.\nconst NOT_CONFIGURED_TINT = \"rgba(255,184,0,0.35)\";\nconst NOT_CONFIGURED_FILL = \"rgba(255,184,0,0.05)\";\n\ntype SharedProps = {\n /** NUI callback name registered by the consumer that returns ListResponse. */\n endpoint: string;\n /** Optional label / size / placeholder forwarded to the underlying Mantine Select. */\n label?: React.ReactNode;\n size?: SelectProps[\"size\"];\n placeholder?: string;\n disabled?: boolean;\n /** Style props applied to the wrapping Select/MultiSelect. */\n style?: React.CSSProperties;\n styles?: SelectProps[\"styles\"];\n};\n\ntype SingleProps = SharedProps & {\n multi?: false;\n value: string | null;\n onChange: (id: string | null) => void;\n};\n\ntype MultiProps = SharedProps & {\n multi: true;\n value: string[];\n onChange: (ids: string[]) => void;\n};\n\nexport type DiscordRoleSelectProps = SingleProps | MultiProps;\n\nexport function DiscordRoleSelect(props: DiscordRoleSelectProps) {\n const { endpoint, label, size = \"xs\", placeholder, disabled, style, styles } = props;\n const [roles, setRoles] = useState<DiscordRole[] | null>(null);\n const [loading, setLoading] = useState(false);\n const [errorCode, setErrorCode] = useState<string | null>(null);\n\n const refresh = async () => {\n setLoading(true);\n try {\n const res = await fetchNui<ListResponse>(endpoint, {}, {\n // Browser dev fallback so the component renders something useful\n // outside FiveM.\n ok: true,\n roles: [\n { id: \"1\", name: \"Admin\", color: 0xed4245, position: 5 },\n { id: \"2\", name: \"VIP Gold\", color: 0xfaa61a, position: 4 },\n { id: \"3\", name: \"Member\", color: 0x57f287, position: 3 },\n { id: \"4\", name: \"Guest\", color: 0, position: 2 },\n ],\n });\n if (res?.ok) {\n setRoles(res.roles ?? []);\n setErrorCode(null);\n } else {\n setRoles(null);\n setErrorCode(res?._error || \"FetchFailed\");\n }\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n refresh();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [endpoint]);\n\n const rolesById = useMemo(() => {\n const map: Record<string, DiscordRole> = {};\n for (const r of roles ?? []) map[r.id] = r;\n return map;\n }, [roles]);\n\n // Show a disabled stand-in instead of a broken empty picker. Uses the\n // exact same Mantine Select/MultiSelect shell as the real component so\n // neighbouring inputs (NumberInputs in the same flex row, etc.) line up\n // pixel-for-pixel — only the input border tints amber to signal \"not\n // wired up yet, see /dirk_lib\".\n if (errorCode === \"NotConfigured\") {\n const notConfiguredPlaceholder = t(\n \"DiscordNotConfigured\",\n \"Not configured — set in /dirk_lib\",\n );\n const notConfiguredStyles = {\n ...(styles as Record<string, unknown> | undefined),\n input: {\n ...((styles as { input?: Record<string, unknown> } | undefined)?.input ?? {}),\n borderColor: NOT_CONFIGURED_TINT,\n backgroundColor: NOT_CONFIGURED_FILL,\n },\n } as SelectProps[\"styles\"];\n const warnIcon = (\n <AlertTriangle size=\"1.2vh\" color={NOT_CONFIGURED_TINT.replace(/0\\.35\\)$/, \"0.85)\")} />\n );\n if (props.multi) {\n return (\n <MultiSelect\n label={label}\n size={size}\n placeholder={notConfiguredPlaceholder}\n data={[]}\n value={[]}\n onChange={() => {}}\n disabled\n rightSection={warnIcon}\n style={style}\n styles={notConfiguredStyles as MultiSelectProps[\"styles\"]}\n />\n );\n }\n return (\n <Select\n label={label}\n size={size}\n placeholder={notConfiguredPlaceholder}\n data={[]}\n value={null}\n onChange={() => {}}\n disabled\n rightSection={warnIcon}\n style={style}\n styles={notConfiguredStyles}\n />\n );\n }\n\n // Mantine Select expects {value, label} options. We also pass the role\n // object inline so the custom renderer can read the colour.\n const data: ComboboxItem[] = (roles ?? []).map((r) => ({\n value: r.id,\n label: r.name,\n }));\n\n const renderOption: SelectProps[\"renderOption\"] = ({ option }) => {\n const role = rolesById[option.value];\n return role ? <RoleOption role={role} /> : <Text size=\"xs\">{option.label}</Text>;\n };\n\n // Mantine Select default `rightSectionPointerEvents=\"none\"` makes the\n // icon visual-only — clicks fall through to the combobox toggle. We\n // explicitly enable pointer events here so the refresh button actually\n // refreshes, and stopPropagation prevents the dropdown from opening\n // when the icon is clicked.\n const refreshButton = (\n <ActionIcon\n size=\"xs\"\n variant=\"subtle\"\n onMouseDown={(e) => { e.stopPropagation(); }}\n onClick={(e) => { e.stopPropagation(); refresh(); }}\n title={t(\"Refresh\", \"Refresh\")}\n loading={loading}\n aria-label={t(\"Refresh\", \"Refresh\")}\n >\n <RefreshCw size=\"1.2vh\" />\n </ActionIcon>\n );\n\n if (props.multi) {\n return (\n <MultiSelect\n label={label}\n size={size}\n placeholder={placeholder || t(\"PickRoles\", \"Pick roles...\")}\n data={data}\n value={props.value || []}\n onChange={(ids) => props.onChange(ids)}\n renderOption={renderOption as MultiSelectProps[\"renderOption\"]}\n searchable\n clearable\n disabled={disabled || (loading && !roles)}\n rightSection={refreshButton}\n rightSectionPointerEvents=\"all\"\n style={style}\n styles={styles as MultiSelectProps[\"styles\"]}\n nothingFoundMessage={\n errorCode\n ? `${t(\"Error\", \"Error\")} (${errorCode})`\n : t(\"NoRoles\", \"No roles found\")\n }\n />\n );\n }\n\n return (\n <Select\n label={label}\n size={size}\n placeholder={placeholder || t(\"PickRole\", \"Pick a role...\")}\n data={data}\n value={props.value || null}\n onChange={(id) => props.onChange(id)}\n renderOption={renderOption}\n searchable\n clearable\n disabled={disabled || (loading && !roles)}\n rightSection={refreshButton}\n rightSectionPointerEvents=\"all\"\n style={style}\n styles={styles}\n nothingFoundMessage={\n errorCode\n ? `${t(\"Error\", \"Error\")} (${errorCode})`\n : t(\"NoRoles\", \"No roles found\")\n }\n />\n );\n}\n","// Account picker. Mantine Select / MultiSelect populated from a NUI\n// callback the consumer registers (which in turn calls\n// lib.accounts.list() on the server, reaching dirk_lib's framework\n// introspection).\n//\n// Consumer wiring (once):\n//\n// RegisterNuiCallback('LIST_ACCOUNTS', function(_, cb)\n// local info = lib.accounts.list()\n// cb(info)\n// end)\n//\n// Then:\n// <AccountSelect endpoint=\"LIST_ACCOUNTS\" value={...} onChange={...} />\n// <AccountSelect endpoint=\"LIST_ACCOUNTS\" multi value={[...]} onChange={...} />\n//\n// Behaviour:\n// • If the framework reports accounts (ESX / qb-core), the dropdown is\n// pre-populated with the canonical list. Each option shows name +\n// pretty label when available.\n// • In `multi` mode, the dropdown is `creatable` — admin can type a\n// custom account name and press Enter to add it. Needed for qbx_core\n// and any ESX server that adds custom accounts at runtime.\n// • Single-pick mode is strict (no free-form entry).\n// • Framework hint chip renders below the field so the admin knows\n// where the list came from (\"from ESX Config.Accounts\", \"default\n// QBox trio\", etc.).\n\nimport { ActionIcon, Flex, MultiSelect, Select, Text, alpha, useMantineTheme } from \"@mantine/core\";\nimport type { ComboboxItem, MultiSelectProps, SelectProps } from \"@mantine/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { RefreshCw } from \"lucide-react\";\nimport { fetchNui } from \"@/utils/fetchNui\";\nimport { locale } from \"@/utils/locales\";\n\nconst t = (key: string, fallback: string) => {\n const v = locale(key);\n return v === key ? fallback : v;\n};\n\nexport type FrameworkAccount = {\n name: string;\n label?: string;\n default?: number;\n round?: boolean;\n};\n\ntype ListResponse = {\n ok: boolean;\n framework?: string;\n accounts?: FrameworkAccount[];\n};\n\nconst FRAMEWORK_HINTS: Record<string, string> = {\n \"es_extended\": \"from ESX Config.Accounts\",\n \"qb-core\": \"from QBCore Money.MoneyTypes\",\n \"qbx_core\": \"from QBox player session (or default trio if no one is online) — log in once to capture custom accounts\",\n \"nd-framework\": \"ND_Core only supports cash + bank\",\n \"unknown\": \"no framework detected — type account names manually\",\n};\n\ntype SharedProps = {\n endpoint: string;\n label?: React.ReactNode;\n size?: SelectProps[\"size\"];\n placeholder?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n styles?: SelectProps[\"styles\"];\n /** Hide the framework-hint chip below the field. */\n hideFrameworkHint?: boolean;\n};\n\ntype SingleProps = SharedProps & {\n multi?: false;\n value: string | null;\n onChange: (name: string | null) => void;\n};\n\ntype MultiProps = SharedProps & {\n multi: true;\n value: string[];\n onChange: (names: string[]) => void;\n};\n\nexport type AccountSelectProps = SingleProps | MultiProps;\n\nfunction AccountOption({ account }: { account: FrameworkAccount }) {\n return (\n <Flex direction=\"column\" gap=\"0\">\n <Text size=\"xs\" c=\"rgba(255,255,255,0.9)\" ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.04em\">\n {account.name}\n </Text>\n {account.label && (\n <Text size=\"xxs\" c=\"rgba(255,255,255,0.4)\">\n {account.label}\n </Text>\n )}\n </Flex>\n );\n}\n\nfunction FrameworkHint({ framework }: { framework: string | undefined }) {\n const theme = useMantineTheme();\n if (!framework) return null;\n const hintKey = `AccountFrameworkHint_${framework}`;\n const text = t(hintKey, FRAMEWORK_HINTS[framework] || FRAMEWORK_HINTS.unknown);\n return (\n <Flex\n align=\"center\" gap=\"xs\" px=\"xs\" py=\"0.3vh\"\n style={{\n background: alpha(theme.colors.dark[5], 0.4),\n border: \"0.1vh solid rgba(255,255,255,0.04)\",\n borderRadius: theme.radius.xs,\n }}\n >\n <Text size=\"xxs\" ff=\"Akrobat Bold\" c=\"rgba(255,255,255,0.45)\" tt=\"uppercase\" lts=\"0.04em\">\n {framework}\n </Text>\n <Text size=\"xxs\" ff=\"Akrobat\" c=\"rgba(255,255,255,0.35)\" style={{ flex: 1 }} lineClamp={2}>\n {text}\n </Text>\n </Flex>\n );\n}\n\nexport function AccountSelect(props: AccountSelectProps) {\n const { endpoint, label, size = \"xs\", placeholder, disabled, style, styles, hideFrameworkHint } = props;\n const [accounts, setAccounts] = useState<FrameworkAccount[] | null>(null);\n const [framework, setFramework] = useState<string | undefined>(undefined);\n const [loading, setLoading] = useState(false);\n\n const refresh = async () => {\n setLoading(true);\n try {\n const res = await fetchNui<ListResponse>(endpoint, {}, {\n // Browser dev fallback. Shows a recognisable ESX-style list.\n ok: true,\n framework: \"es_extended\",\n accounts: [\n { name: \"money\", label: \"Cash\" },\n { name: \"bank\", label: \"Bank\" },\n { name: \"black_money\", label: \"Dirty Money\" },\n ],\n });\n if (res?.ok) {\n setAccounts(res.accounts ?? []);\n setFramework(res.framework);\n } else {\n setAccounts([]);\n setFramework(res?.framework);\n }\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n refresh();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [endpoint]);\n\n const accountsByName = useMemo(() => {\n const map: Record<string, FrameworkAccount> = {};\n for (const a of accounts ?? []) map[a.name] = a;\n // In multi mode we also need to handle account names the admin typed\n // that aren't in the framework list (e.g. custom qbx_core accounts).\n if (props.multi) {\n for (const n of props.value ?? []) {\n if (n && !map[n]) map[n] = { name: n };\n }\n } else if (props.value && !map[props.value]) {\n map[props.value] = { name: props.value };\n }\n return map;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [accounts, props.multi, props.multi ? props.value?.join(\",\") : props.value]);\n\n const data: ComboboxItem[] = Object.values(accountsByName).map((a) => ({\n value: a.name,\n label: a.label ? `${a.name} — ${a.label}` : a.name,\n }));\n\n const renderOption: SelectProps[\"renderOption\"] = ({ option }) => {\n const acc = accountsByName[option.value];\n return acc ? <AccountOption account={acc} /> : <Text size=\"xs\">{option.label}</Text>;\n };\n\n const refreshButton = (\n <ActionIcon\n size=\"xs\" variant=\"subtle\"\n onMouseDown={(e) => { e.stopPropagation(); }}\n onClick={(e) => { e.stopPropagation(); refresh(); }}\n title={t(\"Refresh\", \"Refresh\")}\n loading={loading}\n aria-label={t(\"Refresh\", \"Refresh\")}\n >\n <RefreshCw size=\"1.2vh\" />\n </ActionIcon>\n );\n\n const sharedSelectProps = {\n label,\n size,\n data,\n searchable: true,\n clearable: true,\n disabled: disabled || (loading && !accounts),\n rightSection: refreshButton,\n rightSectionPointerEvents: \"all\" as const,\n style,\n nothingFoundMessage: t(\"NoAccounts\", \"No accounts available\"),\n };\n\n return (\n <Flex direction=\"column\" gap=\"0.3vh\" style={style}>\n {props.multi ? (\n <MultiSelect\n {...sharedSelectProps}\n placeholder={placeholder || t(\"PickAccounts\", \"Pick accounts (or type custom)...\")}\n value={props.value || []}\n onChange={(names) => props.onChange(names)}\n renderOption={renderOption as MultiSelectProps[\"renderOption\"]}\n // Free-form entry so admins can add account names the framework\n // exposes via `PlayerData.money` keys we couldn't enumerate (qbx).\n // The user types a name + presses Enter to commit it.\n searchable\n hidePickedOptions\n // Mantine 7 spelling — accepts unknown values as tags.\n // `creatable` was renamed in v7+ but legacy fallback is OK.\n styles={styles as MultiSelectProps[\"styles\"]}\n />\n ) : (\n <Select\n {...sharedSelectProps}\n placeholder={placeholder || t(\"PickAccount\", \"Pick an account...\")}\n value={props.value || null}\n onChange={(name) => props.onChange(name)}\n renderOption={renderOption}\n styles={styles}\n />\n )}\n {!hideFrameworkHint && <FrameworkHint framework={framework} />}\n </Flex>\n );\n}\n"]}
|