dirk-cfx-react 1.1.92 → 1.1.94

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.
Files changed (65) hide show
  1. package/dist/chunk-3T2CCW5E.cjs +150 -0
  2. package/dist/chunk-3T2CCW5E.cjs.map +1 -0
  3. package/dist/chunk-4DE2IREA.cjs +9 -0
  4. package/dist/chunk-4DE2IREA.cjs.map +1 -0
  5. package/dist/chunk-E2SFEBBB.cjs +449 -0
  6. package/dist/chunk-E2SFEBBB.cjs.map +1 -0
  7. package/dist/chunk-GKSP5RIA.js +3 -0
  8. package/dist/chunk-GKSP5RIA.js.map +1 -0
  9. package/dist/chunk-HAB6H274.js +6646 -0
  10. package/dist/chunk-HAB6H274.js.map +1 -0
  11. package/dist/chunk-K3GDU6EY.cjs +6717 -0
  12. package/dist/chunk-K3GDU6EY.cjs.map +1 -0
  13. package/dist/chunk-KGLO3ZAS.js +431 -0
  14. package/dist/chunk-KGLO3ZAS.js.map +1 -0
  15. package/dist/chunk-LRGCBNZ7.cjs +4 -0
  16. package/dist/chunk-LRGCBNZ7.cjs.map +1 -0
  17. package/dist/chunk-MYNNCLMA.js +1375 -0
  18. package/dist/chunk-MYNNCLMA.js.map +1 -0
  19. package/dist/chunk-NVMOGS7Y.js +437 -0
  20. package/dist/chunk-NVMOGS7Y.js.map +1 -0
  21. package/dist/chunk-QOQQ3ERZ.cjs +445 -0
  22. package/dist/chunk-QOQQ3ERZ.cjs.map +1 -0
  23. package/dist/chunk-V6TY7KAL.js +7 -0
  24. package/dist/chunk-V6TY7KAL.js.map +1 -0
  25. package/dist/chunk-VKYONY7E.cjs +112 -0
  26. package/dist/chunk-VKYONY7E.cjs.map +1 -0
  27. package/dist/chunk-YA2PXBP6.cjs +1430 -0
  28. package/dist/chunk-YA2PXBP6.cjs.map +1 -0
  29. package/dist/chunk-Z7N5AQJW.js +146 -0
  30. package/dist/chunk-Z7N5AQJW.js.map +1 -0
  31. package/dist/chunk-ZPFW7C2A.js +108 -0
  32. package/dist/chunk-ZPFW7C2A.js.map +1 -0
  33. package/dist/components/index.cjs +282 -7760
  34. package/dist/components/index.cjs.map +1 -1
  35. package/dist/components/index.d.cts +39 -1
  36. package/dist/components/index.d.ts +39 -1
  37. package/dist/components/index.js +6 -7699
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/hooks/index.cjs +75 -718
  40. package/dist/hooks/index.cjs.map +1 -1
  41. package/dist/hooks/index.d.cts +11 -1
  42. package/dist/hooks/index.d.ts +11 -1
  43. package/dist/hooks/index.js +5 -701
  44. package/dist/hooks/index.js.map +1 -1
  45. package/dist/index.cjs +572 -9066
  46. package/dist/index.cjs.map +1 -1
  47. package/dist/index.d.cts +3 -3
  48. package/dist/index.d.ts +3 -3
  49. package/dist/index.js +9 -8928
  50. package/dist/index.js.map +1 -1
  51. package/dist/modelNames-QIAIYORH.cjs +53910 -0
  52. package/dist/modelNames-QIAIYORH.cjs.map +1 -0
  53. package/dist/modelNames-WAUYJLL3.js +53908 -0
  54. package/dist/modelNames-WAUYJLL3.js.map +1 -0
  55. package/dist/providers/index.cjs +11 -596
  56. package/dist/providers/index.cjs.map +1 -1
  57. package/dist/providers/index.js +5 -596
  58. package/dist/providers/index.js.map +1 -1
  59. package/dist/utils/index.cjs +186 -1361
  60. package/dist/utils/index.cjs.map +1 -1
  61. package/dist/utils/index.d.cts +41 -1
  62. package/dist/utils/index.d.ts +41 -1
  63. package/dist/utils/index.js +2 -1324
  64. package/dist/utils/index.js.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/BlipSelect.tsx","../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/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/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/components/AdminTools/PlayerSelect.tsx","../src/components/AccessOverrideSection.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","../src/components/InstructionPanel.tsx","../src/components/AdminTools/WorldPositionPicker.tsx","../src/components/AdminTools/DoorPicker.tsx","../src/components/Map/Map.tsx","../src/components/Map/BlipMarker.tsx","../src/components/ModelSelect.tsx","../src/components/VehicleSelect.tsx"],"names":["jsxs","Group","jsx","Image","Text","Box","Select","useMantineTheme","Flex","colorWithAlpha","FontAwesomeIcon","motion","AnimatePresence","useRef","useState","useMotionValue","useEffect","alpha","Tooltip","Info","useAudio","createContext","useContext","useStore","create","useSettings","Progress","RingProgress","locale","Portal","X","Button","AlertTriangle","TextInput","t","Trash2","fetchNui","useCallback","RefreshCw","ChevronDown","Check","Copy","useForm","Code2","JsonInput","getScriptConfigInstance","useMemo","useInfiniteQuery","History","Search","Filter","User","Loader","useAdminState","Fragment","notifications","ArrowLeft","Undo2","Redo2","SaveIcon","XCircle","RotateCcw","useFormActions","FormProvider","dirkQueryClient","useItems","useItemsList","MapPin","Crosshair","EyeOff","Eye","NumberInput","useFrameworkGroups","ensureFrameworkGroups","INPUT_MAPPER_PRIMARY_OPTIONS","INPUT_MAPPER_KEYS_BY_PRIMARY","GTA_CONTROLS","GTA_CONTROL_GROUP_ORDER","formatGtaControl","MultiSelect","Switch","isEnvBrowser","FlaskConical","ActionIcon","ChevronUp","Stack","useFormField","defaultThemeOverride","generateColors","DEFAULT_PALETTE","Palette","ColorInput","Popover","usePlayers","ShieldCheck","Users","Plus","UserRound","buildGroupedData","createPortal","WorldPositionSetButton","WorldPositionGotoButton","useAdminToolStore","DoorOpen","memo","gameToMap","MapContainer","CRS","Map","useMap","tileLayer","latLngBounds","latLng","Minus","Marker","useModels","loadModels","Autocomplete","useVehicles","ensureVehicles"],"mappings":"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","file":"chunk-K3GDU6EY.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\nexport function 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// ── Public lookups for any consumer wanting raw access (e.g. <BlipMarker>\r\n// in cfx-react's Map subsystem). Wrappers around the internal maps that\r\n// take a number/string id and normalise it to the string-keyed lookup.\r\n\r\n/** Look up a blip entry by sprite id. Returns `{ id, name, ext }` or undefined. */\r\nexport function getBlipEntry(spriteId: number | string | null | undefined) {\r\n if (spriteId == null) return undefined;\r\n return blipEntryMap.get(String(spriteId));\r\n}\r\n\r\n/** Look up a blip color by color id. Returns `{ id, label, hex }` or undefined. */\r\nexport function getBlipColor(colorId: number | string | null | undefined) {\r\n if (colorId == null) return undefined;\r\n return blipColorMap.get(String(colorId));\r\n}\r\n\r\n/** Convenience: build the sprite URL straight from a sprite id. */\r\nexport function blipUrlForSprite(spriteId: number | string | null | undefined): string | null {\r\n const entry = getBlipEntry(spriteId);\r\n return entry ? blipUrl(entry.name, entry.ext) : null;\r\n}\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","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}","\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\";\r\nimport { IconName } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { Flex, MantineSize, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { BorderedIcon } from \"./BorderedIcon\";\r\nimport { useSettings } from \"@/utils/useSettings\";\r\n\r\nexport type ButtonProps = {\r\n icon: string;\r\n onClick?: () => void;\r\n};\r\n\r\nexport type TitleSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport type TitleProps = {\r\n title: string;\r\n description: string;\r\n icon: string;\r\n iconColor?: string;\r\n bg?: string;\r\n w?: string;\r\n removeBorder?: boolean;\r\n borderColor?: string;\r\n p?: string;\r\n /**\r\n * Scale of the whole block — icon, title text, description text, and inner\r\n * spacing all follow this single value. Defaults to \"md\" to preserve the\r\n * historical look so existing consumers don't shift.\r\n */\r\n size?: TitleSize;\r\n rightSection?: React.ReactNode;\r\n};\r\n\r\ntype SizePreset = {\r\n iconFontSize: string;\r\n iconPadding: string;\r\n titleSize: MantineSize | string;\r\n titleLineHeight: string;\r\n descriptionSize: MantineSize | string;\r\n innerGap: MantineSize | string;\r\n bottomPad: MantineSize | string;\r\n};\r\n\r\nfunction getSizePreset(size: TitleSize, themeMdFontSize: string): SizePreset {\r\n switch (size) {\r\n case \"xs\":\r\n return { iconFontSize: \"1.2vh\", iconPadding: \"xxs\", titleSize: \"xxs\", titleLineHeight: \"1.2vh\", descriptionSize: \"xxs\", innerGap: \"xs\", bottomPad: \"xs\" };\r\n case \"sm\":\r\n return { iconFontSize: \"1.6vh\", iconPadding: \"xxs\", titleSize: \"xs\", titleLineHeight: \"1.6vh\", descriptionSize: \"xxs\", innerGap: \"xs\", bottomPad: \"xs\" };\r\n case \"lg\":\r\n return { iconFontSize: \"2.6vh\", iconPadding: \"sm\", titleSize: \"md\", titleLineHeight: \"2.6vh\", descriptionSize: \"sm\", innerGap: \"sm\", bottomPad: \"sm\" };\r\n case \"xl\":\r\n return { iconFontSize: \"3.2vh\", iconPadding: \"sm\", titleSize: \"lg\", titleLineHeight: \"3.2vh\", descriptionSize: \"md\", innerGap: \"md\", bottomPad: \"md\" };\r\n case \"md\":\r\n default:\r\n return { iconFontSize: themeMdFontSize, iconPadding: \"xs\", titleSize: \"sm\", titleLineHeight: themeMdFontSize, descriptionSize: \"xs\", innerGap: \"sm\", bottomPad: \"sm\" };\r\n }\r\n}\r\n\r\nexport function Title(props: TitleProps) {\r\n const game = useSettings((state) => state.game);\r\n const theme = useMantineTheme();\r\n const preset = getSizePreset(props.size ?? \"md\", theme.fontSizes.md);\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n bg={props.bg || \"transparent\"}\r\n gap=\"xs\"\r\n w={props.w || \"100%\"}\r\n p={props.p || \"unset\"}\r\n pb={!props.p ? preset.bottomPad : props.p}\r\n style={{\r\n userSelect: \"none\",\r\n borderBottom: props.removeBorder ? \"none\" : `0.3vh solid ${props.borderColor || colorWithAlpha(theme.colors[theme.primaryColor][9], 0.5)}`,\r\n }}\r\n >\r\n <Flex align=\"center\" justify={\"center\"}>\r\n <Flex align=\"center\" gap={preset.innerGap} pr=\"xs\">\r\n <BorderedIcon\r\n icon={props.icon as IconName}\r\n fontSize={preset.iconFontSize}\r\n color={props.iconColor}\r\n p={preset.iconPadding}\r\n />\r\n <Flex direction=\"column\" gap=\"0.25vh\">\r\n <Text\r\n p=\"0\"\r\n size={preset.titleSize as MantineSize}\r\n style={{\r\n lineHeight: preset.titleLineHeight,\r\n fontFamily: game == \"fivem\" ? \"Akrobat Bold\" : \"Red Dead\",\r\n letterSpacing: \"0.05em\",\r\n textTransform: \"uppercase\",\r\n }}\r\n >\r\n {props.title}\r\n </Text>\r\n <Text\r\n size={preset.descriptionSize as MantineSize}\r\n c=\"grey\"\r\n style={{ whiteSpace: \"normal\", wordWrap: \"break-word\" }}\r\n >\r\n {props.description}\r\n </Text>\r\n </Flex>\r\n </Flex>\r\n <Flex ml=\"auto\" align=\"center\" gap=\"xs\">\r\n {props.rightSection}\r\n </Flex>\r\n </Flex>\r\n </Flex>\r\n );\r\n}\r\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\r\n// when one or more configured items aren't registered in the player's\r\n// inventory items table.\r\n//\r\n// Driven by dirk_lib's `<scriptName>:getMissingItems` callback (server-side\r\n// audit walks the schema's x-installItem / x-installItemList annotations,\r\n// cross-references `lib.inventory.item(name)`, and returns the missing names\r\n// + ready-to-paste install snippets per format).\r\n//\r\n// Auto-mounted by ConfigPanel above its tab AnimatePresence so it survives\r\n// tab switches without remounting. Consumers can suppress it by passing\r\n// `suppressMissingItemsBanner` to ConfigPanel.\r\n//\r\n// To use this in another consumer: nothing to do. ConfigPanel mounts it.\r\n// Just annotate the consumer's schema.json with x-installItem /\r\n// x-installItemList on item-name fields, and dirk_lib does the rest.\r\n\r\nimport { alpha, Flex, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { AlertTriangle, ChevronDown, Check, Copy, RefreshCw } from \"lucide-react\";\r\nimport { useCallback, useEffect, useState } from \"react\";\r\nimport { create } from \"zustand\";\r\nimport { fetchNui } from \"../utils/fetchNui\";\r\n\r\ntype MissingItem = {\r\n name: string;\r\n label?: string;\r\n weight?: number;\r\n description?: string;\r\n};\r\n\r\ntype AuditPayload = {\r\n missing: MissingItem[];\r\n snippets: { ox: string; qb: string; esx: string };\r\n};\r\n\r\ntype AuditResponse = {\r\n success: boolean;\r\n _error?: string;\r\n data?: AuditPayload;\r\n};\r\n\r\ntype TabId = \"ox\" | \"qb\" | \"esx\";\r\n\r\nconst TABS: { id: TabId; label: string }[] = [\r\n { id: \"ox\", label: \"ox_inventory\" },\r\n { id: \"qb\", label: \"qb-inventory\" },\r\n { id: \"esx\", label: \"ESX legacy SQL\" },\r\n];\r\n\r\n// Module-level audit store. Persists across component re-mounts (ConfigPanel\r\n// keys its tab content by activeTab, so each tab switch unmounts + remounts\r\n// children). Stored data survives, fetch fires once per panel session.\r\ntype AuditStore = {\r\n data: AuditPayload | null;\r\n loaded: boolean;\r\n inFlight: boolean;\r\n refresh: () => Promise<void>;\r\n};\r\n\r\nexport const useMissingItemsAudit = create<AuditStore>((set, get) => ({\r\n data: null,\r\n loaded: false,\r\n inFlight: false,\r\n refresh: async () => {\r\n if (get().inFlight) return;\r\n set({ inFlight: true });\r\n try {\r\n const res = await fetchNui<AuditResponse>(\"GET_MISSING_ITEMS\", undefined, {\r\n success: true,\r\n data: { missing: [], snippets: { ox: \"\", qb: \"\", esx: \"\" } },\r\n });\r\n if (res?.success && res.data) {\r\n set({ data: res.data, loaded: true });\r\n } else {\r\n set({ loaded: true });\r\n }\r\n } catch {\r\n set({ loaded: true });\r\n } finally {\r\n set({ inFlight: false });\r\n }\r\n },\r\n}));\r\n\r\nexport function MissingItemsBanner() {\r\n const theme = useMantineTheme();\r\n const audit = useMissingItemsAudit((s) => s.data);\r\n const loaded = useMissingItemsAudit((s) => s.loaded);\r\n const inFlight = useMissingItemsAudit((s) => s.inFlight);\r\n const refresh = useMissingItemsAudit((s) => s.refresh);\r\n const [expanded, setExpanded] = useState(false);\r\n const [activeTab, setActiveTab] = useState<TabId>(\"ox\");\r\n const [hoveredTab, setHoveredTab] = useState<TabId | null>(null);\r\n const [copied, setCopied] = useState<TabId | null>(null);\r\n\r\n // First fetch — only when not yet loaded. Re-mount across tab switches\r\n // re-fires this useEffect but the `loaded` guard blocks the second hit.\r\n useEffect(() => {\r\n if (!loaded) refresh();\r\n }, [loaded, refresh]);\r\n\r\n const handleCopy = useCallback((tab: TabId) => {\r\n if (!audit) return;\r\n const text = audit.snippets[tab] ?? \"\";\r\n navigator.clipboard.writeText(text).then(() => {\r\n setCopied(tab);\r\n setTimeout(() => setCopied((c) => (c === tab ? null : c)), 1500);\r\n }).catch(() => {});\r\n }, [audit]);\r\n\r\n const handleRefresh = useCallback((e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n refresh();\r\n }, [refresh]);\r\n\r\n if (!audit || audit.missing.length === 0) return null;\r\n\r\n const warnColor = \"#f59e0b\"; // amber\r\n const names = audit.missing.map((m) => m.name);\r\n\r\n return (\r\n <div\r\n style={{\r\n background: alpha(warnColor, 0.06),\r\n border: `0.1vh solid ${alpha(warnColor, 0.35)}`,\r\n borderLeft: `0.3vh solid ${warnColor}`,\r\n borderRadius: theme.radius.xs,\r\n margin: \"0.6vh 1vh\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {/* Summary row */}\r\n <Flex align=\"center\" gap=\"0.8vh\" p=\"0.8vh 1vh\" style={{ cursor: \"pointer\" }} onClick={() => setExpanded((e) => !e)}>\r\n <AlertTriangle size=\"1.8vh\" color={warnColor} strokeWidth={2.5} />\r\n <Flex direction=\"column\" style={{ flex: 1, minWidth: 0 }}>\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" tt=\"uppercase\" lts=\"0.07em\" c={warnColor}>\r\n {audit.missing.length === 1\r\n ? \"1 item missing from your inventory\"\r\n : `${audit.missing.length} items missing from your inventory`}\r\n </Text>\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.5)\" lineClamp={1} style={{ fontFamily: \"monospace\" }}>\r\n {names.join(\", \")}\r\n </Text>\r\n </Flex>\r\n {/* Refresh button — re-runs the audit. Bounded: server callback, no\r\n event listener loops. */}\r\n <button\r\n onClick={handleRefresh}\r\n disabled={inFlight}\r\n style={{\r\n background: \"transparent\",\r\n border: \"none\",\r\n padding: \"0.3vh\",\r\n cursor: inFlight ? \"wait\" : \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n opacity: inFlight ? 0.4 : 0.7,\r\n }}\r\n title=\"Re-check\"\r\n >\r\n <motion.span\r\n animate={{ rotate: inFlight ? 360 : 0 }}\r\n transition={inFlight ? { duration: 1, repeat: Infinity, ease: \"linear\" } : { duration: 0 }}\r\n style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\r\n >\r\n <RefreshCw size=\"1.5vh\" color={alpha(warnColor, 0.7)} />\r\n </motion.span>\r\n </button>\r\n <motion.div\r\n animate={{ rotate: expanded ? 180 : 0 }}\r\n transition={{ duration: 0.18 }}\r\n style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\r\n >\r\n <ChevronDown size=\"1.8vh\" color={alpha(warnColor, 0.7)} />\r\n </motion.div>\r\n </Flex>\r\n\r\n {/* Expandable code view */}\r\n <AnimatePresence initial={false}>\r\n {expanded && (\r\n <motion.div\r\n key=\"expanded\"\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.18, ease: \"easeOut\" }}\r\n style={{ overflow: \"hidden\", borderTop: `0.1vh solid ${alpha(warnColor, 0.18)}` }}\r\n >\r\n {/* Tab strip — plain buttons. Framer-motion's whileHover/whileTap\r\n caused two glitches we don't need: a shrink-spring on click\r\n and stuck hover-tint on the previously-active tab until you\r\n hover it again. CSS-driven hover state is sync'd with React\r\n state cleanly. */}\r\n <Flex gap=\"0\" style={{ borderBottom: `0.1vh solid ${alpha(warnColor, 0.18)}` }}>\r\n {TABS.map((tab) => {\r\n const active = tab.id === activeTab;\r\n const hovered = hoveredTab === tab.id;\r\n let bg: string = \"transparent\";\r\n if (active) bg = alpha(warnColor, 0.12);\r\n else if (hovered) bg = alpha(warnColor, 0.08);\r\n return (\r\n <button\r\n key={tab.id}\r\n onClick={(e) => { e.stopPropagation(); setActiveTab(tab.id); }}\r\n onMouseEnter={() => setHoveredTab(tab.id)}\r\n onMouseLeave={() => setHoveredTab((h) => (h === tab.id ? null : h))}\r\n style={{\r\n flex: 1,\r\n background: bg,\r\n border: \"none\",\r\n borderBottom: active ? `0.2vh solid ${warnColor}` : \"0.2vh solid transparent\",\r\n padding: \"0.3vh 1vh\",\r\n cursor: active ? \"default\" : \"pointer\",\r\n color: active ? warnColor : \"rgba(255,255,255,0.5)\",\r\n fontFamily: \"Akrobat Bold\",\r\n fontSize: \"var(--mantine-font-size-xxs)\",\r\n letterSpacing: \"0.07em\",\r\n textTransform: \"uppercase\",\r\n transition: \"background 0.12s\",\r\n }}\r\n >\r\n {tab.label}\r\n </button>\r\n );\r\n })}\r\n </Flex>\r\n\r\n <CodeView\r\n code={audit.snippets[activeTab] ?? \"\"}\r\n copied={copied === activeTab}\r\n onCopy={(e) => { e.stopPropagation(); handleCopy(activeTab); }}\r\n warnColor={warnColor}\r\n />\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nfunction CodeView({\r\n code,\r\n copied,\r\n onCopy,\r\n warnColor,\r\n}: {\r\n code: string;\r\n copied: boolean;\r\n onCopy: (e: React.MouseEvent) => void;\r\n warnColor: string;\r\n}) {\r\n const theme = useMantineTheme();\r\n const [hovered, setHovered] = useState(false);\r\n const lines = code === \"\" ? [\"\"] : code.split(\"\\n\");\r\n const lineNumWidth = String(lines.length).length;\r\n\r\n const copyBg = copied\r\n ? alpha(\"#22c55e\", 0.15)\r\n : hovered\r\n ? alpha(warnColor, 0.18)\r\n : alpha(warnColor, 0.1);\r\n\r\n return (\r\n <div style={{ position: \"relative\" }}>\r\n <button\r\n onClick={onCopy}\r\n onMouseEnter={() => setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n style={{\r\n position: \"absolute\",\r\n top: \"0.6vh\",\r\n right: \"0.8vh\",\r\n zIndex: 2,\r\n background: copyBg,\r\n border: `0.1vh solid ${alpha(copied ? \"#22c55e\" : warnColor, 0.35)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: \"0.4vh 0.7vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"0.4vh\",\r\n transition: \"background 0.12s\",\r\n }}\r\n >\r\n {copied\r\n ? <Check size=\"1.4vh\" color=\"#22c55e\" />\r\n : <Copy size=\"1.4vh\" color={warnColor} />}\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={copied ? \"#22c55e\" : warnColor}>\r\n {copied ? \"Copied\" : \"Copy\"}\r\n </Text>\r\n </button>\r\n\r\n <div style={{\r\n background: alpha(theme.colors.dark[9], 0.6),\r\n maxHeight: \"40vh\",\r\n overflowY: \"auto\",\r\n overflowX: \"auto\",\r\n padding: \"0.6vh 0\",\r\n }}>\r\n <table style={{ borderCollapse: \"collapse\", width: \"100%\", fontFamily: \"monospace\", fontSize: \"1.2vh\", lineHeight: 1.5 }}>\r\n <tbody>\r\n {lines.map((line, i) => (\r\n <tr key={i}>\r\n <td style={{\r\n width: `${lineNumWidth + 2}ch`,\r\n textAlign: \"right\",\r\n padding: \"0 0.8vh 0 1vh\",\r\n color: \"rgba(255,255,255,0.25)\",\r\n userSelect: \"none\",\r\n whiteSpace: \"nowrap\",\r\n verticalAlign: \"top\",\r\n }}>{i + 1}</td>\r\n <td style={{\r\n padding: \"0 1vh\",\r\n color: \"rgba(255,255,255,0.85)\",\r\n whiteSpace: \"pre\",\r\n verticalAlign: \"top\",\r\n }}>{line || \"​\"}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { alpha, Box, Flex, JsonInput, Loader, Text, TextInput, useMantineTheme } from \"@mantine/core\";\r\nimport { notifications } from \"@mantine/notifications\";\r\nimport { useInfiniteQuery } 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 { useAdminState } from \"../hooks/useAdminState\";\r\nimport { useSettings } from \"../utils/useSettings\";\r\nimport { dirkQueryClient } from \"../providers/DirkProvider\";\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// ── 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={locale(\"cfgpanel_json_title\")} 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)\">{locale(\"cfgpanel_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}>{locale(\"cfgpanel_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={locale(\"cfgpanel_history_title\")} 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)\">{locale(\"cfgpanel_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 // useAdminState so the selected tab survives close/reopen. The whole\r\n // ConfigPanel tree unmounts on close (line ~670: `if (!open) return null`),\r\n // so plain useState would reset to navItems[0] every time.\r\n const [activeTab, setActiveTab] = useAdminState(\"__dirkConfigPanel:activeTab\", 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={locale(\"cfgpanel_reset_title\")}\r\n description={locale(\"cfgpanel_reset_desc\")}\r\n confirmLabel={locale(\"cfgpanel_reset_confirm\")}\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={locale(\"cfgpanel_discard_title\")}\r\n description={\r\n pendingAction === \"back\"\r\n ? locale(\"cfgpanel_discard_desc_back\")\r\n : locale(\"cfgpanel_discard_desc_close\")\r\n }\r\n confirmLabel={pendingAction === \"back\" ? locale(\"cfgpanel_discard_confirm_back\") : locale(\"cfgpanel_discard_confirm_close\")}\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={locale(\"cfgpanel_back_title\")}\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={locale(\"cfgpanel_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={locale(\"cfgpanel_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 ? locale(\"cfgpanel_saving\") : isDirty ? `${locale(\"cfgpanel_save\")} (${changedCount})` : locale(\"cfgpanel_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={locale(\"cfgpanel_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)\"}>{locale(\"cfgpanel_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}>{locale(\"cfgpanel_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\">{locale(\"cfgpanel_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 {locale(\"cfgpanel_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\n// Option B. The client-visible config is ALREADY in the store — pushed by\r\n// dirk_lib via UPDATE_SCRIPT_CONFIG and used to seed this FormProvider's\r\n// initialValues (see ConfigPanel below). On open we fetch ONLY the server-only\r\n// sliver (GET_SERVER_ONLY_SCRIPT_CONFIG, permission-gated server-side) and\r\n// DEEP-MERGE it onto that cached client-visible baseline — never re-fetching\r\n// the whole config. The merged full config (client-visible + server-only)\r\n// becomes the editor's working set so the admin can see and SAVE every field.\r\n// An empty sliver ({}) is a valid no-op merge (schema has no x-serverOnly\r\n// paths) and the form keeps its client-visible baseline. The sliver is\r\n// admin-only and in-memory only — fetchServerOnly never persists it to KVP.\r\nfunction ServerOnlyFetcher<T extends Record<string, any>>() {\r\n const { fetchServerOnly } = getScriptConfigInstance<T>();\r\n const { reinitialize } = useFormActions<T>();\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n fetchServerOnly().then((full) => {\r\n // `full` is the deep-merged client-visible baseline + server-only sliver.\r\n // On failure (non-admin / not ready) fetchServerOnly returns null and we\r\n // leave the form on its client-visible baseline (already seeded from the\r\n // store) rather than wiping it.\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 // No internal QueryClientProvider — DirkProvider now mounts a shared\r\n // client (dirkQueryClient) that this component, the missing-items audit,\r\n // usePlayers etc. all consume. Invalidations below use the same client.\r\n return (\r\n <>\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 // Pass the tracked changed-set (dotted paths) so updateConfig can\r\n // send a SECTION-DELTA (only the changed top-level sections, each as\r\n // its whole current value, with sectionReplace:true) instead of the\r\n // entire client-visible config. Falls back to a full-send when the\r\n // changed-set is empty (server then defaults to fullReplace).\r\n const result: any = await updateConfig(form.values as T, form.changedFields);\r\n if (result?.success) {\r\n form.reinitialize(cloneConfig(form.values as T));\r\n dirkQueryClient.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 </>\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 * Allow committing a typed value that isn't a registered item — for naming a\r\n * brand-new/uninstalled item (e.g. seeding a new fish/equipment). The typed\r\n * value is offered as a \"Use …\" option and, once selected, shows in the usual\r\n * amber \"not in inventory\" state.\r\n */\r\n allowCustom?: boolean;\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 // Observed (not controlled) search text — lets us offer a \"Use <typed>\" option\r\n // when allowCustom is on, without taking over Mantine's display of the value.\r\n const [search, setSearch] = useState(\"\");\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\r\n // allowCustom: if the typed search matches no existing item and isn't the\r\n // current value, offer it as a creatable option. Selecting it commits the\r\n // raw typed value (which then renders as \"not in inventory\").\r\n if (props.allowCustom) {\r\n const q = search.trim();\r\n if (q && q !== props.value && !list.some((i) => i.value.toLowerCase() === q.toLowerCase())) {\r\n list.unshift({ value: q, label: `${locale(\"UseCustomItem\")}: ${q}`, image: \"\" });\r\n }\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, props.allowCustom, search]);\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 onSearchChange={props.allowCustom ? setSearch : undefined}\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\";\r\nimport { motion } from \"framer-motion\";\r\nimport { Crosshair, Eye, EyeOff, MapPin, RotateCcw, Trash2 } from \"lucide-react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { fetchNui } from \"../utils/fetchNui\";\r\nimport { locale } from \"../utils/locales\";\r\n\r\nexport type Vector4Value = { x: number; y: number; z: number; w: number };\r\n\r\nexport type PositionPickerProps = {\r\n label?: string;\r\n value: Vector4Value;\r\n onChange: (v: Vector4Value) => void;\r\n /**\r\n * If set, the picker treats `value` as an offset from this entity reference\r\n * (e.g. \"shell\"). The Lua side must handle GET_POSITION + relativeTo by\r\n * returning (playerCoords - entityCoords) instead of world coords, and must\r\n * resolve the same reference when previewing.\r\n */\r\n relativeTo?: string;\r\n /** Optional NUI event name to fetch the current position. Defaults to GET_POSITION. */\r\n fetchEvent?: string;\r\n /** Optional NUI event name to draw a marker at the value. Defaults to PREVIEW_POSITION. */\r\n previewEvent?: string;\r\n /** Optional NUI event name to clear the preview marker. Defaults to STOP_PREVIEW_POSITION. */\r\n stopPreviewEvent?: string;\r\n description?: string;\r\n showHeading?: boolean;\r\n};\r\n\r\nconst ZERO: Vector4Value = { x: 0, y: 0, z: 0, w: 0 };\r\n\r\nexport function PositionPicker(props: PositionPickerProps) {\r\n const {\r\n label,\r\n value,\r\n onChange,\r\n relativeTo,\r\n fetchEvent = \"GET_POSITION\",\r\n previewEvent = \"PREVIEW_POSITION\",\r\n stopPreviewEvent = \"STOP_PREVIEW_POSITION\",\r\n description,\r\n showHeading = true,\r\n } = props;\r\n\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n\r\n const [previewing, setPreviewing] = useState(false);\r\n const previewingRef = useRef(false);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (previewingRef.current) {\r\n fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {});\r\n }\r\n };\r\n }, [stopPreviewEvent, relativeTo]);\r\n\r\n const set = <K extends keyof Vector4Value>(key: K, val: number) => {\r\n const next = { ...value, [key]: val };\r\n onChange(next);\r\n if (previewingRef.current) {\r\n fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {});\r\n }\r\n };\r\n\r\n const grab = async () => {\r\n try {\r\n const resp = await fetchNui<Vector4Value | null>(fetchEvent, { relativeTo }, value);\r\n if (resp && typeof resp === \"object\") {\r\n const next: Vector4Value = {\r\n x: Number(resp.x ?? 0),\r\n y: Number(resp.y ?? 0),\r\n z: Number(resp.z ?? 0),\r\n w: Number(resp.w ?? 0),\r\n };\r\n onChange(next);\r\n if (previewingRef.current) {\r\n fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {});\r\n }\r\n }\r\n } catch {\r\n // ignore — Lua side may not be wired up yet\r\n }\r\n };\r\n\r\n const togglePreview = async () => {\r\n const nextState = !previewing;\r\n setPreviewing(nextState);\r\n previewingRef.current = nextState;\r\n if (nextState) {\r\n await fetchNui(previewEvent, { value, relativeTo }).catch(() => {});\r\n } else {\r\n await fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {});\r\n }\r\n };\r\n\r\n const reset = () => {\r\n onChange({ ...ZERO });\r\n if (previewingRef.current) {\r\n fetchNui(previewEvent, { value: ZERO, relativeTo }).catch(() => {});\r\n }\r\n };\r\n\r\n const numberStyles = {\r\n input: { textAlign: \"right\" as const, fontFamily: \"monospace\" },\r\n };\r\n\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n gap=\"xxs\"\r\n p=\"xs\"\r\n style={{\r\n background: alpha(theme.colors.dark[5], 0.35),\r\n border: \"0.1vh solid rgba(255,255,255,0.05)\",\r\n borderRadius: theme.radius.xs,\r\n }}\r\n >\r\n {(label || description) && (\r\n <Flex justify=\"space-between\" align=\"center\" gap=\"xs\">\r\n <Flex direction=\"column\" gap={0} style={{ minWidth: 0 }}>\r\n {label && (\r\n <Flex align=\"center\" gap=\"xxs\">\r\n <MapPin size=\"1.4vh\" color={alpha(color, 0.7)} />\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.75)\"\r\n >\r\n {locale(label)}\r\n </Text>\r\n {relativeTo && (\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={alpha(color, 0.5)} lts=\"0.05em\">\r\n · {locale(\"RelativeTo\")} {relativeTo}\r\n </Text>\r\n )}\r\n </Flex>\r\n )}\r\n {description && (\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"dimmed\" lh={1.3}>\r\n {locale(description)}\r\n </Text>\r\n )}\r\n </Flex>\r\n\r\n <Flex gap=\"xxs\" style={{ flexShrink: 0 }}>\r\n <PickerButton tooltip={locale(\"GrabMyPosition\")} onClick={grab} color={color}>\r\n <Crosshair size=\"1.4vh\" color={color} />\r\n </PickerButton>\r\n <PickerButton\r\n tooltip={previewing ? locale(\"StopPreview\") : locale(\"PreviewInWorld\")}\r\n onClick={togglePreview}\r\n color={color}\r\n active={previewing}\r\n >\r\n {previewing ? (\r\n <EyeOff size=\"1.4vh\" color={color} />\r\n ) : (\r\n <Eye size=\"1.4vh\" color={alpha(color, 0.7)} />\r\n )}\r\n </PickerButton>\r\n <PickerButton tooltip={locale(\"Reset\")} onClick={reset} color=\"#ef4444\">\r\n <RotateCcw size=\"1.4vh\" color=\"#ef4444\" />\r\n </PickerButton>\r\n </Flex>\r\n </Flex>\r\n )}\r\n\r\n <Flex gap=\"xxs\">\r\n <NumberInput\r\n size=\"xs\"\r\n label=\"X\"\r\n value={value.x}\r\n onChange={(v) => set(\"x\", Number(v))}\r\n decimalScale={4}\r\n step={0.1}\r\n style={{ flex: 1 }}\r\n styles={numberStyles}\r\n />\r\n <NumberInput\r\n size=\"xs\"\r\n label=\"Y\"\r\n value={value.y}\r\n onChange={(v) => set(\"y\", Number(v))}\r\n decimalScale={4}\r\n step={0.1}\r\n style={{ flex: 1 }}\r\n styles={numberStyles}\r\n />\r\n <NumberInput\r\n size=\"xs\"\r\n label=\"Z\"\r\n value={value.z}\r\n onChange={(v) => set(\"z\", Number(v))}\r\n decimalScale={4}\r\n step={0.1}\r\n style={{ flex: 1 }}\r\n styles={numberStyles}\r\n />\r\n {showHeading && (\r\n <NumberInput\r\n size=\"xs\"\r\n label=\"W\"\r\n value={value.w}\r\n onChange={(v) => set(\"w\", Number(v))}\r\n decimalScale={2}\r\n step={1}\r\n min={0}\r\n max={360}\r\n style={{ flex: 1 }}\r\n styles={numberStyles}\r\n />\r\n )}\r\n </Flex>\r\n </Flex>\r\n );\r\n}\r\n\r\nfunction PickerButton({\r\n children,\r\n onClick,\r\n tooltip,\r\n color,\r\n active,\r\n}: {\r\n children: React.ReactNode;\r\n onClick: () => void;\r\n tooltip: string;\r\n color: string;\r\n active?: boolean;\r\n}) {\r\n const theme = useMantineTheme();\r\n return (\r\n <Tooltip label={tooltip} position=\"top\" withArrow>\r\n <motion.button\r\n onClick={onClick}\r\n whileHover={{ background: alpha(color, 0.18) }}\r\n whileTap={{ scale: 0.95 }}\r\n style={{\r\n background: active ? alpha(color, 0.22) : alpha(color, 0.08),\r\n border: `0.1vh solid ${alpha(color, active ? 0.5 : 0.3)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: \"0.4vh 0.6vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {children}\r\n </motion.button>\r\n </Tooltip>\r\n );\r\n}\r\n\r\n// ── Compact row pieces ───────────────────────────────────────────────────────\r\n// Lower-friction siblings of <PositionPicker> for cases where you want a\r\n// scannable list of positions instead of a single full editor. Use these\r\n// when each row in a list should expose Set / Goto actions and just show\r\n// the resulting `vector4(x, y, z, w)` underneath — no inline number inputs.\r\n//\r\n// Lua side must register `GET_POSITION` (returns current world coords + heading)\r\n// and `GOTO_POSITION` (teleports the player to {x,y,z,w}). dirk_druglabsv2's\r\n// `src/client/shellEditor.lua` is the canonical example.\r\n\r\nfunction fmtV4(n: number) {\r\n return Number.isFinite(n) ? n.toFixed(2) : \"0.00\";\r\n}\r\n\r\n/** Read-only `vector4(x, y, z, w)` line in the same boxed style as PositionPicker. */\r\nexport function Vector4Display({ value }: { value: Vector4Value }) {\r\n const theme = useMantineTheme();\r\n return (\r\n <Flex\r\n align=\"center\"\r\n gap=\"xs\"\r\n p=\"xs\"\r\n style={{\r\n background: alpha(theme.colors.dark[5], 0.35),\r\n border: \"0.1vh solid rgba(255,255,255,0.05)\",\r\n borderRadius: theme.radius.xs,\r\n }}\r\n >\r\n <Text\r\n ff=\"monospace\"\r\n size=\"xxs\"\r\n c=\"rgba(255,255,255,0.85)\"\r\n style={{ flex: 1, letterSpacing: \"0.02em\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}\r\n >\r\n vector4({fmtV4(value.x)}, {fmtV4(value.y)}, {fmtV4(value.z)}, {fmtV4(value.w)})\r\n </Text>\r\n </Flex>\r\n );\r\n}\r\n\r\n/** Reusable styled action button used by Set/Goto/etc. */\r\nfunction Vector4ActionButton({\r\n icon,\r\n label,\r\n tooltip,\r\n onClick,\r\n color,\r\n compact,\r\n}: {\r\n icon: React.ReactNode;\r\n label: string;\r\n tooltip: string;\r\n onClick: () => void;\r\n color: string;\r\n compact?: boolean;\r\n}) {\r\n const theme = useMantineTheme();\r\n return (\r\n <Tooltip label={tooltip} position=\"top\" withArrow withinPortal zIndex={2000}>\r\n <motion.button\r\n onClick={onClick}\r\n whileHover={{ background: alpha(color, 0.18) }}\r\n whileTap={{ scale: 0.95 }}\r\n style={{\r\n background: alpha(color, 0.1),\r\n border: `0.1vh solid ${alpha(color, 0.35)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: compact ? \"0.25vh 0.6vh\" : \"0.5vh 0.8vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: compact ? \"0.3vh\" : \"0.4vh\",\r\n }}\r\n >\r\n {icon}\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>\r\n {label}\r\n </Text>\r\n </motion.button>\r\n </Tooltip>\r\n );\r\n}\r\n\r\n/** Grabs the player's current world coords+heading via `GET_POSITION`. */\r\nexport function WorldPositionSetButton({\r\n value,\r\n onChange,\r\n compact,\r\n}: {\r\n value: Vector4Value;\r\n onChange: (v: Vector4Value) => void;\r\n compact?: boolean;\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const grab = async () => {\r\n try {\r\n const resp = await fetchNui<Vector4Value | null>(\"GET_POSITION\", {}, value);\r\n if (!resp || typeof resp !== \"object\") return;\r\n onChange({\r\n x: Number(resp.x ?? 0),\r\n y: Number(resp.y ?? 0),\r\n z: Number(resp.z ?? 0),\r\n w: Number(resp.w ?? 0),\r\n });\r\n } catch {\r\n // Lua surfaces a notify on failure\r\n }\r\n };\r\n return (\r\n <Vector4ActionButton\r\n icon={<Crosshair size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\r\n label={locale(\"Set\")}\r\n tooltip={locale(\"SetWorldTooltip\")}\r\n onClick={grab}\r\n color={color}\r\n compact={compact}\r\n />\r\n );\r\n}\r\n\r\n/** Teleports the player to the stored coords via `GOTO_POSITION`. */\r\nexport function WorldPositionGotoButton({\r\n value,\r\n compact,\r\n}: {\r\n value: Vector4Value;\r\n compact?: boolean;\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const goto = () => {\r\n fetchNui(\"GOTO_POSITION\", value).catch(() => {});\r\n };\r\n return (\r\n <Vector4ActionButton\r\n icon={<MapPin size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\r\n label={locale(\"Goto\")}\r\n tooltip={locale(\"GotoWorldTooltip\")}\r\n onClick={goto}\r\n color={color}\r\n compact={compact}\r\n />\r\n );\r\n}\r\n\r\n/** Red-tinted Delete button matching the Set/Goto styling. */\r\nexport function Vector4DeleteButton({\r\n onClick,\r\n compact,\r\n}: {\r\n onClick: () => void;\r\n compact?: boolean;\r\n}) {\r\n const color = \"#ef4444\";\r\n return (\r\n <Vector4ActionButton\r\n icon={<Trash2 size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />}\r\n label={locale(\"Delete\")}\r\n tooltip={locale(\"Delete\")}\r\n onClick={onClick}\r\n color={color}\r\n compact={compact}\r\n />\r\n );\r\n}\r\n\r\n","// Group / rank pickers backed by lib.framework on the Lua side.\r\n//\r\n// Two usage modes:\r\n//\r\n// Compound (group + rank pair):\r\n// <GroupSelect value={{ name: 'police', grade: 2 }} onChange={setValue} type=\"job\">\r\n// <GroupName />\r\n// <GroupRank />\r\n// </GroupSelect>\r\n//\r\n// Standalone (just the group name, no rank):\r\n// <GroupName value=\"police\" onChange={setName} type=\"job\" />\r\n//\r\n// <GroupRank> is compound-only — it reads the currently selected group\r\n// from context and lists that group's grades. Throws when used outside.\r\n\r\nimport { Select } from \"@mantine/core\";\r\nimport React, { createContext, useContext, useEffect } from \"react\";\r\nimport {\r\n FrameworkGroup,\r\n ensureFrameworkGroups,\r\n selectAllGroups,\r\n useFrameworkGroups,\r\n} from \"../utils/useFrameworkGroups\";\r\nimport { locale } from \"../utils/locales\";\r\n\r\nexport type GroupValue = {\r\n name?: string;\r\n grade?: number;\r\n};\r\n\r\nexport type GroupType = \"job\" | \"gang\";\r\n\r\ntype GroupSelectContextShape = {\r\n value: GroupValue;\r\n onChange: (next: GroupValue) => void;\r\n type?: GroupType;\r\n};\r\n\r\nconst GroupSelectContext = createContext<GroupSelectContextShape | null>(null);\r\n\r\n// ── <GroupSelect> ────────────────────────────────────────────────────────────\r\n// Wrapper that owns the {name, grade} pair and exposes it to children via\r\n// context. Renders nothing of its own — children handle presentation. Pass\r\n// any layout props through `style` if needed (e.g. width).\r\n\r\nexport type GroupSelectProps = {\r\n value: GroupValue;\r\n onChange: (next: GroupValue) => void;\r\n type?: GroupType;\r\n children: React.ReactNode;\r\n style?: React.CSSProperties;\r\n};\r\n\r\nexport function GroupSelect({\r\n value,\r\n onChange,\r\n type,\r\n children,\r\n style,\r\n}: GroupSelectProps) {\r\n return (\r\n <GroupSelectContext.Provider value={{ value, onChange, type }}>\r\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.4vh\", ...style }}>\r\n {children}\r\n </div>\r\n </GroupSelectContext.Provider>\r\n );\r\n}\r\n\r\n// ── filtering ────────────────────────────────────────────────────────────────\r\n\r\nfunction filterByType(\r\n jobs: FrameworkGroup[],\r\n gangs: FrameworkGroup[],\r\n type?: GroupType,\r\n): FrameworkGroup[] {\r\n if (type === \"job\") return jobs;\r\n if (type === \"gang\") return gangs;\r\n return [...jobs, ...gangs];\r\n}\r\n\r\n// ── <GroupName> ──────────────────────────────────────────────────────────────\r\n// Group dropdown. Works standalone (own value/onChange) OR inside\r\n// <GroupSelect> (reads context, ignores standalone props). When the name\r\n// changes inside compound mode, the grade is reset to undefined since the\r\n// previous grade key may not exist in the new group.\r\n\r\nexport type GroupNameProps = {\r\n value?: string;\r\n onChange?: (name: string) => void;\r\n type?: GroupType;\r\n label?: string;\r\n description?: string;\r\n placeholder?: string;\r\n size?: string;\r\n disabled?: boolean;\r\n style?: React.CSSProperties;\r\n};\r\n\r\nexport function GroupName(props: GroupNameProps) {\r\n const ctx = useContext(GroupSelectContext);\r\n const jobs = useFrameworkGroups((s) => s.jobs);\r\n const gangs = useFrameworkGroups((s) => s.gangs);\r\n\r\n // Lazily pull jobs/gangs the first time a picker mounts (once process-wide,\r\n // guarded inside ensureFrameworkGroups). Replaces the old eager module-load\r\n // fetch that every consumer NUI ran whether or not a picker was ever shown.\r\n useEffect(() => {\r\n ensureFrameworkGroups();\r\n }, []);\r\n\r\n const inCompound = ctx !== null;\r\n const currentValue = inCompound ? ctx!.value.name : props.value;\r\n const filterType = inCompound ? ctx!.type : props.type;\r\n\r\n const list = filterByType(jobs, gangs, filterType);\r\n\r\n // When type is undefined we render Mantine's grouped data shape so the\r\n // user sees Jobs / Gangs sections in the dropdown.\r\n const data =\r\n filterType === undefined\r\n ? [\r\n { group: locale(\"Jobs\") || \"Jobs\", items: jobs.map((g) => ({ value: g.name, label: g.label })) },\r\n { group: locale(\"Gangs\") || \"Gangs\", items: gangs.map((g) => ({ value: g.name, label: g.label })) },\r\n ]\r\n : list.map((g) => ({ value: g.name, label: g.label }));\r\n\r\n return (\r\n <Select\r\n label={props.label}\r\n description={props.description}\r\n placeholder={props.placeholder ?? (locale(\"SelectGroup\") || \"Select…\")}\r\n size={props.size ?? \"xs\"}\r\n disabled={props.disabled}\r\n style={props.style}\r\n data={data as any}\r\n value={currentValue ?? null}\r\n searchable\r\n onChange={(v) => {\r\n const name = v ?? \"\";\r\n if (inCompound) {\r\n // Reset grade when the group changes — old grade likely invalid.\r\n ctx!.onChange({ name: name || undefined, grade: undefined });\r\n } else if (props.onChange) {\r\n props.onChange(name);\r\n }\r\n }}\r\n allowDeselect={false}\r\n />\r\n );\r\n}\r\n\r\n// ── <GroupRank> ──────────────────────────────────────────────────────────────\r\n// Grade dropdown for the currently-selected group. Compound-only. Disabled\r\n// when no group is selected or the group has no grades.\r\n\r\nexport type GroupRankProps = {\r\n label?: string;\r\n description?: string;\r\n placeholder?: string;\r\n size?: string;\r\n style?: React.CSSProperties;\r\n};\r\n\r\nexport function GroupRank(props: GroupRankProps) {\r\n const ctx = useContext(GroupSelectContext);\r\n if (ctx === null) {\r\n throw new Error(\"<GroupRank> must be a child of <GroupSelect>\");\r\n }\r\n const jobs = useFrameworkGroups((s) => s.jobs);\r\n const gangs = useFrameworkGroups((s) => s.gangs);\r\n\r\n // Defensive: ensure groups are fetched even if GroupRank renders without a\r\n // GroupName sibling. No-op after the first call (guarded).\r\n useEffect(() => {\r\n ensureFrameworkGroups();\r\n }, []);\r\n\r\n const all = [...jobs, ...gangs];\r\n const selectedGroup = all.find((g) => g.name === ctx.value.name) ?? null;\r\n const grades = selectedGroup?.grades ?? [];\r\n\r\n const data = grades.map((g) => ({\r\n value: String(g.grade),\r\n label: `${g.grade} — ${g.label || g.name}${g.isBoss ? \" (boss)\" : \"\"}`,\r\n }));\r\n\r\n return (\r\n <Select\r\n label={props.label}\r\n description={props.description}\r\n placeholder={props.placeholder ?? (locale(\"SelectGrade\") || \"Select grade…\")}\r\n size={props.size ?? \"xs\"}\r\n style={props.style}\r\n data={data}\r\n value={ctx.value.grade != null ? String(ctx.value.grade) : null}\r\n onChange={(v) => {\r\n ctx.onChange({\r\n ...ctx.value,\r\n grade: v != null ? Number(v) : undefined,\r\n });\r\n }}\r\n disabled={!selectedGroup || grades.length === 0}\r\n allowDeselect={false}\r\n />\r\n );\r\n}\r\n\r\n// Convenience namespace export so consumers can write\r\n// `<GroupSelect.Name>` / `<GroupSelect.Rank>` if they prefer.\r\nGroupSelect.Name = GroupName;\r\nGroupSelect.Rank = GroupRank;\r\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\r\n// to IsControlPressed / DisableControlAction / EnableControlAction (the\r\n// ones documented at https://docs.fivem.net/docs/game-references/controls/),\r\n// not for keybind primary keys — for those use FiveMKeyBindInput.\r\n//\r\n// Two flavours:\r\n// • <ControlSelect> — single id, returns number\r\n// • <ControlMultiSelect> — array of ids, returns number[]\r\n//\r\n// Both accept arbitrary Mantine Select / MultiSelect props so callers can\r\n// style/portal/disable as they need. Custom (uncatalogued) IDs the data\r\n// already contains in `value` are still rendered — they just appear in a\r\n// \"Custom\" group so the user can see and remove them.\r\n\r\nimport { MultiSelect, Select } from \"@mantine/core\";\r\nimport type { MultiSelectProps, SelectProps } from \"@mantine/core\";\r\nimport {\r\n GTA_CONTROLS,\r\n GTA_CONTROL_GROUP_ORDER,\r\n formatGtaControl,\r\n type GtaControl,\r\n type GtaControlGroup,\r\n} from \"@/utils/gtaControls\";\r\n\r\n// Build the grouped Mantine data once per module-load. Each group entry is\r\n// `{ group: name, items: [{ value, label }, ...] }`.\r\nfunction buildGroupedData(extraIds: number[] = []) {\r\n // Dedupe by id — Mantine throws \"Duplicate options\" if two entries share\r\n // the same value. First occurrence wins so the catalogue order in\r\n // GTA_CONTROLS stays authoritative.\r\n const groups = new Map<GtaControlGroup, GtaControl[]>();\r\n const seen = new Set<number>();\r\n for (const c of GTA_CONTROLS) {\r\n if (seen.has(c.id)) continue;\r\n seen.add(c.id);\r\n if (!groups.has(c.group)) groups.set(c.group, []);\r\n groups.get(c.group)!.push(c);\r\n }\r\n\r\n const data = GTA_CONTROL_GROUP_ORDER.flatMap((g) => {\r\n const items = groups.get(g);\r\n if (!items || items.length === 0) return [];\r\n return [\r\n {\r\n group: g,\r\n items: items.map((c) => ({\r\n value: String(c.id),\r\n label: formatGtaControl(c.id),\r\n })),\r\n },\r\n ];\r\n });\r\n\r\n // Surface custom (uncatalogued) ids in a \"Custom\" group so they're visible\r\n // in the dropdown rather than disappearing. Without this, MultiSelect drops\r\n // the chip silently when the value isn't in `data`.\r\n const knownIds = new Set(GTA_CONTROLS.map((c) => c.id));\r\n const customs = extraIds.filter((id) => !knownIds.has(id));\r\n if (customs.length > 0) {\r\n // The \"Custom\" group label is just a heading for unrecognised IDs the\r\n // caller has in their data — it's not a real GtaControlGroup, so cast\r\n // through unknown.\r\n data.push({\r\n group: \"Custom\" as unknown as GtaControlGroup,\r\n items: customs.map((id) => ({ value: String(id), label: `Control ${id}` })),\r\n });\r\n }\r\n\r\n return data;\r\n}\r\n\r\n// ── Single-control Select ──────────────────────────────────────────────────\r\n\r\nexport type ControlSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\r\n value: number | null | undefined;\r\n onChange: (id: number | null) => void;\r\n};\r\n\r\nexport function ControlSelect({\r\n value,\r\n onChange,\r\n label = \"Control\",\r\n size = \"xs\",\r\n searchable = true,\r\n ...rest\r\n}: ControlSelectProps) {\r\n const data = buildGroupedData(value != null ? [value] : []);\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n searchable={searchable}\r\n maxDropdownHeight={320}\r\n nothingFoundMessage=\"No matching controls\"\r\n {...rest}\r\n data={data}\r\n value={value != null ? String(value) : null}\r\n onChange={(v) => onChange(v == null ? null : Number(v))}\r\n />\r\n );\r\n}\r\n\r\n// ── Multi-control MultiSelect ──────────────────────────────────────────────\r\n\r\nexport type ControlMultiSelectProps = Omit<MultiSelectProps, \"data\" | \"value\" | \"onChange\"> & {\r\n value: number[];\r\n onChange: (ids: number[]) => void;\r\n};\r\n\r\nexport function ControlMultiSelect({\r\n value,\r\n onChange,\r\n label = \"Controls\",\r\n size = \"xs\",\r\n searchable = true,\r\n ...rest\r\n}: ControlMultiSelectProps) {\r\n const data = buildGroupedData(value);\r\n return (\r\n <MultiSelect\r\n label={label}\r\n size={size}\r\n searchable={searchable}\r\n maxDropdownHeight={320}\r\n nothingFoundMessage=\"No matching controls\"\r\n {...rest}\r\n data={data}\r\n value={value.map(String)}\r\n onChange={(vals) => onChange(vals.map((v) => Number(v)).filter((n) => Number.isFinite(n)))}\r\n />\r\n );\r\n}\r\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\r\n// configurators (BasicSection, BackstoriesSection, ThemeOverrideSection, …).\r\n// Centralising it here means a single visual style — dark[5] tinted\r\n// background, faint white outline, primary-colored track when on — instead of\r\n// each consumer hand-rolling slightly different borders/colours.\r\n//\r\n// Variants:\r\n// • default — tall row with description, used at the top of a tab/section\r\n// • compact — smaller padding + sm switch, for nested editor cards (e.g.\r\n// waypoint useNavmesh inside the SceneEditor walk-path block)\r\n//\r\n// `thumbIcon` supports the Lock-on-thumb pattern used by gated toggles.\r\n\r\nimport { alpha, Flex, Switch, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { ReactNode } from \"react\";\r\n\r\nexport type SwitchPanelProps = {\r\n label: ReactNode;\r\n description?: ReactNode;\r\n checked: boolean;\r\n onChange: (v: boolean) => void;\r\n disabled?: boolean;\r\n /** Icon rendered on the Switch's thumb (e.g. a Lock when locked). */\r\n thumbIcon?: ReactNode;\r\n /** Compact variant — used for nested rows inside an editor card. */\r\n compact?: boolean;\r\n};\r\n\r\nexport function SwitchPanel({\r\n label,\r\n description,\r\n checked,\r\n onChange,\r\n disabled,\r\n thumbIcon,\r\n compact,\r\n}: SwitchPanelProps) {\r\n const theme = useMantineTheme();\r\n const pc = theme.colors[theme.primaryColor];\r\n\r\n const bg = compact\r\n ? alpha(theme.colors.dark[6], 0.5)\r\n : alpha(theme.colors.dark[5], 0.35);\r\n const border = compact\r\n ? \"0.1vh solid rgba(255,255,255,0.04)\"\r\n : \"0.1vh solid rgba(255,255,255,0.05)\";\r\n\r\n return (\r\n <Flex\r\n justify=\"space-between\"\r\n align=\"center\"\r\n px={compact ? \"xs\" : \"xs\"}\r\n py={compact ? \"xxs\" : \"xs\"}\r\n style={{\r\n background: bg,\r\n border,\r\n borderRadius: theme.radius.xs,\r\n opacity: disabled ? 0.5 : 1,\r\n }}\r\n >\r\n <Flex direction=\"column\" gap=\"xxs\" style={{ flex: 1, minWidth: 0 }}>\r\n {typeof label === \"string\" ? (\r\n compact ? (\r\n <Text\r\n ff=\"Akrobat Bold\"\r\n size=\"xxs\"\r\n c=\"rgba(255,255,255,0.85)\"\r\n tt=\"uppercase\"\r\n lts=\"0.05em\"\r\n >\r\n {label}\r\n </Text>\r\n ) : (\r\n <Text ff=\"Akrobat Bold\" size=\"xs\" c=\"rgba(255,255,255,0.85)\">\r\n {label}\r\n </Text>\r\n )\r\n ) : (\r\n label\r\n )}\r\n {description && (\r\n typeof description === \"string\" ? (\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c={compact ? \"rgba(255,255,255,0.4)\" : \"rgba(255,255,255,0.45)\"}>\r\n {description}\r\n </Text>\r\n ) : (\r\n description\r\n )\r\n )}\r\n </Flex>\r\n <Switch\r\n checked={checked}\r\n disabled={disabled}\r\n onChange={(e) => onChange(e.currentTarget.checked)}\r\n size={compact ? \"sm\" : \"md\"}\r\n thumbIcon={thumbIcon}\r\n styles={{\r\n track: {\r\n background: checked ? alpha(pc[6], 0.4) : \"rgba(255,255,255,0.08)\",\r\n borderColor: checked ? alpha(pc[6], 0.6) : \"rgba(255,255,255,0.1)\",\r\n },\r\n }}\r\n />\r\n </Flex>\r\n );\r\n}\r\n","import { ActionIcon, Flex, Stack, Text } from \"@mantine/core\";\r\nimport { ChevronDown, ChevronUp, FlaskConical } from \"lucide-react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { isEnvBrowser } from \"../../utils/misc\";\r\n\r\nexport interface TestBedItem {\r\n key: string;\r\n label: string;\r\n active: boolean;\r\n onToggle: (next: boolean) => void;\r\n}\r\n\r\nexport type TestBedPlacement = \"top-left\" | \"top-center\" | \"top-right\";\r\n\r\nexport interface TestBedProps {\r\n items: TestBedItem[];\r\n /** localStorage key used to persist toggled state across reloads. Default: \"testbed:open-state\". */\r\n storageKey?: string;\r\n /** Disable localStorage persistence entirely. Default: false. */\r\n disablePersistence?: boolean;\r\n /** Header label shown in the collapsed pill. Default: \"TestBed\". */\r\n title?: string;\r\n /** Where to anchor the floating panel. Default: \"top-left\". */\r\n placement?: TestBedPlacement;\r\n}\r\n\r\nconst placementStyle = (placement: TestBedPlacement): React.CSSProperties => {\r\n switch (placement) {\r\n case \"top-center\":\r\n return { top: \"1vh\", left: \"50%\", transform: \"translateX(-50%)\" };\r\n case \"top-right\":\r\n return { top: \"1vh\", right: \"1vh\" };\r\n case \"top-left\":\r\n default:\r\n return { top: \"1vh\", left: \"1vh\" };\r\n }\r\n};\r\n\r\nconst loadPersistedState = (storageKey: string): Record<string, boolean> => {\r\n try {\r\n const raw = localStorage.getItem(storageKey);\r\n return raw ? JSON.parse(raw) : {};\r\n } catch {\r\n return {};\r\n }\r\n};\r\n\r\nconst savePersistedState = (storageKey: string, state: Record<string, boolean>) => {\r\n try {\r\n localStorage.setItem(storageKey, JSON.stringify(state));\r\n } catch {}\r\n};\r\n\r\nexport function TestBed({\r\n items,\r\n storageKey = \"testbed:open-state\",\r\n disablePersistence = false,\r\n title = \"TestBed\",\r\n placement = \"top-left\",\r\n}: TestBedProps) {\r\n const [open, setOpen] = useState(false);\r\n const itemsRef = useRef(items);\r\n itemsRef.current = items;\r\n\r\n useEffect(() => {\r\n if (!isEnvBrowser() || disablePersistence) return;\r\n const persisted = loadPersistedState(storageKey);\r\n itemsRef.current.forEach((item) => {\r\n const persistedValue = persisted[item.key];\r\n if (typeof persistedValue === \"boolean\" && persistedValue !== item.active) {\r\n item.onToggle(persistedValue);\r\n }\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n if (!isEnvBrowser()) return null;\r\n\r\n const toggle = (item: TestBedItem) => {\r\n const next = !item.active;\r\n item.onToggle(next);\r\n if (!disablePersistence) {\r\n const persisted = loadPersistedState(storageKey);\r\n persisted[item.key] = next;\r\n savePersistedState(storageKey, persisted);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"fixed\",\r\n ...placementStyle(placement),\r\n zIndex: 2147483647,\r\n pointerEvents: \"auto\",\r\n fontSize: \"1.4vh\",\r\n }}\r\n >\r\n <Flex\r\n align=\"center\"\r\n gap=\"xs\"\r\n px=\"sm\"\r\n py=\"xs\"\r\n onClick={() => setOpen((v) => !v)}\r\n style={{\r\n cursor: \"pointer\",\r\n background: \"rgba(0,0,0,0.55)\",\r\n backdropFilter: \"blur(0.6vh)\",\r\n WebkitBackdropFilter: \"blur(0.6vh)\",\r\n border: \"0.1vh solid rgba(255,255,255,0.1)\",\r\n borderRadius: \"var(--mantine-radius-sm)\",\r\n userSelect: \"none\",\r\n minWidth: \"16vh\",\r\n }}\r\n >\r\n <FlaskConical size={14} color=\"rgba(255,255,255,0.7)\" />\r\n <Text\r\n size=\"xs\"\r\n ff=\"Akrobat Bold\"\r\n tt=\"uppercase\"\r\n lts=\"0.08em\"\r\n c=\"rgba(255,255,255,0.85)\"\r\n style={{ flex: 1 }}\r\n >\r\n {title}\r\n </Text>\r\n <ActionIcon size=\"xs\" variant=\"transparent\" c=\"rgba(255,255,255,0.6)\">\r\n {open ? <ChevronUp size={14} /> : <ChevronDown size={14} />}\r\n </ActionIcon>\r\n </Flex>\r\n\r\n {open && (\r\n <Stack\r\n gap={4}\r\n mt=\"xxs\"\r\n p=\"xs\"\r\n style={{\r\n background: \"rgba(0,0,0,0.55)\",\r\n backdropFilter: \"blur(0.6vh)\",\r\n WebkitBackdropFilter: \"blur(0.6vh)\",\r\n border: \"0.1vh solid rgba(255,255,255,0.1)\",\r\n borderRadius: \"var(--mantine-radius-sm)\",\r\n minWidth: \"16vh\",\r\n maxHeight: \"80vh\",\r\n overflowY: \"auto\",\r\n }}\r\n >\r\n {items.map((item) => (\r\n <Flex\r\n key={item.key}\r\n align=\"center\"\r\n justify=\"space-between\"\r\n gap=\"xs\"\r\n px=\"xs\"\r\n py=\"xxs\"\r\n onClick={() => toggle(item)}\r\n style={{\r\n cursor: \"pointer\",\r\n borderRadius: \"var(--mantine-radius-xs)\",\r\n background: item.active ? \"rgba(245,158,11,0.15)\" : \"rgba(255,255,255,0.03)\",\r\n border: `0.1vh solid ${item.active ? \"rgba(245,158,11,0.35)\" : \"rgba(255,255,255,0.05)\"}`,\r\n userSelect: \"none\",\r\n }}\r\n >\r\n <Text\r\n size=\"xs\"\r\n ff=\"Akrobat Bold\"\r\n c={item.active ? \"#f59e0b\" : \"rgba(255,255,255,0.75)\"}\r\n >\r\n {item.label}\r\n </Text>\r\n <Text\r\n size=\"xxs\"\r\n ff=\"Akrobat Bold\"\r\n tt=\"uppercase\"\r\n lts=\"0.06em\"\r\n c={item.active ? \"#f59e0b\" : \"rgba(255,255,255,0.35)\"}\r\n >\r\n {item.active ? \"On\" : \"Off\"}\r\n </Text>\r\n </Flex>\r\n ))}\r\n </Stack>\r\n )}\r\n </div>\r\n );\r\n}\r\n","// Per-resource theme override editor. Rendered inside a consumer resource's\r\n// configurator (e.g. dirk_multichar, dirk_fishing) to let admins decouple\r\n// that resource's theme from dirk_lib's global appearance.\r\n//\r\n// Data shape (driven by a schema block on the consumer side):\r\n// theme: {\r\n// useOverride: boolean,\r\n// primaryColor: string, // \"dirk\" | \"custom\" | mantine palette name\r\n// primaryShade: 0..9,\r\n// customTheme: string[10], // hex stops\r\n// }\r\n//\r\n// The override flag goes through the same scriptConfig path as everything\r\n// else — the resource's GET_SETTINGS callback is responsible for deciding\r\n// whether to push the global theme keys or the override keys to NUI on\r\n// hydration. DirkProvider's UPDATE_DIRK_LIB_SETTINGS listener gates global\r\n// pushes when the consumer has its own override active (see useSettings).\r\n//\r\n// Reset-to-global = flip the override switch off. The saved palette stays so\r\n// admins can re-enable without re-picking colours. A separate wipe trash icon\r\n// nukes the local palette back to the schema default.\r\n\r\nimport { generateColors } from \"@mantine/colors-generator\";\r\nimport {\r\n ActionIcon,\r\n ColorInput,\r\n Flex,\r\n NumberInput,\r\n Popover,\r\n Select,\r\n Switch,\r\n Text,\r\n useMantineTheme,\r\n} from \"@mantine/core\";\r\nimport { Palette, RotateCcw } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\nimport { useFormActions, useFormField } from \"@/hooks/useForm\";\r\nimport { locale } from \"@/utils/locales\";\r\nimport {\r\n DEFAULT_PALETTE,\r\n defaultThemeOverride as DEFAULT_VALUE,\r\n type ThemeOverrideValue,\r\n} from \"@/types/theme\";\r\nimport { AdminPageTitle } from \"./AdminPageTitle\";\r\nimport { SwitchPanel } from \"./SwitchPanel\";\r\n\r\n// NOTE: `ThemeOverrideValue` is intentionally NOT re-exported here anymore — it\r\n// now lives in `@/types/theme` (single source of truth, shared with\r\n// useSettings) and is surfaced via the top-level `types` barrel. Re-exporting\r\n// it from this module too would create an ambiguous `export *` at src/index.ts.\r\n\r\nconst MANTINE_COLOR_OPTIONS = [\r\n \"dirk\",\r\n \"red\",\r\n \"pink\",\r\n \"grape\",\r\n \"violet\",\r\n \"indigo\",\r\n \"blue\",\r\n \"cyan\",\r\n \"teal\",\r\n \"green\",\r\n \"lime\",\r\n \"yellow\",\r\n \"orange\",\r\n].map((value) => ({ value, label: value }));\r\n\r\nfunction GroupLabel({ label }: { label: string }) {\r\n return (\r\n <Flex align=\"center\" gap=\"xs\" mt=\"xxs\">\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.07em\" c=\"rgba(255,255,255,0.2)\">\r\n {label}\r\n </Text>\r\n <div style={{ flex: 1, height: \"0.05vh\", background: \"rgba(255,255,255,0.06)\" }} />\r\n </Flex>\r\n );\r\n}\r\n\r\nexport type ThemeOverrideSectionProps = {\r\n /**\r\n * Schema path the consumer stores its override block under. Defaults to\r\n * \"theme\" — matches the recommended schema key.\r\n */\r\n schemaKey?: string;\r\n /**\r\n * Optional title for the AdminPageTitle. Defaults to the localized\r\n * \"Theme\" string with a fallback.\r\n */\r\n title?: string;\r\n};\r\n\r\nexport function ThemeOverrideSection({\r\n schemaKey = \"theme\",\r\n title,\r\n}: ThemeOverrideSectionProps) {\r\n const mantineTheme = useMantineTheme();\r\n const color = mantineTheme.colors[mantineTheme.primaryColor][5];\r\n\r\n const raw = useFormField<Record<string, ThemeOverrideValue>>(schemaKey as never) as\r\n | Partial<ThemeOverrideValue>\r\n | undefined;\r\n // Normalise — the form field could be undefined at first paint, and any of\r\n // the inner fields could be missing if the schema default block hasn't\r\n // fully hydrated. Merge against DEFAULT_VALUE so the inputs always have\r\n // something to render.\r\n const value: ThemeOverrideValue = {\r\n useOverride: raw?.useOverride ?? DEFAULT_VALUE.useOverride,\r\n primaryColor: raw?.primaryColor ?? DEFAULT_VALUE.primaryColor,\r\n primaryShade: raw?.primaryShade ?? DEFAULT_VALUE.primaryShade,\r\n customTheme:\r\n Array.isArray(raw?.customTheme) && raw!.customTheme.length === 10\r\n ? (raw!.customTheme as string[])\r\n : DEFAULT_VALUE.customTheme,\r\n };\r\n\r\n const { setValue } = useFormActions<Record<string, ThemeOverrideValue>>();\r\n const set = <K extends keyof ThemeOverrideValue>(key: K, val: ThemeOverrideValue[K]) =>\r\n setValue(schemaKey as never, { ...value, [key]: val } as never);\r\n\r\n const useCustom = value.primaryColor === \"custom\";\r\n const editable = value.useOverride;\r\n\r\n const setSwatch = (index: number, hex: string) => {\r\n const next = [...value.customTheme];\r\n next[index] = hex;\r\n set(\"customTheme\", next);\r\n };\r\n\r\n const generateFromBase = (hex: string) => {\r\n try {\r\n const generated = generateColors(hex);\r\n set(\"customTheme\", generated as unknown as string[]);\r\n } catch {\r\n // invalid colour — ignore\r\n }\r\n };\r\n\r\n const resetPalette = () => set(\"customTheme\", DEFAULT_PALETTE);\r\n\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n gap=\"xs\"\r\n p=\"sm\"\r\n style={{ flex: 1, minHeight: 0, overflowY: \"auto\" }}\r\n >\r\n <AdminPageTitle\r\n icon={Palette}\r\n title={title || locale(\"Theme\") || \"Theme\"}\r\n color={color}\r\n />\r\n\r\n {/* Master toggle — flipping this off resets the resource to follow the\r\n global dirk_lib theme. The saved palette is preserved so re-enabling\r\n doesn't lose work. Uses the shared SwitchPanel so the outline + Switch\r\n styling match every other configurator section. */}\r\n <SwitchPanel\r\n label={locale(\"OverrideGlobalTheme\") || \"Override global theme\"}\r\n description={\r\n locale(\"OverrideGlobalThemeDesc\") ||\r\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.\"\r\n }\r\n checked={value.useOverride}\r\n onChange={(v) => set(\"useOverride\", v)}\r\n />\r\n\r\n <div\r\n style={{\r\n opacity: editable ? 1 : 0.4,\r\n pointerEvents: editable ? \"auto\" : \"none\",\r\n transition: \"opacity 0.15s\",\r\n }}\r\n >\r\n <GroupLabel label={locale(\"PrimaryColor\") || \"Primary Colour\"} />\r\n\r\n <Switch\r\n label={locale(\"UseCustomPalette\") || \"Use custom palette\"}\r\n size=\"md\"\r\n mt=\"xs\"\r\n checked={useCustom}\r\n onChange={(e) => set(\"primaryColor\", e.currentTarget.checked ? \"custom\" : \"dirk\")}\r\n styles={{\r\n label: {\r\n fontFamily: \"Akrobat Bold\",\r\n fontSize: \"0.65em\",\r\n letterSpacing: \"0.06em\",\r\n textTransform: \"uppercase\",\r\n color: \"rgba(255,255,255,0.35)\",\r\n },\r\n }}\r\n />\r\n\r\n <Flex gap=\"xs\" mt=\"xs\">\r\n {!useCustom && (\r\n <Select\r\n label={locale(\"MantinePalette\") || \"Mantine palette\"}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n value={value.primaryColor}\r\n data={MANTINE_COLOR_OPTIONS}\r\n allowDeselect={false}\r\n onChange={(v) => v && set(\"primaryColor\", v)}\r\n />\r\n )}\r\n <NumberInput\r\n label={locale(\"Shade\") || \"Shade\"}\r\n size=\"xs\"\r\n style={{ flex: 1 }}\r\n min={0}\r\n max={9}\r\n value={value.primaryShade}\r\n onChange={(v) => set(\"primaryShade\", Number(v))}\r\n />\r\n </Flex>\r\n\r\n {useCustom && (\r\n <>\r\n <Flex align=\"center\" justify=\"space-between\" mt=\"sm\">\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.2)\"\r\n >\r\n {locale(\"CustomPalette\") || \"Custom palette\"}\r\n </Text>\r\n <ActionIcon\r\n size=\"sm\"\r\n variant=\"subtle\"\r\n onClick={resetPalette}\r\n title={locale(\"ResetPalette\") || \"Reset palette\"}\r\n >\r\n <RotateCcw size=\"1.4vh\" />\r\n </ActionIcon>\r\n </Flex>\r\n\r\n <ColorInput\r\n label={locale(\"BaseColor\") || \"Base colour\"}\r\n size=\"xs\"\r\n value={value.customTheme[value.primaryShade] ?? value.customTheme[5] ?? \"#000000\"}\r\n onChange={generateFromBase}\r\n eyeDropperIcon={<></>}\r\n />\r\n\r\n <Flex gap=\"xxs\" mt=\"xxs\">\r\n {value.customTheme.map((swatch, i) => (\r\n <SwatchTile\r\n key={i}\r\n index={i}\r\n value={swatch}\r\n isPrimary={i === value.primaryShade}\r\n onChange={(v) => setSwatch(i, v)}\r\n />\r\n ))}\r\n </Flex>\r\n </>\r\n )}\r\n </div>\r\n </Flex>\r\n );\r\n}\r\n\r\nfunction SwatchTile({\r\n index,\r\n value,\r\n isPrimary,\r\n onChange,\r\n}: {\r\n index: number;\r\n value: string;\r\n isPrimary: boolean;\r\n onChange: (v: string) => void;\r\n}) {\r\n const [opened, setOpened] = useState(false);\r\n return (\r\n <Popover opened={opened} onChange={setOpened} position=\"bottom\" withArrow zIndex={10000}>\r\n <Popover.Target>\r\n <button\r\n onClick={() => setOpened((o) => !o)}\r\n title={`${index} · ${value}`}\r\n style={{\r\n flex: 1,\r\n aspectRatio: \"1 / 1\",\r\n background: value,\r\n border: isPrimary\r\n ? \"0.2vh solid rgba(255,255,255,0.85)\"\r\n : \"0.1vh solid rgba(255,255,255,0.15)\",\r\n borderRadius: \"0.4vh\",\r\n cursor: \"pointer\",\r\n padding: 0,\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n justifyContent: \"flex-end\",\r\n position: \"relative\",\r\n }}\r\n >\r\n <span\r\n style={{\r\n fontFamily: \"Akrobat Bold\",\r\n fontSize: \"0.9vh\",\r\n lineHeight: 1,\r\n padding: \"0.2vh 0.3vh\",\r\n color: \"rgba(0,0,0,0.55)\",\r\n background: \"rgba(255,255,255,0.55)\",\r\n borderRadius: \"0.25vh\",\r\n margin: \"0.2vh\",\r\n }}\r\n >\r\n {index}\r\n </span>\r\n </button>\r\n </Popover.Target>\r\n <Popover.Dropdown p=\"xs\">\r\n <ColorInput\r\n size=\"xs\"\r\n value={value}\r\n onChange={onChange}\r\n format=\"hex\"\r\n eyeDropperIcon={<></>}\r\n />\r\n </Popover.Dropdown>\r\n </Popover>\r\n );\r\n}\r\n","// Player picker. Drop-in Mantine <Select> wrapper around usePlayers().\r\n//\r\n// Default mode (online only):\r\n// <PlayerSelect value={citizenId} onChange={p => set('owner', p?.id)} />\r\n//\r\n// Search-driven offline support (includes the persistent players table):\r\n// <PlayerSelect includeOffline value={citizenId} onChange={p => set('owner', p?.citizenId)} />\r\n//\r\n// `value` is a citizenId string (or null). `onChange` receives the full\r\n// Player object so callers pick what to persist — server id for live\r\n// targeting, citizenId for persistent ownership.\r\n//\r\n// Each row renders with a colored status dot on the right:\r\n// • green for online (id is non-null)\r\n// • red for offline (id is null)\r\n//\r\n// In offline mode, typing into the input triggers debounced server-side\r\n// searches (300ms). react-query caches each unique search so retyping is\r\n// instant. A 🔄 refresh button in the rightSection forces a fresh fetch.\r\n\r\nimport { ActionIcon, Group, Loader, Select, Text, type SelectProps, useMantineTheme } from \"@mantine/core\";\r\nimport { RefreshCw } from \"lucide-react\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { usePlayers, type Player } from \"../../hooks/usePlayers\";\r\n\r\nexport type PlayerSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\" | \"rightSection\" | \"renderOption\"> & {\r\n value: string | null;\r\n onChange: (player: Player | null) => void;\r\n /** When true, runs a DB-backed search across offline + online. Enables\r\n * the search box behaviour. Default false (online only). */\r\n includeOffline?: boolean;\r\n /** Cap on results returned (max 50, server-enforced). */\r\n limit?: number;\r\n /** Localisable label overrides. Defaults are English. Pass locale()'d\r\n * strings from the consumer to translate the dropdown chrome. */\r\n loadingLabel?: string;\r\n onlineLabel?: string;\r\n offlineLabel?: string;\r\n refreshLabel?: string;\r\n};\r\n\r\nconst DEBOUNCE_MS = 300;\r\nconst ONLINE_COLOR = \"#3FA83F\"; // green\r\nconst OFFLINE_COLOR = \"#E54141\"; // red\r\n\r\nexport function PlayerSelect({\r\n value,\r\n onChange,\r\n includeOffline = false,\r\n limit = 50,\r\n searchable: searchableProp,\r\n placeholder,\r\n nothingFoundMessage: nothingFoundMessageProp,\r\n loadingLabel = \"Loading…\",\r\n onlineLabel = \"Online\",\r\n offlineLabel = \"Offline\",\r\n refreshLabel = \"Refresh player list\",\r\n ...rest\r\n}: PlayerSelectProps) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n\r\n // Local search input + debounced version we feed the hook — avoids a\r\n // request per keystroke.\r\n const [searchInput, setSearchInput] = useState(\"\");\r\n const [debouncedSearch, setDebouncedSearch] = useState(\"\");\r\n\r\n const { players, isFetching, refresh } = usePlayers({\r\n includeOffline,\r\n search: includeOffline ? debouncedSearch : undefined,\r\n limit,\r\n });\r\n\r\n // Online first, then alphabetical by charName — admins want to see the\r\n // currently-connected players at the top of the list.\r\n const sortedPlayers = useMemo(\r\n () =>\r\n [...players].sort((a, b) => {\r\n if (a.online !== b.online) return a.online ? -1 : 1;\r\n return a.charName.localeCompare(b.charName);\r\n }),\r\n [players],\r\n );\r\n\r\n const playerByCitizen = useMemo(() => {\r\n const m = new Map<string, Player>();\r\n for (const p of sortedPlayers) m.set(p.citizenId, p);\r\n return m;\r\n }, [sortedPlayers]);\r\n\r\n const data = useMemo(() => {\r\n const items = sortedPlayers.map((p) => ({\r\n value: p.citizenId,\r\n label: formatLabel(p),\r\n }));\r\n // If the controlled value isn't in the current player list (e.g. a\r\n // persistent lab owner who isn't online and hasn't been searched yet),\r\n // inject a synthetic option so Mantine can render the value text\r\n // instead of falling back to the placeholder.\r\n if (value && !items.some((i) => i.value === value)) {\r\n items.unshift({ value, label: value });\r\n }\r\n return items;\r\n }, [sortedPlayers, value]);\r\n\r\n const selectedPlayer = value ? playerByCitizen.get(value) ?? null : null;\r\n const selectedLabel = selectedPlayer ? formatLabel(selectedPlayer) : null;\r\n\r\n // Debounce the search → debouncedSearch. Short-circuit when the input\r\n // exactly matches the currently-selected player's formatted label —\r\n // Mantine auto-fills the search input with the selected option's label\r\n // after a pick, and we don't want that to trigger a phantom search\r\n // (which would empty the data list, fall back to the synthetic option\r\n // with raw citizenId, then flip back via keepPreviousData → visible\r\n // label cycling between formatted name and raw id).\r\n useEffect(() => {\r\n if (!includeOffline) return;\r\n if (selectedLabel && searchInput === selectedLabel) return;\r\n const t = setTimeout(() => setDebouncedSearch(searchInput), DEBOUNCE_MS);\r\n return () => clearTimeout(t);\r\n }, [searchInput, includeOffline, selectedLabel]);\r\n\r\n // Custom row renderer — name on the left, colored dot on the right.\r\n const renderOption: SelectProps[\"renderOption\"] = ({ option }) => {\r\n const p = playerByCitizen.get(option.value);\r\n if (!p) return option.label;\r\n return (\r\n <Group justify=\"space-between\" wrap=\"nowrap\" gap=\"xs\" style={{ width: \"100%\" }}>\r\n <Text size=\"xs\" truncate style={{ flex: 1 }}>\r\n {formatLabel(p)}\r\n </Text>\r\n <StatusDot online={p.online} onlineLabel={onlineLabel} offlineLabel={offlineLabel} />\r\n </Group>\r\n );\r\n };\r\n\r\n return (\r\n <Select\r\n {...rest}\r\n data={data}\r\n value={value ?? null}\r\n onChange={(v) => {\r\n if (!v) return onChange(null);\r\n const player = playerByCitizen.get(v) ?? null;\r\n onChange(player);\r\n }}\r\n searchable={searchableProp ?? true}\r\n searchValue={includeOffline ? searchInput : undefined}\r\n onSearchChange={includeOffline ? setSearchInput : undefined}\r\n placeholder={placeholder}\r\n nothingFoundMessage={isFetching ? loadingLabel : (nothingFoundMessageProp ?? \"No players found\")}\r\n maxDropdownHeight={300}\r\n renderOption={renderOption}\r\n leftSection={selectedPlayer ? <StatusDot online={selectedPlayer.online} onlineLabel={onlineLabel} offlineLabel={offlineLabel} /> : undefined}\r\n rightSectionWidth=\"3.5vh\"\r\n rightSectionPointerEvents=\"all\"\r\n rightSection={\r\n <ActionIcon\r\n variant=\"subtle\"\r\n size=\"sm\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n refresh();\r\n }}\r\n aria-label={refreshLabel}\r\n title={refreshLabel}\r\n style={{ marginRight: \"0.6vh\" }}\r\n >\r\n {isFetching ? <Loader size=\"1.2vh\" color={color} /> : <RefreshCw size=\"1.4vh\" color={color} />}\r\n </ActionIcon>\r\n }\r\n />\r\n );\r\n}\r\n\r\nfunction StatusDot({ online, onlineLabel, offlineLabel }: { online: boolean; onlineLabel: string; offlineLabel: string }) {\r\n return (\r\n <span\r\n title={online ? onlineLabel : offlineLabel}\r\n style={{\r\n display: \"inline-block\",\r\n width: \"0.9vh\",\r\n height: \"0.9vh\",\r\n borderRadius: \"50%\",\r\n backgroundColor: online ? ONLINE_COLOR : OFFLINE_COLOR,\r\n boxShadow: `0 0 0.4vh ${online ? ONLINE_COLOR : OFFLINE_COLOR}`,\r\n flexShrink: 0,\r\n }}\r\n />\r\n );\r\n}\r\n\r\nfunction formatLabel(p: Player): string {\r\n // \"John Doe · Dirk · #42\" (online with display name)\r\n // \"John Doe · #42\" (online, blank display name)\r\n // \"John Doe\" (offline)\r\n const parts: string[] = [p.charName || p.citizenId];\r\n if (p.online) {\r\n if (p.name) parts.push(p.name);\r\n if (p.id != null) parts.push(`#${p.id}`);\r\n }\r\n return parts.join(\" · \");\r\n}\r\n","// Per-resource ACCESS-OVERRIDES editor. Rendered inside a consumer resource's\n// configurator (e.g. dirk_weed, dirk_fishing) to let admins grant access to a\n// resource's admin/config panel to specific ACE groups/permissions and\n// individual players (by identifier) — on top of whatever dirk_lib's global\n// admin gate already allows.\n//\n// Data shape (driven by a schema block on the consumer side):\n// access: {\n// groups: string[], // ACE groups / permissions, checked server-side\n// // via IsPlayerAceAllowed (e.g. group.admin,\n// // dirkscripts.command.fishing). NOT jobs/gangs.\n// identifiers: string[], // persistent player ids as PlayerSelect yields\n// // them — citizenid (qb/qbx) or license (esx).\n// }\n//\n// dirk_lib's server-side check matches each stored id against BOTH the\n// framework's persistent id (lib.player.identifier — what we store here, so it\n// works even for players granted while offline) AND raw FiveM identifiers\n// (GetPlayerIdentifiers — license:/discord:/…), so a hand-entered license: also\n// works.\n//\n// Editor-ONLY. This component just edits the block — it does NOT enforce\n// anything. Enforcement is entirely server-side in dirk_lib, which reads the\n// same scriptConfig path and decides whether a given source is allowed.\n//\n// Mirrors ThemeOverrideSection's idiom: AdminPageTitle header, a short\n// description, then editable rows. Each list normalises against an empty array\n// so the inputs always render even before the schema block hydrates.\n\nimport { ActionIcon, alpha, Flex, Text, TextInput, useMantineTheme } from \"@mantine/core\";\nimport { ShieldCheck, Plus, Trash2, Users, UserRound } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useFormActions, useFormField } from \"@/hooks/useForm\";\nimport { locale } from \"@/utils/locales\";\nimport { AdminPageTitle } from \"./AdminPageTitle\";\nimport { PlayerSelect } from \"./AdminTools/PlayerSelect\";\n\n// Common ACE groups offered as one-click quick-adds. Access is enforced\n// server-side via IsPlayerAceAllowed, so these are ACE group/permission\n// strings — NOT in-game jobs/gangs.\nconst COMMON_ACE_GROUPS = [\"group.admin\", \"group.mod\", \"group.superadmin\"];\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\nexport type AccessOverrideValue = {\n /** ACE groups / permissions allowed to access this resource. Checked\n * server-side via IsPlayerAceAllowed (e.g. group.admin). NOT jobs/gangs. */\n groups: string[];\n /** Persistent player ids (citizenid on qb/qbx, license on esx — what\n * PlayerSelect yields). dirk_lib also matches raw FiveM identifiers. */\n identifiers: string[];\n};\n\nconst DEFAULT_VALUE: AccessOverrideValue = {\n groups: [],\n identifiers: [],\n};\n\nfunction SectionLabel({ icon: Icon, label }: { icon: typeof Users; label: string }) {\n return (\n <Flex align=\"center\" gap=\"xs\" mt=\"xs\">\n <Icon size=\"1.4vh\" color=\"rgba(255,255,255,0.3)\" />\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\nfunction EmptyHint({ text }: { text: string }) {\n return (\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.25)\" ta=\"center\" py=\"xs\">\n {text}\n </Text>\n );\n}\n\nexport type AccessOverrideSectionProps = {\n /**\n * Schema path the consumer stores its access block under. Defaults to\n * \"access\" — matches the recommended schema key.\n */\n schemaKey?: string;\n /**\n * Optional title for the AdminPageTitle. Defaults to the localized\n * \"Access\" string with a fallback.\n */\n title?: string;\n /**\n * Optional description shown under the title. Defaults to a localized\n * explanation with a fallback.\n */\n description?: string;\n /**\n * When true, the player picker searches offline players (DB-backed) too.\n * Defaults to true so admins can grant access to players who aren't online.\n */\n includeOffline?: boolean;\n};\n\nexport function AccessOverrideSection({\n schemaKey = \"access\",\n title,\n description,\n includeOffline = true,\n}: AccessOverrideSectionProps) {\n const mantineTheme = useMantineTheme();\n const color = mantineTheme.colors[mantineTheme.primaryColor][5];\n\n const raw = useFormField<Record<string, AccessOverrideValue>>(schemaKey as never) as\n | Partial<AccessOverrideValue>\n | undefined;\n\n // Normalise — the form field could be undefined at first paint, and either\n // inner array could be missing if the schema default block hasn't fully\n // hydrated. Merge against DEFAULT_VALUE so the lists always render.\n const value: AccessOverrideValue = {\n groups: Array.isArray(raw?.groups) ? (raw!.groups as string[]) : DEFAULT_VALUE.groups,\n identifiers: Array.isArray(raw?.identifiers)\n ? (raw!.identifiers as string[])\n : DEFAULT_VALUE.identifiers,\n };\n\n const { setValue } = useFormActions<Record<string, AccessOverrideValue>>();\n const set = <K extends keyof AccessOverrideValue>(key: K, val: AccessOverrideValue[K]) =>\n setValue(schemaKey as never, { ...value, [key]: val } as never);\n\n // An in-progress \"add\" row is LOCAL state only — it isn't written to the form\n // (and so never persists an empty \"\" entry to the DB) until a real value is\n // picked. Committed rows live in the form. Only one pending add row per list.\n const [addingGroup, setAddingGroup] = useState(false);\n const [addingPlayer, setAddingPlayer] = useState(false);\n\n // ── groups (ACE) ──────────────────────────────────────────────────────────\n const commitGroup = (name: string) => {\n const g = name.trim();\n if (!g) return;\n if (!value.groups.includes(g)) set(\"groups\", [...value.groups, g]);\n setAddingGroup(false);\n };\n const setGroup = (index: number, name: string) => {\n const next = [...value.groups];\n next[index] = name;\n set(\"groups\", next);\n };\n // Quick-add a common ACE group; skip if it's already present.\n const quickAddGroup = (name: string) => {\n if (value.groups.includes(name)) return;\n set(\"groups\", [...value.groups, name]);\n };\n const removeGroup = (index: number) =>\n set(\"groups\", value.groups.filter((_, i) => i !== index));\n\n // ── identifiers ─────────────────────────────────────────────────────────\n const commitIdentifier = (id: string) => {\n if (!id) return;\n set(\"identifiers\", [...value.identifiers, id]);\n setAddingPlayer(false);\n };\n const setIdentifier = (index: number, id: string) => {\n const next = [...value.identifiers];\n next[index] = id;\n set(\"identifiers\", next.filter((x) => x !== \"\"));\n };\n const removeIdentifier = (index: number) =>\n set(\"identifiers\", value.identifiers.filter((_, i) => i !== index));\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={ShieldCheck}\n title={title || t(\"Access\", \"Access\")}\n color={color}\n />\n\n <Text ff=\"Akrobat Bold\" size=\"xxs\" c=\"rgba(255,255,255,0.4)\">\n {description ||\n t(\n \"AccessOverrideDesc\",\n \"Grant access to this resource's admin panel to specific ACE groups and players, in addition to your global dirk_lib admins. Enforcement is server-side.\",\n )}\n </Text>\n\n {/* ── Admin groups (ACE) ──────────────────────────────────────────── */}\n <SectionLabel icon={Users} label={t(\"AccessGroups\", \"Admin groups (ACE)\")} />\n\n {/* Quick-add chips for the common ACE groups. */}\n <Flex gap=\"xs\" wrap=\"wrap\">\n {COMMON_ACE_GROUPS.map((g) => {\n const added = value.groups.includes(g);\n return (\n <Flex\n key={g}\n align=\"center\"\n gap=\"xxs\"\n onClick={added ? undefined : () => quickAddGroup(g)}\n role=\"button\"\n tabIndex={added ? -1 : 0}\n aria-disabled={added}\n onKeyDown={(e) => {\n if (added) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n quickAddGroup(g);\n }\n }}\n px=\"xs\"\n py=\"xxs\"\n style={{\n cursor: added ? \"default\" : \"pointer\",\n opacity: added ? 0.4 : 1,\n background: alpha(color, 0.12),\n border: `0.1vh solid ${alpha(color, 0.4)}`,\n borderRadius: \"0.4vh\",\n transition: \"background 0.15s, border-color 0.15s\",\n }}\n onMouseEnter={(e) => {\n if (added) return;\n e.currentTarget.style.background = alpha(color, 0.22);\n }}\n onMouseLeave={(e) => {\n if (added) return;\n e.currentTarget.style.background = alpha(color, 0.12);\n }}\n >\n {!added && <Plus size=\"1.2vh\" color={color} />}\n <Text ff=\"Akrobat Bold\" size=\"xxs\" lts=\"0.04em\" c={color}>\n {g}\n </Text>\n </Flex>\n );\n })}\n </Flex>\n\n <Flex direction=\"column\" gap=\"xxs\">\n {value.groups.length === 0 && !addingGroup && (\n <EmptyHint\n text={t(\"AccessNoGroups\", \"No ACE groups added. e.g. group.admin\")}\n />\n )}\n {value.groups.map((name, i) => (\n <Flex key={i} align=\"center\" gap=\"xs\">\n <TextInput\n value={name}\n onChange={(e) => setGroup(i, e.currentTarget.value)}\n placeholder={t(\"AccessGroupPlaceholder\", \"ACE group or permission, e.g. group.admin\")}\n size=\"xs\"\n style={{ flex: 1 }}\n />\n <ActionIcon\n variant=\"subtle\"\n color=\"red\"\n size=\"md\"\n onClick={() => removeGroup(i)}\n title={t(\"Remove\", \"Remove\")}\n aria-label={t(\"Remove\", \"Remove\")}\n >\n <Trash2 size=\"1.4vh\" />\n </ActionIcon>\n </Flex>\n ))}\n {addingGroup && (\n <AceGroupAddRow\n placeholder={t(\"AccessGroupPlaceholder\", \"ACE group or permission, e.g. group.admin\")}\n onCommit={commitGroup}\n onCancel={() => setAddingGroup(false)}\n removeLabel={t(\"Remove\", \"Remove\")}\n />\n )}\n </Flex>\n\n {!addingGroup && (\n <AddRowButton label={t(\"AccessAddGroup\", \"Add group\")} onClick={() => setAddingGroup(true)} />\n )}\n\n {/* ── Players / identifiers ───────────────────────────────────────── */}\n <SectionLabel icon={UserRound} label={t(\"AccessPlayers\", \"Players\")} />\n\n <Flex direction=\"column\" gap=\"xxs\">\n {value.identifiers.length === 0 && !addingPlayer && (\n <EmptyHint text={t(\"AccessNoPlayers\", \"No players added.\")} />\n )}\n {value.identifiers.map((id, i) => (\n <Flex key={i} align=\"center\" gap=\"xs\">\n <PlayerSelect\n value={id || null}\n onChange={(p) => setIdentifier(i, p?.citizenId ?? \"\")}\n includeOffline={includeOffline}\n placeholder={t(\"AccessPickPlayer\", \"Pick a player…\")}\n style={{ flex: 1 }}\n size=\"xs\"\n />\n <ActionIcon\n variant=\"subtle\"\n color=\"red\"\n size=\"md\"\n onClick={() => removeIdentifier(i)}\n title={t(\"Remove\", \"Remove\")}\n aria-label={t(\"Remove\", \"Remove\")}\n >\n <Trash2 size=\"1.4vh\" />\n </ActionIcon>\n </Flex>\n ))}\n {addingPlayer && (\n <Flex align=\"center\" gap=\"xs\">\n <PlayerSelect\n value={null}\n onChange={(p) => commitIdentifier(p?.citizenId ?? \"\")}\n includeOffline={includeOffline}\n placeholder={t(\"AccessPickPlayer\", \"Pick a player…\")}\n style={{ flex: 1 }}\n size=\"xs\"\n />\n <ActionIcon\n variant=\"subtle\"\n color=\"red\"\n size=\"md\"\n onClick={() => setAddingPlayer(false)}\n title={t(\"Remove\", \"Remove\")}\n aria-label={t(\"Remove\", \"Remove\")}\n >\n <Trash2 size=\"1.4vh\" />\n </ActionIcon>\n </Flex>\n )}\n </Flex>\n\n {!addingPlayer && (\n <AddRowButton label={t(\"AccessAddPlayer\", \"Add player\")} onClick={() => setAddingPlayer(true)} />\n )}\n </Flex>\n );\n}\n\nfunction AddRowButton({ label, onClick }: { label: string; onClick: () => void }) {\n return (\n <Flex\n align=\"center\"\n justify=\"center\"\n gap=\"xs\"\n onClick={onClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n }}\n py=\"xs\"\n style={{\n cursor: \"pointer\",\n border: \"0.1vh dashed rgba(255,255,255,0.12)\",\n borderRadius: \"0.4vh\",\n transition: \"background 0.15s, border-color 0.15s\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255,255,255,0.03)\";\n e.currentTarget.style.borderColor = \"rgba(255,255,255,0.2)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n e.currentTarget.style.borderColor = \"rgba(255,255,255,0.12)\";\n }}\n >\n <Plus size=\"1.4vh\" color=\"rgba(255,255,255,0.4)\" />\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c=\"rgba(255,255,255,0.4)\">\n {label}\n </Text>\n </Flex>\n );\n}\n\n// Pending \"add ACE group\" row. Holds the draft text in LOCAL state and only\n// commits (to the form) on Enter / blur, so an empty \"\" entry never persists —\n// mirroring the local pending-row pattern used for the other lists.\nfunction AceGroupAddRow({\n placeholder,\n onCommit,\n onCancel,\n removeLabel,\n}: {\n placeholder: string;\n onCommit: (value: string) => void;\n onCancel: () => void;\n removeLabel: string;\n}) {\n const [draft, setDraft] = useState(\"\");\n const commit = () => {\n if (draft.trim()) onCommit(draft);\n else onCancel();\n };\n return (\n <Flex align=\"center\" gap=\"xs\">\n <TextInput\n value={draft}\n onChange={(e) => setDraft(e.currentTarget.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commit();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n onCancel();\n }\n }}\n onBlur={commit}\n placeholder={placeholder}\n size=\"xs\"\n autoFocus\n style={{ flex: 1 }}\n />\n <ActionIcon\n variant=\"subtle\"\n color=\"red\"\n size=\"md\"\n onClick={onCancel}\n title={removeLabel}\n aria-label={removeLabel}\n >\n <Trash2 size=\"1.4vh\" />\n </ActionIcon>\n </Flex>\n );\n}\n","// Curated list of GTA V AnimPostFX screen effects passed to AnimpostfxPlay().\r\n// Sourced from https://docs.altv.mp/gta/articles/references/animpost-fx.html\r\n// plus a handful of community-known effects (ULP_*, common cutscene overlays)\r\n// that ship in scene defaults across dirk_multichar / fishing / drug labs.\r\n//\r\n// Effects are grouped by what they're commonly used for so a picker can\r\n// present them with section headings instead of one giant alphabetical list.\r\n// Add new entries by appending to the right group — the picker reflows\r\n// automatically.\r\n\r\nexport type GtaAnimPostFx = {\r\n /** Effect name passed to AnimpostfxPlay(). Case-sensitive. */\r\n name: string;\r\n /** Friendly label for UI display. Defaults to the name if absent. */\r\n label?: string;\r\n /** Group used for ordering and section headers. */\r\n group: GtaAnimPostFxGroup;\r\n};\r\n\r\nexport type GtaAnimPostFxGroup =\r\n | \"Wake Up / Sleep\"\r\n | \"Character Switch\"\r\n | \"Cinematic Push-In\"\r\n | \"Death / Fail\"\r\n | \"Heist\"\r\n | \"Minigame\"\r\n | \"Drug / Trip\"\r\n | \"Color Filter / Tint\"\r\n | \"Multiplayer\"\r\n | \"Misc\";\r\n\r\nexport const GTA_ANIM_POST_FX_GROUP_ORDER: GtaAnimPostFxGroup[] = [\r\n \"Wake Up / Sleep\",\r\n \"Character Switch\",\r\n \"Cinematic Push-In\",\r\n \"Death / Fail\",\r\n \"Heist\",\r\n \"Minigame\",\r\n \"Drug / Trip\",\r\n \"Color Filter / Tint\",\r\n \"Multiplayer\",\r\n \"Misc\",\r\n];\r\n\r\nexport const GTA_ANIM_POST_FX: GtaAnimPostFx[] = [\r\n // ── Wake Up / Sleep (community-known; not in altV docs) ────────────────────\r\n { name: \"ULP_PlayerWakeUp\", label: \"Player Wake Up\", group: \"Wake Up / Sleep\" },\r\n { name: \"MinigameEndNeutral\", label: \"Minigame End — Neutral\", group: \"Wake Up / Sleep\" },\r\n { name: \"MinigameEndFranklin\", label: \"Minigame End — Franklin\", group: \"Wake Up / Sleep\" },\r\n { name: \"MinigameEndMichael\", label: \"Minigame End — Michael\", group: \"Wake Up / Sleep\" },\r\n { name: \"MinigameEndTrevor\", label: \"Minigame End — Trevor\", group: \"Wake Up / Sleep\" },\r\n\r\n // ── Character Switch (Franklin / Michael / Trevor / Neutral variants) ─────\r\n { name: \"SwitchHUDIn\", group: \"Character Switch\" },\r\n { name: \"SwitchHUDOut\", group: \"Character Switch\" },\r\n { name: \"SwitchHUDFranklinIn\", group: \"Character Switch\" },\r\n { name: \"SwitchHUDFranklinOut\", group: \"Character Switch\" },\r\n { name: \"SwitchHUDMichaelIn\", group: \"Character Switch\" },\r\n { name: \"SwitchHUDMichaelOut\", group: \"Character Switch\" },\r\n { name: \"SwitchHUDTrevorIn\", group: \"Character Switch\" },\r\n { name: \"SwitchHUDTrevorOut\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenFranklin\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenFranklinIn\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenFranklinOut\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenMichaelIn\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenMichaelMid\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenMichaelOut\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenTrevorIn\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenTrevorOut\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenNeutralFIB5\", group: \"Character Switch\" },\r\n { name: \"SwitchOpenNeutralOutHeist\", group: \"Character Switch\" },\r\n { name: \"SwitchSceneFranklin\", group: \"Character Switch\" },\r\n { name: \"SwitchSceneMichael\", group: \"Character Switch\" },\r\n { name: \"SwitchSceneNeutral\", group: \"Character Switch\" },\r\n { name: \"SwitchSceneTrevor\", group: \"Character Switch\" },\r\n { name: \"SwitchShortFranklinIn\", group: \"Character Switch\" },\r\n { name: \"SwitchShortFranklinMid\", group: \"Character Switch\" },\r\n { name: \"SwitchShortMichaelIn\", group: \"Character Switch\" },\r\n { name: \"SwitchShortMichaelMid\", group: \"Character Switch\" },\r\n { name: \"SwitchShortNeutralIn\", group: \"Character Switch\" },\r\n { name: \"SwitchShortNeutralMid\", group: \"Character Switch\" },\r\n { name: \"SwitchShortTrevorIn\", group: \"Character Switch\" },\r\n { name: \"SwitchShortTrevorMid\", group: \"Character Switch\" },\r\n { name: \"switch_cam_1\", group: \"Character Switch\" },\r\n { name: \"switch_cam_2\", group: \"Character Switch\" },\r\n\r\n // ── Cinematic Push-In (slow zoom intro to a character) ────────────────────\r\n { name: \"CamPushInFranklin\", group: \"Cinematic Push-In\" },\r\n { name: \"CamPushInMichael\", group: \"Cinematic Push-In\" },\r\n { name: \"CamPushInTrevor\", group: \"Cinematic Push-In\" },\r\n { name: \"CamPushInNeutral\", group: \"Cinematic Push-In\" },\r\n { name: \"BeastIntroScene\", label: \"Beast Intro\", group: \"Cinematic Push-In\" },\r\n { name: \"BeastLaunch\", group: \"Cinematic Push-In\" },\r\n { name: \"BeastTransition\", group: \"Cinematic Push-In\" },\r\n\r\n // ── Death / Fail (red tint, slow-mo blur) ─────────────────────────────────\r\n { name: \"DeathFailNeutralIn\", group: \"Death / Fail\" },\r\n { name: \"DeathFailFranklinIn\", group: \"Death / Fail\" },\r\n { name: \"DeathFailMichaelIn\", group: \"Death / Fail\" },\r\n { name: \"DeathFailTrevorIn\", group: \"Death / Fail\" },\r\n { name: \"DeathFailMPIn\", label: \"Death Fail — MP\", group: \"Death / Fail\" },\r\n { name: \"DeathFailMPDark\", label: \"Death Fail — MP Dark\", group: \"Death / Fail\" },\r\n { name: \"DeathFailOut\", group: \"Death / Fail\" },\r\n { name: \"Rampage\", group: \"Death / Fail\" },\r\n { name: \"RampageOut\", group: \"Death / Fail\" },\r\n\r\n // ── Heist (celebration / locate / pass) ───────────────────────────────────\r\n { name: \"HeistCelebEnd\", group: \"Heist\" },\r\n { name: \"HeistCelebPass\", group: \"Heist\" },\r\n { name: \"HeistCelebPassBW\", label: \"Heist Celeb Pass (B/W)\", group: \"Heist\" },\r\n { name: \"HeistCelebToast\", group: \"Heist\" },\r\n { name: \"HeistLocate\", group: \"Heist\" },\r\n { name: \"HeistTripSkipFade\", group: \"Heist\" },\r\n\r\n // ── Minigame / Menu ───────────────────────────────────────────────────────\r\n { name: \"MenuMGIn\", group: \"Minigame\" },\r\n { name: \"MenuMGHeistIn\", group: \"Minigame\" },\r\n { name: \"MenuMGHeistIntro\", group: \"Minigame\" },\r\n { name: \"MenuMGHeistOut\", group: \"Minigame\" },\r\n { name: \"MenuMGHeistTint\", group: \"Minigame\" },\r\n { name: \"MenuMGSelectionIn\", group: \"Minigame\" },\r\n { name: \"MenuMGSelectionTint\", group: \"Minigame\" },\r\n { name: \"MenuMGTournamentIn\", group: \"Minigame\" },\r\n { name: \"MenuMGTournamentTint\", group: \"Minigame\" },\r\n { name: \"MinigameTransitionIn\", group: \"Minigame\" },\r\n { name: \"MinigameTransitionOut\", group: \"Minigame\" },\r\n\r\n // ── Drug / Trip (psychedelic, blur, distortion) ───────────────────────────\r\n { name: \"DMT_flight\", group: \"Drug / Trip\" },\r\n { name: \"DMT_flight_intro\", group: \"Drug / Trip\" },\r\n { name: \"PeyoteIn\", group: \"Drug / Trip\" },\r\n { name: \"PeyoteOut\", group: \"Drug / Trip\" },\r\n { name: \"PeyoteEndIn\", group: \"Drug / Trip\" },\r\n { name: \"PeyoteEndOut\", group: \"Drug / Trip\" },\r\n { name: \"DrugsDrivingIn\", group: \"Drug / Trip\" },\r\n { name: \"DrugsDrivingOut\", group: \"Drug / Trip\" },\r\n { name: \"DrugsMichaelAliensFight\", group: \"Drug / Trip\" },\r\n { name: \"DrugsMichaelAliensFightIn\", group: \"Drug / Trip\" },\r\n { name: \"DrugsMichaelAliensFightOut\", group: \"Drug / Trip\" },\r\n { name: \"DrugsTrevorClownsFight\", group: \"Drug / Trip\" },\r\n { name: \"DrugsTrevorClownsFightIn\",group: \"Drug / Trip\" },\r\n { name: \"DrugsTrevorClownsFightOut\", group: \"Drug / Trip\" },\r\n { name: \"ChopVision\", label: \"Chop Vision (dog)\", group: \"Drug / Trip\" },\r\n\r\n // ── Color Filter / Tint (one-off and biker formation filters) ─────────────\r\n { name: \"PPFilter\", group: \"Color Filter / Tint\" },\r\n { name: \"PPFilterOut\", group: \"Color Filter / Tint\" },\r\n { name: \"PPGreen\", group: \"Color Filter / Tint\" },\r\n { name: \"PPGreenOut\", group: \"Color Filter / Tint\" },\r\n { name: \"PPOrange\", group: \"Color Filter / Tint\" },\r\n { name: \"PPOrangeOut\", group: \"Color Filter / Tint\" },\r\n { name: \"PPPink\", group: \"Color Filter / Tint\" },\r\n { name: \"PPPinkOut\", group: \"Color Filter / Tint\" },\r\n { name: \"PPPurple\", group: \"Color Filter / Tint\" },\r\n { name: \"PPPurpleOut\", group: \"Color Filter / Tint\" },\r\n { name: \"BikerFilter\", group: \"Color Filter / Tint\" },\r\n { name: \"BikerFilterOut\", group: \"Color Filter / Tint\" },\r\n { name: \"BikerFormation\", group: \"Color Filter / Tint\" },\r\n { name: \"BikerFormationOut\", group: \"Color Filter / Tint\" },\r\n { name: \"InchOrange\", group: \"Color Filter / Tint\" },\r\n { name: \"InchOrangeOut\", group: \"Color Filter / Tint\" },\r\n { name: \"InchPurple\", group: \"Color Filter / Tint\" },\r\n { name: \"InchPurpleOut\", group: \"Color Filter / Tint\" },\r\n { name: \"InchPickup\", group: \"Color Filter / Tint\" },\r\n { name: \"InchPickupOut\", group: \"Color Filter / Tint\" },\r\n { name: \"TinyRacerGreen\", group: \"Color Filter / Tint\" },\r\n { name: \"TinyRacerGreenOut\", group: \"Color Filter / Tint\" },\r\n { name: \"TinyRacerPink\", group: \"Color Filter / Tint\" },\r\n { name: \"TinyRacerPinkOut\", group: \"Color Filter / Tint\" },\r\n { name: \"TinyRacerIntroCam\", group: \"Color Filter / Tint\" },\r\n { name: \"DeadlineNeon\", group: \"Color Filter / Tint\" },\r\n\r\n // ── Multiplayer (celeb, killstreak, race, etc.) ───────────────────────────\r\n { name: \"MP_Celeb_Win\", group: \"Multiplayer\" },\r\n { name: \"MP_Celeb_Win_Out\", group: \"Multiplayer\" },\r\n { name: \"MP_Celeb_Lose\", group: \"Multiplayer\" },\r\n { name: \"MP_Celeb_Lose_Out\", group: \"Multiplayer\" },\r\n { name: \"MP_Celeb_Preload\", group: \"Multiplayer\" },\r\n { name: \"MP_Celeb_Preload_Fade\", group: \"Multiplayer\" },\r\n { name: \"MP_Bull_tost\", group: \"Multiplayer\" },\r\n { name: \"MP_Bull_tost_Out\", group: \"Multiplayer\" },\r\n { name: \"MP_Killstreak\", group: \"Multiplayer\" },\r\n { name: \"MP_Killstreak_Out\", group: \"Multiplayer\" },\r\n { name: \"MP_Loser_Streak_Out\", group: \"Multiplayer\" },\r\n { name: \"MP_OrbitalCannon\", group: \"Multiplayer\" },\r\n { name: \"MP_Powerplay\", group: \"Multiplayer\" },\r\n { name: \"MP_Powerplay_Out\", group: \"Multiplayer\" },\r\n { name: \"MP_SmugglerCheckpoint\", group: \"Multiplayer\" },\r\n { name: \"MP_TransformRaceFlash\", group: \"Multiplayer\" },\r\n { name: \"MP_WarpCheckpoint\", group: \"Multiplayer\" },\r\n { name: \"MP_corona_switch\", group: \"Multiplayer\" },\r\n { name: \"MP_intro_logo\", group: \"Multiplayer\" },\r\n { name: \"MP_job_load\", group: \"Multiplayer\" },\r\n { name: \"MP_race_crash\", group: \"Multiplayer\" },\r\n\r\n // ── Misc (success notifs, special weapons, sniper / pause / explosions) ───\r\n { name: \"SuccessFranklin\", group: \"Misc\" },\r\n { name: \"SuccessMichael\", group: \"Misc\" },\r\n { name: \"SuccessNeutral\", group: \"Misc\" },\r\n { name: \"SuccessTrevor\", group: \"Misc\" },\r\n { name: \"FocusIn\", group: \"Misc\" },\r\n { name: \"FocusOut\", group: \"Misc\" },\r\n { name: \"CrossLine\", group: \"Misc\" },\r\n { name: \"CrossLineOut\", group: \"Misc\" },\r\n { name: \"SniperOverlay\", group: \"Misc\" },\r\n { name: \"ExplosionJosh3\", group: \"Misc\" },\r\n { name: \"WeaponUpgrade\", group: \"Misc\" },\r\n { name: \"Dont_tazeme_bro\", label: \"Don't Taze Me Bro\", group: \"Misc\" },\r\n { name: \"LostTimeDay\", group: \"Misc\" },\r\n { name: \"LostTimeNight\", group: \"Misc\" },\r\n { name: \"PauseMenuOut\", group: \"Misc\" },\r\n { name: \"pennedIn\", group: \"Misc\" },\r\n { name: \"PennedInOut\", group: \"Misc\" },\r\n { name: \"RaceTurbo\", group: \"Misc\" },\r\n { name: \"DefaultFlash\", group: \"Misc\" },\r\n];\r\n\r\nexport function formatGtaAnimPostFx(name: string): string {\r\n const entry = GTA_ANIM_POST_FX.find((fx) => fx.name === name);\r\n return entry?.label ?? name;\r\n}\r\n","// FiveM AnimPostFX picker. Curated list from the altV docs + a few common\r\n// community-known overlays (ULP_PlayerWakeUp etc.) grouped by use-case so\r\n// admins building cutscenes can find \"the wake-up effect\" without reading\r\n// 150 raw effect names.\r\n//\r\n// Single-value Select (the AnimpostfxPlay native takes one effect name).\r\n// Custom uncatalogued values in `value` are preserved under a \"Custom\"\r\n// group so old data with effect names we haven't catalogued still display.\r\n//\r\n// For full freedom (typing any arbitrary effect name), pass `creatable` —\r\n// users can hit Enter on a search term to add it as a custom value.\r\n\r\nimport { Select } from \"@mantine/core\";\r\nimport type { SelectProps } from \"@mantine/core\";\r\nimport {\r\n GTA_ANIM_POST_FX,\r\n GTA_ANIM_POST_FX_GROUP_ORDER,\r\n formatGtaAnimPostFx,\r\n type GtaAnimPostFx,\r\n type GtaAnimPostFxGroup,\r\n} from \"@/utils/gtaAnimPostFx\";\r\n\r\nfunction buildGroupedData(extraNames: string[] = []) {\r\n const groups = new Map<GtaAnimPostFxGroup, GtaAnimPostFx[]>();\r\n const seen = new Set<string>();\r\n for (const fx of GTA_ANIM_POST_FX) {\r\n if (seen.has(fx.name)) continue;\r\n seen.add(fx.name);\r\n if (!groups.has(fx.group)) groups.set(fx.group, []);\r\n groups.get(fx.group)!.push(fx);\r\n }\r\n\r\n const data = GTA_ANIM_POST_FX_GROUP_ORDER.flatMap((g) => {\r\n const items = groups.get(g);\r\n if (!items || items.length === 0) return [];\r\n return [\r\n {\r\n group: g,\r\n items: items.map((fx) => ({\r\n value: fx.name,\r\n label: formatGtaAnimPostFx(fx.name),\r\n })),\r\n },\r\n ];\r\n });\r\n\r\n // Surface custom values so the dropdown still shows the current selection.\r\n // Mantine drops chips silently when the value isn't in the data array.\r\n const knownNames = new Set(GTA_ANIM_POST_FX.map((fx) => fx.name));\r\n const customs = extraNames.filter((n) => n && !knownNames.has(n));\r\n if (customs.length > 0) {\r\n data.push({\r\n group: \"Custom\" as GtaAnimPostFxGroup,\r\n items: customs.map((n) => ({ value: n, label: n })),\r\n });\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport type AnimPostFxSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\r\n /** Current effect name. Empty string = no effect selected. */\r\n value: string;\r\n onChange: (name: string) => void;\r\n};\r\n\r\nexport function AnimPostFxSelect({\r\n value,\r\n onChange,\r\n label = \"Screen FX\",\r\n size = \"xs\",\r\n searchable = true,\r\n clearable = true,\r\n ...rest\r\n}: AnimPostFxSelectProps) {\r\n const data = buildGroupedData([value]);\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n searchable={searchable}\r\n clearable={clearable}\r\n maxDropdownHeight={320}\r\n nothingFoundMessage=\"No matching effects\"\r\n placeholder=\"Pick an effect...\"\r\n {...rest}\r\n data={data}\r\n value={value || null}\r\n onChange={(v) => onChange(v ?? \"\")}\r\n />\r\n );\r\n}\r\n","// Curated list of GTA V scenario identifiers passed to\r\n// TaskStartScenarioInPlace / TaskStartScenarioAtPosition. Sourced from\r\n// https://wiki.rage.mp/wiki/Scenarios via the DurtyFree gta-v-data-dumps\r\n// mirror (scenariosCompact.json).\r\n//\r\n// Scenarios are grouped by what the ped is *doing* so a picker can present\r\n// section headings instead of one giant alphabetical list of ~250 entries.\r\n// Add new entries by appending to the right group — the picker reflows\r\n// automatically. Group order = the order they appear in a dropdown.\r\n\r\nexport type GtaScenario = {\r\n /** Scenario identifier passed to the TaskStartScenario* natives. Case-sensitive. */\r\n name: string;\r\n /** Friendly label for UI display. Falls back to the auto-formatted name. */\r\n label?: string;\r\n /** Group used for ordering and section headers. */\r\n group: GtaScenarioGroup;\r\n};\r\n\r\nexport type GtaScenarioGroup =\r\n | \"Sitting\"\r\n | \"Standing & Idle\"\r\n | \"Eating & Drinking\"\r\n | \"Smoking & Substances\"\r\n | \"Working\"\r\n | \"Sports & Fitness\"\r\n | \"Cops & Security\"\r\n | \"Crime & Streets\"\r\n | \"Tourists & Crowds\"\r\n | \"Props (Misc)\"\r\n | \"Movement\"\r\n | \"Animals\"\r\n | \"Vehicles\"\r\n | \"Code (Advanced)\";\r\n\r\nexport const GTA_SCENARIO_GROUP_ORDER: GtaScenarioGroup[] = [\r\n \"Sitting\",\r\n \"Standing & Idle\",\r\n \"Eating & Drinking\",\r\n \"Smoking & Substances\",\r\n \"Working\",\r\n \"Sports & Fitness\",\r\n \"Cops & Security\",\r\n \"Crime & Streets\",\r\n \"Tourists & Crowds\",\r\n \"Props (Misc)\",\r\n \"Movement\",\r\n \"Animals\",\r\n \"Vehicles\",\r\n \"Code (Advanced)\",\r\n];\r\n\r\nexport const GTA_SCENARIOS: GtaScenario[] = [\r\n // ── Sitting ────────────────────────────────────────────────────────────────\r\n { name: \"PROP_HUMAN_SEAT_ARMCHAIR\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BAR\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BENCH\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BENCH_FACILITY\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK_FACILITY\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BENCH_DRINK_BEER\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BENCH_FOOD\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BENCH_FOOD_FACILITY\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_BUS_STOP_WAIT\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_CHAIR\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_CHAIR_DRINK\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_CHAIR_DRINK_BEER\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_CHAIR_FOOD\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_CHAIR_UPRIGHT\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_CHAIR_UPRIGHT_SHOWROOM\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_CHAIR_MP_PLAYER\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_COMPUTER\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_COMPUTER_LOW\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_DECKCHAIR\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_DECKCHAIR_DRINK\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_SEWING\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_STRIP_WATCH\", group: \"Sitting\" },\r\n { name: \"PROP_HUMAN_SEAT_SUNLOUNGER\", group: \"Sitting\" },\r\n { name: \"WORLD_HUMAN_SEAT_LEDGE\", group: \"Sitting\" },\r\n { name: \"WORLD_HUMAN_SEAT_LEDGE_EATING\", group: \"Sitting\" },\r\n { name: \"WORLD_HUMAN_SEAT_STEPS\", group: \"Sitting\" },\r\n { name: \"WORLD_HUMAN_SEAT_WALL\", group: \"Sitting\" },\r\n { name: \"WORLD_HUMAN_SEAT_WALL_EATING\", group: \"Sitting\" },\r\n { name: \"WORLD_HUMAN_SEAT_WALL_TABLET\", group: \"Sitting\" },\r\n\r\n // ── Standing & Idle ────────────────────────────────────────────────────────\r\n { name: \"Standing\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_HANG_OUT_STREET\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_LEANING\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_LEANING_CASINO_TERRACE\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_IMPATIENT\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_FACILITY\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_IMPATIENT_UPRIGHT_FACILITY\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_MOBILE\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_MOBILE_CLUBHOUSE\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_MOBILE_FACILITY\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_MOBILE_UPRIGHT\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_FIRE\", group: \"Standing & Idle\" },\r\n { name: \"WORLD_HUMAN_STAND_FISHING\", group: \"Standing & Idle\" },\r\n { name: \"PROP_HUMAN_STAND_IMPATIENT\", group: \"Standing & Idle\" },\r\n\r\n // ── Eating & Drinking ──────────────────────────────────────────────────────\r\n { name: \"WORLD_HUMAN_DRINKING\", group: \"Eating & Drinking\" },\r\n { name: \"WORLD_HUMAN_DRINKING_FACILITY\", group: \"Eating & Drinking\" },\r\n { name: \"WORLD_HUMAN_DRINKING_CASINO_TERRACE\", group: \"Eating & Drinking\" },\r\n { name: \"WORLD_HUMAN_PICNIC\", group: \"Eating & Drinking\" },\r\n\r\n // ── Smoking & Substances ───────────────────────────────────────────────────\r\n { name: \"WORLD_HUMAN_AA_COFFEE\", group: \"Smoking & Substances\" },\r\n { name: \"WORLD_HUMAN_AA_SMOKE\", group: \"Smoking & Substances\" },\r\n { name: \"WORLD_HUMAN_SMOKING\", group: \"Smoking & Substances\" },\r\n { name: \"WORLD_HUMAN_SMOKING_CLUBHOUSE\", group: \"Smoking & Substances\" },\r\n { name: \"WORLD_HUMAN_SMOKING_POT\", group: \"Smoking & Substances\" },\r\n { name: \"WORLD_HUMAN_SMOKING_POT_CLUBHOUSE\", group: \"Smoking & Substances\" },\r\n { name: \"WORLD_HUMAN_STUPOR\", group: \"Smoking & Substances\" },\r\n { name: \"WORLD_HUMAN_STUPOR_CLUBHOUSE\", group: \"Smoking & Substances\" },\r\n\r\n // ── Working ────────────────────────────────────────────────────────────────\r\n { name: \"WORLD_HUMAN_CAR_PARK_ATTENDANT\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_CLIPBOARD\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_CLIPBOARD_FACILITY\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_CONST_DRILL\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_GARDENER_LEAF_BLOWER\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_GARDENER_PLANT\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_HAMMERING\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_JANITOR\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_MAID_CLEAN\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_MUSICIAN\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_VALET\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_VEHICLE_MECHANIC\", group: \"Working\" },\r\n { name: \"WORLD_HUMAN_WELDING\", group: \"Working\" },\r\n\r\n // ── Sports & Fitness ───────────────────────────────────────────────────────\r\n { name: \"WORLD_HUMAN_GOLF_PLAYER\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_HIKER\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_HIKER_STANDING\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_JOG\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_JOG_STANDING\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_MUSCLE_FLEX\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_MUSCLE_FREE_WEIGHTS\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_POWER_WALKER\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_PUSH_UPS\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_SIT_UPS\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_SUNBATHE\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_SUNBATHE_BACK\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_SWIMMING\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_TENNIS_PLAYER\", group: \"Sports & Fitness\" },\r\n { name: \"WORLD_HUMAN_YOGA\", group: \"Sports & Fitness\" },\r\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS\", group: \"Sports & Fitness\" },\r\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS_ARMY\", group: \"Sports & Fitness\" },\r\n { name: \"PROP_HUMAN_MUSCLE_CHIN_UPS_PRISON\", group: \"Sports & Fitness\" },\r\n { name: \"PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS\", group: \"Sports & Fitness\" },\r\n { name: \"PROP_HUMAN_SEAT_MUSCLE_BENCH_PRESS_PRISON\", group: \"Sports & Fitness\" },\r\n\r\n // ── Cops & Security ────────────────────────────────────────────────────────\r\n { name: \"WORLD_HUMAN_COP_IDLES\", group: \"Cops & Security\" },\r\n { name: \"WORLD_HUMAN_GUARD_PATROL\", group: \"Cops & Security\" },\r\n { name: \"WORLD_HUMAN_GUARD_STAND\", group: \"Cops & Security\" },\r\n { name: \"WORLD_HUMAN_GUARD_STAND_CASINO\", group: \"Cops & Security\" },\r\n { name: \"WORLD_HUMAN_GUARD_STAND_CLUBHOUSE\", group: \"Cops & Security\" },\r\n { name: \"WORLD_HUMAN_GUARD_STAND_FACILITY\", group: \"Cops & Security\" },\r\n { name: \"WORLD_HUMAN_GUARD_STAND_ARMY\", group: \"Cops & Security\" },\r\n { name: \"WORLD_HUMAN_SECURITY_SHINE_TORCH\", group: \"Cops & Security\" },\r\n\r\n // ── Crime & Streets ────────────────────────────────────────────────────────\r\n { name: \"WORLD_HUMAN_DRUG_DEALER\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_DRUG_DEALER_HARD\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_DRUG_FIELD_WORKERS_RAKE\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_DRUG_FIELD_WORKERS_WEEDING\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_DRUG_PROCESSORS_COKE\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_DRUG_PROCESSORS_WEED\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_PROSTITUTE_HIGH_CLASS\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_PROSTITUTE_LOW_CLASS\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_BUM_FREEWAY\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_BUM_SLUMPED\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_BUM_STANDING\", group: \"Crime & Streets\" },\r\n { name: \"WORLD_HUMAN_BUM_WASH\", group: \"Crime & Streets\" },\r\n { name: \"PROP_HUMAN_BUM_BIN\", group: \"Crime & Streets\" },\r\n { name: \"PROP_HUMAN_BUM_SHOPPING_CART\", group: \"Crime & Streets\" },\r\n\r\n // ── Tourists & Crowds ──────────────────────────────────────────────────────\r\n { name: \"WORLD_HUMAN_BINOCULARS\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_CHEERING\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_HUMAN_STATUE\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_INSPECT_CROUCH\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_INSPECT_STAND\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_MOBILE_FILM_SHOCKING\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_PAPARAZZI\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_PARTYING\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_STRIP_WATCH_STAND\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_SUPERHERO\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_TOURIST_MAP\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_TOURIST_MOBILE\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_WINDOW_SHOP_BROWSE\", group: \"Tourists & Crowds\" },\r\n { name: \"WORLD_HUMAN_WINDOW_SHOP_BROWSE_SHOWROOM\", group: \"Tourists & Crowds\" },\r\n\r\n // ── Props (Misc) ───────────────────────────────────────────────────────────\r\n { name: \"PROP_HUMAN_ATM\", group: \"Props (Misc)\" },\r\n { name: \"PROP_HUMAN_BBQ\", group: \"Props (Misc)\" },\r\n { name: \"PROP_HUMAN_PARKING_METER\", group: \"Props (Misc)\" },\r\n { name: \"PROP_HUMAN_MOVIE_BULB\", group: \"Props (Misc)\" },\r\n { name: \"PROP_HUMAN_MOVIE_STUDIO_LIGHT\", group: \"Props (Misc)\" },\r\n { name: \"PROP_BIRD_IN_TREE\", group: \"Props (Misc)\" },\r\n { name: \"PROP_BIRD_TELEGRAPH_POLE\", group: \"Props (Misc)\" },\r\n\r\n // ── Movement ───────────────────────────────────────────────────────────────\r\n { name: \"Walk\", group: \"Movement\" },\r\n { name: \"Walk_Facility\", group: \"Movement\" },\r\n\r\n // ── Animals ────────────────────────────────────────────────────────────────\r\n { name: \"WORLD_BOAR_GRAZING\", group: \"Animals\" },\r\n { name: \"WORLD_CAT_SLEEPING_GROUND\", group: \"Animals\" },\r\n { name: \"WORLD_CAT_SLEEPING_LEDGE\", group: \"Animals\" },\r\n { name: \"WORLD_COW_GRAZING\", group: \"Animals\" },\r\n { name: \"WORLD_COYOTE_HOWL\", group: \"Animals\" },\r\n { name: \"WORLD_COYOTE_REST\", group: \"Animals\" },\r\n { name: \"WORLD_COYOTE_WANDER\", group: \"Animals\" },\r\n { name: \"WORLD_COYOTE_WALK\", group: \"Animals\" },\r\n { name: \"WORLD_CHICKENHAWK_FEEDING\", group: \"Animals\" },\r\n { name: \"WORLD_CHICKENHAWK_STANDING\", group: \"Animals\" },\r\n { name: \"WORLD_CORMORANT_STANDING\", group: \"Animals\" },\r\n { name: \"WORLD_CROW_FEEDING\", group: \"Animals\" },\r\n { name: \"WORLD_CROW_STANDING\", group: \"Animals\" },\r\n { name: \"WORLD_DEER_GRAZING\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_BARKING_ROTTWEILER\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_BARKING_RETRIEVER\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_BARKING_SHEPHERD\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_BARKING_SMALL\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_SITTING_ROTTWEILER\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_SITTING_RETRIEVER\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_SITTING_SHEPHERD\", group: \"Animals\" },\r\n { name: \"WORLD_DOG_SITTING_SMALL\", group: \"Animals\" },\r\n { name: \"WORLD_DOLPHIN_SWIM\", group: \"Animals\" },\r\n { name: \"WORLD_FISH_FLEE\", group: \"Animals\" },\r\n { name: \"WORLD_FISH_IDLE\", group: \"Animals\" },\r\n { name: \"WORLD_GULL_FEEDING\", group: \"Animals\" },\r\n { name: \"WORLD_GULL_STANDING\", group: \"Animals\" },\r\n { name: \"WORLD_HEN_FLEE\", group: \"Animals\" },\r\n { name: \"WORLD_HEN_PECKING\", group: \"Animals\" },\r\n { name: \"WORLD_HEN_STANDING\", group: \"Animals\" },\r\n { name: \"WORLD_MOUNTAIN_LION_REST\", group: \"Animals\" },\r\n { name: \"WORLD_MOUNTAIN_LION_WANDER\", group: \"Animals\" },\r\n { name: \"WORLD_ORCA_SWIM\", group: \"Animals\" },\r\n { name: \"WORLD_PIG_GRAZING\", group: \"Animals\" },\r\n { name: \"WORLD_PIGEON_FEEDING\", group: \"Animals\" },\r\n { name: \"WORLD_PIGEON_STANDING\", group: \"Animals\" },\r\n { name: \"WORLD_RABBIT_EATING\", group: \"Animals\" },\r\n { name: \"WORLD_RABBIT_FLEE\", group: \"Animals\" },\r\n { name: \"WORLD_RATS_EATING\", group: \"Animals\" },\r\n { name: \"WORLD_RATS_FLEEING\", group: \"Animals\" },\r\n { name: \"WORLD_SHARK_SWIM\", group: \"Animals\" },\r\n { name: \"WORLD_SHARK_HAMMERHEAD_SWIM\", group: \"Animals\" },\r\n { name: \"WORLD_STINGRAY_SWIM\", group: \"Animals\" },\r\n { name: \"WORLD_WHALE_SWIM\", group: \"Animals\" },\r\n\r\n // ── Vehicles ───────────────────────────────────────────────────────────────\r\n { name: \"DRIVE\", group: \"Vehicles\" },\r\n { name: \"PARK_VEHICLE\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_ATTRACTOR\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_AMBULANCE\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BICYCLE_BMX\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_BALLAS\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_FAMILY\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_HARMONY\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BICYCLE_BMX_VAGOS\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BICYCLE_MOUNTAIN\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BICYCLE_ROAD\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BIKE_OFF_ROAD_RACE\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BIKER\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BOAT_IDLE\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BOAT_IDLE_ALAMO\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BOAT_IDLE_MARQUIS\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BROKEN_DOWN\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_BUSINESSMEN\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_CLUCKIN_BELL_TRAILER\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_CONSTRUCTION_SOLO\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_CONSTRUCTION_PASSENGERS\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_DISTANT_EMPTY_GROUND\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_DRIVE_PASSENGERS\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_DRIVE_PASSENGERS_LIMITED\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_DRIVE_SOLO\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_EMPTY\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_FARM_WORKER\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_FIRE_TRUCK\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_HELI_LIFEGUARD\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_MARIACHI\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_MECHANIC\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_MILITARY_PLANES_BIG\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_MILITARY_PLANES_SMALL\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_PARK_PARALLEL\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_PARK_PERPENDICULAR_NOSE_IN\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_PASSENGER_EXIT\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_POLICE_BIKE\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_POLICE_CAR\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_POLICE_NEXT_TO_CAR\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_QUARRY\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_SALTON\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_SALTON_DIRT_BIKE\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_SECURITY_CAR\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_STREETRACE\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_TANDL\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_TOURBUS\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_TOURIST\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_TRACTOR\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_TRACTOR_BEACH\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_TRUCK_LOGS\", group: \"Vehicles\" },\r\n { name: \"WORLD_VEHICLE_TRUCKS_TRAILERS\", group: \"Vehicles\" },\r\n\r\n // ── Code (Advanced) ────────────────────────────────────────────────────────\r\n // These are engine-internal scenarios — rarely the right pick for cinematic\r\n // ped placements, but exposed because the game-data dump includes them.\r\n { name: \"CODE_HUMAN_COWER\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_CROSS_ROAD_WAIT\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_PARK_CAR\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_MEDIC_KNEEL\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_MEDIC_TEND_TO_DEAD\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_MEDIC_TIME_OF_DEATH\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_POLICE_CROWD_CONTROL\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_POLICE_INVESTIGATE\", group: \"Code (Advanced)\" },\r\n { name: \"CODE_HUMAN_STAND_COWER\", group: \"Code (Advanced)\" },\r\n { name: \"CHAINING_ENTRY\", group: \"Code (Advanced)\" },\r\n { name: \"CHAINING_EXIT\", group: \"Code (Advanced)\" },\r\n { name: \"EAR_TO_TEXT\", group: \"Code (Advanced)\" },\r\n { name: \"EAR_TO_TEXT_FAT\", group: \"Code (Advanced)\" },\r\n { name: \"WORLD_LOOKAT_POINT\", group: \"Code (Advanced)\" },\r\n];\r\n\r\n// ── Display helpers ──────────────────────────────────────────────────────────\r\n\r\n// \"PROP_HUMAN_SEAT_CHAIR_FOOD\" → \"Seat Chair Food\". Strips the WORLD_/PROP_/\r\n// CODE_ prefix and the redundant HUMAN_/BIRD_/VEHICLE_ infix so the label\r\n// reads naturally, then title-cases each underscore-separated word.\r\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_)?/;\r\n\r\nexport function formatGtaScenario(name: string): string {\r\n if (!name) return \"\";\r\n const stripped = name.replace(PREFIX_RE, \"\");\r\n const cleaned = stripped.length > 0 ? stripped : name;\r\n return cleaned\r\n .toLowerCase()\r\n .split(\"_\")\r\n .filter(Boolean)\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n}\r\n","// FiveM scenario picker. Curated list from\r\n// https://wiki.rage.mp/wiki/Scenarios (via DurtyFree's data dump) grouped by\r\n// what the ped is actually doing — Sitting, Working, Sports, etc. — so admins\r\n// building a scene can find \"the chair with food\" without scrolling 250\r\n// alphabetical rows.\r\n//\r\n// Single-value Select (TaskStartScenarioInPlace/AtPosition takes one name).\r\n// Custom values in `value` that don't match a catalogued scenario are kept\r\n// in a \"Custom\" group so externally-loaded scenario keys still display.\r\n\r\nimport { Select } from \"@mantine/core\";\r\nimport type { SelectProps } from \"@mantine/core\";\r\nimport {\r\n GTA_SCENARIOS,\r\n GTA_SCENARIO_GROUP_ORDER,\r\n formatGtaScenario,\r\n type GtaScenario,\r\n type GtaScenarioGroup,\r\n} from \"@/utils/gtaScenarios\";\r\n\r\nfunction buildGroupedData(extraNames: string[] = []) {\r\n const groups = new Map<GtaScenarioGroup, GtaScenario[]>();\r\n const seen = new Set<string>();\r\n for (const sc of GTA_SCENARIOS) {\r\n if (seen.has(sc.name)) continue;\r\n seen.add(sc.name);\r\n if (!groups.has(sc.group)) groups.set(sc.group, []);\r\n groups.get(sc.group)!.push(sc);\r\n }\r\n\r\n const data = GTA_SCENARIO_GROUP_ORDER.flatMap((g) => {\r\n const items = groups.get(g);\r\n if (!items || items.length === 0) return [];\r\n return [\r\n {\r\n group: g,\r\n items: items.map((sc) => ({\r\n value: sc.name,\r\n label: sc.label ?? formatGtaScenario(sc.name),\r\n })),\r\n },\r\n ];\r\n });\r\n\r\n // Surface custom values so the dropdown still shows the current selection.\r\n // Mantine silently drops chips when the value isn't in the data array.\r\n const knownNames = new Set(GTA_SCENARIOS.map((sc) => sc.name));\r\n const customs = extraNames.filter((n) => n && !knownNames.has(n));\r\n if (customs.length > 0) {\r\n data.push({\r\n group: \"Custom\" as GtaScenarioGroup,\r\n items: customs.map((n) => ({ value: n, label: n })),\r\n });\r\n }\r\n\r\n return data;\r\n}\r\n\r\nexport type ScenarioSelectProps = Omit<SelectProps, \"data\" | \"value\" | \"onChange\"> & {\r\n /** Current scenario name. Empty string = no scenario selected. */\r\n value: string;\r\n onChange: (name: string) => void;\r\n};\r\n\r\nexport function ScenarioSelect({\r\n value,\r\n onChange,\r\n label = \"Scenario\",\r\n size = \"xs\",\r\n searchable = true,\r\n clearable = true,\r\n ...rest\r\n}: ScenarioSelectProps) {\r\n const data = buildGroupedData([value]);\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n searchable={searchable}\r\n clearable={clearable}\r\n maxDropdownHeight={320}\r\n nothingFoundMessage=\"No matching scenarios\"\r\n placeholder=\"Pick a scenario...\"\r\n {...rest}\r\n data={data}\r\n value={value || null}\r\n onChange={(v) => onChange(v ?? \"\")}\r\n />\r\n );\r\n}\r\n","// Discord role picker. Mantine Select / MultiSelect populated from a NUI\r\n// callback the consumer registers (which in turn calls lib.discord.getRoles\r\n// on the server). Each role shows its actual Discord colour as a swatch.\r\n//\r\n// The consumer wires up the NUI side once:\r\n//\r\n// RegisterNuiCallback('LIST_DISCORD_ROLES', function(_, cb)\r\n// local roles, err = lib.callback.await('myresource:listDiscordRoles')\r\n// cb({ ok = roles ~= nil, _error = err, roles = roles or {} })\r\n// end)\r\n//\r\n// server callback:\r\n// lib.callback.register('myresource:listDiscordRoles', function(src)\r\n// -- (admin perm check here)\r\n// local roles, err = lib.discord.getRoles()\r\n// return roles, err\r\n// end)\r\n//\r\n// And then renders:\r\n// <DiscordRoleSelect endpoint=\"LIST_DISCORD_ROLES\" value={...} onChange={...} />\r\n//\r\n// When lib.discord returns 'NotConfigured' the picker swaps in a friendly\r\n// banner pointing the admin at /dirk_lib so they go set credentials.\r\n\r\nimport { ActionIcon, Flex, MultiSelect, Select, Text } from \"@mantine/core\";\r\nimport type { ComboboxItem, SelectProps, MultiSelectProps } from \"@mantine/core\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { AlertTriangle, RefreshCw } from \"lucide-react\";\r\nimport { fetchNui } from \"@/utils/fetchNui\";\r\nimport { locale } from \"@/utils/locales\";\r\n\r\n// locale() returns the **key itself** on miss (see utils/locales.ts), so the\r\n// classic `locale(k) || fallback` pattern never falls through. This helper\r\n// returns `fallback` whenever locale gave us the key back unchanged.\r\nconst t = (key: string, fallback: string) => {\r\n const v = locale(key);\r\n return v === key ? fallback : v;\r\n};\r\n\r\n// Subset of the Discord role payload we actually use. Everything else\r\n// (mentionable, hoist, permissions, etc.) is on the server-side cache;\r\n// the picker only needs id/name/colour/position.\r\nexport type DiscordRole = {\r\n id: string;\r\n name: string;\r\n color: number; // 24-bit integer; 0 = no colour (Discord default)\r\n position?: number;\r\n};\r\n\r\ntype ListResponse = {\r\n ok: boolean;\r\n _error?: string;\r\n roles?: DiscordRole[];\r\n};\r\n\r\nfunction decimalToHex(color: number): string | null {\r\n if (!color || color === 0) return null;\r\n return \"#\" + color.toString(16).padStart(6, \"0\");\r\n}\r\n\r\n// Custom option renderer — swatch + role name. Falls back to a neutral\r\n// grey dot when the role has no Discord colour set (decimal 0).\r\nfunction RoleOption({ role }: { role: DiscordRole }) {\r\n const swatch = decimalToHex(role.color) || \"rgba(255,255,255,0.25)\";\r\n return (\r\n <Flex align=\"center\" gap=\"0.6vh\">\r\n <div\r\n style={{\r\n width: \"1vh\",\r\n height: \"1vh\",\r\n borderRadius: \"50%\",\r\n background: swatch,\r\n flexShrink: 0,\r\n boxShadow: role.color ? `0 0 0.4vh ${swatch}` : undefined,\r\n }}\r\n />\r\n <Text size=\"xs\" c=\"rgba(255,255,255,0.9)\">\r\n {role.name}\r\n </Text>\r\n </Flex>\r\n );\r\n}\r\n\r\n// Styling shared by the not-configured stand-in — a disabled Select that\r\n// shares the exact same shell as a real picker, so neighbouring inputs\r\n// (e.g. a NumberInput sitting next to us in a flex row) line up. The tint\r\n// is a subtle amber so the admin notices it's degraded without losing\r\n// the form's visual rhythm.\r\nconst NOT_CONFIGURED_TINT = \"rgba(255,184,0,0.35)\";\r\nconst NOT_CONFIGURED_FILL = \"rgba(255,184,0,0.05)\";\r\n\r\ntype SharedProps = {\r\n /** NUI callback name registered by the consumer that returns ListResponse. */\r\n endpoint: string;\r\n /** Optional label / size / placeholder forwarded to the underlying Mantine Select. */\r\n label?: React.ReactNode;\r\n size?: SelectProps[\"size\"];\r\n placeholder?: string;\r\n disabled?: boolean;\r\n /** Style props applied to the wrapping Select/MultiSelect. */\r\n style?: React.CSSProperties;\r\n styles?: SelectProps[\"styles\"];\r\n};\r\n\r\ntype SingleProps = SharedProps & {\r\n multi?: false;\r\n value: string | null;\r\n onChange: (id: string | null) => void;\r\n};\r\n\r\ntype MultiProps = SharedProps & {\r\n multi: true;\r\n value: string[];\r\n onChange: (ids: string[]) => void;\r\n};\r\n\r\nexport type DiscordRoleSelectProps = SingleProps | MultiProps;\r\n\r\nexport function DiscordRoleSelect(props: DiscordRoleSelectProps) {\r\n const { endpoint, label, size = \"xs\", placeholder, disabled, style, styles } = props;\r\n const [roles, setRoles] = useState<DiscordRole[] | null>(null);\r\n const [loading, setLoading] = useState(false);\r\n const [errorCode, setErrorCode] = useState<string | null>(null);\r\n\r\n const refresh = async () => {\r\n setLoading(true);\r\n try {\r\n const res = await fetchNui<ListResponse>(endpoint, {}, {\r\n // Browser dev fallback so the component renders something useful\r\n // outside FiveM.\r\n ok: true,\r\n roles: [\r\n { id: \"1\", name: \"Admin\", color: 0xed4245, position: 5 },\r\n { id: \"2\", name: \"VIP Gold\", color: 0xfaa61a, position: 4 },\r\n { id: \"3\", name: \"Member\", color: 0x57f287, position: 3 },\r\n { id: \"4\", name: \"Guest\", color: 0, position: 2 },\r\n ],\r\n });\r\n if (res?.ok) {\r\n setRoles(res.roles ?? []);\r\n setErrorCode(null);\r\n } else {\r\n setRoles(null);\r\n setErrorCode(res?._error || \"FetchFailed\");\r\n }\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n refresh();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [endpoint]);\r\n\r\n const rolesById = useMemo(() => {\r\n const map: Record<string, DiscordRole> = {};\r\n for (const r of roles ?? []) map[r.id] = r;\r\n return map;\r\n }, [roles]);\r\n\r\n // Show a disabled stand-in instead of a broken empty picker. Uses the\r\n // exact same Mantine Select/MultiSelect shell as the real component so\r\n // neighbouring inputs (NumberInputs in the same flex row, etc.) line up\r\n // pixel-for-pixel — only the input border tints amber to signal \"not\r\n // wired up yet, see /dirk_lib\".\r\n if (errorCode === \"NotConfigured\") {\r\n const notConfiguredPlaceholder = t(\r\n \"DiscordNotConfigured\",\r\n \"Not configured — set in /dirk_lib\",\r\n );\r\n const notConfiguredStyles = {\r\n ...(styles as Record<string, unknown> | undefined),\r\n input: {\r\n ...((styles as { input?: Record<string, unknown> } | undefined)?.input ?? {}),\r\n borderColor: NOT_CONFIGURED_TINT,\r\n backgroundColor: NOT_CONFIGURED_FILL,\r\n },\r\n } as SelectProps[\"styles\"];\r\n const warnIcon = (\r\n <AlertTriangle size=\"1.2vh\" color={NOT_CONFIGURED_TINT.replace(/0\\.35\\)$/, \"0.85)\")} />\r\n );\r\n if (props.multi) {\r\n return (\r\n <MultiSelect\r\n label={label}\r\n size={size}\r\n placeholder={notConfiguredPlaceholder}\r\n data={[]}\r\n value={[]}\r\n onChange={() => {}}\r\n disabled\r\n rightSection={warnIcon}\r\n style={style}\r\n styles={notConfiguredStyles as MultiSelectProps[\"styles\"]}\r\n />\r\n );\r\n }\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n placeholder={notConfiguredPlaceholder}\r\n data={[]}\r\n value={null}\r\n onChange={() => {}}\r\n disabled\r\n rightSection={warnIcon}\r\n style={style}\r\n styles={notConfiguredStyles}\r\n />\r\n );\r\n }\r\n\r\n // Mantine Select expects {value, label} options. We also pass the role\r\n // object inline so the custom renderer can read the colour.\r\n const data: ComboboxItem[] = (roles ?? []).map((r) => ({\r\n value: r.id,\r\n label: r.name,\r\n }));\r\n\r\n const renderOption: SelectProps[\"renderOption\"] = ({ option }) => {\r\n const role = rolesById[option.value];\r\n return role ? <RoleOption role={role} /> : <Text size=\"xs\">{option.label}</Text>;\r\n };\r\n\r\n // Mantine Select default `rightSectionPointerEvents=\"none\"` makes the\r\n // icon visual-only — clicks fall through to the combobox toggle. We\r\n // explicitly enable pointer events here so the refresh button actually\r\n // refreshes, and stopPropagation prevents the dropdown from opening\r\n // when the icon is clicked.\r\n const refreshButton = (\r\n <ActionIcon\r\n size=\"xs\"\r\n variant=\"subtle\"\r\n onMouseDown={(e) => { e.stopPropagation(); }}\r\n onClick={(e) => { e.stopPropagation(); refresh(); }}\r\n title={t(\"Refresh\", \"Refresh\")}\r\n loading={loading}\r\n aria-label={t(\"Refresh\", \"Refresh\")}\r\n >\r\n <RefreshCw size=\"1.2vh\" />\r\n </ActionIcon>\r\n );\r\n\r\n if (props.multi) {\r\n return (\r\n <MultiSelect\r\n label={label}\r\n size={size}\r\n placeholder={placeholder || t(\"PickRoles\", \"Pick roles...\")}\r\n data={data}\r\n value={props.value || []}\r\n onChange={(ids) => props.onChange(ids)}\r\n renderOption={renderOption as MultiSelectProps[\"renderOption\"]}\r\n searchable\r\n clearable\r\n disabled={disabled || (loading && !roles)}\r\n rightSection={refreshButton}\r\n rightSectionPointerEvents=\"all\"\r\n style={style}\r\n styles={styles as MultiSelectProps[\"styles\"]}\r\n nothingFoundMessage={\r\n errorCode\r\n ? `${t(\"Error\", \"Error\")} (${errorCode})`\r\n : t(\"NoRoles\", \"No roles found\")\r\n }\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Select\r\n label={label}\r\n size={size}\r\n placeholder={placeholder || t(\"PickRole\", \"Pick a role...\")}\r\n data={data}\r\n value={props.value || null}\r\n onChange={(id) => props.onChange(id)}\r\n renderOption={renderOption}\r\n searchable\r\n clearable\r\n disabled={disabled || (loading && !roles)}\r\n rightSection={refreshButton}\r\n rightSectionPointerEvents=\"all\"\r\n style={style}\r\n styles={styles}\r\n nothingFoundMessage={\r\n errorCode\r\n ? `${t(\"Error\", \"Error\")} (${errorCode})`\r\n : t(\"NoRoles\", \"No roles found\")\r\n }\r\n />\r\n );\r\n}\r\n","// Account picker. Mantine Select / MultiSelect populated from a NUI\r\n// callback the consumer registers (which in turn calls\r\n// lib.accounts.list() on the server, reaching dirk_lib's framework\r\n// introspection).\r\n//\r\n// Consumer wiring (once):\r\n//\r\n// RegisterNuiCallback('LIST_ACCOUNTS', function(_, cb)\r\n// local info = lib.accounts.list()\r\n// cb(info)\r\n// end)\r\n//\r\n// Then:\r\n// <AccountSelect endpoint=\"LIST_ACCOUNTS\" value={...} onChange={...} />\r\n// <AccountSelect endpoint=\"LIST_ACCOUNTS\" multi value={[...]} onChange={...} />\r\n//\r\n// Behaviour:\r\n// • If the framework reports accounts (ESX / qb-core), the dropdown is\r\n// pre-populated with the canonical list. Each option shows name +\r\n// pretty label when available.\r\n// • In `multi` mode, the dropdown is `creatable` — admin can type a\r\n// custom account name and press Enter to add it. Needed for qbx_core\r\n// and any ESX server that adds custom accounts at runtime.\r\n// • Single-pick mode is strict (no free-form entry).\r\n// • Framework hint chip renders below the field so the admin knows\r\n// where the list came from (\"from ESX Config.Accounts\", \"default\r\n// QBox trio\", etc.).\r\n\r\nimport { ActionIcon, Flex, MultiSelect, Select, Text, alpha, useMantineTheme } from \"@mantine/core\";\r\nimport type { ComboboxItem, MultiSelectProps, SelectProps } from \"@mantine/core\";\r\nimport { useEffect, useMemo, useState } from \"react\";\r\nimport { RefreshCw } from \"lucide-react\";\r\nimport { fetchNui } from \"@/utils/fetchNui\";\r\nimport { locale } from \"@/utils/locales\";\r\n\r\nconst t = (key: string, fallback: string) => {\r\n const v = locale(key);\r\n return v === key ? fallback : v;\r\n};\r\n\r\nexport type FrameworkAccount = {\r\n name: string;\r\n label?: string;\r\n default?: number;\r\n round?: boolean;\r\n};\r\n\r\ntype ListResponse = {\r\n ok: boolean;\r\n framework?: string;\r\n accounts?: FrameworkAccount[];\r\n};\r\n\r\nconst FRAMEWORK_HINTS: Record<string, string> = {\r\n \"es_extended\": \"from ESX Config.Accounts\",\r\n \"qb-core\": \"from QBCore Money.MoneyTypes\",\r\n \"qbx_core\": \"from QBox player session (or default trio if no one is online) — log in once to capture custom accounts\",\r\n \"nd-framework\": \"ND_Core only supports cash + bank\",\r\n \"unknown\": \"no framework detected — type account names manually\",\r\n};\r\n\r\ntype SharedProps = {\r\n endpoint: string;\r\n label?: React.ReactNode;\r\n size?: SelectProps[\"size\"];\r\n placeholder?: string;\r\n disabled?: boolean;\r\n style?: React.CSSProperties;\r\n styles?: SelectProps[\"styles\"];\r\n /** Hide the framework-hint chip below the field. */\r\n hideFrameworkHint?: boolean;\r\n};\r\n\r\ntype SingleProps = SharedProps & {\r\n multi?: false;\r\n value: string | null;\r\n onChange: (name: string | null) => void;\r\n};\r\n\r\ntype MultiProps = SharedProps & {\r\n multi: true;\r\n value: string[];\r\n onChange: (names: string[]) => void;\r\n};\r\n\r\nexport type AccountSelectProps = SingleProps | MultiProps;\r\n\r\nfunction AccountOption({ account }: { account: FrameworkAccount }) {\r\n return (\r\n <Flex direction=\"column\" gap=\"0\">\r\n <Text size=\"xs\" c=\"rgba(255,255,255,0.9)\" ff=\"Akrobat Bold\" tt=\"uppercase\" lts=\"0.04em\">\r\n {account.name}\r\n </Text>\r\n {account.label && (\r\n <Text size=\"xxs\" c=\"rgba(255,255,255,0.4)\">\r\n {account.label}\r\n </Text>\r\n )}\r\n </Flex>\r\n );\r\n}\r\n\r\nfunction FrameworkHint({ framework }: { framework: string | undefined }) {\r\n const theme = useMantineTheme();\r\n if (!framework) return null;\r\n const hintKey = `AccountFrameworkHint_${framework}`;\r\n const text = t(hintKey, FRAMEWORK_HINTS[framework] || FRAMEWORK_HINTS.unknown);\r\n return (\r\n <Flex\r\n align=\"center\" gap=\"xs\" px=\"xs\" py=\"0.3vh\"\r\n style={{\r\n background: alpha(theme.colors.dark[5], 0.4),\r\n border: \"0.1vh solid rgba(255,255,255,0.04)\",\r\n borderRadius: theme.radius.xs,\r\n }}\r\n >\r\n <Text size=\"xxs\" ff=\"Akrobat Bold\" c=\"rgba(255,255,255,0.45)\" tt=\"uppercase\" lts=\"0.04em\">\r\n {framework}\r\n </Text>\r\n <Text size=\"xxs\" ff=\"Akrobat\" c=\"rgba(255,255,255,0.35)\" style={{ flex: 1 }} lineClamp={2}>\r\n {text}\r\n </Text>\r\n </Flex>\r\n );\r\n}\r\n\r\nexport function AccountSelect(props: AccountSelectProps) {\r\n const { endpoint, label, size = \"xs\", placeholder, disabled, style, styles, hideFrameworkHint } = props;\r\n const [accounts, setAccounts] = useState<FrameworkAccount[] | null>(null);\r\n const [framework, setFramework] = useState<string | undefined>(undefined);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const refresh = async () => {\r\n setLoading(true);\r\n try {\r\n const res = await fetchNui<ListResponse>(endpoint, {}, {\r\n // Browser dev fallback. Shows a recognisable ESX-style list.\r\n ok: true,\r\n framework: \"es_extended\",\r\n accounts: [\r\n { name: \"money\", label: \"Cash\" },\r\n { name: \"bank\", label: \"Bank\" },\r\n { name: \"black_money\", label: \"Dirty Money\" },\r\n ],\r\n });\r\n if (res?.ok) {\r\n setAccounts(res.accounts ?? []);\r\n setFramework(res.framework);\r\n } else {\r\n setAccounts([]);\r\n setFramework(res?.framework);\r\n }\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n refresh();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [endpoint]);\r\n\r\n const accountsByName = useMemo(() => {\r\n const map: Record<string, FrameworkAccount> = {};\r\n for (const a of accounts ?? []) map[a.name] = a;\r\n // In multi mode we also need to handle account names the admin typed\r\n // that aren't in the framework list (e.g. custom qbx_core accounts).\r\n if (props.multi) {\r\n for (const n of props.value ?? []) {\r\n if (n && !map[n]) map[n] = { name: n };\r\n }\r\n } else if (props.value && !map[props.value]) {\r\n map[props.value] = { name: props.value };\r\n }\r\n return map;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [accounts, props.multi, props.multi ? props.value?.join(\",\") : props.value]);\r\n\r\n const data: ComboboxItem[] = Object.values(accountsByName).map((a) => ({\r\n value: a.name,\r\n label: a.label ? `${a.name} — ${a.label}` : a.name,\r\n }));\r\n\r\n const renderOption: SelectProps[\"renderOption\"] = ({ option }) => {\r\n const acc = accountsByName[option.value];\r\n return acc ? <AccountOption account={acc} /> : <Text size=\"xs\">{option.label}</Text>;\r\n };\r\n\r\n const refreshButton = (\r\n <ActionIcon\r\n size=\"xs\" variant=\"subtle\"\r\n onMouseDown={(e) => { e.stopPropagation(); }}\r\n onClick={(e) => { e.stopPropagation(); refresh(); }}\r\n title={t(\"Refresh\", \"Refresh\")}\r\n loading={loading}\r\n aria-label={t(\"Refresh\", \"Refresh\")}\r\n >\r\n <RefreshCw size=\"1.2vh\" />\r\n </ActionIcon>\r\n );\r\n\r\n const sharedSelectProps = {\r\n label,\r\n size,\r\n data,\r\n searchable: true,\r\n clearable: true,\r\n disabled: disabled || (loading && !accounts),\r\n rightSection: refreshButton,\r\n rightSectionPointerEvents: \"all\" as const,\r\n style,\r\n nothingFoundMessage: t(\"NoAccounts\", \"No accounts available\"),\r\n };\r\n\r\n return (\r\n <Flex direction=\"column\" gap=\"0.3vh\" style={style}>\r\n {props.multi ? (\r\n <MultiSelect\r\n {...sharedSelectProps}\r\n placeholder={placeholder || t(\"PickAccounts\", \"Pick accounts (or type custom)...\")}\r\n value={props.value || []}\r\n onChange={(names) => props.onChange(names)}\r\n renderOption={renderOption as MultiSelectProps[\"renderOption\"]}\r\n // Free-form entry so admins can add account names the framework\r\n // exposes via `PlayerData.money` keys we couldn't enumerate (qbx).\r\n // The user types a name + presses Enter to commit it.\r\n searchable\r\n hidePickedOptions\r\n // Mantine 7 spelling — accepts unknown values as tags.\r\n // `creatable` was renamed in v7+ but legacy fallback is OK.\r\n styles={styles as MultiSelectProps[\"styles\"]}\r\n />\r\n ) : (\r\n <Select\r\n {...sharedSelectProps}\r\n placeholder={placeholder || t(\"PickAccount\", \"Pick an account...\")}\r\n value={props.value || null}\r\n onChange={(name) => props.onChange(name)}\r\n renderOption={renderOption}\r\n styles={styles}\r\n />\r\n )}\r\n {!hideFrameworkHint && <FrameworkHint framework={framework} />}\r\n </Flex>\r\n );\r\n}\r\n","// General-purpose bottom-right \"do this in-world\" instruction overlay.\r\n//\r\n// Reused by every admin-tool flow that releases NUI focus and asks the\r\n// player to do something in the game world: capture a position, place an\r\n// object, paint a navmesh, etc. The card itself is dumb — it just renders\r\n// a title + hint + list of key labels and stays out of the way.\r\n//\r\n// While visible it hides every other body child via a CSS attribute trick,\r\n// so the admin panel underneath keeps its React state intact (we never\r\n// unmount it). Set hideRestOfAdmin={false} on rare cases where you want\r\n// the panel to overlay alongside other UI rather than replace it.\r\nimport { alpha, Flex, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport type { LucideIcon } from \"lucide-react\";\r\nimport { MapPin } from \"lucide-react\";\r\nimport { useEffect } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nexport type InstructionKey = {\r\n /** Short label drawn inside the key cap (e.g. \"E\", \"⌫\", \"F\"). */\r\n key: string;\r\n /** What the key does (e.g. \"Set\", \"Cancel\"). */\r\n action: string;\r\n};\r\n\r\nexport type InstructionPanelProps = {\r\n visible: boolean;\r\n title: string;\r\n /** One- or two-line subtext explaining what to do. */\r\n hint?: string;\r\n /** List of key bindings shown as labelled key caps. */\r\n keys?: InstructionKey[];\r\n /** Override the default MapPin icon next to the title. */\r\n icon?: LucideIcon;\r\n /**\r\n * When true (default) every direct child of <body> except this overlay is\r\n * hidden via a CSS rule. Lets the admin panel stay mounted (React state\r\n * preserved) while the player sees only the game world + this card.\r\n * Set false if you want the card to sit alongside other UI.\r\n */\r\n hideRestOfAdmin?: boolean;\r\n};\r\n\r\nconst BODY_HIDE_STYLE_ID = \"dirk-instruction-panel-style\";\r\nconst BODY_HIDE_ATTR = \"data-dirk-instruction-active\";\r\nconst OVERLAY_ATTR = \"data-dirk-instruction-overlay\";\r\n\r\nfunction ensureBodyHideStyle() {\r\n if (document.getElementById(BODY_HIDE_STYLE_ID)) return;\r\n const el = document.createElement(\"style\");\r\n el.id = BODY_HIDE_STYLE_ID;\r\n // Belt-and-braces: visibility alone gets overridden by Mantine animations\r\n // on some children (modal backdrops, transition wrappers etc), so combine\r\n // it with opacity + pointer-events to make sure everything goes dark\r\n // while preserving React state via the still-mounted DOM tree.\r\n el.textContent = `\r\n body[${BODY_HIDE_ATTR}] > *:not([${OVERLAY_ATTR}]) {\r\n visibility: hidden !important;\r\n opacity: 0 !important;\r\n pointer-events: none !important;\r\n }\r\n `;\r\n document.head.appendChild(el);\r\n}\r\n\r\nexport function InstructionPanel({\r\n visible,\r\n title,\r\n hint,\r\n keys,\r\n icon: Icon = MapPin,\r\n hideRestOfAdmin = true,\r\n}: InstructionPanelProps) {\r\n const theme = useMantineTheme();\r\n const pc = theme.colors[theme.primaryColor];\r\n\r\n useEffect(() => {\r\n if (!visible || !hideRestOfAdmin) return;\r\n ensureBodyHideStyle();\r\n document.body.setAttribute(BODY_HIDE_ATTR, \"\");\r\n return () => {\r\n document.body.removeAttribute(BODY_HIDE_ATTR);\r\n };\r\n }, [visible, hideRestOfAdmin]);\r\n\r\n if (!visible) return null;\r\n\r\n return createPortal(\r\n <div\r\n {...{ [OVERLAY_ATTR]: \"\" }}\r\n style={{ position: \"fixed\", inset: 0, pointerEvents: \"none\", zIndex: 10000 }}\r\n >\r\n <AnimatePresence>\r\n <motion.div\r\n key=\"instruction-card\"\r\n initial={{ opacity: 0, y: 12, scale: 0.92 }}\r\n animate={{ opacity: 1, y: 0, scale: 1 }}\r\n exit={{ opacity: 0, y: 12, scale: 0.92 }}\r\n transition={{ duration: 0.25, ease: \"easeInOut\" }}\r\n style={{ position: \"absolute\", bottom: \"3vh\", right: \"3vh\", userSelect: \"none\" }}\r\n >\r\n <Flex\r\n direction=\"column\"\r\n gap=\"0.8vh\"\r\n style={{\r\n background: alpha(theme.colors.dark[9], 0.55),\r\n border: \"0.1vh solid rgba(255,255,255,0.07)\",\r\n borderRadius: theme.radius.sm,\r\n boxShadow: \"0 0.74vh 2.96vh rgba(0,0,0,0.5)\",\r\n padding: \"1.4vh 1.6vh\",\r\n minWidth: \"22vh\",\r\n maxWidth: \"28vh\",\r\n }}\r\n >\r\n <Flex align=\"center\" gap=\"0.6vh\">\r\n <Icon size=\"1.6vh\" color={pc[6]} strokeWidth={2.5} />\r\n <Text\r\n style={{\r\n fontFamily: \"Akrobat Bold, sans-serif\",\r\n fontSize: \"1.7vh\",\r\n fontWeight: 700,\r\n letterSpacing: \"0.14em\",\r\n textTransform: \"uppercase\",\r\n color: pc[6],\r\n textShadow: `0 0 0.8vh ${alpha(pc[7], 0.5)}, 0 0 1.6vh ${alpha(pc[9], 0.3)}`,\r\n }}\r\n >\r\n {title}\r\n </Text>\r\n </Flex>\r\n\r\n {(hint || (keys && keys.length > 0)) && (\r\n <div style={{ height: \"0.1vh\", background: \"rgba(255,255,255,0.06)\", margin: \"0.1vh 0\" }} />\r\n )}\r\n\r\n {hint && (\r\n <Text\r\n style={{\r\n fontFamily: \"Akrobat Bold, sans-serif\",\r\n fontSize: \"1.05vh\",\r\n color: \"rgba(255,255,255,0.45)\",\r\n letterSpacing: \"0.06em\",\r\n textTransform: \"uppercase\",\r\n lineHeight: 1.4,\r\n }}\r\n >\r\n {hint}\r\n </Text>\r\n )}\r\n\r\n {keys && keys.length > 0 && (\r\n <>\r\n {hint && (\r\n <div style={{ height: \"0.1vh\", background: \"rgba(255,255,255,0.06)\", margin: \"0.1vh 0\" }} />\r\n )}\r\n <Flex direction=\"column\" gap=\"0.5vh\">\r\n {keys.map((k, i) => (\r\n <InstructionKeyRow key={i} keyLabel={k.key} action={k.action} />\r\n ))}\r\n </Flex>\r\n </>\r\n )}\r\n </Flex>\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>,\r\n document.body,\r\n );\r\n}\r\n\r\n// Specials: when the consumer passes 'LMB' / 'RMB' / 'BACKSPACE' / '⌫' as\r\n// the key label, render an icon instead of plain text so the cap reads at\r\n// a glance. Anything else falls through to text rendering with extra\r\n// horizontal padding so long labels like 'ESC' / 'TAB' don't look cramped.\r\nfunction renderKeyContent(keyLabel: string): React.ReactNode {\r\n const normalized = keyLabel.trim().toUpperCase();\r\n if (normalized === \"LMB\") return <MouseIcon side=\"left\" />;\r\n if (normalized === \"RMB\") return <MouseIcon side=\"right\" />;\r\n if (normalized === \"BACKSPACE\" || keyLabel === \"⌫\") return <BackspaceIcon />;\r\n return (\r\n <Text\r\n style={{\r\n fontFamily: \"Akrobat Bold, sans-serif\",\r\n fontSize: \"1.2vh\",\r\n color: \"rgba(255,255,255,0.85)\",\r\n lineHeight: 1,\r\n padding: \"0 0.3vh\",\r\n }}\r\n >\r\n {keyLabel}\r\n </Text>\r\n );\r\n}\r\n\r\nfunction InstructionKeyRow({ keyLabel, action }: { keyLabel: string; action: string }) {\r\n // Special icon labels read better on a slightly wider cap (the mouse\r\n // glyph is wider than a letter). Text-only caps stay square.\r\n const normalized = keyLabel.trim().toUpperCase();\r\n const isIconKey = normalized === \"LMB\" || normalized === \"RMB\"\r\n || normalized === \"BACKSPACE\" || keyLabel === \"⌫\";\r\n const minWidth = isIconKey ? \"2.6vh\" : \"2.4vh\";\r\n\r\n return (\r\n <Flex align=\"center\" gap=\"0.6vh\">\r\n <div\r\n style={{\r\n minWidth,\r\n height: \"2.4vh\",\r\n padding: \"0 0.4vh\",\r\n borderRadius: \"0.3vh\",\r\n border: \"0.15vh solid rgba(255,255,255,0.35)\",\r\n background: \"rgba(255,255,255,0.06)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n opacity: 0.85,\r\n filter: \"drop-shadow(0 0 0.3vh rgba(0,0,0,0.5))\",\r\n flexShrink: 0,\r\n boxSizing: \"border-box\",\r\n }}\r\n >\r\n {renderKeyContent(keyLabel)}\r\n </div>\r\n <Text\r\n style={{\r\n fontFamily: \"Akrobat Bold, sans-serif\",\r\n fontSize: \"1.05vh\",\r\n color: \"rgba(255,255,255,0.45)\",\r\n letterSpacing: \"0.06em\",\r\n textTransform: \"uppercase\",\r\n }}\r\n >\r\n {action}\r\n </Text>\r\n </Flex>\r\n );\r\n}\r\n\r\n// Inline mouse-body SVG with one half highlighted. Matches the visual\r\n// convention of left/right click hints used elsewhere in the dirk UIs\r\n// (e.g. dirk_fishing's DUI rod indicator).\r\nfunction MouseIcon({ side }: { side: \"left\" | \"right\" }) {\r\n const stroke = \"rgba(255,255,255,0.85)\";\r\n const fillActive = \"rgba(255,255,255,0.85)\";\r\n return (\r\n <svg viewBox=\"0 0 16 22\" width=\"1.4vh\" height=\"1.9vh\" fill=\"none\" stroke={stroke} strokeWidth=\"1.4\" strokeLinejoin=\"round\">\r\n {/* Mouse body */}\r\n <rect x=\"1\" y=\"1\" width=\"14\" height=\"20\" rx=\"6\" />\r\n {/* Centre divider */}\r\n <line x1=\"8\" y1=\"1\" x2=\"8\" y2=\"9\" />\r\n {/* Highlighted button — fill the left or right top quadrant */}\r\n <path\r\n d={\r\n side === \"left\"\r\n ? \"M 7.4 1.6 L 2 1.6 A 5 5 0 0 0 1 6 L 1 9 L 7.4 9 Z\"\r\n : \"M 8.6 1.6 L 14 1.6 A 5 5 0 0 1 15 6 L 15 9 L 8.6 9 Z\"\r\n }\r\n fill={fillActive}\r\n stroke=\"none\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction BackspaceIcon() {\r\n // Backspace key shape (chevron pointing left into a tag). Matches the\r\n // shape of a physical Backspace key on a US layout. Plain SVG so it\r\n // ships without an asset file.\r\n const stroke = \"rgba(255,255,255,0.85)\";\r\n return (\r\n <svg viewBox=\"0 0 22 16\" width=\"1.7vh\" height=\"1.3vh\" fill=\"none\" stroke={stroke} strokeWidth=\"1.4\" strokeLinejoin=\"round\" strokeLinecap=\"round\">\r\n <path d=\"M 21 2 L 8 2 L 2 8 L 8 14 L 21 14 Z\" />\r\n <line x1=\"11\" y1=\"6\" x2=\"16\" y2=\"11\" />\r\n <line x1=\"16\" y1=\"6\" x2=\"11\" y2=\"11\" />\r\n </svg>\r\n );\r\n}\r\n","// Drop-in Set + Goto button pair for \"pick a world coord\" admin fields.\r\n//\r\n// Replaces the old immediate-grab WorldPositionSetButton / WorldPositionGotoButton\r\n// from PositionPicker.tsx with a walk-and-pick flow:\r\n//\r\n// 1. Set click → fetchNui('ADMIN_TOOL_BEGIN', { id: 'capturePosition' })\r\n// → dirk_lib's modules/scriptConfig/admin/tools/position.lua handler\r\n// 2. Lua releases NUI focus, polls E (set) / Backspace (cancel)\r\n// 3. On confirm → SendNUIMessage({ action: 'capturePosition_RESULT', data: {x,y,z,w} })\r\n// On cancel → SendNUIMessage({ action: 'capturePosition_CANCELLED' })\r\n// 4. AdminOverlays routes the message into useAdminToolStore.resolveActive /\r\n// cancelActive, which resolves the start() Promise.\r\n// 5. onChange fires with the captured value, admin re-shows automatically\r\n// via the body-attribute trick in InstructionPanel.\r\n//\r\n// Goto is straightforward — one-way fetchNui to the gotoCoord NUI callback.\r\nimport { alpha, Text, Tooltip, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { Crosshair, MapPin } from \"lucide-react\";\r\nimport { fetchNui } from \"../../utils/fetchNui\";\r\nimport { locale } from \"../../utils/locales\";\r\nimport type { Vector4Value } from \"../PositionPicker\";\r\nimport { useAdminToolStore } from \"./adminToolStore\";\r\n\r\nexport type WorldPositionPickerSlot = {\r\n value: Vector4Value;\r\n onChange: (v: Vector4Value) => void;\r\n compact?: boolean;\r\n /** Show only the Set button (no Goto). Defaults to false. */\r\n setOnly?: boolean;\r\n /** Show only the Goto button (no Set). Defaults to false. */\r\n gotoOnly?: boolean;\r\n};\r\n\r\nexport function WorldPositionPicker({ value, onChange, compact, setOnly, gotoOnly }: WorldPositionPickerSlot) {\r\n return (\r\n <>\r\n {!gotoOnly && <WorldPositionSetButton value={value} onChange={onChange} compact={compact} />}\r\n {!setOnly && <WorldPositionGotoButton value={value} compact={compact} />}\r\n </>\r\n );\r\n}\r\n\r\n// Internal: subcomponent of WorldPositionPicker. Not exported — consumers\r\n// use <WorldPositionPicker> which renders both Set and Goto together. The\r\n// legacy named exports of the same shape live in PositionPicker.tsx for\r\n// backwards-compat with the immediate-grab pattern; that file is being\r\n// phased out as consumers migrate to <WorldPositionPicker>.\r\nfunction WorldPositionSetButton({\r\n value,\r\n onChange,\r\n compact,\r\n}: {\r\n value: Vector4Value;\r\n onChange: (v: Vector4Value) => void;\r\n compact?: boolean;\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const begin = useAdminToolStore((s) => s.begin);\r\n void value;\r\n\r\n const onClick = async () => {\r\n // Order matters: register the resolver in the store FIRST so it's ready\r\n // by the time Lua fires back the result, THEN kick off the Lua flow,\r\n // THEN await the eventual resolution.\r\n const instructions = {\r\n title: locale(\"PickPositionTitle\") || \"Pick Position\",\r\n hint: locale(\"PickPositionHint\") || \"Walk to where you want this set\",\r\n keys: [\r\n { key: \"E\", action: locale(\"Set\") || \"Set\" },\r\n { key: \"⌫\", action: locale(\"Cancel\") || \"Cancel\" },\r\n ],\r\n };\r\n const pendingResult = begin<Vector4Value>({ id: \"capturePosition\", ...instructions });\r\n // `instructions` goes in the fetchNui payload so the Lua handler can\r\n // drive lib.showInstructions itself — the bottom-right panel renders\r\n // from dirk_lib's NUI, not from React.\r\n fetchNui(\"ADMIN_TOOL_BEGIN\", { id: \"capturePosition\", instructions }).catch(() => {\r\n // If the NUI bridge fails, cancel the store entry so we don't leak.\r\n useAdminToolStore.getState().cancelActive();\r\n });\r\n const result = await pendingResult;\r\n if (result) onChange(result);\r\n };\r\n\r\n return (\r\n <Tooltip label={locale(\"SetWorldTooltip\")} position=\"top\" withArrow withinPortal zIndex={2000}>\r\n <motion.button\r\n onClick={onClick}\r\n whileHover={{ background: alpha(color, 0.18) }}\r\n whileTap={{ scale: 0.95 }}\r\n style={{\r\n background: alpha(color, 0.1),\r\n border: `0.1vh solid ${alpha(color, 0.35)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: compact ? \"0.25vh 0.6vh\" : \"0.5vh 0.8vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: compact ? \"0.3vh\" : \"0.4vh\",\r\n }}\r\n >\r\n <Crosshair size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>\r\n {locale(\"Set\")}\r\n </Text>\r\n </motion.button>\r\n </Tooltip>\r\n );\r\n}\r\n\r\nfunction WorldPositionGotoButton({\r\n value,\r\n compact,\r\n}: {\r\n value: Vector4Value;\r\n compact?: boolean;\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const onClick = () => {\r\n fetchNui(\"ADMIN_TOOL_INVOKE\", { id: \"gotoCoord\", value }).catch(() => {});\r\n };\r\n return (\r\n <Tooltip label={locale(\"GotoWorldTooltip\")} position=\"top\" withArrow withinPortal zIndex={2000}>\r\n <motion.button\r\n onClick={onClick}\r\n whileHover={{ background: alpha(color, 0.18) }}\r\n whileTap={{ scale: 0.95 }}\r\n style={{\r\n background: alpha(color, 0.1),\r\n border: `0.1vh solid ${alpha(color, 0.35)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: compact ? \"0.25vh 0.6vh\" : \"0.5vh 0.8vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: compact ? \"0.3vh\" : \"0.4vh\",\r\n }}\r\n >\r\n <MapPin size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>\r\n {locale(\"Goto\")}\r\n </Text>\r\n </motion.button>\r\n </Tooltip>\r\n );\r\n}\r\n","// In-world door picker — React side.\r\n//\r\n// Mirrors the WorldPositionPicker pattern: tell the AdminTools store to\r\n// begin a tool flow (renders InstructionPanel bottom-right with title +\r\n// key hints), kick the Lua admin-tool handler over fetchNui, await the\r\n// SendNUIMessage result/cancel that AdminOverlays routes back via the\r\n// store.\r\n//\r\n// Wired to dirk_lib's modules/scriptConfig/admin/tools/door.lua which\r\n// drives lib.doorlock.pick — a multi-pick flow where the admin builds a\r\n// GROUP of 1-2 doors (single door / double-door pair) and confirms it\r\n// as one logical \"door entry\". Result shape mirrors that:\r\n//\r\n// {\r\n// doors: [\r\n// { model, coords, heading, isDoor },\r\n// { model, coords, heading, isDoor }, // present only on doubles\r\n// ]\r\n// }\r\n//\r\n// Usage:\r\n// const pickDoor = usePickDoor();\r\n// const picked = await pickDoor();\r\n// if (picked) console.log(picked.doors.length, 'doors picked');\r\n//\r\n// Drop-in button (matches WorldPositionPicker styling):\r\n// <DoorPickerButton onPick={picked => addLabDoor(picked.doors)} />\r\n\r\nimport { alpha, Text, Tooltip, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { DoorOpen } from \"lucide-react\";\r\nimport { fetchNui } from \"../../utils/fetchNui\";\r\nimport { locale } from \"../../utils/locales\";\r\nimport { useAdminToolStore } from \"./adminToolStore\";\r\n\r\n/** A single picked door panel — one entity the admin LMB'd in-world. */\r\nexport type PickedDoor = {\r\n /** Door entity model hash. */\r\n model: number;\r\n /** Resolved model name (e.g. 'v_ilev_meth_loaddoor'). nil when the\r\n * hash isn't in dirk_lib's lookup table (custom prop, MLO asset). */\r\n modelName?: string | null;\r\n /** World coords of the door entity, snapshotted at pick time. */\r\n coords: { x: number; y: number; z: number };\r\n /** Door entity heading in degrees. */\r\n heading: number;\r\n /** True when IsEntityADoor() flagged the entity as a real door (vs a\r\n * prop the admin happened to aim at). Informational — pickers accept\r\n * any entity. */\r\n isDoor?: boolean;\r\n};\r\n\r\n/**\r\n * A confirmed pick from the multi-pick door tool. `doors` is 1-2 entries:\r\n * length 1 = single door, length 2 = double-door pair. Maps cleanly onto\r\n * ox_doorlock's single-door vs double-door spec.\r\n */\r\nexport type PickedDoorGroup = {\r\n doors: PickedDoor[];\r\n};\r\n\r\n/**\r\n * Returns a function that triggers the in-world door picker. Renders the\r\n * standard InstructionPanel while the player is aiming. Resolves with\r\n * `null` on cancel or backend failure.\r\n */\r\nexport function usePickDoor(): () => Promise<PickedDoorGroup | null> {\r\n const begin = useAdminToolStore((s) => s.begin);\r\n return async () => {\r\n // Order matters: register the resolver in the store FIRST so it's\r\n // primed by the time Lua fires the result, THEN kick the Lua flow.\r\n const pending = begin<PickedDoorGroup>({\r\n id: \"pickDoor\",\r\n title: locale(\"PickDoorTitle\"),\r\n hint: locale(\"PickDoorHint\"),\r\n keys: [\r\n { key: \"LMB\", action: locale(\"Toggle\") },\r\n { key: \"E\", action: locale(\"Confirm\") },\r\n { key: \"BACKSPACE\", action: locale(\"Cancel\") },\r\n ],\r\n });\r\n fetchNui(\"ADMIN_TOOL_BEGIN\", { id: \"pickDoor\" }).catch(() => {\r\n useAdminToolStore.getState().cancelActive();\r\n });\r\n return await pending;\r\n };\r\n}\r\n\r\n/**\r\n * Drop-in button — same styling as WorldPositionSetButton. Triggers the\r\n * picker on click and calls `onPick` with the result (or never fires on\r\n * cancel).\r\n */\r\nexport function DoorPickerButton({\r\n onPick,\r\n compact,\r\n label,\r\n tooltip,\r\n}: {\r\n onPick: (picked: PickedDoorGroup) => void;\r\n compact?: boolean;\r\n /** Override the button label. Defaults to locale(\"PickDoor\"). */\r\n label?: string;\r\n /** Override the tooltip. Defaults to locale(\"PickDoorTooltip\"). */\r\n tooltip?: string;\r\n}) {\r\n const theme = useMantineTheme();\r\n const color = theme.colors[theme.primaryColor][5];\r\n const pickDoor = usePickDoor();\r\n\r\n const onClick = async () => {\r\n const picked = await pickDoor();\r\n if (picked && picked.doors.length > 0) onPick(picked);\r\n };\r\n\r\n return (\r\n <Tooltip\r\n label={tooltip ?? locale(\"PickDoorTooltip\")}\r\n position=\"top\"\r\n withArrow\r\n withinPortal\r\n zIndex={2000}\r\n >\r\n <motion.button\r\n onClick={onClick}\r\n whileHover={{ background: alpha(color, 0.18) }}\r\n whileTap={{ scale: 0.95 }}\r\n style={{\r\n background: alpha(color, 0.1),\r\n border: `0.1vh solid ${alpha(color, 0.35)}`,\r\n borderRadius: theme.radius.xs,\r\n padding: compact ? \"0.25vh 0.6vh\" : \"0.5vh 0.8vh\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: compact ? \"0.3vh\" : \"0.4vh\",\r\n }}\r\n >\r\n <DoorOpen size={compact ? \"1.1vh\" : \"1.3vh\"} color={color} />\r\n <Text ff=\"Akrobat Bold\" size=\"xxs\" tt=\"uppercase\" lts=\"0.06em\" c={color}>\r\n {label ?? locale(\"PickDoor\")}\r\n </Text>\r\n </motion.button>\r\n </Tooltip>\r\n );\r\n}\r\n","// Shared GTA-V Leaflet map. Originally lived in dirk_fishing's Book/Map/\r\n// MapHandler.tsx — lifted here so every consumer that wants an admin or\r\n// guidebook map (druglabsv2 lab placement, fishing guidebook, future\r\n// scripts) renders the same tile layer + zoom + bounds without copying\r\n// 100 lines per repo.\r\n//\r\n// Use:\r\n// <Map initialCenter={gameToMap(myPos.x, myPos.y)}>\r\n// <ZoomControls/>\r\n// {markers}\r\n// </Map>\r\n//\r\n// Pair with <BlipMarker> for the standard GTA blip-as-marker. Custom\r\n// markers stay possible via @adamscybot/react-leaflet-component-marker's\r\n// <Marker icon={<jsx/>} /> pattern; this file only owns the container +\r\n// tile layer + zoom widget.\r\nimport { alpha, useMantineTheme } from \"@mantine/core\";\r\nimport { CRS, latLng, latLngBounds, Map as LeafletMapType, tileLayer, TileLayer } from \"leaflet\";\r\nimport \"leaflet/dist/leaflet.css\";\r\nimport { Minus, Plus } from \"lucide-react\";\r\nimport { memo, ReactNode, useEffect, useRef } from \"react\";\r\nimport { MapContainer, useMap } from \"react-leaflet\";\r\nimport { motion } from \"framer-motion\";\r\nimport { gameToMap } from \"../../utils/map\";\r\n\r\nexport type MapStyle = \"game\" | \"render\" | \"print\";\r\n\r\nexport type MapProps = {\r\n children?: ReactNode;\r\n initialZoom?: number;\r\n initialCenter?: [number, number];\r\n mapStyle?: MapStyle;\r\n className?: string;\r\n};\r\n\r\nconst MapImpl = memo(({\r\n children,\r\n initialZoom = 2.0,\r\n initialCenter = gameToMap(0, 0),\r\n mapStyle = \"game\",\r\n}: MapProps) => {\r\n const mapRef = useRef<LeafletMapType | null>(null);\r\n\r\n return (\r\n <MapContainer\r\n maxBoundsViscosity={1.0}\r\n preferCanvas={true}\r\n zoom={Math.round(initialZoom)}\r\n zoomSnap={1}\r\n zoomDelta={1}\r\n zoomControl={false}\r\n crs={CRS.Simple}\r\n style={{\r\n height: '100%',\r\n width: '100%',\r\n overflow: 'hidden',\r\n outline: 'none !important',\r\n border: 'none !important',\r\n boxShadow: 'none !important',\r\n backgroundColor: '#384950',\r\n }}\r\n center={initialCenter}\r\n attributionControl={false}\r\n doubleClickZoom={false}\r\n inertia={false}\r\n zoomAnimation={false}\r\n ref={mapRef}\r\n maxBounds={[[-250, -250], [250, 250]]}\r\n >\r\n <MapLayer mapLayer={mapStyle} />\r\n {children}\r\n </MapContainer>\r\n );\r\n});\r\nMapImpl.displayName = 'DirkMap';\r\n\r\nexport const Map = MapImpl;\r\n\r\n// ── Tile layer ──────────────────────────────────────────────────────────────\r\n// Pulls Rockstar's hosted GTA-V tile pyramid. `game` is the standard\r\n// in-game map, `render` is the higher-detail satellite-style, `print` is\r\n// the cartographic/printable variant.\r\n\r\ntype MapLayerProps = {\r\n mapLayer: MapStyle;\r\n};\r\n\r\nexport const MapLayer = ({ mapLayer }: MapLayerProps) => {\r\n const map = useMap();\r\n const layerRef = useRef<TileLayer | null>(null);\r\n\r\n useEffect(() => {\r\n if (layerRef.current) {\r\n map.removeLayer(layerRef.current);\r\n }\r\n const layer = tileLayer(\r\n `https://s.rsg.sc/sc/images/games/GTAV/map/${mapLayer}/{z}/{x}/{y}.jpg`,\r\n {\r\n maxZoom: 6,\r\n minZoom: 4,\r\n bounds: latLngBounds(latLng(0.0, 128.0), latLng(-192.0, 0.0)),\r\n tileSize: 256,\r\n updateWhenZooming: false,\r\n keepBuffer: 2,\r\n opacity: 0.75,\r\n }\r\n );\r\n layer.addTo(map);\r\n layerRef.current = layer;\r\n\r\n return () => {\r\n if (layerRef.current) {\r\n map.removeLayer(layerRef.current);\r\n }\r\n };\r\n }, [mapLayer, map]);\r\n\r\n return null;\r\n};\r\n\r\n// ── ZoomControls ────────────────────────────────────────────────────────────\r\n// Generic + / − widget pinned top-right. Must be rendered inside <Map>.\r\n\r\nexport function ZoomControls() {\r\n const theme = useMantineTheme();\r\n const map = useMap();\r\n const buttons = [\r\n { Icon: Plus, fn: () => map.zoomIn() },\r\n { Icon: Minus, fn: () => map.zoomOut() },\r\n ];\r\n\r\n return (\r\n <motion.div\r\n style={{\r\n position: 'absolute',\r\n right: '2vh',\r\n top: '2vh',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n zIndex: 999999,\r\n boxShadow: `0 0 1vh ${alpha(theme.colors.dark[9], 0.85)}`,\r\n background: alpha(theme.colors.dark[9], 0.85),\r\n borderRadius: theme.radius.xs,\r\n }}\r\n initial={{ opacity: 0, y: -20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -20 }}\r\n >\r\n {buttons.map(({ Icon, fn }, i) => (\r\n <motion.div\r\n key={i}\r\n whileHover={{ scale: 1.1, filter: 'brightness(1.5)' }}\r\n onClick={fn}\r\n style={{\r\n padding: theme.spacing.xs,\r\n cursor: 'pointer',\r\n display: 'flex',\r\n }}\r\n >\r\n <Icon size={34} color={theme.colors.gray[5]} />\r\n </motion.div>\r\n ))}\r\n </motion.div>\r\n );\r\n}\r\n","// Renders a GTA-V blip on a Leaflet map at the given world coords.\r\n// Uses the same sprite/color id system the game uses, looked up against\r\n// the BLIP_ENTRIES / BLIP_COLORS tables in BlipSelect.tsx so the visual\r\n// matches whatever the admin picked in <BlipIconSelect> / <BlipColorSelect>.\r\n//\r\n// The colour comes from the GTA blip palette and is applied as a tinted\r\n// background behind the white sprite, mimicking the in-game look. For\r\n// labs/shops/etc that have no blip configured, pass `fallbackSprite` and\r\n// `fallbackColor` and the marker still renders with a neutral look.\r\n//\r\n// Use:\r\n// <BlipMarker\r\n// position={{ x: lab.door.x, y: lab.door.y }}\r\n// sprite={lab.blip?.sprite}\r\n// color={lab.blip?.color}\r\n// onClick={() => openEdit(lab.name)}\r\n// selected={selectedId === lab.name}\r\n// />\r\nimport { Marker } from \"@adamscybot/react-leaflet-component-marker\";\r\nimport { alpha } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { useMemo, useState } from \"react\";\r\nimport { gameToMap } from \"../../utils/map\";\r\nimport { blipUrlForSprite, getBlipColor } from \"../BlipSelect\";\r\n\r\nexport type BlipMarkerProps = {\r\n /** Game-world coordinates. z is ignored; map is 2D. */\r\n position: { x: number; y: number };\r\n /** Blip sprite id (0..830ish) — see BLIP_ENTRIES. */\r\n sprite?: number | null;\r\n /** Blip color id (0..85) — see BLIP_COLORS. */\r\n color?: number | null;\r\n /** Display scale multiplier. Default 1.0 → ~3vh visual size. */\r\n scale?: number;\r\n /** Click handler. Fires `e.originalEvent.stopPropagation()` before yours. */\r\n onClick?: () => void;\r\n /** When true, marker gets a brighter glow + bigger size to indicate\r\n * this is the currently-selected entry. */\r\n selected?: boolean;\r\n /** When true, marker is rendered at low opacity and clicks no-op —\r\n * for \"this entry is broken / unavailable\" states. */\r\n disabled?: boolean;\r\n /** Sprite id used when `sprite` is null/missing. Defaults to 162\r\n * (radar_poi — neutral grey dot). */\r\n fallbackSprite?: number;\r\n /** Color id used when `color` is null/missing. Defaults to 0 (white). */\r\n fallbackColor?: number;\r\n};\r\n\r\nconst DEFAULT_SPRITE = 162; // radar_poi\r\nconst DEFAULT_COLOR = 5; // yellow — readable on the GTA map (color 0/white blends in)\r\n\r\nexport function BlipMarker({\r\n position,\r\n sprite,\r\n color,\r\n scale = 1,\r\n onClick,\r\n selected,\r\n disabled,\r\n fallbackSprite = DEFAULT_SPRITE,\r\n fallbackColor = DEFAULT_COLOR,\r\n}: BlipMarkerProps) {\r\n const [hovered, setHovered] = useState(false);\r\n\r\n const mapCoords = useMemo(() => gameToMap(position.x, position.y), [position.x, position.y]);\r\n\r\n const effectiveSprite = sprite ?? fallbackSprite;\r\n const effectiveColor = color ?? fallbackColor;\r\n const url = blipUrlForSprite(effectiveSprite);\r\n const colorHex = getBlipColor(effectiveColor)?.hex ?? \"#ffffff\";\r\n\r\n const handleClick = (e: any) => {\r\n e.originalEvent?.stopPropagation?.();\r\n if (disabled) return;\r\n onClick?.();\r\n };\r\n\r\n // Default ~1.8vh — Rockstar's sprite pngs are tiny (32px-ish), going much\r\n // bigger amplifies the pixelation. Scale prop lets consumers nudge up\r\n // for high-importance markers.\r\n const baseSize = 1.8 * scale;\r\n const size = `${baseSize}vh`;\r\n const ringSize = `${baseSize * 1.6}vh`;\r\n\r\n return (\r\n <Marker\r\n position={mapCoords}\r\n eventHandlers={onClick ? { click: handleClick } : undefined}\r\n icon={\r\n <motion.div\r\n onHoverStart={() => setHovered(true)}\r\n onHoverEnd={() => setHovered(false)}\r\n style={{\r\n position: \"relative\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n cursor: disabled ? \"not-allowed\" : onClick ? \"pointer\" : \"default\",\r\n opacity: disabled ? 0.35 : 1,\r\n width: size,\r\n height: size,\r\n }}\r\n animate={{ scale: hovered && !disabled ? 1.2 : selected ? 1.15 : 1 }}\r\n transition={{ duration: 0.15, ease: \"easeOut\" }}\r\n >\r\n {/* Selection / hover ring (no solid disk behind the sprite — the\r\n old version's white-tinted disk looked bad over the map). */}\r\n {(selected || hovered) && !disabled && (\r\n <motion.div\r\n style={{\r\n position: \"absolute\",\r\n width: ringSize,\r\n height: ringSize,\r\n borderRadius: \"50%\",\r\n border: `0.18vh solid ${alpha(colorHex, 0.85)}`,\r\n boxShadow: `0 0 1vh ${alpha(colorHex, 0.55)}`,\r\n }}\r\n initial={{ opacity: 0, scale: 0.8 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n />\r\n )}\r\n\r\n {/* Tinted sprite via CSS mask. Rockstar's blip pngs are white\r\n silhouettes — using mask-image + background-color paints them\r\n in the blip's GTA color cleanly, no halo, no double-render.\r\n The stacked 1px drop-shadows in 4 cardinal directions fake a\r\n uniform 1px black outline (CSS has no native stroke for masked\r\n elements). Final big drop-shadow adds the soft halo for depth. */}\r\n {url && (\r\n <div\r\n style={{\r\n width: size,\r\n height: size,\r\n backgroundColor: colorHex,\r\n WebkitMaskImage: `url(${url})`,\r\n maskImage: `url(${url})`,\r\n WebkitMaskRepeat: \"no-repeat\",\r\n maskRepeat: \"no-repeat\",\r\n WebkitMaskPosition: \"center\",\r\n maskPosition: \"center\",\r\n WebkitMaskSize: \"contain\",\r\n maskSize: \"contain\",\r\n filter: [\r\n \"drop-shadow(0.12vh 0 0 #000)\",\r\n \"drop-shadow(-0.12vh 0 0 #000)\",\r\n \"drop-shadow(0 0.12vh 0 #000)\",\r\n \"drop-shadow(0 -0.12vh 0 #000)\",\r\n `drop-shadow(0 0 0.4vh ${alpha(\"#000\", 0.7)})`,\r\n ].join(\" \"),\r\n pointerEvents: \"none\",\r\n userSelect: \"none\",\r\n }}\r\n />\r\n )}\r\n </motion.div>\r\n }\r\n />\r\n );\r\n}\r\n","import { Autocomplete } from \"@mantine/core\";\nimport React, { useEffect } from \"react\";\nimport { useModels, loadModels } from \"../utils/useModels\";\nimport { locale } from \"../utils/locales\";\n\nexport type ModelSelectProps = {\n value?: string;\n onChange: (model: string) => void;\n label?: React.ReactNode;\n placeholder?: string;\n size?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n /** Max suggestions rendered in the dropdown at once (default 100). */\n limit?: number;\n};\n\n// Searchable GTA model-name picker. Backed by the ~54k model list, which\n// lazy-loads on first mount (see loadModels) so it never bloats a UI that\n// doesn't use it. Uses Autocomplete (not Select) so admins can pick a known\n// model OR type a custom/addon one; Mantine only renders `limit` matches at a\n// time so 54k options stay snappy.\nexport function ModelSelect({\n value,\n onChange,\n label,\n placeholder,\n size = \"xs\",\n disabled,\n style,\n limit = 100,\n}: ModelSelectProps) {\n const models = useModels((s) => s.models);\n\n useEffect(() => {\n loadModels();\n }, []);\n\n return (\n <Autocomplete\n label={label}\n placeholder={placeholder ?? (locale(\"SearchModel\") || \"Search or type a model…\")}\n size={size}\n disabled={disabled}\n style={style}\n data={models}\n value={value ?? \"\"}\n limit={limit}\n onChange={(v) => onChange(v)}\n />\n );\n}\n","import { MultiSelect, Select } from \"@mantine/core\";\nimport React, { useEffect } from \"react\";\nimport { useVehicles, ensureVehicles } from \"../utils/useVehicles\";\nimport { locale } from \"../utils/locales\";\n\n// Single shared-vehicle picker (value/onChange are the raw model string). The\n// list lazy-loads on mount (QB/QBX only — empty on ESX). Labels show\n// \"Name (model)\". Falls back to keeping a custom value selectable.\nexport function VehicleSelect({\n value,\n onChange,\n label,\n size = \"xs\",\n disabled,\n style,\n limit = 100,\n}: {\n value?: string;\n onChange: (model: string) => void;\n label?: React.ReactNode;\n size?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n limit?: number;\n}) {\n const vehicles = useVehicles((s) => s.vehicles);\n useEffect(() => { ensureVehicles(); }, []);\n\n const data = vehicles.map((v) => ({ value: v.model, label: v.name ? `${v.name} (${v.model})` : v.model }));\n const extra = value && !vehicles.some((v) => v.model === value) ? [{ value, label: value }] : [];\n\n return (\n <Select\n label={label}\n size={size}\n disabled={disabled}\n style={style}\n placeholder={locale(\"SearchVehicle\") || \"Search a vehicle…\"}\n data={[...extra, ...data]}\n value={value ?? null}\n searchable\n clearable\n limit={limit}\n onChange={(v) => onChange(v ?? \"\")}\n />\n );\n}\n\n// Multi-select of shared-vehicle categories (the GTA classes each vehicle is\n// tagged with — compacts, sports, super, …). Options lazy-load on mount.\nexport function CategorySelect({\n value,\n onChange,\n label,\n size = \"xs\",\n disabled,\n style,\n}: {\n value: string[];\n onChange: (categories: string[]) => void;\n label?: React.ReactNode;\n size?: string;\n disabled?: boolean;\n style?: React.CSSProperties;\n}) {\n const categories = useVehicles((s) => s.categories);\n useEffect(() => { ensureVehicles(); }, []);\n\n // Keep any already-selected category that isn't in the fetched list.\n const opts = Array.from(new Set([...(value ?? []), ...categories])).sort();\n\n return (\n <MultiSelect\n label={label}\n size={size}\n disabled={disabled}\n style={style}\n placeholder={locale(\"SelectCategories\") || \"Select categories…\"}\n data={opts}\n value={value ?? []}\n searchable\n clearable\n onChange={onChange}\n />\n );\n}\n"]}