Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.

Commit 851028d

Browse files
committed
fix exports and add mouse icon
1 parent bdcecee commit 851028d

File tree

6 files changed

+66
-5
lines changed

6 files changed

+66
-5
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@grand-hawk/ui-components",
3-
"version": "0.1.4",
3+
"version": "0.1.5",
44
"keywords": [
55
"roblox-ts",
66
"react",
@@ -49,6 +49,7 @@
4949
"dependencies": {
5050
"@rbxts/react": "^0.4.0",
5151
"@rbxts/react-roblox": "^0.4.0",
52+
"@rbxts/services": "^1.5.4",
5253
"@rbxts/ui-labs": "^2.1.1",
5354
"roblox-ts": "^2.3.0-dev-576ad98"
5455
},

pnpm-lock.yaml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/Slider/index.tsx

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Box } from 'components/Box';
44
import { ProgressBar, type ProgressBarProps } from 'components/ProgressBar';
55
import { useTheme } from 'components/ThemeProvider';
66
import { mergeFunctions } from 'helpers';
7+
import { setMouseIcon, SystemCursors } from 'utils';
78

89
import type { PropsWithChildren } from '@rbxts/react';
910
import type { BoxProps } from 'components/Box';
@@ -65,7 +66,11 @@ export function Slider(componentProps: PropsWithChildren<SliderProps>) {
6566
if (sliderChanged) sliderChanged(newValue);
6667
},
6768

68-
MouseButton1Up: () => setIsDragging(false),
69+
MouseButton1Up: () => {
70+
setIsDragging(false);
71+
72+
setMouseIcon(SystemCursors.Arrow);
73+
},
6974
}}
7075
Selectable={false}
7176
Size={UDim2.fromOffset(math.huge, math.huge)}
@@ -97,12 +102,24 @@ export function Slider(componentProps: PropsWithChildren<SliderProps>) {
97102
Event={{
98103
...handleProps?.Event,
99104

100-
MouseButton1Down: mergeFunctions<
101-
(rbx: TextButton, x: number, y: number) => unknown
102-
>(() => {
105+
MouseButton1Down: mergeFunctions(() => {
103106
if (isDragging) return;
104107
setIsDragging(true);
108+
109+
setMouseIcon(SystemCursors.ClosedHand);
105110
}, handleProps?.Event?.MouseButton1Down),
111+
112+
MouseEnter: mergeFunctions(() => {
113+
if (isDragging) return;
114+
115+
setMouseIcon(SystemCursors.OpenHand);
116+
}, handleProps?.Event?.MouseEnter),
117+
118+
MouseLeave: mergeFunctions(() => {
119+
if (isDragging) return;
120+
121+
setMouseIcon(SystemCursors.Arrow);
122+
}, handleProps?.Event?.MouseEnter),
106123
}}
107124
/>
108125

src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
export * from 'components/Box';
22
export * from 'components/Button';
33
export * from 'components/Input';
4+
export * from 'components/ProgressBar';
45
export * from 'components/SecondaryButton';
56
export * from 'components/Sheet';
7+
export * from 'components/Slider';
68
export * from 'components/ThemeProvider';
79
export * from 'components/Typography';
810

911
export * from 'helpers';
1012
export * from 'themes';
13+
export * from 'utils';

src/utils/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './setMouseIcon';

src/utils/setMouseIcon.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { Players, UserInputService } from '@rbxts/services';
2+
3+
export enum SystemCursors {
4+
Arrow = 'rbxasset://SystemCursors/Arrow',
5+
PointingHand = 'rbxasset://SystemCursors/PointingHand',
6+
OpenHand = 'rbxasset://SystemCursors/OpenHand',
7+
ClosedHand = 'rbxasset://SystemCursors/ClosedHand',
8+
IBeam = 'rbxasset://SystemCursors/IBeam',
9+
SizeNS = 'rbxasset://SystemCursors/SizeNS',
10+
SizeEW = 'rbxasset://SystemCursors/SizeEW',
11+
SizeNESW = 'rbxasset://SystemCursors/SizeNESW',
12+
SizeNWSE = 'rbxasset://SystemCursors/SizeNWSE',
13+
SizeAll = 'rbxasset://SystemCursors/SizeAll',
14+
SplitNS = 'rbxasset://SystemCursors/SplitNS',
15+
SplitEW = 'rbxasset://SystemCursors/SplitEW',
16+
Forbidden = 'rbxasset://SystemCursors/Forbidden',
17+
Wait = 'rbxasset://SystemCursors/Wait',
18+
Busy = 'rbxasset://SystemCursors/Busy',
19+
Cross = 'rbxasset://SystemCursors/Cross',
20+
}
21+
22+
export function setMouseIcon(icon: string): boolean {
23+
const localPlayer = Players.FindFirstChild('LocalPlayer') as
24+
| Player
25+
| undefined;
26+
if (!localPlayer) return false;
27+
28+
UserInputService.MouseIcon = icon;
29+
30+
return true;
31+
}

0 commit comments

Comments
 (0)