dirk-cfx-react 1.1.0 → 1.1.2
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.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +886 -10
- package/dist/index.d.ts +886 -10
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/components/index.cjs +0 -1416
- package/dist/components/index.cjs.map +0 -1
- package/dist/components/index.d.cts +0 -699
- package/dist/components/index.d.ts +0 -699
- package/dist/components/index.js +0 -1386
- package/dist/components/index.js.map +0 -1
- package/dist/hooks/index.cjs +0 -350
- package/dist/hooks/index.cjs.map +0 -1
- package/dist/hooks/index.d.cts +0 -71
- package/dist/hooks/index.d.ts +0 -71
- package/dist/hooks/index.js +0 -342
- package/dist/hooks/index.js.map +0 -1
- package/dist/providers/index.cjs +0 -293
- package/dist/providers/index.cjs.map +0 -1
- package/dist/providers/index.d.cts +0 -20
- package/dist/providers/index.d.ts +0 -20
- package/dist/providers/index.js +0 -290
- package/dist/providers/index.js.map +0 -1
- package/dist/utils/index.cjs +0 -816
- package/dist/utils/index.cjs.map +0 -1
- package/dist/utils/index.d.cts +0 -109
- package/dist/utils/index.d.ts +0 -109
- package/dist/utils/index.js +0 -786
- package/dist/utils/index.js.map +0 -1
package/dist/providers/index.cjs
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
require('@mantine/core/styles.css');
|
|
4
|
-
require('@mantine/notifications/styles.css');
|
|
5
|
-
require('./styles/notify.css');
|
|
6
|
-
require('./styles/fonts.css');
|
|
7
|
-
require('./styles/scrollBar.css');
|
|
8
|
-
require('./styles/tornEdge.css');
|
|
9
|
-
var fontawesomeSvgCore = require('@fortawesome/fontawesome-svg-core');
|
|
10
|
-
var freeBrandsSvgIcons = require('@fortawesome/free-brands-svg-icons');
|
|
11
|
-
var freeRegularSvgIcons = require('@fortawesome/free-regular-svg-icons');
|
|
12
|
-
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
13
|
-
var core = require('@mantine/core');
|
|
14
|
-
var react = require('react');
|
|
15
|
-
var zustand = require('zustand');
|
|
16
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
17
|
-
|
|
18
|
-
// src/providers/DirkProvider.tsx
|
|
19
|
-
|
|
20
|
-
// src/utils/misc.ts
|
|
21
|
-
var isEnvBrowser = () => !window.invokeNative;
|
|
22
|
-
|
|
23
|
-
// src/utils/fetchNui.ts
|
|
24
|
-
async function fetchNui(eventName, data, mockData) {
|
|
25
|
-
const options = {
|
|
26
|
-
method: "post",
|
|
27
|
-
headers: {
|
|
28
|
-
"Content-Type": "application/json; charset=UTF-8"
|
|
29
|
-
},
|
|
30
|
-
body: JSON.stringify(data)
|
|
31
|
-
};
|
|
32
|
-
if (isEnvBrowser() && mockData) return mockData;
|
|
33
|
-
if (isEnvBrowser() && mockData === void 0) {
|
|
34
|
-
console.warn(
|
|
35
|
-
`[fetchNui] Called fetchNui for event "${eventName}" in browser environment without mockData. Returning empty object.`
|
|
36
|
-
);
|
|
37
|
-
return {};
|
|
38
|
-
}
|
|
39
|
-
const resourceName = window.GetParentResourceName ? window.GetParentResourceName() : "nui-frame-app";
|
|
40
|
-
const resp = await fetch(`https://${resourceName}/${eventName}`, options);
|
|
41
|
-
return await resp.json();
|
|
42
|
-
}
|
|
43
|
-
var initialFetches = {};
|
|
44
|
-
async function registerInitialFetch(eventName, data, mockData) {
|
|
45
|
-
const fetcher = () => fetchNui(eventName, data, mockData);
|
|
46
|
-
initialFetches[eventName] = fetcher;
|
|
47
|
-
return fetcher();
|
|
48
|
-
}
|
|
49
|
-
async function runFetches() {
|
|
50
|
-
return Promise.all(
|
|
51
|
-
Object.entries(initialFetches).map(async ([eventName, fetcher]) => {
|
|
52
|
-
const data = await fetcher();
|
|
53
|
-
return { eventName, data };
|
|
54
|
-
})
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
var useAutoFetcher = () => {
|
|
58
|
-
react.useEffect(() => {
|
|
59
|
-
if (isEnvBrowser()) return;
|
|
60
|
-
const run = async () => {
|
|
61
|
-
await runFetches();
|
|
62
|
-
};
|
|
63
|
-
run();
|
|
64
|
-
}, []);
|
|
65
|
-
};
|
|
66
|
-
var label = {
|
|
67
|
-
fontSize: "var(--mantine-font-size-xs)",
|
|
68
|
-
fontFamily: "Akrobat Bold",
|
|
69
|
-
letterSpacing: "0.05em",
|
|
70
|
-
textTransform: "uppercase"
|
|
71
|
-
};
|
|
72
|
-
var error = {
|
|
73
|
-
fontSize: "var(--mantine-font-size-xs)",
|
|
74
|
-
fontFamily: "Akrobat Regular"
|
|
75
|
-
};
|
|
76
|
-
var theme = core.createTheme({
|
|
77
|
-
primaryColor: "dirk",
|
|
78
|
-
primaryShade: 9,
|
|
79
|
-
defaultRadius: "xs",
|
|
80
|
-
fontFamily: "Akrobat Regular, sans-serif",
|
|
81
|
-
radius: {
|
|
82
|
-
xxs: "0.3vh",
|
|
83
|
-
xs: "0.5vh",
|
|
84
|
-
sm: "0.75vh",
|
|
85
|
-
md: "1vh",
|
|
86
|
-
lg: "1.5vh",
|
|
87
|
-
xl: "2vh",
|
|
88
|
-
xxl: "3vh"
|
|
89
|
-
},
|
|
90
|
-
fontSizes: {
|
|
91
|
-
xxs: "1.2vh",
|
|
92
|
-
xs: "1.5vh",
|
|
93
|
-
sm: "1.8vh",
|
|
94
|
-
md: "2.2vh",
|
|
95
|
-
lg: "2.8vh",
|
|
96
|
-
xl: "3.3vh",
|
|
97
|
-
xxl: "3.8vh"
|
|
98
|
-
},
|
|
99
|
-
lineHeights: {
|
|
100
|
-
xxs: "1.4vh",
|
|
101
|
-
xs: "1.8vh",
|
|
102
|
-
sm: "2.2vh",
|
|
103
|
-
md: "2.8vh",
|
|
104
|
-
lg: "3.3vh",
|
|
105
|
-
xl: "3.8vh"
|
|
106
|
-
},
|
|
107
|
-
spacing: {
|
|
108
|
-
xxs: "0.5vh",
|
|
109
|
-
xs: "0.75vh",
|
|
110
|
-
sm: "1.5vh",
|
|
111
|
-
md: "2vh",
|
|
112
|
-
lg: "3vh",
|
|
113
|
-
xl: "4vh",
|
|
114
|
-
xxl: "5vh"
|
|
115
|
-
},
|
|
116
|
-
components: {
|
|
117
|
-
Progress: {
|
|
118
|
-
styles: {
|
|
119
|
-
label: {
|
|
120
|
-
fontFamily: "Akrobat Bold",
|
|
121
|
-
letterSpacing: "0.05em",
|
|
122
|
-
textTransform: "uppercase"
|
|
123
|
-
},
|
|
124
|
-
root: {
|
|
125
|
-
backgroundColor: "rgba(77, 77, 77, 0.4)"
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
Textarea: {
|
|
130
|
-
styles: {
|
|
131
|
-
label,
|
|
132
|
-
error
|
|
133
|
-
}
|
|
134
|
-
},
|
|
135
|
-
Button: {
|
|
136
|
-
styles: {
|
|
137
|
-
root: {
|
|
138
|
-
fontSize: "var(--mantine-font-size-xs)"
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
Select: {
|
|
143
|
-
styles: {
|
|
144
|
-
label,
|
|
145
|
-
input: {
|
|
146
|
-
padding: "var(--mantine-spacing-sm)"
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
Pill: {
|
|
151
|
-
styles: (theme2) => ({
|
|
152
|
-
root: {
|
|
153
|
-
display: "inline-flex",
|
|
154
|
-
alignItems: "center",
|
|
155
|
-
justifyContent: "space-between",
|
|
156
|
-
backgroundColor: "rgba(76, 76, 76, 0.3)",
|
|
157
|
-
height: "fit-content",
|
|
158
|
-
textTransform: "uppercase",
|
|
159
|
-
letterSpacing: "0.05em",
|
|
160
|
-
fontFamily: "Akrobat Bold",
|
|
161
|
-
fontSize: theme2.fontSizes.xs,
|
|
162
|
-
borderRadius: theme2.defaultRadius,
|
|
163
|
-
padding: `${theme2.spacing.xs} ${theme2.spacing.sm}`
|
|
164
|
-
}
|
|
165
|
-
})
|
|
166
|
-
},
|
|
167
|
-
Input: {
|
|
168
|
-
styles: {
|
|
169
|
-
label,
|
|
170
|
-
error,
|
|
171
|
-
input: {
|
|
172
|
-
padding: "var(--mantine-spacing-sm)",
|
|
173
|
-
backgroundColor: "rgba(76, 76, 76, 0.3)"
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
|
-
ColorInput: {
|
|
178
|
-
styles: {
|
|
179
|
-
label,
|
|
180
|
-
input: {
|
|
181
|
-
padding: "var(--mantine-spacing-sm)"
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
TextInput: {
|
|
186
|
-
styles: {
|
|
187
|
-
label,
|
|
188
|
-
wrapper: {},
|
|
189
|
-
section: {
|
|
190
|
-
marginRight: "0.2vh"
|
|
191
|
-
},
|
|
192
|
-
input: {
|
|
193
|
-
padding: "var(--mantine-spacing-sm)"
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
NumberInput: {
|
|
198
|
-
styles: {
|
|
199
|
-
label,
|
|
200
|
-
input: {
|
|
201
|
-
padding: "var(--mantine-spacing-sm)"
|
|
202
|
-
},
|
|
203
|
-
section: {
|
|
204
|
-
pointerEvents: "all"
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
},
|
|
209
|
-
colors: {
|
|
210
|
-
dirk: [
|
|
211
|
-
"#ffffff",
|
|
212
|
-
"#f3fce9",
|
|
213
|
-
"#dbf5bd",
|
|
214
|
-
"#c3ee91",
|
|
215
|
-
"#ace765",
|
|
216
|
-
"#94e039",
|
|
217
|
-
"#7ac61f",
|
|
218
|
-
"#5f9a18",
|
|
219
|
-
"#29420a",
|
|
220
|
-
"#446e11"
|
|
221
|
-
]
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
var theme_default = theme;
|
|
225
|
-
fontawesomeSvgCore.library.add(freeSolidSvgIcons.fas, freeRegularSvgIcons.far, freeBrandsSvgIcons.fab);
|
|
226
|
-
var useSettings = zustand.create((set) => ({
|
|
227
|
-
game: "fivem",
|
|
228
|
-
primaryColor: "dirk",
|
|
229
|
-
primaryShade: 9,
|
|
230
|
-
itemImgPath: "https://assets.dirkcfx.com/items/",
|
|
231
|
-
customTheme: {}
|
|
232
|
-
}));
|
|
233
|
-
registerInitialFetch("GET_SETTINGS", void 0, {
|
|
234
|
-
game: "fivem",
|
|
235
|
-
primaryColor: "dirk",
|
|
236
|
-
primaryShade: 9,
|
|
237
|
-
itemImgPath: "https://assets.dirkcfx.com/items/",
|
|
238
|
-
customTheme: {}
|
|
239
|
-
}).then((data) => {
|
|
240
|
-
useSettings.setState({
|
|
241
|
-
...data
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
function DirkProvider(props) {
|
|
245
|
-
const primaryColor = useSettings((data) => data.primaryColor);
|
|
246
|
-
const primaryShade = useSettings((data) => data.primaryShade);
|
|
247
|
-
const customTheme = useSettings((data) => data.customTheme);
|
|
248
|
-
const game = useSettings((data) => data.game);
|
|
249
|
-
const mergedTheme = react.useMemo(() => ({
|
|
250
|
-
...theme_default,
|
|
251
|
-
primaryColor,
|
|
252
|
-
primaryShade,
|
|
253
|
-
colors: {
|
|
254
|
-
...theme_default.colors,
|
|
255
|
-
...customTheme,
|
|
256
|
-
// Custom theme colors will override/extend base colors
|
|
257
|
-
...props.themeOverride?.colors
|
|
258
|
-
// Props theme colors will override/extend previous colors
|
|
259
|
-
},
|
|
260
|
-
...props.themeOverride
|
|
261
|
-
// Props theme will override/extend the entire theme
|
|
262
|
-
}), [primaryColor, primaryShade, customTheme, props.themeOverride]);
|
|
263
|
-
console.log(mergedTheme);
|
|
264
|
-
react.useEffect(() => {
|
|
265
|
-
document.fonts.ready.then(() => {
|
|
266
|
-
document.body.style.fontFamily = game === "rdr3" ? '"Red Dead", sans-serif' : game === "fivem" ? '"Akrobat Regular", sans-serif' : "sans-serif";
|
|
267
|
-
});
|
|
268
|
-
}, [game]);
|
|
269
|
-
react.useEffect(() => {
|
|
270
|
-
fetchNui("NUI_READY");
|
|
271
|
-
}, []);
|
|
272
|
-
useAutoFetcher();
|
|
273
|
-
return /* @__PURE__ */ jsxRuntime.jsx(core.MantineProvider, { theme: mergedTheme, defaultColorScheme: "dark", children: /* @__PURE__ */ jsxRuntime.jsx(Wrapper, { children: props.children }) });
|
|
274
|
-
}
|
|
275
|
-
function Wrapper({ children }) {
|
|
276
|
-
const game = useSettings((data) => data.game);
|
|
277
|
-
if (!isEnvBrowser()) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
|
|
278
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
279
|
-
core.BackgroundImage,
|
|
280
|
-
{
|
|
281
|
-
w: "100vw",
|
|
282
|
-
h: "100vh",
|
|
283
|
-
style: { overflow: "hidden", backgroundColor: "transparent" },
|
|
284
|
-
src: game === "fivem" ? "https://i.ytimg.com/vi/TOxuNbXrO28/maxresdefault.jpg" : "https://raw.githubusercontent.com/Jump-On-Studios/RedM-jo_libs/refs/heads/main/source-repositories/Menu/public/assets/images/background_dev.jpg",
|
|
285
|
-
children
|
|
286
|
-
}
|
|
287
|
-
);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
exports.DirkProvider = DirkProvider;
|
|
291
|
-
exports.useSettings = useSettings;
|
|
292
|
-
//# sourceMappingURL=index.cjs.map
|
|
293
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/misc.ts","../../src/utils/fetchNui.ts","../../src/theme.ts","../../src/providers/DirkProvider.tsx"],"names":["useEffect","createTheme","theme","library","fas","far","fab","create","useMemo","jsx","MantineProvider","BackgroundImage"],"mappings":"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","file":"index.cjs","sourcesContent":["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 { 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"]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import * as zustand from 'zustand';
|
|
3
|
-
import { MantineThemeOverride } from '@mantine/core';
|
|
4
|
-
|
|
5
|
-
type DirkProviderProps = {
|
|
6
|
-
fakeBackground?: boolean;
|
|
7
|
-
children: React.ReactNode;
|
|
8
|
-
themeOverride?: MantineThemeOverride;
|
|
9
|
-
};
|
|
10
|
-
type SettingsProps = {
|
|
11
|
-
game: 'rdr3' | 'fivem';
|
|
12
|
-
primaryColor: string;
|
|
13
|
-
primaryShade: number;
|
|
14
|
-
itemImgPath: string;
|
|
15
|
-
customTheme: Record<string, string[]>;
|
|
16
|
-
};
|
|
17
|
-
declare const useSettings: zustand.UseBoundStore<zustand.StoreApi<SettingsProps>>;
|
|
18
|
-
declare function DirkProvider(props: DirkProviderProps): react_jsx_runtime.JSX.Element;
|
|
19
|
-
|
|
20
|
-
export { DirkProvider, type DirkProviderProps, useSettings };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import * as zustand from 'zustand';
|
|
3
|
-
import { MantineThemeOverride } from '@mantine/core';
|
|
4
|
-
|
|
5
|
-
type DirkProviderProps = {
|
|
6
|
-
fakeBackground?: boolean;
|
|
7
|
-
children: React.ReactNode;
|
|
8
|
-
themeOverride?: MantineThemeOverride;
|
|
9
|
-
};
|
|
10
|
-
type SettingsProps = {
|
|
11
|
-
game: 'rdr3' | 'fivem';
|
|
12
|
-
primaryColor: string;
|
|
13
|
-
primaryShade: number;
|
|
14
|
-
itemImgPath: string;
|
|
15
|
-
customTheme: Record<string, string[]>;
|
|
16
|
-
};
|
|
17
|
-
declare const useSettings: zustand.UseBoundStore<zustand.StoreApi<SettingsProps>>;
|
|
18
|
-
declare function DirkProvider(props: DirkProviderProps): react_jsx_runtime.JSX.Element;
|
|
19
|
-
|
|
20
|
-
export { DirkProvider, type DirkProviderProps, useSettings };
|
package/dist/providers/index.js
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import '@mantine/core/styles.css';
|
|
2
|
-
import '@mantine/notifications/styles.css';
|
|
3
|
-
import './styles/notify.css';
|
|
4
|
-
import './styles/fonts.css';
|
|
5
|
-
import './styles/scrollBar.css';
|
|
6
|
-
import './styles/tornEdge.css';
|
|
7
|
-
import { library } from '@fortawesome/fontawesome-svg-core';
|
|
8
|
-
import { fab } from '@fortawesome/free-brands-svg-icons';
|
|
9
|
-
import { far } from '@fortawesome/free-regular-svg-icons';
|
|
10
|
-
import { fas } from '@fortawesome/free-solid-svg-icons';
|
|
11
|
-
import { createTheme, MantineProvider, BackgroundImage } from '@mantine/core';
|
|
12
|
-
import { useMemo, useEffect } from 'react';
|
|
13
|
-
import { create } from 'zustand';
|
|
14
|
-
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
15
|
-
|
|
16
|
-
// src/providers/DirkProvider.tsx
|
|
17
|
-
|
|
18
|
-
// src/utils/misc.ts
|
|
19
|
-
var isEnvBrowser = () => !window.invokeNative;
|
|
20
|
-
|
|
21
|
-
// src/utils/fetchNui.ts
|
|
22
|
-
async function fetchNui(eventName, data, mockData) {
|
|
23
|
-
const options = {
|
|
24
|
-
method: "post",
|
|
25
|
-
headers: {
|
|
26
|
-
"Content-Type": "application/json; charset=UTF-8"
|
|
27
|
-
},
|
|
28
|
-
body: JSON.stringify(data)
|
|
29
|
-
};
|
|
30
|
-
if (isEnvBrowser() && mockData) return mockData;
|
|
31
|
-
if (isEnvBrowser() && mockData === void 0) {
|
|
32
|
-
console.warn(
|
|
33
|
-
`[fetchNui] Called fetchNui for event "${eventName}" in browser environment without mockData. Returning empty object.`
|
|
34
|
-
);
|
|
35
|
-
return {};
|
|
36
|
-
}
|
|
37
|
-
const resourceName = window.GetParentResourceName ? window.GetParentResourceName() : "nui-frame-app";
|
|
38
|
-
const resp = await fetch(`https://${resourceName}/${eventName}`, options);
|
|
39
|
-
return await resp.json();
|
|
40
|
-
}
|
|
41
|
-
var initialFetches = {};
|
|
42
|
-
async function registerInitialFetch(eventName, data, mockData) {
|
|
43
|
-
const fetcher = () => fetchNui(eventName, data, mockData);
|
|
44
|
-
initialFetches[eventName] = fetcher;
|
|
45
|
-
return fetcher();
|
|
46
|
-
}
|
|
47
|
-
async function runFetches() {
|
|
48
|
-
return Promise.all(
|
|
49
|
-
Object.entries(initialFetches).map(async ([eventName, fetcher]) => {
|
|
50
|
-
const data = await fetcher();
|
|
51
|
-
return { eventName, data };
|
|
52
|
-
})
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
var useAutoFetcher = () => {
|
|
56
|
-
useEffect(() => {
|
|
57
|
-
if (isEnvBrowser()) return;
|
|
58
|
-
const run = async () => {
|
|
59
|
-
await runFetches();
|
|
60
|
-
};
|
|
61
|
-
run();
|
|
62
|
-
}, []);
|
|
63
|
-
};
|
|
64
|
-
var label = {
|
|
65
|
-
fontSize: "var(--mantine-font-size-xs)",
|
|
66
|
-
fontFamily: "Akrobat Bold",
|
|
67
|
-
letterSpacing: "0.05em",
|
|
68
|
-
textTransform: "uppercase"
|
|
69
|
-
};
|
|
70
|
-
var error = {
|
|
71
|
-
fontSize: "var(--mantine-font-size-xs)",
|
|
72
|
-
fontFamily: "Akrobat Regular"
|
|
73
|
-
};
|
|
74
|
-
var theme = createTheme({
|
|
75
|
-
primaryColor: "dirk",
|
|
76
|
-
primaryShade: 9,
|
|
77
|
-
defaultRadius: "xs",
|
|
78
|
-
fontFamily: "Akrobat Regular, sans-serif",
|
|
79
|
-
radius: {
|
|
80
|
-
xxs: "0.3vh",
|
|
81
|
-
xs: "0.5vh",
|
|
82
|
-
sm: "0.75vh",
|
|
83
|
-
md: "1vh",
|
|
84
|
-
lg: "1.5vh",
|
|
85
|
-
xl: "2vh",
|
|
86
|
-
xxl: "3vh"
|
|
87
|
-
},
|
|
88
|
-
fontSizes: {
|
|
89
|
-
xxs: "1.2vh",
|
|
90
|
-
xs: "1.5vh",
|
|
91
|
-
sm: "1.8vh",
|
|
92
|
-
md: "2.2vh",
|
|
93
|
-
lg: "2.8vh",
|
|
94
|
-
xl: "3.3vh",
|
|
95
|
-
xxl: "3.8vh"
|
|
96
|
-
},
|
|
97
|
-
lineHeights: {
|
|
98
|
-
xxs: "1.4vh",
|
|
99
|
-
xs: "1.8vh",
|
|
100
|
-
sm: "2.2vh",
|
|
101
|
-
md: "2.8vh",
|
|
102
|
-
lg: "3.3vh",
|
|
103
|
-
xl: "3.8vh"
|
|
104
|
-
},
|
|
105
|
-
spacing: {
|
|
106
|
-
xxs: "0.5vh",
|
|
107
|
-
xs: "0.75vh",
|
|
108
|
-
sm: "1.5vh",
|
|
109
|
-
md: "2vh",
|
|
110
|
-
lg: "3vh",
|
|
111
|
-
xl: "4vh",
|
|
112
|
-
xxl: "5vh"
|
|
113
|
-
},
|
|
114
|
-
components: {
|
|
115
|
-
Progress: {
|
|
116
|
-
styles: {
|
|
117
|
-
label: {
|
|
118
|
-
fontFamily: "Akrobat Bold",
|
|
119
|
-
letterSpacing: "0.05em",
|
|
120
|
-
textTransform: "uppercase"
|
|
121
|
-
},
|
|
122
|
-
root: {
|
|
123
|
-
backgroundColor: "rgba(77, 77, 77, 0.4)"
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
Textarea: {
|
|
128
|
-
styles: {
|
|
129
|
-
label,
|
|
130
|
-
error
|
|
131
|
-
}
|
|
132
|
-
},
|
|
133
|
-
Button: {
|
|
134
|
-
styles: {
|
|
135
|
-
root: {
|
|
136
|
-
fontSize: "var(--mantine-font-size-xs)"
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
Select: {
|
|
141
|
-
styles: {
|
|
142
|
-
label,
|
|
143
|
-
input: {
|
|
144
|
-
padding: "var(--mantine-spacing-sm)"
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
Pill: {
|
|
149
|
-
styles: (theme2) => ({
|
|
150
|
-
root: {
|
|
151
|
-
display: "inline-flex",
|
|
152
|
-
alignItems: "center",
|
|
153
|
-
justifyContent: "space-between",
|
|
154
|
-
backgroundColor: "rgba(76, 76, 76, 0.3)",
|
|
155
|
-
height: "fit-content",
|
|
156
|
-
textTransform: "uppercase",
|
|
157
|
-
letterSpacing: "0.05em",
|
|
158
|
-
fontFamily: "Akrobat Bold",
|
|
159
|
-
fontSize: theme2.fontSizes.xs,
|
|
160
|
-
borderRadius: theme2.defaultRadius,
|
|
161
|
-
padding: `${theme2.spacing.xs} ${theme2.spacing.sm}`
|
|
162
|
-
}
|
|
163
|
-
})
|
|
164
|
-
},
|
|
165
|
-
Input: {
|
|
166
|
-
styles: {
|
|
167
|
-
label,
|
|
168
|
-
error,
|
|
169
|
-
input: {
|
|
170
|
-
padding: "var(--mantine-spacing-sm)",
|
|
171
|
-
backgroundColor: "rgba(76, 76, 76, 0.3)"
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
ColorInput: {
|
|
176
|
-
styles: {
|
|
177
|
-
label,
|
|
178
|
-
input: {
|
|
179
|
-
padding: "var(--mantine-spacing-sm)"
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
TextInput: {
|
|
184
|
-
styles: {
|
|
185
|
-
label,
|
|
186
|
-
wrapper: {},
|
|
187
|
-
section: {
|
|
188
|
-
marginRight: "0.2vh"
|
|
189
|
-
},
|
|
190
|
-
input: {
|
|
191
|
-
padding: "var(--mantine-spacing-sm)"
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
},
|
|
195
|
-
NumberInput: {
|
|
196
|
-
styles: {
|
|
197
|
-
label,
|
|
198
|
-
input: {
|
|
199
|
-
padding: "var(--mantine-spacing-sm)"
|
|
200
|
-
},
|
|
201
|
-
section: {
|
|
202
|
-
pointerEvents: "all"
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
},
|
|
207
|
-
colors: {
|
|
208
|
-
dirk: [
|
|
209
|
-
"#ffffff",
|
|
210
|
-
"#f3fce9",
|
|
211
|
-
"#dbf5bd",
|
|
212
|
-
"#c3ee91",
|
|
213
|
-
"#ace765",
|
|
214
|
-
"#94e039",
|
|
215
|
-
"#7ac61f",
|
|
216
|
-
"#5f9a18",
|
|
217
|
-
"#29420a",
|
|
218
|
-
"#446e11"
|
|
219
|
-
]
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
var theme_default = theme;
|
|
223
|
-
library.add(fas, far, fab);
|
|
224
|
-
var useSettings = create((set) => ({
|
|
225
|
-
game: "fivem",
|
|
226
|
-
primaryColor: "dirk",
|
|
227
|
-
primaryShade: 9,
|
|
228
|
-
itemImgPath: "https://assets.dirkcfx.com/items/",
|
|
229
|
-
customTheme: {}
|
|
230
|
-
}));
|
|
231
|
-
registerInitialFetch("GET_SETTINGS", void 0, {
|
|
232
|
-
game: "fivem",
|
|
233
|
-
primaryColor: "dirk",
|
|
234
|
-
primaryShade: 9,
|
|
235
|
-
itemImgPath: "https://assets.dirkcfx.com/items/",
|
|
236
|
-
customTheme: {}
|
|
237
|
-
}).then((data) => {
|
|
238
|
-
useSettings.setState({
|
|
239
|
-
...data
|
|
240
|
-
});
|
|
241
|
-
});
|
|
242
|
-
function DirkProvider(props) {
|
|
243
|
-
const primaryColor = useSettings((data) => data.primaryColor);
|
|
244
|
-
const primaryShade = useSettings((data) => data.primaryShade);
|
|
245
|
-
const customTheme = useSettings((data) => data.customTheme);
|
|
246
|
-
const game = useSettings((data) => data.game);
|
|
247
|
-
const mergedTheme = useMemo(() => ({
|
|
248
|
-
...theme_default,
|
|
249
|
-
primaryColor,
|
|
250
|
-
primaryShade,
|
|
251
|
-
colors: {
|
|
252
|
-
...theme_default.colors,
|
|
253
|
-
...customTheme,
|
|
254
|
-
// Custom theme colors will override/extend base colors
|
|
255
|
-
...props.themeOverride?.colors
|
|
256
|
-
// Props theme colors will override/extend previous colors
|
|
257
|
-
},
|
|
258
|
-
...props.themeOverride
|
|
259
|
-
// Props theme will override/extend the entire theme
|
|
260
|
-
}), [primaryColor, primaryShade, customTheme, props.themeOverride]);
|
|
261
|
-
console.log(mergedTheme);
|
|
262
|
-
useEffect(() => {
|
|
263
|
-
document.fonts.ready.then(() => {
|
|
264
|
-
document.body.style.fontFamily = game === "rdr3" ? '"Red Dead", sans-serif' : game === "fivem" ? '"Akrobat Regular", sans-serif' : "sans-serif";
|
|
265
|
-
});
|
|
266
|
-
}, [game]);
|
|
267
|
-
useEffect(() => {
|
|
268
|
-
fetchNui("NUI_READY");
|
|
269
|
-
}, []);
|
|
270
|
-
useAutoFetcher();
|
|
271
|
-
return /* @__PURE__ */ jsx(MantineProvider, { theme: mergedTheme, defaultColorScheme: "dark", children: /* @__PURE__ */ jsx(Wrapper, { children: props.children }) });
|
|
272
|
-
}
|
|
273
|
-
function Wrapper({ children }) {
|
|
274
|
-
const game = useSettings((data) => data.game);
|
|
275
|
-
if (!isEnvBrowser()) return /* @__PURE__ */ jsx(Fragment, { children });
|
|
276
|
-
return /* @__PURE__ */ jsx(
|
|
277
|
-
BackgroundImage,
|
|
278
|
-
{
|
|
279
|
-
w: "100vw",
|
|
280
|
-
h: "100vh",
|
|
281
|
-
style: { overflow: "hidden", backgroundColor: "transparent" },
|
|
282
|
-
src: game === "fivem" ? "https://i.ytimg.com/vi/TOxuNbXrO28/maxresdefault.jpg" : "https://raw.githubusercontent.com/Jump-On-Studios/RedM-jo_libs/refs/heads/main/source-repositories/Menu/public/assets/images/background_dev.jpg",
|
|
283
|
-
children
|
|
284
|
-
}
|
|
285
|
-
);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
export { DirkProvider, useSettings };
|
|
289
|
-
//# sourceMappingURL=index.js.map
|
|
290
|
-
//# sourceMappingURL=index.js.map
|