├── .editorconfig
├── .gitattributes
├── .github
├── CODE_OF_CONDUCT.md
└── workflows
│ └── lint.yml
├── .gitignore
├── .vscode
├── extensions.json
└── settings.json
├── README.md
├── client
└── main.lua
├── config.lua
├── fxmanifest.lua
├── server
└── main.lua
├── stream
├── minimap.gfx
├── minimap.ytd
└── squaremap.ytd
└── web
├── .eslintrc.cjs
├── .gitignore
├── build
├── assets
│ ├── digital-7-Cnm38d_8.ttf
│ ├── index-BrOJKuWn.js
│ └── index-DVSXO8ph.css
└── index.html
├── index.html
├── package-lock.json
├── package.json
├── pnpm-lock.yaml
├── src
├── assets
│ └── fonts
│ │ └── digital-7.ttf
├── components
│ ├── HUDSettings.tsx
│ ├── Player.tsx
│ └── Vehicle.tsx
├── hooks
│ ├── useNuiEvent.ts
│ └── useStyles.ts
├── index.css
├── main.tsx
├── providers
│ └── VisibilityProvider.tsx
├── utils
│ ├── debugData.ts
│ ├── fetchNui.ts
│ └── misc.ts
└── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.ts
└── yarn.lock
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | end_of_line = lf
5 | insert_final_newline = false
6 | indent_style = space
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 |
10 | [*.lua]
11 | indent_size = 4
12 |
13 | [*.{html,css,json,ts,tsx}]
14 | indent_size = 2
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ## Unity ##
2 |
3 | *.cs diff=csharp text
4 | *.cginc text
5 | *.shader text
6 |
7 | *.mat merge=unityyamlmerge eol=lf
8 | *.anim merge=unityyamlmerge eol=lf
9 | *.unity merge=unityyamlmerge eol=lf
10 | *.prefab merge=unityyamlmerge eol=lf
11 | *.physicsMaterial2D merge=unityyamlmerge eol=lf
12 | *.physicMaterial merge=unityyamlmerge eol=lf
13 | *.asset merge=unityyamlmerge eol=lf
14 | *.meta merge=unityyamlmerge eol=lf
15 | *.controller merge=unityyamlmerge eol=lf
16 |
17 |
18 | ## git-lfs ##
19 |
20 | #Image
21 | *.jpg filter=lfs diff=lfs merge=lfs -text
22 | *.jpeg filter=lfs diff=lfs merge=lfs -text
23 | *.png filter=lfs diff=lfs merge=lfs -text
24 | *.gif filter=lfs diff=lfs merge=lfs -text
25 | *.psd filter=lfs diff=lfs merge=lfs -text
26 | *.ai filter=lfs diff=lfs merge=lfs -text
27 | *.tif filter=lfs diff=lfs merge=lfs -text
28 |
29 | #Audio
30 | *.mp3 filter=lfs diff=lfs merge=lfs -text
31 | *.wav filter=lfs diff=lfs merge=lfs -text
32 | *.ogg filter=lfs diff=lfs merge=lfs -text
33 |
34 | #Video
35 | *.mp4 filter=lfs diff=lfs merge=lfs -text
36 | *.mov filter=lfs diff=lfs merge=lfs -text
37 |
38 | #3D Object
39 | *.FBX filter=lfs diff=lfs merge=lfs -text
40 | *.fbx filter=lfs diff=lfs merge=lfs -text
41 | *.blend filter=lfs diff=lfs merge=lfs -text
42 | *.obj filter=lfs diff=lfs merge=lfs -text
43 |
44 | #ETC
45 | *.a filter=lfs diff=lfs merge=lfs -text
46 | *.exr filter=lfs diff=lfs merge=lfs -text
47 | *.tga filter=lfs diff=lfs merge=lfs -text
48 | *.pdf filter=lfs diff=lfs merge=lfs -text
49 | *.zip filter=lfs diff=lfs merge=lfs -text
50 | *.dll filter=lfs diff=lfs merge=lfs -text
51 | *.unitypackage filter=lfs diff=lfs merge=lfs -text
52 | *.aif filter=lfs diff=lfs merge=lfs -text
53 | *.ttf filter=lfs diff=lfs merge=lfs -text
54 | *.rns filter=lfs diff=lfs merge=lfs -text
55 | *.reason filter=lfs diff=lfs merge=lfs -text
56 | *.lxo filter=lfs diff=lfs merge=lfs -text
57 | *.bc filter=lfs diff=lfs merge=lfs -text
--------------------------------------------------------------------------------
/.github/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, gender identity and expression, level of experience,
9 | education, socio-economic status, nationality, personal appearance, race,
10 | religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the creator of the resource. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 |
--------------------------------------------------------------------------------
/.github/workflows/lint.yml:
--------------------------------------------------------------------------------
1 | name: Lint
2 | on: [push, pull_request_target]
3 | jobs:
4 | lint:
5 | name: Lint Resource
6 | runs-on: ubuntu-latest
7 | steps:
8 | - uses: actions/checkout@v4
9 | with:
10 | ref: ${{ github.event.pull_request.head.sha }}
11 | - name: Lint
12 | uses: iLLeniumStudios/fivem-lua-lint-action@v2
13 | with:
14 | capture: "junit.xml"
15 | args: "-t --formatter JUnit"
16 | extra_libs: ox_lib+mysql+qblocales+qbox+qbox_playerdata+qbox_lib
17 | - name: Generate Lint Report
18 | if: always()
19 | uses: mikepenz/action-junit-report@v4
20 | with:
21 | report_paths: "**/junit.xml"
22 | check_name: Linting Report
23 | fail_on_failure: false
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "sumneko.lua",
4 | "overextended.cfxlua-vscode",
5 | "EditorConfig.EditorConfig",
6 | ]
7 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Lua.runtime.nonstandardSymbol": ["/**/", "`", "+=", "-=", "*=", "/="],
3 | "Lua.runtime.version": "Lua 5.4",
4 | "Lua.diagnostics.globals": [
5 | "lib",
6 | "cache",
7 | "locale",
8 | "MySQL",
9 | ]
10 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # TS SCRIPTS - HUD
3 | ## Features
4 |
5 | - Settings Menu
6 | - Unique Design
7 | - Multiple Hud Types
8 | - Mantine V7
9 | - QBOX / QBCORE (Maybe some changes are needed) / ESX SUPPORT (SOON)
10 |
11 | ## FAQ
12 |
13 | ### 1. How do I make this support other resolutions?
14 | To ensure the UI displays correctly across different screen resolutions, force the UI resolution in FiveM settings to 1920x1080.
15 |
16 | ## Screenshots
17 |
18 | 
19 | 
20 |
21 | ## License
22 |
23 | [](https://www.gnu.org/licenses/gpl-3.0.html)
24 |
25 |
26 | ## Installation
27 |
28 | You have two options for installation:
29 |
30 | 1. **Use the Pre-Built Version:**
31 | The pre-built version is ready to use and requires no additional setup—just plug and play!
32 |
33 | 2. **Build from Source:**
34 | If you prefer to build from the source code, follow these steps:
35 |
36 | ```bash
37 | cd web
38 | pnpm i
39 | pnpm build
40 | ```
41 | After, ensure that the resource is correctly referenced in the server.cfg file.
42 | ## Support
43 |
44 | [Join our Discord community](https://discord.gg/UBnX997H6A)
45 |
46 |
47 | ## Contributing
48 |
49 | We welcome and encourage contributions from everyone!
50 |
51 | If you have an idea for improvement, want to fix a bug, or add new features, feel free to make the changes and submit a Pull Request (PR). The TS Scripts team will review your PR as soon as possible.
52 |
53 | Your contributions help us improve and grow—thank you for your support!
54 | ## Feedback
55 |
56 | If you have any feedback, please reach out to me in our [Discord community](https://discord.gg/UBnX997H6A)
57 |
58 |
59 | ## Authors
60 |
61 | - [@Thomasdev18](https://github.com/Thomasdev18)
62 |
63 |
64 | ## Credits
65 | A big thank you to everyone who has contributed, reached out, and offered to help—I truly appreciate your support!
66 |
67 | Special thanks to **MT-Scripts** for providing the foundation of the backend, which is based on their HUD.
68 |
69 | - [@MT-Scripts](https://github.com/MT-Scripts)
70 |
71 |
--------------------------------------------------------------------------------
/client/main.lua:
--------------------------------------------------------------------------------
1 | -- Last Modified: 25/08/2024
2 |
3 | -- Global Constants and Configuration
4 | local Config = lib.load('config')
5 | local PlayerVoiceMethod, showingVehicleHUD, showingPlayerHUD, showingCompass = false, false, false, false
6 | local isSeatbeltOn, isHarnessOn, nitroActive, nos, stress = false, false, false, false, 0
7 | local speedMultiplier = Config.speedType == "MPH" and 2.23694 or 3.6
8 | local camHeight = 0.0
9 | local CAM_HEIGHT = 0.2 -- Screen height percentage for cinematic bars
10 |
11 | local currentColors = {
12 | voiceInactive = '#6c757d', voiceActive = '#ffd43b', voiceRadio = '#1c7ed6',
13 | health = '#51cf66', armor = '#74c0fc', oxygen = '#339af0',
14 | hunger = '#fcc419', thirst = '#22b8cf', stress = '#ff6b6b',
15 | }
16 |
17 | -- Utility Functions
18 | local function ShowNUI(action, shouldShow, focus)
19 | SetNuiFocus(focus, focus)
20 | SendNUIMessage({ action = action, data = shouldShow })
21 | end
22 |
23 | local function SendNUI(action, data)
24 | SendNUIMessage({ action = action, data = data })
25 | end
26 |
27 | local function settingsMenu()
28 | ShowNUI('HUDSettings', true, true)
29 | end
30 |
31 | local function hideSettingsMenu()
32 | ShowNUI('HUDSettings', false, false)
33 | SetNuiFocus(false, false)
34 | end
35 |
36 | local function getPlayerVoiceMethod(player)
37 | if PlayerVoiceMethod ~= "radio" then
38 | PlayerVoiceMethod = MumbleIsPlayerTalking(player) and "voice" or false
39 | end
40 | return PlayerVoiceMethod
41 | end
42 |
43 | local function getHeadingText(heading)
44 | if heading < 30 or heading >= 330 then
45 | return 'N'
46 | elseif heading < 60 then
47 | return 'NW'
48 | elseif heading < 120 then
49 | return 'W'
50 | elseif heading < 160 then
51 | return 'SW'
52 | elseif heading < 210 then
53 | return 'S'
54 | elseif heading < 240 then
55 | return 'SE'
56 | elseif heading < 310 then
57 | return 'E'
58 | else
59 | return 'NE'
60 | end
61 | end
62 |
63 | local lastCrossroadUpdate = 0
64 | local lastCrossroadCheck = {}
65 |
66 | local function getCrossroads(vehicle)
67 | local updateTick = GetGameTimer()
68 | if updateTick - lastCrossroadUpdate > 1500 then
69 | local pos = GetEntityCoords(vehicle)
70 | local street1, street2 = GetStreetNameAtCoord(pos.x, pos.y, pos.z)
71 | lastCrossroadUpdate = updateTick
72 | lastCrossroadCheck = { GetStreetNameFromHashKey(street1), GetStreetNameFromHashKey(street2) }
73 | end
74 | return lastCrossroadCheck
75 | end
76 |
77 | local function getFuelLevel(vehicle)
78 | return GetVehicleFuelLevel(vehicle)
79 | end
80 |
81 | local function getSeatbeltStatus()
82 | return isSeatbeltOn
83 | end
84 |
85 | local function getBlurIntensity(stressLevel)
86 | for _, v in pairs(Config.stress.blurIntensity) do
87 | if stressLevel >= v.min and stressLevel <= v.max then
88 | return v.intensity
89 | end
90 | end
91 | return 1500
92 | end
93 |
94 | local function getEffectInterval(stressLevel)
95 | for _, v in pairs(Config.stress.effectInterval) do
96 | if stressLevel >= v.min and stressLevel <= v.max then
97 | return v.timeout
98 | end
99 | end
100 | return 60000
101 | end
102 |
103 | local function isWhitelistedWeaponStress(weapon)
104 | if weapon then
105 | for _, v in pairs(Config.stress.whitelistedWeapons) do
106 | if weapon == v then
107 | return true
108 | end
109 | end
110 | end
111 | return false
112 | end
113 |
114 | local function startWeaponStressThread(weapon)
115 | if isWhitelistedWeaponStress(weapon) then return end
116 | hasWeapon = true
117 |
118 | CreateThread(function()
119 | while hasWeapon do
120 | if IsPedShooting(cache.ped) then
121 | if math.random() <= Config.stress.chance then
122 | TriggerServerEvent('hud:server:GainStress', math.random(1, 5))
123 | end
124 | end
125 | Wait(0)
126 | end
127 | end)
128 | end
129 |
130 | AddEventHandler('ox_inventory:currentWeapon', function(currentWeapon)
131 | hasWeapon = false
132 | Wait(0)
133 |
134 | if not currentWeapon then return end
135 |
136 | startWeaponStressThread(currentWeapon.hash)
137 | end)
138 |
139 | local function saveHUDSettings()
140 | SetResourceKvp('playerHUDColors', json.encode(currentColors))
141 | SetResourceKvp('hudType', hudType)
142 | SetResourceKvp('hudPosition', position)
143 | end
144 |
145 | -- Example on how to save when settings are updated
146 | RegisterNUICallback('updateHudType', function(data, cb)
147 | hudType = data.hudType
148 | saveHUDSettings() -- Save the updated HUD type
149 | cb({ status = 'success', message = 'HUD type updated to ' .. data.hudType })
150 | end)
151 |
152 | RegisterNUICallback('updateHudPosition', function(data, cb)
153 | position = data.hudPosition
154 | saveHUDSettings()
155 | cb({ status = 'success', message = 'HUD position updated to ' .. data.hudPosition })
156 | end)
157 |
158 | RegisterNUICallback('updateColors', function(data, cb)
159 | currentColors = data.colors
160 | saveHUDSettings()
161 | cb({ status = 'success', message = 'Colors updated' })
162 | end)
163 |
164 | -- Event Handlers
165 | RegisterNetEvent('ts_hud:client:OpenHudMenu', settingsMenu)
166 |
167 | RegisterNetEvent('ts_hud:client:hideHUD', function()
168 | ShowNUI('setVisiblePlayer', false, false)
169 | local vehicle = GetVehiclePedIsIn(cache.ped, false)
170 | if IsPedInVehicle(cache.ped, vehicle) and GetIsVehicleEngineRunning(vehicle) then
171 | ShowNUI('setVisibleVehicle', false, false)
172 | end
173 | end)
174 |
175 | RegisterNetEvent('ts_hud:client:showHud', function()
176 | ShowNUI('setVisiblePlayer', true, false)
177 | local vehicle = GetVehiclePedIsIn(cache.ped, false)
178 | if IsPedInVehicle(cache.ped, vehicle) and GetIsVehicleEngineRunning(vehicle) then
179 | ShowNUI('setVisibleVehicle', true, false)
180 | end
181 | end)
182 |
183 | RegisterNUICallback('hideHudMenu', function(_, cb)
184 | SetNuiFocus(false, false)
185 | cb('ok')
186 | end)
187 |
188 | local function setupHealthArmour(minimap, barType)
189 | BeginScaleformMovieMethod(minimap, "SETUP_HEALTH_ARMOUR")
190 | ScaleformMovieMethodAddParamInt(barType)
191 | EndScaleformMovieMethod()
192 | end
193 |
194 | local function handleCinematicAnim()
195 | camMoving = true
196 |
197 | setupHealthArmour(camActive and 3 or 0)
198 |
199 | local step = camActive and 0.01 or -0.01
200 | for i = 0, CAM_HEIGHT, step do
201 | camHeight = i
202 | Wait(10)
203 | end
204 |
205 | camMoving = false
206 | end
207 |
208 | if GetResourceState('qbx_nitro') == 'started' then
209 | qbx.entityStateHandler('nitroFlames', function(veh, netId, value)
210 | local plate = qbx.string.trim(GetVehicleNumberPlateText(veh))
211 | local cachePlate = qbx.string.trim(GetVehicleNumberPlateText(cache.vehicle))
212 | if plate ~= cachePlate then return end
213 | nitroActive = value
214 | end)
215 |
216 | qbx.entityStateHandler('nitro', function(veh, netId, value)
217 | local plate = qbx.string.trim(GetVehicleNumberPlateText(veh))
218 | local cachePlate = qbx.string.trim(GetVehicleNumberPlateText(cache.vehicle))
219 | if plate ~= cachePlate then return end
220 | nos = value
221 | end)
222 | end
223 |
224 | CreateThread(function()
225 | local wasPauseMenuActive = IsPauseMenuActive()
226 | while true do
227 | if IsPauseMenuActive() then
228 | if not wasPauseMenuActive then
229 | wasPauseMenuActive = true
230 | if camActive then
231 | camActive = false
232 | DisplayRadar(not camActive)
233 | DrawRect(0.0, 0.0, 2.0, camHeight, 0, 0, 0, 0)
234 | end
235 | end
236 | else
237 | if wasPauseMenuActive then
238 | wasPauseMenuActive = false
239 | end
240 | if camActive then
241 | DisplayRadar(not camActive)
242 | for i = 0, 1.0, 1.0 do
243 | DrawRect(0.0, 0.0, 2.0, camHeight, 0, 0, 0, 255)
244 | DrawRect(0.0, i, 2.0, camHeight, 0, 0, 0, 255)
245 | end
246 | end
247 | end
248 | Wait(0)
249 | end
250 | end)
251 |
252 | RegisterNUICallback('toggleCinematicBars', function(data, cb)
253 | camActive = data.enabled
254 | CreateThread(handleCinematicAnim)
255 |
256 | -- Hide the HUD elements when cinematic bars are enabled
257 | TriggerEvent('ts_hud:client:hideHUD')
258 |
259 | -- If cinematic bars are disabled, show the HUD elements again
260 | if not camActive then
261 | TriggerEvent('ts_hud:client:showHud')
262 | end
263 |
264 | -- Close HUD settings
265 | hideSettingsMenu()
266 |
267 | -- Notify the NUI that the operation was successful
268 | cb({ status = 'success', message = 'Cinematic bars ' .. (data.enabled and 'disabled') })
269 | end)
270 |
271 | RegisterNUICallback('getCinematicBarsState', function(_, cb)
272 | cb({ enabled = camActive })
273 | end)
274 |
275 | RegisterNetEvent('hud:client:LoadMap', function()
276 | Wait(50)
277 | local resolutionX, resolutionY = GetActiveScreenResolution()
278 | local minimapOffset = (1920 / 1080 > resolutionX / resolutionY) and ((1920 / 1080 - resolutionX / resolutionY) / 3.6) - 0.008 or 0
279 |
280 | RequestStreamedTextureDict("squaremap", false)
281 | while not HasStreamedTextureDictLoaded("squaremap") do
282 | Wait(150)
283 | end
284 |
285 | SetMinimapClipType(0)
286 | AddReplaceTexture("platform:/textures/graphics", "radarmasksm", "squaremap", "radarmasksm")
287 | AddReplaceTexture("platform:/textures/graphics", "radarmask1g", "squaremap", "radarmasksm")
288 |
289 | SetMinimapComponentPosition("minimap", "L", "B", -0.006 + minimapOffset, -0.040, 0.1638, 0.183)
290 | SetMinimapComponentPosition("minimap_mask", "L", "B", 0.0 + minimapOffset, 0.0, 0.128, 0.20)
291 | SetMinimapComponentPosition('minimap_blur', 'L', 'B', -0.015 + minimapOffset, 0.030, 0.262, 0.300)
292 | SetBlipAlpha(GetNorthRadarBlip(), 0)
293 | SetRadarBigmapEnabled(true, false)
294 | Wait(50)
295 | SetRadarBigmapEnabled(false, false)
296 | SetRadarZoom(1000)
297 | end)
298 |
299 | RegisterNetEvent('seatbelt:client:ToggleSeatbelt', function()
300 | isSeatbeltOn = not isSeatbeltOn
301 | end)
302 |
303 | RegisterNetEvent('hud:client:UpdateNitrous', function(_, nitroLevel, bool)
304 | nos = nitroLevel
305 | nitroActive = bool
306 | end)
307 |
308 | AddStateBagChangeHandler('stress', ('player:%s'):format(cache.serverId), function(_, _, value)
309 | stress = value
310 | end)
311 |
312 | AddEventHandler("pma-voice:radioActive", function(radioTalking)
313 | PlayerVoiceMethod = radioTalking and 'radio' or false
314 | end)
315 |
316 | RegisterNUICallback('updateHudType', function(data, cb)
317 | cb({ status = 'success', message = 'HUD type updated to ' .. data.hudType })
318 | end)
319 |
320 | -- Stress Management
321 | if Config.stress.enableStress then
322 | CreateThread(function()
323 | while true do
324 | if LocalPlayer.state.isLoggedIn and cache.vehicle then
325 | local vehClass = GetVehicleClass(cache.vehicle)
326 | local speed = GetEntitySpeed(cache.vehicle) * speedMultiplier
327 |
328 | if vehClass ~= 13 and vehClass ~= 14 and vehClass ~= 15 and vehClass ~= 16 and vehClass ~= 21 then
329 | local stressSpeed = (vehClass == 8 or not isSeatbeltOn) and Config.stress.minForSpeedingUnbuckled or Config.stress.minForSpeeding
330 | if speed >= stressSpeed then
331 | TriggerServerEvent('hud:server:GainStress', math.random(1, 3))
332 | end
333 | end
334 | end
335 | Wait(10000)
336 | end
337 | end)
338 | end
339 |
340 | CreateThread(function()
341 | while true do
342 | local effectInterval = getEffectInterval(stress)
343 | if stress >= 100 then
344 | local blurIntensity = getBlurIntensity(stress)
345 | local fallRepeat = math.random(2, 4)
346 | local ragdollTimeout = fallRepeat * 1750
347 | TriggerScreenblurFadeIn(1000.0)
348 | Wait(blurIntensity)
349 | TriggerScreenblurFadeOut(1000.0)
350 |
351 | if not IsPedRagdoll(cache.ped) and IsPedOnFoot(cache.ped) and not IsPedSwimming(cache.ped) then
352 | local forwardVector = GetEntityForwardVector(cache.ped)
353 | SetPedToRagdollWithFall(cache.ped, ragdollTimeout, ragdollTimeout, 1, forwardVector.x, forwardVector.y, forwardVector.z, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0)
354 | end
355 |
356 | Wait(1000)
357 | for _ = 1, fallRepeat, 1 do
358 | Wait(750)
359 | DoScreenFadeOut(200)
360 | Wait(1000)
361 | DoScreenFadeIn(200)
362 | TriggerScreenblurFadeIn(1000.0)
363 | Wait(blurIntensity)
364 | TriggerScreenblurFadeOut(1000.0)
365 | end
366 | elseif stress >= Config.stress.minForShaking then
367 | local blurIntensity = getBlurIntensity(stress)
368 | TriggerScreenblurFadeIn(1000.0)
369 | Wait(blurIntensity)
370 | TriggerScreenblurFadeOut(1000.0)
371 | end
372 | Wait(effectInterval)
373 | end
374 | end)
375 |
376 | -- Fuel and Seatbelt Threads
377 | CreateThread(function()
378 | while true do
379 | if LocalPlayer.state.isLoggedIn and cache.vehicle and not IsThisModelABicycle(GetEntityModel(cache.vehicle)) then
380 | if getFuelLevel(cache.vehicle) <= 20 and Config.isLowFuelChecked then
381 | lib.notify({
382 | description = 'Vehicle is low on fuel!',
383 | type = 'error',
384 | })
385 | Wait(60000)
386 | end
387 | end
388 | Wait(10000)
389 | end
390 | end)
391 |
392 | -- Main HUD Thread
393 | CreateThread(function()
394 | -- Load saved colors, HUD type, and position from KVP
395 | local savedColors = GetResourceKvpString('playerHUDColors')
396 | if savedColors then
397 | currentColors = json.decode(savedColors)
398 | end
399 |
400 | local savedHudType = GetResourceKvpString('hudType')
401 | if savedHudType then
402 | hudType = savedHudType
403 | else
404 | hudType = Config.hudSettings.hudType -- Default to config if not set
405 | end
406 |
407 | local savedHudPosition = GetResourceKvpString('hudPosition')
408 | if savedHudPosition then
409 | position = savedHudPosition
410 | else
411 | position = Config.hudSettings.hudPosition -- Default to config if not set
412 | end
413 |
414 | while true do
415 | if not IsPauseMenuActive() and LocalPlayer.state.isLoggedIn then
416 | local stamina = 100 - GetPlayerSprintStaminaRemaining(cache.playerId)
417 | local PlayerData = Config.core.Functions.GetPlayerData()
418 |
419 | if not showingPlayerHUD then
420 | DisplayRadar(false)
421 | ShowNUI('setVisiblePlayer', true, false)
422 | showingPlayerHUD = true
423 | end
424 |
425 | if IsEntityInWater(cache.ped) then
426 | stamina = (GetPlayerUnderwaterTimeRemaining(cache.playerId) * 10) - 300
427 | end
428 |
429 | -- Send the updated HUD data to the NUI (including colors, HUD type, and position)
430 | SendNUI('player', {
431 | health = math.ceil(GetEntityHealth(cache.ped) - 100),
432 | stress = stress,
433 | armor = math.ceil(GetPedArmour(cache.ped)),
434 | thirst = math.ceil(PlayerData.metadata.thirst),
435 | hunger = math.ceil(PlayerData.metadata.hunger),
436 | oxygen = stamina or 0,
437 | voice = LocalPlayer.state.proximity.distance,
438 | talking = getPlayerVoiceMethod(cache.playerId),
439 | colors = currentColors,
440 | hudType = hudType, -- Include HUD type
441 | hudPosition = position -- Include HUD position
442 | })
443 |
444 | if cache.vehicle and GetIsVehicleEngineRunning(cache.vehicle) then
445 | DisplayRadar(true)
446 | if not showingVehicleHUD then
447 | ShowNUI('setVisibleVehicle', true, false)
448 | TriggerEvent('hud:client:LoadMap')
449 | showingVehicleHUD = true
450 | end
451 |
452 | SendNUI('vehicle', {
453 | speed = math.ceil(GetEntitySpeed(cache.vehicle) * speedMultiplier),
454 | gear = GetVehicleCurrentGear(cache.vehicle),
455 | speedType = Config.speedType,
456 | seatbeltOn = getSeatbeltStatus(),
457 | streetName1 = getCrossroads(cache.vehicle)[1],
458 | streetName2 = getCrossroads(cache.vehicle)[2],
459 | heading = getHeadingText(GetEntityHeading(cache.vehicle)),
460 | engineHealth = math.ceil(GetVehicleEngineHealth(cache.vehicle) / 10),
461 | fuel = math.ceil(GetVehicleFuelLevel(cache.vehicle)),
462 | nitrous = nos,
463 | isInVehicle = true,
464 | })
465 | Wait(300)
466 | else
467 | if showingVehicleHUD then
468 | DisplayRadar(false)
469 | ShowNUI('setVisibleVehicle', false, false)
470 | showingVehicleHUD = false
471 | end
472 | Wait(300)
473 | end
474 | else
475 | if showingPlayerHUD then
476 | ShowNUI('setVisiblePlayer', false, false)
477 | ShowNUI('setVisibleVehicle', false, false)
478 | showingVehicleHUD = false
479 | showingPlayerHUD = false
480 | end
481 | Wait(500)
482 | end
483 | end
484 | end)
485 |
486 | -- Keybind Registration
487 | lib.addKeybind({
488 | name = 'openhud',
489 | description = 'Opens HUD Settings',
490 | defaultKey = Config.hudKeybind,
491 | defaultMapper = 'keyboard',
492 | onPressed = settingsMenu,
493 | })
494 |
--------------------------------------------------------------------------------
/config.lua:
--------------------------------------------------------------------------------
1 | -- TS TEST
2 |
3 | return {
4 | core = exports['qb-core']:GetCoreObject(),
5 | speedType = 'KMH', -- KMH or MPH
6 | hudKeybind = 'I',
7 | isLowFuelChecked = true,
8 | stress = {
9 | enableStress = true,
10 | policeStress = false,
11 | chance = 0.1, -- Percentage stress chance when shooting (0-1)
12 | minForShaking = 50, -- Minimum stress level for screen shaking
13 | minForSpeeding = 1000, -- Minimum stress level for speeding while buckled
14 | minForSpeedingUnbuckled = 50, -- Minimum stress level for speeding while unbuckled
15 | whitelistedWeapons = { -- Weapons which don't give stress
16 | `weapon_petrolcan`,
17 | `weapon_hazardcan`,
18 | `weapon_fireextinguisher`,
19 | },
20 | blurIntensity = { -- Blur intensity for different stress levels
21 | [1] = {min = 50, max = 60, intensity = 1500},
22 | [2] = {min = 60, max = 70, intensity = 2000},
23 | [3] = {min = 70, max = 80, intensity = 2500},
24 | [4] = {min = 80, max = 90, intensity = 2700},
25 | [5] = {min = 90, max = 100, intensity = 3000},
26 | },
27 | effectInterval = { -- Effect interval for different stress levels
28 | [1] = {min = 50, max = 60, timeout = math.random(50000, 60000)},
29 | [2] = {min = 60, max = 70, timeout = math.random(40000, 50000)},
30 | [3] = {min = 70, max = 80, timeout = math.random(30000, 40000)},
31 | [4] = {min = 80, max = 90, timeout = math.random(20000, 30000)},
32 | [5] = {min = 90, max = 100, timeout = math.random(15000, 20000)},
33 | },
34 | },
35 | hudSettings = {
36 | hudType = "rectangle", -- Default HUD type
37 | hudPosition = "left", -- Default HUD position
38 | },
39 | harness = {
40 | qbox_seatbelt = false,
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/fxmanifest.lua:
--------------------------------------------------------------------------------
1 | fx_version 'cerulean'
2 | description 'ADVANCED HUD SYSTEM'
3 | author 'TS SCRIPTS | THOMAS | LILPUP3'
4 | lua54 'yes'
5 | game 'gta5'
6 |
7 | shared_scripts {
8 | '@ox_lib/init.lua',
9 | 'config.lua'
10 | }
11 |
12 | client_scripts {
13 | 'client/**/*',
14 | }
15 |
16 | server_scripts {
17 | 'server/**/*',
18 | }
19 |
20 | ui_page 'web/build/index.html'
21 |
22 | files {
23 | 'web/build/index.html',
24 | 'web/build/**/*',
25 | 'web/assets/**/*',
26 | }
--------------------------------------------------------------------------------
/server/main.lua:
--------------------------------------------------------------------------------
1 | local resetStress = false
2 | local Config = lib.load('config')
3 |
4 | AddEventHandler('ox_inventory:openedInventory', function(source)
5 | TriggerClientEvent('ts_hud:client:hideHUD', source)
6 | end)
7 |
8 | AddEventHandler('ox_inventory:closedInventory', function(source)
9 | TriggerClientEvent('ts_hud:client:showHud', source)
10 | end)
11 |
12 | RegisterNetEvent('hud:server:GainStress', function(amount)
13 | if not Config.stress.enableStress then return end
14 |
15 | local src = source
16 | local player = Config.core.Functions.GetPlayer(src)
17 | local newStress
18 | if not player then return end
19 | if not resetStress then
20 | if not player.PlayerData.metadata.stress then
21 | player.PlayerData.metadata.stress = 0
22 | end
23 | newStress = player.PlayerData.metadata.stress + amount
24 | if newStress <= 0 then newStress = 0 end
25 | else
26 | newStress = 0
27 | end
28 | if newStress > 100 then
29 | newStress = 100
30 | end
31 | player.Functions.SetMetaData('stress', newStress)
32 | TriggerClientEvent('hud:client:UpdateStress', src, newStress)
33 | TriggerClientEvent('ox_lib:notify', src, {
34 | description = 'Feeling More Stressed!',
35 | type = 'error',
36 | })
37 | end)
38 |
39 | RegisterNetEvent('hud:server:RelieveStress', function(amount)
40 | if not Config.stress.enableStress then return end
41 |
42 | local src = source
43 | local player = Config.core.Functions.GetPlayer(src)
44 | local newStress
45 | if not player then return end
46 | if not resetStress then
47 | if not player.PlayerData.metadata.stress then
48 | player.PlayerData.metadata.stress = 0
49 | end
50 | newStress = player.PlayerData.metadata.stress - amount
51 | if newStress <= 0 then newStress = 0 end
52 | else
53 | newStress = 0
54 | end
55 | if newStress > 100 then
56 | newStress = 100
57 | end
58 | player.Functions.SetMetaData('stress', newStress)
59 | TriggerClientEvent('hud:client:UpdateStress', src, newStress)
60 | TriggerClientEvent('ox_lib:notify', src, {
61 | description = 'Feeling Less Stressed!',
62 | type = 'success',
63 | })
64 | end)
--------------------------------------------------------------------------------
/stream/minimap.gfx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Thomasdev18/ts_hud/fff24ca2d1a392673dcf6f3359a5097e77553615/stream/minimap.gfx
--------------------------------------------------------------------------------
/stream/minimap.ytd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Thomasdev18/ts_hud/fff24ca2d1a392673dcf6f3359a5097e77553615/stream/minimap.ytd
--------------------------------------------------------------------------------
/stream/squaremap.ytd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Thomasdev18/ts_hud/fff24ca2d1a392673dcf6f3359a5097e77553615/stream/squaremap.ytd
--------------------------------------------------------------------------------
/web/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: { browser: true, es2020: true },
4 | extends: [
5 | "eslint:recommended",
6 | "plugin:@typescript-eslint/recommended",
7 | "plugin:react-hooks/recommended",
8 | ],
9 | ignorePatterns: ["dist", ".eslintrc.cjs"],
10 | parser: "@typescript-eslint/parser",
11 | plugins: ["react-refresh"],
12 | rules: {
13 | "react-refresh/only-export-components": [
14 | "warn",
15 | { allowConstantExport: true },
16 | ],
17 | },
18 | };
19 |
--------------------------------------------------------------------------------
/web/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | *.local
12 |
13 | # Editor directories and files
14 | .vscode/*
15 | !.vscode/extensions.json
16 | .idea
17 | .DS_Store
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/web/build/assets/digital-7-Cnm38d_8.ttf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:ec3ac662132b9a60e3b09b8a971a131a55aeee1447146aa38ea7b32d777bc3c8
3 | size 34360
4 |
--------------------------------------------------------------------------------
/web/build/assets/index-DVSXO8ph.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:Digital-7;src:url(./digital-7-Cnm38d_8.ttf) format("truetype")}html{color-scheme:normal!important}body{background:none!important;margin:0;font-family:roboto-mono;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100vh;-webkit-user-select:none;user-select:none;overflow:hidden!important}p{margin:0}#root{height:100%}::-webkit-scrollbar{background-color:transparent;padding:0;margin:0;width:0;height:0}
2 |
--------------------------------------------------------------------------------
/web/build/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | NUI React Boilerplate
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | NUI React Boilerplate
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "web",
3 | "homepage": "web/build",
4 | "private": true,
5 | "type": "module",
6 | "version": "0.1.0",
7 | "scripts": {
8 | "start": "vite",
9 | "start:game": "vite build --watch",
10 | "build": "tsc && vite build",
11 | "preview": "vite preview"
12 | },
13 | "dependencies": {
14 | "@emotion/react": "^11.11.1",
15 | "@fortawesome/fontawesome-svg-core": "^6.5.2",
16 | "@fortawesome/free-solid-svg-icons": "^6.5.2",
17 | "@fortawesome/react-fontawesome": "^0.2.0",
18 | "@mantine/core": "^6.0.15",
19 | "@mantine/form": "^7.9.0",
20 | "@mantine/hooks": "^6.0.15",
21 | "@mantine/modals": "^6.0.15",
22 | "@mantine/styles": "^6.0.21",
23 | "@tabler/icons-react": "^2.23.0",
24 | "html2canvas": "^1.4.1",
25 | "react": "^18.2.0",
26 | "react-dom": "^18.2.0",
27 | "react-icons": "^5.2.0",
28 | "sass": "^1.72.0",
29 | "styled-components": "^6.1.8"
30 | },
31 | "devDependencies": {
32 | "@types/node": "^20.11.30",
33 | "@types/react": "^18.2.37",
34 | "@types/react-dom": "^18.2.15",
35 | "@typescript-eslint/eslint-plugin": "^6.11.0",
36 | "@typescript-eslint/parser": "^6.11.0",
37 | "@vitejs/plugin-react": "^4.2.0",
38 | "eslint": "^8.54.0",
39 | "eslint-plugin-react-hooks": "^4.6.0",
40 | "eslint-plugin-react-refresh": "^0.4.4",
41 | "postcss": "^8.4.38",
42 | "postcss-preset-mantine": "^1.15.0",
43 | "postcss-simple-vars": "^7.0.1",
44 | "typescript": "^5.2.2",
45 | "vite": "^5.0.0"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/web/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@emotion/react':
12 | specifier: ^11.11.1
13 | version: 11.11.4(@types/react@18.3.2)(react@18.3.1)
14 | '@fortawesome/fontawesome-svg-core':
15 | specifier: ^6.5.2
16 | version: 6.5.2
17 | '@fortawesome/free-solid-svg-icons':
18 | specifier: ^6.5.2
19 | version: 6.5.2
20 | '@fortawesome/react-fontawesome':
21 | specifier: ^0.2.0
22 | version: 0.2.0(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.3.1)
23 | '@mantine/core':
24 | specifier: ^6.0.15
25 | version: 6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(@mantine/hooks@6.0.21(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
26 | '@mantine/form':
27 | specifier: ^7.9.0
28 | version: 7.9.1(react@18.3.1)
29 | '@mantine/hooks':
30 | specifier: ^6.0.15
31 | version: 6.0.21(react@18.3.1)
32 | '@mantine/modals':
33 | specifier: ^6.0.15
34 | version: 6.0.21(@mantine/core@6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(@mantine/hooks@6.0.21(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@6.0.21(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
35 | '@mantine/styles':
36 | specifier: ^6.0.21
37 | version: 6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
38 | '@tabler/icons-react':
39 | specifier: ^2.23.0
40 | version: 2.47.0(react@18.3.1)
41 | html2canvas:
42 | specifier: ^1.4.1
43 | version: 1.4.1
44 | react:
45 | specifier: ^18.2.0
46 | version: 18.3.1
47 | react-dom:
48 | specifier: ^18.2.0
49 | version: 18.3.1(react@18.3.1)
50 | react-icons:
51 | specifier: ^5.2.0
52 | version: 5.2.1(react@18.3.1)
53 | sass:
54 | specifier: ^1.72.0
55 | version: 1.77.1
56 | styled-components:
57 | specifier: ^6.1.8
58 | version: 6.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
59 | devDependencies:
60 | '@types/node':
61 | specifier: ^20.11.30
62 | version: 20.12.12
63 | '@types/react':
64 | specifier: ^18.2.37
65 | version: 18.3.2
66 | '@types/react-dom':
67 | specifier: ^18.2.15
68 | version: 18.3.0
69 | '@typescript-eslint/eslint-plugin':
70 | specifier: ^6.11.0
71 | version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
72 | '@typescript-eslint/parser':
73 | specifier: ^6.11.0
74 | version: 6.21.0(eslint@8.57.0)(typescript@5.4.5)
75 | '@vitejs/plugin-react':
76 | specifier: ^4.2.0
77 | version: 4.2.1(vite@5.2.11(@types/node@20.12.12)(sass@1.77.1)(sugarss@4.0.1(postcss@8.4.38)))
78 | eslint:
79 | specifier: ^8.54.0
80 | version: 8.57.0
81 | eslint-plugin-react-hooks:
82 | specifier: ^4.6.0
83 | version: 4.6.2(eslint@8.57.0)
84 | eslint-plugin-react-refresh:
85 | specifier: ^0.4.4
86 | version: 0.4.7(eslint@8.57.0)
87 | postcss:
88 | specifier: ^8.4.38
89 | version: 8.4.38
90 | postcss-preset-mantine:
91 | specifier: ^1.15.0
92 | version: 1.15.0(postcss@8.4.38)
93 | postcss-simple-vars:
94 | specifier: ^7.0.1
95 | version: 7.0.1(postcss@8.4.38)
96 | typescript:
97 | specifier: ^5.2.2
98 | version: 5.4.5
99 | vite:
100 | specifier: ^5.0.0
101 | version: 5.2.11(@types/node@20.12.12)(sass@1.77.1)(sugarss@4.0.1(postcss@8.4.38))
102 |
103 | packages:
104 |
105 | '@ampproject/remapping@2.3.0':
106 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
107 | engines: {node: '>=6.0.0'}
108 |
109 | '@babel/code-frame@7.24.2':
110 | resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
111 | engines: {node: '>=6.9.0'}
112 |
113 | '@babel/compat-data@7.24.4':
114 | resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==}
115 | engines: {node: '>=6.9.0'}
116 |
117 | '@babel/core@7.24.5':
118 | resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==}
119 | engines: {node: '>=6.9.0'}
120 |
121 | '@babel/generator@7.24.5':
122 | resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==}
123 | engines: {node: '>=6.9.0'}
124 |
125 | '@babel/helper-compilation-targets@7.23.6':
126 | resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
127 | engines: {node: '>=6.9.0'}
128 |
129 | '@babel/helper-environment-visitor@7.22.20':
130 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
131 | engines: {node: '>=6.9.0'}
132 |
133 | '@babel/helper-function-name@7.23.0':
134 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
135 | engines: {node: '>=6.9.0'}
136 |
137 | '@babel/helper-hoist-variables@7.22.5':
138 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
139 | engines: {node: '>=6.9.0'}
140 |
141 | '@babel/helper-module-imports@7.24.3':
142 | resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
143 | engines: {node: '>=6.9.0'}
144 |
145 | '@babel/helper-module-transforms@7.24.5':
146 | resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==}
147 | engines: {node: '>=6.9.0'}
148 | peerDependencies:
149 | '@babel/core': ^7.0.0
150 |
151 | '@babel/helper-plugin-utils@7.24.5':
152 | resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==}
153 | engines: {node: '>=6.9.0'}
154 |
155 | '@babel/helper-simple-access@7.24.5':
156 | resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==}
157 | engines: {node: '>=6.9.0'}
158 |
159 | '@babel/helper-split-export-declaration@7.24.5':
160 | resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==}
161 | engines: {node: '>=6.9.0'}
162 |
163 | '@babel/helper-string-parser@7.24.1':
164 | resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
165 | engines: {node: '>=6.9.0'}
166 |
167 | '@babel/helper-validator-identifier@7.24.5':
168 | resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
169 | engines: {node: '>=6.9.0'}
170 |
171 | '@babel/helper-validator-option@7.23.5':
172 | resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
173 | engines: {node: '>=6.9.0'}
174 |
175 | '@babel/helpers@7.24.5':
176 | resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==}
177 | engines: {node: '>=6.9.0'}
178 |
179 | '@babel/highlight@7.24.5':
180 | resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
181 | engines: {node: '>=6.9.0'}
182 |
183 | '@babel/parser@7.24.5':
184 | resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==}
185 | engines: {node: '>=6.0.0'}
186 | hasBin: true
187 |
188 | '@babel/plugin-transform-react-jsx-self@7.24.5':
189 | resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==}
190 | engines: {node: '>=6.9.0'}
191 | peerDependencies:
192 | '@babel/core': ^7.0.0-0
193 |
194 | '@babel/plugin-transform-react-jsx-source@7.24.1':
195 | resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==}
196 | engines: {node: '>=6.9.0'}
197 | peerDependencies:
198 | '@babel/core': ^7.0.0-0
199 |
200 | '@babel/runtime@7.24.5':
201 | resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
202 | engines: {node: '>=6.9.0'}
203 |
204 | '@babel/template@7.24.0':
205 | resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
206 | engines: {node: '>=6.9.0'}
207 |
208 | '@babel/traverse@7.24.5':
209 | resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==}
210 | engines: {node: '>=6.9.0'}
211 |
212 | '@babel/types@7.24.5':
213 | resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
214 | engines: {node: '>=6.9.0'}
215 |
216 | '@emotion/babel-plugin@11.11.0':
217 | resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
218 |
219 | '@emotion/cache@11.11.0':
220 | resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==}
221 |
222 | '@emotion/hash@0.9.1':
223 | resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==}
224 |
225 | '@emotion/is-prop-valid@1.2.2':
226 | resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==}
227 |
228 | '@emotion/memoize@0.8.1':
229 | resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
230 |
231 | '@emotion/react@11.11.4':
232 | resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==}
233 | peerDependencies:
234 | '@types/react': '*'
235 | react: '>=16.8.0'
236 | peerDependenciesMeta:
237 | '@types/react':
238 | optional: true
239 |
240 | '@emotion/serialize@1.1.4':
241 | resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==}
242 |
243 | '@emotion/sheet@1.2.2':
244 | resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
245 |
246 | '@emotion/unitless@0.8.1':
247 | resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
248 |
249 | '@emotion/use-insertion-effect-with-fallbacks@1.0.1':
250 | resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==}
251 | peerDependencies:
252 | react: '>=16.8.0'
253 |
254 | '@emotion/utils@1.2.1':
255 | resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==}
256 |
257 | '@emotion/weak-memoize@0.3.1':
258 | resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
259 |
260 | '@esbuild/aix-ppc64@0.20.2':
261 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
262 | engines: {node: '>=12'}
263 | cpu: [ppc64]
264 | os: [aix]
265 |
266 | '@esbuild/android-arm64@0.20.2':
267 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
268 | engines: {node: '>=12'}
269 | cpu: [arm64]
270 | os: [android]
271 |
272 | '@esbuild/android-arm@0.20.2':
273 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
274 | engines: {node: '>=12'}
275 | cpu: [arm]
276 | os: [android]
277 |
278 | '@esbuild/android-x64@0.20.2':
279 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
280 | engines: {node: '>=12'}
281 | cpu: [x64]
282 | os: [android]
283 |
284 | '@esbuild/darwin-arm64@0.20.2':
285 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
286 | engines: {node: '>=12'}
287 | cpu: [arm64]
288 | os: [darwin]
289 |
290 | '@esbuild/darwin-x64@0.20.2':
291 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
292 | engines: {node: '>=12'}
293 | cpu: [x64]
294 | os: [darwin]
295 |
296 | '@esbuild/freebsd-arm64@0.20.2':
297 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
298 | engines: {node: '>=12'}
299 | cpu: [arm64]
300 | os: [freebsd]
301 |
302 | '@esbuild/freebsd-x64@0.20.2':
303 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
304 | engines: {node: '>=12'}
305 | cpu: [x64]
306 | os: [freebsd]
307 |
308 | '@esbuild/linux-arm64@0.20.2':
309 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
310 | engines: {node: '>=12'}
311 | cpu: [arm64]
312 | os: [linux]
313 |
314 | '@esbuild/linux-arm@0.20.2':
315 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
316 | engines: {node: '>=12'}
317 | cpu: [arm]
318 | os: [linux]
319 |
320 | '@esbuild/linux-ia32@0.20.2':
321 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
322 | engines: {node: '>=12'}
323 | cpu: [ia32]
324 | os: [linux]
325 |
326 | '@esbuild/linux-loong64@0.20.2':
327 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
328 | engines: {node: '>=12'}
329 | cpu: [loong64]
330 | os: [linux]
331 |
332 | '@esbuild/linux-mips64el@0.20.2':
333 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
334 | engines: {node: '>=12'}
335 | cpu: [mips64el]
336 | os: [linux]
337 |
338 | '@esbuild/linux-ppc64@0.20.2':
339 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
340 | engines: {node: '>=12'}
341 | cpu: [ppc64]
342 | os: [linux]
343 |
344 | '@esbuild/linux-riscv64@0.20.2':
345 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
346 | engines: {node: '>=12'}
347 | cpu: [riscv64]
348 | os: [linux]
349 |
350 | '@esbuild/linux-s390x@0.20.2':
351 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
352 | engines: {node: '>=12'}
353 | cpu: [s390x]
354 | os: [linux]
355 |
356 | '@esbuild/linux-x64@0.20.2':
357 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
358 | engines: {node: '>=12'}
359 | cpu: [x64]
360 | os: [linux]
361 |
362 | '@esbuild/netbsd-x64@0.20.2':
363 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
364 | engines: {node: '>=12'}
365 | cpu: [x64]
366 | os: [netbsd]
367 |
368 | '@esbuild/openbsd-x64@0.20.2':
369 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
370 | engines: {node: '>=12'}
371 | cpu: [x64]
372 | os: [openbsd]
373 |
374 | '@esbuild/sunos-x64@0.20.2':
375 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
376 | engines: {node: '>=12'}
377 | cpu: [x64]
378 | os: [sunos]
379 |
380 | '@esbuild/win32-arm64@0.20.2':
381 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
382 | engines: {node: '>=12'}
383 | cpu: [arm64]
384 | os: [win32]
385 |
386 | '@esbuild/win32-ia32@0.20.2':
387 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
388 | engines: {node: '>=12'}
389 | cpu: [ia32]
390 | os: [win32]
391 |
392 | '@esbuild/win32-x64@0.20.2':
393 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
394 | engines: {node: '>=12'}
395 | cpu: [x64]
396 | os: [win32]
397 |
398 | '@eslint-community/eslint-utils@4.4.0':
399 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
400 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
401 | peerDependencies:
402 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
403 |
404 | '@eslint-community/regexpp@4.10.0':
405 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
406 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
407 |
408 | '@eslint/eslintrc@2.1.4':
409 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
410 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
411 |
412 | '@eslint/js@8.57.0':
413 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
414 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
415 |
416 | '@floating-ui/core@1.6.1':
417 | resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==}
418 |
419 | '@floating-ui/dom@1.6.5':
420 | resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==}
421 |
422 | '@floating-ui/react-dom@1.3.0':
423 | resolution: {integrity: sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==}
424 | peerDependencies:
425 | react: '>=16.8.0'
426 | react-dom: '>=16.8.0'
427 |
428 | '@floating-ui/react@0.19.2':
429 | resolution: {integrity: sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==}
430 | peerDependencies:
431 | react: '>=16.8.0'
432 | react-dom: '>=16.8.0'
433 |
434 | '@floating-ui/utils@0.2.2':
435 | resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
436 |
437 | '@fortawesome/fontawesome-common-types@6.5.2':
438 | resolution: {integrity: sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==}
439 | engines: {node: '>=6'}
440 |
441 | '@fortawesome/fontawesome-svg-core@6.5.2':
442 | resolution: {integrity: sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==}
443 | engines: {node: '>=6'}
444 |
445 | '@fortawesome/free-solid-svg-icons@6.5.2':
446 | resolution: {integrity: sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==}
447 | engines: {node: '>=6'}
448 |
449 | '@fortawesome/react-fontawesome@0.2.0':
450 | resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==}
451 | peerDependencies:
452 | '@fortawesome/fontawesome-svg-core': ~1 || ~6
453 | react: '>=16.3'
454 |
455 | '@humanwhocodes/config-array@0.11.14':
456 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
457 | engines: {node: '>=10.10.0'}
458 | deprecated: Use @eslint/config-array instead
459 |
460 | '@humanwhocodes/module-importer@1.0.1':
461 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
462 | engines: {node: '>=12.22'}
463 |
464 | '@humanwhocodes/object-schema@2.0.3':
465 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
466 | deprecated: Use @eslint/object-schema instead
467 |
468 | '@jridgewell/gen-mapping@0.3.5':
469 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
470 | engines: {node: '>=6.0.0'}
471 |
472 | '@jridgewell/resolve-uri@3.1.2':
473 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
474 | engines: {node: '>=6.0.0'}
475 |
476 | '@jridgewell/set-array@1.2.1':
477 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
478 | engines: {node: '>=6.0.0'}
479 |
480 | '@jridgewell/sourcemap-codec@1.4.15':
481 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
482 |
483 | '@jridgewell/trace-mapping@0.3.25':
484 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
485 |
486 | '@mantine/core@6.0.21':
487 | resolution: {integrity: sha512-Kx4RrRfv0I+cOCIcsq/UA2aWcYLyXgW3aluAuW870OdXnbII6qg7RW28D+r9D76SHPxWFKwIKwmcucAG08Divg==}
488 | peerDependencies:
489 | '@mantine/hooks': 6.0.21
490 | react: '>=16.8.0'
491 | react-dom: '>=16.8.0'
492 |
493 | '@mantine/form@7.9.1':
494 | resolution: {integrity: sha512-6Z4LkACT1ouoTvtI9hH/rT+L7qvfKnCypUyaCtYpPkA57ANamK7qkmeXXBmbGGOf8mJB+ZSgOvpDVKKRz5iH3Q==}
495 | peerDependencies:
496 | react: ^18.2.0
497 |
498 | '@mantine/hooks@6.0.21':
499 | resolution: {integrity: sha512-sYwt5wai25W6VnqHbS5eamey30/HD5dNXaZuaVEAJ2i2bBv8C0cCiczygMDpAFiSYdXoSMRr/SZ2CrrPTzeNew==}
500 | peerDependencies:
501 | react: '>=16.8.0'
502 |
503 | '@mantine/modals@6.0.21':
504 | resolution: {integrity: sha512-Gx2D/ZHMUuYF197JKMWey4K9FeGP9rxYp4lmAEXUrjXiST2fEhLZOdiD75KuOHXd1/sYAU9NcNRo9wXrlF/gUA==}
505 | peerDependencies:
506 | '@mantine/core': 6.0.21
507 | '@mantine/hooks': 6.0.21
508 | react: '>=16.8.0'
509 | react-dom: '>=16.8.0'
510 |
511 | '@mantine/styles@6.0.21':
512 | resolution: {integrity: sha512-PVtL7XHUiD/B5/kZ/QvZOZZQQOj12QcRs3Q6nPoqaoPcOX5+S7bMZLMH0iLtcGq5OODYk0uxlvuJkOZGoPj8Mg==}
513 | peerDependencies:
514 | '@emotion/react': '>=11.9.0'
515 | react: '>=16.8.0'
516 | react-dom: '>=16.8.0'
517 |
518 | '@mantine/utils@6.0.21':
519 | resolution: {integrity: sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==}
520 | peerDependencies:
521 | react: '>=16.8.0'
522 |
523 | '@nodelib/fs.scandir@2.1.5':
524 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
525 | engines: {node: '>= 8'}
526 |
527 | '@nodelib/fs.stat@2.0.5':
528 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
529 | engines: {node: '>= 8'}
530 |
531 | '@nodelib/fs.walk@1.2.8':
532 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
533 | engines: {node: '>= 8'}
534 |
535 | '@radix-ui/number@1.0.0':
536 | resolution: {integrity: sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==}
537 |
538 | '@radix-ui/primitive@1.0.0':
539 | resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==}
540 |
541 | '@radix-ui/react-compose-refs@1.0.0':
542 | resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==}
543 | peerDependencies:
544 | react: ^16.8 || ^17.0 || ^18.0
545 |
546 | '@radix-ui/react-context@1.0.0':
547 | resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==}
548 | peerDependencies:
549 | react: ^16.8 || ^17.0 || ^18.0
550 |
551 | '@radix-ui/react-direction@1.0.0':
552 | resolution: {integrity: sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==}
553 | peerDependencies:
554 | react: ^16.8 || ^17.0 || ^18.0
555 |
556 | '@radix-ui/react-presence@1.0.0':
557 | resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==}
558 | peerDependencies:
559 | react: ^16.8 || ^17.0 || ^18.0
560 | react-dom: ^16.8 || ^17.0 || ^18.0
561 |
562 | '@radix-ui/react-primitive@1.0.1':
563 | resolution: {integrity: sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==}
564 | peerDependencies:
565 | react: ^16.8 || ^17.0 || ^18.0
566 | react-dom: ^16.8 || ^17.0 || ^18.0
567 |
568 | '@radix-ui/react-scroll-area@1.0.2':
569 | resolution: {integrity: sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==}
570 | peerDependencies:
571 | react: ^16.8 || ^17.0 || ^18.0
572 | react-dom: ^16.8 || ^17.0 || ^18.0
573 |
574 | '@radix-ui/react-slot@1.0.1':
575 | resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==}
576 | peerDependencies:
577 | react: ^16.8 || ^17.0 || ^18.0
578 |
579 | '@radix-ui/react-use-callback-ref@1.0.0':
580 | resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==}
581 | peerDependencies:
582 | react: ^16.8 || ^17.0 || ^18.0
583 |
584 | '@radix-ui/react-use-layout-effect@1.0.0':
585 | resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==}
586 | peerDependencies:
587 | react: ^16.8 || ^17.0 || ^18.0
588 |
589 | '@rollup/rollup-android-arm-eabi@4.17.2':
590 | resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==}
591 | cpu: [arm]
592 | os: [android]
593 |
594 | '@rollup/rollup-android-arm64@4.17.2':
595 | resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==}
596 | cpu: [arm64]
597 | os: [android]
598 |
599 | '@rollup/rollup-darwin-arm64@4.17.2':
600 | resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==}
601 | cpu: [arm64]
602 | os: [darwin]
603 |
604 | '@rollup/rollup-darwin-x64@4.17.2':
605 | resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==}
606 | cpu: [x64]
607 | os: [darwin]
608 |
609 | '@rollup/rollup-linux-arm-gnueabihf@4.17.2':
610 | resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==}
611 | cpu: [arm]
612 | os: [linux]
613 |
614 | '@rollup/rollup-linux-arm-musleabihf@4.17.2':
615 | resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==}
616 | cpu: [arm]
617 | os: [linux]
618 |
619 | '@rollup/rollup-linux-arm64-gnu@4.17.2':
620 | resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==}
621 | cpu: [arm64]
622 | os: [linux]
623 |
624 | '@rollup/rollup-linux-arm64-musl@4.17.2':
625 | resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==}
626 | cpu: [arm64]
627 | os: [linux]
628 |
629 | '@rollup/rollup-linux-powerpc64le-gnu@4.17.2':
630 | resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==}
631 | cpu: [ppc64]
632 | os: [linux]
633 |
634 | '@rollup/rollup-linux-riscv64-gnu@4.17.2':
635 | resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==}
636 | cpu: [riscv64]
637 | os: [linux]
638 |
639 | '@rollup/rollup-linux-s390x-gnu@4.17.2':
640 | resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==}
641 | cpu: [s390x]
642 | os: [linux]
643 |
644 | '@rollup/rollup-linux-x64-gnu@4.17.2':
645 | resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==}
646 | cpu: [x64]
647 | os: [linux]
648 |
649 | '@rollup/rollup-linux-x64-musl@4.17.2':
650 | resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==}
651 | cpu: [x64]
652 | os: [linux]
653 |
654 | '@rollup/rollup-win32-arm64-msvc@4.17.2':
655 | resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==}
656 | cpu: [arm64]
657 | os: [win32]
658 |
659 | '@rollup/rollup-win32-ia32-msvc@4.17.2':
660 | resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==}
661 | cpu: [ia32]
662 | os: [win32]
663 |
664 | '@rollup/rollup-win32-x64-msvc@4.17.2':
665 | resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==}
666 | cpu: [x64]
667 | os: [win32]
668 |
669 | '@tabler/icons-react@2.47.0':
670 | resolution: {integrity: sha512-iqly2FvCF/qUbgmvS8E40rVeYY7laltc5GUjRxQj59DuX0x/6CpKHTXt86YlI2whg4czvd/c8Ce8YR08uEku0g==}
671 | peerDependencies:
672 | react: ^16.5.1 || ^17.0.0 || ^18.0.0
673 |
674 | '@tabler/icons@2.47.0':
675 | resolution: {integrity: sha512-4w5evLh+7FUUiA1GucvGj2ReX2TvOjEr4ejXdwL/bsjoSkof6r1gQmzqI+VHrE2CpJpB3al7bCTulOkFa/RcyA==}
676 |
677 | '@types/babel__core@7.20.5':
678 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
679 |
680 | '@types/babel__generator@7.6.8':
681 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
682 |
683 | '@types/babel__template@7.4.4':
684 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
685 |
686 | '@types/babel__traverse@7.20.5':
687 | resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==}
688 |
689 | '@types/estree@1.0.5':
690 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
691 |
692 | '@types/json-schema@7.0.15':
693 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
694 |
695 | '@types/node@20.12.12':
696 | resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
697 |
698 | '@types/parse-json@4.0.2':
699 | resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
700 |
701 | '@types/prop-types@15.7.12':
702 | resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
703 |
704 | '@types/react-dom@18.3.0':
705 | resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
706 |
707 | '@types/react@18.3.2':
708 | resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==}
709 |
710 | '@types/semver@7.5.8':
711 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
712 |
713 | '@types/stylis@4.2.5':
714 | resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==}
715 |
716 | '@typescript-eslint/eslint-plugin@6.21.0':
717 | resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
718 | engines: {node: ^16.0.0 || >=18.0.0}
719 | peerDependencies:
720 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
721 | eslint: ^7.0.0 || ^8.0.0
722 | typescript: '*'
723 | peerDependenciesMeta:
724 | typescript:
725 | optional: true
726 |
727 | '@typescript-eslint/parser@6.21.0':
728 | resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
729 | engines: {node: ^16.0.0 || >=18.0.0}
730 | peerDependencies:
731 | eslint: ^7.0.0 || ^8.0.0
732 | typescript: '*'
733 | peerDependenciesMeta:
734 | typescript:
735 | optional: true
736 |
737 | '@typescript-eslint/scope-manager@6.21.0':
738 | resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
739 | engines: {node: ^16.0.0 || >=18.0.0}
740 |
741 | '@typescript-eslint/type-utils@6.21.0':
742 | resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
743 | engines: {node: ^16.0.0 || >=18.0.0}
744 | peerDependencies:
745 | eslint: ^7.0.0 || ^8.0.0
746 | typescript: '*'
747 | peerDependenciesMeta:
748 | typescript:
749 | optional: true
750 |
751 | '@typescript-eslint/types@6.21.0':
752 | resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
753 | engines: {node: ^16.0.0 || >=18.0.0}
754 |
755 | '@typescript-eslint/typescript-estree@6.21.0':
756 | resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
757 | engines: {node: ^16.0.0 || >=18.0.0}
758 | peerDependencies:
759 | typescript: '*'
760 | peerDependenciesMeta:
761 | typescript:
762 | optional: true
763 |
764 | '@typescript-eslint/utils@6.21.0':
765 | resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
766 | engines: {node: ^16.0.0 || >=18.0.0}
767 | peerDependencies:
768 | eslint: ^7.0.0 || ^8.0.0
769 |
770 | '@typescript-eslint/visitor-keys@6.21.0':
771 | resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
772 | engines: {node: ^16.0.0 || >=18.0.0}
773 |
774 | '@ungap/structured-clone@1.2.0':
775 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
776 |
777 | '@vitejs/plugin-react@4.2.1':
778 | resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==}
779 | engines: {node: ^14.18.0 || >=16.0.0}
780 | peerDependencies:
781 | vite: ^4.2.0 || ^5.0.0
782 |
783 | acorn-jsx@5.3.2:
784 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
785 | peerDependencies:
786 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
787 |
788 | acorn@8.11.3:
789 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
790 | engines: {node: '>=0.4.0'}
791 | hasBin: true
792 |
793 | ajv@6.12.6:
794 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
795 |
796 | ansi-regex@5.0.1:
797 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
798 | engines: {node: '>=8'}
799 |
800 | ansi-styles@3.2.1:
801 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
802 | engines: {node: '>=4'}
803 |
804 | ansi-styles@4.3.0:
805 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
806 | engines: {node: '>=8'}
807 |
808 | anymatch@3.1.3:
809 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
810 | engines: {node: '>= 8'}
811 |
812 | argparse@2.0.1:
813 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
814 |
815 | aria-hidden@1.2.4:
816 | resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
817 | engines: {node: '>=10'}
818 |
819 | array-union@2.1.0:
820 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
821 | engines: {node: '>=8'}
822 |
823 | babel-plugin-macros@3.1.0:
824 | resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
825 | engines: {node: '>=10', npm: '>=6'}
826 |
827 | balanced-match@1.0.2:
828 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
829 |
830 | base64-arraybuffer@1.0.2:
831 | resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
832 | engines: {node: '>= 0.6.0'}
833 |
834 | binary-extensions@2.3.0:
835 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
836 | engines: {node: '>=8'}
837 |
838 | brace-expansion@1.1.11:
839 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
840 |
841 | brace-expansion@2.0.1:
842 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
843 |
844 | braces@3.0.3:
845 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
846 | engines: {node: '>=8'}
847 |
848 | browserslist@4.23.0:
849 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
850 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
851 | hasBin: true
852 |
853 | callsites@3.1.0:
854 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
855 | engines: {node: '>=6'}
856 |
857 | camelcase-css@2.0.1:
858 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
859 | engines: {node: '>= 6'}
860 |
861 | camelize@1.0.1:
862 | resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
863 |
864 | caniuse-lite@1.0.30001618:
865 | resolution: {integrity: sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==}
866 |
867 | chalk@2.4.2:
868 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
869 | engines: {node: '>=4'}
870 |
871 | chalk@4.1.2:
872 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
873 | engines: {node: '>=10'}
874 |
875 | chokidar@3.6.0:
876 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
877 | engines: {node: '>= 8.10.0'}
878 |
879 | clsx@1.1.1:
880 | resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==}
881 | engines: {node: '>=6'}
882 |
883 | color-convert@1.9.3:
884 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
885 |
886 | color-convert@2.0.1:
887 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
888 | engines: {node: '>=7.0.0'}
889 |
890 | color-name@1.1.3:
891 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
892 |
893 | color-name@1.1.4:
894 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
895 |
896 | concat-map@0.0.1:
897 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
898 |
899 | convert-source-map@1.9.0:
900 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
901 |
902 | convert-source-map@2.0.0:
903 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
904 |
905 | cosmiconfig@7.1.0:
906 | resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
907 | engines: {node: '>=10'}
908 |
909 | cross-spawn@7.0.3:
910 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
911 | engines: {node: '>= 8'}
912 |
913 | css-color-keywords@1.0.0:
914 | resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==}
915 | engines: {node: '>=4'}
916 |
917 | css-line-break@2.1.0:
918 | resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==}
919 |
920 | css-to-react-native@3.2.0:
921 | resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
922 |
923 | cssesc@3.0.0:
924 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
925 | engines: {node: '>=4'}
926 | hasBin: true
927 |
928 | csstype@3.0.9:
929 | resolution: {integrity: sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==}
930 |
931 | csstype@3.1.3:
932 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
933 |
934 | debug@4.3.4:
935 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
936 | engines: {node: '>=6.0'}
937 | peerDependencies:
938 | supports-color: '*'
939 | peerDependenciesMeta:
940 | supports-color:
941 | optional: true
942 |
943 | deep-is@0.1.4:
944 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
945 |
946 | detect-node-es@1.1.0:
947 | resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
948 |
949 | dir-glob@3.0.1:
950 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
951 | engines: {node: '>=8'}
952 |
953 | doctrine@3.0.0:
954 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
955 | engines: {node: '>=6.0.0'}
956 |
957 | electron-to-chromium@1.4.768:
958 | resolution: {integrity: sha512-z2U3QcvNuxdkk33YV7R1bVMNq7fL23vq3WfO5BHcqrm4TnDGReouBfYKLEFh5umoK1XACjEwp8mmnhXk2EJigw==}
959 |
960 | error-ex@1.3.2:
961 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
962 |
963 | esbuild@0.20.2:
964 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
965 | engines: {node: '>=12'}
966 | hasBin: true
967 |
968 | escalade@3.1.2:
969 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
970 | engines: {node: '>=6'}
971 |
972 | escape-string-regexp@1.0.5:
973 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
974 | engines: {node: '>=0.8.0'}
975 |
976 | escape-string-regexp@4.0.0:
977 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
978 | engines: {node: '>=10'}
979 |
980 | eslint-plugin-react-hooks@4.6.2:
981 | resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
982 | engines: {node: '>=10'}
983 | peerDependencies:
984 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
985 |
986 | eslint-plugin-react-refresh@0.4.7:
987 | resolution: {integrity: sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==}
988 | peerDependencies:
989 | eslint: '>=7'
990 |
991 | eslint-scope@7.2.2:
992 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
993 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
994 |
995 | eslint-visitor-keys@3.4.3:
996 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
997 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
998 |
999 | eslint@8.57.0:
1000 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
1001 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1002 | hasBin: true
1003 |
1004 | espree@9.6.1:
1005 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1006 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1007 |
1008 | esquery@1.5.0:
1009 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1010 | engines: {node: '>=0.10'}
1011 |
1012 | esrecurse@4.3.0:
1013 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1014 | engines: {node: '>=4.0'}
1015 |
1016 | estraverse@5.3.0:
1017 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1018 | engines: {node: '>=4.0'}
1019 |
1020 | esutils@2.0.3:
1021 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1022 | engines: {node: '>=0.10.0'}
1023 |
1024 | fast-deep-equal@3.1.3:
1025 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1026 |
1027 | fast-glob@3.3.2:
1028 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
1029 | engines: {node: '>=8.6.0'}
1030 |
1031 | fast-json-stable-stringify@2.1.0:
1032 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1033 |
1034 | fast-levenshtein@2.0.6:
1035 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1036 |
1037 | fastq@1.17.1:
1038 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
1039 |
1040 | file-entry-cache@6.0.1:
1041 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1042 | engines: {node: ^10.12.0 || >=12.0.0}
1043 |
1044 | fill-range@7.1.1:
1045 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
1046 | engines: {node: '>=8'}
1047 |
1048 | find-root@1.1.0:
1049 | resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
1050 |
1051 | find-up@5.0.0:
1052 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1053 | engines: {node: '>=10'}
1054 |
1055 | flat-cache@3.2.0:
1056 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1057 | engines: {node: ^10.12.0 || >=12.0.0}
1058 |
1059 | flatted@3.3.1:
1060 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
1061 |
1062 | fs.realpath@1.0.0:
1063 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1064 |
1065 | fsevents@2.3.3:
1066 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1067 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1068 | os: [darwin]
1069 |
1070 | function-bind@1.1.2:
1071 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
1072 |
1073 | gensync@1.0.0-beta.2:
1074 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
1075 | engines: {node: '>=6.9.0'}
1076 |
1077 | get-nonce@1.0.1:
1078 | resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
1079 | engines: {node: '>=6'}
1080 |
1081 | glob-parent@5.1.2:
1082 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1083 | engines: {node: '>= 6'}
1084 |
1085 | glob-parent@6.0.2:
1086 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1087 | engines: {node: '>=10.13.0'}
1088 |
1089 | glob@7.2.3:
1090 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1091 | deprecated: Glob versions prior to v9 are no longer supported
1092 |
1093 | globals@11.12.0:
1094 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1095 | engines: {node: '>=4'}
1096 |
1097 | globals@13.24.0:
1098 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1099 | engines: {node: '>=8'}
1100 |
1101 | globby@11.1.0:
1102 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1103 | engines: {node: '>=10'}
1104 |
1105 | graphemer@1.4.0:
1106 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1107 |
1108 | has-flag@3.0.0:
1109 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1110 | engines: {node: '>=4'}
1111 |
1112 | has-flag@4.0.0:
1113 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1114 | engines: {node: '>=8'}
1115 |
1116 | hasown@2.0.2:
1117 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
1118 | engines: {node: '>= 0.4'}
1119 |
1120 | hoist-non-react-statics@3.3.2:
1121 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
1122 |
1123 | html2canvas@1.4.1:
1124 | resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==}
1125 | engines: {node: '>=8.0.0'}
1126 |
1127 | ignore@5.3.1:
1128 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
1129 | engines: {node: '>= 4'}
1130 |
1131 | immutable@4.3.6:
1132 | resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==}
1133 |
1134 | import-fresh@3.3.0:
1135 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1136 | engines: {node: '>=6'}
1137 |
1138 | imurmurhash@0.1.4:
1139 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1140 | engines: {node: '>=0.8.19'}
1141 |
1142 | inflight@1.0.6:
1143 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1144 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
1145 |
1146 | inherits@2.0.4:
1147 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1148 |
1149 | invariant@2.2.4:
1150 | resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
1151 |
1152 | is-arrayish@0.2.1:
1153 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1154 |
1155 | is-binary-path@2.1.0:
1156 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1157 | engines: {node: '>=8'}
1158 |
1159 | is-core-module@2.13.1:
1160 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1161 |
1162 | is-extglob@2.1.1:
1163 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1164 | engines: {node: '>=0.10.0'}
1165 |
1166 | is-glob@4.0.3:
1167 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1168 | engines: {node: '>=0.10.0'}
1169 |
1170 | is-number@7.0.0:
1171 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1172 | engines: {node: '>=0.12.0'}
1173 |
1174 | is-path-inside@3.0.3:
1175 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1176 | engines: {node: '>=8'}
1177 |
1178 | isexe@2.0.0:
1179 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1180 |
1181 | js-tokens@4.0.0:
1182 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1183 |
1184 | js-yaml@4.1.0:
1185 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1186 | hasBin: true
1187 |
1188 | jsesc@2.5.2:
1189 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1190 | engines: {node: '>=4'}
1191 | hasBin: true
1192 |
1193 | json-buffer@3.0.1:
1194 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1195 |
1196 | json-parse-even-better-errors@2.3.1:
1197 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1198 |
1199 | json-schema-traverse@0.4.1:
1200 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1201 |
1202 | json-stable-stringify-without-jsonify@1.0.1:
1203 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1204 |
1205 | json5@2.2.3:
1206 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
1207 | engines: {node: '>=6'}
1208 | hasBin: true
1209 |
1210 | keyv@4.5.4:
1211 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1212 |
1213 | klona@2.0.6:
1214 | resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
1215 | engines: {node: '>= 8'}
1216 |
1217 | levn@0.4.1:
1218 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1219 | engines: {node: '>= 0.8.0'}
1220 |
1221 | lines-and-columns@1.2.4:
1222 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1223 |
1224 | locate-path@6.0.0:
1225 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1226 | engines: {node: '>=10'}
1227 |
1228 | lodash.merge@4.6.2:
1229 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1230 |
1231 | loose-envify@1.4.0:
1232 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1233 | hasBin: true
1234 |
1235 | lru-cache@5.1.1:
1236 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
1237 |
1238 | merge2@1.4.1:
1239 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1240 | engines: {node: '>= 8'}
1241 |
1242 | micromatch@4.0.5:
1243 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1244 | engines: {node: '>=8.6'}
1245 |
1246 | minimatch@3.1.2:
1247 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1248 |
1249 | minimatch@9.0.3:
1250 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
1251 | engines: {node: '>=16 || 14 >=14.17'}
1252 |
1253 | ms@2.1.2:
1254 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1255 |
1256 | nanoid@3.3.7:
1257 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
1258 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1259 | hasBin: true
1260 |
1261 | natural-compare@1.4.0:
1262 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1263 |
1264 | node-releases@2.0.14:
1265 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
1266 |
1267 | normalize-path@3.0.0:
1268 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1269 | engines: {node: '>=0.10.0'}
1270 |
1271 | object-assign@4.1.1:
1272 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1273 | engines: {node: '>=0.10.0'}
1274 |
1275 | once@1.4.0:
1276 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1277 |
1278 | optionator@0.9.4:
1279 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1280 | engines: {node: '>= 0.8.0'}
1281 |
1282 | p-limit@3.1.0:
1283 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1284 | engines: {node: '>=10'}
1285 |
1286 | p-locate@5.0.0:
1287 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1288 | engines: {node: '>=10'}
1289 |
1290 | parent-module@1.0.1:
1291 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1292 | engines: {node: '>=6'}
1293 |
1294 | parse-json@5.2.0:
1295 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1296 | engines: {node: '>=8'}
1297 |
1298 | path-exists@4.0.0:
1299 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1300 | engines: {node: '>=8'}
1301 |
1302 | path-is-absolute@1.0.1:
1303 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1304 | engines: {node: '>=0.10.0'}
1305 |
1306 | path-key@3.1.1:
1307 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1308 | engines: {node: '>=8'}
1309 |
1310 | path-parse@1.0.7:
1311 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1312 |
1313 | path-type@4.0.0:
1314 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1315 | engines: {node: '>=8'}
1316 |
1317 | picocolors@1.0.1:
1318 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
1319 |
1320 | picomatch@2.3.1:
1321 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1322 | engines: {node: '>=8.6'}
1323 |
1324 | postcss-js@4.0.1:
1325 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
1326 | engines: {node: ^12 || ^14 || >= 16}
1327 | peerDependencies:
1328 | postcss: ^8.4.21
1329 |
1330 | postcss-mixins@9.0.4:
1331 | resolution: {integrity: sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==}
1332 | engines: {node: '>=14.0'}
1333 | peerDependencies:
1334 | postcss: ^8.2.14
1335 |
1336 | postcss-nested@6.0.1:
1337 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
1338 | engines: {node: '>=12.0'}
1339 | peerDependencies:
1340 | postcss: ^8.2.14
1341 |
1342 | postcss-preset-mantine@1.15.0:
1343 | resolution: {integrity: sha512-OKPs6uoORSXlU/GFH1ZtFaslecHBPwuoSikdL5W3WKJm4ZPAQM0mw9x9m3toa/Mo1JhoBmYMM28i+zEdav5Edg==}
1344 | peerDependencies:
1345 | postcss: '>=8.0.0'
1346 |
1347 | postcss-selector-parser@6.0.16:
1348 | resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==}
1349 | engines: {node: '>=4'}
1350 |
1351 | postcss-simple-vars@7.0.1:
1352 | resolution: {integrity: sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==}
1353 | engines: {node: '>=14.0'}
1354 | peerDependencies:
1355 | postcss: ^8.2.1
1356 |
1357 | postcss-value-parser@4.2.0:
1358 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1359 |
1360 | postcss@8.4.38:
1361 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
1362 | engines: {node: ^10 || ^12 || >=14}
1363 |
1364 | prelude-ls@1.2.1:
1365 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1366 | engines: {node: '>= 0.8.0'}
1367 |
1368 | prop-types@15.8.1:
1369 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
1370 |
1371 | punycode@2.3.1:
1372 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1373 | engines: {node: '>=6'}
1374 |
1375 | queue-microtask@1.2.3:
1376 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1377 |
1378 | react-dom@18.3.1:
1379 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
1380 | peerDependencies:
1381 | react: ^18.3.1
1382 |
1383 | react-icons@5.2.1:
1384 | resolution: {integrity: sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==}
1385 | peerDependencies:
1386 | react: '*'
1387 |
1388 | react-is@16.13.1:
1389 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1390 |
1391 | react-refresh@0.14.2:
1392 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
1393 | engines: {node: '>=0.10.0'}
1394 |
1395 | react-remove-scroll-bar@2.3.6:
1396 | resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
1397 | engines: {node: '>=10'}
1398 | peerDependencies:
1399 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1400 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1401 | peerDependenciesMeta:
1402 | '@types/react':
1403 | optional: true
1404 |
1405 | react-remove-scroll@2.5.10:
1406 | resolution: {integrity: sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==}
1407 | engines: {node: '>=10'}
1408 | peerDependencies:
1409 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1410 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1411 | peerDependenciesMeta:
1412 | '@types/react':
1413 | optional: true
1414 |
1415 | react-style-singleton@2.2.1:
1416 | resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
1417 | engines: {node: '>=10'}
1418 | peerDependencies:
1419 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1420 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1421 | peerDependenciesMeta:
1422 | '@types/react':
1423 | optional: true
1424 |
1425 | react-textarea-autosize@8.3.4:
1426 | resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==}
1427 | engines: {node: '>=10'}
1428 | peerDependencies:
1429 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1430 |
1431 | react@18.3.1:
1432 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
1433 | engines: {node: '>=0.10.0'}
1434 |
1435 | readdirp@3.6.0:
1436 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1437 | engines: {node: '>=8.10.0'}
1438 |
1439 | regenerator-runtime@0.14.1:
1440 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1441 |
1442 | resolve-from@4.0.0:
1443 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1444 | engines: {node: '>=4'}
1445 |
1446 | resolve@1.22.8:
1447 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1448 | hasBin: true
1449 |
1450 | reusify@1.0.4:
1451 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1452 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1453 |
1454 | rimraf@3.0.2:
1455 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1456 | deprecated: Rimraf versions prior to v4 are no longer supported
1457 | hasBin: true
1458 |
1459 | rollup@4.17.2:
1460 | resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==}
1461 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1462 | hasBin: true
1463 |
1464 | run-parallel@1.2.0:
1465 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1466 |
1467 | sass@1.77.1:
1468 | resolution: {integrity: sha512-OMEyfirt9XEfyvocduUIOlUSkWOXS/LAt6oblR/ISXCTukyavjex+zQNm51pPCOiFKY1QpWvEH1EeCkgyV3I6w==}
1469 | engines: {node: '>=14.0.0'}
1470 | hasBin: true
1471 |
1472 | scheduler@0.23.2:
1473 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
1474 |
1475 | semver@6.3.1:
1476 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1477 | hasBin: true
1478 |
1479 | semver@7.6.2:
1480 | resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
1481 | engines: {node: '>=10'}
1482 | hasBin: true
1483 |
1484 | shallowequal@1.1.0:
1485 | resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
1486 |
1487 | shebang-command@2.0.0:
1488 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1489 | engines: {node: '>=8'}
1490 |
1491 | shebang-regex@3.0.0:
1492 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1493 | engines: {node: '>=8'}
1494 |
1495 | slash@3.0.0:
1496 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1497 | engines: {node: '>=8'}
1498 |
1499 | source-map-js@1.2.0:
1500 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
1501 | engines: {node: '>=0.10.0'}
1502 |
1503 | source-map@0.5.7:
1504 | resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
1505 | engines: {node: '>=0.10.0'}
1506 |
1507 | strip-ansi@6.0.1:
1508 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1509 | engines: {node: '>=8'}
1510 |
1511 | strip-json-comments@3.1.1:
1512 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1513 | engines: {node: '>=8'}
1514 |
1515 | styled-components@6.1.11:
1516 | resolution: {integrity: sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA==}
1517 | engines: {node: '>= 16'}
1518 | peerDependencies:
1519 | react: '>= 16.8.0'
1520 | react-dom: '>= 16.8.0'
1521 |
1522 | stylis@4.2.0:
1523 | resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
1524 |
1525 | stylis@4.3.2:
1526 | resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==}
1527 |
1528 | sugarss@4.0.1:
1529 | resolution: {integrity: sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==}
1530 | engines: {node: '>=12.0'}
1531 | peerDependencies:
1532 | postcss: ^8.3.3
1533 |
1534 | supports-color@5.5.0:
1535 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1536 | engines: {node: '>=4'}
1537 |
1538 | supports-color@7.2.0:
1539 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1540 | engines: {node: '>=8'}
1541 |
1542 | supports-preserve-symlinks-flag@1.0.0:
1543 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1544 | engines: {node: '>= 0.4'}
1545 |
1546 | tabbable@6.2.0:
1547 | resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
1548 |
1549 | text-segmentation@1.0.3:
1550 | resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==}
1551 |
1552 | text-table@0.2.0:
1553 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1554 |
1555 | to-fast-properties@2.0.0:
1556 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1557 | engines: {node: '>=4'}
1558 |
1559 | to-regex-range@5.0.1:
1560 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1561 | engines: {node: '>=8.0'}
1562 |
1563 | ts-api-utils@1.3.0:
1564 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
1565 | engines: {node: '>=16'}
1566 | peerDependencies:
1567 | typescript: '>=4.2.0'
1568 |
1569 | tslib@2.6.2:
1570 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
1571 |
1572 | type-check@0.4.0:
1573 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1574 | engines: {node: '>= 0.8.0'}
1575 |
1576 | type-fest@0.20.2:
1577 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
1578 | engines: {node: '>=10'}
1579 |
1580 | typescript@5.4.5:
1581 | resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
1582 | engines: {node: '>=14.17'}
1583 | hasBin: true
1584 |
1585 | undici-types@5.26.5:
1586 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
1587 |
1588 | update-browserslist-db@1.0.16:
1589 | resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
1590 | hasBin: true
1591 | peerDependencies:
1592 | browserslist: '>= 4.21.0'
1593 |
1594 | uri-js@4.4.1:
1595 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1596 |
1597 | use-callback-ref@1.3.2:
1598 | resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
1599 | engines: {node: '>=10'}
1600 | peerDependencies:
1601 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1602 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1603 | peerDependenciesMeta:
1604 | '@types/react':
1605 | optional: true
1606 |
1607 | use-composed-ref@1.3.0:
1608 | resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==}
1609 | peerDependencies:
1610 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1611 |
1612 | use-isomorphic-layout-effect@1.1.2:
1613 | resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
1614 | peerDependencies:
1615 | '@types/react': '*'
1616 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1617 | peerDependenciesMeta:
1618 | '@types/react':
1619 | optional: true
1620 |
1621 | use-latest@1.2.1:
1622 | resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
1623 | peerDependencies:
1624 | '@types/react': '*'
1625 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1626 | peerDependenciesMeta:
1627 | '@types/react':
1628 | optional: true
1629 |
1630 | use-sidecar@1.1.2:
1631 | resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
1632 | engines: {node: '>=10'}
1633 | peerDependencies:
1634 | '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
1635 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1636 | peerDependenciesMeta:
1637 | '@types/react':
1638 | optional: true
1639 |
1640 | util-deprecate@1.0.2:
1641 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1642 |
1643 | utrie@1.0.2:
1644 | resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==}
1645 |
1646 | vite@5.2.11:
1647 | resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==}
1648 | engines: {node: ^18.0.0 || >=20.0.0}
1649 | hasBin: true
1650 | peerDependencies:
1651 | '@types/node': ^18.0.0 || >=20.0.0
1652 | less: '*'
1653 | lightningcss: ^1.21.0
1654 | sass: '*'
1655 | stylus: '*'
1656 | sugarss: '*'
1657 | terser: ^5.4.0
1658 | peerDependenciesMeta:
1659 | '@types/node':
1660 | optional: true
1661 | less:
1662 | optional: true
1663 | lightningcss:
1664 | optional: true
1665 | sass:
1666 | optional: true
1667 | stylus:
1668 | optional: true
1669 | sugarss:
1670 | optional: true
1671 | terser:
1672 | optional: true
1673 |
1674 | which@2.0.2:
1675 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1676 | engines: {node: '>= 8'}
1677 | hasBin: true
1678 |
1679 | word-wrap@1.2.5:
1680 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1681 | engines: {node: '>=0.10.0'}
1682 |
1683 | wrappy@1.0.2:
1684 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1685 |
1686 | yallist@3.1.1:
1687 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
1688 |
1689 | yaml@1.10.2:
1690 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1691 | engines: {node: '>= 6'}
1692 |
1693 | yocto-queue@0.1.0:
1694 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1695 | engines: {node: '>=10'}
1696 |
1697 | snapshots:
1698 |
1699 | '@ampproject/remapping@2.3.0':
1700 | dependencies:
1701 | '@jridgewell/gen-mapping': 0.3.5
1702 | '@jridgewell/trace-mapping': 0.3.25
1703 |
1704 | '@babel/code-frame@7.24.2':
1705 | dependencies:
1706 | '@babel/highlight': 7.24.5
1707 | picocolors: 1.0.1
1708 |
1709 | '@babel/compat-data@7.24.4': {}
1710 |
1711 | '@babel/core@7.24.5':
1712 | dependencies:
1713 | '@ampproject/remapping': 2.3.0
1714 | '@babel/code-frame': 7.24.2
1715 | '@babel/generator': 7.24.5
1716 | '@babel/helper-compilation-targets': 7.23.6
1717 | '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5)
1718 | '@babel/helpers': 7.24.5
1719 | '@babel/parser': 7.24.5
1720 | '@babel/template': 7.24.0
1721 | '@babel/traverse': 7.24.5
1722 | '@babel/types': 7.24.5
1723 | convert-source-map: 2.0.0
1724 | debug: 4.3.4
1725 | gensync: 1.0.0-beta.2
1726 | json5: 2.2.3
1727 | semver: 6.3.1
1728 | transitivePeerDependencies:
1729 | - supports-color
1730 |
1731 | '@babel/generator@7.24.5':
1732 | dependencies:
1733 | '@babel/types': 7.24.5
1734 | '@jridgewell/gen-mapping': 0.3.5
1735 | '@jridgewell/trace-mapping': 0.3.25
1736 | jsesc: 2.5.2
1737 |
1738 | '@babel/helper-compilation-targets@7.23.6':
1739 | dependencies:
1740 | '@babel/compat-data': 7.24.4
1741 | '@babel/helper-validator-option': 7.23.5
1742 | browserslist: 4.23.0
1743 | lru-cache: 5.1.1
1744 | semver: 6.3.1
1745 |
1746 | '@babel/helper-environment-visitor@7.22.20': {}
1747 |
1748 | '@babel/helper-function-name@7.23.0':
1749 | dependencies:
1750 | '@babel/template': 7.24.0
1751 | '@babel/types': 7.24.5
1752 |
1753 | '@babel/helper-hoist-variables@7.22.5':
1754 | dependencies:
1755 | '@babel/types': 7.24.5
1756 |
1757 | '@babel/helper-module-imports@7.24.3':
1758 | dependencies:
1759 | '@babel/types': 7.24.5
1760 |
1761 | '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)':
1762 | dependencies:
1763 | '@babel/core': 7.24.5
1764 | '@babel/helper-environment-visitor': 7.22.20
1765 | '@babel/helper-module-imports': 7.24.3
1766 | '@babel/helper-simple-access': 7.24.5
1767 | '@babel/helper-split-export-declaration': 7.24.5
1768 | '@babel/helper-validator-identifier': 7.24.5
1769 |
1770 | '@babel/helper-plugin-utils@7.24.5': {}
1771 |
1772 | '@babel/helper-simple-access@7.24.5':
1773 | dependencies:
1774 | '@babel/types': 7.24.5
1775 |
1776 | '@babel/helper-split-export-declaration@7.24.5':
1777 | dependencies:
1778 | '@babel/types': 7.24.5
1779 |
1780 | '@babel/helper-string-parser@7.24.1': {}
1781 |
1782 | '@babel/helper-validator-identifier@7.24.5': {}
1783 |
1784 | '@babel/helper-validator-option@7.23.5': {}
1785 |
1786 | '@babel/helpers@7.24.5':
1787 | dependencies:
1788 | '@babel/template': 7.24.0
1789 | '@babel/traverse': 7.24.5
1790 | '@babel/types': 7.24.5
1791 | transitivePeerDependencies:
1792 | - supports-color
1793 |
1794 | '@babel/highlight@7.24.5':
1795 | dependencies:
1796 | '@babel/helper-validator-identifier': 7.24.5
1797 | chalk: 2.4.2
1798 | js-tokens: 4.0.0
1799 | picocolors: 1.0.1
1800 |
1801 | '@babel/parser@7.24.5':
1802 | dependencies:
1803 | '@babel/types': 7.24.5
1804 |
1805 | '@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5)':
1806 | dependencies:
1807 | '@babel/core': 7.24.5
1808 | '@babel/helper-plugin-utils': 7.24.5
1809 |
1810 | '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5)':
1811 | dependencies:
1812 | '@babel/core': 7.24.5
1813 | '@babel/helper-plugin-utils': 7.24.5
1814 |
1815 | '@babel/runtime@7.24.5':
1816 | dependencies:
1817 | regenerator-runtime: 0.14.1
1818 |
1819 | '@babel/template@7.24.0':
1820 | dependencies:
1821 | '@babel/code-frame': 7.24.2
1822 | '@babel/parser': 7.24.5
1823 | '@babel/types': 7.24.5
1824 |
1825 | '@babel/traverse@7.24.5':
1826 | dependencies:
1827 | '@babel/code-frame': 7.24.2
1828 | '@babel/generator': 7.24.5
1829 | '@babel/helper-environment-visitor': 7.22.20
1830 | '@babel/helper-function-name': 7.23.0
1831 | '@babel/helper-hoist-variables': 7.22.5
1832 | '@babel/helper-split-export-declaration': 7.24.5
1833 | '@babel/parser': 7.24.5
1834 | '@babel/types': 7.24.5
1835 | debug: 4.3.4
1836 | globals: 11.12.0
1837 | transitivePeerDependencies:
1838 | - supports-color
1839 |
1840 | '@babel/types@7.24.5':
1841 | dependencies:
1842 | '@babel/helper-string-parser': 7.24.1
1843 | '@babel/helper-validator-identifier': 7.24.5
1844 | to-fast-properties: 2.0.0
1845 |
1846 | '@emotion/babel-plugin@11.11.0':
1847 | dependencies:
1848 | '@babel/helper-module-imports': 7.24.3
1849 | '@babel/runtime': 7.24.5
1850 | '@emotion/hash': 0.9.1
1851 | '@emotion/memoize': 0.8.1
1852 | '@emotion/serialize': 1.1.4
1853 | babel-plugin-macros: 3.1.0
1854 | convert-source-map: 1.9.0
1855 | escape-string-regexp: 4.0.0
1856 | find-root: 1.1.0
1857 | source-map: 0.5.7
1858 | stylis: 4.2.0
1859 |
1860 | '@emotion/cache@11.11.0':
1861 | dependencies:
1862 | '@emotion/memoize': 0.8.1
1863 | '@emotion/sheet': 1.2.2
1864 | '@emotion/utils': 1.2.1
1865 | '@emotion/weak-memoize': 0.3.1
1866 | stylis: 4.2.0
1867 |
1868 | '@emotion/hash@0.9.1': {}
1869 |
1870 | '@emotion/is-prop-valid@1.2.2':
1871 | dependencies:
1872 | '@emotion/memoize': 0.8.1
1873 |
1874 | '@emotion/memoize@0.8.1': {}
1875 |
1876 | '@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1)':
1877 | dependencies:
1878 | '@babel/runtime': 7.24.5
1879 | '@emotion/babel-plugin': 11.11.0
1880 | '@emotion/cache': 11.11.0
1881 | '@emotion/serialize': 1.1.4
1882 | '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
1883 | '@emotion/utils': 1.2.1
1884 | '@emotion/weak-memoize': 0.3.1
1885 | hoist-non-react-statics: 3.3.2
1886 | react: 18.3.1
1887 | optionalDependencies:
1888 | '@types/react': 18.3.2
1889 |
1890 | '@emotion/serialize@1.1.4':
1891 | dependencies:
1892 | '@emotion/hash': 0.9.1
1893 | '@emotion/memoize': 0.8.1
1894 | '@emotion/unitless': 0.8.1
1895 | '@emotion/utils': 1.2.1
1896 | csstype: 3.1.3
1897 |
1898 | '@emotion/sheet@1.2.2': {}
1899 |
1900 | '@emotion/unitless@0.8.1': {}
1901 |
1902 | '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1)':
1903 | dependencies:
1904 | react: 18.3.1
1905 |
1906 | '@emotion/utils@1.2.1': {}
1907 |
1908 | '@emotion/weak-memoize@0.3.1': {}
1909 |
1910 | '@esbuild/aix-ppc64@0.20.2':
1911 | optional: true
1912 |
1913 | '@esbuild/android-arm64@0.20.2':
1914 | optional: true
1915 |
1916 | '@esbuild/android-arm@0.20.2':
1917 | optional: true
1918 |
1919 | '@esbuild/android-x64@0.20.2':
1920 | optional: true
1921 |
1922 | '@esbuild/darwin-arm64@0.20.2':
1923 | optional: true
1924 |
1925 | '@esbuild/darwin-x64@0.20.2':
1926 | optional: true
1927 |
1928 | '@esbuild/freebsd-arm64@0.20.2':
1929 | optional: true
1930 |
1931 | '@esbuild/freebsd-x64@0.20.2':
1932 | optional: true
1933 |
1934 | '@esbuild/linux-arm64@0.20.2':
1935 | optional: true
1936 |
1937 | '@esbuild/linux-arm@0.20.2':
1938 | optional: true
1939 |
1940 | '@esbuild/linux-ia32@0.20.2':
1941 | optional: true
1942 |
1943 | '@esbuild/linux-loong64@0.20.2':
1944 | optional: true
1945 |
1946 | '@esbuild/linux-mips64el@0.20.2':
1947 | optional: true
1948 |
1949 | '@esbuild/linux-ppc64@0.20.2':
1950 | optional: true
1951 |
1952 | '@esbuild/linux-riscv64@0.20.2':
1953 | optional: true
1954 |
1955 | '@esbuild/linux-s390x@0.20.2':
1956 | optional: true
1957 |
1958 | '@esbuild/linux-x64@0.20.2':
1959 | optional: true
1960 |
1961 | '@esbuild/netbsd-x64@0.20.2':
1962 | optional: true
1963 |
1964 | '@esbuild/openbsd-x64@0.20.2':
1965 | optional: true
1966 |
1967 | '@esbuild/sunos-x64@0.20.2':
1968 | optional: true
1969 |
1970 | '@esbuild/win32-arm64@0.20.2':
1971 | optional: true
1972 |
1973 | '@esbuild/win32-ia32@0.20.2':
1974 | optional: true
1975 |
1976 | '@esbuild/win32-x64@0.20.2':
1977 | optional: true
1978 |
1979 | '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
1980 | dependencies:
1981 | eslint: 8.57.0
1982 | eslint-visitor-keys: 3.4.3
1983 |
1984 | '@eslint-community/regexpp@4.10.0': {}
1985 |
1986 | '@eslint/eslintrc@2.1.4':
1987 | dependencies:
1988 | ajv: 6.12.6
1989 | debug: 4.3.4
1990 | espree: 9.6.1
1991 | globals: 13.24.0
1992 | ignore: 5.3.1
1993 | import-fresh: 3.3.0
1994 | js-yaml: 4.1.0
1995 | minimatch: 3.1.2
1996 | strip-json-comments: 3.1.1
1997 | transitivePeerDependencies:
1998 | - supports-color
1999 |
2000 | '@eslint/js@8.57.0': {}
2001 |
2002 | '@floating-ui/core@1.6.1':
2003 | dependencies:
2004 | '@floating-ui/utils': 0.2.2
2005 |
2006 | '@floating-ui/dom@1.6.5':
2007 | dependencies:
2008 | '@floating-ui/core': 1.6.1
2009 | '@floating-ui/utils': 0.2.2
2010 |
2011 | '@floating-ui/react-dom@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2012 | dependencies:
2013 | '@floating-ui/dom': 1.6.5
2014 | react: 18.3.1
2015 | react-dom: 18.3.1(react@18.3.1)
2016 |
2017 | '@floating-ui/react@0.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2018 | dependencies:
2019 | '@floating-ui/react-dom': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
2020 | aria-hidden: 1.2.4
2021 | react: 18.3.1
2022 | react-dom: 18.3.1(react@18.3.1)
2023 | tabbable: 6.2.0
2024 |
2025 | '@floating-ui/utils@0.2.2': {}
2026 |
2027 | '@fortawesome/fontawesome-common-types@6.5.2': {}
2028 |
2029 | '@fortawesome/fontawesome-svg-core@6.5.2':
2030 | dependencies:
2031 | '@fortawesome/fontawesome-common-types': 6.5.2
2032 |
2033 | '@fortawesome/free-solid-svg-icons@6.5.2':
2034 | dependencies:
2035 | '@fortawesome/fontawesome-common-types': 6.5.2
2036 |
2037 | '@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.3.1)':
2038 | dependencies:
2039 | '@fortawesome/fontawesome-svg-core': 6.5.2
2040 | prop-types: 15.8.1
2041 | react: 18.3.1
2042 |
2043 | '@humanwhocodes/config-array@0.11.14':
2044 | dependencies:
2045 | '@humanwhocodes/object-schema': 2.0.3
2046 | debug: 4.3.4
2047 | minimatch: 3.1.2
2048 | transitivePeerDependencies:
2049 | - supports-color
2050 |
2051 | '@humanwhocodes/module-importer@1.0.1': {}
2052 |
2053 | '@humanwhocodes/object-schema@2.0.3': {}
2054 |
2055 | '@jridgewell/gen-mapping@0.3.5':
2056 | dependencies:
2057 | '@jridgewell/set-array': 1.2.1
2058 | '@jridgewell/sourcemap-codec': 1.4.15
2059 | '@jridgewell/trace-mapping': 0.3.25
2060 |
2061 | '@jridgewell/resolve-uri@3.1.2': {}
2062 |
2063 | '@jridgewell/set-array@1.2.1': {}
2064 |
2065 | '@jridgewell/sourcemap-codec@1.4.15': {}
2066 |
2067 | '@jridgewell/trace-mapping@0.3.25':
2068 | dependencies:
2069 | '@jridgewell/resolve-uri': 3.1.2
2070 | '@jridgewell/sourcemap-codec': 1.4.15
2071 |
2072 | '@mantine/core@6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(@mantine/hooks@6.0.21(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2073 | dependencies:
2074 | '@floating-ui/react': 0.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
2075 | '@mantine/hooks': 6.0.21(react@18.3.1)
2076 | '@mantine/styles': 6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
2077 | '@mantine/utils': 6.0.21(react@18.3.1)
2078 | '@radix-ui/react-scroll-area': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
2079 | react: 18.3.1
2080 | react-dom: 18.3.1(react@18.3.1)
2081 | react-remove-scroll: 2.5.10(@types/react@18.3.2)(react@18.3.1)
2082 | react-textarea-autosize: 8.3.4(@types/react@18.3.2)(react@18.3.1)
2083 | transitivePeerDependencies:
2084 | - '@emotion/react'
2085 | - '@types/react'
2086 |
2087 | '@mantine/form@7.9.1(react@18.3.1)':
2088 | dependencies:
2089 | fast-deep-equal: 3.1.3
2090 | klona: 2.0.6
2091 | react: 18.3.1
2092 |
2093 | '@mantine/hooks@6.0.21(react@18.3.1)':
2094 | dependencies:
2095 | react: 18.3.1
2096 |
2097 | '@mantine/modals@6.0.21(@mantine/core@6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(@mantine/hooks@6.0.21(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@6.0.21(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2098 | dependencies:
2099 | '@mantine/core': 6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(@mantine/hooks@6.0.21(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
2100 | '@mantine/hooks': 6.0.21(react@18.3.1)
2101 | '@mantine/utils': 6.0.21(react@18.3.1)
2102 | react: 18.3.1
2103 | react-dom: 18.3.1(react@18.3.1)
2104 |
2105 | '@mantine/styles@6.0.21(@emotion/react@11.11.4(@types/react@18.3.2)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2106 | dependencies:
2107 | '@emotion/react': 11.11.4(@types/react@18.3.2)(react@18.3.1)
2108 | clsx: 1.1.1
2109 | csstype: 3.0.9
2110 | react: 18.3.1
2111 | react-dom: 18.3.1(react@18.3.1)
2112 |
2113 | '@mantine/utils@6.0.21(react@18.3.1)':
2114 | dependencies:
2115 | react: 18.3.1
2116 |
2117 | '@nodelib/fs.scandir@2.1.5':
2118 | dependencies:
2119 | '@nodelib/fs.stat': 2.0.5
2120 | run-parallel: 1.2.0
2121 |
2122 | '@nodelib/fs.stat@2.0.5': {}
2123 |
2124 | '@nodelib/fs.walk@1.2.8':
2125 | dependencies:
2126 | '@nodelib/fs.scandir': 2.1.5
2127 | fastq: 1.17.1
2128 |
2129 | '@radix-ui/number@1.0.0':
2130 | dependencies:
2131 | '@babel/runtime': 7.24.5
2132 |
2133 | '@radix-ui/primitive@1.0.0':
2134 | dependencies:
2135 | '@babel/runtime': 7.24.5
2136 |
2137 | '@radix-ui/react-compose-refs@1.0.0(react@18.3.1)':
2138 | dependencies:
2139 | '@babel/runtime': 7.24.5
2140 | react: 18.3.1
2141 |
2142 | '@radix-ui/react-context@1.0.0(react@18.3.1)':
2143 | dependencies:
2144 | '@babel/runtime': 7.24.5
2145 | react: 18.3.1
2146 |
2147 | '@radix-ui/react-direction@1.0.0(react@18.3.1)':
2148 | dependencies:
2149 | '@babel/runtime': 7.24.5
2150 | react: 18.3.1
2151 |
2152 | '@radix-ui/react-presence@1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2153 | dependencies:
2154 | '@babel/runtime': 7.24.5
2155 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1)
2156 | '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.1)
2157 | react: 18.3.1
2158 | react-dom: 18.3.1(react@18.3.1)
2159 |
2160 | '@radix-ui/react-primitive@1.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2161 | dependencies:
2162 | '@babel/runtime': 7.24.5
2163 | '@radix-ui/react-slot': 1.0.1(react@18.3.1)
2164 | react: 18.3.1
2165 | react-dom: 18.3.1(react@18.3.1)
2166 |
2167 | '@radix-ui/react-scroll-area@1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2168 | dependencies:
2169 | '@babel/runtime': 7.24.5
2170 | '@radix-ui/number': 1.0.0
2171 | '@radix-ui/primitive': 1.0.0
2172 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1)
2173 | '@radix-ui/react-context': 1.0.0(react@18.3.1)
2174 | '@radix-ui/react-direction': 1.0.0(react@18.3.1)
2175 | '@radix-ui/react-presence': 1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
2176 | '@radix-ui/react-primitive': 1.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
2177 | '@radix-ui/react-use-callback-ref': 1.0.0(react@18.3.1)
2178 | '@radix-ui/react-use-layout-effect': 1.0.0(react@18.3.1)
2179 | react: 18.3.1
2180 | react-dom: 18.3.1(react@18.3.1)
2181 |
2182 | '@radix-ui/react-slot@1.0.1(react@18.3.1)':
2183 | dependencies:
2184 | '@babel/runtime': 7.24.5
2185 | '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1)
2186 | react: 18.3.1
2187 |
2188 | '@radix-ui/react-use-callback-ref@1.0.0(react@18.3.1)':
2189 | dependencies:
2190 | '@babel/runtime': 7.24.5
2191 | react: 18.3.1
2192 |
2193 | '@radix-ui/react-use-layout-effect@1.0.0(react@18.3.1)':
2194 | dependencies:
2195 | '@babel/runtime': 7.24.5
2196 | react: 18.3.1
2197 |
2198 | '@rollup/rollup-android-arm-eabi@4.17.2':
2199 | optional: true
2200 |
2201 | '@rollup/rollup-android-arm64@4.17.2':
2202 | optional: true
2203 |
2204 | '@rollup/rollup-darwin-arm64@4.17.2':
2205 | optional: true
2206 |
2207 | '@rollup/rollup-darwin-x64@4.17.2':
2208 | optional: true
2209 |
2210 | '@rollup/rollup-linux-arm-gnueabihf@4.17.2':
2211 | optional: true
2212 |
2213 | '@rollup/rollup-linux-arm-musleabihf@4.17.2':
2214 | optional: true
2215 |
2216 | '@rollup/rollup-linux-arm64-gnu@4.17.2':
2217 | optional: true
2218 |
2219 | '@rollup/rollup-linux-arm64-musl@4.17.2':
2220 | optional: true
2221 |
2222 | '@rollup/rollup-linux-powerpc64le-gnu@4.17.2':
2223 | optional: true
2224 |
2225 | '@rollup/rollup-linux-riscv64-gnu@4.17.2':
2226 | optional: true
2227 |
2228 | '@rollup/rollup-linux-s390x-gnu@4.17.2':
2229 | optional: true
2230 |
2231 | '@rollup/rollup-linux-x64-gnu@4.17.2':
2232 | optional: true
2233 |
2234 | '@rollup/rollup-linux-x64-musl@4.17.2':
2235 | optional: true
2236 |
2237 | '@rollup/rollup-win32-arm64-msvc@4.17.2':
2238 | optional: true
2239 |
2240 | '@rollup/rollup-win32-ia32-msvc@4.17.2':
2241 | optional: true
2242 |
2243 | '@rollup/rollup-win32-x64-msvc@4.17.2':
2244 | optional: true
2245 |
2246 | '@tabler/icons-react@2.47.0(react@18.3.1)':
2247 | dependencies:
2248 | '@tabler/icons': 2.47.0
2249 | prop-types: 15.8.1
2250 | react: 18.3.1
2251 |
2252 | '@tabler/icons@2.47.0': {}
2253 |
2254 | '@types/babel__core@7.20.5':
2255 | dependencies:
2256 | '@babel/parser': 7.24.5
2257 | '@babel/types': 7.24.5
2258 | '@types/babel__generator': 7.6.8
2259 | '@types/babel__template': 7.4.4
2260 | '@types/babel__traverse': 7.20.5
2261 |
2262 | '@types/babel__generator@7.6.8':
2263 | dependencies:
2264 | '@babel/types': 7.24.5
2265 |
2266 | '@types/babel__template@7.4.4':
2267 | dependencies:
2268 | '@babel/parser': 7.24.5
2269 | '@babel/types': 7.24.5
2270 |
2271 | '@types/babel__traverse@7.20.5':
2272 | dependencies:
2273 | '@babel/types': 7.24.5
2274 |
2275 | '@types/estree@1.0.5': {}
2276 |
2277 | '@types/json-schema@7.0.15': {}
2278 |
2279 | '@types/node@20.12.12':
2280 | dependencies:
2281 | undici-types: 5.26.5
2282 |
2283 | '@types/parse-json@4.0.2': {}
2284 |
2285 | '@types/prop-types@15.7.12': {}
2286 |
2287 | '@types/react-dom@18.3.0':
2288 | dependencies:
2289 | '@types/react': 18.3.2
2290 |
2291 | '@types/react@18.3.2':
2292 | dependencies:
2293 | '@types/prop-types': 15.7.12
2294 | csstype: 3.1.3
2295 |
2296 | '@types/semver@7.5.8': {}
2297 |
2298 | '@types/stylis@4.2.5': {}
2299 |
2300 | '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)':
2301 | dependencies:
2302 | '@eslint-community/regexpp': 4.10.0
2303 | '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
2304 | '@typescript-eslint/scope-manager': 6.21.0
2305 | '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
2306 | '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
2307 | '@typescript-eslint/visitor-keys': 6.21.0
2308 | debug: 4.3.4
2309 | eslint: 8.57.0
2310 | graphemer: 1.4.0
2311 | ignore: 5.3.1
2312 | natural-compare: 1.4.0
2313 | semver: 7.6.2
2314 | ts-api-utils: 1.3.0(typescript@5.4.5)
2315 | optionalDependencies:
2316 | typescript: 5.4.5
2317 | transitivePeerDependencies:
2318 | - supports-color
2319 |
2320 | '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5)':
2321 | dependencies:
2322 | '@typescript-eslint/scope-manager': 6.21.0
2323 | '@typescript-eslint/types': 6.21.0
2324 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5)
2325 | '@typescript-eslint/visitor-keys': 6.21.0
2326 | debug: 4.3.4
2327 | eslint: 8.57.0
2328 | optionalDependencies:
2329 | typescript: 5.4.5
2330 | transitivePeerDependencies:
2331 | - supports-color
2332 |
2333 | '@typescript-eslint/scope-manager@6.21.0':
2334 | dependencies:
2335 | '@typescript-eslint/types': 6.21.0
2336 | '@typescript-eslint/visitor-keys': 6.21.0
2337 |
2338 | '@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5)':
2339 | dependencies:
2340 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5)
2341 | '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
2342 | debug: 4.3.4
2343 | eslint: 8.57.0
2344 | ts-api-utils: 1.3.0(typescript@5.4.5)
2345 | optionalDependencies:
2346 | typescript: 5.4.5
2347 | transitivePeerDependencies:
2348 | - supports-color
2349 |
2350 | '@typescript-eslint/types@6.21.0': {}
2351 |
2352 | '@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5)':
2353 | dependencies:
2354 | '@typescript-eslint/types': 6.21.0
2355 | '@typescript-eslint/visitor-keys': 6.21.0
2356 | debug: 4.3.4
2357 | globby: 11.1.0
2358 | is-glob: 4.0.3
2359 | minimatch: 9.0.3
2360 | semver: 7.6.2
2361 | ts-api-utils: 1.3.0(typescript@5.4.5)
2362 | optionalDependencies:
2363 | typescript: 5.4.5
2364 | transitivePeerDependencies:
2365 | - supports-color
2366 |
2367 | '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5)':
2368 | dependencies:
2369 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
2370 | '@types/json-schema': 7.0.15
2371 | '@types/semver': 7.5.8
2372 | '@typescript-eslint/scope-manager': 6.21.0
2373 | '@typescript-eslint/types': 6.21.0
2374 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5)
2375 | eslint: 8.57.0
2376 | semver: 7.6.2
2377 | transitivePeerDependencies:
2378 | - supports-color
2379 | - typescript
2380 |
2381 | '@typescript-eslint/visitor-keys@6.21.0':
2382 | dependencies:
2383 | '@typescript-eslint/types': 6.21.0
2384 | eslint-visitor-keys: 3.4.3
2385 |
2386 | '@ungap/structured-clone@1.2.0': {}
2387 |
2388 | '@vitejs/plugin-react@4.2.1(vite@5.2.11(@types/node@20.12.12)(sass@1.77.1)(sugarss@4.0.1(postcss@8.4.38)))':
2389 | dependencies:
2390 | '@babel/core': 7.24.5
2391 | '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5)
2392 | '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5)
2393 | '@types/babel__core': 7.20.5
2394 | react-refresh: 0.14.2
2395 | vite: 5.2.11(@types/node@20.12.12)(sass@1.77.1)(sugarss@4.0.1(postcss@8.4.38))
2396 | transitivePeerDependencies:
2397 | - supports-color
2398 |
2399 | acorn-jsx@5.3.2(acorn@8.11.3):
2400 | dependencies:
2401 | acorn: 8.11.3
2402 |
2403 | acorn@8.11.3: {}
2404 |
2405 | ajv@6.12.6:
2406 | dependencies:
2407 | fast-deep-equal: 3.1.3
2408 | fast-json-stable-stringify: 2.1.0
2409 | json-schema-traverse: 0.4.1
2410 | uri-js: 4.4.1
2411 |
2412 | ansi-regex@5.0.1: {}
2413 |
2414 | ansi-styles@3.2.1:
2415 | dependencies:
2416 | color-convert: 1.9.3
2417 |
2418 | ansi-styles@4.3.0:
2419 | dependencies:
2420 | color-convert: 2.0.1
2421 |
2422 | anymatch@3.1.3:
2423 | dependencies:
2424 | normalize-path: 3.0.0
2425 | picomatch: 2.3.1
2426 |
2427 | argparse@2.0.1: {}
2428 |
2429 | aria-hidden@1.2.4:
2430 | dependencies:
2431 | tslib: 2.6.2
2432 |
2433 | array-union@2.1.0: {}
2434 |
2435 | babel-plugin-macros@3.1.0:
2436 | dependencies:
2437 | '@babel/runtime': 7.24.5
2438 | cosmiconfig: 7.1.0
2439 | resolve: 1.22.8
2440 |
2441 | balanced-match@1.0.2: {}
2442 |
2443 | base64-arraybuffer@1.0.2: {}
2444 |
2445 | binary-extensions@2.3.0: {}
2446 |
2447 | brace-expansion@1.1.11:
2448 | dependencies:
2449 | balanced-match: 1.0.2
2450 | concat-map: 0.0.1
2451 |
2452 | brace-expansion@2.0.1:
2453 | dependencies:
2454 | balanced-match: 1.0.2
2455 |
2456 | braces@3.0.3:
2457 | dependencies:
2458 | fill-range: 7.1.1
2459 |
2460 | browserslist@4.23.0:
2461 | dependencies:
2462 | caniuse-lite: 1.0.30001618
2463 | electron-to-chromium: 1.4.768
2464 | node-releases: 2.0.14
2465 | update-browserslist-db: 1.0.16(browserslist@4.23.0)
2466 |
2467 | callsites@3.1.0: {}
2468 |
2469 | camelcase-css@2.0.1: {}
2470 |
2471 | camelize@1.0.1: {}
2472 |
2473 | caniuse-lite@1.0.30001618: {}
2474 |
2475 | chalk@2.4.2:
2476 | dependencies:
2477 | ansi-styles: 3.2.1
2478 | escape-string-regexp: 1.0.5
2479 | supports-color: 5.5.0
2480 |
2481 | chalk@4.1.2:
2482 | dependencies:
2483 | ansi-styles: 4.3.0
2484 | supports-color: 7.2.0
2485 |
2486 | chokidar@3.6.0:
2487 | dependencies:
2488 | anymatch: 3.1.3
2489 | braces: 3.0.3
2490 | glob-parent: 5.1.2
2491 | is-binary-path: 2.1.0
2492 | is-glob: 4.0.3
2493 | normalize-path: 3.0.0
2494 | readdirp: 3.6.0
2495 | optionalDependencies:
2496 | fsevents: 2.3.3
2497 |
2498 | clsx@1.1.1: {}
2499 |
2500 | color-convert@1.9.3:
2501 | dependencies:
2502 | color-name: 1.1.3
2503 |
2504 | color-convert@2.0.1:
2505 | dependencies:
2506 | color-name: 1.1.4
2507 |
2508 | color-name@1.1.3: {}
2509 |
2510 | color-name@1.1.4: {}
2511 |
2512 | concat-map@0.0.1: {}
2513 |
2514 | convert-source-map@1.9.0: {}
2515 |
2516 | convert-source-map@2.0.0: {}
2517 |
2518 | cosmiconfig@7.1.0:
2519 | dependencies:
2520 | '@types/parse-json': 4.0.2
2521 | import-fresh: 3.3.0
2522 | parse-json: 5.2.0
2523 | path-type: 4.0.0
2524 | yaml: 1.10.2
2525 |
2526 | cross-spawn@7.0.3:
2527 | dependencies:
2528 | path-key: 3.1.1
2529 | shebang-command: 2.0.0
2530 | which: 2.0.2
2531 |
2532 | css-color-keywords@1.0.0: {}
2533 |
2534 | css-line-break@2.1.0:
2535 | dependencies:
2536 | utrie: 1.0.2
2537 |
2538 | css-to-react-native@3.2.0:
2539 | dependencies:
2540 | camelize: 1.0.1
2541 | css-color-keywords: 1.0.0
2542 | postcss-value-parser: 4.2.0
2543 |
2544 | cssesc@3.0.0: {}
2545 |
2546 | csstype@3.0.9: {}
2547 |
2548 | csstype@3.1.3: {}
2549 |
2550 | debug@4.3.4:
2551 | dependencies:
2552 | ms: 2.1.2
2553 |
2554 | deep-is@0.1.4: {}
2555 |
2556 | detect-node-es@1.1.0: {}
2557 |
2558 | dir-glob@3.0.1:
2559 | dependencies:
2560 | path-type: 4.0.0
2561 |
2562 | doctrine@3.0.0:
2563 | dependencies:
2564 | esutils: 2.0.3
2565 |
2566 | electron-to-chromium@1.4.768: {}
2567 |
2568 | error-ex@1.3.2:
2569 | dependencies:
2570 | is-arrayish: 0.2.1
2571 |
2572 | esbuild@0.20.2:
2573 | optionalDependencies:
2574 | '@esbuild/aix-ppc64': 0.20.2
2575 | '@esbuild/android-arm': 0.20.2
2576 | '@esbuild/android-arm64': 0.20.2
2577 | '@esbuild/android-x64': 0.20.2
2578 | '@esbuild/darwin-arm64': 0.20.2
2579 | '@esbuild/darwin-x64': 0.20.2
2580 | '@esbuild/freebsd-arm64': 0.20.2
2581 | '@esbuild/freebsd-x64': 0.20.2
2582 | '@esbuild/linux-arm': 0.20.2
2583 | '@esbuild/linux-arm64': 0.20.2
2584 | '@esbuild/linux-ia32': 0.20.2
2585 | '@esbuild/linux-loong64': 0.20.2
2586 | '@esbuild/linux-mips64el': 0.20.2
2587 | '@esbuild/linux-ppc64': 0.20.2
2588 | '@esbuild/linux-riscv64': 0.20.2
2589 | '@esbuild/linux-s390x': 0.20.2
2590 | '@esbuild/linux-x64': 0.20.2
2591 | '@esbuild/netbsd-x64': 0.20.2
2592 | '@esbuild/openbsd-x64': 0.20.2
2593 | '@esbuild/sunos-x64': 0.20.2
2594 | '@esbuild/win32-arm64': 0.20.2
2595 | '@esbuild/win32-ia32': 0.20.2
2596 | '@esbuild/win32-x64': 0.20.2
2597 |
2598 | escalade@3.1.2: {}
2599 |
2600 | escape-string-regexp@1.0.5: {}
2601 |
2602 | escape-string-regexp@4.0.0: {}
2603 |
2604 | eslint-plugin-react-hooks@4.6.2(eslint@8.57.0):
2605 | dependencies:
2606 | eslint: 8.57.0
2607 |
2608 | eslint-plugin-react-refresh@0.4.7(eslint@8.57.0):
2609 | dependencies:
2610 | eslint: 8.57.0
2611 |
2612 | eslint-scope@7.2.2:
2613 | dependencies:
2614 | esrecurse: 4.3.0
2615 | estraverse: 5.3.0
2616 |
2617 | eslint-visitor-keys@3.4.3: {}
2618 |
2619 | eslint@8.57.0:
2620 | dependencies:
2621 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
2622 | '@eslint-community/regexpp': 4.10.0
2623 | '@eslint/eslintrc': 2.1.4
2624 | '@eslint/js': 8.57.0
2625 | '@humanwhocodes/config-array': 0.11.14
2626 | '@humanwhocodes/module-importer': 1.0.1
2627 | '@nodelib/fs.walk': 1.2.8
2628 | '@ungap/structured-clone': 1.2.0
2629 | ajv: 6.12.6
2630 | chalk: 4.1.2
2631 | cross-spawn: 7.0.3
2632 | debug: 4.3.4
2633 | doctrine: 3.0.0
2634 | escape-string-regexp: 4.0.0
2635 | eslint-scope: 7.2.2
2636 | eslint-visitor-keys: 3.4.3
2637 | espree: 9.6.1
2638 | esquery: 1.5.0
2639 | esutils: 2.0.3
2640 | fast-deep-equal: 3.1.3
2641 | file-entry-cache: 6.0.1
2642 | find-up: 5.0.0
2643 | glob-parent: 6.0.2
2644 | globals: 13.24.0
2645 | graphemer: 1.4.0
2646 | ignore: 5.3.1
2647 | imurmurhash: 0.1.4
2648 | is-glob: 4.0.3
2649 | is-path-inside: 3.0.3
2650 | js-yaml: 4.1.0
2651 | json-stable-stringify-without-jsonify: 1.0.1
2652 | levn: 0.4.1
2653 | lodash.merge: 4.6.2
2654 | minimatch: 3.1.2
2655 | natural-compare: 1.4.0
2656 | optionator: 0.9.4
2657 | strip-ansi: 6.0.1
2658 | text-table: 0.2.0
2659 | transitivePeerDependencies:
2660 | - supports-color
2661 |
2662 | espree@9.6.1:
2663 | dependencies:
2664 | acorn: 8.11.3
2665 | acorn-jsx: 5.3.2(acorn@8.11.3)
2666 | eslint-visitor-keys: 3.4.3
2667 |
2668 | esquery@1.5.0:
2669 | dependencies:
2670 | estraverse: 5.3.0
2671 |
2672 | esrecurse@4.3.0:
2673 | dependencies:
2674 | estraverse: 5.3.0
2675 |
2676 | estraverse@5.3.0: {}
2677 |
2678 | esutils@2.0.3: {}
2679 |
2680 | fast-deep-equal@3.1.3: {}
2681 |
2682 | fast-glob@3.3.2:
2683 | dependencies:
2684 | '@nodelib/fs.stat': 2.0.5
2685 | '@nodelib/fs.walk': 1.2.8
2686 | glob-parent: 5.1.2
2687 | merge2: 1.4.1
2688 | micromatch: 4.0.5
2689 |
2690 | fast-json-stable-stringify@2.1.0: {}
2691 |
2692 | fast-levenshtein@2.0.6: {}
2693 |
2694 | fastq@1.17.1:
2695 | dependencies:
2696 | reusify: 1.0.4
2697 |
2698 | file-entry-cache@6.0.1:
2699 | dependencies:
2700 | flat-cache: 3.2.0
2701 |
2702 | fill-range@7.1.1:
2703 | dependencies:
2704 | to-regex-range: 5.0.1
2705 |
2706 | find-root@1.1.0: {}
2707 |
2708 | find-up@5.0.0:
2709 | dependencies:
2710 | locate-path: 6.0.0
2711 | path-exists: 4.0.0
2712 |
2713 | flat-cache@3.2.0:
2714 | dependencies:
2715 | flatted: 3.3.1
2716 | keyv: 4.5.4
2717 | rimraf: 3.0.2
2718 |
2719 | flatted@3.3.1: {}
2720 |
2721 | fs.realpath@1.0.0: {}
2722 |
2723 | fsevents@2.3.3:
2724 | optional: true
2725 |
2726 | function-bind@1.1.2: {}
2727 |
2728 | gensync@1.0.0-beta.2: {}
2729 |
2730 | get-nonce@1.0.1: {}
2731 |
2732 | glob-parent@5.1.2:
2733 | dependencies:
2734 | is-glob: 4.0.3
2735 |
2736 | glob-parent@6.0.2:
2737 | dependencies:
2738 | is-glob: 4.0.3
2739 |
2740 | glob@7.2.3:
2741 | dependencies:
2742 | fs.realpath: 1.0.0
2743 | inflight: 1.0.6
2744 | inherits: 2.0.4
2745 | minimatch: 3.1.2
2746 | once: 1.4.0
2747 | path-is-absolute: 1.0.1
2748 |
2749 | globals@11.12.0: {}
2750 |
2751 | globals@13.24.0:
2752 | dependencies:
2753 | type-fest: 0.20.2
2754 |
2755 | globby@11.1.0:
2756 | dependencies:
2757 | array-union: 2.1.0
2758 | dir-glob: 3.0.1
2759 | fast-glob: 3.3.2
2760 | ignore: 5.3.1
2761 | merge2: 1.4.1
2762 | slash: 3.0.0
2763 |
2764 | graphemer@1.4.0: {}
2765 |
2766 | has-flag@3.0.0: {}
2767 |
2768 | has-flag@4.0.0: {}
2769 |
2770 | hasown@2.0.2:
2771 | dependencies:
2772 | function-bind: 1.1.2
2773 |
2774 | hoist-non-react-statics@3.3.2:
2775 | dependencies:
2776 | react-is: 16.13.1
2777 |
2778 | html2canvas@1.4.1:
2779 | dependencies:
2780 | css-line-break: 2.1.0
2781 | text-segmentation: 1.0.3
2782 |
2783 | ignore@5.3.1: {}
2784 |
2785 | immutable@4.3.6: {}
2786 |
2787 | import-fresh@3.3.0:
2788 | dependencies:
2789 | parent-module: 1.0.1
2790 | resolve-from: 4.0.0
2791 |
2792 | imurmurhash@0.1.4: {}
2793 |
2794 | inflight@1.0.6:
2795 | dependencies:
2796 | once: 1.4.0
2797 | wrappy: 1.0.2
2798 |
2799 | inherits@2.0.4: {}
2800 |
2801 | invariant@2.2.4:
2802 | dependencies:
2803 | loose-envify: 1.4.0
2804 |
2805 | is-arrayish@0.2.1: {}
2806 |
2807 | is-binary-path@2.1.0:
2808 | dependencies:
2809 | binary-extensions: 2.3.0
2810 |
2811 | is-core-module@2.13.1:
2812 | dependencies:
2813 | hasown: 2.0.2
2814 |
2815 | is-extglob@2.1.1: {}
2816 |
2817 | is-glob@4.0.3:
2818 | dependencies:
2819 | is-extglob: 2.1.1
2820 |
2821 | is-number@7.0.0: {}
2822 |
2823 | is-path-inside@3.0.3: {}
2824 |
2825 | isexe@2.0.0: {}
2826 |
2827 | js-tokens@4.0.0: {}
2828 |
2829 | js-yaml@4.1.0:
2830 | dependencies:
2831 | argparse: 2.0.1
2832 |
2833 | jsesc@2.5.2: {}
2834 |
2835 | json-buffer@3.0.1: {}
2836 |
2837 | json-parse-even-better-errors@2.3.1: {}
2838 |
2839 | json-schema-traverse@0.4.1: {}
2840 |
2841 | json-stable-stringify-without-jsonify@1.0.1: {}
2842 |
2843 | json5@2.2.3: {}
2844 |
2845 | keyv@4.5.4:
2846 | dependencies:
2847 | json-buffer: 3.0.1
2848 |
2849 | klona@2.0.6: {}
2850 |
2851 | levn@0.4.1:
2852 | dependencies:
2853 | prelude-ls: 1.2.1
2854 | type-check: 0.4.0
2855 |
2856 | lines-and-columns@1.2.4: {}
2857 |
2858 | locate-path@6.0.0:
2859 | dependencies:
2860 | p-locate: 5.0.0
2861 |
2862 | lodash.merge@4.6.2: {}
2863 |
2864 | loose-envify@1.4.0:
2865 | dependencies:
2866 | js-tokens: 4.0.0
2867 |
2868 | lru-cache@5.1.1:
2869 | dependencies:
2870 | yallist: 3.1.1
2871 |
2872 | merge2@1.4.1: {}
2873 |
2874 | micromatch@4.0.5:
2875 | dependencies:
2876 | braces: 3.0.3
2877 | picomatch: 2.3.1
2878 |
2879 | minimatch@3.1.2:
2880 | dependencies:
2881 | brace-expansion: 1.1.11
2882 |
2883 | minimatch@9.0.3:
2884 | dependencies:
2885 | brace-expansion: 2.0.1
2886 |
2887 | ms@2.1.2: {}
2888 |
2889 | nanoid@3.3.7: {}
2890 |
2891 | natural-compare@1.4.0: {}
2892 |
2893 | node-releases@2.0.14: {}
2894 |
2895 | normalize-path@3.0.0: {}
2896 |
2897 | object-assign@4.1.1: {}
2898 |
2899 | once@1.4.0:
2900 | dependencies:
2901 | wrappy: 1.0.2
2902 |
2903 | optionator@0.9.4:
2904 | dependencies:
2905 | deep-is: 0.1.4
2906 | fast-levenshtein: 2.0.6
2907 | levn: 0.4.1
2908 | prelude-ls: 1.2.1
2909 | type-check: 0.4.0
2910 | word-wrap: 1.2.5
2911 |
2912 | p-limit@3.1.0:
2913 | dependencies:
2914 | yocto-queue: 0.1.0
2915 |
2916 | p-locate@5.0.0:
2917 | dependencies:
2918 | p-limit: 3.1.0
2919 |
2920 | parent-module@1.0.1:
2921 | dependencies:
2922 | callsites: 3.1.0
2923 |
2924 | parse-json@5.2.0:
2925 | dependencies:
2926 | '@babel/code-frame': 7.24.2
2927 | error-ex: 1.3.2
2928 | json-parse-even-better-errors: 2.3.1
2929 | lines-and-columns: 1.2.4
2930 |
2931 | path-exists@4.0.0: {}
2932 |
2933 | path-is-absolute@1.0.1: {}
2934 |
2935 | path-key@3.1.1: {}
2936 |
2937 | path-parse@1.0.7: {}
2938 |
2939 | path-type@4.0.0: {}
2940 |
2941 | picocolors@1.0.1: {}
2942 |
2943 | picomatch@2.3.1: {}
2944 |
2945 | postcss-js@4.0.1(postcss@8.4.38):
2946 | dependencies:
2947 | camelcase-css: 2.0.1
2948 | postcss: 8.4.38
2949 |
2950 | postcss-mixins@9.0.4(postcss@8.4.38):
2951 | dependencies:
2952 | fast-glob: 3.3.2
2953 | postcss: 8.4.38
2954 | postcss-js: 4.0.1(postcss@8.4.38)
2955 | postcss-simple-vars: 7.0.1(postcss@8.4.38)
2956 | sugarss: 4.0.1(postcss@8.4.38)
2957 |
2958 | postcss-nested@6.0.1(postcss@8.4.38):
2959 | dependencies:
2960 | postcss: 8.4.38
2961 | postcss-selector-parser: 6.0.16
2962 |
2963 | postcss-preset-mantine@1.15.0(postcss@8.4.38):
2964 | dependencies:
2965 | postcss: 8.4.38
2966 | postcss-mixins: 9.0.4(postcss@8.4.38)
2967 | postcss-nested: 6.0.1(postcss@8.4.38)
2968 |
2969 | postcss-selector-parser@6.0.16:
2970 | dependencies:
2971 | cssesc: 3.0.0
2972 | util-deprecate: 1.0.2
2973 |
2974 | postcss-simple-vars@7.0.1(postcss@8.4.38):
2975 | dependencies:
2976 | postcss: 8.4.38
2977 |
2978 | postcss-value-parser@4.2.0: {}
2979 |
2980 | postcss@8.4.38:
2981 | dependencies:
2982 | nanoid: 3.3.7
2983 | picocolors: 1.0.1
2984 | source-map-js: 1.2.0
2985 |
2986 | prelude-ls@1.2.1: {}
2987 |
2988 | prop-types@15.8.1:
2989 | dependencies:
2990 | loose-envify: 1.4.0
2991 | object-assign: 4.1.1
2992 | react-is: 16.13.1
2993 |
2994 | punycode@2.3.1: {}
2995 |
2996 | queue-microtask@1.2.3: {}
2997 |
2998 | react-dom@18.3.1(react@18.3.1):
2999 | dependencies:
3000 | loose-envify: 1.4.0
3001 | react: 18.3.1
3002 | scheduler: 0.23.2
3003 |
3004 | react-icons@5.2.1(react@18.3.1):
3005 | dependencies:
3006 | react: 18.3.1
3007 |
3008 | react-is@16.13.1: {}
3009 |
3010 | react-refresh@0.14.2: {}
3011 |
3012 | react-remove-scroll-bar@2.3.6(@types/react@18.3.2)(react@18.3.1):
3013 | dependencies:
3014 | react: 18.3.1
3015 | react-style-singleton: 2.2.1(@types/react@18.3.2)(react@18.3.1)
3016 | tslib: 2.6.2
3017 | optionalDependencies:
3018 | '@types/react': 18.3.2
3019 |
3020 | react-remove-scroll@2.5.10(@types/react@18.3.2)(react@18.3.1):
3021 | dependencies:
3022 | react: 18.3.1
3023 | react-remove-scroll-bar: 2.3.6(@types/react@18.3.2)(react@18.3.1)
3024 | react-style-singleton: 2.2.1(@types/react@18.3.2)(react@18.3.1)
3025 | tslib: 2.6.2
3026 | use-callback-ref: 1.3.2(@types/react@18.3.2)(react@18.3.1)
3027 | use-sidecar: 1.1.2(@types/react@18.3.2)(react@18.3.1)
3028 | optionalDependencies:
3029 | '@types/react': 18.3.2
3030 |
3031 | react-style-singleton@2.2.1(@types/react@18.3.2)(react@18.3.1):
3032 | dependencies:
3033 | get-nonce: 1.0.1
3034 | invariant: 2.2.4
3035 | react: 18.3.1
3036 | tslib: 2.6.2
3037 | optionalDependencies:
3038 | '@types/react': 18.3.2
3039 |
3040 | react-textarea-autosize@8.3.4(@types/react@18.3.2)(react@18.3.1):
3041 | dependencies:
3042 | '@babel/runtime': 7.24.5
3043 | react: 18.3.1
3044 | use-composed-ref: 1.3.0(react@18.3.1)
3045 | use-latest: 1.2.1(@types/react@18.3.2)(react@18.3.1)
3046 | transitivePeerDependencies:
3047 | - '@types/react'
3048 |
3049 | react@18.3.1:
3050 | dependencies:
3051 | loose-envify: 1.4.0
3052 |
3053 | readdirp@3.6.0:
3054 | dependencies:
3055 | picomatch: 2.3.1
3056 |
3057 | regenerator-runtime@0.14.1: {}
3058 |
3059 | resolve-from@4.0.0: {}
3060 |
3061 | resolve@1.22.8:
3062 | dependencies:
3063 | is-core-module: 2.13.1
3064 | path-parse: 1.0.7
3065 | supports-preserve-symlinks-flag: 1.0.0
3066 |
3067 | reusify@1.0.4: {}
3068 |
3069 | rimraf@3.0.2:
3070 | dependencies:
3071 | glob: 7.2.3
3072 |
3073 | rollup@4.17.2:
3074 | dependencies:
3075 | '@types/estree': 1.0.5
3076 | optionalDependencies:
3077 | '@rollup/rollup-android-arm-eabi': 4.17.2
3078 | '@rollup/rollup-android-arm64': 4.17.2
3079 | '@rollup/rollup-darwin-arm64': 4.17.2
3080 | '@rollup/rollup-darwin-x64': 4.17.2
3081 | '@rollup/rollup-linux-arm-gnueabihf': 4.17.2
3082 | '@rollup/rollup-linux-arm-musleabihf': 4.17.2
3083 | '@rollup/rollup-linux-arm64-gnu': 4.17.2
3084 | '@rollup/rollup-linux-arm64-musl': 4.17.2
3085 | '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2
3086 | '@rollup/rollup-linux-riscv64-gnu': 4.17.2
3087 | '@rollup/rollup-linux-s390x-gnu': 4.17.2
3088 | '@rollup/rollup-linux-x64-gnu': 4.17.2
3089 | '@rollup/rollup-linux-x64-musl': 4.17.2
3090 | '@rollup/rollup-win32-arm64-msvc': 4.17.2
3091 | '@rollup/rollup-win32-ia32-msvc': 4.17.2
3092 | '@rollup/rollup-win32-x64-msvc': 4.17.2
3093 | fsevents: 2.3.3
3094 |
3095 | run-parallel@1.2.0:
3096 | dependencies:
3097 | queue-microtask: 1.2.3
3098 |
3099 | sass@1.77.1:
3100 | dependencies:
3101 | chokidar: 3.6.0
3102 | immutable: 4.3.6
3103 | source-map-js: 1.2.0
3104 |
3105 | scheduler@0.23.2:
3106 | dependencies:
3107 | loose-envify: 1.4.0
3108 |
3109 | semver@6.3.1: {}
3110 |
3111 | semver@7.6.2: {}
3112 |
3113 | shallowequal@1.1.0: {}
3114 |
3115 | shebang-command@2.0.0:
3116 | dependencies:
3117 | shebang-regex: 3.0.0
3118 |
3119 | shebang-regex@3.0.0: {}
3120 |
3121 | slash@3.0.0: {}
3122 |
3123 | source-map-js@1.2.0: {}
3124 |
3125 | source-map@0.5.7: {}
3126 |
3127 | strip-ansi@6.0.1:
3128 | dependencies:
3129 | ansi-regex: 5.0.1
3130 |
3131 | strip-json-comments@3.1.1: {}
3132 |
3133 | styled-components@6.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
3134 | dependencies:
3135 | '@emotion/is-prop-valid': 1.2.2
3136 | '@emotion/unitless': 0.8.1
3137 | '@types/stylis': 4.2.5
3138 | css-to-react-native: 3.2.0
3139 | csstype: 3.1.3
3140 | postcss: 8.4.38
3141 | react: 18.3.1
3142 | react-dom: 18.3.1(react@18.3.1)
3143 | shallowequal: 1.1.0
3144 | stylis: 4.3.2
3145 | tslib: 2.6.2
3146 |
3147 | stylis@4.2.0: {}
3148 |
3149 | stylis@4.3.2: {}
3150 |
3151 | sugarss@4.0.1(postcss@8.4.38):
3152 | dependencies:
3153 | postcss: 8.4.38
3154 |
3155 | supports-color@5.5.0:
3156 | dependencies:
3157 | has-flag: 3.0.0
3158 |
3159 | supports-color@7.2.0:
3160 | dependencies:
3161 | has-flag: 4.0.0
3162 |
3163 | supports-preserve-symlinks-flag@1.0.0: {}
3164 |
3165 | tabbable@6.2.0: {}
3166 |
3167 | text-segmentation@1.0.3:
3168 | dependencies:
3169 | utrie: 1.0.2
3170 |
3171 | text-table@0.2.0: {}
3172 |
3173 | to-fast-properties@2.0.0: {}
3174 |
3175 | to-regex-range@5.0.1:
3176 | dependencies:
3177 | is-number: 7.0.0
3178 |
3179 | ts-api-utils@1.3.0(typescript@5.4.5):
3180 | dependencies:
3181 | typescript: 5.4.5
3182 |
3183 | tslib@2.6.2: {}
3184 |
3185 | type-check@0.4.0:
3186 | dependencies:
3187 | prelude-ls: 1.2.1
3188 |
3189 | type-fest@0.20.2: {}
3190 |
3191 | typescript@5.4.5: {}
3192 |
3193 | undici-types@5.26.5: {}
3194 |
3195 | update-browserslist-db@1.0.16(browserslist@4.23.0):
3196 | dependencies:
3197 | browserslist: 4.23.0
3198 | escalade: 3.1.2
3199 | picocolors: 1.0.1
3200 |
3201 | uri-js@4.4.1:
3202 | dependencies:
3203 | punycode: 2.3.1
3204 |
3205 | use-callback-ref@1.3.2(@types/react@18.3.2)(react@18.3.1):
3206 | dependencies:
3207 | react: 18.3.1
3208 | tslib: 2.6.2
3209 | optionalDependencies:
3210 | '@types/react': 18.3.2
3211 |
3212 | use-composed-ref@1.3.0(react@18.3.1):
3213 | dependencies:
3214 | react: 18.3.1
3215 |
3216 | use-isomorphic-layout-effect@1.1.2(@types/react@18.3.2)(react@18.3.1):
3217 | dependencies:
3218 | react: 18.3.1
3219 | optionalDependencies:
3220 | '@types/react': 18.3.2
3221 |
3222 | use-latest@1.2.1(@types/react@18.3.2)(react@18.3.1):
3223 | dependencies:
3224 | react: 18.3.1
3225 | use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.2)(react@18.3.1)
3226 | optionalDependencies:
3227 | '@types/react': 18.3.2
3228 |
3229 | use-sidecar@1.1.2(@types/react@18.3.2)(react@18.3.1):
3230 | dependencies:
3231 | detect-node-es: 1.1.0
3232 | react: 18.3.1
3233 | tslib: 2.6.2
3234 | optionalDependencies:
3235 | '@types/react': 18.3.2
3236 |
3237 | util-deprecate@1.0.2: {}
3238 |
3239 | utrie@1.0.2:
3240 | dependencies:
3241 | base64-arraybuffer: 1.0.2
3242 |
3243 | vite@5.2.11(@types/node@20.12.12)(sass@1.77.1)(sugarss@4.0.1(postcss@8.4.38)):
3244 | dependencies:
3245 | esbuild: 0.20.2
3246 | postcss: 8.4.38
3247 | rollup: 4.17.2
3248 | optionalDependencies:
3249 | '@types/node': 20.12.12
3250 | fsevents: 2.3.3
3251 | sass: 1.77.1
3252 | sugarss: 4.0.1(postcss@8.4.38)
3253 |
3254 | which@2.0.2:
3255 | dependencies:
3256 | isexe: 2.0.0
3257 |
3258 | word-wrap@1.2.5: {}
3259 |
3260 | wrappy@1.0.2: {}
3261 |
3262 | yallist@3.1.1: {}
3263 |
3264 | yaml@1.10.2: {}
3265 |
3266 | yocto-queue@0.1.0: {}
3267 |
--------------------------------------------------------------------------------
/web/src/assets/fonts/digital-7.ttf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:ec3ac662132b9a60e3b09b8a971a131a55aeee1447146aa38ea7b32d777bc3c8
3 | size 34360
4 |
--------------------------------------------------------------------------------
/web/src/components/HUDSettings.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from 'react';
2 | import { Drawer, Group, ColorInput, Select, Accordion, Avatar, Button, Title, Tabs, Text, Slider } from '@mantine/core';
3 | import { FaMicrophoneSlash, FaMicrophone, FaWalkieTalkie, FaHeart, FaShield, FaGasPump } from "react-icons/fa6";
4 | import { TbLungsFilled } from 'react-icons/tb';
5 | import { MdLocalDrink, MdRestaurant } from "react-icons/md";
6 | import { PiEngineFill } from "react-icons/pi";
7 | import { IoSettingsOutline } from "react-icons/io5";
8 | import { fetchNui } from "../utils/fetchNui";
9 | import { useNuiEvent } from "../hooks/useNuiEvent";
10 |
11 | interface HUDSettingsProps {
12 | opened: boolean;
13 | onClose: () => void;
14 | colors: any;
15 | setColors: (colors: any) => void;
16 | position: string;
17 | setPosition: (position: string) => void;
18 | hudType: string;
19 | setHudType: (hudType: string) => void;
20 | vehicleType: string;
21 | setVehicleType: (vehicleType: string) => void;
22 | }
23 |
24 | const defaultColors = {
25 | voiceInactive: '#6c757d',
26 | voiceActive: '#ffd43b',
27 | voiceRadio: '#1c7ed6',
28 | health: '#51cf66',
29 | armor: '#74c0fc',
30 | oxygen: '#339af0',
31 | hunger: '#fcc419',
32 | thirst: '#22b8cf',
33 | stress: '#ff6b6b',
34 | engine: '#6c757d',
35 | fuel: '#6c757d',
36 | };
37 |
38 | const HUDSettings: React.FC = ({ opened, onClose, colors, setColors, position, setPosition, hudType, setHudType, vehicleType, setVehicleType }) => {
39 | const [cinematicEnabled, setCinematicEnabled] = useState('disabled');
40 |
41 | useEffect(() => {
42 | fetchNui('getCinematicBarsState')
43 | }, []);
44 |
45 | const resetColors = () => {
46 | setColors(defaultColors);
47 | handleColorChange(defaultColors);
48 | };
49 |
50 | const handleColorChange = (updatedColors: any) => {
51 | setColors(updatedColors);
52 | fetchNui('updateColors', { colors: updatedColors })
53 | };
54 |
55 | const handleHudTypeChange = (value: string) => {
56 | setHudType(value || 'circle');
57 | fetchNui('updateHudType', { hudType: value || 'circle' })
58 | };
59 |
60 | const handlePositionChange = (value: string) => {
61 | setPosition(value || 'left');
62 | fetchNui('updateHudPosition', { hudPosition: value || 'left' })
63 | };
64 |
65 | const handleClose = () => {
66 | fetchNui('hideHudMenu')
67 | .then(() => {
68 | onClose();
69 | })
70 | .catch((error) => {
71 | console.error('Failed to hide HUD menu:', error);
72 | onClose();
73 | });
74 | };
75 |
76 | const handleCinematicToggle = (isEnabled: boolean) => {
77 | setCinematicEnabled(isEnabled ? 'enabled' : 'disabled');
78 | fetchNui('toggleCinematicBars', { enabled: isEnabled })
79 | };
80 |
81 | return (
82 |
83 |
84 |
85 |
86 |
87 | HUD Settings
88 |
89 |
90 |
91 |
92 | Player
93 | Vehicle
94 | Voice
95 |
96 |
97 |
98 |
99 |
110 |
122 |
219 |
220 |
221 |
222 |
223 | Vehicle Settings (More Coming Soon)
224 |
225 |
226 |
227 |
228 |
229 | Voice Settings
230 | Voice Settings (More Coming Soon)
231 |
232 |
233 |
234 | THIS RESOURCE IS PROVIDED FOR FREE BY TS SCRIPTS
235 |
236 | );
237 | };
238 |
239 | export default HUDSettings;
--------------------------------------------------------------------------------
/web/src/components/Player.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from "react";
2 | import { Group, ThemeIcon, Box, Center, RingProgress, DEFAULT_THEME } from '@mantine/core';
3 | import { TbLungsFilled } from 'react-icons/tb';
4 | import { FaHeart, FaWalkieTalkie, FaSkull, FaMicrophone, FaShield, FaBrain } from "react-icons/fa6";
5 | import { FaMicrophoneSlash } from 'react-icons/fa';
6 | import { MdLocalDrink, MdRestaurant } from "react-icons/md";
7 | import HUDSettings from './HUDSettings';
8 | import useStyles from '../hooks/useStyles';
9 | import { useNuiEvent } from "../hooks/useNuiEvent";
10 | import { fetchNui } from "../utils/fetchNui";
11 |
12 | const Player: React.FC = () => {
13 | const { classes } = useStyles();
14 | const theme = DEFAULT_THEME;
15 | const [health, setHealth] = useState(40);
16 | const [armor, setArmor] = useState(50);
17 | const [thirst, setThirst] = useState(50);
18 | const [hunger, setHunger] = useState(50);
19 | const [oxygen, setOxygen] = useState(50);
20 | const [stress, setStress] = useState(50);
21 | const [talking, setTalking] = useState(false);
22 | const [voice, setVoice] = useState(0);
23 | const [colors, setColors] = useState({
24 | voiceInactive: '#6c757d',
25 | voiceActive: '#ffd43b',
26 | voiceRadio: '#1c7ed6',
27 | health: '#51cf66',
28 | armor: '#74c0fc',
29 | oxygen: '#339af0',
30 | hunger: '#fcc419',
31 | thirst: '#22b8cf',
32 | stress: '#ff6b6b',
33 | });
34 | const [position, setPosition] = useState('left');
35 | const [hudType, setHudType] = useState('rectangle');
36 | const [vehicleType, setVehicleType] = useState('default');
37 | const [opened, setOpened] = useState(false);
38 |
39 | useNuiEvent('player', (data) => {
40 | setColors(data.colors);
41 | setHealth(data.health);
42 | setArmor(data.armor);
43 | setThirst(data.thirst);
44 | setHunger(data.hunger);
45 | setOxygen(data.oxygen);
46 | setStress(data.stress);
47 | setTalking(data.talking);
48 | setVoice(data.voice);
49 | setHudType(data.hudType);
50 | setPosition(data.hudPosition);
51 | });
52 |
53 | useNuiEvent('HUDSettings', (data: boolean) => {
54 | setOpened(data);
55 | });
56 |
57 | useNuiEvent('player', (data) => {
58 | if (data.hudType) {
59 | setHudType(data.hudType);
60 | }
61 | if (data.hudPosition) {
62 | setPosition(data.hudPosition);
63 | }
64 | });
65 |
66 | const getPositionStyle = () => {
67 | switch (position) {
68 | case 'center':
69 | return { left: '50%', transform: 'translateX(-50%)' };
70 | case 'right':
71 | return { right: 10 };
72 | default:
73 | return { left: 10 };
74 | }
75 | };
76 |
77 | const renderRectangleProgress = (value: number, progressColor: string, icon: React.ReactNode) => {
78 | return (
79 |
94 |
105 |
114 | {icon}
115 |
116 |
117 | );
118 | };
119 |
120 | const renderCircleProgress = (value: number, progressColor: string, icon: React.ReactNode) => {
121 | return (
122 |
136 |
144 |
150 | {icon}
151 |
152 |
153 | }
154 | />
155 |
156 | );
157 | };
158 |
159 | return (
160 |
161 |
162 | {hudType === 'rectangle' && renderRectangleProgress(voice === 1.5 ? 25 : voice === 3.0 ? 50 : 100, talking === 'radio' ? colors.voiceRadio : talking === 'voice' ? colors.voiceActive : colors.voiceInactive, !talking ? : talking === 'voice' ? : )}
163 | {hudType === 'circle' && renderCircleProgress(voice === 1.5 ? 25 : voice === 3.0 ? 50 : 100, talking === 'radio' ? colors.voiceRadio : talking === 'voice' ? colors.voiceActive : colors.voiceInactive, !talking ? : talking === 'voice' ? : )}
164 |
165 | {hudType === 'rectangle' && renderRectangleProgress(health, health <= 0 ? 'red' : colors.health, health > 0 ? : )}
166 | {hudType === 'circle' && renderCircleProgress(health, health <= 0 ? 'red' : colors.health, health > 0 ? : )}
167 |
168 | {armor > 0 && hudType === 'rectangle' && renderRectangleProgress(armor, colors.armor, )}
169 | {armor > 0 && hudType === 'circle' && renderCircleProgress(armor, colors.armor, )}
170 |
171 | {thirst < 100 && hudType === 'rectangle' && renderRectangleProgress(thirst, thirst <= 20 ? 'red' : colors.thirst, )}
172 | {thirst < 100 && hudType === 'circle' && renderCircleProgress(thirst, thirst <= 20 ? 'red' : colors.thirst, )}
173 |
174 | {hunger < 100 && hudType === 'rectangle' && renderRectangleProgress(hunger, hunger <= 20 ? 'red' : colors.hunger, )}
175 | {hunger < 100 && hudType === 'circle' && renderCircleProgress(hunger, hunger <= 20 ? 'red' : colors.hunger, )}
176 |
177 | {oxygen < 100 && hudType === 'rectangle' && renderRectangleProgress(oxygen, oxygen <= 20 ? 'red' : colors.oxygen, )}
178 | {oxygen < 100 && hudType === 'circle' && renderCircleProgress(oxygen, oxygen <= 20 ? 'red' : colors.oxygen, )}
179 |
180 | {stress > 0 && hudType === 'rectangle' && renderRectangleProgress(stress, colors.stress, )}
181 | {stress > 0 && hudType === 'circle' && renderCircleProgress(stress, colors.stress, )}
182 |
183 |
184 | setOpened(false)}
187 | colors={colors}
188 | setColors={setColors}
189 | position={position}
190 | setPosition={setPosition}
191 | hudType={hudType}
192 | setHudType={setHudType}
193 | vehicleType={vehicleType}
194 | setVehicleType={setVehicleType}
195 | />
196 |
197 | );
198 | }
199 |
200 | export default Player;
--------------------------------------------------------------------------------
/web/src/components/Vehicle.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { Group, Text, DEFAULT_THEME, Box } from '@mantine/core';
3 | import { useNuiEvent } from "../hooks/useNuiEvent";
4 | import { PiSeatbeltFill, PiEngineFill } from "react-icons/pi"; // Import the seatbelt and engine icons
5 | import { FaGasPump } from "react-icons/fa6"; // Import the fuel icon
6 | import useStyles from '../hooks/useStyles';
7 | import '../index.css';
8 |
9 | const Vehicle: React.FC = () => {
10 | const { classes } = useStyles();
11 | const theme = DEFAULT_THEME;
12 | const [speed, setSpeed] = useState(0);
13 | const [gear, setGear] = useState(0);
14 | const [speedType, setSpeedType] = useState('KMT');
15 | const [seatbeltOn, setSeatbeltOn] = useState(false);
16 | const [streetName1, setStreetName1] = useState('OSLO');
17 | const [streetName2, setStreetName2] = useState('FROGNER'); // Second street name
18 | const [heading, setHeading] = useState('N'); // Compass heading
19 | const [fuel, setFuel] = useState(40); // Fuel level
20 | const [engineHealth, setEngineHealth] = useState(0); // Engine health
21 | const [nitrous, setNitrous] = useState(50); // Nitrous level
22 | const formattedSpeed = speed.toString().padStart(3, '0');
23 | const [isInVehicle, setIsInVehicle] = useState(true);
24 | const [isHarnessOn, setHarnessOn] = useState(false);
25 |
26 | useNuiEvent('vehicle', (data) => {
27 | setSpeed(data.speed);
28 | setGear(data.gear);
29 | setSpeedType(data.speedType);
30 | setSeatbeltOn(data.seatbeltOn);
31 | setStreetName1(data.streetName1 || 'UNKNOWN'); // Default to UNKNOWN if not provided
32 | setStreetName2(data.streetName2 || 'UNKNOWN'); // Default to UNKNOWN if not provided
33 | setHeading(data.heading || 'N');
34 | setFuel(data.fuel || 100);
35 | setEngineHealth(data.engineHealth || 100);
36 | setNitrous(data.nitrous || 0);
37 | setIsInVehicle(data.isInVehicle);
38 | setHarnessOn(data.isHarnessOn);
39 | });
40 |
41 | const renderHorizontalFuelIndicator = (value: number) => {
42 | return (
43 |
51 | {/* Gear Box */}
52 |
65 |
66 | {gear === 0 ? 'R' : gear}
67 |
68 |
69 |
70 | {/* Fuel Icon Box */}
71 |
84 |
90 |
91 |
92 | {/* Fuel Bar */}
93 |
103 |
111 |
112 |
113 | );
114 | };
115 |
116 | const renderHorizontalNitrousIndicator = (value: number) => {
117 | if (value <= 0) return null;
118 |
119 | return (
120 |
128 | {/* Nitrous Bar */}
129 |
139 |
147 |
148 |
149 | );
150 | };
151 |
152 | return (
153 |
154 |
155 |
156 | {/* Speed Display with SpeedType After */}
157 |
158 |
159 | {formattedSpeed}
160 |
161 |
162 | {speedType.toUpperCase()}
163 |
164 |
165 |
166 | {/* Gear and Fuel Indicator */}
167 | {renderHorizontalFuelIndicator(fuel)}
168 |
169 | {renderHorizontalNitrousIndicator(nitrous)}
170 |
171 | {/* Street, Seatbelt, and Engine Health Display */}
172 |
173 | {/* Heading Box */}
174 |
186 |
187 | {heading}
188 |
189 |
190 |
191 | {/* Street Name */}
192 |
204 | {streetName1} {streetName2 && `| ${streetName2}`}
205 |
206 |
207 | {/* Seatbelt and Harness Icons */}
208 |
221 | {isHarnessOn ? (
222 |
223 | ) : (
224 |
225 | )}
226 |
227 |
228 |
229 | {/* Engine Icon Box */}
230 | {engineHealth <= 30 && (
231 |
244 |
245 |
246 | )}
247 |
248 |
249 |
250 | {isInVehicle && (
251 |
252 |
253 |
254 | )}
255 |
256 |
257 | );
258 | }
259 |
260 | export default Vehicle;
261 |
--------------------------------------------------------------------------------
/web/src/hooks/useNuiEvent.ts:
--------------------------------------------------------------------------------
1 | import { MutableRefObject, useEffect, useRef } from "react";
2 | import { noop } from "../utils/misc";
3 |
4 | interface NuiMessageData {
5 | action: string;
6 | data: T;
7 | }
8 |
9 | type NuiHandlerSignature = (data: T) => void;
10 |
11 | export const useNuiEvent = (
12 | action: string,
13 | handler: (data: T) => void,
14 | ) => {
15 | const savedHandler: MutableRefObject> = useRef(noop);
16 |
17 | useEffect(() => {
18 | savedHandler.current = handler;
19 | }, [handler]);
20 |
21 | useEffect(() => {
22 | const eventListener = (event: MessageEvent>) => {
23 | const { action: eventAction, data } = event.data;
24 |
25 | if (savedHandler.current) {
26 | if (eventAction === action) {
27 | savedHandler.current(data);
28 | }
29 | }
30 | };
31 |
32 | window.addEventListener("message", eventListener);
33 | return () => window.removeEventListener("message", eventListener);
34 | }, [action]);
35 | };
--------------------------------------------------------------------------------
/web/src/hooks/useStyles.ts:
--------------------------------------------------------------------------------
1 | import { createStyles } from '@mantine/core'
2 |
3 | const useStyles = createStyles((theme) => ({
4 | wrapperPlayer: {
5 | width: '100%',
6 | height: '100%',
7 | position: 'fixed',
8 | backgroundSize: 'cover',
9 | display: 'flex',
10 | zIndex: 2,
11 | },
12 | wrapperVehicle: {
13 | width: '100%',
14 | height: '100%',
15 | position: 'fixed',
16 | },
17 | wrapperCompass: {
18 | width: '100%',
19 | height: '100%',
20 | position: 'fixed',
21 | },
22 | wrapperMenu: {
23 | width: '100%',
24 | height: '100%',
25 | position: 'fixed',
26 | display: 'flex',
27 | justifyContent: 'center',
28 | alignItems: 'center'
29 | },
30 | compass: {
31 | position: 'absolute',
32 | top: -7,
33 | width: '300px',
34 | height: '25px',
35 | },
36 | compass2: {
37 | position: 'absolute',
38 | top: 0,
39 | width: '300px',
40 | height: '50px',
41 | fontSize: '5pt',
42 | },
43 | compassArrow: {
44 | position: 'absolute',
45 | top: 0,
46 | width: '5px',
47 | height: '20px',
48 | backgroundColor: 'white',
49 | borderRadius: theme.radius.sm
50 | },
51 | minimapContainer: {
52 | position: 'absolute',
53 | bottom: 60,
54 | left: 14,
55 | width: '320px',
56 | height: '200px',
57 | backgroundColor: "none",
58 | border: `4px solid ${theme.colors.dark[7]}`,
59 | padding: '2px',
60 | boxSizing: 'border-box',
61 | borderRadius: theme.radius.sm,
62 | },
63 | minimap: {
64 | width: '100%',
65 | height: '100%',
66 | },
67 | }))
68 |
69 | export default useStyles
--------------------------------------------------------------------------------
/web/src/index.css:
--------------------------------------------------------------------------------
1 | html {
2 | color-scheme: normal !important;
3 | }
4 |
5 | body {
6 | background: none !important;
7 | margin: 0;
8 | font-family: roboto-mono;
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 | height: 100vh;
12 | user-select: none;
13 | overflow: hidden !important;
14 | }
15 |
16 | p {
17 | margin: 0;
18 | }
19 |
20 | #root {
21 | height: 100%;
22 | }
23 |
24 | ::-webkit-scrollbar {
25 | background-color: transparent;
26 | padding: 0;
27 | margin: 0;
28 | width: 0;
29 | height: 0;
30 | }
31 |
--------------------------------------------------------------------------------
/web/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react';
2 | import ReactDOM from 'react-dom/client'
3 | import { VisibilityProvider } from './providers/VisibilityProvider'
4 | import { MantineProvider } from '@mantine/core'
5 | import Player from './components/Player'
6 | import Vehicle from './components/Vehicle'
7 | import { isEnvBrowser } from "./utils/misc";
8 |
9 | if (isEnvBrowser()) {
10 | const root = document.getElementById("root");
11 |
12 | root!.style.backgroundImage = 'url("https://i.imgur.com/ZiJBeRi.png")';
13 | root!.style.backgroundSize = "contain";
14 | root!.style.backgroundRepeat = "no-repeat";
15 | root!.style.backgroundPosition = "center";
16 | }
17 |
18 | ReactDOM.createRoot(document.getElementById('root')!).render(
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | )
--------------------------------------------------------------------------------
/web/src/providers/VisibilityProvider.tsx:
--------------------------------------------------------------------------------
1 | import React, { createContext, useContext, useEffect, useState } from "react";
2 | import { useNuiEvent } from "../hooks/useNuiEvent";
3 | import { fetchNui } from "../utils/fetchNui";
4 | import { isEnvBrowser } from "../utils/misc";
5 |
6 |
7 | const VisibilityCtx = createContext(null);
8 |
9 |
10 | interface VisibilityProviderValue {
11 | setVisible: (visible: boolean) => void;
12 | visible: boolean;
13 | }
14 |
15 | export const VisibilityProvider: React.FC<{
16 | children: React.ReactNode;
17 | componentName: string;
18 | }> = ({ children, componentName }) => {
19 | const [visible, setVisible] = useState(false);
20 |
21 |
22 | useNuiEvent(`setVisible${componentName}`, setVisible);
23 |
24 | useEffect(() => {
25 | const keyHandler = (e: KeyboardEvent) => {
26 | if (visible && componentName == 'Menu' && e.code === "Escape") {
27 | if (!isEnvBrowser()) fetchNui("hideFrame", { name: `setVisible${componentName}` });
28 | else setVisible(false);
29 | }
30 | };
31 | window.addEventListener("keydown", keyHandler);
32 |
33 | return () => window.removeEventListener("keydown", keyHandler);
34 | }, [visible, componentName]);
35 |
36 | return (
37 |
38 |
39 | {children}
40 |
41 |
42 | );
43 | };
44 |
45 | export const useVisibility = () =>
46 | useContext(
47 | VisibilityCtx as React.Context
48 | );
--------------------------------------------------------------------------------
/web/src/utils/debugData.ts:
--------------------------------------------------------------------------------
1 | import { isEnvBrowser } from "./misc";
2 |
3 | interface DebugEvent {
4 | action: string;
5 | data: T;
6 | }
7 |
8 | /**
9 | * Emulates dispatching an event using SendNuiMessage in the lua scripts.
10 | * This is used when developing in browser
11 | *
12 | * @param events - The event you want to cover
13 | * @param timer - How long until it should trigger (ms)
14 | */
15 | export const debugData = (events: DebugEvent
[], timer = 1000): void => {
16 | if (import.meta.env.MODE === "development" && isEnvBrowser()) {
17 | for (const event of events) {
18 | setTimeout(() => {
19 | window.dispatchEvent(
20 | new MessageEvent("message", {
21 | data: {
22 | action: event.action,
23 | data: event.data,
24 | },
25 | }),
26 | );
27 | }, timer);
28 | }
29 | }
30 | };
31 |
--------------------------------------------------------------------------------
/web/src/utils/fetchNui.ts:
--------------------------------------------------------------------------------
1 | import { isEnvBrowser } from "./misc"
2 |
3 | export async function fetchNui(
4 | eventName: string,
5 | data?: unknown,
6 | mockData?: T,
7 | ): Promise {
8 | const options = {
9 | method: "post",
10 | headers: {
11 | "Content-Type": "application/json; charset=UTF-8",
12 | },
13 | body: JSON.stringify(data),
14 | };
15 |
16 | if (isEnvBrowser() && mockData) return mockData
17 |
18 | const resourceName = (window as any).GetParentResourceName
19 | ? (window as any).GetParentResourceName() : "nui-frame-app"
20 |
21 | const resp = await fetch(`https://${resourceName}/${eventName}`, options)
22 |
23 | const respFormatted = await resp.json()
24 |
25 | return respFormatted
26 | }
27 |
--------------------------------------------------------------------------------
/web/src/utils/misc.ts:
--------------------------------------------------------------------------------
1 | // Will return whether the current environment is in a regular browser
2 | // and not CEF
3 | export const isEnvBrowser = (): boolean => !(window as any).invokeNative;
4 |
5 | // Basic no operation function
6 | export const noop = () => {};
7 |
--------------------------------------------------------------------------------
/web/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx",
18 |
19 | },
20 | "include": ["src", "App.tsx"],
21 | "references": [{ "path": "./tsconfig.node.json" }]
22 | }
23 |
--------------------------------------------------------------------------------
/web/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "esnext",
5 | "moduleResolution": "node"
6 | },
7 | "include": ["vite.config.ts"]
8 | }
9 |
--------------------------------------------------------------------------------
/web/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import react from '@vitejs/plugin-react';
3 |
4 | export default defineConfig({
5 | plugins: [react()],
6 | base: './',
7 | build: {
8 | outDir: 'build',
9 | chunkSizeWarningLimit: 1000
10 | },
11 | });
--------------------------------------------------------------------------------