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/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":[]}
@@ -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 };
@@ -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 };