@cloud-ru/ds-pagination 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.
Files changed (101) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +174 -0
  4. package/dist/cjs/components/Pagination/Pagination.d.ts +24 -0
  5. package/dist/cjs/components/Pagination/Pagination.js +64 -0
  6. package/dist/cjs/components/Pagination/index.d.ts +1 -0
  7. package/dist/cjs/components/Pagination/index.js +17 -0
  8. package/dist/cjs/components/Pagination/styles.module.css +19 -0
  9. package/dist/cjs/components/PaginationNumberItem/PaginationNumberItem.d.ts +10 -0
  10. package/dist/cjs/components/PaginationNumberItem/PaginationNumberItem.js +18 -0
  11. package/dist/cjs/components/PaginationNumberItem/index.d.ts +1 -0
  12. package/dist/cjs/components/PaginationNumberItem/index.js +17 -0
  13. package/dist/cjs/components/PaginationNumberItem/styles.module.css +149 -0
  14. package/dist/cjs/components/PaginationSlider/PaginationSlider.d.ts +17 -0
  15. package/dist/cjs/components/PaginationSlider/PaginationSlider.js +16 -0
  16. package/dist/cjs/components/PaginationSlider/index.d.ts +1 -0
  17. package/dist/cjs/components/PaginationSlider/index.js +17 -0
  18. package/dist/cjs/components/PaginationSlider/styles.module.css +25 -0
  19. package/dist/cjs/components/PaginationSliderItem/PaginationSliderItem.d.ts +10 -0
  20. package/dist/cjs/components/PaginationSliderItem/PaginationSliderItem.js +12 -0
  21. package/dist/cjs/components/PaginationSliderItem/index.d.ts +1 -0
  22. package/dist/cjs/components/PaginationSliderItem/index.js +17 -0
  23. package/dist/cjs/components/PaginationSliderItem/styles.module.css +102 -0
  24. package/dist/cjs/components/index.d.ts +2 -0
  25. package/dist/cjs/components/index.js +18 -0
  26. package/dist/cjs/constants.d.ts +31 -0
  27. package/dist/cjs/constants.js +37 -0
  28. package/dist/cjs/contexts.d.ts +7 -0
  29. package/dist/cjs/contexts.js +11 -0
  30. package/dist/cjs/index.d.ts +4 -0
  31. package/dist/cjs/index.js +20 -0
  32. package/dist/cjs/package.json +3 -0
  33. package/dist/cjs/style.css +295 -0
  34. package/dist/cjs/types.d.ts +5 -0
  35. package/dist/cjs/types.js +2 -0
  36. package/dist/cjs/utils/getPaginationEntries.d.ts +20 -0
  37. package/dist/cjs/utils/getPaginationEntries.js +85 -0
  38. package/dist/cjs/utils/getRange.d.ts +1 -0
  39. package/dist/cjs/utils/getRange.js +6 -0
  40. package/dist/cjs/utils/index.d.ts +2 -0
  41. package/dist/cjs/utils/index.js +18 -0
  42. package/dist/esm/components/Pagination/Pagination.d.ts +24 -0
  43. package/dist/esm/components/Pagination/Pagination.js +58 -0
  44. package/dist/esm/components/Pagination/index.d.ts +1 -0
  45. package/dist/esm/components/Pagination/index.js +1 -0
  46. package/dist/esm/components/Pagination/styles.module.css +19 -0
  47. package/dist/esm/components/PaginationNumberItem/PaginationNumberItem.d.ts +10 -0
  48. package/dist/esm/components/PaginationNumberItem/PaginationNumberItem.js +12 -0
  49. package/dist/esm/components/PaginationNumberItem/index.d.ts +1 -0
  50. package/dist/esm/components/PaginationNumberItem/index.js +1 -0
  51. package/dist/esm/components/PaginationNumberItem/styles.module.css +149 -0
  52. package/dist/esm/components/PaginationSlider/PaginationSlider.d.ts +17 -0
  53. package/dist/esm/components/PaginationSlider/PaginationSlider.js +10 -0
  54. package/dist/esm/components/PaginationSlider/index.d.ts +1 -0
  55. package/dist/esm/components/PaginationSlider/index.js +1 -0
  56. package/dist/esm/components/PaginationSlider/styles.module.css +25 -0
  57. package/dist/esm/components/PaginationSliderItem/PaginationSliderItem.d.ts +10 -0
  58. package/dist/esm/components/PaginationSliderItem/PaginationSliderItem.js +6 -0
  59. package/dist/esm/components/PaginationSliderItem/index.d.ts +1 -0
  60. package/dist/esm/components/PaginationSliderItem/index.js +1 -0
  61. package/dist/esm/components/PaginationSliderItem/styles.module.css +102 -0
  62. package/dist/esm/components/index.d.ts +2 -0
  63. package/dist/esm/components/index.js +2 -0
  64. package/dist/esm/constants.d.ts +31 -0
  65. package/dist/esm/constants.js +31 -0
  66. package/dist/esm/contexts.d.ts +7 -0
  67. package/dist/esm/contexts.js +7 -0
  68. package/dist/esm/index.d.ts +4 -0
  69. package/dist/esm/index.js +4 -0
  70. package/dist/esm/style.css +295 -0
  71. package/dist/esm/types.d.ts +5 -0
  72. package/dist/esm/types.js +1 -0
  73. package/dist/esm/utils/getPaginationEntries.d.ts +20 -0
  74. package/dist/esm/utils/getPaginationEntries.js +81 -0
  75. package/dist/esm/utils/getRange.d.ts +1 -0
  76. package/dist/esm/utils/getRange.js +3 -0
  77. package/dist/esm/utils/index.d.ts +2 -0
  78. package/dist/esm/utils/index.js +2 -0
  79. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  80. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  81. package/package.json +44 -0
  82. package/src/components/Pagination/Pagination.tsx +162 -0
  83. package/src/components/Pagination/index.ts +1 -0
  84. package/src/components/Pagination/styles.module.scss +27 -0
  85. package/src/components/PaginationNumberItem/PaginationNumberItem.tsx +59 -0
  86. package/src/components/PaginationNumberItem/index.ts +1 -0
  87. package/src/components/PaginationNumberItem/styles.module.scss +82 -0
  88. package/src/components/PaginationSlider/PaginationSlider.tsx +50 -0
  89. package/src/components/PaginationSlider/index.ts +1 -0
  90. package/src/components/PaginationSlider/styles.module.scss +31 -0
  91. package/src/components/PaginationSliderItem/PaginationSliderItem.tsx +29 -0
  92. package/src/components/PaginationSliderItem/index.ts +1 -0
  93. package/src/components/PaginationSliderItem/styles.module.scss +137 -0
  94. package/src/components/index.ts +2 -0
  95. package/src/constants.ts +35 -0
  96. package/src/contexts.ts +16 -0
  97. package/src/index.ts +4 -0
  98. package/src/types.ts +7 -0
  99. package/src/utils/getPaginationEntries.ts +118 -0
  100. package/src/utils/getRange.ts +3 -0
  101. package/src/utils/index.ts +2 -0
@@ -0,0 +1,149 @@
1
+ @charset "UTF-8";
2
+ .stateLayer{
3
+ visibility:initial;
4
+ }
5
+
6
+ .root{
7
+ cursor:pointer;
8
+ position:relative;
9
+ display:inline-flex;
10
+ align-items:center;
11
+ justify-content:center;
12
+ box-sizing:border-box;
13
+ margin:0;
14
+ padding:0;
15
+ border:none;
16
+ font-family:inherit;
17
+ color:var(--sn-theme-color-available-version-textTertiary, var(--sn-brand-color-text-version-tertiary, rgba(65, 66, 78, 0.5490196078)));
18
+ text-decoration:none;
19
+ background-color:transparent;
20
+ outline:0;
21
+ outline-offset:0;
22
+ }
23
+ .root[data-size=s]{
24
+ border-radius:var(--sn-pagination-anatomy-size-s-paginationNumber-itemPaginationNumber-borderRadius, var(--sn-brand-anatomy-radius-button-s, var(--sn-primitive-dimension-2, 2px)));
25
+ min-width:var(--sn-pagination-anatomy-size-s-paginationNumber-itemPaginationNumber-minWidth, var(--sn-primitive-dimension-24, 24px));
26
+ height:var(--sn-pagination-anatomy-size-s-paginationNumber-itemPaginationNumber-height, var(--sn-primitive-dimension-24, 24px));
27
+ }
28
+ .root[data-size=s] .textWrapper{
29
+ font-family:var(--sn-regular-label-s-fontFamily, var(--sn-brand-font-fontFamily-regular-label, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
30
+ font-weight:var(--sn-regular-label-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-label-s, var(--sn-brand-font-fontWeight-light-regular-label-s, var(--sn-primitive-font-fontWeightValue-500, 500))));
31
+ line-height:var(--sn-regular-label-s-lineHeight, var(--sn-density-typography-roleLabel-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
32
+ font-size:var(--sn-regular-label-s-fontSize, var(--sn-density-typography-roleLabel-fontSizeS, var(--sn-primitive-font-fontSize-14, 14px)));
33
+ letter-spacing:var(--sn-regular-label-s-letterSpacing, var(--sn-primitive-font-letterSpacing-s, 0px));
34
+ paragraph-spacing:var(--sn-regular-label-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize11, 5px));
35
+ padding-left:var(--sn-pagination-anatomy-size-s-paginationNumber-itemPaginationNumber-textWrapper-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
36
+ padding-right:var(--sn-pagination-anatomy-size-s-paginationNumber-itemPaginationNumber-textWrapper-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
37
+ }
38
+ .root[data-size=m]{
39
+ min-width:var(--sn-pagination-anatomy-size-m-paginationNumber-itemPaginationNumber-minWidth, var(--sn-primitive-dimension-32, 32px));
40
+ border-radius:var(--sn-pagination-anatomy-size-m-paginationNumber-itemPaginationNumber-borderRadius, var(--sn-brand-anatomy-radius-button-m, var(--sn-primitive-dimension-2, 2px)));
41
+ height:var(--sn-pagination-anatomy-size-m-paginationNumber-itemPaginationNumber-height, var(--sn-primitive-dimension-32, 32px));
42
+ }
43
+ .root[data-size=m] .textWrapper{
44
+ font-family:var(--sn-regular-label-m-fontFamily, var(--sn-brand-font-fontFamily-regular-label, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
45
+ font-weight:var(--sn-regular-label-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-label-m, var(--sn-brand-font-fontWeight-light-regular-label-m, var(--sn-primitive-font-fontWeightValue-550, 550))));
46
+ line-height:var(--sn-regular-label-m-lineHeight, var(--sn-density-typography-roleLabel-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
47
+ font-size:var(--sn-regular-label-m-fontSize, var(--sn-density-typography-roleLabel-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
48
+ letter-spacing:var(--sn-regular-label-m-letterSpacing, var(--sn-primitive-font-letterSpacing-s, 0px));
49
+ paragraph-spacing:var(--sn-regular-label-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
50
+ padding-left:var(--sn-pagination-anatomy-size-m-paginationNumber-itemPaginationNumber-textWrapper-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
51
+ padding-right:var(--sn-pagination-anatomy-size-m-paginationNumber-itemPaginationNumber-textWrapper-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
52
+ }
53
+ .root[data-activated]{
54
+ color:var(--sn-theme-color-primary-text, var(--sn-brand-color-primary-45, var(--sn-brandRole-color-brandA-45, var(--sn-primitive-color-brandA-45, #22775b))));
55
+ }
56
+ .root:focus-visible{
57
+ outline:var(--sn-theme-color-available-complementary, #000000) solid var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
58
+ outline-offset:var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
59
+ }
60
+ .root .stateLayer{
61
+ position:absolute;
62
+ inset:0;
63
+ border-radius:inherit;
64
+ }
65
+ .root .stateLayer[data-state=borderOnBackground]{
66
+ border-color:var(--sn-theme-color-material-stateLayer-neutral-border-default-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
67
+ border-style:solid;
68
+ border-width:var(--sn-primitive-strokeWeight-strokeRegular, 1px);
69
+ }
70
+ .root .stateLayer[data-state=emptyNeutralOnBackground]{
71
+ background:var(--sn-theme-color-material-stateLayer-neutral-onBackground-defaultEmpty-filled, var(--sn-brand-color-state-neutral-forLightMode-default-background, rgba(120, 123, 138, 0)));
72
+ }
73
+ .root .stateLayer[data-state=activatedOnBackground]{
74
+ background:var(--sn-theme-color-material-stateLayer-activated-default-filled, var(--sn-brand-color-state-activated-default-background, var(--sn-brandRole-color-brandA-backgroundActivatedDefault, rgba(56, 159, 116, 0.1490196078))));
75
+ }
76
+ .root .stateLayer[data-state=versionOnColor]{
77
+ background:var(--sn-theme-color-material-stateLayer-versionOnColor-default-filled, rgba(0, 0, 0, 0.0509803922));
78
+ }
79
+ .root .stateLayer[data-state=emptyVersionOnColor]{
80
+ background:var(--sn-theme-color-material-stateLayer-versionOnColor-defaultEmpty-filled, rgba(0, 0, 0, 0));
81
+ }
82
+ .root .stateLayer[data-state=inversionOnColor]{
83
+ background:var(--sn-theme-color-material-stateLayer-inversionOnColor-default-filled, rgba(255, 255, 255, 0.1019607843));
84
+ }
85
+ .root .stateLayer[data-state=emptyInversionOnColor]{
86
+ background:var(--sn-theme-color-material-stateLayer-inversionOnColor-defaultEmpty-filled, rgba(255, 255, 255, 0));
87
+ }
88
+ .root .stateLayer[data-state=emptyDarkOnAccent]{
89
+ background:var(--sn-theme-color-material-stateLayer-darkOnAccent-defaultEmpty-filled, rgba(0, 0, 0, 0));
90
+ }
91
+ @media (hover: hover){
92
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=borderOnBackground]{
93
+ border-color:var(--sn-theme-color-material-stateLayer-neutral-border-hovered-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-hovered-borderColor, rgba(159, 166, 198, 0.6509803922)));
94
+ }
95
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyNeutralOnBackground]{
96
+ background:var(--sn-theme-color-material-stateLayer-neutral-onBackground-hovered-filled, var(--sn-brand-color-state-neutral-forLightMode-hovered-background, rgba(188, 195, 220, 0.1490196078)));
97
+ }
98
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=activatedOnBackground]{
99
+ background:var(--sn-theme-color-material-stateLayer-activated-hovered-filled, var(--sn-brand-color-state-activated-hovered-background, var(--sn-brandRole-color-brandA-backgroundActivatedHovered, rgba(56, 159, 116, 0.3490196078))));
100
+ }
101
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=versionOnColor]{
102
+ background:var(--sn-theme-color-material-stateLayer-versionOnColor-hovered-filled, rgba(0, 0, 0, 0.1019607843));
103
+ }
104
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyVersionOnColor]{
105
+ background:var(--sn-theme-color-material-stateLayer-versionOnColor-hovered-filled, rgba(0, 0, 0, 0.1019607843));
106
+ }
107
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=inversionOnColor]{
108
+ background:var(--sn-theme-color-material-stateLayer-inversionOnColor-hovered-filled, rgba(255, 255, 255, 0.1490196078));
109
+ }
110
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyInversionOnColor]{
111
+ background:var(--sn-theme-color-material-stateLayer-inversionOnColor-hovered-filled, rgba(255, 255, 255, 0.1490196078));
112
+ }
113
+ .root:hover:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyDarkOnAccent]{
114
+ background:var(--sn-theme-color-material-stateLayer-darkOnAccent-hovered-filled, rgba(0, 0, 0, 0.0588235294));
115
+ }
116
+ }
117
+ .root{
118
+ }
119
+ .root[data-loading] .stateLayer[data-state=borderOnBackground], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=borderOnBackground], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=borderOnBackground]{
120
+ border-color:var(--sn-theme-color-material-stateLayer-neutral-border-pressed-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-pressed-borderColor, rgba(159, 166, 198, 0.8)));
121
+ }
122
+ .root[data-loading] .stateLayer[data-state=emptyNeutralOnBackground], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyNeutralOnBackground], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyNeutralOnBackground]{
123
+ background:var(--sn-theme-color-material-stateLayer-neutral-onBackground-pressed-filled, var(--sn-brand-color-state-neutral-forLightMode-pressed-background, rgba(188, 195, 220, 0.3019607843)));
124
+ }
125
+ .root[data-loading] .stateLayer[data-state=activatedOnBackground], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=activatedOnBackground], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=activatedOnBackground]{
126
+ background:var(--sn-theme-color-material-stateLayer-activated-pressed-filled, var(--sn-brand-color-state-activated-pressed-background, var(--sn-brandRole-color-brandA-backgroundActivatedPressed, rgba(56, 159, 116, 0.4509803922))));
127
+ }
128
+ .root[data-loading] .stateLayer[data-state=versionOnColor], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=versionOnColor], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=versionOnColor]{
129
+ background:var(--sn-theme-color-material-stateLayer-versionOnColor-pressed-filled, rgba(0, 0, 0, 0.1490196078));
130
+ }
131
+ .root[data-loading] .stateLayer[data-state=emptyVersionOnColor], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyVersionOnColor], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyVersionOnColor]{
132
+ background:var(--sn-theme-color-material-stateLayer-versionOnColor-pressed-filled, rgba(0, 0, 0, 0.1490196078));
133
+ }
134
+ .root[data-loading] .stateLayer[data-state=inversionOnColor], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=inversionOnColor], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=inversionOnColor]{
135
+ background:var(--sn-theme-color-material-stateLayer-inversionOnColor-pressed-filled, rgba(255, 255, 255, 0.0509803922));
136
+ }
137
+ .root[data-loading] .stateLayer[data-state=emptyInversionOnColor], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyInversionOnColor], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyInversionOnColor]{
138
+ background:var(--sn-theme-color-material-stateLayer-inversionOnColor-pressed-filled, rgba(255, 255, 255, 0.0509803922));
139
+ }
140
+ .root[data-loading] .stateLayer[data-state=emptyDarkOnAccent], .root:active:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyDarkOnAccent], .root[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyDarkOnAccent]{
141
+ background:var(--sn-theme-color-material-stateLayer-darkOnAccent-pressed-filled, rgba(0, 0, 0, 0.1215686275));
142
+ }
143
+
144
+ .textWrapper{
145
+ display:inline-flex;
146
+ align-items:center;
147
+ justify-content:center;
148
+ min-width:0;
149
+ }
@@ -0,0 +1,17 @@
1
+ import { WithSupportProps } from '@cloud-ru/ds-utils';
2
+ import { PaginationSliderSize } from '../../types';
3
+ export type PaginationSliderProps = WithSupportProps<{
4
+ /** Общее количество страниц */
5
+ total: number;
6
+ /** Текущая страница */
7
+ page: number;
8
+ /** Колбек смены значения */
9
+ onChange(page: number): void;
10
+ /** CSS класснейм */
11
+ className?: string;
12
+ /** Размер
13
+ * @default 's'
14
+ */
15
+ size?: PaginationSliderSize;
16
+ }>;
17
+ export declare function PaginationSlider({ total, page, onChange, className, size, ...rest }: PaginationSliderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PaginationSlider = PaginationSlider;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const utils_1 = require("@cloud-ru/ds-utils");
9
+ const constants_1 = require("../../constants");
10
+ const utils_2 = require("../../utils");
11
+ const PaginationSliderItem_1 = require("../PaginationSliderItem");
12
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
13
+ const FIRST_PAGE = 1;
14
+ function PaginationSlider({ total, page, onChange, className, size = constants_1.PAGINATION_SLIDER_SIZE.Xs, ...rest }) {
15
+ return ((0, jsx_runtime_1.jsx)("nav", { className: className, "aria-label": 'Pagination slider', ...(0, utils_1.extractSupportProps)(rest), children: (0, jsx_runtime_1.jsx)("ul", { className: styles_module_scss_1.default.paginationSlider, "data-size": size, children: (0, utils_2.getRange)(FIRST_PAGE, total).map(value => ((0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsx)(PaginationSliderItem_1.PaginationSliderItem, { activated: value === page, onClick: () => onChange(value), size: size, "data-test-id": (0, constants_1.getSliderItemTestId)(value) }) }, value))) }) }));
16
+ }
@@ -0,0 +1 @@
1
+ export * from './PaginationSlider';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./PaginationSlider"), exports);
@@ -0,0 +1,25 @@
1
+ .paginationSlider{
2
+ display:flex;
3
+ flex-direction:row;
4
+ gap:0;
5
+ align-items:center;
6
+ width:-moz-fit-content;
7
+ width:fit-content;
8
+ margin:0;
9
+ padding:0;
10
+ list-style-type:none;
11
+ }
12
+ .paginationSlider[data-size=xs]{
13
+ border-radius:var(--sn-pagination-anatomy-size-xs-paginationSlider-borderRadius, var(--sn-primitive-dimension-full, 10000px));
14
+ }
15
+ .paginationSlider[data-size=s]{
16
+ border-radius:var(--sn-pagination-anatomy-size-s-paginationSlider-borderRadius, var(--sn-primitive-dimension-full, 10000px));
17
+ }
18
+ .paginationSlider{
19
+ background-color:var(--sn-theme-color-material-stateLayer-versionOnColor-default-filled, rgba(0, 0, 0, 0.0509803922));
20
+ }
21
+ .paginationSlider > li{
22
+ display:flex;
23
+ align-items:center;
24
+ justify-content:center;
25
+ }
@@ -0,0 +1,10 @@
1
+ import { WithSupportProps } from '@cloud-ru/ds-utils';
2
+ import { Ref } from 'react';
3
+ import { PaginationSliderSize } from '../../types';
4
+ export type PaginationSliderItemProps = WithSupportProps<{
5
+ activated?: boolean;
6
+ onClick(): void;
7
+ size: PaginationSliderSize;
8
+ setButtonRef?: Ref<HTMLButtonElement>;
9
+ }>;
10
+ export declare function PaginationSliderItem({ activated, onClick, size, setButtonRef, ...rest }: PaginationSliderItemProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PaginationSliderItem = PaginationSliderItem;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const utils_1 = require("@cloud-ru/ds-utils");
9
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
10
+ function PaginationSliderItem({ activated, onClick, size, setButtonRef, ...rest }) {
11
+ return ((0, jsx_runtime_1.jsx)("button", { type: 'button', className: styles_module_scss_1.default.root, onClick: onClick, ref: setButtonRef, "data-size": size, ...(0, utils_1.extractSupportProps)(rest), "data-activated": activated || undefined, "aria-current": activated ? 'true' : undefined, children: (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.dot, "aria-hidden": true }) }));
12
+ }
@@ -0,0 +1 @@
1
+ export * from './PaginationSliderItem';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./PaginationSliderItem"), exports);
@@ -0,0 +1,102 @@
1
+ .root{
2
+ cursor:pointer;
3
+ position:relative;
4
+ display:inline-flex;
5
+ align-items:center;
6
+ justify-content:center;
7
+ box-sizing:border-box;
8
+ margin:0;
9
+ padding:0;
10
+ border:none;
11
+ background:transparent;
12
+ outline:0;
13
+ outline-offset:0;
14
+ }
15
+ .root[data-size=xs]{
16
+ min-width:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-minWidth, var(--sn-primitive-dimension-16, 16px));
17
+ height:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-height, var(--sn-primitive-dimension-16, 16px));
18
+ padding:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-padding, var(--sn-primitive-dimension-4, 4px));
19
+ width:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-minWidth, var(--sn-primitive-dimension-16, 16px));
20
+ }
21
+ .root[data-size=xs]:not(.root[data-size=xs][data-activated]) .dot{
22
+ height:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-default-height, var(--sn-primitive-dimension-6, 6px));
23
+ width:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-default-width, var(--sn-primitive-dimension-6, 6px));
24
+ border-radius:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-default-borderRadius, var(--sn-primitive-dimension-full, 10000px));
25
+ background-color:var(--sn-theme-color-neutral-background2Level, var(--sn-brand-color-neutral-99, var(--sn-primitive-color-gray-99, #ffffff)));
26
+ box-shadow:var(--sn-boxShadow-elevation-level1, var(--sn-theme-effect-shadow-level1-layer1-positionX, 0) var(--sn-theme-effect-shadow-level1-layer1-positionY, 0) var(--sn-theme-effect-shadow-level1-layer1-blur, 4px) var(--sn-theme-effect-shadow-level1-layer1-speed, 0) var(--sn-theme-effect-shadow-layer1Color, rgba(0, 0, 0, 0.0784313725)), var(--sn-theme-effect-shadow-level1-layer2-positionX, 0) var(--sn-theme-effect-shadow-level1-layer2-positionY, 2px) var(--sn-theme-effect-shadow-level1-layer2-blur, 4px) var(--sn-theme-effect-shadow-level1-layer2-speed, 1px) var(--sn-theme-effect-shadow-layer2Color, rgba(0, 0, 0, 0.0784313725)));
27
+ }
28
+ @media (hover: hover){
29
+ .root[data-size=xs]:not(.root[data-size=xs][data-activated]):hover .dot{
30
+ height:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-hovered-height, var(--sn-primitive-dimension-10, 10px));
31
+ width:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-hovered-width, var(--sn-primitive-dimension-10, 10px));
32
+ border-radius:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-hovered-borderRadius, var(--sn-primitive-dimension-full, 10000px));
33
+ }
34
+ }
35
+ .root[data-size=xs]:not(.root[data-size=xs][data-activated]){
36
+ }
37
+ .root[data-size=xs]:not(.root[data-size=xs][data-activated]):active .dot{
38
+ height:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-pressed-height, var(--sn-primitive-dimension-6, 6px));
39
+ width:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-pressed-width, var(--sn-primitive-dimension-6, 6px));
40
+ border-radius:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedFalse-pressed-borderRadius, var(--sn-primitive-dimension-full, 10000px));
41
+ }
42
+ .root[data-size=xs][data-activated] .dot{
43
+ height:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedTrue-default-height, var(--sn-primitive-dimension-8, 8px));
44
+ width:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedTrue-default-width, var(--sn-primitive-dimension-8, 8px));
45
+ border-radius:var(--sn-pagination-anatomy-size-xs-paginationSlider-itemPaginationSlider-slider-activatedTrue-default-borderRadius, var(--sn-primitive-dimension-full, 10000px));
46
+ background-color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-55, var(--sn-brandRole-color-brandA-55, var(--sn-primitive-color-brandA-55, #389f74))));
47
+ box-shadow:none;
48
+ }
49
+ .root[data-size=xs]:focus-visible .dot{
50
+ outline:var(--sn-theme-color-available-complementary, #000000) solid var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
51
+ outline-offset:var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
52
+ }
53
+ .root[data-size=s]{
54
+ height:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-height, var(--sn-primitive-dimension-24, 24px));
55
+ min-width:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-minWidth, var(--sn-primitive-dimension-24, 24px));
56
+ padding:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-padding, var(--sn-primitive-dimension-4, 4px));
57
+ width:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-minWidth, var(--sn-primitive-dimension-24, 24px));
58
+ }
59
+ .root[data-size=s]:not(.root[data-size=s][data-activated]) .dot{
60
+ width:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-default-width, var(--sn-primitive-dimension-8, 8px));
61
+ height:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-default-height, var(--sn-primitive-dimension-8, 8px));
62
+ border-radius:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-default-borderRadius, var(--sn-primitive-dimension-full, 10000px));
63
+ background-color:var(--sn-theme-color-neutral-background2Level, var(--sn-brand-color-neutral-99, var(--sn-primitive-color-gray-99, #ffffff)));
64
+ box-shadow:var(--sn-boxShadow-elevation-level1, var(--sn-theme-effect-shadow-level1-layer1-positionX, 0) var(--sn-theme-effect-shadow-level1-layer1-positionY, 0) var(--sn-theme-effect-shadow-level1-layer1-blur, 4px) var(--sn-theme-effect-shadow-level1-layer1-speed, 0) var(--sn-theme-effect-shadow-layer1Color, rgba(0, 0, 0, 0.0784313725)), var(--sn-theme-effect-shadow-level1-layer2-positionX, 0) var(--sn-theme-effect-shadow-level1-layer2-positionY, 2px) var(--sn-theme-effect-shadow-level1-layer2-blur, 4px) var(--sn-theme-effect-shadow-level1-layer2-speed, 1px) var(--sn-theme-effect-shadow-layer2Color, rgba(0, 0, 0, 0.0784313725)));
65
+ }
66
+ @media (hover: hover){
67
+ .root[data-size=s]:not(.root[data-size=s][data-activated]):hover .dot{
68
+ width:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-hovered-width, var(--sn-primitive-dimension-12, 12px));
69
+ height:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-hovered-height, var(--sn-primitive-dimension-12, 12px));
70
+ border-radius:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-hovered-borderRadius, var(--sn-primitive-dimension-full, 10000px));
71
+ }
72
+ }
73
+ .root[data-size=s]:not(.root[data-size=s][data-activated]){
74
+ }
75
+ .root[data-size=s]:not(.root[data-size=s][data-activated]):active .dot{
76
+ width:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-pressed-width, var(--sn-primitive-dimension-8, 8px));
77
+ height:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-pressed-height, var(--sn-primitive-dimension-8, 8px));
78
+ border-radius:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedFalse-pressed-borderRadius, var(--sn-primitive-dimension-full, 10000px));
79
+ }
80
+ .root[data-size=s][data-activated] .dot{
81
+ width:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedTrue-default-width, var(--sn-primitive-dimension-12, 12px));
82
+ height:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedTrue-default-height, var(--sn-primitive-dimension-12, 12px));
83
+ border-radius:var(--sn-pagination-anatomy-size-s-paginationSlider-itemPaginationSlider-slider-activatedTrue-default-borderRadius, var(--sn-primitive-dimension-full, 10000px));
84
+ background-color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-55, var(--sn-brandRole-color-brandA-55, var(--sn-primitive-color-brandA-55, #389f74))));
85
+ box-shadow:none;
86
+ }
87
+ .root[data-size=s]:focus-visible .dot{
88
+ outline:var(--sn-theme-color-available-complementary, #000000) solid var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
89
+ outline-offset:var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
90
+ }
91
+
92
+ .dot{
93
+ position:relative;
94
+ flex-shrink:0;
95
+ box-sizing:border-box;
96
+ margin:0;
97
+ padding:0;
98
+ border:none;
99
+ background:transparent;
100
+ outline:0;
101
+ outline-offset:0;
102
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Pagination';
2
+ export * from './PaginationSlider';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Pagination"), exports);
18
+ __exportStar(require("./PaginationSlider"), exports);
@@ -0,0 +1,31 @@
1
+ export declare const PAGINATION_SIZE: {
2
+ readonly S: "s";
3
+ readonly M: "m";
4
+ };
5
+ export declare const PAGINATION_SLIDER_SIZE: {
6
+ readonly Xs: "xs";
7
+ readonly S: "s";
8
+ };
9
+ export declare const VARIANT: {
10
+ readonly Link: "link";
11
+ readonly Button: "button";
12
+ };
13
+ export declare const TEST_IDS: {
14
+ /** Корень `Pagination` (ставится потребителем через `data-test-id`). */
15
+ readonly root: "pagination";
16
+ /** Корень `PaginationSlider` (ставится потребителем через `data-test-id`). */
17
+ readonly sliderRoot: "pagination-slider";
18
+ /** Кнопка «предыдущая страница». */
19
+ readonly prev: "page-prev-button";
20
+ /** Кнопка «следующая страница». */
21
+ readonly next: "page-next-button";
22
+ /** Префикс для кнопки конкретной страницы. Полный id — `page-number-button-${page}`. */
23
+ readonly pageNumberPrefix: "page-number-button";
24
+ /** Префикс для кнопки «многоточие» (break). Полный id — `page-more-button-${start}-${end}`. */
25
+ readonly pageMorePrefix: "page-more-button";
26
+ /** Префикс для кнопки страницы в `PaginationSlider`. Полный id — `page-button-slider-${value}`. */
27
+ readonly sliderItemPrefix: "page-button-slider";
28
+ };
29
+ export declare const getPageNumberTestId: (page: number) => string;
30
+ export declare const getPageMoreTestId: (start: number, end: number) => string;
31
+ export declare const getSliderItemTestId: (value: number) => string;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSliderItemTestId = exports.getPageMoreTestId = exports.getPageNumberTestId = exports.TEST_IDS = exports.VARIANT = exports.PAGINATION_SLIDER_SIZE = exports.PAGINATION_SIZE = void 0;
4
+ exports.PAGINATION_SIZE = {
5
+ S: 's',
6
+ M: 'm',
7
+ };
8
+ exports.PAGINATION_SLIDER_SIZE = {
9
+ Xs: 'xs',
10
+ S: 's',
11
+ };
12
+ exports.VARIANT = {
13
+ Link: 'link',
14
+ Button: 'button',
15
+ };
16
+ exports.TEST_IDS = {
17
+ /** Корень `Pagination` (ставится потребителем через `data-test-id`). */
18
+ root: 'pagination',
19
+ /** Корень `PaginationSlider` (ставится потребителем через `data-test-id`). */
20
+ sliderRoot: 'pagination-slider',
21
+ /** Кнопка «предыдущая страница». */
22
+ prev: 'page-prev-button',
23
+ /** Кнопка «следующая страница». */
24
+ next: 'page-next-button',
25
+ /** Префикс для кнопки конкретной страницы. Полный id — `page-number-button-${page}`. */
26
+ pageNumberPrefix: 'page-number-button',
27
+ /** Префикс для кнопки «многоточие» (break). Полный id — `page-more-button-${start}-${end}`. */
28
+ pageMorePrefix: 'page-more-button',
29
+ /** Префикс для кнопки страницы в `PaginationSlider`. Полный id — `page-button-slider-${value}`. */
30
+ sliderItemPrefix: 'page-button-slider',
31
+ };
32
+ const getPageNumberTestId = (page) => `${exports.TEST_IDS.pageNumberPrefix}-${page}`;
33
+ exports.getPageNumberTestId = getPageNumberTestId;
34
+ const getPageMoreTestId = (start, end) => `${exports.TEST_IDS.pageMorePrefix}-${start}-${end}`;
35
+ exports.getPageMoreTestId = getPageMoreTestId;
36
+ const getSliderItemTestId = (value) => `${exports.TEST_IDS.sliderItemPrefix}-${value}`;
37
+ exports.getSliderItemTestId = getSliderItemTestId;
@@ -0,0 +1,7 @@
1
+ import { PaginationSize, Variant } from './types';
2
+ export type PaginationContextValue = {
3
+ size: PaginationSize;
4
+ variant: Variant;
5
+ };
6
+ export declare const PaginationContext: import("react").Context<PaginationContextValue>;
7
+ export declare const usePaginationContext: () => PaginationContextValue;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.usePaginationContext = exports.PaginationContext = void 0;
4
+ const react_1 = require("react");
5
+ const constants_1 = require("./constants");
6
+ exports.PaginationContext = (0, react_1.createContext)({
7
+ size: constants_1.PAGINATION_SIZE.S,
8
+ variant: constants_1.VARIANT.Button,
9
+ });
10
+ const usePaginationContext = () => (0, react_1.useContext)(exports.PaginationContext);
11
+ exports.usePaginationContext = usePaginationContext;
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export * from './constants';
3
+ export * from './types';
4
+ export * from './utils';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./components"), exports);
18
+ __exportStar(require("./constants"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ __exportStar(require("./utils"), exports);
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }