@cloud-ru/ds-rating 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 (75) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +88 -0
  4. package/dist/cjs/components/Rating/Rating.d.ts +28 -0
  5. package/dist/cjs/components/Rating/Rating.js +53 -0
  6. package/dist/cjs/components/Rating/index.d.ts +1 -0
  7. package/dist/cjs/components/Rating/index.js +17 -0
  8. package/dist/cjs/components/Rating/styles.module.css +4 -0
  9. package/dist/cjs/components/index.d.ts +1 -0
  10. package/dist/cjs/components/index.js +17 -0
  11. package/dist/cjs/constants.d.ts +24 -0
  12. package/dist/cjs/constants.js +27 -0
  13. package/dist/cjs/helperComponents/RatingStar/RatingStar.d.ts +29 -0
  14. package/dist/cjs/helperComponents/RatingStar/RatingStar.js +18 -0
  15. package/dist/cjs/helperComponents/RatingStar/constants.d.ts +5 -0
  16. package/dist/cjs/helperComponents/RatingStar/constants.js +8 -0
  17. package/dist/cjs/helperComponents/RatingStar/index.d.ts +3 -0
  18. package/dist/cjs/helperComponents/RatingStar/index.js +20 -0
  19. package/dist/cjs/helperComponents/RatingStar/styles.module.css +210 -0
  20. package/dist/cjs/helperComponents/RatingStar/types.d.ts +3 -0
  21. package/dist/cjs/helperComponents/RatingStar/types.js +2 -0
  22. package/dist/cjs/helperComponents/index.d.ts +1 -0
  23. package/dist/cjs/helperComponents/index.js +17 -0
  24. package/dist/cjs/index.d.ts +3 -0
  25. package/dist/cjs/index.js +19 -0
  26. package/dist/cjs/package.json +3 -0
  27. package/dist/cjs/style.css +214 -0
  28. package/dist/cjs/types.d.ts +4 -0
  29. package/dist/cjs/types.js +2 -0
  30. package/dist/cjs/utils.d.ts +3 -0
  31. package/dist/cjs/utils.js +19 -0
  32. package/dist/esm/components/Rating/Rating.d.ts +28 -0
  33. package/dist/esm/components/Rating/Rating.js +47 -0
  34. package/dist/esm/components/Rating/index.d.ts +1 -0
  35. package/dist/esm/components/Rating/index.js +1 -0
  36. package/dist/esm/components/Rating/styles.module.css +4 -0
  37. package/dist/esm/components/index.d.ts +1 -0
  38. package/dist/esm/components/index.js +1 -0
  39. package/dist/esm/constants.d.ts +24 -0
  40. package/dist/esm/constants.js +24 -0
  41. package/dist/esm/helperComponents/RatingStar/RatingStar.d.ts +29 -0
  42. package/dist/esm/helperComponents/RatingStar/RatingStar.js +12 -0
  43. package/dist/esm/helperComponents/RatingStar/constants.d.ts +5 -0
  44. package/dist/esm/helperComponents/RatingStar/constants.js +5 -0
  45. package/dist/esm/helperComponents/RatingStar/index.d.ts +3 -0
  46. package/dist/esm/helperComponents/RatingStar/index.js +2 -0
  47. package/dist/esm/helperComponents/RatingStar/styles.module.css +210 -0
  48. package/dist/esm/helperComponents/RatingStar/types.d.ts +3 -0
  49. package/dist/esm/helperComponents/RatingStar/types.js +1 -0
  50. package/dist/esm/helperComponents/index.d.ts +1 -0
  51. package/dist/esm/helperComponents/index.js +1 -0
  52. package/dist/esm/index.d.ts +3 -0
  53. package/dist/esm/index.js +3 -0
  54. package/dist/esm/style.css +214 -0
  55. package/dist/esm/types.d.ts +4 -0
  56. package/dist/esm/types.js +1 -0
  57. package/dist/esm/utils.d.ts +3 -0
  58. package/dist/esm/utils.js +15 -0
  59. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  60. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  61. package/package.json +43 -0
  62. package/src/components/Rating/Rating.tsx +110 -0
  63. package/src/components/Rating/index.ts +1 -0
  64. package/src/components/Rating/styles.module.scss +4 -0
  65. package/src/components/index.ts +1 -0
  66. package/src/constants.ts +27 -0
  67. package/src/helperComponents/RatingStar/RatingStar.tsx +86 -0
  68. package/src/helperComponents/RatingStar/constants.ts +5 -0
  69. package/src/helperComponents/RatingStar/index.ts +3 -0
  70. package/src/helperComponents/RatingStar/styles.module.scss +83 -0
  71. package/src/helperComponents/RatingStar/types.ts +5 -0
  72. package/src/helperComponents/index.ts +1 -0
  73. package/src/index.ts +3 -0
  74. package/src/types.ts +7 -0
  75. package/src/utils.ts +20 -0
@@ -0,0 +1,210 @@
1
+ .firstStarContainer{
2
+ position:absolute;
3
+ top:0;
4
+ left:0;
5
+ overflow:hidden;
6
+ width:50%;
7
+ }
8
+
9
+ .ratingStar{
10
+ cursor:pointer;
11
+ position:relative;
12
+ display:inline-block;
13
+ box-sizing:border-box;
14
+ }
15
+ .ratingStar svg{
16
+ display:block;
17
+ }
18
+ .ratingStar[data-size=xs]{
19
+ min-width:var(--sn-rating-anatomy-size-xs-container-minWidth, var(--sn-primitive-dimension-16, 16px));
20
+ min-height:var(--sn-rating-anatomy-size-xs-container-minHeight, var(--sn-primitive-dimension-16, 16px));
21
+ border-radius:var(--sn-rating-anatomy-size-xs-container-borderRadius, var(--sn-brand-anatomy-radius-toggles-checkbox-framing-xs, var(--sn-primitive-dimension-2, 2px)));
22
+ }
23
+ .ratingStar[data-size=xs] svg{
24
+ width:var(--sn-rating-anatomy-size-xs-container-minWidth, var(--sn-primitive-dimension-16, 16px)) !important;
25
+ height:var(--sn-rating-anatomy-size-xs-container-minHeight, var(--sn-primitive-dimension-16, 16px)) !important;
26
+ }
27
+ .ratingStar[data-size=xs] .firstStarContainer,
28
+ .ratingStar[data-size=xs] .secondStarContainer{
29
+ height:var(--sn-rating-anatomy-size-xs-container-minHeight, var(--sn-primitive-dimension-16, 16px)) !important;
30
+ }
31
+ .ratingStar[data-size=s]{
32
+ min-width:var(--sn-rating-anatomy-size-s-container-minWidth, var(--sn-primitive-dimension-24, 24px));
33
+ border-radius:var(--sn-rating-anatomy-size-s-container-borderRadius, var(--sn-brand-anatomy-radius-toggles-checkbox-framing-s, var(--sn-primitive-dimension-2, 2px)));
34
+ min-height:var(--sn-rating-anatomy-size-s-container-minHeight, var(--sn-primitive-dimension-24, 24px));
35
+ }
36
+ .ratingStar[data-size=s] svg{
37
+ width:var(--sn-rating-anatomy-size-s-container-minWidth, var(--sn-primitive-dimension-24, 24px)) !important;
38
+ height:var(--sn-rating-anatomy-size-s-container-minHeight, var(--sn-primitive-dimension-24, 24px)) !important;
39
+ }
40
+ .ratingStar[data-size=s] .firstStarContainer,
41
+ .ratingStar[data-size=s] .secondStarContainer{
42
+ height:var(--sn-rating-anatomy-size-s-container-minHeight, var(--sn-primitive-dimension-24, 24px)) !important;
43
+ }
44
+ .ratingStar:focus-visible{
45
+ border-radius:var(--sn-primitive-dimension-2, 2px);
46
+ outline:var(--sn-primitive-strokeWeight-strokeSemiBold, 2px) solid var(--sn-theme-color-available-complementary, #000000);
47
+ outline-offset:calc(-1 * var(--sn-primitive-strokeWeight-strokeSemiBold, 2px));
48
+ }
49
+ .ratingStar[data-appearance=primary][data-value="0%"] .firstStarContainer{
50
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
51
+ }
52
+ .ratingStar[data-appearance=primary][data-value="0%"] .secondStarContainer{
53
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
54
+ }
55
+ .ratingStar[data-appearance=primary][data-value="50%"] .firstStarContainer{
56
+ 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))));
57
+ }
58
+ .ratingStar[data-appearance=primary][data-value="50%"] .secondStarContainer{
59
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
60
+ }
61
+ .ratingStar[data-appearance=primary][data-value="100%"] .firstStarContainer{
62
+ 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))));
63
+ }
64
+ .ratingStar[data-appearance=primary][data-value="100%"] .secondStarContainer{
65
+ 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))));
66
+ }
67
+ .ratingStar[data-appearance=neutral][data-value="0%"] .firstStarContainer{
68
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
69
+ }
70
+ .ratingStar[data-appearance=neutral][data-value="0%"] .secondStarContainer{
71
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
72
+ }
73
+ .ratingStar[data-appearance=neutral][data-value="50%"] .firstStarContainer{
74
+ color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
75
+ }
76
+ .ratingStar[data-appearance=neutral][data-value="50%"] .secondStarContainer{
77
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
78
+ }
79
+ .ratingStar[data-appearance=neutral][data-value="100%"] .firstStarContainer{
80
+ color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
81
+ }
82
+ .ratingStar[data-appearance=neutral][data-value="100%"] .secondStarContainer{
83
+ color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
84
+ }
85
+ .ratingStar[data-appearance=red][data-value="0%"] .firstStarContainer{
86
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
87
+ }
88
+ .ratingStar[data-appearance=red][data-value="0%"] .secondStarContainer{
89
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
90
+ }
91
+ .ratingStar[data-appearance=red][data-value="50%"] .firstStarContainer{
92
+ color:var(--sn-theme-color-red-accent, var(--sn-primitive-color-red-55, #d52e33));
93
+ }
94
+ .ratingStar[data-appearance=red][data-value="50%"] .secondStarContainer{
95
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
96
+ }
97
+ .ratingStar[data-appearance=red][data-value="100%"] .firstStarContainer{
98
+ color:var(--sn-theme-color-red-accent, var(--sn-primitive-color-red-55, #d52e33));
99
+ }
100
+ .ratingStar[data-appearance=red][data-value="100%"] .secondStarContainer{
101
+ color:var(--sn-theme-color-red-accent, var(--sn-primitive-color-red-55, #d52e33));
102
+ }
103
+ .ratingStar[data-appearance=orange][data-value="0%"] .firstStarContainer{
104
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
105
+ }
106
+ .ratingStar[data-appearance=orange][data-value="0%"] .secondStarContainer{
107
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
108
+ }
109
+ .ratingStar[data-appearance=orange][data-value="50%"] .firstStarContainer{
110
+ color:var(--sn-theme-color-orange-accent, var(--sn-primitive-color-orange-55, #f57e1f));
111
+ }
112
+ .ratingStar[data-appearance=orange][data-value="50%"] .secondStarContainer{
113
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
114
+ }
115
+ .ratingStar[data-appearance=orange][data-value="100%"] .firstStarContainer{
116
+ color:var(--sn-theme-color-orange-accent, var(--sn-primitive-color-orange-55, #f57e1f));
117
+ }
118
+ .ratingStar[data-appearance=orange][data-value="100%"] .secondStarContainer{
119
+ color:var(--sn-theme-color-orange-accent, var(--sn-primitive-color-orange-55, #f57e1f));
120
+ }
121
+ .ratingStar[data-appearance=yellow][data-value="0%"] .firstStarContainer{
122
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
123
+ }
124
+ .ratingStar[data-appearance=yellow][data-value="0%"] .secondStarContainer{
125
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
126
+ }
127
+ .ratingStar[data-appearance=yellow][data-value="50%"] .firstStarContainer{
128
+ color:var(--sn-theme-color-yellow-accent, var(--sn-primitive-color-yellow-55, #f3b917));
129
+ }
130
+ .ratingStar[data-appearance=yellow][data-value="50%"] .secondStarContainer{
131
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
132
+ }
133
+ .ratingStar[data-appearance=yellow][data-value="100%"] .firstStarContainer{
134
+ color:var(--sn-theme-color-yellow-accent, var(--sn-primitive-color-yellow-55, #f3b917));
135
+ }
136
+ .ratingStar[data-appearance=yellow][data-value="100%"] .secondStarContainer{
137
+ color:var(--sn-theme-color-yellow-accent, var(--sn-primitive-color-yellow-55, #f3b917));
138
+ }
139
+ .ratingStar[data-appearance=green][data-value="0%"] .firstStarContainer{
140
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
141
+ }
142
+ .ratingStar[data-appearance=green][data-value="0%"] .secondStarContainer{
143
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
144
+ }
145
+ .ratingStar[data-appearance=green][data-value="50%"] .firstStarContainer{
146
+ color:var(--sn-theme-color-green-accent, var(--sn-primitive-color-green-55, #41b954));
147
+ }
148
+ .ratingStar[data-appearance=green][data-value="50%"] .secondStarContainer{
149
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
150
+ }
151
+ .ratingStar[data-appearance=green][data-value="100%"] .firstStarContainer{
152
+ color:var(--sn-theme-color-green-accent, var(--sn-primitive-color-green-55, #41b954));
153
+ }
154
+ .ratingStar[data-appearance=green][data-value="100%"] .secondStarContainer{
155
+ color:var(--sn-theme-color-green-accent, var(--sn-primitive-color-green-55, #41b954));
156
+ }
157
+ .ratingStar[data-appearance=blue][data-value="0%"] .firstStarContainer{
158
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
159
+ }
160
+ .ratingStar[data-appearance=blue][data-value="0%"] .secondStarContainer{
161
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
162
+ }
163
+ .ratingStar[data-appearance=blue][data-value="50%"] .firstStarContainer{
164
+ color:var(--sn-theme-color-blue-accent, var(--sn-primitive-color-blue-55, #4387e2));
165
+ }
166
+ .ratingStar[data-appearance=blue][data-value="50%"] .secondStarContainer{
167
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
168
+ }
169
+ .ratingStar[data-appearance=blue][data-value="100%"] .firstStarContainer{
170
+ color:var(--sn-theme-color-blue-accent, var(--sn-primitive-color-blue-55, #4387e2));
171
+ }
172
+ .ratingStar[data-appearance=blue][data-value="100%"] .secondStarContainer{
173
+ color:var(--sn-theme-color-blue-accent, var(--sn-primitive-color-blue-55, #4387e2));
174
+ }
175
+ .ratingStar[data-appearance=violet][data-value="0%"] .firstStarContainer{
176
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
177
+ }
178
+ .ratingStar[data-appearance=violet][data-value="0%"] .secondStarContainer{
179
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
180
+ }
181
+ .ratingStar[data-appearance=violet][data-value="50%"] .firstStarContainer{
182
+ color:var(--sn-theme-color-violet-accent, var(--sn-primitive-color-violet-55, #b163cc));
183
+ }
184
+ .ratingStar[data-appearance=violet][data-value="50%"] .secondStarContainer{
185
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
186
+ }
187
+ .ratingStar[data-appearance=violet][data-value="100%"] .firstStarContainer{
188
+ color:var(--sn-theme-color-violet-accent, var(--sn-primitive-color-violet-55, #b163cc));
189
+ }
190
+ .ratingStar[data-appearance=violet][data-value="100%"] .secondStarContainer{
191
+ color:var(--sn-theme-color-violet-accent, var(--sn-primitive-color-violet-55, #b163cc));
192
+ }
193
+ .ratingStar[data-appearance=pink][data-value="0%"] .firstStarContainer{
194
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
195
+ }
196
+ .ratingStar[data-appearance=pink][data-value="0%"] .secondStarContainer{
197
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
198
+ }
199
+ .ratingStar[data-appearance=pink][data-value="50%"] .firstStarContainer{
200
+ color:var(--sn-theme-color-pink-accent, var(--sn-primitive-color-pink-55, #dd5a8e));
201
+ }
202
+ .ratingStar[data-appearance=pink][data-value="50%"] .secondStarContainer{
203
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
204
+ }
205
+ .ratingStar[data-appearance=pink][data-value="100%"] .firstStarContainer{
206
+ color:var(--sn-theme-color-pink-accent, var(--sn-primitive-color-pink-55, #dd5a8e));
207
+ }
208
+ .ratingStar[data-appearance=pink][data-value="100%"] .secondStarContainer{
209
+ color:var(--sn-theme-color-pink-accent, var(--sn-primitive-color-pink-55, #dd5a8e));
210
+ }
@@ -0,0 +1,3 @@
1
+ import { ValueOf } from '@cloud-ru/ds-utils';
2
+ import { VALUE } from './constants';
3
+ export type Value = ValueOf<typeof VALUE>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export * from './RatingStar';
@@ -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("./RatingStar"), exports);
@@ -0,0 +1,3 @@
1
+ export * from './components';
2
+ export * from './constants';
3
+ export * from './types';
@@ -0,0 +1,19 @@
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);
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,214 @@
1
+ .rating{
2
+ display:inline-flex;
3
+ align-items:center;
4
+ }
5
+ .firstStarContainer{
6
+ position:absolute;
7
+ top:0;
8
+ left:0;
9
+ overflow:hidden;
10
+ width:50%;
11
+ }
12
+
13
+ .ratingStar{
14
+ cursor:pointer;
15
+ position:relative;
16
+ display:inline-block;
17
+ box-sizing:border-box;
18
+ }
19
+ .ratingStar svg{
20
+ display:block;
21
+ }
22
+ .ratingStar[data-size=xs]{
23
+ min-width:var(--sn-rating-anatomy-size-xs-container-minWidth, var(--sn-primitive-dimension-16, 16px));
24
+ min-height:var(--sn-rating-anatomy-size-xs-container-minHeight, var(--sn-primitive-dimension-16, 16px));
25
+ border-radius:var(--sn-rating-anatomy-size-xs-container-borderRadius, var(--sn-brand-anatomy-radius-toggles-checkbox-framing-xs, var(--sn-primitive-dimension-2, 2px)));
26
+ }
27
+ .ratingStar[data-size=xs] svg{
28
+ width:var(--sn-rating-anatomy-size-xs-container-minWidth, var(--sn-primitive-dimension-16, 16px)) !important;
29
+ height:var(--sn-rating-anatomy-size-xs-container-minHeight, var(--sn-primitive-dimension-16, 16px)) !important;
30
+ }
31
+ .ratingStar[data-size=xs] .firstStarContainer,
32
+ .ratingStar[data-size=xs] .secondStarContainer{
33
+ height:var(--sn-rating-anatomy-size-xs-container-minHeight, var(--sn-primitive-dimension-16, 16px)) !important;
34
+ }
35
+ .ratingStar[data-size=s]{
36
+ min-width:var(--sn-rating-anatomy-size-s-container-minWidth, var(--sn-primitive-dimension-24, 24px));
37
+ border-radius:var(--sn-rating-anatomy-size-s-container-borderRadius, var(--sn-brand-anatomy-radius-toggles-checkbox-framing-s, var(--sn-primitive-dimension-2, 2px)));
38
+ min-height:var(--sn-rating-anatomy-size-s-container-minHeight, var(--sn-primitive-dimension-24, 24px));
39
+ }
40
+ .ratingStar[data-size=s] svg{
41
+ width:var(--sn-rating-anatomy-size-s-container-minWidth, var(--sn-primitive-dimension-24, 24px)) !important;
42
+ height:var(--sn-rating-anatomy-size-s-container-minHeight, var(--sn-primitive-dimension-24, 24px)) !important;
43
+ }
44
+ .ratingStar[data-size=s] .firstStarContainer,
45
+ .ratingStar[data-size=s] .secondStarContainer{
46
+ height:var(--sn-rating-anatomy-size-s-container-minHeight, var(--sn-primitive-dimension-24, 24px)) !important;
47
+ }
48
+ .ratingStar:focus-visible{
49
+ border-radius:var(--sn-primitive-dimension-2, 2px);
50
+ outline:var(--sn-primitive-strokeWeight-strokeSemiBold, 2px) solid var(--sn-theme-color-available-complementary, #000000);
51
+ outline-offset:calc(-1 * var(--sn-primitive-strokeWeight-strokeSemiBold, 2px));
52
+ }
53
+ .ratingStar[data-appearance=primary][data-value="0%"] .firstStarContainer{
54
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
55
+ }
56
+ .ratingStar[data-appearance=primary][data-value="0%"] .secondStarContainer{
57
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
58
+ }
59
+ .ratingStar[data-appearance=primary][data-value="50%"] .firstStarContainer{
60
+ 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))));
61
+ }
62
+ .ratingStar[data-appearance=primary][data-value="50%"] .secondStarContainer{
63
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
64
+ }
65
+ .ratingStar[data-appearance=primary][data-value="100%"] .firstStarContainer{
66
+ 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))));
67
+ }
68
+ .ratingStar[data-appearance=primary][data-value="100%"] .secondStarContainer{
69
+ 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))));
70
+ }
71
+ .ratingStar[data-appearance=neutral][data-value="0%"] .firstStarContainer{
72
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
73
+ }
74
+ .ratingStar[data-appearance=neutral][data-value="0%"] .secondStarContainer{
75
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
76
+ }
77
+ .ratingStar[data-appearance=neutral][data-value="50%"] .firstStarContainer{
78
+ color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
79
+ }
80
+ .ratingStar[data-appearance=neutral][data-value="50%"] .secondStarContainer{
81
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
82
+ }
83
+ .ratingStar[data-appearance=neutral][data-value="100%"] .firstStarContainer{
84
+ color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
85
+ }
86
+ .ratingStar[data-appearance=neutral][data-value="100%"] .secondStarContainer{
87
+ color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
88
+ }
89
+ .ratingStar[data-appearance=red][data-value="0%"] .firstStarContainer{
90
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
91
+ }
92
+ .ratingStar[data-appearance=red][data-value="0%"] .secondStarContainer{
93
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
94
+ }
95
+ .ratingStar[data-appearance=red][data-value="50%"] .firstStarContainer{
96
+ color:var(--sn-theme-color-red-accent, var(--sn-primitive-color-red-55, #d52e33));
97
+ }
98
+ .ratingStar[data-appearance=red][data-value="50%"] .secondStarContainer{
99
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
100
+ }
101
+ .ratingStar[data-appearance=red][data-value="100%"] .firstStarContainer{
102
+ color:var(--sn-theme-color-red-accent, var(--sn-primitive-color-red-55, #d52e33));
103
+ }
104
+ .ratingStar[data-appearance=red][data-value="100%"] .secondStarContainer{
105
+ color:var(--sn-theme-color-red-accent, var(--sn-primitive-color-red-55, #d52e33));
106
+ }
107
+ .ratingStar[data-appearance=orange][data-value="0%"] .firstStarContainer{
108
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
109
+ }
110
+ .ratingStar[data-appearance=orange][data-value="0%"] .secondStarContainer{
111
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
112
+ }
113
+ .ratingStar[data-appearance=orange][data-value="50%"] .firstStarContainer{
114
+ color:var(--sn-theme-color-orange-accent, var(--sn-primitive-color-orange-55, #f57e1f));
115
+ }
116
+ .ratingStar[data-appearance=orange][data-value="50%"] .secondStarContainer{
117
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
118
+ }
119
+ .ratingStar[data-appearance=orange][data-value="100%"] .firstStarContainer{
120
+ color:var(--sn-theme-color-orange-accent, var(--sn-primitive-color-orange-55, #f57e1f));
121
+ }
122
+ .ratingStar[data-appearance=orange][data-value="100%"] .secondStarContainer{
123
+ color:var(--sn-theme-color-orange-accent, var(--sn-primitive-color-orange-55, #f57e1f));
124
+ }
125
+ .ratingStar[data-appearance=yellow][data-value="0%"] .firstStarContainer{
126
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
127
+ }
128
+ .ratingStar[data-appearance=yellow][data-value="0%"] .secondStarContainer{
129
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
130
+ }
131
+ .ratingStar[data-appearance=yellow][data-value="50%"] .firstStarContainer{
132
+ color:var(--sn-theme-color-yellow-accent, var(--sn-primitive-color-yellow-55, #f3b917));
133
+ }
134
+ .ratingStar[data-appearance=yellow][data-value="50%"] .secondStarContainer{
135
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
136
+ }
137
+ .ratingStar[data-appearance=yellow][data-value="100%"] .firstStarContainer{
138
+ color:var(--sn-theme-color-yellow-accent, var(--sn-primitive-color-yellow-55, #f3b917));
139
+ }
140
+ .ratingStar[data-appearance=yellow][data-value="100%"] .secondStarContainer{
141
+ color:var(--sn-theme-color-yellow-accent, var(--sn-primitive-color-yellow-55, #f3b917));
142
+ }
143
+ .ratingStar[data-appearance=green][data-value="0%"] .firstStarContainer{
144
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
145
+ }
146
+ .ratingStar[data-appearance=green][data-value="0%"] .secondStarContainer{
147
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
148
+ }
149
+ .ratingStar[data-appearance=green][data-value="50%"] .firstStarContainer{
150
+ color:var(--sn-theme-color-green-accent, var(--sn-primitive-color-green-55, #41b954));
151
+ }
152
+ .ratingStar[data-appearance=green][data-value="50%"] .secondStarContainer{
153
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
154
+ }
155
+ .ratingStar[data-appearance=green][data-value="100%"] .firstStarContainer{
156
+ color:var(--sn-theme-color-green-accent, var(--sn-primitive-color-green-55, #41b954));
157
+ }
158
+ .ratingStar[data-appearance=green][data-value="100%"] .secondStarContainer{
159
+ color:var(--sn-theme-color-green-accent, var(--sn-primitive-color-green-55, #41b954));
160
+ }
161
+ .ratingStar[data-appearance=blue][data-value="0%"] .firstStarContainer{
162
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
163
+ }
164
+ .ratingStar[data-appearance=blue][data-value="0%"] .secondStarContainer{
165
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
166
+ }
167
+ .ratingStar[data-appearance=blue][data-value="50%"] .firstStarContainer{
168
+ color:var(--sn-theme-color-blue-accent, var(--sn-primitive-color-blue-55, #4387e2));
169
+ }
170
+ .ratingStar[data-appearance=blue][data-value="50%"] .secondStarContainer{
171
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
172
+ }
173
+ .ratingStar[data-appearance=blue][data-value="100%"] .firstStarContainer{
174
+ color:var(--sn-theme-color-blue-accent, var(--sn-primitive-color-blue-55, #4387e2));
175
+ }
176
+ .ratingStar[data-appearance=blue][data-value="100%"] .secondStarContainer{
177
+ color:var(--sn-theme-color-blue-accent, var(--sn-primitive-color-blue-55, #4387e2));
178
+ }
179
+ .ratingStar[data-appearance=violet][data-value="0%"] .firstStarContainer{
180
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
181
+ }
182
+ .ratingStar[data-appearance=violet][data-value="0%"] .secondStarContainer{
183
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
184
+ }
185
+ .ratingStar[data-appearance=violet][data-value="50%"] .firstStarContainer{
186
+ color:var(--sn-theme-color-violet-accent, var(--sn-primitive-color-violet-55, #b163cc));
187
+ }
188
+ .ratingStar[data-appearance=violet][data-value="50%"] .secondStarContainer{
189
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
190
+ }
191
+ .ratingStar[data-appearance=violet][data-value="100%"] .firstStarContainer{
192
+ color:var(--sn-theme-color-violet-accent, var(--sn-primitive-color-violet-55, #b163cc));
193
+ }
194
+ .ratingStar[data-appearance=violet][data-value="100%"] .secondStarContainer{
195
+ color:var(--sn-theme-color-violet-accent, var(--sn-primitive-color-violet-55, #b163cc));
196
+ }
197
+ .ratingStar[data-appearance=pink][data-value="0%"] .firstStarContainer{
198
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
199
+ }
200
+ .ratingStar[data-appearance=pink][data-value="0%"] .secondStarContainer{
201
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
202
+ }
203
+ .ratingStar[data-appearance=pink][data-value="50%"] .firstStarContainer{
204
+ color:var(--sn-theme-color-pink-accent, var(--sn-primitive-color-pink-55, #dd5a8e));
205
+ }
206
+ .ratingStar[data-appearance=pink][data-value="50%"] .secondStarContainer{
207
+ color:var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
208
+ }
209
+ .ratingStar[data-appearance=pink][data-value="100%"] .firstStarContainer{
210
+ color:var(--sn-theme-color-pink-accent, var(--sn-primitive-color-pink-55, #dd5a8e));
211
+ }
212
+ .ratingStar[data-appearance=pink][data-value="100%"] .secondStarContainer{
213
+ color:var(--sn-theme-color-pink-accent, var(--sn-primitive-color-pink-55, #dd5a8e));
214
+ }
@@ -0,0 +1,4 @@
1
+ import { ValueOf } from '@cloud-ru/ds-utils';
2
+ import { APPEARANCE, SIZE } from './constants';
3
+ export type Appearance = ValueOf<typeof APPEARANCE>;
4
+ export type Size = ValueOf<typeof SIZE>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ import { Value } from './helperComponents';
2
+ export declare function getRatingStarValue(starIndex: number, rating: number, allowHalf: boolean): Value;
3
+ export declare function getStarValue(starIndex: number, value: Value, allowHalf: boolean): number;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRatingStarValue = getRatingStarValue;
4
+ exports.getStarValue = getStarValue;
5
+ const constants_1 = require("./constants");
6
+ const helperComponents_1 = require("./helperComponents");
7
+ function getRatingStarValue(starIndex, rating, allowHalf) {
8
+ const diff = rating - starIndex;
9
+ if (diff >= 0) {
10
+ return helperComponents_1.VALUE.Full;
11
+ }
12
+ if (allowHalf && diff === constants_1.HALF_STAR_VALUE * -1) {
13
+ return helperComponents_1.VALUE.Half;
14
+ }
15
+ return helperComponents_1.VALUE.Zero;
16
+ }
17
+ function getStarValue(starIndex, value, allowHalf) {
18
+ return allowHalf && value === helperComponents_1.VALUE.Half ? starIndex - constants_1.HALF_STAR_VALUE : starIndex;
19
+ }
@@ -0,0 +1,28 @@
1
+ import { WithSupportProps } from '@cloud-ru/ds-utils';
2
+ import { Appearance, Size } from '../../types.js';
3
+ export type RatingProps = WithSupportProps<{
4
+ /** Размер */
5
+ size?: Size;
6
+ /** Внешний вид (цветовая схема) */
7
+ appearance?: Appearance;
8
+ /** Общее количество звезд */
9
+ count: number;
10
+ /** Значение количества звезд в случае необходимости управления */
11
+ value?: number;
12
+ /** Количество звезд, заполненных по умолчанию */
13
+ defaultValue?: number;
14
+ /** Показывать или нет рейтинг в виде половины звезды */
15
+ allowHalf: boolean;
16
+ /** Разрещает сброс рейтинга при повторном нажатии на звезду */
17
+ allowClear: boolean;
18
+ /** Является ли поле доступным на изменение */
19
+ readonly: boolean;
20
+ /** Колбек, вызываемый на смену состояния */
21
+ onChange?(value: number): void;
22
+ /** CSS-класс */
23
+ className?: string;
24
+ }>;
25
+ /**
26
+ * Компонент Rating
27
+ */
28
+ export declare function Rating({ count, value, defaultValue, allowHalf, allowClear, readonly, appearance, size, className, onChange, ...rest }: RatingProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { extractSupportProps, useUncontrolledProp } from '@cloud-ru/ds-utils';
3
+ import cn from 'classnames';
4
+ import { useState } from 'react';
5
+ import { APPEARANCE, DEFAULT_RATING_VALUE, DEFAULT_STAR_COUNT, SIZE, TEST_IDS } from '../../constants.js';
6
+ import { RatingStar } from '../../helperComponents/index.js';
7
+ import { getRatingStarValue, getStarValue } from '../../utils.js';
8
+ import styles from './styles.module.css';
9
+ /**
10
+ * Компонент Rating
11
+ */
12
+ export function Rating({ count = DEFAULT_STAR_COUNT, value, defaultValue = DEFAULT_RATING_VALUE, allowHalf = false, allowClear = false, readonly = false, appearance = APPEARANCE.Yellow, size = SIZE.S, className, onChange, ...rest }) {
13
+ const [hoverRating, setHoverRating] = useState(null);
14
+ const [rating, setRating] = useUncontrolledProp(value, defaultValue, onChange);
15
+ function getRating(updatedValue) {
16
+ return rating === updatedValue && allowClear ? 0 : updatedValue;
17
+ }
18
+ const handleMouseEnter = (starIndex) => (value) => {
19
+ if (readonly) {
20
+ return;
21
+ }
22
+ setHoverRating(getStarValue(starIndex, value, allowHalf));
23
+ };
24
+ const handleMouseLeave = () => {
25
+ if (readonly) {
26
+ return;
27
+ }
28
+ setHoverRating(null);
29
+ };
30
+ const handleClick = (starIndex) => (value) => {
31
+ if (readonly) {
32
+ return;
33
+ }
34
+ setRating(getRating(getStarValue(starIndex, value, allowHalf)));
35
+ };
36
+ const handleKeyDown = (starIndex) => e => {
37
+ if (e.code === 'Enter' || e.code === 'Space') {
38
+ e.stopPropagation();
39
+ setRating(getRating(starIndex));
40
+ }
41
+ };
42
+ return (_jsx("div", { className: cn(styles.rating, className), ...extractSupportProps(rest), children: [...Array(count)].map((_, index) => {
43
+ const starIndex = index + 1;
44
+ const value = getRatingStarValue(starIndex, hoverRating ?? rating, allowHalf);
45
+ return (_jsx(RatingStar, { value: value, size: size, readonly: readonly, appearance: appearance, handleMouseEnter: handleMouseEnter(starIndex), handleMouseLeave: handleMouseLeave, handleKeyDown: handleKeyDown(starIndex), handleClick: handleClick(starIndex), "data-test-id": `${TEST_IDS.star}-${starIndex}` }, index));
46
+ }) }));
47
+ }
@@ -0,0 +1 @@
1
+ export * from './Rating.js';
@@ -0,0 +1 @@
1
+ export * from './Rating.js';
@@ -0,0 +1,4 @@
1
+ .rating{
2
+ display:inline-flex;
3
+ align-items:center;
4
+ }
@@ -0,0 +1 @@
1
+ export * from './Rating/index.js';
@@ -0,0 +1 @@
1
+ export * from './Rating/index.js';
@@ -0,0 +1,24 @@
1
+ export declare const APPEARANCE: {
2
+ readonly Primary: "primary";
3
+ readonly Neutral: "neutral";
4
+ readonly Red: "red";
5
+ readonly Orange: "orange";
6
+ readonly Yellow: "yellow";
7
+ readonly Green: "green";
8
+ readonly Blue: "blue";
9
+ readonly Violet: "violet";
10
+ readonly Pink: "pink";
11
+ };
12
+ export declare const SIZE: {
13
+ readonly Xs: "xs";
14
+ readonly S: "s";
15
+ };
16
+ export declare const TEST_IDS: {
17
+ readonly root: "rating";
18
+ readonly star: "rating__star";
19
+ readonly starHalfLeft: "rating__star-half-left";
20
+ readonly starHalfRight: "rating__star-half-right";
21
+ };
22
+ export declare const DEFAULT_STAR_COUNT = 5;
23
+ export declare const DEFAULT_RATING_VALUE = 0;
24
+ export declare const HALF_STAR_VALUE = 0.5;