@stokr/components-library 2.3.65-beta.5 → 2.3.65-beta.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.
@@ -7,12 +7,15 @@ exports.default = exports.MultiSelect = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _reactSelect = _interopRequireWildcard(require("react-select"));
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
10
11
  var _Input = require("./Input.styles");
12
+ var _colors = _interopRequireDefault(require("../../styles/colors"));
13
+ var _checkIcon = require("../../static/images/check-icon.svg");
11
14
  var _Select = require("./Select.styles");
12
- const _excluded = ["id", "name", "label", "options", "search", "error", "touched", "value", "disabled", "menuHeight", "placeholder"];
15
+ const _excluded = ["children", "selectProps"],
16
+ _excluded2 = ["id", "name", "label", "options", "search", "error", "touched", "value", "disabled", "menuHeight", "placeholder", "showCheckboxes", "showCountBadge", "closeMenuOnSelect", "hideSelectedOptions"];
13
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
16
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
20
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
21
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -20,6 +23,64 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
20
23
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
24
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
22
25
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
26
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
27
+ const CountBadge = _styledComponents.default.span.withConfig({
28
+ displayName: "MultiSelect__CountBadge",
29
+ componentId: "sc-1udb3q8-0"
30
+ })(["display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;background-color:", ";color:", ";border-radius:10px;font-size:12px;font-weight:600;margin-left:8px;"], _colors.default.black, _colors.default.white);
31
+ const CheckboxWrapper = _styledComponents.default.div.withConfig({
32
+ displayName: "MultiSelect__CheckboxWrapper",
33
+ componentId: "sc-1udb3q8-1"
34
+ })(["display:flex;align-items:center;padding:16px 12px;cursor:pointer;transition:background-color 0.15s ease;&:hover{background-color:", ";}"], _colors.default.grey);
35
+ const Checkbox = _styledComponents.default.div.withConfig({
36
+ displayName: "MultiSelect__Checkbox",
37
+ componentId: "sc-1udb3q8-2"
38
+ })(["width:14px;height:14px;border:1px solid ", ";border-radius:3px;margin-right:12px;display:flex;align-items:center;justify-content:center;background-color:", ";transition:all 0.15s ease;flex-shrink:0;svg{opacity:", ";transition:opacity 0.15s ease;width:8px;height:8px;}svg path{stroke:", ";}"], props => props.isSelected ? _colors.default.black : _colors.default.grey2, props => props.isSelected ? _colors.default.white : _colors.default.white, props => props.isSelected ? 1 : 0, _colors.default.blue);
39
+ const OptionLabel = _styledComponents.default.span.withConfig({
40
+ displayName: "MultiSelect__OptionLabel",
41
+ componentId: "sc-1udb3q8-3"
42
+ })(["font-size:14px;color:", ";font-weight:400;letter-spacing:0.6px;"], _colors.default.black);
43
+ const PlaceholderText = _styledComponents.default.span.withConfig({
44
+ displayName: "MultiSelect__PlaceholderText",
45
+ componentId: "sc-1udb3q8-4"
46
+ })(["font-size:14px;color:", ";font-weight:400;"], _colors.default.black);
47
+
48
+ // Custom Option with Checkbox
49
+ const CheckboxOption = props => {
50
+ const {
51
+ isSelected,
52
+ label,
53
+ innerRef,
54
+ innerProps
55
+ } = props;
56
+ return /*#__PURE__*/_react.default.createElement(CheckboxWrapper, _extends({
57
+ ref: innerRef
58
+ }, innerProps), /*#__PURE__*/_react.default.createElement(Checkbox, {
59
+ isSelected: isSelected
60
+ }, /*#__PURE__*/_react.default.createElement(_checkIcon.ReactComponent, null)), /*#__PURE__*/_react.default.createElement(OptionLabel, null, label));
61
+ };
62
+
63
+ // Custom ValueContainer that shows count badge
64
+ const CountValueContainer = _ref => {
65
+ let {
66
+ children,
67
+ selectProps
68
+ } = _ref,
69
+ props = _objectWithoutProperties(_ref, _excluded);
70
+ const {
71
+ value,
72
+ placeholder
73
+ } = selectProps;
74
+ const count = (value === null || value === void 0 ? void 0 : value.length) || 0;
75
+ return /*#__PURE__*/_react.default.createElement(_reactSelect.components.ValueContainer, _extends({}, props, {
76
+ selectProps: selectProps
77
+ }), /*#__PURE__*/_react.default.createElement("div", {
78
+ style: {
79
+ display: 'flex',
80
+ alignItems: 'center'
81
+ }
82
+ }, /*#__PURE__*/_react.default.createElement(PlaceholderText, null, placeholder), count > 0 && /*#__PURE__*/_react.default.createElement(CountBadge, null, count)), children);
83
+ };
23
84
  const DropdownIndicator = props => {
24
85
  const {
25
86
  selectProps
@@ -60,9 +121,13 @@ const MultiSelect = props => {
60
121
  value,
61
122
  disabled,
62
123
  menuHeight,
63
- placeholder
124
+ placeholder,
125
+ showCheckboxes = true,
126
+ showCountBadge = true,
127
+ closeMenuOnSelect = false,
128
+ hideSelectedOptions = false
64
129
  } = props,
65
- otherProps = _objectWithoutProperties(props, _excluded);
130
+ otherProps = _objectWithoutProperties(props, _excluded2);
66
131
  const hasValue = (value === null || value === void 0 ? void 0 : value.length) > 0;
67
132
  const [labelUp, setLabelUp] = (0, _react.useState)(hasValue);
68
133
  const [hasFocus, setHasFocus] = (0, _react.useState)(false);
@@ -116,41 +181,73 @@ const MultiSelect = props => {
116
181
  placeholder: placeholder,
117
182
  isSearchable: search,
118
183
  isMulti: true,
184
+ openMenuOnFocus: true,
185
+ closeMenuOnSelect: closeMenuOnSelect,
186
+ hideSelectedOptions: hideSelectedOptions,
119
187
  maxMenuHeight: menuHeight,
120
188
  styles: {
121
- control: () => _Select.SelectControl,
189
+ control: (baseStyle, state) => _objectSpread(_objectSpread({}, baseStyle), {}, {
190
+ display: 'flex',
191
+ alignItems: 'center',
192
+ // minHeight: '44px',
193
+ padding: '0 10px',
194
+ backgroundColor: _colors.default.white,
195
+ border: "1px solid ".concat(state.isFocused ? _colors.default.grey2 : _colors.default.lightGrey),
196
+ borderRadius: '10px',
197
+ boxShadow: 'none',
198
+ cursor: 'pointer',
199
+ '&:hover': {
200
+ borderColor: _colors.default.grey2
201
+ }
202
+ }),
122
203
  menu: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
123
- marginTop: 0,
204
+ marginTop: '4px',
124
205
  zIndex: 1000,
125
- SelectMenu: _Select.SelectMenu
206
+ borderRadius: '8px',
207
+ boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',
208
+ border: "1px solid ".concat(_colors.default.lightGrey),
209
+ overflow: 'hidden'
126
210
  }),
127
- option: (baseStyle, state) => _objectSpread({
128
- fontWeight: state.isSelected || state.isFocused ? 'bold' : 'normal',
129
- cursor: 'pointer'
130
- }, _Select.SelectOption),
131
- selectContainer: () => _Select.SelectContainer,
132
- valueContainer: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
211
+ menuList: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
133
212
  padding: 0
134
213
  }),
135
- multiValue: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
136
- backgroundColor: '#f0f0f0',
137
- borderRadius: '4px'
138
- }),
139
- multiValueLabel: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
140
- fontSize: '14px',
141
- padding: '2px 6px'
142
- }),
143
- multiValueRemove: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
214
+ option: (baseStyle, state) => _objectSpread(_objectSpread({}, baseStyle), {}, {
215
+ // When using checkboxes, padding is handled by CheckboxOption
216
+ // Otherwise, add padding for the default option
217
+ padding: showCheckboxes ? 0 : '12px 16px',
218
+ backgroundColor: state.isFocused ? _colors.default.grey : 'transparent',
219
+ color: _colors.default.black,
144
220
  cursor: 'pointer',
145
- ':hover': {
146
- backgroundColor: '#e0e0e0'
221
+ fontWeight: state.isSelected ? 600 : 400,
222
+ '&:active': {
223
+ backgroundColor: _colors.default.grey
147
224
  }
225
+ }),
226
+ valueContainer: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
227
+ padding: 0,
228
+ display: 'flex',
229
+ alignItems: 'center'
230
+ }),
231
+ placeholder: () => ({
232
+ display: 'none' // We handle placeholder in ValueContainer
233
+ }),
234
+ multiValue: () => ({
235
+ display: showCountBadge ? 'none' : 'flex' // Hide tags when showing count
236
+ }),
237
+ input: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
238
+ margin: 0,
239
+ padding: 0
240
+ }),
241
+ indicatorsContainer: baseStyle => _objectSpread(_objectSpread({}, baseStyle), {}, {
242
+ paddingLeft: '8px'
148
243
  })
149
244
  },
150
245
  components: {
151
246
  DropdownIndicator,
152
247
  IndicatorSeparator: null,
153
- MenuList: SelectMenuListWithScroll
248
+ MenuList: SelectMenuListWithScroll,
249
+ Option: showCheckboxes ? CheckboxOption : _reactSelect.components.Option,
250
+ ValueContainer: showCountBadge ? CountValueContainer : _reactSelect.components.ValueContainer
154
251
  }
155
252
  })));
156
253
  };
@@ -171,17 +268,25 @@ MultiSelect.propTypes = {
171
268
  placeholder: _propTypes.default.string,
172
269
  onChange: _propTypes.default.func,
173
270
  onBlur: _propTypes.default.func,
174
- onFocus: _propTypes.default.func
271
+ onFocus: _propTypes.default.func,
272
+ showCheckboxes: _propTypes.default.bool,
273
+ showCountBadge: _propTypes.default.bool,
274
+ closeMenuOnSelect: _propTypes.default.bool,
275
+ hideSelectedOptions: _propTypes.default.bool
175
276
  };
176
277
  MultiSelect.defaultProps = {
177
278
  label: '',
178
279
  value: [],
179
- search: true,
280
+ search: false,
180
281
  error: false,
181
282
  touched: false,
182
- placeholder: '',
283
+ placeholder: 'Select',
183
284
  onChange: () => {},
184
285
  onBlur: () => {},
185
- onFocus: () => {}
286
+ onFocus: () => {},
287
+ showCheckboxes: true,
288
+ showCountBadge: true,
289
+ closeMenuOnSelect: false,
290
+ hideSelectedOptions: false
186
291
  };
187
292
  var _default = exports.default = MultiSelect;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.WithPreselectedValues = exports.WithPlaceholder = exports.WithManyOptions = exports.Disabled = exports.Default = void 0;
6
+ exports.default = exports.WithoutCheckboxes = exports.WithPreselectedValues = exports.WithManyOptions = exports.MultipleFilters = exports.Disabled = exports.Default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _MultiSelect = require("./MultiSelect");
9
9
  var _global = _interopRequireDefault(require("../../styles/global"));
@@ -16,11 +16,45 @@ const StoryContainer = _styledComponents.default.div.withConfig({
16
16
  displayName: "MultiSelectstories__StoryContainer",
17
17
  componentId: "sc-1vk8pre-0"
18
18
  })(["max-width:400px;padding:40px 20px;"]);
19
+ const FiltersRow = _styledComponents.default.div.withConfig({
20
+ displayName: "MultiSelectstories__FiltersRow",
21
+ componentId: "sc-1vk8pre-1"
22
+ })(["display:flex;gap:12px;flex-wrap:wrap;"]);
19
23
  var _default = exports.default = {
20
24
  title: 'Components Library/Inputs/MultiSelect',
21
25
  component: _MultiSelect.MultiSelect,
22
26
  decorators: [Story => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_global.default, null), /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(StoryContainer, null, /*#__PURE__*/_react.default.createElement(Story, null))))]
23
27
  };
28
+ const statusOptions = [{
29
+ key: 'initiated',
30
+ value: 'initiated',
31
+ label: 'Initiated'
32
+ }, {
33
+ key: 'declined',
34
+ value: 'declined',
35
+ label: 'Declined'
36
+ }, {
37
+ key: 'confirmed',
38
+ value: 'confirmed',
39
+ label: 'Confirmed'
40
+ }, {
41
+ key: 'transferred',
42
+ value: 'transferred',
43
+ label: 'Transferred'
44
+ }];
45
+ const typeOptions = [{
46
+ key: 'dividend',
47
+ value: 'dividend',
48
+ label: 'Dividend'
49
+ }, {
50
+ key: 'interest',
51
+ value: 'interest',
52
+ label: 'Interest'
53
+ }, {
54
+ key: 'redemption',
55
+ value: 'redemption',
56
+ label: 'Redemption'
57
+ }];
24
58
  const countryOptions = [{
25
59
  key: 'us',
26
60
  value: 'us',
@@ -45,35 +79,6 @@ const countryOptions = [{
45
79
  key: 'it',
46
80
  value: 'it',
47
81
  label: 'Italy'
48
- }, {
49
- key: 'nl',
50
- value: 'nl',
51
- label: 'Netherlands'
52
- }, {
53
- key: 'ch',
54
- value: 'ch',
55
- label: 'Switzerland'
56
- }];
57
- const tagOptions = [{
58
- key: 'tech',
59
- value: 'tech',
60
- label: 'Technology'
61
- }, {
62
- key: 'finance',
63
- value: 'finance',
64
- label: 'Finance'
65
- }, {
66
- key: 'health',
67
- value: 'health',
68
- label: 'Healthcare'
69
- }, {
70
- key: 'education',
71
- value: 'education',
72
- label: 'Education'
73
- }, {
74
- key: 'retail',
75
- value: 'retail',
76
- label: 'Retail'
77
82
  }];
78
83
 
79
84
  // Controlled wrapper for interactive stories
@@ -91,40 +96,81 @@ const ControlledMultiSelect = props => {
91
96
  onChange: handleChange
92
97
  }));
93
98
  };
99
+
100
+ // Default - Status filter like in the design
94
101
  const Default = () => /*#__PURE__*/_react.default.createElement(ControlledMultiSelect, {
95
- id: "countries",
96
- name: "countries",
97
- label: "Select Countries",
98
- options: countryOptions
102
+ id: "status",
103
+ name: "status",
104
+ placeholder: "Status",
105
+ options: statusOptions
99
106
  });
107
+
108
+ // With preselected values showing count badge
100
109
  exports.Default = Default;
101
110
  const WithPreselectedValues = () => /*#__PURE__*/_react.default.createElement(ControlledMultiSelect, {
102
- id: "countries",
103
- name: "countries",
104
- label: "Select Countries",
105
- options: countryOptions,
106
- value: ['us', 'de']
111
+ id: "status",
112
+ name: "status",
113
+ placeholder: "Status",
114
+ options: statusOptions,
115
+ value: ['initiated', 'confirmed']
107
116
  });
117
+
118
+ // Multiple filters side by side (like in the screenshot)
108
119
  exports.WithPreselectedValues = WithPreselectedValues;
109
- const WithPlaceholder = () => /*#__PURE__*/_react.default.createElement(ControlledMultiSelect, {
110
- id: "tags",
111
- name: "tags",
112
- options: tagOptions,
113
- placeholder: "Choose tags..."
114
- });
115
- exports.WithPlaceholder = WithPlaceholder;
116
- const Disabled = () => /*#__PURE__*/_react.default.createElement(ControlledMultiSelect, {
120
+ const MultipleFilters = () => {
121
+ const [statusValue, setStatusValue] = (0, _react.useState)(['initiated']);
122
+ const [typeValue, setTypeValue] = (0, _react.useState)([]);
123
+ return /*#__PURE__*/_react.default.createElement(FiltersRow, null, /*#__PURE__*/_react.default.createElement("div", {
124
+ style: {
125
+ width: '140px'
126
+ }
127
+ }, /*#__PURE__*/_react.default.createElement(_MultiSelect.MultiSelect, {
128
+ id: "status",
129
+ name: "status",
130
+ placeholder: "Status",
131
+ options: statusOptions,
132
+ value: statusValue,
133
+ onChange: _ref2 => {
134
+ let {
135
+ value
136
+ } = _ref2;
137
+ return setStatusValue(value);
138
+ }
139
+ })), /*#__PURE__*/_react.default.createElement("div", {
140
+ style: {
141
+ width: '120px'
142
+ }
143
+ }, /*#__PURE__*/_react.default.createElement(_MultiSelect.MultiSelect, {
144
+ id: "type",
145
+ name: "type",
146
+ placeholder: "Type",
147
+ options: typeOptions,
148
+ value: typeValue,
149
+ onChange: _ref3 => {
150
+ let {
151
+ value
152
+ } = _ref3;
153
+ return setTypeValue(value);
154
+ }
155
+ })));
156
+ };
157
+
158
+ // Without checkboxes (classic multi-select style)
159
+ exports.MultipleFilters = MultipleFilters;
160
+ const WithoutCheckboxes = () => /*#__PURE__*/_react.default.createElement(ControlledMultiSelect, {
117
161
  id: "countries",
118
162
  name: "countries",
119
- label: "Select Countries",
163
+ placeholder: "Countries",
120
164
  options: countryOptions,
121
- value: ['uk', 'fr'],
122
- disabled: true
165
+ showCheckboxes: false,
166
+ showCountBadge: false
123
167
  });
124
- exports.Disabled = Disabled;
168
+
169
+ // With many options
170
+ exports.WithoutCheckboxes = WithoutCheckboxes;
125
171
  const WithManyOptions = () => {
126
172
  const manyOptions = Array.from({
127
- length: 50
173
+ length: 20
128
174
  }, (_, i) => ({
129
175
  key: "option-".concat(i),
130
176
  value: "option-".concat(i),
@@ -133,9 +179,20 @@ const WithManyOptions = () => {
133
179
  return /*#__PURE__*/_react.default.createElement(ControlledMultiSelect, {
134
180
  id: "many",
135
181
  name: "many",
136
- label: "Select Multiple",
182
+ placeholder: "Select",
137
183
  options: manyOptions,
138
- menuHeight: 200
184
+ menuHeight: 250
139
185
  });
140
186
  };
141
- exports.WithManyOptions = WithManyOptions;
187
+
188
+ // Disabled state
189
+ exports.WithManyOptions = WithManyOptions;
190
+ const Disabled = () => /*#__PURE__*/_react.default.createElement(ControlledMultiSelect, {
191
+ id: "status",
192
+ name: "status",
193
+ placeholder: "Status",
194
+ options: statusOptions,
195
+ value: ['initiated'],
196
+ disabled: true
197
+ });
198
+ exports.Disabled = Disabled;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.PaymentDetailsCard = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _styledComponents = _interopRequireDefault(require("styled-components"));
9
9
  var _colors = _interopRequireDefault(require("../../styles/colors"));
@@ -185,4 +185,5 @@ const PaymentDetailsCard = _ref2 => {
185
185
  };
186
186
  return /*#__PURE__*/_react.default.createElement(CardContainer, null, title && /*#__PURE__*/_react.default.createElement(CardTitle, null, title), renderAmountSection(), renderDetailsSection(), renderInfoSection());
187
187
  };
188
+ exports.PaymentDetailsCard = PaymentDetailsCard;
188
189
  var _default = exports.default = PaymentDetailsCard;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _StepIndicator = require("./StepIndicator.styles");
10
+ var _checkIcon = require("../../static/images/check-icon.svg");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const StepIndicator = _ref => {
13
+ let {
14
+ steps,
15
+ currentStep,
16
+ onStepClick,
17
+ showLabels = true,
18
+ marginBottom
19
+ } = _ref;
20
+ return /*#__PURE__*/_react.default.createElement(_StepIndicator.StepIndicatorContainer, {
21
+ marginBottom: marginBottom
22
+ }, steps.map((step, index) => {
23
+ const isCompleted = index < currentStep;
24
+ const isActive = index === currentStep;
25
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
26
+ key: step.id
27
+ }, /*#__PURE__*/_react.default.createElement(_StepIndicator.StepItem, {
28
+ onClick: () => onStepClick && onStepClick(index),
29
+ style: {
30
+ cursor: onStepClick ? 'pointer' : 'default'
31
+ }
32
+ }, /*#__PURE__*/_react.default.createElement(_StepIndicator.StepCircle, {
33
+ isCompleted: isCompleted,
34
+ isActive: isActive
35
+ }, isCompleted ? /*#__PURE__*/_react.default.createElement(_checkIcon.ReactComponent, {
36
+ width: 14,
37
+ height: 11
38
+ }) : index + 1), showLabels && /*#__PURE__*/_react.default.createElement(_StepIndicator.StepLabel, null, step.label)), index < steps.length - 1 && /*#__PURE__*/_react.default.createElement(_StepIndicator.StepConnector, {
39
+ isCompleted: isCompleted
40
+ }));
41
+ }));
42
+ };
43
+ StepIndicator.propTypes = {
44
+ steps: _propTypes.default.arrayOf(_propTypes.default.shape({
45
+ id: _propTypes.default.string.isRequired,
46
+ label: _propTypes.default.string.isRequired
47
+ })).isRequired,
48
+ currentStep: _propTypes.default.number.isRequired,
49
+ onStepClick: _propTypes.default.func,
50
+ showLabels: _propTypes.default.bool,
51
+ marginBottom: _propTypes.default.string
52
+ };
53
+ StepIndicator.defaultProps = {
54
+ onStepClick: null,
55
+ showLabels: true,
56
+ marginBottom: '32px'
57
+ };
58
+ var _default = exports.default = StepIndicator;
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.WithoutLabels = exports.SecondStep = exports.ManySteps = exports.LastStep = exports.Interactive = exports.Default = exports.CustomMargin = exports.AllCompleted = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _StepIndicator = _interopRequireDefault(require("./StepIndicator"));
9
+ var _ComponentWrapper = require("../ComponentWrapper/ComponentWrapper.styles");
10
+ var _global = _interopRequireDefault(require("../../styles/global"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ var _default = exports.default = {
14
+ title: 'Components Library/StepIndicator',
15
+ component: _StepIndicator.default,
16
+ decorators: [Story => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_global.default, null), /*#__PURE__*/_react.default.createElement(Story, null))],
17
+ argTypes: {
18
+ currentStep: {
19
+ control: {
20
+ type: 'number',
21
+ min: 0,
22
+ max: 3
23
+ },
24
+ description: 'Current active step (0-indexed)'
25
+ },
26
+ showLabels: {
27
+ control: 'boolean',
28
+ description: 'Show or hide step labels'
29
+ },
30
+ marginBottom: {
31
+ control: 'text',
32
+ description: 'Bottom margin of the component'
33
+ }
34
+ }
35
+ };
36
+ const sampleSteps = [{
37
+ id: 'step1',
38
+ label: 'Details'
39
+ }, {
40
+ id: 'step2',
41
+ label: 'Review'
42
+ }, {
43
+ id: 'step3',
44
+ label: 'Confirm'
45
+ }];
46
+
47
+ // Default - first step active
48
+ const Default = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
49
+ steps: sampleSteps,
50
+ currentStep: 0
51
+ }));
52
+
53
+ // Second step active (first completed)
54
+ exports.Default = Default;
55
+ const SecondStep = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
56
+ steps: sampleSteps,
57
+ currentStep: 1
58
+ }));
59
+
60
+ // Last step active (all previous completed)
61
+ exports.SecondStep = SecondStep;
62
+ const LastStep = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
63
+ steps: sampleSteps,
64
+ currentStep: 2
65
+ }));
66
+
67
+ // All steps completed
68
+ exports.LastStep = LastStep;
69
+ const AllCompleted = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
70
+ steps: sampleSteps,
71
+ currentStep: 3
72
+ }));
73
+
74
+ // Interactive example
75
+ exports.AllCompleted = AllCompleted;
76
+ const Interactive = () => {
77
+ const [currentStep, setCurrentStep] = (0, _react.useState)(0);
78
+ return /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
79
+ steps: sampleSteps,
80
+ currentStep: currentStep,
81
+ onStepClick: index => setCurrentStep(index)
82
+ }), /*#__PURE__*/_react.default.createElement("div", {
83
+ style: {
84
+ marginTop: '24px'
85
+ }
86
+ }, /*#__PURE__*/_react.default.createElement("button", {
87
+ onClick: () => setCurrentStep(prev => Math.max(0, prev - 1)),
88
+ disabled: currentStep === 0,
89
+ style: {
90
+ marginRight: '8px',
91
+ padding: '8px 16px'
92
+ }
93
+ }, "Previous"), /*#__PURE__*/_react.default.createElement("button", {
94
+ onClick: () => setCurrentStep(prev => Math.min(sampleSteps.length, prev + 1)),
95
+ disabled: currentStep >= sampleSteps.length,
96
+ style: {
97
+ padding: '8px 16px'
98
+ }
99
+ }, "Next")), /*#__PURE__*/_react.default.createElement("p", {
100
+ style: {
101
+ marginTop: '16px',
102
+ fontSize: '14px',
103
+ color: '#666'
104
+ }
105
+ }, "Current step: ", currentStep, " (click on steps to navigate)"));
106
+ };
107
+
108
+ // Without labels
109
+ exports.Interactive = Interactive;
110
+ const WithoutLabels = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
111
+ steps: sampleSteps,
112
+ currentStep: 1,
113
+ showLabels: false
114
+ }));
115
+
116
+ // More steps
117
+ exports.WithoutLabels = WithoutLabels;
118
+ const ManySteps = () => {
119
+ const manySteps = [{
120
+ id: 'step1',
121
+ label: 'Account'
122
+ }, {
123
+ id: 'step2',
124
+ label: 'Personal'
125
+ }, {
126
+ id: 'step3',
127
+ label: 'Documents'
128
+ }, {
129
+ id: 'step4',
130
+ label: 'Review'
131
+ }, {
132
+ id: 'step5',
133
+ label: 'Complete'
134
+ }];
135
+ return /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
136
+ steps: manySteps,
137
+ currentStep: 2
138
+ }));
139
+ };
140
+
141
+ // Custom margin
142
+ exports.ManySteps = ManySteps;
143
+ const CustomMargin = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_StepIndicator.default, {
144
+ steps: sampleSteps,
145
+ currentStep: 1,
146
+ marginBottom: "0"
147
+ }), /*#__PURE__*/_react.default.createElement("p", {
148
+ style: {
149
+ margin: 0,
150
+ fontSize: '14px'
151
+ }
152
+ }, "Content immediately below (no margin)"));
153
+ exports.CustomMargin = CustomMargin;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StepLabel = exports.StepItem = exports.StepIndicatorContainer = exports.StepConnector = exports.StepCircle = void 0;
7
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
8
+ var _colors = _interopRequireDefault(require("../../styles/colors"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ const StepIndicatorContainer = exports.StepIndicatorContainer = _styledComponents.default.div.withConfig({
12
+ displayName: "StepIndicatorstyles__StepIndicatorContainer",
13
+ componentId: "sc-ywoddn-0"
14
+ })(["display:flex;align-items:center;gap:16px;margin-bottom:", ";"], props => props.marginBottom || '32px');
15
+ const StepItem = exports.StepItem = _styledComponents.default.div.withConfig({
16
+ displayName: "StepIndicatorstyles__StepItem",
17
+ componentId: "sc-ywoddn-1"
18
+ })(["display:flex;align-items:center;gap:12px;"]);
19
+ const StepCircle = exports.StepCircle = _styledComponents.default.div.withConfig({
20
+ displayName: "StepIndicatorstyles__StepCircle",
21
+ componentId: "sc-ywoddn-2"
22
+ })(["width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;transition:all 0.2s ease;", " ", " ", ""], props => props.isCompleted && (0, _styledComponents.css)(["background-color:", ";color:", ";svg path{stroke:", ";}"], _colors.default.progressGreen, _colors.default.white, _colors.default.white), props => props.isActive && !props.isCompleted && (0, _styledComponents.css)(["background-color:", ";color:", ";"], _colors.default.black, _colors.default.white), props => !props.isActive && !props.isCompleted && (0, _styledComponents.css)(["background-color:", ";color:", ";"], _colors.default.grey, _colors.default.black));
23
+ const StepLabel = exports.StepLabel = _styledComponents.default.span.withConfig({
24
+ displayName: "StepIndicatorstyles__StepLabel",
25
+ componentId: "sc-ywoddn-3"
26
+ })(["font-size:16px;font-weight:600;line-height:24px;letter-spacing:0.6px;word-wrap:break-word;"]);
27
+ const StepConnector = exports.StepConnector = _styledComponents.default.div.withConfig({
28
+ displayName: "StepIndicatorstyles__StepConnector",
29
+ componentId: "sc-ywoddn-4"
30
+ })(["flex:1;height:2px;max-width:80px;background-color:", ";"], props => props.isCompleted ? _colors.default.progressGreen : _colors.default.grey);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.Default = exports.AsButton = void 0;
6
+ exports.default = exports.IconReversed = exports.Default = exports.ButtonIconReversed = exports.AsButton = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _reactRouterDom = require("react-router-dom");
9
9
  var _TextLink = require("./TextLink.styles");
@@ -22,4 +22,14 @@ exports.Default = Default;
22
22
  const AsButton = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_TextLink.TextButton, {
23
23
  onClick: () => alert('Clicked!')
24
24
  }, "Click Me"));
25
- exports.AsButton = AsButton;
25
+ exports.AsButton = AsButton;
26
+ const IconReversed = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_TextLink.TextLink, {
27
+ to: "/example",
28
+ reverse: true
29
+ }, "Go Back"));
30
+ exports.IconReversed = IconReversed;
31
+ const ButtonIconReversed = () => /*#__PURE__*/_react.default.createElement(_ComponentWrapper.ComponentWrapper, null, /*#__PURE__*/_react.default.createElement(_TextLink.TextButton, {
32
+ onClick: () => alert('Clicked!'),
33
+ reverse: true
34
+ }, "Previous"));
35
+ exports.ButtonIconReversed = ButtonIconReversed;
@@ -9,7 +9,7 @@ var _reactRouterDom = require("react-router-dom");
9
9
  var _theme = _interopRequireDefault(require("../../styles/theme"));
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
- const styles = (0, _styledComponents.css)(["background:#fff;border:none;cursor:pointer;position:relative;font-family:'Open Sans';font-weight:bold;font-size:11px;line-height:14px;text-transform:uppercase;display:inline-block;padding-left:18px;padding-right:6px;transition:padding 0.2s;&:before{content:'\\f3d1';font-family:'Ionicons';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px;line-height:8px;display:block;width:8px;height:8px;position:absolute;top:50%;left:0;margin-top:-4px;color:", ";}&:hover{padding-left:24px;padding-right:0;}", ""], props => _theme.default.cWarning, props => props.disabled && (0, _styledComponents.css)(["opacity:0.5;pointer-events:none;"]));
12
+ const styles = (0, _styledComponents.css)(["background:#fff;border:none;cursor:pointer;position:relative;font-family:'Open Sans';font-weight:bold;font-size:11px;line-height:14px;text-transform:uppercase;display:inline-block;padding-left:18px;padding-right:6px;transition:padding 0.2s;&:before{content:'\\f3d1';font-family:'Ionicons';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px;line-height:8px;display:block;width:8px;height:8px;position:absolute;top:50%;left:0;margin-top:-4px;color:", ";transform:", ";}&:hover{padding-left:24px;padding-right:0;}", ""], props => _theme.default.cWarning, props => props.reverse ? 'rotate(180deg)' : 'none', props => props.disabled && (0, _styledComponents.css)(["opacity:0.5;pointer-events:none;"]));
13
13
  const TextLink = exports.TextLink = (0, _styledComponents.default)(_reactRouterDom.Link).withConfig({
14
14
  displayName: "TextLinkstyles__TextLink",
15
15
  componentId: "sc-h1k34v-0"
package/dist/index.js CHANGED
@@ -1444,6 +1444,17 @@ Object.keys(_TimerComponent).forEach(function (key) {
1444
1444
  }
1445
1445
  });
1446
1446
  });
1447
+ var _PaymentDetailsCard = require("./components/Payment/PaymentDetailsCard");
1448
+ Object.keys(_PaymentDetailsCard).forEach(function (key) {
1449
+ if (key === "default" || key === "__esModule") return;
1450
+ if (key in exports && exports[key] === _PaymentDetailsCard[key]) return;
1451
+ Object.defineProperty(exports, key, {
1452
+ enumerable: true,
1453
+ get: function () {
1454
+ return _PaymentDetailsCard[key];
1455
+ }
1456
+ });
1457
+ });
1447
1458
  var _Timeline = require("./components/Timeline/Timeline");
1448
1459
  Object.keys(_Timeline).forEach(function (key) {
1449
1460
  if (key === "default" || key === "__esModule") return;
@@ -1476,4 +1487,15 @@ Object.keys(_StatusTag).forEach(function (key) {
1476
1487
  return _StatusTag[key];
1477
1488
  }
1478
1489
  });
1490
+ });
1491
+ var _StepIndicator = require("./components/StepsProgress/StepIndicator");
1492
+ Object.keys(_StepIndicator).forEach(function (key) {
1493
+ if (key === "default" || key === "__esModule") return;
1494
+ if (key in exports && exports[key] === _StepIndicator[key]) return;
1495
+ Object.defineProperty(exports, key, {
1496
+ enumerable: true,
1497
+ get: function () {
1498
+ return _StepIndicator[key];
1499
+ }
1500
+ });
1479
1501
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stokr/components-library",
3
- "version": "2.3.65-beta.5",
3
+ "version": "2.3.65-beta.6",
4
4
  "description": "STOKR - Components Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",