@a-type/ui 1.1.9 → 1.1.11

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 (25) hide show
  1. package/dist/cjs/components/forms/FormikForm.stories.js +3 -1
  2. package/dist/cjs/components/forms/FormikForm.stories.js.map +1 -1
  3. package/dist/cjs/components/forms/NumberStepperField.d.ts +10 -0
  4. package/dist/cjs/components/forms/NumberStepperField.js +33 -0
  5. package/dist/cjs/components/forms/NumberStepperField.js.map +1 -0
  6. package/dist/cjs/components/forms/index.d.ts +1 -0
  7. package/dist/cjs/components/forms/index.js +1 -0
  8. package/dist/cjs/components/forms/index.js.map +1 -1
  9. package/dist/cjs/components/numberStepper/NumberStepper.d.ts +1 -0
  10. package/dist/cjs/components/numberStepper/NumberStepper.js.map +1 -1
  11. package/dist/esm/components/forms/FormikForm.stories.js +3 -1
  12. package/dist/esm/components/forms/FormikForm.stories.js.map +1 -1
  13. package/dist/esm/components/forms/NumberStepperField.d.ts +10 -0
  14. package/dist/esm/components/forms/NumberStepperField.js +29 -0
  15. package/dist/esm/components/forms/NumberStepperField.js.map +1 -0
  16. package/dist/esm/components/forms/index.d.ts +1 -0
  17. package/dist/esm/components/forms/index.js +1 -0
  18. package/dist/esm/components/forms/index.js.map +1 -1
  19. package/dist/esm/components/numberStepper/NumberStepper.d.ts +1 -0
  20. package/dist/esm/components/numberStepper/NumberStepper.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/components/forms/FormikForm.stories.tsx +3 -0
  23. package/src/components/forms/NumberStepperField.tsx +54 -0
  24. package/src/components/forms/index.tsx +1 -0
  25. package/src/components/numberStepper/NumberStepper.tsx +1 -0
@@ -18,6 +18,7 @@ const FormikForm_js_1 = require("./FormikForm.js");
18
18
  const TextField_js_1 = require("./TextField.js");
19
19
  const CheckboxField_js_1 = require("./CheckboxField.js");
20
20
  const SubmitButton_js_1 = require("./SubmitButton.js");
21
+ const NumberStepperField_js_1 = require("./NumberStepperField.js");
21
22
  const meta = {
22
23
  title: 'Form',
23
24
  component: FormikForm_js_1.FormikForm,
@@ -33,8 +34,9 @@ exports.Default = {
33
34
  return ((0, jsx_runtime_1.jsxs)(FormikForm_js_1.FormikForm, Object.assign({ initialValues: {
34
35
  email: '',
35
36
  password: '',
37
+ age: 18,
36
38
  tos: false,
37
- } }, args, { children: [(0, jsx_runtime_1.jsx)(TextField_js_1.TextField, { name: "email", type: "email", label: "Email" }), (0, jsx_runtime_1.jsx)(TextField_js_1.TextField, { name: "password", type: "password", label: "Password" }), (0, jsx_runtime_1.jsx)(CheckboxField_js_1.CheckboxField, { name: "tos", label: "I agree" }), (0, jsx_runtime_1.jsx)(SubmitButton_js_1.SubmitButton, { children: "Sign up" })] })));
39
+ } }, args, { children: [(0, jsx_runtime_1.jsx)(TextField_js_1.TextField, { name: "email", type: "email", label: "Email" }), (0, jsx_runtime_1.jsx)(TextField_js_1.TextField, { name: "password", type: "password", label: "Password" }), (0, jsx_runtime_1.jsx)(NumberStepperField_js_1.NumberStepperField, { name: "age", label: "Age", min: 13, max: 100 }), (0, jsx_runtime_1.jsx)(CheckboxField_js_1.CheckboxField, { name: "tos", label: "I agree" }), (0, jsx_runtime_1.jsx)(SubmitButton_js_1.SubmitButton, { children: "Sign up" })] })));
38
40
  },
39
41
  };
40
42
  //# sourceMappingURL=FormikForm.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormikForm.stories.js","sourceRoot":"","sources":["../../../../src/components/forms/FormikForm.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,mDAA6C;AAC7C,iDAA2C;AAC3C,yDAAmD;AACnD,uDAAiD;AAEjD,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,0BAAU;IACrB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACiC,CAAC;AAEpC,kBAAe,IAAI,CAAC;AAIP,QAAA,OAAO,GAAU;IAC7B,MAAM,CAAC,EAA0B;YAA1B,EAAE,aAAa,OAAW,EAAN,IAAI,cAAxB,iBAA0B,CAAF;QAC9B,OAAO,CACN,wBAAC,0BAAU,kBACV,aAAa,EAAE;gBACd,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,GAAG,EAAE,KAAK;aACV,IACG,IAAI,eAER,uBAAC,wBAAS,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,GAAG,EACrD,uBAAC,wBAAS,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,UAAU,GAAG,EAC9D,uBAAC,gCAAa,IAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,SAAS,GAAG,EAC5C,uBAAC,8BAAY,0BAAuB,KACxB,CACb,CAAC;IACH,CAAC;CACD,CAAC"}
1
+ {"version":3,"file":"FormikForm.stories.js","sourceRoot":"","sources":["../../../../src/components/forms/FormikForm.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,mDAA6C;AAC7C,iDAA2C;AAC3C,yDAAmD;AACnD,uDAAiD;AACjD,mEAA6D;AAE7D,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,0BAAU;IACrB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACiC,CAAC;AAEpC,kBAAe,IAAI,CAAC;AAIP,QAAA,OAAO,GAAU;IAC7B,MAAM,CAAC,EAA0B;YAA1B,EAAE,aAAa,OAAW,EAAN,IAAI,cAAxB,iBAA0B,CAAF;QAC9B,OAAO,CACN,wBAAC,0BAAU,kBACV,aAAa,EAAE;gBACd,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,KAAK;aACV,IACG,IAAI,eAER,uBAAC,wBAAS,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,GAAG,EACrD,uBAAC,wBAAS,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,UAAU,GAAG,EAC9D,uBAAC,0CAAkB,IAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAI,EAChE,uBAAC,gCAAa,IAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,SAAS,GAAG,EAC5C,uBAAC,8BAAY,0BAAuB,KACxB,CACb,CAAC;IACH,CAAC;CACD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { NumberStepperProps } from '../numberStepper/NumberStepper.js';
2
+ export interface NumberStepperFieldProps extends Omit<NumberStepperProps, 'value' | 'onChange'> {
3
+ name: string;
4
+ label?: string;
5
+ required?: boolean;
6
+ className?: string;
7
+ id?: string;
8
+ onChange?: (value: number) => void;
9
+ }
10
+ export declare function NumberStepperField({ name, label, className, required, id: providedId, onChange, ...rest }: NumberStepperFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,33 @@
1
+ // @unocss-include
2
+ "use strict";
3
+ var __rest = (this && this.__rest) || function (s, e) {
4
+ var t = {};
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
6
+ t[p] = s[p];
7
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
8
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
9
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
10
+ t[p[i]] = s[p[i]];
11
+ }
12
+ return t;
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.NumberStepperField = void 0;
16
+ const jsx_runtime_1 = require("react/jsx-runtime");
17
+ const formik_1 = require("formik");
18
+ const hooks_js_1 = require("../../hooks.js");
19
+ const NumberStepper_js_1 = require("../numberStepper/NumberStepper.js");
20
+ const useIdOrGenerated_js_1 = require("../../hooks/useIdOrGenerated.js");
21
+ function NumberStepperField(_a) {
22
+ var { name, label, className, required, id: providedId, onChange } = _a, rest = __rest(_a, ["name", "label", "className", "required", "id", "onChange"]);
23
+ const [_, field, tools] = (0, formik_1.useField)({ name });
24
+ const id = (0, useIdOrGenerated_js_1.useIdOrGenerated)(providedId);
25
+ return ((0, jsx_runtime_1.jsxs)(FieldRoot, Object.assign({ className: className }, { children: [label && (0, jsx_runtime_1.jsx)(FieldLabel, Object.assign({ htmlFor: id }, { children: label })), (0, jsx_runtime_1.jsx)(NumberStepper_js_1.NumberStepper, Object.assign({ value: field.value, onChange: (v) => {
26
+ tools.setValue(v);
27
+ onChange === null || onChange === void 0 ? void 0 : onChange(v);
28
+ }, id: id }, rest))] })));
29
+ }
30
+ exports.NumberStepperField = NumberStepperField;
31
+ const FieldRoot = (0, hooks_js_1.withClassName)('div', 'layer-components:flex layer-components:flex-col layer-components:gap-2');
32
+ const FieldLabel = (0, hooks_js_1.withClassName)('label', 'layer-components:block layer-components:flex-col layer-components:gap-1 layer-components:text-md layer-components:font-normal layer-components:text-dark-blend layer-components:mt-2px');
33
+ //# sourceMappingURL=NumberStepperField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberStepperField.js","sourceRoot":"","sources":["../../../../src/components/forms/NumberStepperField.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mCAAkC;AAClC,6CAA+C;AAC/C,wEAG2C;AAC3C,yEAAmE;AAYnE,SAAgB,kBAAkB,CAAC,EAQT;QARS,EAClC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,EACR,EAAE,EAAE,UAAU,EACd,QAAQ,OAEiB,EADtB,IAAI,cAP2B,4DAQlC,CADO;IAEP,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,IAAA,iBAAQ,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,GAAG,IAAA,sCAAgB,EAAC,UAAU,CAAC,CAAC;IACxC,OAAO,CACN,wBAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,iBAC7B,KAAK,IAAI,uBAAC,UAAU,kBAAC,OAAO,EAAE,EAAE,gBAAG,KAAK,IAAc,EACvD,uBAAC,gCAAa,kBACb,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAClB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC,CAAC;gBACf,CAAC,EACD,EAAE,EAAE,EAAE,IACF,IAAI,EACP,KACS,CACZ,CAAC;AACH,CAAC;AAzBD,gDAyBC;AAED,MAAM,SAAS,GAAG,IAAA,wBAAa,EAC9B,KAAK,EACL,wCAAwC,CACxC,CAAC;AAEF,MAAM,UAAU,GAAG,IAAA,wBAAa,EAC/B,OAAO,EACP,oFAAoF,CACpF,CAAC"}
@@ -4,3 +4,4 @@ export * from './TextField.js';
4
4
  export * from './FormikForm.js';
5
5
  export * from './hooks.js';
6
6
  export * from './CheckboxField.js';
7
+ export * from './NumberStepperField.jsx';
@@ -21,4 +21,5 @@ __exportStar(require("./TextField.js"), exports);
21
21
  __exportStar(require("./FormikForm.js"), exports);
22
22
  __exportStar(require("./hooks.js"), exports);
23
23
  __exportStar(require("./CheckboxField.js"), exports);
24
+ __exportStar(require("./NumberStepperField.jsx"), exports);
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC;AAChC,6CAA2B;AAC3B,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC;AAChC,6CAA2B;AAC3B,qDAAmC;AACnC,2DAAwC"}
@@ -10,5 +10,6 @@ export interface NumberStepperProps {
10
10
  disabled?: boolean;
11
11
  min?: number;
12
12
  max?: number;
13
+ id?: string;
13
14
  }
14
15
  export declare function NumberStepper({ value, onChange, highlightChange, steps, increment: incrementAmount, renderValue, className, disabled, min, max, ...rest }: NumberStepperProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../../src/components/numberStepper/NumberStepper.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAA+C;AAC/C,uDAA4D;AAC5D,gDAA8B;AAE9B,4CAAsC;AAetC,SAAgB,aAAa,CAAC,EAYT;;QAZS,EAC7B,KAAK,EACL,QAAQ,EACR,eAAe,EACf,KAAK,EACL,SAAS,EAAE,eAAe,GAAG,CAAC,EAC9B,WAAW,GAAG,sBAAc,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,OAEiB,EADjB,IAAI,cAXsB,oHAY7B,CADO;IAEP,MAAM,KAAK,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,CAAC,EAAE;gBAChB,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1B,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IAEpC,OAAO,CACN,+CACC,SAAS,EAAE,IAAA,cAAU,EACpB,iIAAiI,EACjI,QAAQ;YACP,oEAAoE,EACrE;YACC,6CAA6C,EAC5C,CAAC,CAAC,eAAe,IAAI,KAAK,KAAK,CAAC;SACjC,EACD,SAAS,CACT,IACG,IAAI,eAER,uBAAC,kBAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,uBAAC,uBAAS,KAAG,IACL,EACT,8CAAK,SAAS,EAAC,oBAAoB,gBAAE,WAAW,CAAC,KAAK,CAAC,IAAO,EAC9D,uBAAC,kBAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,uBAAC,sBAAQ,KAAG,IACJ,KACJ,CACN,CAAC;AACH,CAAC;AArED,sCAqEC"}
1
+ {"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../../src/components/numberStepper/NumberStepper.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAA+C;AAC/C,uDAA4D;AAC5D,gDAA8B;AAE9B,4CAAsC;AAgBtC,SAAgB,aAAa,CAAC,EAYT;;QAZS,EAC7B,KAAK,EACL,QAAQ,EACR,eAAe,EACf,KAAK,EACL,SAAS,EAAE,eAAe,GAAG,CAAC,EAC9B,WAAW,GAAG,sBAAc,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,OAEiB,EADjB,IAAI,cAXsB,oHAY7B,CADO;IAEP,MAAM,KAAK,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,CAAC,EAAE;gBAChB,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1B,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IAEpC,OAAO,CACN,+CACC,SAAS,EAAE,IAAA,cAAU,EACpB,iIAAiI,EACjI,QAAQ;YACP,oEAAoE,EACrE;YACC,6CAA6C,EAC5C,CAAC,CAAC,eAAe,IAAI,KAAK,KAAK,CAAC;SACjC,EACD,SAAS,CACT,IACG,IAAI,eAER,uBAAC,kBAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,uBAAC,uBAAS,KAAG,IACL,EACT,8CAAK,SAAS,EAAC,oBAAoB,gBAAE,WAAW,CAAC,KAAK,CAAC,IAAO,EAC9D,uBAAC,kBAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,uBAAC,sBAAQ,KAAG,IACJ,KACJ,CACN,CAAC;AACH,CAAC;AArED,sCAqEC"}
@@ -15,6 +15,7 @@ import { FormikForm } from './FormikForm.js';
15
15
  import { TextField } from './TextField.js';
16
16
  import { CheckboxField } from './CheckboxField.js';
17
17
  import { SubmitButton } from './SubmitButton.js';
18
+ import { NumberStepperField } from './NumberStepperField.js';
18
19
  const meta = {
19
20
  title: 'Form',
20
21
  component: FormikForm,
@@ -30,8 +31,9 @@ export const Default = {
30
31
  return (_jsxs(FormikForm, Object.assign({ initialValues: {
31
32
  email: '',
32
33
  password: '',
34
+ age: 18,
33
35
  tos: false,
34
- } }, args, { children: [_jsx(TextField, { name: "email", type: "email", label: "Email" }), _jsx(TextField, { name: "password", type: "password", label: "Password" }), _jsx(CheckboxField, { name: "tos", label: "I agree" }), _jsx(SubmitButton, { children: "Sign up" })] })));
36
+ } }, args, { children: [_jsx(TextField, { name: "email", type: "email", label: "Email" }), _jsx(TextField, { name: "password", type: "password", label: "Password" }), _jsx(NumberStepperField, { name: "age", label: "Age", min: 13, max: 100 }), _jsx(CheckboxField, { name: "tos", label: "I agree" }), _jsx(SubmitButton, { children: "Sign up" })] })));
35
37
  },
36
38
  };
37
39
  //# sourceMappingURL=FormikForm.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormikForm.stories.js","sourceRoot":"","sources":["../../../../src/components/forms/FormikForm.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACiC,CAAC;AAEpC,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC7B,MAAM,CAAC,EAA0B;YAA1B,EAAE,aAAa,OAAW,EAAN,IAAI,cAAxB,iBAA0B,CAAF;QAC9B,OAAO,CACN,MAAC,UAAU,kBACV,aAAa,EAAE;gBACd,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,GAAG,EAAE,KAAK;aACV,IACG,IAAI,eAER,KAAC,SAAS,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,GAAG,EACrD,KAAC,SAAS,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,UAAU,GAAG,EAC9D,KAAC,aAAa,IAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,SAAS,GAAG,EAC5C,KAAC,YAAY,0BAAuB,KACxB,CACb,CAAC;IACH,CAAC;CACD,CAAC"}
1
+ {"version":3,"file":"FormikForm.stories.js","sourceRoot":"","sources":["../../../../src/components/forms/FormikForm.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACiC,CAAC;AAEpC,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC7B,MAAM,CAAC,EAA0B;YAA1B,EAAE,aAAa,OAAW,EAAN,IAAI,cAAxB,iBAA0B,CAAF;QAC9B,OAAO,CACN,MAAC,UAAU,kBACV,aAAa,EAAE;gBACd,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,KAAK;aACV,IACG,IAAI,eAER,KAAC,SAAS,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,OAAO,GAAG,EACrD,KAAC,SAAS,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,UAAU,GAAG,EAC9D,KAAC,kBAAkB,IAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAI,EAChE,KAAC,aAAa,IAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,SAAS,GAAG,EAC5C,KAAC,YAAY,0BAAuB,KACxB,CACb,CAAC;IACH,CAAC;CACD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { NumberStepperProps } from '../numberStepper/NumberStepper.js';
2
+ export interface NumberStepperFieldProps extends Omit<NumberStepperProps, 'value' | 'onChange'> {
3
+ name: string;
4
+ label?: string;
5
+ required?: boolean;
6
+ className?: string;
7
+ id?: string;
8
+ onChange?: (value: number) => void;
9
+ }
10
+ export declare function NumberStepperField({ name, label, className, required, id: providedId, onChange, ...rest }: NumberStepperFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ // @unocss-include
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
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ import { useField } from 'formik';
15
+ import { withClassName } from '../../hooks.js';
16
+ import { NumberStepper, } from '../numberStepper/NumberStepper.js';
17
+ import { useIdOrGenerated } from '../../hooks/useIdOrGenerated.js';
18
+ export function NumberStepperField(_a) {
19
+ var { name, label, className, required, id: providedId, onChange } = _a, rest = __rest(_a, ["name", "label", "className", "required", "id", "onChange"]);
20
+ const [_, field, tools] = useField({ name });
21
+ const id = useIdOrGenerated(providedId);
22
+ return (_jsxs(FieldRoot, Object.assign({ className: className }, { children: [label && _jsx(FieldLabel, Object.assign({ htmlFor: id }, { children: label })), _jsx(NumberStepper, Object.assign({ value: field.value, onChange: (v) => {
23
+ tools.setValue(v);
24
+ onChange === null || onChange === void 0 ? void 0 : onChange(v);
25
+ }, id: id }, rest))] })));
26
+ }
27
+ const FieldRoot = withClassName('div', 'layer-components:flex layer-components:flex-col layer-components:gap-2');
28
+ const FieldLabel = withClassName('label', 'layer-components:block layer-components:flex-col layer-components:gap-1 layer-components:text-md layer-components:font-normal layer-components:text-dark-blend layer-components:mt-2px');
29
+ //# sourceMappingURL=NumberStepperField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberStepperField.js","sourceRoot":"","sources":["../../../../src/components/forms/NumberStepperField.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACN,aAAa,GAEb,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAYnE,MAAM,UAAU,kBAAkB,CAAC,EAQT;QARS,EAClC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,EACR,EAAE,EAAE,UAAU,EACd,QAAQ,OAEiB,EADtB,IAAI,cAP2B,4DAQlC,CADO;IAEP,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,CACN,MAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,iBAC7B,KAAK,IAAI,KAAC,UAAU,kBAAC,OAAO,EAAE,EAAE,gBAAG,KAAK,IAAc,EACvD,KAAC,aAAa,kBACb,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACf,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAClB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,CAAC,CAAC;gBACf,CAAC,EACD,EAAE,EAAE,EAAE,IACF,IAAI,EACP,KACS,CACZ,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,aAAa,CAC9B,KAAK,EACL,wCAAwC,CACxC,CAAC;AAEF,MAAM,UAAU,GAAG,aAAa,CAC/B,OAAO,EACP,oFAAoF,CACpF,CAAC"}
@@ -4,3 +4,4 @@ export * from './TextField.js';
4
4
  export * from './FormikForm.js';
5
5
  export * from './hooks.js';
6
6
  export * from './CheckboxField.js';
7
+ export * from './NumberStepperField.jsx';
@@ -5,4 +5,5 @@ export * from './TextField.js';
5
5
  export * from './FormikForm.js';
6
6
  export * from './hooks.js';
7
7
  export * from './CheckboxField.js';
8
+ export * from './NumberStepperField.jsx';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAA"}
@@ -10,5 +10,6 @@ export interface NumberStepperProps {
10
10
  disabled?: boolean;
11
11
  min?: number;
12
12
  max?: number;
13
+ id?: string;
13
14
  }
14
15
  export declare function NumberStepper({ value, onChange, highlightChange, steps, increment: incrementAmount, renderValue, className, disabled, min, max, ...rest }: NumberStepperProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../../src/components/numberStepper/NumberStepper.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,UAAU,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAetC,MAAM,UAAU,aAAa,CAAC,EAYT;;QAZS,EAC7B,KAAK,EACL,QAAQ,EACR,eAAe,EACf,KAAK,EACL,SAAS,EAAE,eAAe,GAAG,CAAC,EAC9B,WAAW,GAAG,cAAc,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,OAEiB,EADjB,IAAI,cAXsB,oHAY7B,CADO;IAEP,MAAM,KAAK,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,CAAC,EAAE;gBAChB,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1B,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IAEpC,OAAO,CACN,6BACC,SAAS,EAAE,UAAU,CACpB,iIAAiI,EACjI,QAAQ;YACP,oEAAoE,EACrE;YACC,6CAA6C,EAC5C,CAAC,CAAC,eAAe,IAAI,KAAK,KAAK,CAAC;SACjC,EACD,SAAS,CACT,IACG,IAAI,eAER,KAAC,MAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,KAAC,SAAS,KAAG,IACL,EACT,4BAAK,SAAS,EAAC,oBAAoB,gBAAE,WAAW,CAAC,KAAK,CAAC,IAAO,EAC9D,KAAC,MAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,KAAC,QAAQ,KAAG,IACJ,KACJ,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../../src/components/numberStepper/NumberStepper.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,UAAU,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAgBtC,MAAM,UAAU,aAAa,CAAC,EAYT;;QAZS,EAC7B,KAAK,EACL,QAAQ,EACR,eAAe,EACf,KAAK,EACL,SAAS,EAAE,eAAe,GAAG,CAAC,EAC9B,WAAW,GAAG,cAAc,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,OAEiB,EADjB,IAAI,cAXsB,oHAY7B,CADO;IAEP,MAAM,KAAK,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK,EAAE;YACV,IAAI,KAAK,KAAK,CAAC,EAAE;gBAChB,OAAO;aACP;YACD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAC3B;aAAM;YACN,QAAQ,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC;SAClC;IACF,CAAC,CAAC;IAEF,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IACpC,MAAM,YAAY,GACjB,CAAC,QAAQ;QACT,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1B,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;IAEpC,OAAO,CACN,6BACC,SAAS,EAAE,UAAU,CACpB,iIAAiI,EACjI,QAAQ;YACP,oEAAoE,EACrE;YACC,6CAA6C,EAC5C,CAAC,CAAC,eAAe,IAAI,KAAK,KAAK,CAAC;SACjC,EACD,SAAS,CACT,IACG,IAAI,eAER,KAAC,MAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,KAAC,SAAS,KAAG,IACL,EACT,4BAAK,SAAS,EAAC,oBAAoB,gBAAE,WAAW,CAAC,KAAK,CAAC,IAAO,EAC9D,KAAC,MAAM,kBAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,YAAY,gBAChE,KAAC,QAAQ,KAAG,IACJ,KACJ,CACN,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a-type/ui",
3
- "version": "1.1.9",
3
+ "version": "1.1.11",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "/dist",
@@ -3,6 +3,7 @@ import { FormikForm } from './FormikForm.js';
3
3
  import { TextField } from './TextField.js';
4
4
  import { CheckboxField } from './CheckboxField.js';
5
5
  import { SubmitButton } from './SubmitButton.js';
6
+ import { NumberStepperField } from './NumberStepperField.js';
6
7
 
7
8
  const meta = {
8
9
  title: 'Form',
@@ -24,12 +25,14 @@ export const Default: Story = {
24
25
  initialValues={{
25
26
  email: '',
26
27
  password: '',
28
+ age: 18,
27
29
  tos: false,
28
30
  }}
29
31
  {...args}
30
32
  >
31
33
  <TextField name="email" type="email" label="Email" />
32
34
  <TextField name="password" type="password" label="Password" />
35
+ <NumberStepperField name="age" label="Age" min={13} max={100} />
33
36
  <CheckboxField name="tos" label="I agree" />
34
37
  <SubmitButton>Sign up</SubmitButton>
35
38
  </FormikForm>
@@ -0,0 +1,54 @@
1
+ import { useField } from 'formik';
2
+ import { withClassName } from '../../hooks.js';
3
+ import {
4
+ NumberStepper,
5
+ NumberStepperProps,
6
+ } from '../numberStepper/NumberStepper.js';
7
+ import { useIdOrGenerated } from '../../hooks/useIdOrGenerated.js';
8
+
9
+ export interface NumberStepperFieldProps
10
+ extends Omit<NumberStepperProps, 'value' | 'onChange'> {
11
+ name: string;
12
+ label?: string;
13
+ required?: boolean;
14
+ className?: string;
15
+ id?: string;
16
+ onChange?: (value: number) => void;
17
+ }
18
+
19
+ export function NumberStepperField({
20
+ name,
21
+ label,
22
+ className,
23
+ required,
24
+ id: providedId,
25
+ onChange,
26
+ ...rest
27
+ }: NumberStepperFieldProps) {
28
+ const [_, field, tools] = useField({ name });
29
+ const id = useIdOrGenerated(providedId);
30
+ return (
31
+ <FieldRoot className={className}>
32
+ {label && <FieldLabel htmlFor={id}>{label}</FieldLabel>}
33
+ <NumberStepper
34
+ value={field.value}
35
+ onChange={(v) => {
36
+ tools.setValue(v);
37
+ onChange?.(v);
38
+ }}
39
+ id={id}
40
+ {...rest}
41
+ />
42
+ </FieldRoot>
43
+ );
44
+ }
45
+
46
+ const FieldRoot = withClassName(
47
+ 'div',
48
+ 'layer-components:(flex flex-col gap-2)',
49
+ );
50
+
51
+ const FieldLabel = withClassName(
52
+ 'label',
53
+ 'layer-components:(block flex-col gap-1 text-md font-normal text-dark-blend mt-2px)',
54
+ );
@@ -4,3 +4,4 @@ export * from './TextField.js';
4
4
  export * from './FormikForm.js';
5
5
  export * from './hooks.js';
6
6
  export * from './CheckboxField.js';
7
+ export * from './NumberStepperField.jsx'
@@ -15,6 +15,7 @@ export interface NumberStepperProps {
15
15
  disabled?: boolean;
16
16
  min?: number;
17
17
  max?: number;
18
+ id?: string;
18
19
  }
19
20
 
20
21
  export function NumberStepper({