@janbox/storefront-ui 1.0.16 → 1.0.18

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 (40) hide show
  1. package/dist/lib/cascader/cascader.d.ts.map +1 -1
  2. package/dist/lib/cascader/cascader.js +17 -10
  3. package/dist/lib/cascader/types.d.ts +2 -3
  4. package/dist/lib/cascader/types.d.ts.map +1 -1
  5. package/dist/lib/loading/block-skeleton/block-skeleton.d.ts +3 -2
  6. package/dist/lib/loading/block-skeleton/block-skeleton.d.ts.map +1 -1
  7. package/dist/lib/loading/block-skeleton/block-skeleton.js +18 -3
  8. package/dist/lib/loading/image-skeleton/image-skeleton.d.ts +1 -1
  9. package/dist/lib/loading/image-skeleton/image-skeleton.d.ts.map +1 -1
  10. package/dist/lib/loading/image-skeleton/image-skeleton.js +8 -2
  11. package/dist/lib/loading/image-skeleton/types.d.ts +2 -1
  12. package/dist/lib/loading/image-skeleton/types.d.ts.map +1 -1
  13. package/dist/lib/loading/loading-overlay/loading-overlay.d.ts +1 -1
  14. package/dist/lib/loading/loading-overlay/loading-overlay.d.ts.map +1 -1
  15. package/dist/lib/loading/loading-overlay/loading-overlay.js +15 -1
  16. package/dist/lib/loading/loading-overlay/types.d.ts +2 -2
  17. package/dist/lib/loading/loading-overlay/types.d.ts.map +1 -1
  18. package/dist/lib/loading/text-skeleton/text-skeleton.d.ts +1 -1
  19. package/dist/lib/loading/text-skeleton/text-skeleton.d.ts.map +1 -1
  20. package/dist/lib/loading/text-skeleton/text-skeleton.js +30 -15
  21. package/dist/lib/loading/text-skeleton/types.d.ts +2 -1
  22. package/dist/lib/loading/text-skeleton/types.d.ts.map +1 -1
  23. package/dist/lib/phone-input/phone-input.d.ts +1 -1
  24. package/dist/lib/phone-input/phone-input.d.ts.map +1 -1
  25. package/dist/lib/phone-input/phone-input.js +158 -145
  26. package/dist/lib/select/select.d.ts.map +1 -1
  27. package/dist/lib/select/select.js +20 -12
  28. package/dist/lib/select/types.d.ts +2 -4
  29. package/dist/lib/select/types.d.ts.map +1 -1
  30. package/dist/lib/table/table-body/table-body.d.ts +1 -1
  31. package/dist/lib/table/table-body/table-body.d.ts.map +1 -1
  32. package/dist/lib/table/table-body/table-body.js +13 -8
  33. package/dist/lib/table/table-body/types.d.ts +2 -2
  34. package/dist/lib/table/table-body/types.d.ts.map +1 -1
  35. package/dist/lib/table/table-head/table-head.d.ts +1 -1
  36. package/dist/lib/table/table-head/table-head.d.ts.map +1 -1
  37. package/dist/lib/table/table-head/table-head.js +12 -8
  38. package/dist/lib/table/table-head/types.d.ts +2 -2
  39. package/dist/lib/table/table-head/types.d.ts.map +1 -1
  40. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cascader.d.ts","sourceRoot":"","sources":["../../../src/lib/cascader/cascader.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAiBxC,eAAO,MAAM,QAAQ,uBAAwB,aAAa,qDAiJzD,CAAC"}
1
+ {"version":3,"file":"cascader.d.ts","sourceRoot":"","sources":["../../../src/lib/cascader/cascader.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgBxC,eAAO,MAAM,QAAQ,uBAAwB,aAAa,qDAwJzD,CAAC"}
@@ -4,13 +4,13 @@ import { isNil } from "lodash-es";
4
4
  import { CascaderFloatingContent } from "./cascader-floating-content.js";
5
5
  import { getCascaderProps } from "./helpers.js";
6
6
  import ArrowDownIcon from "../../assets/svg/arrow-down.svg.js";
7
+ import { mediaQuery } from "../../theme/screens.js";
7
8
  import { getColorVar } from "../../theme/palette.js";
8
9
  import { getTypographyVar } from "../../theme/typography.js";
9
10
  import { truncateStyle } from "../../constants/emotion.js";
10
11
  import { getSizeVariantState } from "../../utils/index.js";
11
12
  import { useControllableState } from "../../hooks/use-controllable-state.js";
12
13
  import { SvgLoader } from "../../components/svg-loader.js";
13
- import { Primitive } from "../primitive/primitive.js";
14
14
  import { Floating } from "../floating/floating/floating.js";
15
15
  import { FloatingTrigger } from "../floating/floating-trigger/floating-trigger.js";
16
16
  import { InputMask as ForwardRefInputMask } from "../input-mask/input-mask.js";
@@ -18,7 +18,7 @@ import { FloatingContent } from "../floating/floating-content/floating-content.j
18
18
  import { FormHelperText } from "../form-helper-text/form-helper-text.js";
19
19
  const DEFAULT_SEPARATOR = "/";
20
20
  const Cascader = ({ ref, ..._props }) => {
21
- var _a;
21
+ var _a, _b, _c, _d, _e;
22
22
  const {
23
23
  placement = "bottom-start",
24
24
  open,
@@ -75,15 +75,22 @@ const Cascader = ({ ref, ..._props }) => {
75
75
  return getTypographyVar(textVariant);
76
76
  };
77
77
  return /* @__PURE__ */ jsxs(
78
- Primitive,
78
+ "div",
79
79
  {
80
80
  ...containerProps,
81
- css: {
82
- display: "flex",
83
- flexDirection: "column",
84
- ...fullWidth ? { width: "100%" } : {}
85
- },
86
- as: "div",
81
+ css: [
82
+ {
83
+ display: "flex",
84
+ flexDirection: "column",
85
+ ...fullWidth ? { width: "100%" } : {}
86
+ },
87
+ (_a = containerProps == null ? void 0 : containerProps.xs) == null ? void 0 : _a.css,
88
+ {
89
+ [mediaQuery("sm")]: (_b = containerProps == null ? void 0 : containerProps.sm) == null ? void 0 : _b.css,
90
+ [mediaQuery("md")]: (_c = containerProps == null ? void 0 : containerProps.md) == null ? void 0 : _c.css,
91
+ [mediaQuery("lg")]: (_d = containerProps == null ? void 0 : containerProps.lg) == null ? void 0 : _d.css
92
+ }
93
+ ],
87
94
  children: [
88
95
  /* @__PURE__ */ jsxs(
89
96
  Floating,
@@ -129,7 +136,7 @@ const Cascader = ({ ref, ..._props }) => {
129
136
  textAlign: "left",
130
137
  ...truncateStyle
131
138
  },
132
- getTextCss((_a = rest.xs) == null ? void 0 : _a.size)
139
+ getTextCss((_e = rest.xs) == null ? void 0 : _e.size)
133
140
  ],
134
141
  children: selectedPath.length > 0 ? /* @__PURE__ */ jsx("div", { children: valueRenderer ?? selectedPath.join(" / ") }) : /* @__PURE__ */ jsx("div", { css: { color: getColorVar("neutral.400") }, children: placeholder })
135
142
  }
@@ -1,10 +1,9 @@
1
1
  import { HTMLAttributes, JSX, ReactNode } from 'react';
2
2
  import { Placement, UseFloatingOptions } from '@floating-ui/react';
3
- import { ResponsiveDesign } from '@janbox/storefront-ui/types';
3
+ import { PropsWithCSS, ResponsiveDesign } from '@janbox/storefront-ui/types';
4
4
  import { InputProps } from '../input';
5
5
  import { InputMaskProps, InputMaskResponsiveProps } from '../input-mask/types';
6
6
  import { ShallowMerge } from '../../types';
7
- import { PrimitiveProps } from '../primitive';
8
7
  export type CascaderResponsiveProps = InputMaskResponsiveProps;
9
8
  export type CascaderOptionValue = string | number;
10
9
  export interface CascaderOption {
@@ -49,7 +48,7 @@ interface CascaderExtendedProps extends ResponsiveDesign<CascaderResponsiveProps
49
48
  /** Helper text below the input */
50
49
  helperText?: string;
51
50
  /** Props for the container div */
52
- containerProps?: PrimitiveProps<JSX.IntrinsicElements['div']>;
51
+ containerProps?: ShallowMerge<JSX.IntrinsicElements['div'], ResponsiveDesign<PropsWithCSS>>;
53
52
  /** Props for the search input */
54
53
  inputProps?: InputProps;
55
54
  /** Whether component takes full width */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/cascader/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,qIAAqI;IACrI,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,gBAAgB,CAAC,uBAAuB,CAAC;IAC/E,gCAAgC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gDAAgD;IAChD,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,wBAAwB;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,yIAAyI;IACzI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACpE,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACxE,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,iDAAiD;IACjD,6CAA6C;IAC7C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,uBAAuB;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,iCAAiC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,eAAe,CAAC;CAC1D;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/cascader/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,qIAAqI;IACrI,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,gBAAgB,CAAC,uBAAuB,CAAC;IAC/E,gCAAgC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gDAAgD;IAChD,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,wBAAwB;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,yIAAyI;IACzI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACpE,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACxE,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,iDAAiD;IACjD,6CAA6C;IAC7C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,uBAAuB;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,cAAc,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,iCAAiC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,eAAe,CAAC;CAC1D;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { JSX } from 'react';
2
- export type BlockSkeletonProps = JSX.IntrinsicElements['div'];
3
- export declare const BlockSkeleton: (props: BlockSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ import { PropsWithCSS, ResponsiveDesign, ShallowMerge } from '../../../types';
3
+ export type BlockSkeletonProps = ShallowMerge<JSX.IntrinsicElements['div'], ResponsiveDesign<PropsWithCSS>>;
4
+ export declare const BlockSkeleton: ({ xs, sm, md, lg, ...props }: BlockSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
4
5
  //# sourceMappingURL=block-skeleton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/block-skeleton/block-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAK5B,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE9D,eAAO,MAAM,aAAa,UAAW,kBAAkB,qDAEtD,CAAC"}
1
+ {"version":3,"file":"block-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/block-skeleton/block-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAI5B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AAE5G,eAAO,MAAM,aAAa,iCAAkC,kBAAkB,qDAgB7E,CAAC"}
@@ -1,9 +1,24 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { animatePulseStyle } from "../../../constants/emotion.js";
3
- import "lodash-es";
3
+ import { mediaQuery } from "../../../theme/screens.js";
4
4
  import { getColorVar } from "../../../theme/palette.js";
5
- const BlockSkeleton = (props) => {
6
- return /* @__PURE__ */ jsx("div", { css: [animatePulseStyle, { borderRadius: 4, backgroundColor: getColorVar("neutral.200") }], ...props });
5
+ const BlockSkeleton = ({ xs, sm, md, lg, ...props }) => {
6
+ return /* @__PURE__ */ jsx(
7
+ "div",
8
+ {
9
+ css: [
10
+ animatePulseStyle,
11
+ { borderRadius: 4, backgroundColor: getColorVar("neutral.200") },
12
+ xs == null ? void 0 : xs.css,
13
+ {
14
+ [mediaQuery("sm")]: sm == null ? void 0 : sm.css,
15
+ [mediaQuery("md")]: md == null ? void 0 : md.css,
16
+ [mediaQuery("lg")]: lg == null ? void 0 : lg.css
17
+ }
18
+ ],
19
+ ...props
20
+ }
21
+ );
7
22
  };
8
23
  export {
9
24
  BlockSkeleton
@@ -1,3 +1,3 @@
1
1
  import { ImageSkeletonProps } from './types';
2
- export declare const ImageSkeleton: (props: ImageSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const ImageSkeleton: ({ xs, sm, md, lg, ...props }: ImageSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=image-skeleton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/image-skeleton/image-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAK7C,eAAO,MAAM,aAAa,UAAW,kBAAkB,qDA4BtD,CAAC"}
1
+ {"version":3,"file":"image-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/image-skeleton/image-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAK7C,eAAO,MAAM,aAAa,iCAAkC,kBAAkB,qDAkC7E,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { animatePulseStyle } from "../../../constants/emotion.js";
3
- import "lodash-es";
3
+ import { mediaQuery } from "../../../theme/screens.js";
4
4
  import { getColorVar } from "../../../theme/palette.js";
5
- const ImageSkeleton = (props) => {
5
+ const ImageSkeleton = ({ xs, sm, md, lg, ...props }) => {
6
6
  return /* @__PURE__ */ jsx(
7
7
  "div",
8
8
  {
@@ -16,6 +16,12 @@ const ImageSkeleton = (props) => {
16
16
  height: "100%",
17
17
  borderRadius: "0.25rem",
18
18
  backgroundColor: getColorVar("neutral.200")
19
+ },
20
+ xs == null ? void 0 : xs.css,
21
+ {
22
+ [mediaQuery("sm")]: sm == null ? void 0 : sm.css,
23
+ [mediaQuery("md")]: md == null ? void 0 : md.css,
24
+ [mediaQuery("lg")]: lg == null ? void 0 : lg.css
19
25
  }
20
26
  ],
21
27
  ...props,
@@ -1,3 +1,4 @@
1
+ import { ShallowMerge, ResponsiveDesign, PropsWithCSS } from '../../../types';
1
2
  import { JSX } from 'react';
2
- export type ImageSkeletonProps = JSX.IntrinsicElements['div'];
3
+ export type ImageSkeletonProps = ShallowMerge<JSX.IntrinsicElements['div'], ResponsiveDesign<PropsWithCSS>>;
3
4
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/image-skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/image-skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { LoadingOverlayProps } from './types';
2
- export declare const LoadingOverlay: ({ isLoading, iconProps, color, style, size, children, ...props }: LoadingOverlayProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const LoadingOverlay: ({ isLoading, iconProps, color, style, size, children, xs, sm, md, lg, ...props }: LoadingOverlayProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=loading-overlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loading-overlay.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/loading-overlay/loading-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAO9C,eAAO,MAAM,cAAc,qEAQxB,mBAAmB,qDAkCrB,CAAC"}
1
+ {"version":3,"file":"loading-overlay.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/loading-overlay/loading-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAQ9C,eAAO,MAAM,cAAc,qFAYxB,mBAAmB,qDA0CrB,CAAC"}
@@ -3,6 +3,8 @@ import { SvgLoader } from "../../../components/svg-loader.js";
3
3
  import { animateSpinStyle } from "../../../constants/emotion.js";
4
4
  import LoadingIcon from "../../../assets/svg/loading-waiting.svg.js";
5
5
  import { getColorShadesByVariant } from "../../../utils/index.js";
6
+ import { mediaQuery } from "../../../theme/screens.js";
7
+ import "../../../theme/palette.js";
6
8
  const LoadingOverlay = ({
7
9
  isLoading = false,
8
10
  iconProps,
@@ -10,6 +12,10 @@ const LoadingOverlay = ({
10
12
  style,
11
13
  size = 32,
12
14
  children,
15
+ xs,
16
+ sm,
17
+ md,
18
+ lg,
13
19
  ...props
14
20
  }) => {
15
21
  const { main } = getColorShadesByVariant(color);
@@ -21,8 +27,16 @@ const LoadingOverlay = ({
21
27
  minHeight: size,
22
28
  ...style
23
29
  },
24
- css: { position: "relative" },
25
30
  ...props,
31
+ css: [
32
+ { position: "relative" },
33
+ xs == null ? void 0 : xs.css,
34
+ {
35
+ [mediaQuery("sm")]: sm == null ? void 0 : sm.css,
36
+ [mediaQuery("md")]: md == null ? void 0 : md.css,
37
+ [mediaQuery("lg")]: lg == null ? void 0 : lg.css
38
+ }
39
+ ],
26
40
  children: [
27
41
  children,
28
42
  isLoading && /* @__PURE__ */ jsx(
@@ -1,9 +1,9 @@
1
1
  import { JSX } from 'react';
2
- import { ColorVariant, ShallowMerge } from '../../../types';
2
+ import { ColorVariant, PropsWithCSS, ResponsiveDesign, ShallowMerge } from '../../../types';
3
3
  export type LoadingOverlayProps = ShallowMerge<JSX.IntrinsicElements['div'], {
4
4
  isLoading?: boolean;
5
5
  size?: number;
6
6
  color?: ColorVariant;
7
7
  iconProps?: JSX.IntrinsicElements['div'];
8
- }>;
8
+ } & ResponsiveDesign<PropsWithCSS>>;
9
9
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/loading-overlay/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAC5C,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B;IACE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;CAC1C,CACF,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/loading-overlay/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAErF,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAC5C,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B;IACE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;CAC1C,GAAG,gBAAgB,CAAC,YAAY,CAAC,CACnC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { TextSkeletonProps } from './types';
2
- export declare const TextSkeleton: (props: TextSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const TextSkeleton: ({ xs, sm, md, lg, ...props }: TextSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=text-skeleton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/text-skeleton/text-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAK5C,eAAO,MAAM,YAAY,UAAW,iBAAiB,qDAcpD,CAAC"}
1
+ {"version":3,"file":"text-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/text-skeleton/text-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAK5C,eAAO,MAAM,YAAY,iCAAkC,iBAAiB,qDAyB3E,CAAC"}
@@ -1,21 +1,36 @@
1
1
  import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
2
  import { animatePulseStyle } from "../../../constants/emotion.js";
3
- import "lodash-es";
3
+ import { mediaQuery } from "../../../theme/screens.js";
4
4
  import { getColorVar } from "../../../theme/palette.js";
5
- const TextSkeleton = (props) => {
6
- return /* @__PURE__ */ jsxs("span", { css: { width: "100%", overflow: "hidden", display: "inline-flex", alignItems: "center" }, ...props, children: [
7
- /* @__PURE__ */ jsx(
8
- "span",
9
- {
10
- css: [
11
- animatePulseStyle,
12
- { flex: "1 1 0%", borderRadius: "0.125rem", lineHeight: 1, backgroundColor: getColorVar("neutral.200") }
13
- ],
14
- children: " "
15
- }
16
- ),
17
- " "
18
- ] });
5
+ const TextSkeleton = ({ xs, sm, md, lg, ...props }) => {
6
+ return /* @__PURE__ */ jsxs(
7
+ "span",
8
+ {
9
+ css: [
10
+ { width: "100%", overflow: "hidden", display: "inline-flex", alignItems: "center" },
11
+ xs == null ? void 0 : xs.css,
12
+ {
13
+ [mediaQuery("sm")]: sm == null ? void 0 : sm.css,
14
+ [mediaQuery("md")]: md == null ? void 0 : md.css,
15
+ [mediaQuery("lg")]: lg == null ? void 0 : lg.css
16
+ }
17
+ ],
18
+ ...props,
19
+ children: [
20
+ /* @__PURE__ */ jsx(
21
+ "span",
22
+ {
23
+ css: [
24
+ animatePulseStyle,
25
+ { flex: "1 1 0%", borderRadius: "0.125rem", lineHeight: 1, backgroundColor: getColorVar("neutral.200") }
26
+ ],
27
+ children: " "
28
+ }
29
+ ),
30
+ " "
31
+ ]
32
+ }
33
+ );
19
34
  };
20
35
  export {
21
36
  TextSkeleton
@@ -1,3 +1,4 @@
1
+ import { PropsWithCSS, ResponsiveDesign, ShallowMerge } from '../../../types';
1
2
  import { JSX } from 'react';
2
- export type TextSkeletonProps = JSX.IntrinsicElements['p'];
3
+ export type TextSkeletonProps = ShallowMerge<JSX.IntrinsicElements['span'], ResponsiveDesign<PropsWithCSS>>;
3
4
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/text-skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/text-skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { PhoneInputProps } from './types';
2
- export declare const PhoneInput: import('react').ForwardRefExoticComponent<Omit<PhoneInputProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
2
+ export declare const PhoneInput: ({ error, defaultValue, value, onChange, containerProps, helperText, disabled, ref, ...props }: PhoneInputProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=phone-input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phone-input.d.ts","sourceRoot":"","sources":["../../../src/lib/phone-input/phone-input.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAmB,MAAM,SAAS,CAAC;AAsD3D,eAAO,MAAM,UAAU,yHAqJtB,CAAC"}
1
+ {"version":3,"file":"phone-input.d.ts","sourceRoot":"","sources":["../../../src/lib/phone-input/phone-input.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAmB,MAAM,SAAS,CAAC;AAsD3D,eAAO,MAAM,UAAU,kGAUpB,eAAe,qDAwJjB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
- import { forwardRef, useState, useRef, useEffect } from "react";
2
+ import { useState, useRef, useEffect } from "react";
3
3
  import { useMergeRefs } from "@floating-ui/react";
4
4
  import { isNil } from "lodash-es";
5
5
  import { phone } from "phone";
@@ -46,157 +46,170 @@ const parsePhoneInputValue = (value) => {
46
46
  countryCode: countryIso2 ?? ((_b = countries.find((country) => country.dial_code === value.dialCode)) == null ? void 0 : _b.code)
47
47
  };
48
48
  };
49
- const PhoneInput = forwardRef(
50
- ({ error, defaultValue, value, onChange, containerProps, helperText, disabled, ...props }, ref) => {
51
- var _a;
52
- const [selectOpen, setSelectOpen] = useState(false);
53
- const [inputFocused, setInputFocused] = useState(false);
54
- const inputRef = useRef(null);
55
- const wrapperRef = useRef(null);
56
- const mergedRefs = useMergeRefs([ref, wrapperRef]);
57
- const [wrapperWidth, setWrapperWidth] = useState(0);
58
- useEffect(() => {
59
- const resizeObserver = new ResizeObserver((entries) => {
60
- var _a2;
61
- const domRect = (_a2 = entries.at(0)) == null ? void 0 : _a2.target.getBoundingClientRect();
62
- if (domRect) {
63
- setWrapperWidth(domRect.width);
64
- }
65
- });
66
- if (wrapperRef.current) {
67
- resizeObserver.observe(wrapperRef.current);
49
+ const PhoneInput = ({
50
+ error,
51
+ defaultValue,
52
+ value,
53
+ onChange,
54
+ containerProps,
55
+ helperText,
56
+ disabled,
57
+ ref,
58
+ ...props
59
+ }) => {
60
+ var _a;
61
+ const [selectOpen, setSelectOpen] = useState(false);
62
+ const [inputFocused, setInputFocused] = useState(false);
63
+ const inputRef = useRef(null);
64
+ const wrapperRef = useRef(null);
65
+ const mergedRefs = useMergeRefs([ref, wrapperRef]);
66
+ const [wrapperWidth, setWrapperWidth] = useState(0);
67
+ useEffect(() => {
68
+ const resizeObserver = new ResizeObserver((entries) => {
69
+ var _a2;
70
+ const domRect = (_a2 = entries.at(0)) == null ? void 0 : _a2.target.getBoundingClientRect();
71
+ if (domRect) {
72
+ setWrapperWidth(domRect.width);
68
73
  }
69
- return () => resizeObserver.disconnect();
70
- }, []);
71
- const [internalValue, setInternalValue] = useControllableState({
72
- defaultValue: parsePhoneInputValue(defaultValue) ?? {
73
- countryCode: (_a = countries.at(0)) == null ? void 0 : _a.code
74
- },
75
- value: parsePhoneInputValue(value)
76
74
  });
77
- const triggerChange = (next) => {
78
- setInternalValue(next);
79
- onChange == null ? void 0 : onChange(next);
80
- };
81
- const onDialCodeChange = (_, option) => {
82
- var _a2;
83
- triggerChange({
84
- ...internalValue,
85
- dialCode: option.dial_code,
86
- countryCode: option.code
87
- });
88
- (_a2 = inputRef.current) == null ? void 0 : _a2.select();
89
- };
90
- const onNationalNumberChange = (e) => {
91
- e.target.value = e.target.value.replace(/[^0-9]/g, "");
92
- triggerChange({
93
- ...internalValue,
94
- nationalNumber: e.target.value
95
- });
96
- };
97
- const inputDisplayValue = (() => {
98
- const originalValue = internalValue.nationalNumber ?? "";
99
- return inputFocused ? originalValue : originalValue.replace(/^(\d{1,3})(\d{0,3})?(\d*)$/, "$1 $2 $3");
100
- })();
101
- return /* @__PURE__ */ jsxs("div", { ...containerProps, css: [{ display: "flex", flexDirection: "column", width: "100%" }, containerProps == null ? void 0 : containerProps.css], children: [
102
- /* @__PURE__ */ jsx(
103
- ForwardRefInputMask,
104
- {
105
- ...props,
106
- css: [
107
- error && !selectOpen && {
108
- "&::after": { borderColor: getColorVar("red.600") }
109
- },
110
- inputFocused && {
111
- "&::after": { borderColor: getColorVar("primary.600") },
112
- boxShadow: `0 0 0 3px ${getColorVar("primary.300")}`
113
- },
114
- disabled && {
115
- backgroundColor: getColorShadesByVariant("neutral").disabledSurface,
116
- pointerEvents: "none"
117
- },
118
- props.css
119
- ],
120
- ref: mergedRefs,
121
- children: /* @__PURE__ */ jsxs("div", { css: { position: "absolute", inset: 0, display: "flex", alignItems: "center" }, children: [
122
- /* @__PURE__ */ jsx(
123
- Select,
124
- {
125
- containerProps: {
126
- css: { width: "fit-content", minWidth: 80 }
127
- },
128
- css: {
129
- paddingRight: 0
130
- },
75
+ if (wrapperRef.current) {
76
+ resizeObserver.observe(wrapperRef.current);
77
+ }
78
+ return () => resizeObserver.disconnect();
79
+ }, []);
80
+ const [internalValue, setInternalValue] = useControllableState({
81
+ defaultValue: parsePhoneInputValue(defaultValue) ?? {
82
+ countryCode: (_a = countries.at(0)) == null ? void 0 : _a.code
83
+ },
84
+ value: parsePhoneInputValue(value)
85
+ });
86
+ const triggerChange = (next) => {
87
+ setInternalValue(next);
88
+ onChange == null ? void 0 : onChange(next);
89
+ };
90
+ const onDialCodeChange = (_, option) => {
91
+ var _a2;
92
+ triggerChange({
93
+ ...internalValue,
94
+ dialCode: option.dial_code,
95
+ countryCode: option.code
96
+ });
97
+ (_a2 = inputRef.current) == null ? void 0 : _a2.select();
98
+ };
99
+ const onNationalNumberChange = (e) => {
100
+ e.target.value = e.target.value.replace(/[^0-9]/g, "");
101
+ triggerChange({
102
+ ...internalValue,
103
+ nationalNumber: e.target.value
104
+ });
105
+ };
106
+ const inputDisplayValue = (() => {
107
+ const originalValue = internalValue.nationalNumber ?? "";
108
+ return inputFocused ? originalValue : originalValue.replace(/^(\d{1,3})(\d{0,3})?(\d*)$/, "$1 $2 $3");
109
+ })();
110
+ return /* @__PURE__ */ jsxs("div", { ...containerProps, css: [{ display: "flex", flexDirection: "column", width: "100%" }, containerProps == null ? void 0 : containerProps.css], children: [
111
+ /* @__PURE__ */ jsx(
112
+ ForwardRefInputMask,
113
+ {
114
+ ...props,
115
+ css: [
116
+ error && !selectOpen && {
117
+ "&::after": { borderColor: getColorVar("red.600") }
118
+ },
119
+ inputFocused && {
120
+ "&::after": { borderColor: getColorVar("primary.600") },
121
+ boxShadow: `0 0 0 3px ${getColorVar("primary.300")}`
122
+ },
123
+ disabled && {
124
+ backgroundColor: getColorShadesByVariant("neutral").disabledSurface,
125
+ pointerEvents: "none"
126
+ },
127
+ props.css
128
+ ],
129
+ ref: mergedRefs,
130
+ children: /* @__PURE__ */ jsxs("div", { css: { position: "absolute", inset: 0, display: "flex", alignItems: "center" }, children: [
131
+ /* @__PURE__ */ jsx(
132
+ Select,
133
+ {
134
+ containerProps: {
131
135
  xs: {
132
- outline: {
133
- top: 0,
134
- right: 0,
135
- bottom: 0,
136
- left: 0
137
- }
138
- },
139
- listProps: {
140
- style: {
141
- width: wrapperWidth
136
+ css: {
137
+ width: "fit-content",
138
+ minWidth: 80
142
139
  }
143
- },
144
- value: internalValue.countryCode ?? null,
145
- onChange: onDialCodeChange,
146
- options: countries,
147
- disabled,
148
- selectedRenderer: SelectedRenderer,
149
- optionLabel: CountryRowLabel,
150
- optionValue: "code",
151
- optionSearchLabel: ["name", "dial_code", "code"],
152
- open: selectOpen,
153
- onOpenChange: setSelectOpen
140
+ }
141
+ },
142
+ css: {
143
+ paddingRight: 0
144
+ },
145
+ xs: {
146
+ outline: {
147
+ top: 0,
148
+ right: 0,
149
+ bottom: 0,
150
+ left: 0
151
+ }
152
+ },
153
+ listProps: {
154
+ style: {
155
+ width: wrapperWidth
156
+ }
157
+ },
158
+ value: internalValue.countryCode ?? null,
159
+ onChange: onDialCodeChange,
160
+ options: countries,
161
+ disabled,
162
+ selectedRenderer: SelectedRenderer,
163
+ optionLabel: CountryRowLabel,
164
+ optionValue: "code",
165
+ optionSearchLabel: ["name", "dial_code", "code"],
166
+ open: selectOpen,
167
+ onOpenChange: setSelectOpen
168
+ }
169
+ ),
170
+ /* @__PURE__ */ jsx(
171
+ "div",
172
+ {
173
+ css: {
174
+ borderRight: "1px solid",
175
+ borderColor: getColorVar("border.default"),
176
+ height: "66.666667%",
177
+ marginLeft: 8,
178
+ marginRight: 8
154
179
  }
155
- ),
156
- /* @__PURE__ */ jsx(
157
- "div",
158
- {
180
+ }
181
+ ),
182
+ /* @__PURE__ */ jsx(
183
+ Input,
184
+ {
185
+ value: inputDisplayValue,
186
+ disabled,
187
+ containerProps: {
188
+ css: { flex: 1 }
189
+ },
190
+ mainProps: {
191
+ style: {
192
+ paddingLeft: 0,
193
+ boxShadow: "none"
194
+ }
195
+ },
196
+ onChange: onNationalNumberChange,
197
+ xs: {
159
198
  css: {
160
- borderRight: "1px solid",
161
- borderColor: getColorVar("border.default"),
162
- height: "66.666667%",
163
- marginLeft: 8,
164
- marginRight: 8
199
+ borderWidth: 0
165
200
  }
166
- }
167
- ),
168
- /* @__PURE__ */ jsx(
169
- Input,
170
- {
171
- value: inputDisplayValue,
172
- disabled,
173
- containerProps: {
174
- css: { flex: 1 }
175
- },
176
- mainProps: {
177
- style: {
178
- paddingLeft: 0,
179
- boxShadow: "none"
180
- }
181
- },
182
- onChange: onNationalNumberChange,
183
- xs: {
184
- css: {
185
- borderWidth: 0
186
- }
187
- },
188
- onFocus: () => setInputFocused(true),
189
- onBlur: () => setInputFocused(false),
190
- ref: inputRef
191
- }
192
- )
193
- ] })
194
- }
195
- ),
196
- /* @__PURE__ */ jsx(FormHelperText, { error, children: helperText })
197
- ] });
198
- }
199
- );
201
+ },
202
+ onFocus: () => setInputFocused(true),
203
+ onBlur: () => setInputFocused(false),
204
+ ref: inputRef
205
+ }
206
+ )
207
+ ] })
208
+ }
209
+ ),
210
+ /* @__PURE__ */ jsx(FormHelperText, { error, children: helperText })
211
+ ] });
212
+ };
200
213
  export {
201
214
  PhoneInput
202
215
  };
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/lib/select/select.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAkBzD,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,iBAAiB,sBAAsB,CAAC,SAAS,MAAM,8BAGrF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,qDAwUnB,CAAC"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/lib/select/select.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAkBzD,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,iBAAiB,sBAAsB,CAAC,SAAS,MAAM,8BAGrF,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,qDA+UnB,CAAC"}
@@ -9,6 +9,7 @@ import { useControllableState } from "../../hooks/use-controllable-state.js";
9
9
  import { getResponsiveProp, getSizeVariantState } from "../../utils/index.js";
10
10
  import ArrowDownIcon from "../../assets/svg/arrow-down.svg.js";
11
11
  import CheckIcon from "../../assets/svg/done-check.svg.js";
12
+ import { mediaQuery } from "../../theme/screens.js";
12
13
  import { getColorVar } from "../../theme/palette.js";
13
14
  import { getTypographyVar } from "../../theme/typography.js";
14
15
  import { ensureArray, matchSearch } from "../../utils/common.js";
@@ -23,7 +24,7 @@ const Select = ({
23
24
  ref,
24
25
  ...props
25
26
  }) => {
26
- var _a, _b, _c, _d, _e;
27
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
27
28
  const {
28
29
  placement = "bottom-start",
29
30
  open,
@@ -204,12 +205,19 @@ const Select = ({
204
205
  "div",
205
206
  {
206
207
  ...containerProps,
207
- css: {
208
- display: "flex",
209
- flexDirection: "column",
210
- ...fullWidth ? { width: "100%" } : {},
211
- ...containerProps == null ? void 0 : containerProps.css
212
- },
208
+ css: [
209
+ {
210
+ display: "flex",
211
+ flexDirection: "column"
212
+ },
213
+ fullWidth && { width: "100%" },
214
+ (_a = containerProps == null ? void 0 : containerProps.xs) == null ? void 0 : _a.css,
215
+ {
216
+ [mediaQuery("sm")]: (_b = containerProps == null ? void 0 : containerProps.sm) == null ? void 0 : _b.css,
217
+ [mediaQuery("md")]: (_c = containerProps == null ? void 0 : containerProps.md) == null ? void 0 : _c.css,
218
+ [mediaQuery("lg")]: (_d = containerProps == null ? void 0 : containerProps.lg) == null ? void 0 : _d.css
219
+ }
220
+ ],
213
221
  children: [
214
222
  /* @__PURE__ */ jsxs(
215
223
  Floating,
@@ -263,7 +271,7 @@ const Select = ({
263
271
  {
264
272
  css: [
265
273
  { flex: 1, textAlign: "left", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" },
266
- getTextCss((_a = rest.xs) == null ? void 0 : _a.size)
274
+ getTextCss((_e = rest.xs) == null ? void 0 : _e.size)
267
275
  ],
268
276
  children: selectedOption ? /* @__PURE__ */ jsx(Fragment, { children: selectedRenderer ? selectedRenderer(selectedOption) : getOptionLabel(selectedOption) }) : /* @__PURE__ */ jsx("span", { css: { color: getColorVar("neutral.400"), display: "block" }, children: placeholder })
269
277
  }
@@ -288,10 +296,10 @@ const Select = ({
288
296
  searchable && /* @__PURE__ */ jsx("div", { css: { paddingLeft: 8, paddingRight: 8, paddingBottom: 12, position: "relative" }, children: /* @__PURE__ */ jsx(
289
297
  Input,
290
298
  {
291
- xs: { size: (_b = rest.xs) == null ? void 0 : _b.size },
292
- sm: { size: (_c = rest.sm) == null ? void 0 : _c.size },
293
- md: { size: (_d = rest.md) == null ? void 0 : _d.size },
294
- lg: { size: (_e = rest.lg) == null ? void 0 : _e.size },
299
+ xs: { size: (_f = rest.xs) == null ? void 0 : _f.size },
300
+ sm: { size: (_g = rest.sm) == null ? void 0 : _g.size },
301
+ md: { size: (_h = rest.md) == null ? void 0 : _h.size },
302
+ lg: { size: (_i = rest.lg) == null ? void 0 : _i.size },
295
303
  value: inputValue,
296
304
  ...inputProps,
297
305
  onChange: onInputChange,
@@ -3,7 +3,7 @@ import { Interpolation } from '@emotion/react';
3
3
  import { Placement, UseFloatingOptions } from '@floating-ui/react';
4
4
  import { InputProps } from '../input';
5
5
  import { InputMaskProps, InputMaskResponsiveProps } from '../input-mask/types';
6
- import { ResponsiveDesign, ShallowMerge } from '../../types';
6
+ import { PropsWithCSS, ResponsiveDesign, ShallowMerge } from '../../types';
7
7
  export type SelectResponsiveProps = InputMaskResponsiveProps;
8
8
  export type SelectOptionValue = string | number | boolean;
9
9
  interface SelectExtendedProps<V extends SelectOptionValue, O extends object> extends ResponsiveDesign<SelectResponsiveProps> {
@@ -24,9 +24,7 @@ interface SelectExtendedProps<V extends SelectOptionValue, O extends object> ext
24
24
  selectedRenderer?: (option: O) => React.ReactNode;
25
25
  error?: boolean;
26
26
  helperText?: string;
27
- containerProps?: JSX.IntrinsicElements['div'] & {
28
- css?: Interpolation;
29
- };
27
+ containerProps?: ShallowMerge<JSX.IntrinsicElements['div'], ResponsiveDesign<PropsWithCSS>>;
30
28
  inputProps?: InputProps;
31
29
  fullWidth?: boolean;
32
30
  lazy?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/select/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,UAAU,mBAAmB,CAC3B,CAAC,SAAS,iBAAiB,EAC3B,CAAC,SAAS,MAAM,CAChB,SAAQ,gBAAgB,CAAC,qBAAqB,CAAC;IAC/C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAClF,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG;QAC9C,GAAG,CAAC,EAAE,aAAa,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,YAAY,CAChH,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAC/C,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAC1B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/select/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,UAAU,mBAAmB,CAC3B,CAAC,SAAS,iBAAiB,EAC3B,CAAC,SAAS,MAAM,CAChB,SAAQ,gBAAgB,CAAC,qBAAqB,CAAC;IAC/C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAClF,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,YAAY,CAChH,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAC/C,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAC1B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { TableBodyProps } from './types';
2
- export declare const TableBody: ({ children, ...props }: TableBodyProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const TableBody: ({ xs, sm, md, lg, children, ref, ...props }: TableBodyProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=table-body.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-body.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-body/table-body.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,eAAO,MAAM,SAAS,2BAA4B,cAAc,qDA0B/D,CAAC"}
1
+ {"version":3,"file":"table-body.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-body/table-body.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,SAAS,gDAAiD,cAAc,qDAgCpF,CAAC"}
@@ -1,14 +1,12 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
- import "lodash-es";
2
+ import { mediaQuery } from "../../../theme/screens.js";
3
3
  import { getColorVar } from "../../../theme/palette.js";
4
- import { Primitive } from "../../primitive/primitive.js";
5
- const TableBody = ({ children, ...props }) => {
4
+ const TableBody = ({ xs, sm, md, lg, children, ref, ...props }) => {
6
5
  return /* @__PURE__ */ jsx(
7
- Primitive,
6
+ "tbody",
8
7
  {
9
- as: "tbody",
10
- xs: {
11
- css: {
8
+ css: [
9
+ {
12
10
  "& > tr": {
13
11
  position: "relative",
14
12
  "&::after": {
@@ -22,9 +20,16 @@ const TableBody = ({ children, ...props }) => {
22
20
  borderBottomColor: getColorVar("neutral.100")
23
21
  }
24
22
  }
23
+ },
24
+ xs == null ? void 0 : xs.css,
25
+ {
26
+ [mediaQuery("sm")]: sm == null ? void 0 : sm.css,
27
+ [mediaQuery("md")]: md == null ? void 0 : md.css,
28
+ [mediaQuery("lg")]: lg == null ? void 0 : lg.css
25
29
  }
26
- },
30
+ ],
27
31
  ...props,
32
+ ref,
28
33
  children
29
34
  }
30
35
  );
@@ -1,4 +1,4 @@
1
- import { PrimitiveProps } from '../../primitive';
1
+ import { ShallowMerge, ResponsiveDesign, PropsWithCSS } from '../../../types';
2
2
  import { JSX } from 'react';
3
- export type TableBodyProps = PrimitiveProps<JSX.IntrinsicElements["tbody"]>;
3
+ export type TableBodyProps = ShallowMerge<JSX.IntrinsicElements['tbody'], ResponsiveDesign<PropsWithCSS>>;
4
4
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-body/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-body/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { TableHeadProps } from './types';
2
- export declare const TableHead: ({ children, ...props }: TableHeadProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const TableHead: ({ xs, sm, md, lg, children, ...props }: TableHeadProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=table-head.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-head.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-head/table-head.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,eAAO,MAAM,SAAS,2BAA4B,cAAc,qDAyB/D,CAAC"}
1
+ {"version":3,"file":"table-head.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-head/table-head.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,eAAO,MAAM,SAAS,2CAA4C,cAAc,qDA8B/E,CAAC"}
@@ -1,14 +1,12 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
- import "lodash-es";
2
+ import { mediaQuery } from "../../../theme/screens.js";
3
3
  import { getColorVar } from "../../../theme/palette.js";
4
- import { Primitive } from "../../primitive/primitive.js";
5
- const TableHead = ({ children, ...props }) => {
4
+ const TableHead = ({ xs, sm, md, lg, children, ...props }) => {
6
5
  return /* @__PURE__ */ jsx(
7
- Primitive,
6
+ "thead",
8
7
  {
9
- as: "thead",
10
- xs: {
11
- css: {
8
+ css: [
9
+ {
12
10
  position: "relative",
13
11
  fontWeight: 500,
14
12
  "&::after": {
@@ -21,8 +19,14 @@ const TableHead = ({ children, ...props }) => {
21
19
  borderTopStyle: "solid",
22
20
  borderTopColor: getColorVar("neutral.200")
23
21
  }
22
+ },
23
+ xs == null ? void 0 : xs.css,
24
+ {
25
+ [mediaQuery("sm")]: sm == null ? void 0 : sm.css,
26
+ [mediaQuery("md")]: md == null ? void 0 : md.css,
27
+ [mediaQuery("lg")]: lg == null ? void 0 : lg.css
24
28
  }
25
- },
29
+ ],
26
30
  ...props,
27
31
  children
28
32
  }
@@ -1,4 +1,4 @@
1
- import { PrimitiveProps } from '../../primitive';
1
+ import { ShallowMerge, ResponsiveDesign, PropsWithCSS } from '../../../types';
2
2
  import { JSX } from 'react';
3
- export type TableHeadProps = PrimitiveProps<JSX.IntrinsicElements["thead"]>;
3
+ export type TableHeadProps = ShallowMerge<JSX.IntrinsicElements['thead'], ResponsiveDesign<PropsWithCSS>>;
4
4
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-head/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/table/table-head/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@janbox/storefront-ui",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "Storefront UI component library for Janbox",
5
5
  "author": "Janbox",
6
6
  "keywords": [