@cloud-ru/uikit-product-button-predefined 0.7.4 → 0.7.6

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 (78) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/components/ButtonDropdown/ButtonDropdown.d.ts +6 -0
  3. package/dist/cjs/components/ButtonDropdown/ButtonDropdown.js +32 -0
  4. package/dist/cjs/components/ButtonDropdown/index.d.ts +1 -0
  5. package/dist/cjs/components/ButtonDropdown/index.js +17 -0
  6. package/dist/cjs/components/ButtonPromo/ButtonPromo.d.ts +6 -0
  7. package/dist/cjs/components/ButtonPromo/ButtonPromo.js +29 -0
  8. package/dist/cjs/components/ButtonPromo/index.d.ts +1 -0
  9. package/dist/cjs/components/ButtonPromo/index.js +17 -0
  10. package/dist/cjs/components/ButtonPromo/styles.module.css +293 -0
  11. package/dist/cjs/components/ButtonPromoOutline/ButtonPromoOutline.d.ts +6 -0
  12. package/dist/cjs/components/ButtonPromoOutline/ButtonPromoOutline.js +29 -0
  13. package/dist/cjs/components/ButtonPromoOutline/index.d.ts +1 -0
  14. package/dist/cjs/components/ButtonPromoOutline/index.js +17 -0
  15. package/dist/cjs/components/ButtonPromoOutline/styles.module.css +305 -0
  16. package/dist/cjs/components/index.d.ts +3 -0
  17. package/dist/cjs/components/index.js +19 -0
  18. package/dist/cjs/constants.d.ts +25 -0
  19. package/dist/cjs/constants.js +28 -0
  20. package/dist/cjs/helperComponents/ButtonPrivate/ButtonPrivate.d.ts +14 -0
  21. package/dist/cjs/helperComponents/ButtonPrivate/ButtonPrivate.js +55 -0
  22. package/dist/cjs/helperComponents/ButtonPrivate/constants.d.ts +10 -0
  23. package/dist/cjs/helperComponents/ButtonPrivate/constants.js +15 -0
  24. package/dist/cjs/helperComponents/ButtonPrivate/index.d.ts +1 -0
  25. package/dist/cjs/helperComponents/ButtonPrivate/index.js +17 -0
  26. package/dist/cjs/helperComponents/ButtonPrivate/styles.module.css +36 -0
  27. package/dist/cjs/helperComponents/ButtonPrivate/utils.d.ts +11 -0
  28. package/dist/cjs/helperComponents/ButtonPrivate/utils.js +54 -0
  29. package/dist/cjs/helperComponents/index.d.ts +1 -0
  30. package/dist/cjs/helperComponents/index.js +17 -0
  31. package/dist/cjs/hooks.d.ts +7 -0
  32. package/dist/cjs/hooks.js +10 -0
  33. package/dist/cjs/index.d.ts +1 -0
  34. package/dist/cjs/index.js +17 -0
  35. package/dist/cjs/styles.module.css +0 -0
  36. package/dist/cjs/types.d.ts +48 -0
  37. package/dist/cjs/types.js +2 -0
  38. package/dist/cjs/utils.d.ts +12 -0
  39. package/dist/cjs/utils.js +6 -0
  40. package/dist/esm/components/ButtonDropdown/ButtonDropdown.d.ts +6 -0
  41. package/dist/esm/components/ButtonDropdown/ButtonDropdown.js +29 -0
  42. package/dist/esm/components/ButtonDropdown/index.d.ts +1 -0
  43. package/dist/esm/components/ButtonDropdown/index.js +1 -0
  44. package/dist/esm/components/ButtonPromo/ButtonPromo.d.ts +6 -0
  45. package/dist/esm/components/ButtonPromo/ButtonPromo.js +23 -0
  46. package/dist/esm/components/ButtonPromo/index.d.ts +1 -0
  47. package/dist/esm/components/ButtonPromo/index.js +1 -0
  48. package/dist/esm/components/ButtonPromo/styles.module.css +293 -0
  49. package/dist/esm/components/ButtonPromoOutline/ButtonPromoOutline.d.ts +6 -0
  50. package/dist/esm/components/ButtonPromoOutline/ButtonPromoOutline.js +23 -0
  51. package/dist/esm/components/ButtonPromoOutline/index.d.ts +1 -0
  52. package/dist/esm/components/ButtonPromoOutline/index.js +1 -0
  53. package/dist/esm/components/ButtonPromoOutline/styles.module.css +305 -0
  54. package/dist/esm/components/index.d.ts +3 -0
  55. package/dist/esm/components/index.js +3 -0
  56. package/dist/esm/constants.d.ts +25 -0
  57. package/dist/esm/constants.js +25 -0
  58. package/dist/esm/helperComponents/ButtonPrivate/ButtonPrivate.d.ts +14 -0
  59. package/dist/esm/helperComponents/ButtonPrivate/ButtonPrivate.js +49 -0
  60. package/dist/esm/helperComponents/ButtonPrivate/constants.d.ts +10 -0
  61. package/dist/esm/helperComponents/ButtonPrivate/constants.js +12 -0
  62. package/dist/esm/helperComponents/ButtonPrivate/index.d.ts +1 -0
  63. package/dist/esm/helperComponents/ButtonPrivate/index.js +1 -0
  64. package/dist/esm/helperComponents/ButtonPrivate/styles.module.css +36 -0
  65. package/dist/esm/helperComponents/ButtonPrivate/utils.d.ts +11 -0
  66. package/dist/esm/helperComponents/ButtonPrivate/utils.js +48 -0
  67. package/dist/esm/helperComponents/index.d.ts +1 -0
  68. package/dist/esm/helperComponents/index.js +1 -0
  69. package/dist/esm/hooks.d.ts +7 -0
  70. package/dist/esm/hooks.js +7 -0
  71. package/dist/esm/index.d.ts +1 -0
  72. package/dist/esm/index.js +1 -0
  73. package/dist/esm/styles.module.css +0 -0
  74. package/dist/esm/types.d.ts +48 -0
  75. package/dist/esm/types.js +1 -0
  76. package/dist/esm/utils.d.ts +12 -0
  77. package/dist/esm/utils.js +3 -0
  78. package/package.json +6 -5
@@ -0,0 +1,305 @@
1
+ .button[data-size=xs] .label{
2
+ font-family:var(--sans-label-s-font-family, SB Sans Text);
3
+ font-weight:var(--sans-label-s-font-weight, Semibold);
4
+ line-height:var(--sans-label-s-line-height, 14px);
5
+ font-size:var(--sans-label-s-font-size, 11px);
6
+ letter-spacing:var(--sans-label-s-letter-spacing, 0px);
7
+ paragraph-spacing:var(--sans-label-s-paragraph-spacing, 6.05px);
8
+ }
9
+ .button[data-size=xs] .icon{
10
+ display:inline-flex;
11
+ align-items:center;
12
+ justify-content:center;
13
+ width:var(--size-icon-container-s, 24px);
14
+ height:var(--size-icon-container-s, 24px);
15
+ }
16
+ .button[data-size=xs] .icon svg{
17
+ max-width:var(--size-icon-container-s, 24px);
18
+ max-height:var(--size-icon-container-s, 24px);
19
+ }
20
+ .button[data-size=xs][data-variant=label-only]{
21
+ border-radius:var(--radius-button-xs, 0px);
22
+ height:var(--size-button-xs, 24px);
23
+ padding-right:var(--space-button-xs-from-label, 8px);
24
+ padding-left:var(--space-button-xs-from-label, 8px);
25
+ border-width:var(--border-width-button-outline-single, 2px);
26
+ min-width:var(--size-button-mininal-width-xs, 0px);
27
+ }
28
+ .button[data-size=xs][data-variant=icon-only]{
29
+ border-radius:var(--radius-button-xs, 0px);
30
+ height:var(--size-button-xs, 24px);
31
+ width:var(--size-button-xs, 24px);
32
+ border-width:var(--border-width-button-outline-single, 2px);
33
+ }
34
+ .button[data-size=xs][data-variant=icon-after]{
35
+ border-radius:var(--radius-button-xs, 0px);
36
+ height:var(--size-button-xs, 24px);
37
+ gap:var(--space-button-xs-gap, 2px);
38
+ padding-right:var(--space-button-xs-from-icon, 4px);
39
+ padding-left:var(--space-button-xs-from-label, 8px);
40
+ border-width:var(--border-width-button-outline-single, 2px);
41
+ min-width:var(--size-button-mininal-width-xs, 0px);
42
+ }
43
+ .button[data-size=s] .label{
44
+ font-family:var(--sans-label-m-font-family, SB Sans Text);
45
+ font-weight:var(--sans-label-m-font-weight, Semibold);
46
+ line-height:var(--sans-label-m-line-height, 16px);
47
+ font-size:var(--sans-label-m-font-size, 12px);
48
+ letter-spacing:var(--sans-label-m-letter-spacing, 0px);
49
+ paragraph-spacing:var(--sans-label-m-paragraph-spacing, 6.6px);
50
+ }
51
+ .button[data-size=s] .icon{
52
+ display:inline-flex;
53
+ align-items:center;
54
+ justify-content:center;
55
+ width:var(--size-icon-container-s, 24px);
56
+ height:var(--size-icon-container-s, 24px);
57
+ }
58
+ .button[data-size=s] .icon svg{
59
+ max-width:var(--size-icon-container-s, 24px);
60
+ max-height:var(--size-icon-container-s, 24px);
61
+ }
62
+ .button[data-size=s][data-variant=label-only]{
63
+ border-radius:var(--radius-button-s, 0px);
64
+ height:var(--size-button-s, 32px);
65
+ padding-right:var(--space-button-s-from-label, 16px);
66
+ padding-left:var(--space-button-s-from-label, 16px);
67
+ border-width:var(--border-width-button-outline-single, 2px);
68
+ min-width:var(--size-button-mininal-width-s, 0px);
69
+ }
70
+ .button[data-size=s][data-variant=icon-only]{
71
+ border-radius:var(--radius-button-s, 0px);
72
+ height:var(--size-button-s, 32px);
73
+ width:var(--size-button-s, 32px);
74
+ border-width:var(--border-width-button-outline-single, 2px);
75
+ }
76
+ .button[data-size=s][data-variant=icon-after]{
77
+ border-radius:var(--radius-button-s, 0px);
78
+ height:var(--size-button-s, 32px);
79
+ gap:var(--space-button-s-gap, 4px);
80
+ padding-right:var(--space-button-s-from-icon, 8px);
81
+ padding-left:var(--space-button-s-from-label, 16px);
82
+ border-width:var(--border-width-button-outline-single, 2px);
83
+ min-width:var(--size-button-mininal-width-s, 0px);
84
+ }
85
+ .button[data-size=m] .label{
86
+ font-family:var(--sans-label-l-font-family, SB Sans Text);
87
+ font-weight:var(--sans-label-l-font-weight, Semibold);
88
+ line-height:var(--sans-label-l-line-height, 20px);
89
+ font-size:var(--sans-label-l-font-size, 14px);
90
+ letter-spacing:var(--sans-label-l-letter-spacing, 0px);
91
+ paragraph-spacing:var(--sans-label-l-paragraph-spacing, 7.7px);
92
+ }
93
+ .button[data-size=m] .icon{
94
+ display:inline-flex;
95
+ align-items:center;
96
+ justify-content:center;
97
+ width:var(--size-icon-container-s, 24px);
98
+ height:var(--size-icon-container-s, 24px);
99
+ }
100
+ .button[data-size=m] .icon svg{
101
+ max-width:var(--size-icon-container-s, 24px);
102
+ max-height:var(--size-icon-container-s, 24px);
103
+ }
104
+ .button[data-size=m][data-variant=label-only]{
105
+ border-radius:var(--radius-button-m, 0px);
106
+ height:var(--size-button-m, 40px);
107
+ padding-right:var(--space-button-m-from-label, 24px);
108
+ padding-left:var(--space-button-m-from-label, 24px);
109
+ border-width:var(--border-width-button-outline-single, 2px);
110
+ min-width:var(--size-button-mininal-width-m, 0px);
111
+ }
112
+ .button[data-size=m][data-variant=icon-only]{
113
+ border-radius:var(--radius-button-m, 0px);
114
+ height:var(--size-button-m, 40px);
115
+ width:var(--size-button-m, 40px);
116
+ border-width:var(--border-width-button-outline-single, 2px);
117
+ }
118
+ .button[data-size=m][data-variant=icon-after]{
119
+ border-radius:var(--radius-button-m, 0px);
120
+ height:var(--size-button-m, 40px);
121
+ gap:var(--space-button-m-gap, 4px);
122
+ padding-right:var(--space-button-m-from-icon, 16px);
123
+ padding-left:var(--space-button-m-from-label, 24px);
124
+ border-width:var(--border-width-button-outline-single, 2px);
125
+ min-width:var(--size-button-mininal-width-m, 0px);
126
+ }
127
+ .button[data-size=l] .label{
128
+ font-family:var(--sans-label-l-font-family, SB Sans Text);
129
+ font-weight:var(--sans-label-l-font-weight, Semibold);
130
+ line-height:var(--sans-label-l-line-height, 20px);
131
+ font-size:var(--sans-label-l-font-size, 14px);
132
+ letter-spacing:var(--sans-label-l-letter-spacing, 0px);
133
+ paragraph-spacing:var(--sans-label-l-paragraph-spacing, 7.7px);
134
+ }
135
+ .button[data-size=l] .icon{
136
+ display:inline-flex;
137
+ align-items:center;
138
+ justify-content:center;
139
+ width:var(--size-icon-container-s, 24px);
140
+ height:var(--size-icon-container-s, 24px);
141
+ }
142
+ .button[data-size=l] .icon svg{
143
+ max-width:var(--size-icon-container-s, 24px);
144
+ max-height:var(--size-icon-container-s, 24px);
145
+ }
146
+ .button[data-size=l][data-variant=label-only]{
147
+ border-radius:var(--radius-button-l, 0px);
148
+ height:var(--size-button-l, 48px);
149
+ padding-right:var(--space-button-l-from-label, 32px);
150
+ padding-left:var(--space-button-l-from-label, 32px);
151
+ border-width:var(--border-width-button-outline-single, 2px);
152
+ min-width:var(--size-button-mininal-width-l, 0px);
153
+ }
154
+ .button[data-size=l][data-variant=icon-only]{
155
+ border-radius:var(--radius-button-l, 0px);
156
+ height:var(--size-button-l, 48px);
157
+ width:var(--size-button-l, 48px);
158
+ border-width:var(--border-width-button-outline-single, 2px);
159
+ }
160
+ .button[data-size=l][data-variant=icon-after]{
161
+ border-radius:var(--radius-button-l, 0px);
162
+ height:var(--size-button-l, 48px);
163
+ gap:var(--space-button-l-gap, 4px);
164
+ padding-right:var(--space-button-l-from-icon, 24px);
165
+ padding-left:var(--space-button-l-from-label, 32px);
166
+ border-width:var(--border-width-button-outline-single, 2px);
167
+ min-width:var(--size-button-mininal-width-l, 0px);
168
+ }
169
+ .button[data-loading][data-variant=label-only] .icon{
170
+ position:absolute;
171
+ top:50%;
172
+ left:50%;
173
+ transform:translate(-50%, -50%);
174
+ }
175
+ .button[data-loading][data-variant=label-only] .label{
176
+ opacity:var(--opacity-a0, 0);
177
+ }
178
+ .button[data-appearance=fluorescent-yellow]{
179
+ border-color:var(--sys-fluorescent-yellow-accent-default, #cff500);
180
+ }
181
+ .button[data-appearance=fluorescent-yellow] .label{
182
+ color:var(--sys-fluorescent-yellow-accent-default, #cff500);
183
+ }
184
+ .button[data-appearance=fluorescent-yellow] .icon{
185
+ color:var(--sys-fluorescent-yellow-accent-default, #cff500);
186
+ }
187
+ @media (hover: hover){
188
+ .button[data-appearance=fluorescent-yellow]:hover{
189
+ border-color:var(--sys-fluorescent-yellow-accent-hovered, #abcb0f);
190
+ }
191
+ .button[data-appearance=fluorescent-yellow]:hover .label{
192
+ color:var(--sys-fluorescent-yellow-accent-hovered, #abcb0f);
193
+ }
194
+ .button[data-appearance=fluorescent-yellow]:hover .icon{
195
+ color:var(--sys-fluorescent-yellow-accent-hovered, #abcb0f);
196
+ }
197
+ }
198
+ @media (hover: none) or (hover: hover){
199
+ .button[data-appearance=fluorescent-yellow]:focus-visible{
200
+ border-color:var(--sys-fluorescent-yellow-accent-hovered, #abcb0f);
201
+ }
202
+ .button[data-appearance=fluorescent-yellow]:focus-visible .label{
203
+ color:var(--sys-fluorescent-yellow-accent-hovered, #abcb0f);
204
+ }
205
+ .button[data-appearance=fluorescent-yellow]:focus-visible .icon{
206
+ color:var(--sys-fluorescent-yellow-accent-hovered, #abcb0f);
207
+ }
208
+ .button[data-appearance=fluorescent-yellow]:active{
209
+ border-color:var(--sys-fluorescent-yellow-accent-pressed, #859c2d);
210
+ }
211
+ .button[data-appearance=fluorescent-yellow]:active .label{
212
+ color:var(--sys-fluorescent-yellow-accent-pressed, #859c2d);
213
+ }
214
+ .button[data-appearance=fluorescent-yellow]:active .icon{
215
+ color:var(--sys-fluorescent-yellow-accent-pressed, #859c2d);
216
+ }
217
+ .button[data-appearance=fluorescent-yellow][data-loading]{
218
+ border-color:var(--sys-fluorescent-yellow-accent-pressed, #859c2d);
219
+ }
220
+ .button[data-appearance=fluorescent-yellow][data-loading] .label{
221
+ color:var(--sys-fluorescent-yellow-accent-pressed, #859c2d);
222
+ }
223
+ .button[data-appearance=fluorescent-yellow][data-loading] .icon{
224
+ color:var(--sys-fluorescent-yellow-accent-pressed, #859c2d);
225
+ }
226
+ .button[data-appearance=fluorescent-yellow]:disabled, .button[data-appearance=fluorescent-yellow][data-disabled]{
227
+ border-color:var(--sys-neutral-decor-disabled, #e6e8ef);
228
+ }
229
+ .button[data-appearance=fluorescent-yellow]:disabled .label, .button[data-appearance=fluorescent-yellow][data-disabled] .label{
230
+ color:var(--sys-neutral-text-disabled, #aaaebd);
231
+ }
232
+ .button[data-appearance=fluorescent-yellow]:disabled .icon, .button[data-appearance=fluorescent-yellow][data-disabled] .icon{
233
+ color:var(--sys-neutral-text-disabled, #aaaebd);
234
+ }
235
+ }
236
+ .button[data-appearance=graphite]{
237
+ border-color:var(--sys-graphite-accent-default, #222222);
238
+ }
239
+ .button[data-appearance=graphite] .label{
240
+ color:var(--sys-graphite-accent-default, #222222);
241
+ }
242
+ .button[data-appearance=graphite] .icon{
243
+ color:var(--sys-graphite-accent-default, #222222);
244
+ }
245
+ @media (hover: hover){
246
+ .button[data-appearance=graphite]:hover{
247
+ border-color:var(--sys-graphite-accent-hovered, #383838);
248
+ }
249
+ .button[data-appearance=graphite]:hover .label{
250
+ color:var(--sys-graphite-accent-hovered, #383838);
251
+ }
252
+ .button[data-appearance=graphite]:hover .icon{
253
+ color:var(--sys-graphite-accent-hovered, #383838);
254
+ }
255
+ }
256
+ @media (hover: none) or (hover: hover){
257
+ .button[data-appearance=graphite]:focus-visible{
258
+ border-color:var(--sys-graphite-accent-hovered, #383838);
259
+ }
260
+ .button[data-appearance=graphite]:focus-visible .label{
261
+ color:var(--sys-graphite-accent-hovered, #383838);
262
+ }
263
+ .button[data-appearance=graphite]:focus-visible .icon{
264
+ color:var(--sys-graphite-accent-hovered, #383838);
265
+ }
266
+ .button[data-appearance=graphite]:active{
267
+ border-color:var(--sys-graphite-accent-pressed, #4e4e4e);
268
+ }
269
+ .button[data-appearance=graphite]:active .label{
270
+ color:var(--sys-graphite-accent-pressed, #4e4e4e);
271
+ }
272
+ .button[data-appearance=graphite]:active .icon{
273
+ color:var(--sys-graphite-accent-pressed, #4e4e4e);
274
+ }
275
+ .button[data-appearance=graphite][data-loading]{
276
+ border-color:var(--sys-graphite-accent-pressed, #4e4e4e);
277
+ }
278
+ .button[data-appearance=graphite][data-loading] .label{
279
+ color:var(--sys-graphite-accent-pressed, #4e4e4e);
280
+ }
281
+ .button[data-appearance=graphite][data-loading] .icon{
282
+ color:var(--sys-graphite-accent-pressed, #4e4e4e);
283
+ }
284
+ .button[data-appearance=graphite]:disabled, .button[data-appearance=graphite][data-disabled]{
285
+ border-color:var(--sys-neutral-decor-disabled, #e6e8ef);
286
+ }
287
+ .button[data-appearance=graphite]:disabled .label, .button[data-appearance=graphite][data-disabled] .label{
288
+ color:var(--sys-neutral-text-disabled, #aaaebd);
289
+ }
290
+ .button[data-appearance=graphite]:disabled .icon, .button[data-appearance=graphite][data-disabled] .icon{
291
+ color:var(--sys-neutral-text-disabled, #aaaebd);
292
+ }
293
+ }
294
+ .button[data-appearance=fluorescent-yellow]:focus-visible{
295
+ outline-color:var(--sys-available-complementary, #15151b);
296
+ }
297
+ .button[data-appearance=graphite]:focus-visible{
298
+ outline-color:var(--sys-available-complementary, #15151b);
299
+ }
300
+ .button:focus-visible{
301
+ outline-width:var(--border-state-focus-s-border-width, 2px);
302
+ outline-style:var(--border-state-focus-s-border-style, solid);
303
+ outline-color:var(--border-state-focus-s-border-color, );
304
+ outline-offset:var(--spacing-state-focus-offset, 2px);
305
+ }
@@ -0,0 +1,3 @@
1
+ export * from './ButtonDropdown';
2
+ export * from './ButtonPromo';
3
+ export * from './ButtonPromoOutline';
@@ -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("./ButtonDropdown"), exports);
18
+ __exportStar(require("./ButtonPromo"), exports);
19
+ __exportStar(require("./ButtonPromoOutline"), exports);
@@ -0,0 +1,25 @@
1
+ export declare const APPEARANCE: {
2
+ readonly Tertiary: "tertiary";
3
+ readonly Secondary: "secondary";
4
+ };
5
+ export declare const HTML_TYPE: {
6
+ readonly Button: "button";
7
+ readonly Submit: "submit";
8
+ readonly Reset: "reset";
9
+ };
10
+ export declare const TARGET: {
11
+ readonly Blank: "_blank";
12
+ readonly Self: "_self";
13
+ readonly Parent: "_parent";
14
+ readonly Top: "_top";
15
+ };
16
+ export declare const SIZE: {
17
+ readonly Xs: "xs";
18
+ readonly S: "s";
19
+ readonly M: "m";
20
+ readonly L: "l";
21
+ };
22
+ export declare const ICON_POSITION: {
23
+ readonly Before: "before";
24
+ readonly After: "after";
25
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ICON_POSITION = exports.SIZE = exports.TARGET = exports.HTML_TYPE = exports.APPEARANCE = void 0;
4
+ exports.APPEARANCE = {
5
+ Tertiary: 'tertiary',
6
+ Secondary: 'secondary',
7
+ };
8
+ exports.HTML_TYPE = {
9
+ Button: 'button',
10
+ Submit: 'submit',
11
+ Reset: 'reset',
12
+ };
13
+ exports.TARGET = {
14
+ Blank: '_blank',
15
+ Self: '_self',
16
+ Parent: '_parent',
17
+ Top: '_top',
18
+ };
19
+ exports.SIZE = {
20
+ Xs: 'xs',
21
+ S: 's',
22
+ M: 'm',
23
+ L: 'l',
24
+ };
25
+ exports.ICON_POSITION = {
26
+ Before: 'before',
27
+ After: 'after',
28
+ };
@@ -0,0 +1,14 @@
1
+ import { WithSupportProps } from '@snack-uikit/utils';
2
+ import { CommonButtonProps } from '../../types';
3
+ export type ButtonPrivateProps = WithSupportProps<CommonButtonProps & {
4
+ iconClassName: string;
5
+ labelClassName: string;
6
+ fullWidth?: boolean;
7
+ }>;
8
+ export declare const ButtonPrivate: import("react").ForwardRefExoticComponent<{
9
+ 'data-test-id'?: string;
10
+ } & import("react").AriaAttributes & import("../../types").AnchorButtonProps & import("../../types").BaseButtonProps & {
11
+ iconClassName: string;
12
+ labelClassName: string;
13
+ fullWidth?: boolean;
14
+ } & import("react").RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ButtonPrivate = void 0;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const classnames_1 = __importDefault(require("classnames"));
20
+ const react_1 = require("react");
21
+ const utils_1 = require("@snack-uikit/utils");
22
+ const constants_1 = require("../../constants");
23
+ const constants_2 = require("./constants");
24
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
25
+ const utils_2 = require("./utils");
26
+ exports.ButtonPrivate = (0, react_1.forwardRef)((_a, ref) => {
27
+ var { className, disabled, href, icon, iconClassName, iconPosition = constants_1.ICON_POSITION.After, label, labelClassName, loading, onClick, onKeyDown, onFocus, onBlur, size, target = constants_1.TARGET.Blank, type = constants_1.HTML_TYPE.Button, appearance = constants_1.APPEARANCE.Tertiary, tabIndex: tabIndexProp = 0, fullWidth } = _a, rest = __rest(_a, ["className", "disabled", "href", "icon", "iconClassName", "iconPosition", "label", "labelClassName", "loading", "onClick", "onKeyDown", "onFocus", "onBlur", "size", "target", "type", "appearance", "tabIndex", "fullWidth"]);
28
+ const variant = (0, utils_2.getVariant)({ label, iconPosition, icon });
29
+ const children = (0, utils_2.getChildren)({
30
+ icon,
31
+ iconClassName,
32
+ iconPosition,
33
+ label,
34
+ labelClassName,
35
+ loading,
36
+ });
37
+ const tabIndex = loading || disabled ? -1 : tabIndexProp;
38
+ const handleClick = (event) => {
39
+ if (disabled || loading) {
40
+ event.preventDefault();
41
+ return;
42
+ }
43
+ if (onClick) {
44
+ onClick(event);
45
+ }
46
+ };
47
+ const buttonProps = Object.assign(Object.assign({}, (0, utils_1.extractSupportProps)(rest)), { className: (0, classnames_1.default)(styles_module_scss_1.default.button, className), 'data-disabled': disabled || undefined, 'aria-disabled': disabled || undefined, 'data-loading': loading || undefined, 'data-size': size, 'data-full-width': fullWidth || undefined, 'data-appearance': constants_2.APPEARANCE_TO_COLOR_MAP[appearance], 'data-variant': variant, onClick: handleClick, onKeyDown,
48
+ onFocus,
49
+ onBlur,
50
+ tabIndex });
51
+ if (href) {
52
+ return ((0, jsx_runtime_1.jsx)("a", Object.assign({ role: 'button', href: href, target: target }, buttonProps, { ref: ref, children: children })));
53
+ }
54
+ return ((0, jsx_runtime_1.jsx)("button", Object.assign({}, buttonProps, { type: type, ref: ref, children: children })));
55
+ });
@@ -0,0 +1,10 @@
1
+ export declare enum Variant {
2
+ LabelOnly = "label-only",
3
+ IconOnly = "icon-only",
4
+ IconBefore = "icon-before",
5
+ IconAfter = "icon-after"
6
+ }
7
+ export declare const APPEARANCE_TO_COLOR_MAP: {
8
+ tertiary: string;
9
+ secondary: string;
10
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APPEARANCE_TO_COLOR_MAP = exports.Variant = void 0;
4
+ const constants_1 = require("../../constants");
5
+ var Variant;
6
+ (function (Variant) {
7
+ Variant["LabelOnly"] = "label-only";
8
+ Variant["IconOnly"] = "icon-only";
9
+ Variant["IconBefore"] = "icon-before";
10
+ Variant["IconAfter"] = "icon-after";
11
+ })(Variant || (exports.Variant = Variant = {}));
12
+ exports.APPEARANCE_TO_COLOR_MAP = {
13
+ [constants_1.APPEARANCE.Tertiary]: 'fluorescent-yellow',
14
+ [constants_1.APPEARANCE.Secondary]: 'graphite',
15
+ };
@@ -0,0 +1 @@
1
+ export * from './ButtonPrivate';
@@ -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("./ButtonPrivate"), exports);
@@ -0,0 +1,36 @@
1
+ .button{
2
+ cursor:pointer;
3
+ position:relative;
4
+ display:inline-flex;
5
+ flex-shrink:0;
6
+ align-items:center;
7
+ justify-content:center;
8
+ box-sizing:border-box;
9
+ width:-moz-max-content;
10
+ width:max-content;
11
+ min-width:-moz-max-content;
12
+ min-width:max-content;
13
+ margin:0;
14
+ padding:0;
15
+ color:transparent;
16
+ text-decoration:none;
17
+ text-transform:none;
18
+ background-color:transparent;
19
+ border:0 solid transparent;
20
+ outline:0;
21
+ outline-offset:0;
22
+ }
23
+ .button[data-full-width]{
24
+ flex-grow:1;
25
+ flex-shrink:1;
26
+ width:100%;
27
+ }
28
+ .button > *{
29
+ cursor:pointer;
30
+ }
31
+ .button:disabled, .button[data-disabled], .button[data-loading]{
32
+ cursor:not-allowed;
33
+ }
34
+ .button:disabled > *, .button[data-disabled] > *, .button[data-loading] > *{
35
+ cursor:not-allowed;
36
+ }
@@ -0,0 +1,11 @@
1
+ import { ButtonPrivateProps } from './ButtonPrivate';
2
+ import { Variant } from './constants';
3
+ type GetVariantProps = Pick<ButtonPrivateProps, 'label' | 'icon' | 'iconPosition'>;
4
+ export declare function getVariant({ label, icon, iconPosition }: GetVariantProps): Variant;
5
+ type GetWrappedIconProps = Pick<ButtonPrivateProps, 'icon' | 'iconClassName' | 'loading'>;
6
+ export declare function getWrappedIcon({ icon, iconClassName, loading }: GetWrappedIconProps): import("react/jsx-runtime").JSX.Element | undefined;
7
+ type GetWrappedLabelProps = Pick<ButtonPrivateProps, 'label' | 'labelClassName'>;
8
+ export declare function getWrappedLabel({ label, labelClassName }: GetWrappedLabelProps): import("react/jsx-runtime").JSX.Element | undefined;
9
+ type GetChildrenProps = Pick<ButtonPrivateProps, 'icon' | 'label' | 'iconPosition' | 'iconClassName' | 'labelClassName' | 'loading'>;
10
+ export declare function getChildren({ icon, label, iconPosition, iconClassName, labelClassName, loading }: GetChildrenProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVariant = getVariant;
4
+ exports.getWrappedIcon = getWrappedIcon;
5
+ exports.getWrappedLabel = getWrappedLabel;
6
+ exports.getChildren = getChildren;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const loaders_1 = require("@snack-uikit/loaders");
9
+ const constants_1 = require("../../constants");
10
+ const constants_2 = require("./constants");
11
+ function getVariant({ label, icon, iconPosition }) {
12
+ if (label && icon && iconPosition === constants_1.ICON_POSITION.After) {
13
+ return constants_2.Variant.IconAfter;
14
+ }
15
+ if (label && icon && iconPosition === constants_1.ICON_POSITION.Before) {
16
+ return constants_2.Variant.IconBefore;
17
+ }
18
+ if (label) {
19
+ return constants_2.Variant.LabelOnly;
20
+ }
21
+ return constants_2.Variant.IconOnly;
22
+ }
23
+ function getWrappedIcon({ icon, iconClassName, loading }) {
24
+ if (loading) {
25
+ return ((0, jsx_runtime_1.jsx)("span", { "data-test-id": 'loading-icon', className: iconClassName, children: (0, jsx_runtime_1.jsx)(loaders_1.Sun, { size: 's' }) }));
26
+ }
27
+ if (icon) {
28
+ return ((0, jsx_runtime_1.jsx)("span", { "data-test-id": 'icon', className: iconClassName, children: icon }));
29
+ }
30
+ return undefined;
31
+ }
32
+ function getWrappedLabel({ label, labelClassName }) {
33
+ return label ? ((0, jsx_runtime_1.jsx)("span", { "data-test-id": 'label', className: labelClassName, children: label })) : undefined;
34
+ }
35
+ function getChildren({ icon, label, iconPosition, iconClassName, labelClassName, loading }) {
36
+ const wrappedIcon = getWrappedIcon({
37
+ icon,
38
+ iconClassName,
39
+ loading,
40
+ });
41
+ const wrappedLabel = getWrappedLabel({
42
+ label,
43
+ labelClassName,
44
+ });
45
+ switch (iconPosition) {
46
+ case constants_1.ICON_POSITION.Before: {
47
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [wrappedIcon, wrappedLabel] }));
48
+ }
49
+ case constants_1.ICON_POSITION.After:
50
+ default: {
51
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [wrappedLabel, wrappedIcon] }));
52
+ }
53
+ }
54
+ }
@@ -0,0 +1 @@
1
+ export * from './ButtonPrivate';
@@ -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("./ButtonPrivate"), exports);
@@ -0,0 +1,7 @@
1
+ type UseValueControl<TValue> = {
2
+ value?: TValue;
3
+ onChange?(value: TValue): void;
4
+ defaultValue?: TValue;
5
+ };
6
+ export declare function useValueControl<TValue>({ value, onChange, defaultValue }: UseValueControl<TValue>): readonly [TValue | undefined, (value: any, ...args: any[]) => any];
7
+ export {};
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useValueControl = useValueControl;
4
+ const uncontrollable_1 = require("uncontrollable");
5
+ function useValueControl({ value, onChange, defaultValue }) {
6
+ return (0, uncontrollable_1.useUncontrolledProp)(value, defaultValue, (newValue) => {
7
+ const newState = typeof newValue === 'function' ? newValue(value) : newValue;
8
+ onChange === null || onChange === void 0 ? void 0 : onChange(newState);
9
+ });
10
+ }
@@ -0,0 +1 @@
1
+ export * from './components';