@vchasno/ui-kit 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.3] - 2023-10-11
11
+
12
+ ## Added
13
+
14
+ - update README.md (how to add new component, how to publish new version)
15
+ - improve Switch component, add more stories
16
+
17
+ ## [0.1.2] - 2023-10-11
18
+
19
+ ### Added
20
+
21
+ - export SelectOption type
22
+
23
+ ## [0.1.1] - 2023-10-11
24
+
25
+ ### Fixed
26
+
27
+ - remove package.json engine version
28
+
10
29
  ## [0.1.0] - 2023-10-10
11
30
 
12
31
  ### Added
package/README.md CHANGED
@@ -111,9 +111,15 @@ npm run build-storybook
111
111
  npm run build
112
112
  ```
113
113
 
114
- ### Publish
114
+ ### Publish new version
115
115
 
116
- ```bash
117
- npm publish
118
- ```
116
+ Publish new version to npm registry can only be done with CI/CD
117
+
118
+ To publish new version:
119
119
 
120
+ 1. Make changes in new branch (e.g. `feature/new-component`)
121
+ 2. Add changes to CHANGELOG.md (see [Keep a Changelog](https://keepachangelog.com/en/1.0.0/))
122
+ 3. Commit changes
123
+ 4. Create tag with version (e.g. `v0.1.2`) run `npm version patch|minor|major`
124
+ 5. Push changes to remote and create MR to `master` branch
125
+ 6. Merge changes to `master` branch (CI/CD will publish new version to npm registry)
package/dist/index.d.ts CHANGED
@@ -179,10 +179,13 @@ declare const Spinner: React.FC<SpinnerProps>;
179
179
 
180
180
  interface SwitcherProps {
181
181
  className?: string;
182
- height?: number;
183
182
  color?: string;
183
+ size?: string | number;
184
184
  checked?: boolean;
185
- onChecked?: (checked: boolean) => void;
185
+ onChecked?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;
186
+ disabled?: boolean;
187
+ defaultChecked?: boolean;
188
+ lazy?: boolean;
186
189
  }
187
190
  declare const Switcher: React.ForwardRefExoticComponent<SwitcherProps & React.RefAttributes<HTMLInputElement>>;
188
191
 
package/dist/index.js CHANGED
@@ -265,7 +265,7 @@ var composePaginationSteps = function (total, current) {
265
265
  return display;
266
266
  };
267
267
 
268
- var css_248z$b = ".vchasno-ui-pagination {\n --size: 32px;\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n font-size: 14px;\n gap: 10px;\n}\n\n.vchasno-ui-pagination__item {\n min-width: var(--size);\n height: var(--size);\n flex-grow: 0;\n flex-shrink: 0;\n border: 1px solid transparent;\n border-radius: 6px;\n background-color: #fff;\n cursor: pointer;\n line-height: calc(var(--size) - 2px);\n outline: 0;\n text-align: center;\n transition: background-color var(--transition-duration-sec, 0.3s),\n border var(--transition-duration-sec, 0.3s);\n user-select: none;\n vertical-align: middle;\n}\n\n.vchasno-ui-pagination__item-arrow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.vchasno-ui-pagination__item:not(.vchasno-ui-pagination__item-disabled):hover {\n background-color: rgb(0 0 0 / 10%);\n}\n\n.vchasno-ui-pagination__item-active {\n border-color: var(--pagination-border-color, #6b5fff);\n}\n\n.vchasno-ui-pagination__item-disabled {\n cursor: not-allowed;\n opacity: 0.8;\n}\n";
268
+ var css_248z$b = ".vchasno-ui-pagination {\n --pagination-size: 32px;\n\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n font-size: 14px;\n gap: 10px;\n}\n\n.vchasno-ui-pagination__item {\n min-width: var(--pagination-size);\n height: var(--pagination-size);\n flex-grow: 0;\n flex-shrink: 0;\n border: 1px solid transparent;\n border-radius: 6px;\n background-color: #fff;\n cursor: pointer;\n line-height: calc(var(--pagination-size) - 2px);\n outline: 0;\n text-align: center;\n transition:\n background-color var(--transition-duration-sec, 0.3s),\n border var(--transition-duration-sec, 0.3s);\n user-select: none;\n vertical-align: middle;\n}\n\n.vchasno-ui-pagination__item-arrow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.vchasno-ui-pagination__item:not(.vchasno-ui-pagination__item-disabled):hover {\n background-color: rgb(0 0 0 / 10%);\n}\n\n.vchasno-ui-pagination__item-active {\n border-color: var(--pagination-border-color, #6b5fff);\n}\n\n.vchasno-ui-pagination__item-disabled {\n cursor: not-allowed;\n opacity: 0.8;\n}\n";
269
269
  styleInject(css_248z$b);
270
270
 
271
271
  var Pagination = function (_a) {
@@ -18329,28 +18329,27 @@ var DatePicker = function (_a) {
18329
18329
  React__default.createElement(InputMeta, { hint: hint, error: error })));
18330
18330
  };
18331
18331
 
18332
- var css_248z$2 = ".vchasno-ui-switcher {\n --height: 30px;\n --offset-width: calc(var(--height) / 12);\n --bg: #b6cadb;\n --active-bg: #6b5fff;\n\n position: relative;\n display: inline-block;\n height: var(--height);\n aspect-ratio: 2/1.1;\n}\n\n.vchasno-ui-switcher:hover {\n --bg: #6b8091;\n\n cursor: pointer;\n}\n\n.vchasno-ui-switcher__mask {\n display: inline-block;\n width: 100%;\n height: 100%;\n border-radius: calc(var(--height) / 2);\n background-color: var(--bg);\n pointer-events: none;\n transition: background-color 0.3s;\n}\n\n.vchasno-ui-switcher__input {\n display: none;\n}\n\n.vchasno-ui-switcher__circle {\n position: absolute;\n top: var(--offset-width);\n right: calc(100% - var(--height) + var(--offset-width));\n left: var(--offset-width);\n display: block;\n height: calc(100% - calc(var(--offset-width) * 2));\n border-radius: 50%;\n aspect-ratio: 1/1;\n background-color: #fff;\n pointer-events: none;\n transform: rotate(0deg);\n transition: left 0.3s, transform 0.3s;\n}\n\n.vchasno-ui-switcher__input:checked + .vchasno-ui-switcher__circle {\n --bg: var(--active-bg);\n\n left: calc(100% - var(--height) + var(--offset-width));\n transform: rotate(180deg);\n}\n\n.vchasno-ui-switcher__input:checked + .vchasno-ui-switcher__circle + .vchasno-ui-switcher__mask {\n --bg: var(--active-bg);\n}\n";
18332
+ var css_248z$2 = ".vchasno-ui-switcher {\n --switcher-size: 2em;\n --button-width: calc(var(--switcher-size) * 1.75);\n --button-height: var(--switcher-size);\n --toggle-diameter: calc(var(--switcher-size) * 0.75);\n --button-toggle-offset: calc((var(--button-height) - var(--toggle-diameter)) / 2);\n --toggle-shadow-offset: 10px;\n --toggle-wider: calc(var(--switcher-size) * 1.5);\n --switcher-default-color: #b6cadb;\n --switcher-active-color: #6b5fff;\n}\n\n.vchasno-ui-switcher.--disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.vchasno-ui-slider {\n position: relative;\n display: inline-block;\n width: var(--button-width);\n height: var(--button-height);\n border-radius: calc(var(--button-height) / 2);\n background-color: var(--switcher-default-color);\n cursor: pointer;\n transition: var(--transition-duration-sec) all ease-in-out;\n}\n\n.vchasno-ui-slider::after {\n position: absolute;\n top: var(--button-toggle-offset);\n display: inline-block;\n width: var(--toggle-diameter);\n height: var(--toggle-diameter);\n border-radius: calc(var(--toggle-diameter) / 2);\n background-color: #fff;\n box-shadow: var(--toggle-shadow-offset) 0 calc(var(--toggle-shadow-offset) * 4) rgb(0 0 0 / 10%);\n content: '';\n transform: translateX(var(--button-toggle-offset));\n transition: var(--transition-duration-sec) all ease-in-out;\n}\n\n.vchasno-ui-switcher input[type='checkbox']:checked + .vchasno-ui-slider {\n background-color: var(--switcher-active-color);\n}\n\n.vchasno-ui-switcher input[type='checkbox']:checked + .vchasno-ui-slider::after {\n box-shadow: calc(var(--toggle-shadow-offset) * -1) 0 calc(var(--toggle-shadow-offset) * 4)\n rgb(0 0 0 / 10%);\n transform: translateX(\n calc(var(--button-width) - var(--toggle-diameter) - var(--button-toggle-offset))\n );\n}\n\n.vchasno-ui-switcher input[type='checkbox'] {\n display: none;\n}\n\n.vchasno-ui-switcher.--lazy input[type='checkbox']:active + .vchasno-ui-slider::after {\n width: var(--toggle-wider);\n}\n\n.vchasno-ui-switcher.--lazy input[type='checkbox']:checked:active + .vchasno-ui-slider::after {\n transform: translateX(\n calc(var(--button-width) - var(--toggle-wider) - var(--button-toggle-offset))\n );\n}\n";
18333
18333
  styleInject(css_248z$2);
18334
18334
 
18335
18335
  var composeStyles = function (_a) {
18336
- var height = _a.height, color = _a.color;
18336
+ var color = _a.color, size = _a.size;
18337
18337
  var style = {};
18338
- if (typeof height === 'number') {
18339
- style['--height'] = "".concat(height, "px");
18338
+ if (typeof color !== 'undefined') {
18339
+ style['--switcher-active-color'] = color;
18340
18340
  }
18341
- if (typeof color === 'string') {
18342
- style['--active-bg'] = color;
18341
+ if (typeof size !== 'undefined') {
18342
+ style['--switcher-size'] = typeof size === 'number' ? "".concat(size, "px") : size;
18343
18343
  }
18344
18344
  return style;
18345
18345
  };
18346
18346
  var Switcher = React__default.forwardRef(function (_a, ref) {
18347
- var className = _a.className, height = _a.height, color = _a.color, checked = _a.checked, onChecked = _a.onChecked;
18348
- return (React__default.createElement("label", { className: cn('vchasno-ui-switcher', className), style: composeStyles({ height: height, color: color }) },
18349
- React__default.createElement("input", { ref: ref, checked: checked, onChange: function (event) {
18350
- onChecked === null || onChecked === void 0 ? void 0 : onChecked(event.currentTarget.checked);
18351
- }, type: "checkbox", className: "vchasno-ui-switcher__input" }),
18352
- React__default.createElement("span", { className: "vchasno-ui-switcher__circle" }),
18353
- React__default.createElement("span", { className: "vchasno-ui-switcher__mask" })));
18347
+ var className = _a.className, size = _a.size, lazy = _a.lazy, color = _a.color, defaultChecked = _a.defaultChecked, disabled = _a.disabled, checked = _a.checked, onChecked = _a.onChecked;
18348
+ return (React__default.createElement("label", { className: cn('vchasno-ui-switcher', { '--disabled': disabled, '--lazy': lazy }, className), style: composeStyles({ color: color, size: size }) },
18349
+ React__default.createElement("input", { ref: ref, type: "checkbox", checked: checked, defaultChecked: defaultChecked, onChange: function (event) {
18350
+ onChecked === null || onChecked === void 0 ? void 0 : onChecked(event.currentTarget.checked, event);
18351
+ } }),
18352
+ React__default.createElement("span", { className: "vchasno-ui-slider" })));
18354
18353
  });
18355
18354
  Switcher.displayName = 'Switcher';
18356
18355