scroll-to-future 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENCE +5 -0
- package/README.md +970 -0
- package/dist/index.css +78 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +63 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +1796 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1770 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +53 -0
package/dist/index.css
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/* src/css/scroll.css */
|
|
2
|
+
.scroll-to-future__overlay {
|
|
3
|
+
position: fixed;
|
|
4
|
+
pointer-events: none;
|
|
5
|
+
z-index: 10;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* src/css/axis.css */
|
|
9
|
+
.scroll-to-future__track {
|
|
10
|
+
position: absolute;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
background-color: var(--scrollbar-backgroundColor, "transparent");
|
|
13
|
+
transition: var(--scrollbar-transition, "none");
|
|
14
|
+
border-radius: var(--scrollbar-borderRadius, "8px");
|
|
15
|
+
opacity: var(--scrollbar-opacity, 1);
|
|
16
|
+
border: var(--scrollbar-border, "none");
|
|
17
|
+
box-shadow: var(--scrollbar-boxShadow, "none");
|
|
18
|
+
transform: var(--scrollbar-transform, "none");
|
|
19
|
+
touch-action: none;
|
|
20
|
+
user-select: none;
|
|
21
|
+
}
|
|
22
|
+
@media (hover: hover) and (pointer: fine) {
|
|
23
|
+
.scroll-to-future__track:hover {
|
|
24
|
+
background-color: var( --scrollbar-hover-backgroundColor, var(--scrollbar-backgroundColor) );
|
|
25
|
+
transition: var( --scrollbar-hover-transition, var(--scrollbar-transition) );
|
|
26
|
+
border-radius: var( --scrollbar-hover-borderRadius, var(--scrollbar-borderRadius) );
|
|
27
|
+
opacity: var(--scrollbar-hover-opacity, var(--scrollbar-opacity));
|
|
28
|
+
border: var(--scrollbar-hover-border, var(--scrollbar-border));
|
|
29
|
+
box-shadow: var( --scrollbar-hover-boxShadow, var(--scrollbar-boxShadow) );
|
|
30
|
+
transform: var(--scrollbar-hover-transform, var(--scrollbar-transform));
|
|
31
|
+
}
|
|
32
|
+
.scroll-to-future__track:active {
|
|
33
|
+
background-color: var( --scrollbar-active-backgroundColor, var(--scrollbar-backgroundColor) );
|
|
34
|
+
transition: var( --scrollbar-active-transition, var(--scrollbar-transition) );
|
|
35
|
+
border-radius: var( --scrollbar-active-borderRadius, var(--scrollbar-borderRadius) );
|
|
36
|
+
opacity: var(--scrollbar-active-opacity, var(--scrollbar-opacity));
|
|
37
|
+
border: var(--scrollbar-active-border, var(--scrollbar-border));
|
|
38
|
+
box-shadow: var( --scrollbar-active-boxShadow, var(--scrollbar-boxShadow) );
|
|
39
|
+
transform: var( --scrollbar-active-transform, var(--scrollbar-transform) );
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
.scroll-to-future__thumb {
|
|
43
|
+
position: absolute;
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
background-color: var(--thumb-backgroundColor, "transparent");
|
|
46
|
+
transition: var(--thumb-transition, "none");
|
|
47
|
+
border-radius: var(--thumb-borderRadius, "8px");
|
|
48
|
+
opacity: var(--thumb-opacity, 1);
|
|
49
|
+
border: var(--thumb-border, "none");
|
|
50
|
+
box-shadow: var(--thumb-boxShadow, "none");
|
|
51
|
+
transform: var(--thumb-transform, "none");
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
touch-action: none;
|
|
54
|
+
user-select: none;
|
|
55
|
+
}
|
|
56
|
+
@media (hover: hover) and (pointer: fine) {
|
|
57
|
+
.scroll-to-future__thumb:hover {
|
|
58
|
+
background-color: var( --thumb-hover-backgroundColor, var(--thumb-backgroundColor) );
|
|
59
|
+
transition: var(--thumb-hover-transition, var(--thumb-transition));
|
|
60
|
+
border-radius: var( --thumb-hover-borderRadius, var(--thumb-borderRadius) );
|
|
61
|
+
opacity: var(--thumb-hover-opacity, var(--thumb-opacity));
|
|
62
|
+
border: var(--thumb-hover-border, var(--thumb-border));
|
|
63
|
+
box-shadow: var(--thumb-hover-boxShadow, var(--thumb-boxShadow));
|
|
64
|
+
transform: var(--thumb-hover-transform, var(--thumb-transform));
|
|
65
|
+
}
|
|
66
|
+
.scroll-to-future__thumb:active {
|
|
67
|
+
background-color: var( --thumb-active-backgroundColor, var(--thumb-backgroundColor) );
|
|
68
|
+
transition: var(--thumb-active-transition, var(--thumb-transition));
|
|
69
|
+
border-radius: var( --thumb-active-borderRadius, var(--thumb-borderRadius) );
|
|
70
|
+
opacity: var(--thumb-active-opacity, var(--thumb-opacity));
|
|
71
|
+
border: var(--thumb-active-border, var(--thumb-border));
|
|
72
|
+
box-shadow: var(--thumb-active-boxShadow, var(--thumb-boxShadow));
|
|
73
|
+
transform: var(--thumb-active-transform, var(--thumb-transform));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* src/css/index.css */
|
|
78
|
+
/*# sourceMappingURL=index.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/css/scroll.css","../src/css/axis.css"],"sourcesContent":[".scroll-to-future__overlay {\r\n position: fixed;\r\n pointer-events: none;\r\n z-index: 10;\r\n}\r\n",".scroll-to-future__track {\r\n position: absolute;\r\n box-sizing: border-box;\r\n background-color: var(--scrollbar-backgroundColor, \"transparent\");\r\n transition: var(--scrollbar-transition, \"none\");\r\n border-radius: var(--scrollbar-borderRadius, \"8px\");\r\n opacity: var(--scrollbar-opacity, 1);\r\n border: var(--scrollbar-border, \"none\");\r\n box-shadow: var(--scrollbar-boxShadow, \"none\");\r\n transform: var(--scrollbar-transform, \"none\");\r\n\r\n touch-action: none;\r\n user-select: none;\r\n}\r\n\r\n@media (hover: hover) and (pointer: fine) {\r\n .scroll-to-future__track:hover {\r\n background-color: var(\r\n --scrollbar-hover-backgroundColor,\r\n var(--scrollbar-backgroundColor)\r\n );\r\n transition: var(\r\n --scrollbar-hover-transition,\r\n var(--scrollbar-transition)\r\n );\r\n border-radius: var(\r\n --scrollbar-hover-borderRadius,\r\n var(--scrollbar-borderRadius)\r\n );\r\n opacity: var(--scrollbar-hover-opacity, var(--scrollbar-opacity));\r\n border: var(--scrollbar-hover-border, var(--scrollbar-border));\r\n box-shadow: var(\r\n --scrollbar-hover-boxShadow,\r\n var(--scrollbar-boxShadow)\r\n );\r\n transform: var(--scrollbar-hover-transform, var(--scrollbar-transform));\r\n }\r\n .scroll-to-future__track:active {\r\n background-color: var(\r\n --scrollbar-active-backgroundColor,\r\n var(--scrollbar-backgroundColor)\r\n );\r\n transition: var(\r\n --scrollbar-active-transition,\r\n var(--scrollbar-transition)\r\n );\r\n border-radius: var(\r\n --scrollbar-active-borderRadius,\r\n var(--scrollbar-borderRadius)\r\n );\r\n opacity: var(--scrollbar-active-opacity, var(--scrollbar-opacity));\r\n border: var(--scrollbar-active-border, var(--scrollbar-border));\r\n box-shadow: var(\r\n --scrollbar-active-boxShadow,\r\n var(--scrollbar-boxShadow)\r\n );\r\n transform: var(\r\n --scrollbar-active-transform,\r\n var(--scrollbar-transform)\r\n );\r\n }\r\n}\r\n\r\n.scroll-to-future__thumb {\r\n position: absolute;\r\n box-sizing: border-box;\r\n background-color: var(--thumb-backgroundColor, \"transparent\");\r\n transition: var(--thumb-transition, \"none\");\r\n border-radius: var(--thumb-borderRadius, \"8px\");\r\n opacity: var(--thumb-opacity, 1);\r\n border: var(--thumb-border, \"none\");\r\n box-shadow: var(--thumb-boxShadow, \"none\");\r\n transform: var(--thumb-transform, \"none\");\r\n cursor: pointer;\r\n touch-action: none;\r\n user-select: none;\r\n}\r\n\r\n@media (hover: hover) and (pointer: fine) {\r\n .scroll-to-future__thumb:hover {\r\n background-color: var(\r\n --thumb-hover-backgroundColor,\r\n var(--thumb-backgroundColor)\r\n );\r\n transition: var(--thumb-hover-transition, var(--thumb-transition));\r\n border-radius: var(\r\n --thumb-hover-borderRadius,\r\n var(--thumb-borderRadius)\r\n );\r\n opacity: var(--thumb-hover-opacity, var(--thumb-opacity));\r\n border: var(--thumb-hover-border, var(--thumb-border));\r\n box-shadow: var(--thumb-hover-boxShadow, var(--thumb-boxShadow));\r\n transform: var(--thumb-hover-transform, var(--thumb-transform));\r\n }\r\n .scroll-to-future__thumb:active {\r\n background-color: var(\r\n --thumb-active-backgroundColor,\r\n var(--thumb-backgroundColor)\r\n );\r\n transition: var(--thumb-active-transition, var(--thumb-transition));\r\n border-radius: var(\r\n --thumb-active-borderRadius,\r\n var(--thumb-borderRadius)\r\n );\r\n opacity: var(--thumb-active-opacity, var(--thumb-opacity));\r\n border: var(--thumb-active-border, var(--thumb-border));\r\n box-shadow: var(--thumb-active-boxShadow, var(--thumb-boxShadow));\r\n transform: var(--thumb-active-transform, var(--thumb-transform));\r\n }\r\n}\r\n"],"mappings":";AAAA,CAAC;AACG,YAAU;AACV,kBAAgB;AAChB,WAAS;AACb;;;ACJA,CAAC;AACG,YAAU;AACV,cAAY;AACZ,oBAAkB,IAAI,2BAA2B,EAAE;AACnD,cAAY,IAAI,sBAAsB,EAAE;AACxC,iBAAe,IAAI,wBAAwB,EAAE;AAC7C,WAAS,IAAI,mBAAmB,EAAE;AAClC,UAAQ,IAAI,kBAAkB,EAAE;AAChC,cAAY,IAAI,qBAAqB,EAAE;AACvC,aAAW,IAAI,qBAAqB,EAAE;AAEtC,gBAAc;AACd,eAAa;AACjB;AAEA,QAAO,OAAQ,YAAW,SAAU;AAChC,GAhBH,uBAgB2B;AACpB,sBAAkB,KACd,iCAAiC,EACjC,IAAI;AAER,gBAAY,KACR,4BAA4B,EAC5B,IAAI;AAER,mBAAe,KACX,8BAA8B,EAC9B,IAAI;AAER,aAAS,IAAI,yBAAyB,EAAE,IAAI;AAC5C,YAAQ,IAAI,wBAAwB,EAAE,IAAI;AAC1C,gBAAY,KACR,2BAA2B,EAC3B,IAAI;AAER,eAAW,IAAI,2BAA2B,EAAE,IAAI;AACpD;AACA,GArCH,uBAqC2B;AACpB,sBAAkB,KACd,kCAAkC,EAClC,IAAI;AAER,gBAAY,KACR,6BAA6B,EAC7B,IAAI;AAER,mBAAe,KACX,+BAA+B,EAC/B,IAAI;AAER,aAAS,IAAI,0BAA0B,EAAE,IAAI;AAC7C,YAAQ,IAAI,yBAAyB,EAAE,IAAI;AAC3C,gBAAY,KACR,4BAA4B,EAC5B,IAAI;AAER,eAAW,KACP,4BAA4B,EAC5B,IAAI;AAEZ;AACJ;AAEA,CAAC;AACG,YAAU;AACV,cAAY;AACZ,oBAAkB,IAAI,uBAAuB,EAAE;AAC/C,cAAY,IAAI,kBAAkB,EAAE;AACpC,iBAAe,IAAI,oBAAoB,EAAE;AACzC,WAAS,IAAI,eAAe,EAAE;AAC9B,UAAQ,IAAI,cAAc,EAAE;AAC5B,cAAY,IAAI,iBAAiB,EAAE;AACnC,aAAW,IAAI,iBAAiB,EAAE;AAClC,UAAQ;AACR,gBAAc;AACd,eAAa;AACjB;AAEA,QAAO,OAAQ,YAAW,SAAU;AAChC,GAhBH,uBAgB2B;AACpB,sBAAkB,KACd,6BAA6B,EAC7B,IAAI;AAER,gBAAY,IAAI,wBAAwB,EAAE,IAAI;AAC9C,mBAAe,KACX,0BAA0B,EAC1B,IAAI;AAER,aAAS,IAAI,qBAAqB,EAAE,IAAI;AACxC,YAAQ,IAAI,oBAAoB,EAAE,IAAI;AACtC,gBAAY,IAAI,uBAAuB,EAAE,IAAI;AAC7C,eAAW,IAAI,uBAAuB,EAAE,IAAI;AAChD;AACA,GA/BH,uBA+B2B;AACpB,sBAAkB,KACd,8BAA8B,EAC9B,IAAI;AAER,gBAAY,IAAI,yBAAyB,EAAE,IAAI;AAC/C,mBAAe,KACX,2BAA2B,EAC3B,IAAI;AAER,aAAS,IAAI,sBAAsB,EAAE,IAAI;AACzC,YAAQ,IAAI,qBAAqB,EAAE,IAAI;AACvC,gBAAY,IAAI,wBAAwB,EAAE,IAAI;AAC9C,eAAW,IAAI,wBAAwB,EAAE,IAAI;AACjD;AACJ;","names":[]}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
|
|
3
|
+
type PxValue = `${number}px`;
|
|
4
|
+
type BoundaryType = PxValue;
|
|
5
|
+
type BoundaryType2 = `${number}px ${number}px`;
|
|
6
|
+
type BoundaryOffset = BoundaryType | BoundaryType2;
|
|
7
|
+
|
|
8
|
+
type HeightTrackType = BoundaryType | `${number}%` | `${number}dvh` | `${number}dsvh` | `${number}vh`;
|
|
9
|
+
type ScrollBarMode = "horizontal" | "vertical" | "both";
|
|
10
|
+
type PositionMode = "before" | "after";
|
|
11
|
+
type Superimposition = "over" | "after";
|
|
12
|
+
type HideNativeScrollbarMode = false | "fine-pointer" | "always";
|
|
13
|
+
interface ScrollToFutureScrollBar {
|
|
14
|
+
mode?: ScrollBarMode;
|
|
15
|
+
hideNativeScrollbar?: HideNativeScrollbarMode;
|
|
16
|
+
positionMode?: PositionMode;
|
|
17
|
+
superimposition?: Superimposition;
|
|
18
|
+
boundaryOffset?: BoundaryOffset;
|
|
19
|
+
widthTrack?: PxValue;
|
|
20
|
+
heightTrack?: HeightTrackType;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface ScrollToFutureThumb {
|
|
24
|
+
boundaryOffset?: BoundaryOffset;
|
|
25
|
+
heightTrack?: `${number}%` | PxValue | "auto";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
type PresetsThemeType = "primary" | "midnight" | "neonCyan" | "ocean" | "deepSea" | "forest" | "moss" | "lava" | "ember" | "gold" | "roseQuartz" | "violet" | "royal" | "arctic" | "glass" | "graphite" | "terminal" | "toxic" | "candy" | "sand" | "monoLight" | "monoDark";
|
|
29
|
+
|
|
30
|
+
type StatusElementsTheme = {
|
|
31
|
+
inactive?: ScrollToFutureGeneralTypes;
|
|
32
|
+
hover?: ScrollToFutureGeneralTypes;
|
|
33
|
+
active?: ScrollToFutureGeneralTypes;
|
|
34
|
+
};
|
|
35
|
+
type ScrollToFutureGeneralTypes = {
|
|
36
|
+
backgroundColor?: string;
|
|
37
|
+
opacity?: number;
|
|
38
|
+
border?: string;
|
|
39
|
+
borderRadius?: string;
|
|
40
|
+
outline?: string;
|
|
41
|
+
boxShadow?: string;
|
|
42
|
+
transition?: string;
|
|
43
|
+
transform?: string;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
type ScrollToFutureThemeProps = {
|
|
47
|
+
scrollBar?: StatusElementsTheme;
|
|
48
|
+
thumb?: StatusElementsTheme;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
interface ScrollToFutureInterface {
|
|
52
|
+
target?: React.RefObject<HTMLElement | null> | null;
|
|
53
|
+
scrollBar?: ScrollToFutureScrollBar;
|
|
54
|
+
thumb?: ScrollToFutureThumb;
|
|
55
|
+
selectTheme?: PresetsThemeType;
|
|
56
|
+
optionsTheme?: ScrollToFutureThemeProps;
|
|
57
|
+
nativeOnMobile?: boolean;
|
|
58
|
+
}
|
|
59
|
+
type ScrollToFutureConfig = Omit<ScrollToFutureInterface, "target">;
|
|
60
|
+
|
|
61
|
+
declare const ScrollToFuture: ({ target, scrollBar, thumb, selectTheme, optionsTheme, nativeOnMobile, }: ScrollToFutureInterface) => react.JSX.Element | null;
|
|
62
|
+
|
|
63
|
+
export { ScrollToFuture, type ScrollToFutureConfig };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
|
|
3
|
+
type PxValue = `${number}px`;
|
|
4
|
+
type BoundaryType = PxValue;
|
|
5
|
+
type BoundaryType2 = `${number}px ${number}px`;
|
|
6
|
+
type BoundaryOffset = BoundaryType | BoundaryType2;
|
|
7
|
+
|
|
8
|
+
type HeightTrackType = BoundaryType | `${number}%` | `${number}dvh` | `${number}dsvh` | `${number}vh`;
|
|
9
|
+
type ScrollBarMode = "horizontal" | "vertical" | "both";
|
|
10
|
+
type PositionMode = "before" | "after";
|
|
11
|
+
type Superimposition = "over" | "after";
|
|
12
|
+
type HideNativeScrollbarMode = false | "fine-pointer" | "always";
|
|
13
|
+
interface ScrollToFutureScrollBar {
|
|
14
|
+
mode?: ScrollBarMode;
|
|
15
|
+
hideNativeScrollbar?: HideNativeScrollbarMode;
|
|
16
|
+
positionMode?: PositionMode;
|
|
17
|
+
superimposition?: Superimposition;
|
|
18
|
+
boundaryOffset?: BoundaryOffset;
|
|
19
|
+
widthTrack?: PxValue;
|
|
20
|
+
heightTrack?: HeightTrackType;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface ScrollToFutureThumb {
|
|
24
|
+
boundaryOffset?: BoundaryOffset;
|
|
25
|
+
heightTrack?: `${number}%` | PxValue | "auto";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
type PresetsThemeType = "primary" | "midnight" | "neonCyan" | "ocean" | "deepSea" | "forest" | "moss" | "lava" | "ember" | "gold" | "roseQuartz" | "violet" | "royal" | "arctic" | "glass" | "graphite" | "terminal" | "toxic" | "candy" | "sand" | "monoLight" | "monoDark";
|
|
29
|
+
|
|
30
|
+
type StatusElementsTheme = {
|
|
31
|
+
inactive?: ScrollToFutureGeneralTypes;
|
|
32
|
+
hover?: ScrollToFutureGeneralTypes;
|
|
33
|
+
active?: ScrollToFutureGeneralTypes;
|
|
34
|
+
};
|
|
35
|
+
type ScrollToFutureGeneralTypes = {
|
|
36
|
+
backgroundColor?: string;
|
|
37
|
+
opacity?: number;
|
|
38
|
+
border?: string;
|
|
39
|
+
borderRadius?: string;
|
|
40
|
+
outline?: string;
|
|
41
|
+
boxShadow?: string;
|
|
42
|
+
transition?: string;
|
|
43
|
+
transform?: string;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
type ScrollToFutureThemeProps = {
|
|
47
|
+
scrollBar?: StatusElementsTheme;
|
|
48
|
+
thumb?: StatusElementsTheme;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
interface ScrollToFutureInterface {
|
|
52
|
+
target?: React.RefObject<HTMLElement | null> | null;
|
|
53
|
+
scrollBar?: ScrollToFutureScrollBar;
|
|
54
|
+
thumb?: ScrollToFutureThumb;
|
|
55
|
+
selectTheme?: PresetsThemeType;
|
|
56
|
+
optionsTheme?: ScrollToFutureThemeProps;
|
|
57
|
+
nativeOnMobile?: boolean;
|
|
58
|
+
}
|
|
59
|
+
type ScrollToFutureConfig = Omit<ScrollToFutureInterface, "target">;
|
|
60
|
+
|
|
61
|
+
declare const ScrollToFuture: ({ target, scrollBar, thumb, selectTheme, optionsTheme, nativeOnMobile, }: ScrollToFutureInterface) => react.JSX.Element | null;
|
|
62
|
+
|
|
63
|
+
export { ScrollToFuture, type ScrollToFutureConfig };
|