dirk-cfx-react 1.0.64 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/colorWithAlpha.ts","../src/utils/misc.ts","../src/utils/fetchNui.ts","../src/utils/internalEvent.ts","../src/utils/locales.ts","../src/utils/map.ts","../src/utils/profanity.ts","../src/utils/createSkill.ts","../src/utils/images.ts","../src/components/BorderedIcon.tsx","../src/components/Motion.tsx","../src/components/Counter.tsx","../src/components/FloatingParticles.tsx","../src/components/InfoBox.tsx","../src/components/InputContainer.tsx","../src/hooks/useAudio/store.ts","../src/components/SegmentedControl.tsx","../src/components/Navigation.tsx","../src/components/SegmentedProgress.tsx","../src/components/Title.tsx","../src/components/LevelBanner.tsx","../src/components/LevelPanel.tsx","../src/components/ModalStore.tsx","../src/components/Modal.tsx","../src/components/PromptModal.tsx","../src/hooks/useNuiEvent.ts","../src/hooks/useForm.tsx","../src/theme.ts","../src/providers/DirkProvider.tsx","../src/hooks/useTornEdges.tsx","../src/hooks/useScriptSettings.ts"],"names":["alpha","create","useStore","theme","Image","FontAwesomeIcon","jsx","useEffect","motion","useMantineTheme","Flex","Text","jsxs","useRef","createContext","useContext","AnimatePresence","error","state","useMemo"],"mappings":"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","file":"index.js","sourcesContent":["\r\nconst colorNames = {\r\n AliceBlue: { r: 240, g: 248, b: 255 },\r\n AntiqueWhite: { r: 250, g: 235, b: 215 },\r\n Aqua: { r: 0, g: 255, b: 255 },\r\n Aquamarine: { r: 127, g: 255, b: 212 },\r\n Azure: { r: 240, g: 255, b: 255 },\r\n Beige: { r: 245, g: 245, b: 220 },\r\n Bisque: { r: 255, g: 228, b: 196 },\r\n Black: { r: 0, g: 0, b: 0 },\r\n BlanchedAlmond: { r: 255, g: 235, b: 205 },\r\n Blue: { r: 0, g: 0, b: 255 },\r\n BlueViolet: { r: 138, g: 43, b: 226 },\r\n Brown: { r: 165, g: 42, b: 42 },\r\n BurlyWood: { r: 222, g: 184, b: 135 },\r\n CadetBlue: { r: 95, g: 158, b: 160 },\r\n Chartreuse: { r: 127, g: 255, b: 0 },\r\n Chocolate: { r: 210, g: 105, b: 30 },\r\n Coral: { r: 255, g: 127, b: 80 },\r\n CornflowerBlue: { r: 100, g: 149, b: 237 },\r\n Cornsilk: { r: 255, g: 248, b: 220 },\r\n Crimson: { r: 220, g: 20, b: 60 },\r\n Cyan: { r: 0, g: 255, b: 255 },\r\n DarkBlue: { r: 0, g: 0, b: 139 },\r\n DarkCyan: { r: 0, g: 139, b: 139 },\r\n DarkGoldenRod: { r: 184, g: 134, b: 11 },\r\n DarkGray: { r: 169, g: 169, b: 169 },\r\n DarkGreen: { r: 0, g: 100, b: 0 },\r\n DarkKhaki: { r: 189, g: 183, b: 107 },\r\n DarkMagenta: { r: 139, g: 0, b: 139 },\r\n DarkOliveGreen: { r: 85, g: 107, b: 47 },\r\n DarkOrange: { r: 255, g: 140, b: 0 },\r\n DarkOrchid: { r: 153, g: 50, b: 204 },\r\n DarkRed: { r: 139, g: 0, b: 0 },\r\n DarkSalmon: { r: 233, g: 150, b: 122 },\r\n DarkSeaGreen: { r: 143, g: 188, b: 143 },\r\n DarkSlateBlue: { r: 72, g: 61, b: 139 },\r\n DarkSlateGray: { r: 47, g: 79, b: 79 },\r\n DarkTurquoise: { r: 0, g: 206, b: 209 },\r\n DarkViolet: { r: 148, g: 0, b: 211 },\r\n DeepPink: { r: 255, g: 20, b: 147 },\r\n DeepSkyBlue: { r: 0, g: 191, b: 255 },\r\n DimGray: { r: 105, g: 105, b: 105 },\r\n DodgerBlue: { r: 30, g: 144, b: 255 },\r\n FireBrick: { r: 178, g: 34, b: 34 },\r\n FloralWhite: { r: 255, g: 250, b: 240 },\r\n ForestGreen: { r: 34, g: 139, b: 34 },\r\n Fuchsia: { r: 255, g: 0, b: 255 },\r\n Gainsboro: { r: 220, g: 220, b: 220 },\r\n GhostWhite: { r: 248, g: 248, b: 255 },\r\n Gold: { r: 255, g: 215, b: 0 },\r\n GoldenRod: { r: 218, g: 165, b: 32 },\r\n Gray: { r: 128, g: 128, b: 128 },\r\n Green: { r: 0, g: 128, b: 0 },\r\n GreenYellow: { r: 173, g: 255, b: 47 },\r\n HoneyDew: { r: 240, g: 255, b: 240 },\r\n HotPink: { r: 255, g: 105, b: 180 },\r\n IndianRed: { r: 205, g: 92, b: 92 },\r\n Indigo: { r: 75, g: 0, b: 130 },\r\n Ivory: { r: 255, g: 255, b: 240 },\r\n Khaki: { r: 240, g: 230, b: 140 },\r\n Lavender: { r: 230, g: 230, b: 250 },\r\n LavenderBlush: { r: 255, g: 240, b: 245 },\r\n LawnGreen: { r: 124, g: 252, b: 0 },\r\n LemonChiffon: { r: 255, g: 250, b: 205 },\r\n LightBlue: { r: 173, g: 216, b: 230 },\r\n LightCoral: { r: 240, g: 128, b: 128 },\r\n LightCyan: { r: 224, g: 255, b: 255 },\r\n LightGoldenRodYellow: { r: 250, g: 250, b: 210 },\r\n LightGray: { r: 211, g: 211, b: 211 },\r\n LightGreen: { r: 144, g: 238, b: 144 },\r\n LightPink: { r: 255, g: 182, b: 193 },\r\n LightSalmon: { r: 255, g: 160, b: 122 },\r\n LightSeaGreen: { r: 32, g: 178, b: 170 },\r\n LightSkyBlue: { r: 135, g: 206, b: 250 },\r\n LightSlateGray: { r: 119, g: 136, b: 153 },\r\n LightSteelBlue: { r: 176, g: 196, b: 222 },\r\n LightYellow: { r: 255, g: 255, b: 224 },\r\n Lime: { r: 0, g: 255, b: 0 },\r\n LimeGreen: { r: 50, g: 205, b: 50 },\r\n Linen: { r: 250, g: 240, b: 230 },\r\n Magenta: { r: 255, g: 0, b: 255 },\r\n Maroon: { r: 128, g: 0, b: 0 }, // Maroon\r\n MediumAquaMarine: { r: 102, g: 205, b: 170 },\r\n MediumBlue: { r: 0, g: 0, b: 205 },\r\n MediumOrchid: { r: 186, g: 85, b: 211 },\r\n MediumPurple: { r: 147, g: 112, b: 219 },\r\n MediumSeaGreen: { r: 60, g: 179, b: 113 },\r\n MediumSlateBlue: { r: 123, g: 104, b: 238 },\r\n MediumSpringGreen: { r: 0, g: 250, b: 154 },\r\n MediumTurquoise: { r: 72, g: 209, b: 204 },\r\n MediumVioletRed: { r: 199, g: 21, b: 133 },\r\n MidnightBlue: { r: 25, g: 25, b: 112 },\r\n MintCream: { r: 245, g: 255, b: 250 },\r\n MistyRose: { r: 255, g: 228, b: 225 },\r\n Moccasin: { r: 255, g: 228, b: 181 },\r\n NavajoWhite: { r: 255, g: 222, b: 173 },\r\n Navy: { r: 0, g: 0, b: 128 },\r\n OldLace: { r: 253, g: 245, b: 230 },\r\n Olive: { r: 128, g: 128, b: 0 },\r\n OliveDrab: { r: 107, g: 142, b: 35 },\r\n Orange: { r: 255, g: 165, b: 0 },\r\n OrangeRed: { r: 255, g: 69, b: 0 },\r\n Orchid: { r: 218, g: 112, b: 214 },\r\n PaleGoldenRod: { r: 238, g: 232, b: 170 },\r\n PaleGreen: { r: 152, g: 251, b: 152 },\r\n PaleTurquoise: { r: 175, g: 238, b: 238 },\r\n PaleVioletRed: { r: 219, g: 112, b: 147 },\r\n PapayaWhip: { r: 255, g: 239, b: 213 },\r\n PeachPuff: { r: 255, g: 218, b: 185 },\r\n Peru: { r: 205, g: 133, b: 63 },\r\n Pink: { r: 255, g: 192, b: 203 },\r\n Plum: { r: 221, g: 160, b: 221 },\r\n PowderBlue: { r: 176, g: 224, b: 230 },\r\n Purple: { r: 128, g: 0, b: 128 },\r\n RebeccaPurple: { r: 102, g: 51, b: 153 },\r\n Red: { r: 255, g: 0, b: 0 },\r\n RosyBrown: { r: 188, g: 143, b: 143 },\r\n RoyalBlue: { r: 65, g: 105, b: 225 },\r\n SaddleBrown: { r: 139, g: 69, b: 19 },\r\n Salmon: { r: 250, g: 128, b: 114 },\r\n SandyBrown: { r: 244, g: 164, b: 96 },\r\n SeaGreen: { r: 46, g: 139, b: 87 },\r\n SeaShell: { r: 255, g: 245, b: 238 },\r\n Sienna: { r: 160, g: 82, b: 45 },\r\n Silver: { r: 192, g: 192, b: 192 },\r\n SkyBlue: { r: 135, g: 206, b: 235 },\r\n SlateBlue: { r: 106, g: 90, b: 205 },\r\n SlateGray: { r: 112, g: 128, b: 144 },\r\n Snow: { r: 255, g: 250, b: 250 },\r\n SpringGreen: { r: 0, g: 255, b: 127 },\r\n SteelBlue: { r: 70, g: 130, b: 180 },\r\n Tan: { r: 210, g: 180, b: 140 },\r\n Teal: { r: 0, g: 128, b: 128 },\r\n Thistle: { r: 216, g: 191, b: 216 },\r\n Tomato: { r: 255, g: 99, b: 71 },\r\n Turquoise: { r: 64, g: 224, b: 208 },\r\n Violet: { r: 238, g: 130, b: 238 },\r\n Wheat: { r: 245, g: 222, b: 179 },\r\n White: { r: 255, g: 255, b: 255 },\r\n WhiteSmoke: { r: 245, g: 245, b: 245 },\r\n Yellow: { r: 255, g: 255, b: 0 },\r\n YellowGreen: { r: 154, g: 205, b: 50 }\r\n};\r\n\r\n\r\n\r\n\r\nexport function colorWithAlpha(color: string, alpha: number): string {\r\n const lowerCasedColor = color.toLowerCase() as keyof typeof colorNames;\r\n \r\n if (colorNames[lowerCasedColor]) {\r\n const rgb = colorNames[lowerCasedColor];\r\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;\r\n }\r\n \r\n // If color is in hex format (#RRGGBB)\r\n if (/^#([A-Fa-f0-9]{6})$/.test(color)) {\r\n const hex = color.slice(1);\r\n const bigint = parseInt(hex, 16);\r\n const r = (bigint >> 16) & 255;\r\n const g = (bigint >> 8) & 255;\r\n const b = bigint & 255;\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n }\r\n \r\n // If color is in rgb format (rgb(r, g, b))\r\n if (/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/.test(color)) {\r\n const result = color.match(/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/);\r\n if (result) {\r\n return `rgba(${result[1]}, ${result[2]}, ${result[3]}, ${alpha})`;\r\n }\r\n }\r\n \r\n // Default to original color if format is not recognized\r\n return color;\r\n}","export const isEnvBrowser = (): boolean => !(window as any).invokeNative;\r\n\r\n// Basic no operation function\r\nexport const noop = () => {};\r\n\r\nexport const splitFAString = (faString:string) => {\r\n const [prefix, newIcon] = faString.split('-');\r\n if (!prefix || !newIcon) return {prefix: 'fas', newIcon: 'question'};\r\n return {prefix, newIcon};\r\n}\r\n\r\nexport const numberToRoman = (num:number) => {\r\n const romanNumerals = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'] \r\n return romanNumerals[num]\r\n}\r\n\r\nexport const copyToClipboard = (text:string) => {\r\n const el = document.createElement('textarea');\r\n el.value = text;\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n}\r\n\r\nexport const openLink = (url:string) => {\r\n if (isEnvBrowser()) {\r\n window.open(url, '_blank');\r\n } else {\r\n // @ts-expect-error -- invokeNative exists in NUI\r\n window.invokeNative('openLink', url);\r\n } \r\n}","import { useEffect } from \"react\";\r\nimport { isEnvBrowser } from \"./misc\";\r\n\r\n/**\r\n * Simple wrapper around fetch API tailored for CEF/NUI use.\r\n */\r\nexport async function fetchNui<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const options = {\r\n method: \"post\",\r\n headers: {\r\n \"Content-Type\": \"application/json; charset=UTF-8\",\r\n },\r\n body: JSON.stringify(data),\r\n };\r\n\r\n if (isEnvBrowser() && mockData) return mockData;\r\n if (isEnvBrowser() && mockData === undefined) {\r\n console.warn(\r\n `[fetchNui] Called fetchNui for event \"${eventName}\" in browser environment without mockData. Returning empty object.`,\r\n );\r\n return {} as T;\r\n }\r\n\r\n const resourceName = (window as any).GetParentResourceName\r\n ? (window as any).GetParentResourceName()\r\n : \"nui-frame-app\";\r\n\r\n const resp = await fetch(`https://${resourceName}/${eventName}`, options);\r\n return await resp.json();\r\n}\r\n\r\n// -----------------------------\r\n// Initial fetch registration\r\n// -----------------------------\r\nexport type InitialFetch<T> = () => Promise<T>;\r\nexport const initialFetches: Record<string, InitialFetch<unknown>> = {};\r\n\r\n/**\r\n * Registers an initial fetch that automatically uses fetchNui.\r\n * Works like:\r\n * ```ts\r\n * registerInitialFetch<{ name: string }>(\"MY_EVENT_NAME\", undefined, { name: \"Mocky\" });\r\n * ```\r\n * and returns a Promise resolving to the same type as fetchNui.\r\n */\r\nexport async function registerInitialFetch<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const fetcher = () => fetchNui<T>(eventName, data, mockData);\r\n initialFetches[eventName] = fetcher;\r\n return fetcher(); // run immediately if needed\r\n}\r\n\r\n/**\r\n * Runs all registered initial fetches in parallel.\r\n */\r\nexport async function runFetches() {\r\n return Promise.all(\r\n Object.entries(initialFetches).map(async ([eventName, fetcher]) => {\r\n const data = await fetcher();\r\n return { eventName, data };\r\n }),\r\n );\r\n}\r\n\r\n/**\r\n * React hook to automatically run all registered fetches on mount.\r\n */\r\nexport const useAutoFetcher = () => {\r\n useEffect(() => {\r\n if (isEnvBrowser()) return;\r\n const run = async () => {\r\n const results = await runFetches();\r\n };\r\n run();\r\n }, []);\r\n};\r\n","import { isEnvBrowser } from \"./misc\";\r\n\r\nexport interface InternalEvent<T = unknown> {\r\n action: string;\r\n data?: T;\r\n}\r\n\r\n/**\r\n * Emulates dispatching an event using SendNuiMessage in the lua scripts.\r\n * This is used when developing in browser\r\n *\r\n * @param events - The event you want to cover\r\n * @param timer - How long until it should trigger (ms)\r\n */\r\nexport const internalEvent = <P>(events: InternalEvent<P>[], timer = 1000): void => {\r\n if (isEnvBrowser()) {\r\n for (const event of events) {\r\n setTimeout(() => {\r\n window.dispatchEvent(\r\n new MessageEvent(\"message\", {\r\n data: {\r\n action: event.action,\r\n data: event.data,\r\n },\r\n }),\r\n );\r\n }, timer);\r\n }\r\n }\r\n};\r\n","import { create } from \"zustand\";\r\nimport { registerInitialFetch } from \"../utils/fetchNui\";\r\n\r\n\r\ntype localeType = (key: string, ...args: string[]) => string;\r\n\r\ntype LocalesProps = {\r\n [key: string]: string;\r\n}\r\n\r\ntype LocaleStoreProps = {\r\n locale: localeType;\r\n locales: LocalesProps;\r\n};\r\n\r\n\r\nexport const localeStore = create<LocaleStoreProps>((set, get) => {\r\n return {\r\n locales: {\r\n \"OccupantsDesc\": \"Here you can view and manage the occupants of your traphouse. These occupants can be used mainly for selling drugs to the NPCs surrounding your traphouse. However they have other uses to so be careful who you add as an occupant.\", \r\n },\r\n locale: (key: string, ...args: (string|number)[]): string => {\r\n const exists = get().locales[key];\r\n if (!exists){\r\n // add to a jsonfile called missing_locales.json within src of project \r\n \r\n }\r\n let translation = exists || key;\r\n if (args.length) {\r\n // convert the arg to a string and replace the %s in the translation\r\n \r\n\r\n translation = translation.replace(/%s/g, () => String(args.shift() || ''));\r\n }\r\n return translation;\r\n },\r\n };\r\n});\r\n\r\n// export locale as a standalone function \r\nexport const locale = localeStore.getState().locale;\r\n\r\nregisterInitialFetch<LocalesProps>('GET_LOCALES', undefined).then((data) => {\r\n localeStore.setState({ locales: data });\r\n});\r\n","// ------------------ Game <-> Map Conversion ------------------\r\nexport const mapCenter: [number, number] = [-119.43, 58.84]\r\nexport const latPr100 = 1.421\r\n\r\n/** Convert game world coordinates -> Leaflet map coordinates */\r\nexport function gameToMap(x: number, y: number): [number, number] {\r\n return [\r\n mapCenter[0] + (latPr100 / 100) * y, // lng\r\n mapCenter[1] + (latPr100 / 100) * x, // lat\r\n ]\r\n}\r\n\r\n/** Convert Leaflet map coordinates -> game world coordinates */\r\nexport function mapToGame(lat: number, lng: number): [number, number] {\r\n return [\r\n ((lng - mapCenter[1]) * 100) / latPr100,\r\n ((lat - mapCenter[0]) * 100) / latPr100,\r\n ]\r\n}\r\n","import { create } from \"zustand\";\r\n\r\n\r\nexport const useProfanityStore = create<string[]>(() => ([\r\n 'ars3',\r\n 'a55',\r\n 'a55hole',\r\n 'ahole',\r\n 'anus',\r\n 'ash0le',\r\n 'ash0les',\r\n 'asholes',\r\n \"4r5e\",\r\n \"5h1t\",\r\n \"5hit\",\r\n \"a55\",\r\n \"anal\",\r\n \"anus\",\r\n \"ar5e\",\r\n \"arrse\",\r\n \"arse\",\r\n \"ass\",\r\n \"ass-fucker\",\r\n \"asses\",\r\n \"assfucker\",\r\n \"assfukka\",\r\n \"asshole\",\r\n \"assholes\",\r\n \"asswhole\",\r\n \"a_s_s\",\r\n \"b!tch\",\r\n \"b00bs\",\r\n \"b17ch\",\r\n \"b1tch\",\r\n \"ballsack\",\r\n \"beastial\",\r\n \"beastiality\",\r\n \"bestial\",\r\n \"bestiality\",\r\n \"bi+ch\",\r\n \"biatch\",\r\n \"bitch\",\r\n \"bitcher\",\r\n \"bitchers\",\r\n \"bitches\",\r\n \"bitchin\",\r\n \"bitching\",\r\n \"blow job\",\r\n \"blowjob\",\r\n \"blowjobs\",\r\n \"boiolas\",\r\n \"bollock\",\r\n \"bollok\",\r\n \"boner\",\r\n \"boob\",\r\n \"boobs\",\r\n \"booobs\",\r\n \"boooobs\",\r\n \"booooobs\",\r\n \"booooooobs\",\r\n \"breasts\",\r\n \"buceta\",\r\n \"bunny fucker\",\r\n \"butthole\",\r\n \"buttmuch\",\r\n \"buttplug\",\r\n \"c0ck\",\r\n \"c0cksucker\",\r\n \"carpet muncher\",\r\n \"chink\",\r\n \"cipa\",\r\n \"cl1t\",\r\n \"clit\",\r\n \"clitoris\",\r\n \"clits\",\r\n \"cnut\",\r\n \"cock\",\r\n \"cock-sucker\",\r\n \"cockface\",\r\n \"cockhead\",\r\n \"cockmunch\",\r\n \"cockmuncher\",\r\n \"cocks\",\r\n \"cocksuck\",\r\n \"cocksucked\",\r\n \"cocksucker\",\r\n \"cocksucking\",\r\n \"cocksucks\",\r\n \"cocksuka\",\r\n \"cocksukka\",\r\n \"cokmuncher\",\r\n \"coksucka\",\r\n \"coon\",\r\n \"cum\",\r\n \"cummer\",\r\n \"cumming\",\r\n \"cums\",\r\n \"cumshot\",\r\n \"cunilingus\",\r\n \"cunillingus\",\r\n \"cunnilingus\",\r\n \"cunt\",\r\n \"cuntlick\",\r\n \"cuntlicker\",\r\n \"cuntlicking\",\r\n \"cunts\",\r\n \"cyalis\",\r\n \"cyberfuc\",\r\n \"cyberfuck\",\r\n \"cyberfucked\",\r\n \"cyberfucker\",\r\n \"cyberfuckers\",\r\n \"cyberfucking\",\r\n \"d1ck\",\r\n \"dlck\",\r\n \"dog-fucker\",\r\n \"doggin\",\r\n \"dogging\",\r\n \"donkeyribber\",\r\n \"dyke\",\r\n \"ejaculate\",\r\n \"ejaculated\",\r\n \"ejaculates\",\r\n \"ejaculating\",\r\n \"ejaculatings\",\r\n \"ejaculation\",\r\n \"ejakulate\",\r\n \"f u c k\",\r\n \"f u c k e r\",\r\n \"f4nny\",\r\n \"fag\",\r\n \"fagging\",\r\n \"faggitt\",\r\n \"faggot\",\r\n \"faggs\",\r\n \"fagot\",\r\n \"fagots\",\r\n \"fags\",\r\n \"fannyflaps\",\r\n \"fannyfucker\",\r\n \"fatass\",\r\n \"fcuk\",\r\n \"fcuker\",\r\n \"fcuking\",\r\n \"feck\",\r\n \"fecker\",\r\n \"felching\",\r\n \"fellate\",\r\n \"fellatio\",\r\n \"fingerfuck\",\r\n \"fingerfucked\",\r\n \"fingerfucker\",\r\n \"fingerfuckers\",\r\n \"fingerfucking\",\r\n \"fingerfucks\",\r\n \"fistfuck\",\r\n \"fistfucked\",\r\n \"fistfucker\",\r\n \"fistfuckers\",\r\n \"fistfucking\",\r\n \"fistfuckings\",\r\n \"fistfucks\",\r\n \"fuck\",\r\n \"fucka\",\r\n \"fucked\",\r\n \"fucker\",\r\n \"fuckers\",\r\n \"fuckhead\",\r\n \"fuckheads\",\r\n \"fuckin\",\r\n \"fucking\",\r\n \"fuckings\",\r\n \"fuckingshitmotherfucker\",\r\n \"fuckme\",\r\n \"fucks\",\r\n \"fuckwhit\",\r\n \"fuckwit\",\r\n \"fudge packer\",\r\n \"fudgepacker\",\r\n \"fuk\",\r\n \"fuker\",\r\n \"fukker\",\r\n \"fukkin\",\r\n \"fuks\",\r\n \"fukwhit\",\r\n \"fukwit\",\r\n \"fux\",\r\n \"fux0r\",\r\n \"f_u_c_k\",\r\n \"gangbang\",\r\n \"gangbanged\",\r\n \"gangbangs\",\r\n \"gaysex\",\r\n \"God\",\r\n \"god-dam\",\r\n \"god-damned\",\r\n \"goddamn\",\r\n \"goddamned\",\r\n \"homo\",\r\n \"jack-off\",\r\n \"jerk-off\",\r\n \"l3i+ch\",\r\n \"l3itch\",\r\n \"labia\",\r\n \"lusting\",\r\n \"m0f0\",\r\n \"m0fo\",\r\n \"m45terbate\",\r\n \"ma5terb8\",\r\n \"ma5terbate\",\r\n \"masochist\",\r\n \"master-bate\",\r\n \"masterb8\",\r\n \"masterbat*\",\r\n \"masterbat3\",\r\n \"masterbate\",\r\n \"masterbation\",\r\n \"masterbations\",\r\n \"masturbate\",\r\n \"mo-fo\",\r\n \"mof0\",\r\n \"mothafuck\",\r\n \"mothafucka\",\r\n \"mothafuckas\",\r\n \"mothafuckaz\",\r\n \"mothafucked\",\r\n \"mothafucker\",\r\n \"mothafuckers\",\r\n \"mothafuckin\",\r\n \"mothafucking\",\r\n \"mothafuckings\",\r\n \"mothafucks\",\r\n \"mother fucker\",\r\n \"motherfuck\",\r\n \"motherfucked\",\r\n \"motherfucker\",\r\n \"motherfuckers\",\r\n \"motherfuckin\",\r\n \"motherfucking\",\r\n \"motherfuckings\",\r\n \"motherfuckka\",\r\n \"motherfucks\",\r\n \"muthafecker\",\r\n \"muthafuckker\",\r\n \"mutherfucker\",\r\n \"n1gga\",\r\n \"n1gger\",\r\n \"nazi\",\r\n \"nigg3r\",\r\n \"nigg4h\",\r\n \"nigga\",\r\n \"niggah\",\r\n \"niggas\",\r\n \"niggaz\",\r\n \"nigger\",\r\n \"niggers\",\r\n \"nob jokey\",\r\n \"nobjocky\",\r\n \"nobjokey\",\r\n \"orgasim\",\r\n \"orgasims\",\r\n \"orgasm\",\r\n \"orgasms\",\r\n \"p0rn\",\r\n \"penis\",\r\n \"penisfucker\",\r\n \"phonesex\",\r\n \"phuck\",\r\n \"phuked\",\r\n \"phuking\",\r\n \"phukked\",\r\n \"phukking\",\r\n \"phuks\",\r\n \"phuq\",\r\n \"pigfucker\",\r\n \"pimpis\",\r\n \"piss\",\r\n \"pissed\",\r\n \"pisser\",\r\n \"pissers\",\r\n \"pisses\",\r\n \"pissflaps\",\r\n \"pissin\",\r\n \"pissing\",\r\n \"pissoff\",\r\n \"poop\",\r\n \"porn\",\r\n \"porno\",\r\n \"pornography\",\r\n \"pornos\",\r\n \"prick\",\r\n \"pricks\",\r\n \"pron\",\r\n \"pube\",\r\n \"pusse\",\r\n \"pussi\",\r\n \"pussies\",\r\n \"pussy\",\r\n \"pussys\",\r\n \"rectum\",\r\n \"retard\",\r\n \"rimjaw\",\r\n \"rimming\",\r\n \"s hit\",\r\n \"s.o.b.\",\r\n \"scroat\",\r\n \"scrote\",\r\n \"scrotum\",\r\n \"semen\",\r\n \"sex\",\r\n \"sh!+\",\r\n \"sh!t\",\r\n \"sh1t\",\r\n \"shemale\",\r\n \"shit\",\r\n \"shitdick\",\r\n \"shite\",\r\n \"shited\",\r\n \"shitey\",\r\n \"shitfuck\",\r\n \"shitfull\",\r\n \"shithead\",\r\n \"shiting\",\r\n \"shitings\",\r\n \"shits\",\r\n \"shitted\",\r\n \"shitter\",\r\n \"shitters\",\r\n \"shitting\",\r\n \"shittings\",\r\n \"shitty\",\r\n \"skank\",\r\n \"slut\",\r\n \"sluts\",\r\n \"smegma\",\r\n \"smut\",\r\n \"son-of-a-bitch\",\r\n \"spac\",\r\n \"s_h_i_t\",\r\n \"t1tt1e5\",\r\n \"t1tties\",\r\n \"teets\",\r\n \"teez\",\r\n \"testical\",\r\n \"testicle\",\r\n \"titfuck\",\r\n \"tits\",\r\n \"titt\",\r\n \"tittie5\",\r\n \"tittiefucker\",\r\n \"titties\",\r\n \"tittyfuck\",\r\n \"tittywank\",\r\n \"titwank\",\r\n \"tosser\",\r\n \"tw4t\",\r\n \"twat\",\r\n \"twathead\",\r\n \"twatty\",\r\n \"twunt\",\r\n \"twunter\",\r\n \"v14gra\",\r\n \"v1gra\",\r\n \"vagina\",\r\n \"viagra\",\r\n \"vulva\",\r\n \"w00se\",\r\n \"whoar\",\r\n \"whore\",\r\n \"xrated\",\r\n]));\r\n\r\nexport const isProfanity = (word: string) => {\r\n const all = useProfanityStore.getState();\r\n \r\n // Convert to array if needed\r\n const profanityArray = Array.isArray(all) \r\n ? all \r\n : typeof all === 'object' && all !== null\r\n ? Object.values(all)\r\n : [];\r\n return profanityArray.includes(word);\r\n};\r\n\r\n","import { create } from 'zustand';\r\nimport { useMemo } from 'react';\r\n\r\nexport type SkillSettings = {\r\n baseLevel: number;\r\n maxLevel: number;\r\n baseXP: number;\r\n modifier: number;\r\n};\r\n\r\ntype SkillStore = {\r\n settings: SkillSettings;\r\n levelMap: Record<string, number>;\r\n setSettings: (updater: SkillSettings | ((prev: SkillSettings) => SkillSettings)) => void;\r\n};\r\n\r\ntype SkillHookResult = {\r\n prevLevelXP: number;\r\n currentLevel: number;\r\n nextLevel: number;\r\n currentLevelXP: number;\r\n nextLevelXP: number;\r\n progressToLevel: number;\r\n xpToNextLevel: number;\r\n};\r\n\r\nfunction calculateXPForLevel(level: number, settings: SkillSettings): number {\r\n if (level < settings.baseLevel) return 0;\r\n if (level === 1) return 0;\r\n if (level === 2) return settings.baseXP;\r\n\r\n let totalXP = settings.baseXP;\r\n\r\n for (let i = 2; i <= level - 1; i++) {\r\n const baseRuneScapeXP = Math.floor((i + 300 * 2 ** (i / 7)) / 4);\r\n totalXP += baseRuneScapeXP * settings.modifier;\r\n }\r\n\r\n return Math.floor(totalXP);\r\n}\r\n\r\nfunction generateLevelMap(settings: SkillSettings): Record<string, number> {\r\n const levelMap: Record<string, number> = {};\r\n for (let level = settings.baseLevel; level <= settings.maxLevel; level++) {\r\n levelMap[level.toString()] = calculateXPForLevel(level, settings);\r\n }\r\n return levelMap;\r\n}\r\n\r\nfunction getLevelFromXP(xp: number, levelMap: Record<string, number>, settings: SkillSettings): number {\r\n for (let level = settings.baseLevel; level <= settings.maxLevel; level++) {\r\n const xpForLevel = levelMap[level.toString()];\r\n if (xpForLevel > xp) return level - 1;\r\n }\r\n return settings.maxLevel;\r\n}\r\n\r\nexport function createSkill(defaultSettings: SkillSettings) {\r\n const useStore = create<SkillStore>((set) => ({\r\n settings: defaultSettings,\r\n levelMap: generateLevelMap(defaultSettings),\r\n setSettings: (updater) =>\r\n set((state) => {\r\n const newSettings = typeof updater === 'function' ? updater(state.settings) : updater;\r\n return {\r\n settings: newSettings,\r\n levelMap: generateLevelMap(newSettings),\r\n };\r\n }),\r\n }));\r\n\r\n const useSkill = (xp: number): SkillHookResult => {\r\n const { settings, levelMap } = useStore();\r\n\r\n return useMemo(() => {\r\n const currentLevel = getLevelFromXP(xp, levelMap, settings);\r\n const nextLevel = Math.min(currentLevel + 1, settings.maxLevel);\r\n \r\n const currentLevelXP = levelMap[currentLevel.toString()] || 0;\r\n const nextLevelXP = levelMap[nextLevel.toString()] || 0;\r\n\r\n const xpInCurrentLevel = xp - currentLevelXP;\r\n const xpRequiredForLevel = nextLevelXP - currentLevelXP;\r\n const progressToLevel = xpRequiredForLevel > 0 \r\n ? (xpInCurrentLevel / xpRequiredForLevel) * 100 \r\n : 100;\r\n\r\n const xpToNextLevel = Math.max(0, nextLevelXP - xp);\r\n const prevLevelXP = calculateXPForLevel(currentLevel - 1, settings);\r\n return {\r\n currentLevel,\r\n nextLevel,\r\n currentLevelXP,\r\n prevLevelXP,\r\n nextLevelXP,\r\n progressToLevel: Math.min(100, Math.max(0, progressToLevel)),\r\n xpToNextLevel,\r\n };\r\n }, [xp, levelMap, settings]);\r\n };\r\n\r\n // Return settings object with access to store\r\n const skill = {\r\n get settings() {\r\n return useStore.getState().settings;\r\n },\r\n setSettings: (updater: SkillSettings | ((prev: SkillSettings) => SkillSettings)) => {\r\n useStore.getState().setSettings(updater);\r\n },\r\n useSettings: () => useStore((state) => state.settings),\r\n };\r\n\r\n return {\r\n skill,\r\n useSkill,\r\n };\r\n}\r\n\r\n// Example usage:\r\n// export const { skill: drugSkill, useSkill: useDrugSkill } = createSkill({\r\n// baseLevel: 1,\r\n// maxLevel: 99,\r\n// baseXP: 83,\r\n// modifier: 1,\r\n// });","import axios from \"axios\";\r\nimport { fetchNui } from \"./fetchNui\";\r\n\r\nconst dummyURL = 'https://fmapi.net/api/v2/presigned-url/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJON0UxM0tzejFRM0NuSzRHWFBPbmUiLCJ0ZWFtSWQiOiJlMDQ1YnpwZzg5TGpoaUFTaURIdVoiLCJmaWxlVHlwZSI6ImltYWdlIiwidG9rZW5JZCI6ImpwczJ4Z0M1eFZqcnRoeWZTZnFsYSIsInNldHRpbmdzIjp7IlRlYW1JRCI6ImUwNDVienBnODlMamhpQVNpREh1WiIsIkltYWdlTm90aWZpY2F0aW9uVHlwZSI6IiIsIkRpc2NvcmRXZWJob29rIjoiIiwiRGlzY29yZEltYWdlQ2hhbm5lbCI6IiIsIlZpZGVvTm90aWZpY2F0aW9uVHlwZSI6IiIsIkRpc2NvcmRWaWRlb1dlYmhvb2siOiIiLCJEaXNjb3JkVmlkZW9DaGFubmVsIjoiIiwiQXVkaW9Ob3RpZmljYXRpb25UeXBlIjoiIiwiRGlzY29yZEF1ZGlvV2ViaG9vayI6IiIsIkRpc2NvcmRBdWRpb0NoYW5uZWwiOiIiLCJEaXNjb3JkQm90VG9rZW4iOiIiLCJSZXRlbnRpb25FbmFibGVkIjpmYWxzZSwiUmV0ZW50aW9uRGF5cyI6NywiVmlkZW9SZXRlbnRpb25FbmFibGVkIjpmYWxzZSwiVmlkZW9SZXRlbnRpb25EYXlzIjo3LCJBdWRpb1JldGVudGlvbkVuYWJsZWQiOmZhbHNlLCJBdWRpb1JldGVudGlvbkRheXMiOjcsIkxvZ0FsZXJ0RW5hYmxlZCI6ZmFsc2UsIkxvZ0FsZXJ0TGV2ZWxzIjpbXSwiTG9nQWxlcnREaXNjb3JkV2ViaG9vayI6IiIsIk92ZXJyaWRlSW1hZ2VRdWFsaXR5IjpmYWxzZSwiSW1hZ2VRdWFsaXR5Ijo1MH0sImV4cCI6MTc2MTg1MTEzNH0.fpPeQ0GCm5GNTddjttUQ78VMqRUAufXoOvv5C7Vh3WA';\r\n\r\nexport async function updatePresignedURL(): Promise<string> {\r\n return await fetchNui<string>('GET_PRESIGNED_URL', undefined, dummyURL);\r\n}\r\n\r\nexport type UploadImageProps = {\r\n fileURL: string;\r\n name?: string;\r\n description?: string;\r\n};\r\n\r\nexport async function uploadImage(props: UploadImageProps): Promise<string> {\r\n // 1. Get presigned URL\r\n const uploadURL = await updatePresignedURL();\r\n\r\n // 2. Load file data from blob URL\r\n const response = await fetch(props.fileURL);\r\n const blob = await response.blob();\r\n\r\n // 👇 3. Wrap it as a File so it behaves properly\r\n const file = new File([blob], \"upload.png\", { type: blob.type });\r\n // 4. Build form data\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n formData.append(\r\n \"metadata\",\r\n JSON.stringify({\r\n name: props.name || file.name,\r\n description: props.description || \"Uploaded via DirkScripts\",\r\n })\r\n );\r\n\r\n // 5. Upload to the presigned URL\r\n const uploadRes = await axios.post(uploadURL, formData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n });\r\n\r\n // 6. Return final URL\r\n const finalUrl = uploadRes.data?.data?.url ?? uploadRes.data?.url;\r\n if (!finalUrl) throw new Error(\"Upload succeeded but no URL returned\");\r\n return finalUrl;\r\n}\r\n\r\n\r\nexport async function getImageShape(file: File | string): Promise<\"square\" | \"wide\"> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n\r\n img.onload = () => {\r\n if (img.width > img.height) resolve(\"wide\");\r\n else resolve(\"square\"); // tall or equal treated as square\r\n };\r\n\r\n img.onerror = () => reject(new Error(\"Failed to load image\"));\r\n\r\n img.src = typeof file === \"string\" ? file : URL.createObjectURL(file);\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 { 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 <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 // backgroundColor: colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][7 as number], (props.hoverable ? (props.hovered ? 0.3 : 0.2) : 0.2)),\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n \r\n padding: props.p || theme.spacing.xs,\r\n transition: 'all 0.2s ease-in-out',\r\n aspectRatio: '1/1', \r\n fontSize: props.fontSize ? props.fontSize: '2.5vh',\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}","import { fetchNui } from \"@/utils\";\r\nimport { 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\nimport { create } from \"zustand\";\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 } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\nimport { Variants } from \"framer-motion\";\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 bg={props.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 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 outline: props.error ? `1px solid rgba(255, 100, 100, 0.8)` : '0.2vh solid rgba(255,255,255,0.1)', \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 >\r\n {(props.title || props.description) && (\r\n <Flex\r\n direction={'column'}\r\n gap='xxs'\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 <Text\r\n size='xs'\r\n c='rgba(255, 255, 255, 0.8)'\r\n fw={400}\r\n >{props.description}</Text> \r\n )}\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 <Flex\r\n ml='auto'\r\n >\r\n {props.rightSection}\r\n </Flex>\r\n </Flex>\r\n {props.children} \r\n </MotionFlex>\r\n )\r\n}","import { create } from 'zustand';\r\n\r\n// Import sounds as URLs (TypeScript-safe)\r\nimport clickSoundUrl from './click_sound.mp3';\r\nimport hoverSoundUrl from './hover_sound.mp3';\r\n\r\n// Define a type for the store state and actions\r\ntype AudioPlayerStore = {\r\n play: (sound: string) => void;\r\n stop: (sound: string) => void;\r\n};\r\n\r\n// Create the store using Zustand\r\nexport const useAudio = create<AudioPlayerStore>(() => {\r\n const audioRefs: Record<string, HTMLAudioElement> = {};\r\n\r\n // Predefined sounds\r\n const sounds: Record<string, string> = {\r\n click: clickSoundUrl,\r\n hover: hoverSoundUrl,\r\n };\r\n\r\n // Initialize audio elements for each sound\r\n for (const [key, src] of Object.entries(sounds)) {\r\n audioRefs[key] = new Audio(src);\r\n }\r\n\r\n return {\r\n play: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.currentTime = 0;\r\n audio.volume = 0.1;\r\n audio.play();\r\n },\r\n stop: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.pause();\r\n audio.currentTime = 0;\r\n },\r\n };\r\n});\r\n","\r\nimport { useAudio } from \"@/hooks/useAudio/store\";\r\nimport { colorWithAlpha } from \"@/utils\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { alpha, Flex, FlexProps, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { MotionFlex, MotionIcon, MotionText } from \"./Motion\";\r\n\r\n\r\nexport type SegmentProps = {\r\n label: string;\r\n value: string;\r\n icon?: string; // Optional icon for the segment\r\n rightSection?: React.ReactNode;\r\n color?: string;\r\n}\r\n\r\nexport type SegmentedControlProps = {\r\n w?: string; // Width of the entire control\r\n multi?: boolean; // Optional prop to allow multiple selections\r\n value?: string | string[]; // Controlled value, if provided\r\n onChange?: (value: string | string[]) => void; // Callback for value change\r\n fz?: string; // Font size for the segments\r\n justify?: FlexProps['justify']; \r\n items: SegmentProps[];\r\n sounds?: boolean;\r\n roundEdges?: boolean;\r\n color?: string;\r\n} & FlexProps;\r\n\r\nexport function SegmentedControl(props: SegmentedControlProps) {\r\n const theme = useMantineTheme();\r\n const play = useAudio((state) => state.play);\r\n\r\n const handleChange = (newValue: string | string[]) => {\r\n if (props.sounds) play('click');\r\n if (props.onChange) {\r\n props.onChange(newValue);\r\n }\r\n };\r\n\r\n return (\r\n <Flex\r\n bg='rgba(33, 33, 33, 0.6)'\r\n w={props.w || 'fit-content'}\r\n style={{\r\n borderRadius: props.roundEdges !== false ? theme.radius.xs : 0,\r\n overflow: 'hidden',\r\n }}\r\n {...props}\r\n >\r\n {props.items.map((item, index) => (\r\n <motion.div\r\n key={index}\r\n initial={{ x: -100, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, delay: index * 0.1, ease: 'easeInOut' }}\r\n\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flex: 1,\r\n }}\r\n >\r\n <Segment\r\n key={item.value}\r\n label={item.label}\r\n value={item.value}\r\n icon={item.icon}\r\n rightSection={item.rightSection}\r\n fz={props.fz}\r\n color={props.color}\r\n selected={!props.multi ? props.value === item.value : Array.isArray(props.value) && props.value.includes(item.value)}\r\n onClick={() => {\r\n\r\n if (props.multi) {\r\n const newValue = Array.isArray(props.value)\r\n ? props.value.includes(item.value)\r\n ? props.value.filter((v) => v !== item.value)\r\n : [...props.value, item.value]\r\n : [item.value];\r\n\r\n handleChange(newValue);\r\n } else {\r\n handleChange(item.value);\r\n }\r\n }}\r\n />\r\n </motion.div>\r\n ))}\r\n </Flex>\r\n )\r\n}\r\n\r\nfunction Segment(props: SegmentProps & {\r\n selected: boolean;\r\n onClick: () => void;\r\n fz?: string;\r\n}) {\r\n const theme = useMantineTheme();\r\n\r\n return (\r\n <MotionFlex\r\n onClick={props.onClick}\r\n w='100%'\r\n direction=\"column\"\r\n align=\"center\"\r\n // p='xs'\r\n h='100%'\r\n bg={props.selected ? props.color ? alpha(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 width: `${100 / props.segments}%`, // Ensures equal width distribution\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, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { BorderedIcon } from \"./BorderedIcon\";\r\nimport { useSettings } from \"..\";\r\n\r\n\r\nexport type ButtonProps = {\r\n icon: string;\r\n onClick?: () => void;\r\n};\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 rightSection?: React.ReactNode;\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 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 || '0'}\r\n style={{\r\n userSelect: 'none',\r\n borderBottom: props.removeBorder ? 'none' : `0.2vh solid ${props.borderColor || colorWithAlpha(theme.colors[theme.primaryColor][9], 0.5)}`\r\n }}\r\n >\r\n <Flex\r\n align='center'\r\n justify={'center'}\r\n >\r\n\r\n <Flex\r\n align='center'\r\n gap='sm'\r\n pr='xs' \r\n >\r\n <BorderedIcon\r\n icon={props.icon as IconName}\r\n fontSize={theme.fontSizes.md}\r\n color={props.iconColor}\r\n />\r\n <Flex\r\n direction='column'\r\n gap='0.25vh'\r\n // w='30%'\r\n >\r\n <Text p='0' size='sm' style={{\r\n lineHeight: theme.fontSizes.md,\r\n fontFamily: game == 'fivem' ? 'Akrobat Bold' : 'Red Dead',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}>{props.title}</Text>\r\n <Text \r\n size='xs'\r\n c='grey'\r\n style={{ whiteSpace: 'normal', wordWrap: 'break-word' }}\r\n >{props.description}</Text>\r\n </Flex>\r\n </Flex>\r\n <Flex\r\n ml='auto'\r\n align='center'\r\n gap='xs'\r\n >\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 { 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:alpha(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={alpha(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 ${alpha(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 { createContext, useContext, useRef } from \"react\";\r\nimport { create, StoreApi, useStore } from \"zustand\";\r\nimport Modal from \"./Modal\";\r\n\r\ntype ModalProps = {\r\n children: React.ReactNode;\r\n title: string;\r\n icon: string;\r\n description?: string;\r\n height?: string;\r\n width?: string;\r\n clickOutside?: boolean;\r\n};\r\n\r\ntype ModalStore = {\r\n active: ModalProps | 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\nexport function ModalProvider({ children, defaultPage }: { children: React.ReactNode, defaultPage?: string }){\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 <Modal/>\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: ModalProps) => {\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","\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Flex, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { useClickOutside } from \"@mantine/hooks\";\r\nimport { AnimatePresence } from \"framer-motion\";\r\nimport { MotionFlex, MotionIcon } from \"./Motion\";\r\nimport { useModal, useModalActions } from \"./ModalStore\";\r\n\r\nexport default function Modal(){\r\n const active = useModal((state) => state.active);\r\n const {hideModal} = useModalActions();\r\n \r\n const ref = useClickOutside(() => {\r\n if (!active) return;\r\n if (active.clickOutside == false) return;\r\n if (active) {\r\n \r\n hideModal();\r\n }\r\n });\r\n\r\n const theme = useMantineTheme();\r\n \r\n return (\r\n \r\n <AnimatePresence>\r\n {active && (\r\n <MotionFlex\r\n h='100%'\r\n w='100%'\r\n bg='rgba(0, 0, 0, 0.3)'\r\n pos='absolute'\r\n style={{\r\n zIndex: 2000,\r\n filter: 'drop-shadow(0 0 2vh black)',\r\n\r\n }}\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n align='center'\r\n justify='center'\r\n >\r\n\r\n <MotionFlex\r\n pos='absolute'\r\n top='50%'\r\n left='50%'\r\n ref={ref}\r\n w={active.width || '40%'}\r\n style={{\r\n transform: 'translate(-50%, -50%)',\r\n borderRadius: theme.radius.xs,\r\n boxShadow: theme.shadows.xl,\r\n zIndex: 2100,\r\n }}\r\n bg={'rgba(48, 48, 48, 0.84)'}\r\n \r\n initial={{ scale: 0.8, opacity: 0, transform: 'translate(-50%, -50%)' }}\r\n animate={{ scale: 1, opacity: 1, transform: 'translate(-50%, -50%)' }}\r\n exit={{ scale: 0.8, opacity: 0, transform: 'translate(-50%, -50%)' }}\r\n p='sm'\r\n direction='column'\r\n // align='flex-start'\r\n // mah='80%'\r\n maw='70%'\r\n gap='xs'\r\n >\r\n\r\n <Flex\r\n direction={'column'}\r\n w='100%'\r\n >\r\n <Flex\r\n w='100%'\r\n align='center'\r\n gap='xs'\r\n >\r\n {active.icon && (\r\n <FontAwesomeIcon \r\n icon={active.icon as IconProp} \r\n style={{\r\n fontSize: theme.fontSizes.xs,\r\n }} \r\n />\r\n )}\r\n <Text\r\n size='sm'\r\n >\r\n {active.title}\r\n </Text>\r\n <MotionIcon\r\n icon='times'\r\n color='rgba(255, 255, 255, 0.7)'\r\n whileHover={{\r\n scale: 1.1,\r\n filter: 'brightness(1.2)',\r\n }}\r\n style={{\r\n marginLeft: 'auto',\r\n cursor: 'pointer',\r\n fontSize: theme.fontSizes.sm,\r\n }}\r\n onClick={() => {\r\n hideModal();\r\n }}\r\n />\r\n </Flex>\r\n {active.description && (\r\n <Text\r\n size=\"xs\"\r\n c='rgba(255, 255, 255, 0.7)'\r\n >\r\n {active.description}\r\n </Text>\r\n )}\r\n </Flex>\r\n {active.children}\r\n </MotionFlex>\r\n </MotionFlex>\r\n )}\r\n </AnimatePresence>\r\n )\r\n}\r\n\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 { MutableRefObject, useEffect, useRef } from \"react\";\r\nimport { noop } from \"../utils/misc\";\r\n\r\nexport interface NuiMessageData<T = unknown> {\r\n action: string;\r\n data: T;\r\n}\r\n\r\nexport type NuiHandlerSignature<T> = ( data: T) => void;\r\n\r\n/**\r\n * A hook that manage events listeners for receiving data from the client scripts\r\n * @param action The specific `action` that should be listened for.\r\n * @param handler The callback function that will handle data relayed by this hook\r\n *\r\n * @example\r\n * useNuiEvent<{visibility: true, wasVisible: 'something'}>('setVisible', (data) => {\r\n * // whatever logic you want\r\n * })\r\n *\r\n **/\r\n\r\nexport const useNuiEvent = <T = unknown>(\r\n action: string,\r\n handler: ( data: T) => void,\r\n) => {\r\n const savedHandler: MutableRefObject<NuiHandlerSignature<T>> = useRef(noop);\r\n\r\n // Make sure we handle for a reactive handler\r\n useEffect(() => {\r\n savedHandler.current = handler;\r\n }, [handler]);\r\n\r\n useEffect(() => {\r\n const eventListener = (event: MessageEvent<NuiMessageData<T>>) => {\r\n const { action: eventAction, data } = event.data;\r\n\r\n if (savedHandler.current) {\r\n if (eventAction === action) {\r\n savedHandler.current( data);\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener(\"message\", eventListener);\r\n // Remove Event Listener on component dirkup\r\n return () => window.removeEventListener(\"message\", eventListener);\r\n }, [action]);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport React, { createContext, useContext, useRef } from \"react\";\r\nimport { createStore, StoreApi, useStore } from \"zustand\";\r\n\r\n// ---- Utility functions ----\r\nfunction getNested(obj: any, path: string): any {\r\n return path.split(\".\").reduce((acc, key) => (acc ? acc[key] : undefined), obj);\r\n}\r\n\r\nfunction setNested(obj: any, path: string, value: any): any {\r\n const keys = path.split(\".\");\r\n const newObj = { ...obj };\r\n let current = newObj;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n current[key] = { ...(current[key] || {}) };\r\n current = current[key];\r\n }\r\n current[keys[keys.length - 1]] = value;\r\n return newObj;\r\n}\r\n\r\nfunction deleteNested(obj: any, path: string): any {\r\n const keys = path.split(\".\");\r\n const newObj = { ...obj };\r\n let current = newObj;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n if (!current[key]) return obj;\r\n current[key] = { ...current[key] };\r\n current = current[key];\r\n }\r\n delete current[keys[keys.length - 1]];\r\n return newObj;\r\n}\r\n\r\nfunction flattenRules(\r\n rules: any,\r\n prefix = \"\"\r\n): Record<string, (value: any, values: any) => string | null> {\r\n const result: Record<string, (value: any, values: any) => string | null> = {};\r\n for (const key in rules) {\r\n const fullPath = prefix ? `${prefix}.${key}` : key;\r\n const val = rules[key];\r\n if (typeof val === \"function\") result[fullPath] = val;\r\n else if (typeof val === \"object\")\r\n Object.assign(result, flattenRules(val, fullPath));\r\n }\r\n return result;\r\n}\r\n\r\n// ---- Types ----\r\nexport type ValidationRules<T> = {\r\n [K in keyof T]?: T[K] extends object\r\n ? ValidationRules<T[K]>\r\n : (value: T[K], values: Partial<T>) => string | null;\r\n};\r\n\r\nexport type FormState<T> = {\r\n values: Partial<T>;\r\n initialValues: Partial<T>;\r\n errors: Record<string, string>;\r\n\r\n setValue: (path: string, value: any) => void;\r\n setInitialValues: (newInitialValues: Partial<T>) => void;\r\n setError: (path: string, message: string) => void;\r\n clearError: (path: string) => void;\r\n validate: () => boolean;\r\n validateField: (path: string) => boolean;\r\n reset: () => void;\r\n\r\n back: () => void;\r\n forward: () => void;\r\n canBack: boolean;\r\n canForward: boolean;\r\n\r\n changedFields: string[];\r\n changedCount: number;\r\n resetChangeCount: () => void;\r\n\r\n /** New additions **/\r\n onSubmit?: (form: FormState<T>) => void;\r\n submit: () => void;\r\n};\r\n\r\n// ---- Core Store ----\r\nexport function createFormStore<T>(\r\n initialValues: Partial<T>,\r\n validationRules?: ValidationRules<T>,\r\n onSubmit?: (form: FormState<T>) => void\r\n) {\r\n const flatRules = validationRules ? flattenRules(validationRules) : {};\r\n const history: Partial<T>[] = [];\r\n const future: Partial<T>[] = [];\r\n const changed = new Set<string>();\r\n\r\n return createStore<FormState<T>>((set, get) => ({\r\n initialValues,\r\n values: initialValues,\r\n errors: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n onSubmit,\r\n submit: () => {\r\n const state = get();\r\n const isValid = state.validate();\r\n if (isValid && state.onSubmit) state.onSubmit(get());\r\n },\r\n\r\n resetChangeCount: () => {\r\n changed.clear();\r\n set(() => ({\r\n changedFields: [],\r\n changedCount: 0,\r\n }));\r\n },\r\n\r\n setInitialValues: (newInitialValues) =>\r\n set({ initialValues: newInitialValues }),\r\n\r\n setValue: (path, value) => {\r\n const currentValues = get().values;\r\n const newValues = setNested(currentValues, path, value);\r\n const oldValue = getNested(get().initialValues, path);\r\n\r\n history.push(currentValues);\r\n future.length = 0;\r\n\r\n if (value !== oldValue) changed.add(path);\r\n else changed.delete(path);\r\n\r\n set({\r\n values: newValues,\r\n canBack: history.length > 0,\r\n canForward: false,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n\r\n const rule = flatRules[path];\r\n if (rule) {\r\n const error = rule(value, newValues);\r\n if (error)\r\n set((state) => ({ errors: setNested(state.errors, path, error) }));\r\n else set((state) => ({ errors: deleteNested(state.errors, path) }));\r\n }\r\n },\r\n\r\n setError: (path, message) =>\r\n set((state) => ({ errors: setNested(state.errors, path, message) })),\r\n clearError: (path) =>\r\n set((state) => ({ errors: deleteNested(state.errors, path) })),\r\n\r\n validateField: (path) => {\r\n const state = get();\r\n const rule = flatRules[path];\r\n if (!rule) return true;\r\n\r\n const value = getNested(state.values, path);\r\n const error = rule(value, state.values);\r\n if (error) {\r\n set((state) => ({ errors: setNested(state.errors, path, error) }));\r\n return false;\r\n } else {\r\n set((state) => ({ errors: deleteNested(state.errors, path) }));\r\n return true;\r\n }\r\n },\r\n\r\n validate: () => {\r\n const state = get();\r\n let isValid = true;\r\n let newErrors: Record<string, string> = {};\r\n\r\n for (const path in flatRules) {\r\n const rule = flatRules[path];\r\n const value = getNested(state.values, path);\r\n const error = rule(value, state.values);\r\n if (error) {\r\n isValid = false;\r\n newErrors = setNested(newErrors, path, error);\r\n }\r\n }\r\n\r\n set({ errors: newErrors });\r\n return isValid;\r\n },\r\n\r\n reset: () => {\r\n history.length = 0;\r\n future.length = 0;\r\n changed.clear();\r\n set({\r\n values: initialValues,\r\n errors: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n });\r\n },\r\n\r\n back: () => {\r\n const state = get();\r\n if (history.length === 0) return;\r\n const prev = history.pop()!;\r\n future.push(state.values);\r\n\r\n changed.clear();\r\n const current = prev;\r\n const initial = get().initialValues;\r\n for (const key in current) {\r\n if (JSON.stringify(current[key]) !== JSON.stringify(initial[key]))\r\n changed.add(key);\r\n }\r\n\r\n set({\r\n values: prev,\r\n canBack: history.length > 0,\r\n canForward: true,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n },\r\n\r\n forward: () => {\r\n const state = get();\r\n if (future.length === 0) return;\r\n const next = future.pop()!;\r\n history.push(state.values);\r\n\r\n changed.clear();\r\n const current = next;\r\n const initial = get().initialValues;\r\n for (const key in current) {\r\n if (JSON.stringify(current[key]) !== JSON.stringify(initial[key]))\r\n changed.add(key);\r\n }\r\n\r\n set({\r\n values: next,\r\n canBack: true,\r\n canForward: future.length > 0,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n },\r\n }));\r\n}\r\n\r\n// ---- Context ----\r\nconst FormContext = createContext<StoreApi<FormState<any>> | null>(null);\r\n\r\nexport function FormProvider<T>({\r\n initialValues,\r\n validate,\r\n onSubmit,\r\n children,\r\n}: {\r\n initialValues: Partial<T>;\r\n validate?: ValidationRules<T>;\r\n onSubmit?: (form: FormState<T>) => void;\r\n children: React.ReactNode;\r\n}) {\r\n const storeRef = useRef(createFormStore<T>(initialValues, validate, onSubmit));\r\n return (\r\n <FormContext.Provider value={storeRef.current}>\r\n {children}\r\n </FormContext.Provider>\r\n );\r\n}\r\n\r\n// ---- Hook ----\r\nexport function useForm<T>() {\r\n const store = useContext(FormContext);\r\n if (!store) throw new Error(\"useForm must be used inside a <FormProvider>\");\r\n return useStore(store) as FormState<T>;\r\n}\r\n","import { createTheme, MantineTheme, NumberInput } from \"@mantine/core\";\r\n\r\nexport const label = {\r\n fontSize: 'var(--mantine-font-size-xs)',\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase', \r\n};\r\nexport const error = {\r\n fontSize: 'var(--mantine-font-size-xs)',\r\n fontFamily: 'Akrobat Regular',\r\n};\r\n\r\nconst theme = createTheme({\r\n primaryColor: \"dirk\",\r\n primaryShade: 9,\r\n defaultRadius: \"xs\",\r\n fontFamily: \"Akrobat Regular, sans-serif\",\r\n\r\n radius:{\r\n xxs: '0.2vh',\r\n xs: '0.4vh',\r\n sm: '0.75vh',\r\n md: '1vh',\r\n lg: '1.5vh',\r\n xl: '2vh',\r\n xxl: '3vh',\r\n },\r\n\r\n fontSizes: {\r\n xxs: '1.2vh',\r\n xs: '1.5vh',\r\n sm: '1.8vh',\r\n md: '2.2vh',\r\n lg: '2.8vh',\r\n xl: '3.3vh',\r\n xxl: '3.8vh',\r\n },\r\n\r\n lineHeights: {\r\n xxs: '1.4vh',\r\n xs: '1.8vh',\r\n sm: '2.2vh',\r\n md: '2.8vh',\r\n lg: '3.3vh',\r\n xl: '3.8vh',\r\n },\r\n\r\n spacing:{\r\n xxs: '0.5vh',\r\n xs: '0.75vh',\r\n sm: '1.5vh',\r\n md: '2vh',\r\n lg: '3vh',\r\n xl: '4vh',\r\n xxl: '5vh',\r\n },\r\n\r\n components:{\r\n Progress:{\r\n styles:{\r\n label: {\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase', \r\n \r\n },\r\n root:{\r\n backgroundColor: 'rgba(77, 77, 77, 0.4)',\r\n },\r\n \r\n }\r\n },\r\n Textarea: {\r\n styles:{\r\n label: label,\r\n error: error,\r\n },\r\n },\r\n\r\n Button:{\r\n styles:{\r\n root:{\r\n fontSize: 'var(--mantine-font-size-xs)',\r\n },\r\n },\r\n },\r\n\r\n Select:{\r\n styles:{\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n },\r\n }\r\n },\r\n\r\n Pill: {\r\n styles: (theme: MantineTheme) => ({\r\n root: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n backgroundColor: 'rgba(76, 76, 76, 0.3)',\r\n height: 'fit-content',\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.05em',\r\n fontFamily: 'Akrobat Bold',\r\n fontSize: theme.fontSizes.xs,\r\n borderRadius: theme.defaultRadius,\r\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\r\n }\r\n })\r\n },\r\n\r\n Input:{\r\n styles: {\r\n label: label,\r\n error: error,\r\n\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n backgroundColor: 'rgba(76, 76, 76, 0.3)', \r\n },\r\n },\r\n },\r\n ColorInput:{\r\n styles: {\r\n label: label,\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n },\r\n },\r\n },\r\n TextInput:{\r\n styles:{\r\n label: label,\r\n wrapper:{\r\n \r\n },\r\n section:{\r\n marginRight: '0.2vh',\r\n },\r\n\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n \r\n \r\n },\r\n }\r\n },\r\n NumberInput:{\r\n \r\n styles:{\r\n label: label,\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n },\r\n section:{\r\n pointerEvents: 'all',\r\n },\r\n }\r\n }\r\n },\r\n\r\n colors: {\r\n\r\n dirk:[\r\n \"#ffffff\",\r\n \"#f3fce9\",\r\n \"#dbf5bd\",\r\n \"#c3ee91\",\r\n \"#ace765\",\r\n \"#94e039\",\r\n \"#7ac61f\",\r\n \"#5f9a18\",\r\n \"#29420a\",\r\n \"#446e11\",\r\n ],\r\n },\r\n});\r\n\r\n\r\nexport default theme;","import '@mantine/core/styles.css';\r\nimport '@mantine/notifications/styles.css';\r\nimport './styles/notify.css';\r\nimport './styles/fonts.css';\r\nimport './styles/scrollBar.css';\r\nimport './styles/tornEdge.css';\r\n\r\n\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { far } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { BackgroundImage, MantineColorShade, MantineProvider, MantineThemeOverride } from '@mantine/core';\r\nimport { fetchNui, isEnvBrowser, registerInitialFetch, useAutoFetcher } from '@/utils';\r\nimport { create } from 'zustand';\r\nimport theme from '@/theme';\r\nimport { useEffect, useMemo } from 'react';\r\nlibrary.add(fas, far, fab);\r\n\r\nexport type DirkProviderProps = {\r\n fakeBackground?: boolean;\r\n children: React.ReactNode;\r\n themeOverride?: MantineThemeOverride;\r\n}\r\n\r\ntype SettingsProps = {\r\n game: 'rdr3' | 'fivem';\r\n primaryColor: string;\r\n primaryShade: number;\r\n itemImgPath: string;\r\n customTheme: Record<string, string[]>;\r\n}\r\n\r\nexport const useSettings = create<SettingsProps>((set) => ({\r\n game: 'fivem',\r\n primaryColor: 'dirk',\r\n primaryShade: 9,\r\n itemImgPath: 'https://assets.dirkcfx.com/items/',\r\n customTheme: {},\r\n}));\r\n\r\n\r\nregisterInitialFetch<Partial<SettingsProps>>(\"GET_SETTINGS\", undefined, {\r\n game: 'fivem',\r\n primaryColor: 'dirk',\r\n primaryShade: 9,\r\n itemImgPath: 'https://assets.dirkcfx.com/items/',\r\n customTheme: {},\r\n}).then((data) => {\r\n useSettings.setState({\r\n ...data,\r\n });\r\n});\r\n\r\nexport function DirkProvider(props: DirkProviderProps) {\r\n const primaryColor = useSettings((data) => data.primaryColor);\r\n const primaryShade = useSettings((data) => data.primaryShade);\r\n const customTheme = useSettings((data) => data.customTheme);\r\n const game = useSettings((data) => data.game);\r\n // Memoize the merged theme to avoid unnecessary recalculations\r\n const mergedTheme = useMemo<MantineThemeOverride>(() => ({\r\n ...theme,\r\n primaryColor: primaryColor,\r\n primaryShade: primaryShade as MantineColorShade,\r\n colors: {\r\n ...theme.colors,\r\n ...customTheme, // Custom theme colors will override/extend base colors\r\n ...props.themeOverride?.colors, // Props theme colors will override/extend previous colors\r\n },\r\n ...props.themeOverride, // Props theme will override/extend the entire theme\r\n }), [primaryColor, primaryShade, customTheme, props.themeOverride]);\r\n console.log(mergedTheme)\r\n useEffect(() => {\r\n document.fonts.ready.then(() => {\r\n document.body.style.fontFamily = \r\n game === 'rdr3' ? '\"Red Dead\", sans-serif' :\r\n game === 'fivem' ? '\"Akrobat Regular\", sans-serif' :\r\n 'sans-serif';\r\n });\r\n }, [game]);\r\n\r\n useEffect(() => {\r\n fetchNui('NUI_READY')\r\n }, []);\r\n\r\n useAutoFetcher();\r\n \r\n \r\n return (\r\n <MantineProvider theme={mergedTheme} defaultColorScheme='dark'>\r\n <Wrapper>\r\n {props.children}\r\n </Wrapper>\r\n </MantineProvider>\r\n );\r\n}\r\n\r\nfunction Wrapper({ children }: { children: React.ReactNode }) {\r\n const game = useSettings((data) => data.game);\r\n if (!isEnvBrowser()) return <>{children}</>;\r\n return (\r\n <BackgroundImage\r\n w=\"100vw\"\r\n h=\"100vh\"\r\n style={{ overflow: 'hidden', backgroundColor: 'transparent' }}\r\n src={game === 'fivem'\r\n ? 'https://i.ytimg.com/vi/TOxuNbXrO28/maxresdefault.jpg'\r\n : 'https://raw.githubusercontent.com/Jump-On-Studios/RedM-jo_libs/refs/heads/main/source-repositories/Menu/public/assets/images/background_dev.jpg'}\r\n >\r\n {children}\r\n </BackgroundImage>\r\n );\r\n}\r\n\r\n","import { useSettings } from \"@/providers\";\r\n\r\nexport function useTornEdges() {\r\n const game = useSettings((state) => state.game);\r\n return game === \"rdr3\" ? \"torn-edge-wrapper\" : \"\";\r\n}\r\n\r\n// Add this SVG to your layout/root component:\r\nexport function TornEdgeSVGFilter() {\r\n return (\r\n <svg\r\n style={{ position: \"absolute\", width: 0, height: 0, pointerEvents: \"none\" }}\r\n aria-hidden=\"true\"\r\n >\r\n <defs>\r\n <filter id=\"torn-edge-filter\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\r\n {/* Base fractal noise for tearing */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.018 0.022\"\r\n numOctaves=\"5\"\r\n seed=\"9\"\r\n result=\"noise1\"\r\n />\r\n {/* Second noise layer for micro detail */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.08 0.12\"\r\n numOctaves=\"2\"\r\n seed=\"3\"\r\n result=\"noise2\"\r\n />\r\n\r\n {/* Blend both noise layers */}\r\n <feBlend in=\"noise1\" in2=\"noise2\" mode=\"multiply\" result=\"combinedNoise\" />\r\n\r\n {/* Primary displacement */}\r\n <feDisplacementMap\r\n in=\"SourceGraphic\"\r\n in2=\"combinedNoise\"\r\n scale=\"52\"\r\n xChannelSelector=\"R\"\r\n yChannelSelector=\"G\"\r\n result=\"displaced\"\r\n />\r\n\r\n {/* Alpha fade toward edges */}\r\n <feGaussianBlur stdDeviation=\"0.8\" in=\"displaced\" result=\"blurred\" />\r\n <feComponentTransfer in=\"blurred\" result=\"alphaFade\">\r\n <feFuncA type=\"gamma\" amplitude=\"1\" exponent=\"1.3\" offset=\"-0.05\" />\r\n </feComponentTransfer>\r\n\r\n {/* Sharpen a bit after fade */}\r\n <feMorphology operator=\"erode\" radius=\"0.4\" in=\"alphaFade\" result=\"eroded\" />\r\n\r\n {/* Merge final */}\r\n <feMerge>\r\n <feMergeNode in=\"eroded\" />\r\n </feMerge>\r\n </filter>\r\n </defs>\r\n </svg>\r\n );\r\n}\r\n\r\n","\r\n\r\n// This is a function that you will call and it will return liek so \r\n// const {useScriptSettings, useScriptSettingHooks} = createScriptSettings<YourTypeHere>({\r\n// key1: 'your_unique_value1',\r\n// key2: {}\r\n// subKey1: 'your_unique_value2',\r\n// subKey2: 'your_unique_value3'\r\n// }\r\n// })\r\n\r\nimport { useNuiEvent } from \"@/hooks\";\r\nimport { fetchNui } from \"@/utils\";\r\nimport { create } from \"zustand\";\r\ntype NuiResponse = { success: boolean; message: string };\r\n\r\n// it will basically rturn a zustand store aswell as aset of hooks required to operate/update this store \r\nexport function createScriptSettings<T>(defaultValue: T) {\r\n const store = create<T>(() => defaultValue);\r\n\r\n const useScriptSettingHooks = () => {\r\n useNuiEvent<Partial<T>>(\"UPDATE_SCRIPT_SETTINGS\", (newSettings) => {\r\n store.setState((prev) => ({ ...prev, ...newSettings }));\r\n });\r\n };\r\n\r\n // below returns {success, message} from the nui event\r\n\r\n const updateScriptSettings = async (newSettings: Partial<T>): Promise<NuiResponse> => {\r\n store.setState((prev) => ({ ...prev, ...newSettings }));\r\n return await fetchNui<NuiResponse>(\"UPDATE_SCRIPT_SETTINGS\", newSettings);\r\n };\r\n\r\n return {store, updateScriptSettings, useScriptSettingHooks}\r\n} \r\n\r\n\r\n"]}
1
+ {"version":3,"sources":["../src/utils/colorWithAlpha.ts","../src/utils/misc.ts","../src/utils/fetchNui.ts","../src/utils/internalEvent.ts","../src/utils/locales.ts","../src/utils/map.ts","../src/utils/profanity.ts","../src/utils/createSkill.ts","../src/utils/images.ts","../src/components/BorderedIcon.tsx","../src/components/Motion.tsx","../src/components/Counter.tsx","../src/components/FloatingParticles.tsx","../src/components/InfoBox.tsx","../src/components/InputContainer.tsx","../src/hooks/useAudio/store.ts","../src/components/SegmentedControl.tsx","../src/components/Navigation.tsx","../src/components/SegmentedProgress.tsx","../src/components/Title.tsx","../src/components/LevelBanner.tsx","../src/components/LevelPanel.tsx","../src/components/ModalStore.tsx","../src/components/Modal.tsx","../src/components/PromptModal.tsx","../src/hooks/useNuiEvent.ts","../src/hooks/useForm.tsx","../src/theme.ts","../src/providers/DirkProvider.tsx","../src/hooks/useTornEdges.tsx","../src/hooks/useScriptSettings.ts"],"names":["alpha","create","useStore","theme","Image","FontAwesomeIcon","jsx","useEffect","motion","useMantineTheme","Flex","Text","jsxs","useRef","createContext","useContext","AnimatePresence","error","state","useMemo"],"mappings":"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","file":"index.js","sourcesContent":["\r\nconst colorNames = {\r\n AliceBlue: { r: 240, g: 248, b: 255 },\r\n AntiqueWhite: { r: 250, g: 235, b: 215 },\r\n Aqua: { r: 0, g: 255, b: 255 },\r\n Aquamarine: { r: 127, g: 255, b: 212 },\r\n Azure: { r: 240, g: 255, b: 255 },\r\n Beige: { r: 245, g: 245, b: 220 },\r\n Bisque: { r: 255, g: 228, b: 196 },\r\n Black: { r: 0, g: 0, b: 0 },\r\n BlanchedAlmond: { r: 255, g: 235, b: 205 },\r\n Blue: { r: 0, g: 0, b: 255 },\r\n BlueViolet: { r: 138, g: 43, b: 226 },\r\n Brown: { r: 165, g: 42, b: 42 },\r\n BurlyWood: { r: 222, g: 184, b: 135 },\r\n CadetBlue: { r: 95, g: 158, b: 160 },\r\n Chartreuse: { r: 127, g: 255, b: 0 },\r\n Chocolate: { r: 210, g: 105, b: 30 },\r\n Coral: { r: 255, g: 127, b: 80 },\r\n CornflowerBlue: { r: 100, g: 149, b: 237 },\r\n Cornsilk: { r: 255, g: 248, b: 220 },\r\n Crimson: { r: 220, g: 20, b: 60 },\r\n Cyan: { r: 0, g: 255, b: 255 },\r\n DarkBlue: { r: 0, g: 0, b: 139 },\r\n DarkCyan: { r: 0, g: 139, b: 139 },\r\n DarkGoldenRod: { r: 184, g: 134, b: 11 },\r\n DarkGray: { r: 169, g: 169, b: 169 },\r\n DarkGreen: { r: 0, g: 100, b: 0 },\r\n DarkKhaki: { r: 189, g: 183, b: 107 },\r\n DarkMagenta: { r: 139, g: 0, b: 139 },\r\n DarkOliveGreen: { r: 85, g: 107, b: 47 },\r\n DarkOrange: { r: 255, g: 140, b: 0 },\r\n DarkOrchid: { r: 153, g: 50, b: 204 },\r\n DarkRed: { r: 139, g: 0, b: 0 },\r\n DarkSalmon: { r: 233, g: 150, b: 122 },\r\n DarkSeaGreen: { r: 143, g: 188, b: 143 },\r\n DarkSlateBlue: { r: 72, g: 61, b: 139 },\r\n DarkSlateGray: { r: 47, g: 79, b: 79 },\r\n DarkTurquoise: { r: 0, g: 206, b: 209 },\r\n DarkViolet: { r: 148, g: 0, b: 211 },\r\n DeepPink: { r: 255, g: 20, b: 147 },\r\n DeepSkyBlue: { r: 0, g: 191, b: 255 },\r\n DimGray: { r: 105, g: 105, b: 105 },\r\n DodgerBlue: { r: 30, g: 144, b: 255 },\r\n FireBrick: { r: 178, g: 34, b: 34 },\r\n FloralWhite: { r: 255, g: 250, b: 240 },\r\n ForestGreen: { r: 34, g: 139, b: 34 },\r\n Fuchsia: { r: 255, g: 0, b: 255 },\r\n Gainsboro: { r: 220, g: 220, b: 220 },\r\n GhostWhite: { r: 248, g: 248, b: 255 },\r\n Gold: { r: 255, g: 215, b: 0 },\r\n GoldenRod: { r: 218, g: 165, b: 32 },\r\n Gray: { r: 128, g: 128, b: 128 },\r\n Green: { r: 0, g: 128, b: 0 },\r\n GreenYellow: { r: 173, g: 255, b: 47 },\r\n HoneyDew: { r: 240, g: 255, b: 240 },\r\n HotPink: { r: 255, g: 105, b: 180 },\r\n IndianRed: { r: 205, g: 92, b: 92 },\r\n Indigo: { r: 75, g: 0, b: 130 },\r\n Ivory: { r: 255, g: 255, b: 240 },\r\n Khaki: { r: 240, g: 230, b: 140 },\r\n Lavender: { r: 230, g: 230, b: 250 },\r\n LavenderBlush: { r: 255, g: 240, b: 245 },\r\n LawnGreen: { r: 124, g: 252, b: 0 },\r\n LemonChiffon: { r: 255, g: 250, b: 205 },\r\n LightBlue: { r: 173, g: 216, b: 230 },\r\n LightCoral: { r: 240, g: 128, b: 128 },\r\n LightCyan: { r: 224, g: 255, b: 255 },\r\n LightGoldenRodYellow: { r: 250, g: 250, b: 210 },\r\n LightGray: { r: 211, g: 211, b: 211 },\r\n LightGreen: { r: 144, g: 238, b: 144 },\r\n LightPink: { r: 255, g: 182, b: 193 },\r\n LightSalmon: { r: 255, g: 160, b: 122 },\r\n LightSeaGreen: { r: 32, g: 178, b: 170 },\r\n LightSkyBlue: { r: 135, g: 206, b: 250 },\r\n LightSlateGray: { r: 119, g: 136, b: 153 },\r\n LightSteelBlue: { r: 176, g: 196, b: 222 },\r\n LightYellow: { r: 255, g: 255, b: 224 },\r\n Lime: { r: 0, g: 255, b: 0 },\r\n LimeGreen: { r: 50, g: 205, b: 50 },\r\n Linen: { r: 250, g: 240, b: 230 },\r\n Magenta: { r: 255, g: 0, b: 255 },\r\n Maroon: { r: 128, g: 0, b: 0 }, // Maroon\r\n MediumAquaMarine: { r: 102, g: 205, b: 170 },\r\n MediumBlue: { r: 0, g: 0, b: 205 },\r\n MediumOrchid: { r: 186, g: 85, b: 211 },\r\n MediumPurple: { r: 147, g: 112, b: 219 },\r\n MediumSeaGreen: { r: 60, g: 179, b: 113 },\r\n MediumSlateBlue: { r: 123, g: 104, b: 238 },\r\n MediumSpringGreen: { r: 0, g: 250, b: 154 },\r\n MediumTurquoise: { r: 72, g: 209, b: 204 },\r\n MediumVioletRed: { r: 199, g: 21, b: 133 },\r\n MidnightBlue: { r: 25, g: 25, b: 112 },\r\n MintCream: { r: 245, g: 255, b: 250 },\r\n MistyRose: { r: 255, g: 228, b: 225 },\r\n Moccasin: { r: 255, g: 228, b: 181 },\r\n NavajoWhite: { r: 255, g: 222, b: 173 },\r\n Navy: { r: 0, g: 0, b: 128 },\r\n OldLace: { r: 253, g: 245, b: 230 },\r\n Olive: { r: 128, g: 128, b: 0 },\r\n OliveDrab: { r: 107, g: 142, b: 35 },\r\n Orange: { r: 255, g: 165, b: 0 },\r\n OrangeRed: { r: 255, g: 69, b: 0 },\r\n Orchid: { r: 218, g: 112, b: 214 },\r\n PaleGoldenRod: { r: 238, g: 232, b: 170 },\r\n PaleGreen: { r: 152, g: 251, b: 152 },\r\n PaleTurquoise: { r: 175, g: 238, b: 238 },\r\n PaleVioletRed: { r: 219, g: 112, b: 147 },\r\n PapayaWhip: { r: 255, g: 239, b: 213 },\r\n PeachPuff: { r: 255, g: 218, b: 185 },\r\n Peru: { r: 205, g: 133, b: 63 },\r\n Pink: { r: 255, g: 192, b: 203 },\r\n Plum: { r: 221, g: 160, b: 221 },\r\n PowderBlue: { r: 176, g: 224, b: 230 },\r\n Purple: { r: 128, g: 0, b: 128 },\r\n RebeccaPurple: { r: 102, g: 51, b: 153 },\r\n Red: { r: 255, g: 0, b: 0 },\r\n RosyBrown: { r: 188, g: 143, b: 143 },\r\n RoyalBlue: { r: 65, g: 105, b: 225 },\r\n SaddleBrown: { r: 139, g: 69, b: 19 },\r\n Salmon: { r: 250, g: 128, b: 114 },\r\n SandyBrown: { r: 244, g: 164, b: 96 },\r\n SeaGreen: { r: 46, g: 139, b: 87 },\r\n SeaShell: { r: 255, g: 245, b: 238 },\r\n Sienna: { r: 160, g: 82, b: 45 },\r\n Silver: { r: 192, g: 192, b: 192 },\r\n SkyBlue: { r: 135, g: 206, b: 235 },\r\n SlateBlue: { r: 106, g: 90, b: 205 },\r\n SlateGray: { r: 112, g: 128, b: 144 },\r\n Snow: { r: 255, g: 250, b: 250 },\r\n SpringGreen: { r: 0, g: 255, b: 127 },\r\n SteelBlue: { r: 70, g: 130, b: 180 },\r\n Tan: { r: 210, g: 180, b: 140 },\r\n Teal: { r: 0, g: 128, b: 128 },\r\n Thistle: { r: 216, g: 191, b: 216 },\r\n Tomato: { r: 255, g: 99, b: 71 },\r\n Turquoise: { r: 64, g: 224, b: 208 },\r\n Violet: { r: 238, g: 130, b: 238 },\r\n Wheat: { r: 245, g: 222, b: 179 },\r\n White: { r: 255, g: 255, b: 255 },\r\n WhiteSmoke: { r: 245, g: 245, b: 245 },\r\n Yellow: { r: 255, g: 255, b: 0 },\r\n YellowGreen: { r: 154, g: 205, b: 50 }\r\n};\r\n\r\n\r\n\r\n\r\nexport function colorWithAlpha(color: string, alpha: number): string {\r\n const lowerCasedColor = color.toLowerCase() as keyof typeof colorNames;\r\n \r\n if (colorNames[lowerCasedColor]) {\r\n const rgb = colorNames[lowerCasedColor];\r\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;\r\n }\r\n \r\n // If color is in hex format (#RRGGBB)\r\n if (/^#([A-Fa-f0-9]{6})$/.test(color)) {\r\n const hex = color.slice(1);\r\n const bigint = parseInt(hex, 16);\r\n const r = (bigint >> 16) & 255;\r\n const g = (bigint >> 8) & 255;\r\n const b = bigint & 255;\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n }\r\n \r\n // If color is in rgb format (rgb(r, g, b))\r\n if (/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/.test(color)) {\r\n const result = color.match(/^rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)$/);\r\n if (result) {\r\n return `rgba(${result[1]}, ${result[2]}, ${result[3]}, ${alpha})`;\r\n }\r\n }\r\n \r\n // Default to original color if format is not recognized\r\n return color;\r\n}","export const isEnvBrowser = (): boolean => !(window as any).invokeNative;\r\n\r\n// Basic no operation function\r\nexport const noop = () => {};\r\n\r\nexport const splitFAString = (faString:string) => {\r\n const [prefix, newIcon] = faString.split('-');\r\n if (!prefix || !newIcon) return {prefix: 'fas', newIcon: 'question'};\r\n return {prefix, newIcon};\r\n}\r\n\r\nexport const numberToRoman = (num:number) => {\r\n const romanNumerals = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'] \r\n return romanNumerals[num]\r\n}\r\n\r\nexport const copyToClipboard = (text:string) => {\r\n const el = document.createElement('textarea');\r\n el.value = text;\r\n document.body.appendChild(el);\r\n el.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n}\r\n\r\nexport const openLink = (url:string) => {\r\n if (isEnvBrowser()) {\r\n window.open(url, '_blank');\r\n } else {\r\n // @ts-expect-error -- invokeNative exists in NUI\r\n window.invokeNative('openLink', url);\r\n } \r\n}","import { useEffect } from \"react\";\r\nimport { isEnvBrowser } from \"./misc\";\r\n\r\n/**\r\n * Simple wrapper around fetch API tailored for CEF/NUI use.\r\n */\r\nexport async function fetchNui<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const options = {\r\n method: \"post\",\r\n headers: {\r\n \"Content-Type\": \"application/json; charset=UTF-8\",\r\n },\r\n body: JSON.stringify(data),\r\n };\r\n\r\n if (isEnvBrowser() && mockData) return mockData;\r\n if (isEnvBrowser() && mockData === undefined) {\r\n console.warn(\r\n `[fetchNui] Called fetchNui for event \"${eventName}\" in browser environment without mockData. Returning empty object.`,\r\n );\r\n return {} as T;\r\n }\r\n\r\n const resourceName = (window as any).GetParentResourceName\r\n ? (window as any).GetParentResourceName()\r\n : \"nui-frame-app\";\r\n\r\n const resp = await fetch(`https://${resourceName}/${eventName}`, options);\r\n return await resp.json();\r\n}\r\n\r\n// -----------------------------\r\n// Initial fetch registration\r\n// -----------------------------\r\nexport type InitialFetch<T> = () => Promise<T>;\r\nexport const initialFetches: Record<string, InitialFetch<unknown>> = {};\r\n\r\n/**\r\n * Registers an initial fetch that automatically uses fetchNui.\r\n * Works like:\r\n * ```ts\r\n * registerInitialFetch<{ name: string }>(\"MY_EVENT_NAME\", undefined, { name: \"Mocky\" });\r\n * ```\r\n * and returns a Promise resolving to the same type as fetchNui.\r\n */\r\nexport async function registerInitialFetch<T = unknown>(\r\n eventName: string,\r\n data?: unknown,\r\n mockData?: T,\r\n): Promise<T> {\r\n const fetcher = () => fetchNui<T>(eventName, data, mockData);\r\n initialFetches[eventName] = fetcher;\r\n return fetcher(); // run immediately if needed\r\n}\r\n\r\n/**\r\n * Runs all registered initial fetches in parallel.\r\n */\r\nexport async function runFetches() {\r\n return Promise.all(\r\n Object.entries(initialFetches).map(async ([eventName, fetcher]) => {\r\n const data = await fetcher();\r\n return { eventName, data };\r\n }),\r\n );\r\n}\r\n\r\n/**\r\n * React hook to automatically run all registered fetches on mount.\r\n */\r\nexport const useAutoFetcher = () => {\r\n useEffect(() => {\r\n if (isEnvBrowser()) return;\r\n const run = async () => {\r\n const results = await runFetches();\r\n };\r\n run();\r\n }, []);\r\n};\r\n","import { isEnvBrowser } from \"./misc\";\r\n\r\nexport interface InternalEvent<T = unknown> {\r\n action: string;\r\n data?: T;\r\n}\r\n\r\n/**\r\n * Emulates dispatching an event using SendNuiMessage in the lua scripts.\r\n * This is used when developing in browser\r\n *\r\n * @param events - The event you want to cover\r\n * @param timer - How long until it should trigger (ms)\r\n */\r\nexport const internalEvent = <P>(events: InternalEvent<P>[], timer = 1000): void => {\r\n if (isEnvBrowser()) {\r\n for (const event of events) {\r\n setTimeout(() => {\r\n window.dispatchEvent(\r\n new MessageEvent(\"message\", {\r\n data: {\r\n action: event.action,\r\n data: event.data,\r\n },\r\n }),\r\n );\r\n }, timer);\r\n }\r\n }\r\n};\r\n","import { create } from \"zustand\";\r\nimport { registerInitialFetch } from \"../utils/fetchNui\";\r\n\r\n\r\ntype localeType = (key: string, ...args: string[]) => string;\r\n\r\ntype LocalesProps = {\r\n [key: string]: string;\r\n}\r\n\r\ntype LocaleStoreProps = {\r\n locale: localeType;\r\n locales: LocalesProps;\r\n};\r\n\r\n\r\nexport const localeStore = create<LocaleStoreProps>((set, get) => {\r\n return {\r\n locales: {\r\n \"OccupantsDesc\": \"Here you can view and manage the occupants of your traphouse. These occupants can be used mainly for selling drugs to the NPCs surrounding your traphouse. However they have other uses to so be careful who you add as an occupant.\", \r\n },\r\n locale: (key: string, ...args: (string|number)[]): string => {\r\n const exists = get().locales[key];\r\n if (!exists){\r\n // add to a jsonfile called missing_locales.json within src of project \r\n \r\n }\r\n let translation = exists || key;\r\n if (args.length) {\r\n // convert the arg to a string and replace the %s in the translation\r\n \r\n\r\n translation = translation.replace(/%s/g, () => String(args.shift() || ''));\r\n }\r\n return translation;\r\n },\r\n };\r\n});\r\n\r\n// export locale as a standalone function \r\nexport const locale = localeStore.getState().locale;\r\n\r\nregisterInitialFetch<LocalesProps>('GET_LOCALES', undefined).then((data) => {\r\n localeStore.setState({ locales: data });\r\n});\r\n","// ------------------ Game <-> Map Conversion ------------------\r\nexport const mapCenter: [number, number] = [-119.43, 58.84]\r\nexport const latPr100 = 1.421\r\n\r\n/** Convert game world coordinates -> Leaflet map coordinates */\r\nexport function gameToMap(x: number, y: number): [number, number] {\r\n return [\r\n mapCenter[0] + (latPr100 / 100) * y, // lng\r\n mapCenter[1] + (latPr100 / 100) * x, // lat\r\n ]\r\n}\r\n\r\n/** Convert Leaflet map coordinates -> game world coordinates */\r\nexport function mapToGame(lat: number, lng: number): [number, number] {\r\n return [\r\n ((lng - mapCenter[1]) * 100) / latPr100,\r\n ((lat - mapCenter[0]) * 100) / latPr100,\r\n ]\r\n}\r\n","import { create } from \"zustand\";\r\n\r\n\r\nexport const useProfanityStore = create<string[]>(() => ([\r\n 'ars3',\r\n 'a55',\r\n 'a55hole',\r\n 'ahole',\r\n 'anus',\r\n 'ash0le',\r\n 'ash0les',\r\n 'asholes',\r\n \"4r5e\",\r\n \"5h1t\",\r\n \"5hit\",\r\n \"a55\",\r\n \"anal\",\r\n \"anus\",\r\n \"ar5e\",\r\n \"arrse\",\r\n \"arse\",\r\n \"ass\",\r\n \"ass-fucker\",\r\n \"asses\",\r\n \"assfucker\",\r\n \"assfukka\",\r\n \"asshole\",\r\n \"assholes\",\r\n \"asswhole\",\r\n \"a_s_s\",\r\n \"b!tch\",\r\n \"b00bs\",\r\n \"b17ch\",\r\n \"b1tch\",\r\n \"ballsack\",\r\n \"beastial\",\r\n \"beastiality\",\r\n \"bestial\",\r\n \"bestiality\",\r\n \"bi+ch\",\r\n \"biatch\",\r\n \"bitch\",\r\n \"bitcher\",\r\n \"bitchers\",\r\n \"bitches\",\r\n \"bitchin\",\r\n \"bitching\",\r\n \"blow job\",\r\n \"blowjob\",\r\n \"blowjobs\",\r\n \"boiolas\",\r\n \"bollock\",\r\n \"bollok\",\r\n \"boner\",\r\n \"boob\",\r\n \"boobs\",\r\n \"booobs\",\r\n \"boooobs\",\r\n \"booooobs\",\r\n \"booooooobs\",\r\n \"breasts\",\r\n \"buceta\",\r\n \"bunny fucker\",\r\n \"butthole\",\r\n \"buttmuch\",\r\n \"buttplug\",\r\n \"c0ck\",\r\n \"c0cksucker\",\r\n \"carpet muncher\",\r\n \"chink\",\r\n \"cipa\",\r\n \"cl1t\",\r\n \"clit\",\r\n \"clitoris\",\r\n \"clits\",\r\n \"cnut\",\r\n \"cock\",\r\n \"cock-sucker\",\r\n \"cockface\",\r\n \"cockhead\",\r\n \"cockmunch\",\r\n \"cockmuncher\",\r\n \"cocks\",\r\n \"cocksuck\",\r\n \"cocksucked\",\r\n \"cocksucker\",\r\n \"cocksucking\",\r\n \"cocksucks\",\r\n \"cocksuka\",\r\n \"cocksukka\",\r\n \"cokmuncher\",\r\n \"coksucka\",\r\n \"coon\",\r\n \"cum\",\r\n \"cummer\",\r\n \"cumming\",\r\n \"cums\",\r\n \"cumshot\",\r\n \"cunilingus\",\r\n \"cunillingus\",\r\n \"cunnilingus\",\r\n \"cunt\",\r\n \"cuntlick\",\r\n \"cuntlicker\",\r\n \"cuntlicking\",\r\n \"cunts\",\r\n \"cyalis\",\r\n \"cyberfuc\",\r\n \"cyberfuck\",\r\n \"cyberfucked\",\r\n \"cyberfucker\",\r\n \"cyberfuckers\",\r\n \"cyberfucking\",\r\n \"d1ck\",\r\n \"dlck\",\r\n \"dog-fucker\",\r\n \"doggin\",\r\n \"dogging\",\r\n \"donkeyribber\",\r\n \"dyke\",\r\n \"ejaculate\",\r\n \"ejaculated\",\r\n \"ejaculates\",\r\n \"ejaculating\",\r\n \"ejaculatings\",\r\n \"ejaculation\",\r\n \"ejakulate\",\r\n \"f u c k\",\r\n \"f u c k e r\",\r\n \"f4nny\",\r\n \"fag\",\r\n \"fagging\",\r\n \"faggitt\",\r\n \"faggot\",\r\n \"faggs\",\r\n \"fagot\",\r\n \"fagots\",\r\n \"fags\",\r\n \"fannyflaps\",\r\n \"fannyfucker\",\r\n \"fatass\",\r\n \"fcuk\",\r\n \"fcuker\",\r\n \"fcuking\",\r\n \"feck\",\r\n \"fecker\",\r\n \"felching\",\r\n \"fellate\",\r\n \"fellatio\",\r\n \"fingerfuck\",\r\n \"fingerfucked\",\r\n \"fingerfucker\",\r\n \"fingerfuckers\",\r\n \"fingerfucking\",\r\n \"fingerfucks\",\r\n \"fistfuck\",\r\n \"fistfucked\",\r\n \"fistfucker\",\r\n \"fistfuckers\",\r\n \"fistfucking\",\r\n \"fistfuckings\",\r\n \"fistfucks\",\r\n \"fuck\",\r\n \"fucka\",\r\n \"fucked\",\r\n \"fucker\",\r\n \"fuckers\",\r\n \"fuckhead\",\r\n \"fuckheads\",\r\n \"fuckin\",\r\n \"fucking\",\r\n \"fuckings\",\r\n \"fuckingshitmotherfucker\",\r\n \"fuckme\",\r\n \"fucks\",\r\n \"fuckwhit\",\r\n \"fuckwit\",\r\n \"fudge packer\",\r\n \"fudgepacker\",\r\n \"fuk\",\r\n \"fuker\",\r\n \"fukker\",\r\n \"fukkin\",\r\n \"fuks\",\r\n \"fukwhit\",\r\n \"fukwit\",\r\n \"fux\",\r\n \"fux0r\",\r\n \"f_u_c_k\",\r\n \"gangbang\",\r\n \"gangbanged\",\r\n \"gangbangs\",\r\n \"gaysex\",\r\n \"God\",\r\n \"god-dam\",\r\n \"god-damned\",\r\n \"goddamn\",\r\n \"goddamned\",\r\n \"homo\",\r\n \"jack-off\",\r\n \"jerk-off\",\r\n \"l3i+ch\",\r\n \"l3itch\",\r\n \"labia\",\r\n \"lusting\",\r\n \"m0f0\",\r\n \"m0fo\",\r\n \"m45terbate\",\r\n \"ma5terb8\",\r\n \"ma5terbate\",\r\n \"masochist\",\r\n \"master-bate\",\r\n \"masterb8\",\r\n \"masterbat*\",\r\n \"masterbat3\",\r\n \"masterbate\",\r\n \"masterbation\",\r\n \"masterbations\",\r\n \"masturbate\",\r\n \"mo-fo\",\r\n \"mof0\",\r\n \"mothafuck\",\r\n \"mothafucka\",\r\n \"mothafuckas\",\r\n \"mothafuckaz\",\r\n \"mothafucked\",\r\n \"mothafucker\",\r\n \"mothafuckers\",\r\n \"mothafuckin\",\r\n \"mothafucking\",\r\n \"mothafuckings\",\r\n \"mothafucks\",\r\n \"mother fucker\",\r\n \"motherfuck\",\r\n \"motherfucked\",\r\n \"motherfucker\",\r\n \"motherfuckers\",\r\n \"motherfuckin\",\r\n \"motherfucking\",\r\n \"motherfuckings\",\r\n \"motherfuckka\",\r\n \"motherfucks\",\r\n \"muthafecker\",\r\n \"muthafuckker\",\r\n \"mutherfucker\",\r\n \"n1gga\",\r\n \"n1gger\",\r\n \"nazi\",\r\n \"nigg3r\",\r\n \"nigg4h\",\r\n \"nigga\",\r\n \"niggah\",\r\n \"niggas\",\r\n \"niggaz\",\r\n \"nigger\",\r\n \"niggers\",\r\n \"nob jokey\",\r\n \"nobjocky\",\r\n \"nobjokey\",\r\n \"orgasim\",\r\n \"orgasims\",\r\n \"orgasm\",\r\n \"orgasms\",\r\n \"p0rn\",\r\n \"penis\",\r\n \"penisfucker\",\r\n \"phonesex\",\r\n \"phuck\",\r\n \"phuked\",\r\n \"phuking\",\r\n \"phukked\",\r\n \"phukking\",\r\n \"phuks\",\r\n \"phuq\",\r\n \"pigfucker\",\r\n \"pimpis\",\r\n \"piss\",\r\n \"pissed\",\r\n \"pisser\",\r\n \"pissers\",\r\n \"pisses\",\r\n \"pissflaps\",\r\n \"pissin\",\r\n \"pissing\",\r\n \"pissoff\",\r\n \"poop\",\r\n \"porn\",\r\n \"porno\",\r\n \"pornography\",\r\n \"pornos\",\r\n \"prick\",\r\n \"pricks\",\r\n \"pron\",\r\n \"pube\",\r\n \"pusse\",\r\n \"pussi\",\r\n \"pussies\",\r\n \"pussy\",\r\n \"pussys\",\r\n \"rectum\",\r\n \"retard\",\r\n \"rimjaw\",\r\n \"rimming\",\r\n \"s hit\",\r\n \"s.o.b.\",\r\n \"scroat\",\r\n \"scrote\",\r\n \"scrotum\",\r\n \"semen\",\r\n \"sex\",\r\n \"sh!+\",\r\n \"sh!t\",\r\n \"sh1t\",\r\n \"shemale\",\r\n \"shit\",\r\n \"shitdick\",\r\n \"shite\",\r\n \"shited\",\r\n \"shitey\",\r\n \"shitfuck\",\r\n \"shitfull\",\r\n \"shithead\",\r\n \"shiting\",\r\n \"shitings\",\r\n \"shits\",\r\n \"shitted\",\r\n \"shitter\",\r\n \"shitters\",\r\n \"shitting\",\r\n \"shittings\",\r\n \"shitty\",\r\n \"skank\",\r\n \"slut\",\r\n \"sluts\",\r\n \"smegma\",\r\n \"smut\",\r\n \"son-of-a-bitch\",\r\n \"spac\",\r\n \"s_h_i_t\",\r\n \"t1tt1e5\",\r\n \"t1tties\",\r\n \"teets\",\r\n \"teez\",\r\n \"testical\",\r\n \"testicle\",\r\n \"titfuck\",\r\n \"tits\",\r\n \"titt\",\r\n \"tittie5\",\r\n \"tittiefucker\",\r\n \"titties\",\r\n \"tittyfuck\",\r\n \"tittywank\",\r\n \"titwank\",\r\n \"tosser\",\r\n \"tw4t\",\r\n \"twat\",\r\n \"twathead\",\r\n \"twatty\",\r\n \"twunt\",\r\n \"twunter\",\r\n \"v14gra\",\r\n \"v1gra\",\r\n \"vagina\",\r\n \"viagra\",\r\n \"vulva\",\r\n \"w00se\",\r\n \"whoar\",\r\n \"whore\",\r\n \"xrated\",\r\n]));\r\n\r\nexport const isProfanity = (word: string) => {\r\n const all = useProfanityStore.getState();\r\n \r\n // Convert to array if needed\r\n const profanityArray = Array.isArray(all) \r\n ? all \r\n : typeof all === 'object' && all !== null\r\n ? Object.values(all)\r\n : [];\r\n return profanityArray.includes(word);\r\n};\r\n\r\n","import { create } from 'zustand';\r\nimport { useMemo } from 'react';\r\n\r\nexport type SkillSettings = {\r\n baseLevel: number;\r\n maxLevel: number;\r\n baseXP: number;\r\n modifier: number;\r\n};\r\n\r\ntype SkillStore = {\r\n settings: SkillSettings;\r\n levelMap: Record<string, number>;\r\n setSettings: (updater: SkillSettings | ((prev: SkillSettings) => SkillSettings)) => void;\r\n};\r\n\r\ntype SkillHookResult = {\r\n prevLevelXP: number;\r\n currentLevel: number;\r\n nextLevel: number;\r\n currentLevelXP: number;\r\n nextLevelXP: number;\r\n progressToLevel: number;\r\n xpToNextLevel: number;\r\n};\r\n\r\nfunction calculateXPForLevel(level: number, settings: SkillSettings): number {\r\n if (level < settings.baseLevel) return 0;\r\n if (level === 1) return 0;\r\n if (level === 2) return settings.baseXP;\r\n\r\n let totalXP = settings.baseXP;\r\n\r\n for (let i = 2; i <= level - 1; i++) {\r\n const baseRuneScapeXP = Math.floor((i + 300 * 2 ** (i / 7)) / 4);\r\n totalXP += baseRuneScapeXP * settings.modifier;\r\n }\r\n\r\n return Math.floor(totalXP);\r\n}\r\n\r\nfunction generateLevelMap(settings: SkillSettings): Record<string, number> {\r\n const levelMap: Record<string, number> = {};\r\n for (let level = settings.baseLevel; level <= settings.maxLevel; level++) {\r\n levelMap[level.toString()] = calculateXPForLevel(level, settings);\r\n }\r\n return levelMap;\r\n}\r\n\r\nfunction getLevelFromXP(xp: number, levelMap: Record<string, number>, settings: SkillSettings): number {\r\n for (let level = settings.baseLevel; level <= settings.maxLevel; level++) {\r\n const xpForLevel = levelMap[level.toString()];\r\n if (xpForLevel > xp) return level - 1;\r\n }\r\n return settings.maxLevel;\r\n}\r\n\r\nexport function createSkill(defaultSettings: SkillSettings) {\r\n const useStore = create<SkillStore>((set) => ({\r\n settings: defaultSettings,\r\n levelMap: generateLevelMap(defaultSettings),\r\n setSettings: (updater) =>\r\n set((state) => {\r\n const newSettings = typeof updater === 'function' ? updater(state.settings) : updater;\r\n return {\r\n settings: newSettings,\r\n levelMap: generateLevelMap(newSettings),\r\n };\r\n }),\r\n }));\r\n\r\n const useSkill = (xp: number): SkillHookResult => {\r\n const { settings, levelMap } = useStore();\r\n\r\n return useMemo(() => {\r\n const currentLevel = getLevelFromXP(xp, levelMap, settings);\r\n const nextLevel = Math.min(currentLevel + 1, settings.maxLevel);\r\n \r\n const currentLevelXP = levelMap[currentLevel.toString()] || 0;\r\n const nextLevelXP = levelMap[nextLevel.toString()] || 0;\r\n\r\n const xpInCurrentLevel = xp - currentLevelXP;\r\n const xpRequiredForLevel = nextLevelXP - currentLevelXP;\r\n const progressToLevel = xpRequiredForLevel > 0 \r\n ? (xpInCurrentLevel / xpRequiredForLevel) * 100 \r\n : 100;\r\n\r\n const xpToNextLevel = Math.max(0, nextLevelXP - xp);\r\n const prevLevelXP = calculateXPForLevel(currentLevel - 1, settings);\r\n return {\r\n currentLevel,\r\n nextLevel,\r\n currentLevelXP,\r\n prevLevelXP,\r\n nextLevelXP,\r\n progressToLevel: Math.min(100, Math.max(0, progressToLevel)),\r\n xpToNextLevel,\r\n };\r\n }, [xp, levelMap, settings]);\r\n };\r\n\r\n // Return settings object with access to store\r\n const skill = {\r\n get settings() {\r\n return useStore.getState().settings;\r\n },\r\n setSettings: (updater: SkillSettings | ((prev: SkillSettings) => SkillSettings)) => {\r\n useStore.getState().setSettings(updater);\r\n },\r\n useSettings: () => useStore((state) => state.settings),\r\n };\r\n\r\n return {\r\n skill,\r\n useSkill,\r\n };\r\n}\r\n\r\n// Example usage:\r\n// export const { skill: drugSkill, useSkill: useDrugSkill } = createSkill({\r\n// baseLevel: 1,\r\n// maxLevel: 99,\r\n// baseXP: 83,\r\n// modifier: 1,\r\n// });","import axios from \"axios\";\r\nimport { fetchNui } from \"./fetchNui\";\r\n\r\nconst dummyURL = 'https://fmapi.net/api/v2/presigned-url/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJON0UxM0tzejFRM0NuSzRHWFBPbmUiLCJ0ZWFtSWQiOiJlMDQ1YnpwZzg5TGpoaUFTaURIdVoiLCJmaWxlVHlwZSI6ImltYWdlIiwidG9rZW5JZCI6ImpwczJ4Z0M1eFZqcnRoeWZTZnFsYSIsInNldHRpbmdzIjp7IlRlYW1JRCI6ImUwNDVienBnODlMamhpQVNpREh1WiIsIkltYWdlTm90aWZpY2F0aW9uVHlwZSI6IiIsIkRpc2NvcmRXZWJob29rIjoiIiwiRGlzY29yZEltYWdlQ2hhbm5lbCI6IiIsIlZpZGVvTm90aWZpY2F0aW9uVHlwZSI6IiIsIkRpc2NvcmRWaWRlb1dlYmhvb2siOiIiLCJEaXNjb3JkVmlkZW9DaGFubmVsIjoiIiwiQXVkaW9Ob3RpZmljYXRpb25UeXBlIjoiIiwiRGlzY29yZEF1ZGlvV2ViaG9vayI6IiIsIkRpc2NvcmRBdWRpb0NoYW5uZWwiOiIiLCJEaXNjb3JkQm90VG9rZW4iOiIiLCJSZXRlbnRpb25FbmFibGVkIjpmYWxzZSwiUmV0ZW50aW9uRGF5cyI6NywiVmlkZW9SZXRlbnRpb25FbmFibGVkIjpmYWxzZSwiVmlkZW9SZXRlbnRpb25EYXlzIjo3LCJBdWRpb1JldGVudGlvbkVuYWJsZWQiOmZhbHNlLCJBdWRpb1JldGVudGlvbkRheXMiOjcsIkxvZ0FsZXJ0RW5hYmxlZCI6ZmFsc2UsIkxvZ0FsZXJ0TGV2ZWxzIjpbXSwiTG9nQWxlcnREaXNjb3JkV2ViaG9vayI6IiIsIk92ZXJyaWRlSW1hZ2VRdWFsaXR5IjpmYWxzZSwiSW1hZ2VRdWFsaXR5Ijo1MH0sImV4cCI6MTc2MTg1MTEzNH0.fpPeQ0GCm5GNTddjttUQ78VMqRUAufXoOvv5C7Vh3WA';\r\n\r\nexport async function updatePresignedURL(): Promise<string> {\r\n return await fetchNui<string>('GET_PRESIGNED_URL', undefined, dummyURL);\r\n}\r\n\r\nexport type UploadImageProps = {\r\n fileURL: string;\r\n name?: string;\r\n description?: string;\r\n};\r\n\r\nexport async function uploadImage(props: UploadImageProps): Promise<string> {\r\n // 1. Get presigned URL\r\n const uploadURL = await updatePresignedURL();\r\n\r\n // 2. Load file data from blob URL\r\n const response = await fetch(props.fileURL);\r\n const blob = await response.blob();\r\n\r\n // 👇 3. Wrap it as a File so it behaves properly\r\n const file = new File([blob], \"upload.png\", { type: blob.type });\r\n // 4. Build form data\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n formData.append(\r\n \"metadata\",\r\n JSON.stringify({\r\n name: props.name || file.name,\r\n description: props.description || \"Uploaded via DirkScripts\",\r\n })\r\n );\r\n\r\n // 5. Upload to the presigned URL\r\n const uploadRes = await axios.post(uploadURL, formData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n });\r\n\r\n // 6. Return final URL\r\n const finalUrl = uploadRes.data?.data?.url ?? uploadRes.data?.url;\r\n if (!finalUrl) throw new Error(\"Upload succeeded but no URL returned\");\r\n return finalUrl;\r\n}\r\n\r\n\r\nexport async function getImageShape(file: File | string): Promise<\"square\" | \"wide\"> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n\r\n img.onload = () => {\r\n if (img.width > img.height) resolve(\"wide\");\r\n else resolve(\"square\"); // tall or equal treated as square\r\n };\r\n\r\n img.onerror = () => reject(new Error(\"Failed to load image\"));\r\n\r\n img.src = typeof file === \"string\" ? file : URL.createObjectURL(file);\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 { 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 <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 // backgroundColor: colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][7 as number], (props.hoverable ? (props.hovered ? 0.3 : 0.2) : 0.2)),\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n \r\n padding: props.p || theme.spacing.xs,\r\n transition: 'all 0.2s ease-in-out',\r\n aspectRatio: '1/1', \r\n fontSize: props.fontSize ? props.fontSize: '2.5vh',\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}","import { fetchNui } from \"@/utils\";\r\nimport { 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\nimport { create } from \"zustand\";\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 } from \"@mantine/core\";\r\nimport { MotionFlex } from \"./Motion\";\r\nimport { Variants } from \"framer-motion\";\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('var(--mantine-color-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 >\r\n {(props.title || props.description) && (\r\n <Flex\r\n direction={'column'}\r\n gap='xxs'\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 <Text\r\n size='xs'\r\n c='rgba(255, 255, 255, 0.8)'\r\n fw={400}\r\n >{props.description}</Text> \r\n )}\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 <Flex\r\n ml='auto'\r\n >\r\n {props.rightSection}\r\n </Flex>\r\n </Flex>\r\n {props.children} \r\n </MotionFlex>\r\n )\r\n}","import { create } from 'zustand';\r\n\r\n// Import sounds as URLs (TypeScript-safe)\r\nimport clickSoundUrl from './click_sound.mp3';\r\nimport hoverSoundUrl from './hover_sound.mp3';\r\n\r\n// Define a type for the store state and actions\r\ntype AudioPlayerStore = {\r\n play: (sound: string) => void;\r\n stop: (sound: string) => void;\r\n};\r\n\r\n// Create the store using Zustand\r\nexport const useAudio = create<AudioPlayerStore>(() => {\r\n const audioRefs: Record<string, HTMLAudioElement> = {};\r\n\r\n // Predefined sounds\r\n const sounds: Record<string, string> = {\r\n click: clickSoundUrl,\r\n hover: hoverSoundUrl,\r\n };\r\n\r\n // Initialize audio elements for each sound\r\n for (const [key, src] of Object.entries(sounds)) {\r\n audioRefs[key] = new Audio(src);\r\n }\r\n\r\n return {\r\n play: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.currentTime = 0;\r\n audio.volume = 0.1;\r\n audio.play();\r\n },\r\n stop: (sound) => {\r\n const audio = audioRefs[sound];\r\n if (!audio) return console.warn(`Sound '${sound}' not found.`);\r\n audio.pause();\r\n audio.currentTime = 0;\r\n },\r\n };\r\n});\r\n","\r\nimport { useAudio } from \"@/hooks/useAudio/store\";\r\nimport { colorWithAlpha } from \"@/utils\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { alpha, Flex, FlexProps, useMantineTheme } from \"@mantine/core\";\r\nimport { motion } from \"framer-motion\";\r\nimport { MotionFlex, MotionIcon, MotionText } from \"./Motion\";\r\n\r\n\r\nexport type SegmentProps = {\r\n label: string;\r\n value: string;\r\n icon?: string; // Optional icon for the segment\r\n rightSection?: React.ReactNode;\r\n color?: string;\r\n}\r\n\r\nexport type SegmentedControlProps = {\r\n w?: string; // Width of the entire control\r\n multi?: boolean; // Optional prop to allow multiple selections\r\n value?: string | string[]; // Controlled value, if provided\r\n onChange?: (value: string | string[]) => void; // Callback for value change\r\n fz?: string; // Font size for the segments\r\n justify?: FlexProps['justify']; \r\n items: SegmentProps[];\r\n sounds?: boolean;\r\n roundEdges?: boolean;\r\n color?: string;\r\n} & FlexProps;\r\n\r\nexport function SegmentedControl(props: SegmentedControlProps) {\r\n const theme = useMantineTheme();\r\n const play = useAudio((state) => state.play);\r\n\r\n const handleChange = (newValue: string | string[]) => {\r\n if (props.sounds) play('click');\r\n if (props.onChange) {\r\n props.onChange(newValue);\r\n }\r\n };\r\n\r\n return (\r\n <Flex\r\n bg='rgba(33, 33, 33, 0.6)'\r\n w={props.w || 'fit-content'}\r\n style={{\r\n borderRadius: props.roundEdges !== false ? theme.radius.xs : 0,\r\n overflow: 'hidden',\r\n }}\r\n {...props}\r\n >\r\n {props.items.map((item, index) => (\r\n <motion.div\r\n key={index}\r\n initial={{ x: -100, opacity: 0 }}\r\n animate={{ x: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, delay: index * 0.1, ease: 'easeInOut' }}\r\n\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n flex: 1,\r\n }}\r\n >\r\n <Segment\r\n key={item.value}\r\n label={item.label}\r\n value={item.value}\r\n icon={item.icon}\r\n rightSection={item.rightSection}\r\n fz={props.fz}\r\n color={props.color}\r\n selected={!props.multi ? props.value === item.value : Array.isArray(props.value) && props.value.includes(item.value)}\r\n onClick={() => {\r\n\r\n if (props.multi) {\r\n const newValue = Array.isArray(props.value)\r\n ? props.value.includes(item.value)\r\n ? props.value.filter((v) => v !== item.value)\r\n : [...props.value, item.value]\r\n : [item.value];\r\n\r\n handleChange(newValue);\r\n } else {\r\n handleChange(item.value);\r\n }\r\n }}\r\n />\r\n </motion.div>\r\n ))}\r\n </Flex>\r\n )\r\n}\r\n\r\nfunction Segment(props: SegmentProps & {\r\n selected: boolean;\r\n onClick: () => void;\r\n fz?: string;\r\n}) {\r\n const theme = useMantineTheme();\r\n\r\n return (\r\n <MotionFlex\r\n onClick={props.onClick}\r\n w='100%'\r\n direction=\"column\"\r\n align=\"center\"\r\n // p='xs'\r\n h='100%'\r\n bg={props.selected ? props.color ? alpha(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 width: `${100 / props.segments}%`, // Ensures equal width distribution\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, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { BorderedIcon } from \"./BorderedIcon\";\r\nimport { useSettings } from \"..\";\r\n\r\n\r\nexport type ButtonProps = {\r\n icon: string;\r\n onClick?: () => void;\r\n};\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 rightSection?: React.ReactNode;\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 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 || '0'}\r\n style={{\r\n userSelect: 'none',\r\n borderBottom: props.removeBorder ? 'none' : `0.2vh solid ${props.borderColor || colorWithAlpha(theme.colors[theme.primaryColor][9], 0.5)}`\r\n }}\r\n >\r\n <Flex\r\n align='center'\r\n justify={'center'}\r\n >\r\n\r\n <Flex\r\n align='center'\r\n gap='sm'\r\n pr='xs' \r\n >\r\n <BorderedIcon\r\n icon={props.icon as IconName}\r\n fontSize={theme.fontSizes.md}\r\n color={props.iconColor}\r\n />\r\n <Flex\r\n direction='column'\r\n gap='0.25vh'\r\n // w='30%'\r\n >\r\n <Text p='0' size='sm' style={{\r\n lineHeight: theme.fontSizes.md,\r\n fontFamily: game == 'fivem' ? 'Akrobat Bold' : 'Red Dead',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase',\r\n }}>{props.title}</Text>\r\n <Text \r\n size='xs'\r\n c='grey'\r\n style={{ whiteSpace: 'normal', wordWrap: 'break-word' }}\r\n >{props.description}</Text>\r\n </Flex>\r\n </Flex>\r\n <Flex\r\n ml='auto'\r\n align='center'\r\n gap='xs'\r\n >\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 { 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:alpha(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={alpha(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 ${alpha(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 { createContext, useContext, useRef } from \"react\";\r\nimport { create, StoreApi, useStore } from \"zustand\";\r\nimport Modal from \"./Modal\";\r\n\r\ntype ModalProps = {\r\n children: React.ReactNode;\r\n title: string;\r\n icon: string;\r\n description?: string;\r\n height?: string;\r\n width?: string;\r\n clickOutside?: boolean;\r\n};\r\n\r\ntype ModalStore = {\r\n active: ModalProps | 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\nexport function ModalProvider({ children, defaultPage }: { children: React.ReactNode, defaultPage?: string }){\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 <Modal/>\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: ModalProps) => {\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","\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Flex, Text, useMantineTheme } from \"@mantine/core\";\r\nimport { useClickOutside } from \"@mantine/hooks\";\r\nimport { AnimatePresence } from \"framer-motion\";\r\nimport { MotionFlex, MotionIcon } from \"./Motion\";\r\nimport { useModal, useModalActions } from \"./ModalStore\";\r\n\r\nexport default function Modal(){\r\n const active = useModal((state) => state.active);\r\n const {hideModal} = useModalActions();\r\n \r\n const ref = useClickOutside(() => {\r\n if (!active) return;\r\n if (active.clickOutside == false) return;\r\n if (active) {\r\n \r\n hideModal();\r\n }\r\n });\r\n\r\n const theme = useMantineTheme();\r\n \r\n return (\r\n \r\n <AnimatePresence>\r\n {active && (\r\n <MotionFlex\r\n h='100%'\r\n w='100%'\r\n bg='rgba(0, 0, 0, 0.3)'\r\n pos='absolute'\r\n style={{\r\n zIndex: 2000,\r\n filter: 'drop-shadow(0 0 2vh black)',\r\n\r\n }}\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n align='center'\r\n justify='center'\r\n >\r\n\r\n <MotionFlex\r\n pos='absolute'\r\n top='50%'\r\n left='50%'\r\n ref={ref}\r\n w={active.width || '40%'}\r\n style={{\r\n transform: 'translate(-50%, -50%)',\r\n borderRadius: theme.radius.xs,\r\n boxShadow: theme.shadows.xl,\r\n zIndex: 2100,\r\n }}\r\n bg={'rgba(48, 48, 48, 0.84)'}\r\n \r\n initial={{ scale: 0.8, opacity: 0, transform: 'translate(-50%, -50%)' }}\r\n animate={{ scale: 1, opacity: 1, transform: 'translate(-50%, -50%)' }}\r\n exit={{ scale: 0.8, opacity: 0, transform: 'translate(-50%, -50%)' }}\r\n p='sm'\r\n direction='column'\r\n // align='flex-start'\r\n // mah='80%'\r\n maw='70%'\r\n gap='xs'\r\n >\r\n\r\n <Flex\r\n direction={'column'}\r\n w='100%'\r\n >\r\n <Flex\r\n w='100%'\r\n align='center'\r\n gap='xs'\r\n >\r\n {active.icon && (\r\n <FontAwesomeIcon \r\n icon={active.icon as IconProp} \r\n style={{\r\n fontSize: theme.fontSizes.xs,\r\n }} \r\n />\r\n )}\r\n <Text\r\n size='sm'\r\n >\r\n {active.title}\r\n </Text>\r\n <MotionIcon\r\n icon='times'\r\n color='rgba(255, 255, 255, 0.7)'\r\n whileHover={{\r\n scale: 1.1,\r\n filter: 'brightness(1.2)',\r\n }}\r\n style={{\r\n marginLeft: 'auto',\r\n cursor: 'pointer',\r\n fontSize: theme.fontSizes.sm,\r\n }}\r\n onClick={() => {\r\n hideModal();\r\n }}\r\n />\r\n </Flex>\r\n {active.description && (\r\n <Text\r\n size=\"xs\"\r\n c='rgba(255, 255, 255, 0.7)'\r\n >\r\n {active.description}\r\n </Text>\r\n )}\r\n </Flex>\r\n {active.children}\r\n </MotionFlex>\r\n </MotionFlex>\r\n )}\r\n </AnimatePresence>\r\n )\r\n}\r\n\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 { MutableRefObject, useEffect, useRef } from \"react\";\r\nimport { noop } from \"../utils/misc\";\r\n\r\nexport interface NuiMessageData<T = unknown> {\r\n action: string;\r\n data: T;\r\n}\r\n\r\nexport type NuiHandlerSignature<T> = ( data: T) => void;\r\n\r\n/**\r\n * A hook that manage events listeners for receiving data from the client scripts\r\n * @param action The specific `action` that should be listened for.\r\n * @param handler The callback function that will handle data relayed by this hook\r\n *\r\n * @example\r\n * useNuiEvent<{visibility: true, wasVisible: 'something'}>('setVisible', (data) => {\r\n * // whatever logic you want\r\n * })\r\n *\r\n **/\r\n\r\nexport const useNuiEvent = <T = unknown>(\r\n action: string,\r\n handler: ( data: T) => void,\r\n) => {\r\n const savedHandler: MutableRefObject<NuiHandlerSignature<T>> = useRef(noop);\r\n\r\n // Make sure we handle for a reactive handler\r\n useEffect(() => {\r\n savedHandler.current = handler;\r\n }, [handler]);\r\n\r\n useEffect(() => {\r\n const eventListener = (event: MessageEvent<NuiMessageData<T>>) => {\r\n const { action: eventAction, data } = event.data;\r\n\r\n if (savedHandler.current) {\r\n if (eventAction === action) {\r\n savedHandler.current( data);\r\n }\r\n }\r\n };\r\n\r\n window.addEventListener(\"message\", eventListener);\r\n // Remove Event Listener on component dirkup\r\n return () => window.removeEventListener(\"message\", eventListener);\r\n }, [action]);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport React, { createContext, useContext, useRef } from \"react\";\r\nimport { createStore, StoreApi, useStore } from \"zustand\";\r\n\r\n// ---- Utility functions ----\r\nfunction getNested(obj: any, path: string): any {\r\n return path.split(\".\").reduce((acc, key) => (acc ? acc[key] : undefined), obj);\r\n}\r\n\r\nfunction setNested(obj: any, path: string, value: any): any {\r\n const keys = path.split(\".\");\r\n const newObj = { ...obj };\r\n let current = newObj;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n current[key] = { ...(current[key] || {}) };\r\n current = current[key];\r\n }\r\n current[keys[keys.length - 1]] = value;\r\n return newObj;\r\n}\r\n\r\nfunction deleteNested(obj: any, path: string): any {\r\n const keys = path.split(\".\");\r\n const newObj = { ...obj };\r\n let current = newObj;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n if (!current[key]) return obj;\r\n current[key] = { ...current[key] };\r\n current = current[key];\r\n }\r\n delete current[keys[keys.length - 1]];\r\n return newObj;\r\n}\r\n\r\nfunction flattenRules(\r\n rules: any,\r\n prefix = \"\"\r\n): Record<string, (value: any, values: any) => string | null> {\r\n const result: Record<string, (value: any, values: any) => string | null> = {};\r\n for (const key in rules) {\r\n const fullPath = prefix ? `${prefix}.${key}` : key;\r\n const val = rules[key];\r\n if (typeof val === \"function\") result[fullPath] = val;\r\n else if (typeof val === \"object\")\r\n Object.assign(result, flattenRules(val, fullPath));\r\n }\r\n return result;\r\n}\r\n\r\n// ---- Types ----\r\nexport type ValidationRules<T> = {\r\n [K in keyof T]?: T[K] extends object\r\n ? ValidationRules<T[K]>\r\n : (value: T[K], values: Partial<T>) => string | null;\r\n};\r\n\r\nexport type FormState<T> = {\r\n values: Partial<T>;\r\n initialValues: Partial<T>;\r\n errors: Record<string, string>;\r\n\r\n setValue: (path: string, value: any) => void;\r\n setInitialValues: (newInitialValues: Partial<T>) => void;\r\n setError: (path: string, message: string) => void;\r\n clearError: (path: string) => void;\r\n validate: () => boolean;\r\n validateField: (path: string) => boolean;\r\n reset: () => void;\r\n\r\n back: () => void;\r\n forward: () => void;\r\n canBack: boolean;\r\n canForward: boolean;\r\n\r\n changedFields: string[];\r\n changedCount: number;\r\n resetChangeCount: () => void;\r\n\r\n /** New additions **/\r\n onSubmit?: (form: FormState<T>) => void;\r\n submit: () => void;\r\n};\r\n\r\n// ---- Core Store ----\r\nexport function createFormStore<T>(\r\n initialValues: Partial<T>,\r\n validationRules?: ValidationRules<T>,\r\n onSubmit?: (form: FormState<T>) => void\r\n) {\r\n const flatRules = validationRules ? flattenRules(validationRules) : {};\r\n const history: Partial<T>[] = [];\r\n const future: Partial<T>[] = [];\r\n const changed = new Set<string>();\r\n\r\n return createStore<FormState<T>>((set, get) => ({\r\n initialValues,\r\n values: initialValues,\r\n errors: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n onSubmit,\r\n submit: () => {\r\n const state = get();\r\n const isValid = state.validate();\r\n if (isValid && state.onSubmit) state.onSubmit(get());\r\n },\r\n\r\n resetChangeCount: () => {\r\n changed.clear();\r\n set(() => ({\r\n changedFields: [],\r\n changedCount: 0,\r\n }));\r\n },\r\n\r\n setInitialValues: (newInitialValues) =>\r\n set({ initialValues: newInitialValues }),\r\n\r\n setValue: (path, value) => {\r\n const currentValues = get().values;\r\n const newValues = setNested(currentValues, path, value);\r\n const oldValue = getNested(get().initialValues, path);\r\n\r\n history.push(currentValues);\r\n future.length = 0;\r\n\r\n if (value !== oldValue) changed.add(path);\r\n else changed.delete(path);\r\n\r\n set({\r\n values: newValues,\r\n canBack: history.length > 0,\r\n canForward: false,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n\r\n const rule = flatRules[path];\r\n if (rule) {\r\n const error = rule(value, newValues);\r\n if (error)\r\n set((state) => ({ errors: setNested(state.errors, path, error) }));\r\n else set((state) => ({ errors: deleteNested(state.errors, path) }));\r\n }\r\n },\r\n\r\n setError: (path, message) =>\r\n set((state) => ({ errors: setNested(state.errors, path, message) })),\r\n clearError: (path) =>\r\n set((state) => ({ errors: deleteNested(state.errors, path) })),\r\n\r\n validateField: (path) => {\r\n const state = get();\r\n const rule = flatRules[path];\r\n if (!rule) return true;\r\n\r\n const value = getNested(state.values, path);\r\n const error = rule(value, state.values);\r\n if (error) {\r\n set((state) => ({ errors: setNested(state.errors, path, error) }));\r\n return false;\r\n } else {\r\n set((state) => ({ errors: deleteNested(state.errors, path) }));\r\n return true;\r\n }\r\n },\r\n\r\n validate: () => {\r\n const state = get();\r\n let isValid = true;\r\n let newErrors: Record<string, string> = {};\r\n\r\n for (const path in flatRules) {\r\n const rule = flatRules[path];\r\n const value = getNested(state.values, path);\r\n const error = rule(value, state.values);\r\n if (error) {\r\n isValid = false;\r\n newErrors = setNested(newErrors, path, error);\r\n }\r\n }\r\n\r\n set({ errors: newErrors });\r\n return isValid;\r\n },\r\n\r\n reset: () => {\r\n history.length = 0;\r\n future.length = 0;\r\n changed.clear();\r\n set({\r\n values: initialValues,\r\n errors: {},\r\n canBack: false,\r\n canForward: false,\r\n changedFields: [],\r\n changedCount: 0,\r\n });\r\n },\r\n\r\n back: () => {\r\n const state = get();\r\n if (history.length === 0) return;\r\n const prev = history.pop()!;\r\n future.push(state.values);\r\n\r\n changed.clear();\r\n const current = prev;\r\n const initial = get().initialValues;\r\n for (const key in current) {\r\n if (JSON.stringify(current[key]) !== JSON.stringify(initial[key]))\r\n changed.add(key);\r\n }\r\n\r\n set({\r\n values: prev,\r\n canBack: history.length > 0,\r\n canForward: true,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n },\r\n\r\n forward: () => {\r\n const state = get();\r\n if (future.length === 0) return;\r\n const next = future.pop()!;\r\n history.push(state.values);\r\n\r\n changed.clear();\r\n const current = next;\r\n const initial = get().initialValues;\r\n for (const key in current) {\r\n if (JSON.stringify(current[key]) !== JSON.stringify(initial[key]))\r\n changed.add(key);\r\n }\r\n\r\n set({\r\n values: next,\r\n canBack: true,\r\n canForward: future.length > 0,\r\n changedFields: Array.from(changed),\r\n changedCount: changed.size,\r\n });\r\n },\r\n }));\r\n}\r\n\r\n// ---- Context ----\r\nconst FormContext = createContext<StoreApi<FormState<any>> | null>(null);\r\n\r\nexport function FormProvider<T>({\r\n initialValues,\r\n validate,\r\n onSubmit,\r\n children,\r\n}: {\r\n initialValues: Partial<T>;\r\n validate?: ValidationRules<T>;\r\n onSubmit?: (form: FormState<T>) => void;\r\n children: React.ReactNode;\r\n}) {\r\n const storeRef = useRef(createFormStore<T>(initialValues, validate, onSubmit));\r\n return (\r\n <FormContext.Provider value={storeRef.current}>\r\n {children}\r\n </FormContext.Provider>\r\n );\r\n}\r\n\r\n// ---- Hook ----\r\nexport function useForm<T>() {\r\n const store = useContext(FormContext);\r\n if (!store) throw new Error(\"useForm must be used inside a <FormProvider>\");\r\n return useStore(store) as FormState<T>;\r\n}\r\n","import { createTheme, MantineTheme, NumberInput } from \"@mantine/core\";\r\n\r\nexport const label = {\r\n fontSize: 'var(--mantine-font-size-xs)',\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase', \r\n};\r\nexport const error = {\r\n fontSize: 'var(--mantine-font-size-xs)',\r\n fontFamily: 'Akrobat Regular',\r\n};\r\n\r\nconst theme = createTheme({\r\n primaryColor: \"dirk\",\r\n primaryShade: 9,\r\n defaultRadius: \"xs\",\r\n fontFamily: \"Akrobat Regular, sans-serif\",\r\n\r\n radius:{\r\n xxs: '0.3vh',\r\n xs: '0.5vh',\r\n sm: '0.75vh',\r\n md: '1vh',\r\n lg: '1.5vh',\r\n xl: '2vh',\r\n xxl: '3vh',\r\n },\r\n\r\n fontSizes: {\r\n xxs: '1.2vh',\r\n xs: '1.5vh',\r\n sm: '1.8vh',\r\n md: '2.2vh',\r\n lg: '2.8vh',\r\n xl: '3.3vh',\r\n xxl: '3.8vh',\r\n },\r\n\r\n lineHeights: {\r\n xxs: '1.4vh',\r\n xs: '1.8vh',\r\n sm: '2.2vh',\r\n md: '2.8vh',\r\n lg: '3.3vh',\r\n xl: '3.8vh',\r\n },\r\n\r\n spacing:{\r\n xxs: '0.5vh',\r\n xs: '0.75vh',\r\n sm: '1.5vh',\r\n md: '2vh',\r\n lg: '3vh',\r\n xl: '4vh',\r\n xxl: '5vh',\r\n },\r\n\r\n components:{\r\n Progress:{\r\n styles:{\r\n label: {\r\n fontFamily: 'Akrobat Bold',\r\n letterSpacing: '0.05em',\r\n textTransform: 'uppercase', \r\n \r\n },\r\n root:{\r\n backgroundColor: 'rgba(77, 77, 77, 0.4)',\r\n },\r\n \r\n }\r\n },\r\n Textarea: {\r\n styles:{\r\n label: label,\r\n error: error,\r\n },\r\n },\r\n\r\n Button:{\r\n styles:{\r\n root:{\r\n fontSize: 'var(--mantine-font-size-xs)',\r\n },\r\n },\r\n },\r\n\r\n Select:{\r\n styles:{\r\n label: label,\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n },\r\n }\r\n },\r\n\r\n Pill: {\r\n styles: (theme: MantineTheme) => ({\r\n root: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n backgroundColor: 'rgba(76, 76, 76, 0.3)',\r\n height: 'fit-content',\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.05em',\r\n fontFamily: 'Akrobat Bold',\r\n fontSize: theme.fontSizes.xs,\r\n borderRadius: theme.defaultRadius,\r\n padding: `${theme.spacing.xs} ${theme.spacing.sm}`,\r\n }\r\n })\r\n },\r\n\r\n Input:{\r\n styles: {\r\n label: label,\r\n error: error,\r\n\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n backgroundColor: 'rgba(76, 76, 76, 0.3)', \r\n },\r\n },\r\n },\r\n ColorInput:{\r\n styles: {\r\n label: label,\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n },\r\n },\r\n },\r\n TextInput:{\r\n styles:{\r\n label: label,\r\n wrapper:{\r\n \r\n },\r\n section:{\r\n marginRight: '0.2vh',\r\n },\r\n\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n \r\n \r\n },\r\n }\r\n },\r\n NumberInput:{\r\n \r\n styles:{\r\n label: label,\r\n input:{\r\n padding: 'var(--mantine-spacing-sm)',\r\n },\r\n section:{\r\n pointerEvents: 'all',\r\n },\r\n }\r\n }\r\n },\r\n\r\n colors: {\r\n\r\n dirk:[\r\n \"#ffffff\",\r\n \"#f3fce9\",\r\n \"#dbf5bd\",\r\n \"#c3ee91\",\r\n \"#ace765\",\r\n \"#94e039\",\r\n \"#7ac61f\",\r\n \"#5f9a18\",\r\n \"#29420a\",\r\n \"#446e11\",\r\n ],\r\n },\r\n});\r\n\r\n\r\nexport default theme;","import '@mantine/core/styles.css';\r\nimport '@mantine/notifications/styles.css';\r\nimport './styles/notify.css';\r\nimport './styles/fonts.css';\r\nimport './styles/scrollBar.css';\r\nimport './styles/tornEdge.css';\r\n\r\n\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { far } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { BackgroundImage, MantineColorShade, MantineProvider, MantineThemeOverride } from '@mantine/core';\r\nimport { fetchNui, isEnvBrowser, registerInitialFetch, useAutoFetcher } from '@/utils';\r\nimport { create } from 'zustand';\r\nimport theme from '@/theme';\r\nimport { useEffect, useMemo } from 'react';\r\nlibrary.add(fas, far, fab);\r\n\r\nexport type DirkProviderProps = {\r\n fakeBackground?: boolean;\r\n children: React.ReactNode;\r\n themeOverride?: MantineThemeOverride;\r\n}\r\n\r\ntype SettingsProps = {\r\n game: 'rdr3' | 'fivem';\r\n primaryColor: string;\r\n primaryShade: number;\r\n itemImgPath: string;\r\n customTheme: Record<string, string[]>;\r\n}\r\n\r\nexport const useSettings = create<SettingsProps>((set) => ({\r\n game: 'fivem',\r\n primaryColor: 'dirk',\r\n primaryShade: 9,\r\n itemImgPath: 'https://assets.dirkcfx.com/items/',\r\n customTheme: {},\r\n}));\r\n\r\n\r\nregisterInitialFetch<Partial<SettingsProps>>(\"GET_SETTINGS\", undefined, {\r\n game: 'fivem',\r\n primaryColor: 'dirk',\r\n primaryShade: 9,\r\n itemImgPath: 'https://assets.dirkcfx.com/items/',\r\n customTheme: {},\r\n}).then((data) => {\r\n useSettings.setState({\r\n ...data,\r\n });\r\n});\r\n\r\nexport function DirkProvider(props: DirkProviderProps) {\r\n const primaryColor = useSettings((data) => data.primaryColor);\r\n const primaryShade = useSettings((data) => data.primaryShade);\r\n const customTheme = useSettings((data) => data.customTheme);\r\n const game = useSettings((data) => data.game);\r\n // Memoize the merged theme to avoid unnecessary recalculations\r\n const mergedTheme = useMemo<MantineThemeOverride>(() => ({\r\n ...theme,\r\n primaryColor: primaryColor,\r\n primaryShade: primaryShade as MantineColorShade,\r\n colors: {\r\n ...theme.colors,\r\n ...customTheme, // Custom theme colors will override/extend base colors\r\n ...props.themeOverride?.colors, // Props theme colors will override/extend previous colors\r\n },\r\n ...props.themeOverride, // Props theme will override/extend the entire theme\r\n }), [primaryColor, primaryShade, customTheme, props.themeOverride]);\r\n console.log(mergedTheme)\r\n useEffect(() => {\r\n document.fonts.ready.then(() => {\r\n document.body.style.fontFamily = \r\n game === 'rdr3' ? '\"Red Dead\", sans-serif' :\r\n game === 'fivem' ? '\"Akrobat Regular\", sans-serif' :\r\n 'sans-serif';\r\n });\r\n }, [game]);\r\n\r\n useEffect(() => {\r\n fetchNui('NUI_READY')\r\n }, []);\r\n\r\n useAutoFetcher();\r\n \r\n \r\n return (\r\n <MantineProvider theme={mergedTheme} defaultColorScheme='dark'>\r\n <Wrapper>\r\n {props.children}\r\n </Wrapper>\r\n </MantineProvider>\r\n );\r\n}\r\n\r\nfunction Wrapper({ children }: { children: React.ReactNode }) {\r\n const game = useSettings((data) => data.game);\r\n if (!isEnvBrowser()) return <>{children}</>;\r\n return (\r\n <BackgroundImage\r\n w=\"100vw\"\r\n h=\"100vh\"\r\n style={{ overflow: 'hidden', backgroundColor: 'transparent' }}\r\n src={game === 'fivem'\r\n ? 'https://i.ytimg.com/vi/TOxuNbXrO28/maxresdefault.jpg'\r\n : 'https://raw.githubusercontent.com/Jump-On-Studios/RedM-jo_libs/refs/heads/main/source-repositories/Menu/public/assets/images/background_dev.jpg'}\r\n >\r\n {children}\r\n </BackgroundImage>\r\n );\r\n}\r\n\r\n","import { useSettings } from \"@/providers\";\r\n\r\nexport function useTornEdges() {\r\n const game = useSettings((state) => state.game);\r\n return game === \"rdr3\" ? \"torn-edge-wrapper\" : \"\";\r\n}\r\n\r\n// Add this SVG to your layout/root component:\r\nexport function TornEdgeSVGFilter() {\r\n return (\r\n <svg\r\n style={{ position: \"absolute\", width: 0, height: 0, pointerEvents: \"none\" }}\r\n aria-hidden=\"true\"\r\n >\r\n <defs>\r\n <filter id=\"torn-edge-filter\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\r\n {/* Base fractal noise for tearing */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.018 0.022\"\r\n numOctaves=\"5\"\r\n seed=\"9\"\r\n result=\"noise1\"\r\n />\r\n {/* Second noise layer for micro detail */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.08 0.12\"\r\n numOctaves=\"2\"\r\n seed=\"3\"\r\n result=\"noise2\"\r\n />\r\n\r\n {/* Blend both noise layers */}\r\n <feBlend in=\"noise1\" in2=\"noise2\" mode=\"multiply\" result=\"combinedNoise\" />\r\n\r\n {/* Primary displacement */}\r\n <feDisplacementMap\r\n in=\"SourceGraphic\"\r\n in2=\"combinedNoise\"\r\n scale=\"52\"\r\n xChannelSelector=\"R\"\r\n yChannelSelector=\"G\"\r\n result=\"displaced\"\r\n />\r\n\r\n {/* Alpha fade toward edges */}\r\n <feGaussianBlur stdDeviation=\"0.8\" in=\"displaced\" result=\"blurred\" />\r\n <feComponentTransfer in=\"blurred\" result=\"alphaFade\">\r\n <feFuncA type=\"gamma\" amplitude=\"1\" exponent=\"1.3\" offset=\"-0.05\" />\r\n </feComponentTransfer>\r\n\r\n {/* Sharpen a bit after fade */}\r\n <feMorphology operator=\"erode\" radius=\"0.4\" in=\"alphaFade\" result=\"eroded\" />\r\n\r\n {/* Merge final */}\r\n <feMerge>\r\n <feMergeNode in=\"eroded\" />\r\n </feMerge>\r\n </filter>\r\n </defs>\r\n </svg>\r\n );\r\n}\r\n\r\n","\r\n\r\n// This is a function that you will call and it will return liek so \r\n// const {useScriptSettings, useScriptSettingHooks} = createScriptSettings<YourTypeHere>({\r\n// key1: 'your_unique_value1',\r\n// key2: {}\r\n// subKey1: 'your_unique_value2',\r\n// subKey2: 'your_unique_value3'\r\n// }\r\n// })\r\n\r\nimport { useNuiEvent } from \"@/hooks\";\r\nimport { fetchNui } from \"@/utils\";\r\nimport { create } from \"zustand\";\r\ntype NuiResponse = { success: boolean; message: string };\r\n\r\n// it will basically rturn a zustand store aswell as aset of hooks required to operate/update this store \r\nexport function createScriptSettings<T>(defaultValue: T) {\r\n const store = create<T>(() => defaultValue);\r\n\r\n const useScriptSettingHooks = () => {\r\n useNuiEvent<Partial<T>>(\"UPDATE_SCRIPT_SETTINGS\", (newSettings) => {\r\n store.setState((prev) => ({ ...prev, ...newSettings }));\r\n });\r\n };\r\n\r\n // below returns {success, message} from the nui event\r\n\r\n const updateScriptSettings = async (newSettings: Partial<T>): Promise<NuiResponse> => {\r\n store.setState((prev) => ({ ...prev, ...newSettings }));\r\n return await fetchNui<NuiResponse>(\"UPDATE_SCRIPT_SETTINGS\", newSettings);\r\n };\r\n\r\n return {store, updateScriptSettings, useScriptSettingHooks}\r\n} \r\n\r\n\r\n"]}