@janbox/storefront-ui 2.0.3 → 2.0.5

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 (57) hide show
  1. package/dist/hooks/index.d.ts +1 -0
  2. package/dist/hooks/index.d.ts.map +1 -1
  3. package/dist/hooks/index.js +2 -0
  4. package/dist/hooks/use-formatter/index.d.ts +8 -0
  5. package/dist/hooks/use-formatter/index.d.ts.map +1 -0
  6. package/dist/hooks/use-formatter/index.js +38 -0
  7. package/dist/index.js +4 -0
  8. package/dist/lib/accordion/accordion/accordion.js +7 -7
  9. package/dist/lib/accordion/accordion/types.d.ts +2 -2
  10. package/dist/lib/accordion/accordion/types.d.ts.map +1 -1
  11. package/dist/lib/button/button.d.ts.map +1 -1
  12. package/dist/lib/button/button.js +74 -63
  13. package/dist/lib/checkbox/checkbox.d.ts.map +1 -1
  14. package/dist/lib/checkbox/checkbox.js +3 -2
  15. package/dist/lib/count-up/count-up.js +2 -3
  16. package/dist/lib/icon-button/icon-button.js +1 -1
  17. package/dist/lib/index.d.ts +1 -0
  18. package/dist/lib/index.d.ts.map +1 -1
  19. package/dist/lib/loading/block-skeleton/block-skeleton.d.ts +3 -3
  20. package/dist/lib/loading/block-skeleton/block-skeleton.d.ts.map +1 -1
  21. package/dist/lib/loading/block-skeleton/block-skeleton.js +10 -9
  22. package/dist/lib/loading/image-skeleton/image-skeleton.d.ts +1 -1
  23. package/dist/lib/loading/image-skeleton/image-skeleton.d.ts.map +1 -1
  24. package/dist/lib/loading/image-skeleton/image-skeleton.js +14 -16
  25. package/dist/lib/loading/image-skeleton/types.d.ts +2 -2
  26. package/dist/lib/loading/image-skeleton/types.d.ts.map +1 -1
  27. package/dist/lib/loading/text-skeleton/text-skeleton.d.ts +1 -1
  28. package/dist/lib/loading/text-skeleton/text-skeleton.d.ts.map +1 -1
  29. package/dist/lib/loading/text-skeleton/text-skeleton.js +34 -22
  30. package/dist/lib/loading/text-skeleton/types.d.ts +2 -2
  31. package/dist/lib/loading/text-skeleton/types.d.ts.map +1 -1
  32. package/dist/lib/multiple-select/multiple-select.d.ts.map +1 -1
  33. package/dist/lib/multiple-select/multiple-select.js +1 -1
  34. package/dist/lib/price-label/helpers.d.ts +3 -0
  35. package/dist/lib/price-label/helpers.d.ts.map +1 -0
  36. package/dist/lib/price-label/helpers.js +12 -0
  37. package/dist/lib/price-label/index.d.ts +4 -0
  38. package/dist/lib/price-label/index.d.ts.map +1 -0
  39. package/dist/lib/price-label/price-label.d.ts +3 -0
  40. package/dist/lib/price-label/price-label.d.ts.map +1 -0
  41. package/dist/lib/price-label/price-label.js +119 -0
  42. package/dist/lib/price-label/types.d.ts +24 -0
  43. package/dist/lib/price-label/types.d.ts.map +1 -0
  44. package/dist/lib/stepper/stepper.js +1 -1
  45. package/dist/lib/text/text.d.ts +1 -1
  46. package/dist/lib/text/text.d.ts.map +1 -1
  47. package/dist/lib/text/text.js +22 -19
  48. package/dist/lib/time-picker/time-picker.d.ts.map +1 -1
  49. package/dist/lib/time-picker/time-picker.js +1 -1
  50. package/dist/theme/typography.d.ts +1 -1
  51. package/dist/theme/typography.d.ts.map +1 -1
  52. package/dist/theme/typography.js +3 -0
  53. package/dist/utils/common.js +0 -11
  54. package/dist/utils/index.d.ts +15 -3
  55. package/dist/utils/index.d.ts.map +1 -1
  56. package/dist/utils/index.js +52 -3
  57. package/package.json +1 -1
@@ -7,4 +7,5 @@ export * from './use-query-params';
7
7
  export * from './use-first-mount-state';
8
8
  export * from './use-update-effect';
9
9
  export * from './use-deep-compare-effect';
10
+ export * from './use-formatter';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC"}
@@ -7,11 +7,13 @@ import { useQueryParams } from "./use-query-params.js";
7
7
  import { useFirstMountState } from "./use-first-mount-state/index.js";
8
8
  import { useUpdateEffect } from "./use-update-effect/index.js";
9
9
  import { useDeepCompareEffect } from "./use-deep-compare-effect/index.js";
10
+ import { useFormatter } from "./use-formatter/index.js";
10
11
  export {
11
12
  useControllableState,
12
13
  useCountdownTimer,
13
14
  useDeepCompareEffect,
14
15
  useFirstMountState,
16
+ useFormatter,
15
17
  useHoverLineEffect,
16
18
  useQueryParams,
17
19
  useRippleEffect,
@@ -0,0 +1,8 @@
1
+ import { FormatPriceOptions, FormatDateTimeOptions, FormatNumberOptions } from '../../utils';
2
+ import { SetOptional } from 'type-fest';
3
+ export declare const useFormatter: () => {
4
+ formatNumber: (value: number, options?: Partial<FormatNumberOptions>) => string;
5
+ formatDateTime: (value: Date | string | number, options: SetOptional<FormatDateTimeOptions, "lng">) => string;
6
+ formatPrice: (value: number, options: SetOptional<FormatPriceOptions, "lng">) => string;
7
+ };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-formatter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAElB,qBAAqB,EAErB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,eAAO,MAAM,YAAY;0BAIb,MAAM,YAAY,OAAO,CAAC,mBAAmB,CAAC;4BAO9C,IAAI,GAAG,MAAM,GAAG,MAAM,WAAW,WAAW,CAAC,qBAAqB,EAAE,KAAK,CAAC;yBAU1E,MAAM,WAAW,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC;CAclE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { formatNumber, formatDateTime, formatPrice } from "../../utils/index.js";
2
+ import { useCallback, useMemo } from "react";
3
+ import { useTranslation } from "react-i18next";
4
+ const useFormatter = () => {
5
+ const { i18n } = useTranslation();
6
+ const formatNumberFn = useCallback(
7
+ (value, options) => {
8
+ return formatNumber(value, { lng: i18n.language, ...options });
9
+ },
10
+ [i18n.language]
11
+ );
12
+ const formatDateTimeFn = useCallback(
13
+ (value, options) => {
14
+ return formatDateTime(value, {
15
+ ...options,
16
+ lng: options.lng ?? i18n.language
17
+ });
18
+ },
19
+ [i18n.language]
20
+ );
21
+ const formatPriceFn = useCallback(
22
+ (value, options) => {
23
+ return formatPrice(value, { ...options, lng: options.lng ?? i18n.language });
24
+ },
25
+ [i18n.language]
26
+ );
27
+ return useMemo(
28
+ () => ({
29
+ formatNumber: formatNumberFn,
30
+ formatDateTime: formatDateTimeFn,
31
+ formatPrice: formatPriceFn
32
+ }),
33
+ [formatNumberFn, formatDateTimeFn, formatPriceFn]
34
+ );
35
+ };
36
+ export {
37
+ useFormatter
38
+ };
package/dist/index.js CHANGED
@@ -72,6 +72,7 @@ import { Popover } from "./lib/popover/popover/popover.js";
72
72
  import { PopoverClose } from "./lib/popover/popover-close/popover-close.js";
73
73
  import { PopoverContent } from "./lib/popover/popover-content/popover-content.js";
74
74
  import { PopoverTrigger } from "./lib/popover/popover-trigger/popover-trigger.js";
75
+ import { PriceLabel } from "./lib/price-label/price-label.js";
75
76
  import { Primitive } from "./lib/primitive/primitive.js";
76
77
  import { Progress } from "./lib/progress/progress.js";
77
78
  import { RadioButton } from "./lib/radio-button/radio-button.js";
@@ -126,6 +127,7 @@ import { getListItemProps } from "./lib/unordered-list/list-item/helpers.js";
126
127
  import { getMarqueeProps } from "./lib/marquee/marquee/helpers.js";
127
128
  import { getMultipleSelectProps } from "./lib/multiple-select/helpers.js";
128
129
  import { getPageRange, getPaginationProps } from "./lib/pagination/helpers.js";
130
+ import { getPriceLabelProps } from "./lib/price-label/helpers.js";
129
131
  import { getRadioButtonProps } from "./lib/radio-button/helpers.js";
130
132
  import { getSwiperProps } from "./lib/swiper/swiper/helpers.js";
131
133
  import { getTabListProps } from "./lib/tabs/tab-list/helpers.js";
@@ -215,6 +217,7 @@ export {
215
217
  PopoverClose,
216
218
  PopoverContent,
217
219
  PopoverTrigger,
220
+ PriceLabel,
218
221
  Primitive,
219
222
  Progress,
220
223
  RadioButton,
@@ -277,6 +280,7 @@ export {
277
280
  getMultipleSelectProps,
278
281
  getPageRange,
279
282
  getPaginationProps,
283
+ getPriceLabelProps,
280
284
  getRadioButtonProps,
281
285
  getSwiperProps,
282
286
  getTabListProps,
@@ -6,8 +6,8 @@ import { getAccordionProps, getAccordionDataAttributes, AccordionContext } from
6
6
  import { AccordionDataAttributes } from "./types.js";
7
7
  import { Booleanish } from "../../../constants/index.js";
8
8
  import { useControllableState } from "../../../hooks/use-controllable-state.js";
9
- import { createSxInterpolation } from "../../../utils/stylesheet.js";
10
9
  import { getAccordionGroupDataAttributes } from "../accordion-group/helpers.js";
10
+ import { Primitive } from "../../primitive/primitive.js";
11
11
  const Accordion = (_props) => {
12
12
  const {
13
13
  sx,
@@ -76,18 +76,18 @@ const Accordion = (_props) => {
76
76
  };
77
77
  }, [onOpenChange]);
78
78
  return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
79
- "div",
79
+ Primitive,
80
80
  {
81
- css: createSxInterpolation({
81
+ ...{
82
+ [AccordionDataAttributes.OpenState]: open
83
+ },
84
+ ...rest,
85
+ sx: {
82
86
  width: "100%",
83
87
  display: "flex",
84
88
  flexDirection: "column",
85
89
  ...sx
86
- }),
87
- ...{
88
- [AccordionDataAttributes.OpenState]: open
89
90
  },
90
- ...rest,
91
91
  ref: mergedRefs,
92
92
  children
93
93
  }
@@ -1,5 +1,5 @@
1
1
  import { JSX } from 'react';
2
- import { PropsWithSx, ShallowMerge } from '../../../types';
2
+ import { PrimitiveProps } from '../../primitive';
3
3
  export declare enum AccordionDataAttributes {
4
4
  OpenState = "data-open"
5
5
  }
@@ -8,5 +8,5 @@ export interface AccordionExtendedProps {
8
8
  open?: boolean;
9
9
  onOpenChange?: (open: boolean) => void;
10
10
  }
11
- export type AccordionProps = ShallowMerge<JSX.IntrinsicElements['div'], PropsWithSx<AccordionExtendedProps>>;
11
+ export type AccordionProps = PrimitiveProps<JSX.IntrinsicElements['div'] & AccordionExtendedProps>;
12
12
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/accordion/accordion/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEpD,oBAAY,uBAAuB;IACjC,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/accordion/accordion/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,oBAAY,uBAAuB;IACjC,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/lib/button/button.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAyB,MAAM,SAAS,CAAC;AAW7D,eAAO,MAAM,MAAM,iCAAkC,WAAW,qDAqN/D,CAAC"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/lib/button/button.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAyB,MAAM,SAAS,CAAC;AAW7D,eAAO,MAAM,MAAM,iCAAkC,WAAW,qDA4N/D,CAAC"}
@@ -140,69 +140,80 @@ const Button = ({ children, ref, ..._props }) => {
140
140
  }
141
141
  }
142
142
  };
143
- return /* @__PURE__ */ jsxs("button", { css, disabled, onClick, className: cn(rest.className, className), ref: mergedRef, children: [
144
- prefix,
145
- !!startIcon && /* @__PURE__ */ jsx(
146
- Icon,
147
- {
148
- size: getSizeVariantState(size).iconSize,
149
- ...startIcon,
150
- css: {
151
- flexShrink: 0
152
- },
153
- sm: {
154
- size: getSizeVariantState(sm == null ? void 0 : sm.size).iconSize,
155
- ...startIcon.sm
156
- },
157
- md: {
158
- size: getSizeVariantState(md == null ? void 0 : md.size).iconSize,
159
- ...startIcon.md
160
- },
161
- lg: {
162
- size: getSizeVariantState(lg == null ? void 0 : lg.size).iconSize,
163
- ...startIcon.lg
164
- }
165
- }
166
- ),
167
- /* @__PURE__ */ jsx(Fragment, { children: isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { dangerouslySetInnerHTML, css: truncateStyle, children }) }),
168
- !!endIcon && /* @__PURE__ */ jsx(
169
- Icon,
170
- {
171
- size: getSizeVariantState(size).iconSize,
172
- ...endIcon,
173
- css: {
174
- flexShrink: 0
175
- },
176
- sm: {
177
- size: getSizeVariantState(sm == null ? void 0 : sm.size).iconSize,
178
- ...endIcon.sm
179
- },
180
- md: {
181
- size: getSizeVariantState(md == null ? void 0 : md.size).iconSize,
182
- ...endIcon.md
183
- },
184
- lg: {
185
- size: getSizeVariantState(lg == null ? void 0 : lg.size).iconSize,
186
- ...endIcon.lg
187
- }
188
- }
189
- ),
190
- suffix,
191
- isLoading && /* @__PURE__ */ jsx(
192
- "span",
193
- {
194
- "data-loading": true,
195
- css: {
196
- position: "absolute",
197
- inset: 0,
198
- display: "flex",
199
- alignItems: "center",
200
- justifyContent: "center"
201
- },
202
- children: /* @__PURE__ */ jsx(Icon, { css: animateSpinStyle, source: LoadingIcon })
203
- }
204
- )
205
- ] });
143
+ return /* @__PURE__ */ jsxs(
144
+ "button",
145
+ {
146
+ css,
147
+ disabled,
148
+ ...rest,
149
+ onClick,
150
+ className: cn(rest.className, className),
151
+ ref: mergedRef,
152
+ children: [
153
+ prefix,
154
+ !!startIcon && /* @__PURE__ */ jsx(
155
+ Icon,
156
+ {
157
+ size: getSizeVariantState(size).iconSize,
158
+ ...startIcon,
159
+ css: {
160
+ flexShrink: 0
161
+ },
162
+ sm: {
163
+ size: getSizeVariantState(sm == null ? void 0 : sm.size).iconSize,
164
+ ...startIcon.sm
165
+ },
166
+ md: {
167
+ size: getSizeVariantState(md == null ? void 0 : md.size).iconSize,
168
+ ...startIcon.md
169
+ },
170
+ lg: {
171
+ size: getSizeVariantState(lg == null ? void 0 : lg.size).iconSize,
172
+ ...startIcon.lg
173
+ }
174
+ }
175
+ ),
176
+ /* @__PURE__ */ jsx(Fragment, { children: isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { dangerouslySetInnerHTML, css: truncateStyle, children }) }),
177
+ !!endIcon && /* @__PURE__ */ jsx(
178
+ Icon,
179
+ {
180
+ size: getSizeVariantState(size).iconSize,
181
+ ...endIcon,
182
+ css: {
183
+ flexShrink: 0
184
+ },
185
+ sm: {
186
+ size: getSizeVariantState(sm == null ? void 0 : sm.size).iconSize,
187
+ ...endIcon.sm
188
+ },
189
+ md: {
190
+ size: getSizeVariantState(md == null ? void 0 : md.size).iconSize,
191
+ ...endIcon.md
192
+ },
193
+ lg: {
194
+ size: getSizeVariantState(lg == null ? void 0 : lg.size).iconSize,
195
+ ...endIcon.lg
196
+ }
197
+ }
198
+ ),
199
+ suffix,
200
+ isLoading && /* @__PURE__ */ jsx(
201
+ "span",
202
+ {
203
+ "data-loading": true,
204
+ css: {
205
+ position: "absolute",
206
+ inset: 0,
207
+ display: "flex",
208
+ alignItems: "center",
209
+ justifyContent: "center"
210
+ },
211
+ children: /* @__PURE__ */ jsx(Icon, { css: animateSpinStyle, source: LoadingIcon })
212
+ }
213
+ )
214
+ ]
215
+ }
216
+ );
206
217
  };
207
218
  const createStyle = ({ size } = {}) => {
208
219
  return [getButtonCssBySize(size)];
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/lib/checkbox/checkbox.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AASxC,eAAO,MAAM,QAAQ,iFAQlB,aAAa,qDAkCf,CAAC"}
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../src/lib/checkbox/checkbox.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AASxC,eAAO,MAAM,QAAQ,iFAQlB,aAAa,qDAmCf,CAAC"}
@@ -32,9 +32,10 @@ const Checkbox = ({
32
32
  as: "label",
33
33
  ...containerProps,
34
34
  className: cn(classes.checkbox__container, containerProps == null ? void 0 : containerProps.className),
35
- css: {
35
+ sx: {
36
36
  "--checkbox-color": main,
37
- "--checkbox-contrast-text": contrastText
37
+ "--checkbox-contrast-text": contrastText,
38
+ ...containerProps == null ? void 0 : containerProps.sx
38
39
  },
39
40
  children: [
40
41
  /* @__PURE__ */ jsxs("span", { className: classes.checkbox__main, children: [
@@ -3,9 +3,8 @@ import { forwardRef, useRef, useEffect } from "react";
3
3
  import { useMergeRefs } from "@floating-ui/react";
4
4
  import { useMotionValue, useInView, useTransform, animate, motion } from "motion/react";
5
5
  import { useTranslation } from "react-i18next";
6
- import "lodash-es";
7
- import "../../theme/palette.js";
8
- import { getDecimalDigits, formatNumber } from "../../utils/common.js";
6
+ import { formatNumber } from "../../utils/index.js";
7
+ import { getDecimalDigits } from "../../utils/common.js";
9
8
  const CountUp = forwardRef(
10
9
  ({ from = 0, to, duration = 2, formatNumberOptions, ...props }, ref) => {
11
10
  const rootRef = useRef(null);
@@ -101,7 +101,7 @@ const IconButton = forwardRef((_props, ref) => {
101
101
  var _a;
102
102
  (_a = rest.onClick) == null ? void 0 : _a.call(rest, e);
103
103
  };
104
- return /* @__PURE__ */ jsxs("button", { css, className: cn(rest.className, className), onClick, ref: mergedRef, children: [
104
+ return /* @__PURE__ */ jsxs("button", { css, ...rest, className: cn(rest.className, className), onClick, ref: mergedRef, children: [
105
105
  !!icon && /* @__PURE__ */ jsx(
106
106
  Icon,
107
107
  {
@@ -57,4 +57,5 @@ export * from './video';
57
57
  export * from './lightbox';
58
58
  export * from './cascader';
59
59
  export * from './primitive';
60
+ export * from './price-label';
60
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { JSX } from 'react';
2
- import { PropsWithSx, ShallowMerge } from '../../../types';
3
- export type BlockSkeletonProps = ShallowMerge<JSX.IntrinsicElements['div'], PropsWithSx>;
4
- export declare const BlockSkeleton: ({ sx, ...props }: BlockSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ import { PrimitiveProps } from '../../primitive';
3
+ export type BlockSkeletonProps = PrimitiveProps<JSX.IntrinsicElements['div']>;
4
+ export declare const BlockSkeleton: (props: BlockSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
5
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;AAI5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGpD,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AAEzF,eAAO,MAAM,aAAa,qBAAsB,kBAAkB,qDAWjE,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,EAAa,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAE9E,eAAO,MAAM,aAAa,UAAW,kBAAkB,qDAYtD,CAAC"}
@@ -2,17 +2,18 @@ import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { animatePulseStyle } from "../../../constants/emotion.js";
3
3
  import "lodash-es";
4
4
  import { getColorVar } from "../../../theme/palette.js";
5
- import { createSxInterpolation } from "../../../utils/stylesheet.js";
6
- const BlockSkeleton = ({ sx, ...props }) => {
5
+ import { Primitive } from "../../primitive/primitive.js";
6
+ const BlockSkeleton = (props) => {
7
7
  return /* @__PURE__ */ jsx(
8
- "div",
8
+ Primitive,
9
9
  {
10
- css: [
11
- animatePulseStyle,
12
- { borderRadius: 4, backgroundColor: getColorVar("neutral.200") },
13
- createSxInterpolation(sx)
14
- ],
15
- ...props
10
+ ...props,
11
+ sx: {
12
+ ...animatePulseStyle,
13
+ borderRadius: 4,
14
+ backgroundColor: getColorVar("neutral.200"),
15
+ ...props.sx
16
+ }
16
17
  }
17
18
  );
18
19
  };
@@ -1,3 +1,3 @@
1
1
  import { ImageSkeletonProps } from './types';
2
- export declare const ImageSkeleton: ({ sx, ...props }: ImageSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const ImageSkeleton: (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;AAM7C,eAAO,MAAM,aAAa,qBAAsB,kBAAkB,qDA6BjE,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;AAM7C,eAAO,MAAM,aAAa,UAAW,kBAAkB,qDA2BtD,CAAC"}
@@ -2,25 +2,23 @@ import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { animatePulseStyle } from "../../../constants/emotion.js";
3
3
  import "lodash-es";
4
4
  import { getColorVar } from "../../../theme/palette.js";
5
- import { createSxInterpolation } from "../../../utils/stylesheet.js";
6
- const ImageSkeleton = ({ sx, ...props }) => {
5
+ import { Primitive } from "../../primitive/primitive.js";
6
+ const ImageSkeleton = (props) => {
7
7
  return /* @__PURE__ */ jsx(
8
- "div",
8
+ Primitive,
9
9
  {
10
- css: [
11
- animatePulseStyle,
12
- {
13
- display: "flex",
14
- alignItems: "center",
15
- justifyContent: "center",
16
- width: "100%",
17
- height: "100%",
18
- borderRadius: "0.25rem",
19
- backgroundColor: getColorVar("neutral.200")
20
- },
21
- createSxInterpolation(sx)
22
- ],
23
10
  ...props,
11
+ sx: {
12
+ ...animatePulseStyle,
13
+ display: "flex",
14
+ alignItems: "center",
15
+ justifyContent: "center",
16
+ width: "100%",
17
+ height: "100%",
18
+ borderRadius: "0.25rem",
19
+ backgroundColor: getColorVar("neutral.200"),
20
+ ...props.sx
21
+ },
24
22
  children: /* @__PURE__ */ jsx(
25
23
  "svg",
26
24
  {
@@ -1,4 +1,4 @@
1
- import { PropsWithSx, ShallowMerge } from '../../../types';
1
+ import { PrimitiveProps } from '../../primitive';
2
2
  import { JSX } from 'react';
3
- export type ImageSkeletonProps = ShallowMerge<JSX.IntrinsicElements['div'], PropsWithSx>;
3
+ export type ImageSkeletonProps = PrimitiveProps<JSX.IntrinsicElements['div']>;
4
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,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/image-skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { TextSkeletonProps } from './types';
2
- export declare const TextSkeleton: ({ sx, ...props }: TextSkeletonProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const TextSkeleton: (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;AAM5C,eAAO,MAAM,YAAY,qBAAsB,iBAAiB,qDAoB/D,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;AAM5C,eAAO,MAAM,YAAY,UAAW,iBAAiB,qDAiCpD,CAAC"}
@@ -1,30 +1,42 @@
1
- import { jsxs, jsx } from "@emotion/react/jsx-runtime";
1
+ import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { animatePulseStyle } from "../../../constants/emotion.js";
3
3
  import "lodash-es";
4
4
  import { getColorVar } from "../../../theme/palette.js";
5
- import { createSxInterpolation } from "../../../utils/stylesheet.js";
6
- const TextSkeleton = ({ sx, ...props }) => {
7
- return /* @__PURE__ */ jsxs(
8
- "span",
5
+ import { Primitive } from "../../primitive/primitive.js";
6
+ const TextSkeleton = (props) => {
7
+ return /* @__PURE__ */ jsx(
8
+ Primitive,
9
9
  {
10
- css: [
11
- { width: "100%", overflow: "hidden", display: "inline-flex", alignItems: "center" },
12
- createSxInterpolation(sx)
13
- ],
10
+ as: "span",
14
11
  ...props,
15
- children: [
16
- /* @__PURE__ */ jsx(
17
- "span",
18
- {
19
- css: [
20
- animatePulseStyle,
21
- { flex: "1 1 0%", borderRadius: "0.125rem", lineHeight: 1, backgroundColor: getColorVar("neutral.200") }
22
- ],
23
- children: " "
24
- }
25
- ),
26
- " "
27
- ]
12
+ sx: {
13
+ width: "100%",
14
+ overflow: "hidden",
15
+ display: "inline-flex",
16
+ alignItems: "center",
17
+ visibility: "hidden",
18
+ "::before": {
19
+ content: '"\\200B"'
20
+ },
21
+ ...props.sx
22
+ },
23
+ children: /* @__PURE__ */ jsx(
24
+ Primitive,
25
+ {
26
+ sx: {
27
+ ...animatePulseStyle,
28
+ flex: "1 1 0%",
29
+ borderRadius: "0.125rem",
30
+ lineHeight: 1,
31
+ backgroundColor: getColorVar("neutral.200"),
32
+ visibility: "visible",
33
+ "::before": {
34
+ content: '"\\200B"'
35
+ }
36
+ },
37
+ as: "span"
38
+ }
39
+ )
28
40
  }
29
41
  );
30
42
  };
@@ -1,4 +1,4 @@
1
- import { PropsWithSx, ShallowMerge } from '../../../types';
1
+ import { PrimitiveProps } from '../../primitive';
2
2
  import { JSX } from 'react';
3
- export type TextSkeletonProps = ShallowMerge<JSX.IntrinsicElements['span'], PropsWithSx>;
3
+ export type TextSkeletonProps = PrimitiveProps<JSX.IntrinsicElements['span']>;
4
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,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/loading/text-skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"multiple-select.d.ts","sourceRoot":"","sources":["../../../src/lib/multiple-select/multiple-select.tsx"],"names":[],"mappings":"AAQA,OAAO,EAA6B,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA0BzE,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,8BAA8B,mBAAmB,CAAC,CAAC,CAAC,qDAuYlG,CAAC"}
1
+ {"version":3,"file":"multiple-select.d.ts","sourceRoot":"","sources":["../../../src/lib/multiple-select/multiple-select.tsx"],"names":[],"mappings":"AAQA,OAAO,EAA6B,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA0BzE,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,8BAA8B,mBAAmB,CAAC,CAAC,CAAC,qDAqYlG,CAAC"}
@@ -112,7 +112,7 @@ const MultipleSelect = ({ ref, ...props }) => {
112
112
  setControllableValues(preset);
113
113
  onChange == null ? void 0 : onChange(preset);
114
114
  };
115
- const responsiveSize = isNil(windowScreen.name) ? void 0 : getResponsiveProp(rest, "size", windowScreen.name) ?? rest.size;
115
+ const responsiveSize = isNil(windowScreen.name) ? void 0 : getResponsiveProp(rest, "size", windowScreen.name);
116
116
  const rowMinHeight = getSizeVariantState(responsiveSize).inputSize ?? 0;
117
117
  const displayOptions = useMemo(() => {
118
118
  if (!inputValue) {
@@ -0,0 +1,3 @@
1
+ import { PriceLabelProps } from './types';
2
+ export declare const getPriceLabelProps: (extended: PriceLabelProps) => PriceLabelProps;
3
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/price-label/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,kBAAkB,aAAc,eAAe,oBAO3D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { mergeComponentProps } from "../../utils/index.js";
2
+ const getPriceLabelProps = (extended) => {
3
+ return mergeComponentProps(
4
+ {
5
+ size: "sm"
6
+ },
7
+ extended
8
+ );
9
+ };
10
+ export {
11
+ getPriceLabelProps
12
+ };
@@ -0,0 +1,4 @@
1
+ export * from './price-label';
2
+ export * from './types';
3
+ export * from './helpers';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/price-label/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PriceLabelProps } from './types';
2
+ export declare const PriceLabel: (_props: PriceLabelProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=price-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-label.d.ts","sourceRoot":"","sources":["../../../src/lib/price-label/price-label.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA8C,eAAe,EAAE,MAAM,SAAS,CAAC;AAQtF,eAAO,MAAM,UAAU,WAAY,eAAe,qDAwEjD,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { jsxs, jsx, Fragment } from "@emotion/react/jsx-runtime";
2
+ import { getPriceLabelProps } from "./helpers.js";
3
+ import { isNil, isNumber } from "lodash-es";
4
+ import { useTranslation } from "react-i18next";
5
+ import { LocaleNamespaces } from "../../constants/index.js";
6
+ import { useFormatter } from "../../hooks/use-formatter/index.js";
7
+ import { getColorVar } from "../../theme/palette.js";
8
+ import { getSmallerTypographyVariants, getTypographyVar } from "../../theme/typography.js";
9
+ import { Primitive } from "../primitive/primitive.js";
10
+ import { TextSkeleton } from "../loading/text-skeleton/text-skeleton.js";
11
+ const PriceLabel = (_props) => {
12
+ const {
13
+ price,
14
+ exchangePrice,
15
+ size,
16
+ orientation = "vertical",
17
+ color = "neutral",
18
+ sm,
19
+ md,
20
+ lg,
21
+ ...rest
22
+ } = getPriceLabelProps(_props);
23
+ return /* @__PURE__ */ jsxs(
24
+ Primitive,
25
+ {
26
+ as: "span",
27
+ sx: {
28
+ display: "inline-block",
29
+ textAlign: orientation === "vertical" ? "right" : "left",
30
+ ...rest.sx
31
+ },
32
+ ...rest,
33
+ children: [
34
+ /* @__PURE__ */ jsx(
35
+ Primitive,
36
+ {
37
+ as: "span",
38
+ sx: {
39
+ color: getColorVar(`${color}.600`),
40
+ ...createStyle({ size }),
41
+ sm: createStyle(sm),
42
+ md: createStyle(md),
43
+ lg: createStyle(lg)
44
+ },
45
+ children: /* @__PURE__ */ jsx(
46
+ PriceRenderer,
47
+ {
48
+ price: {
49
+ placeholder: true,
50
+ ...price
51
+ }
52
+ }
53
+ )
54
+ }
55
+ ),
56
+ exchangePrice && /* @__PURE__ */ jsxs(Fragment, { children: [
57
+ orientation === "vertical" ? /* @__PURE__ */ jsx("br", {}) : /* @__PURE__ */ jsx(Fragment, { children: " " }),
58
+ /* @__PURE__ */ jsx(
59
+ Primitive,
60
+ {
61
+ sx: {
62
+ color: getColorVar(`${color}.500`),
63
+ ...createStyle({ size: getSmallerTypographyVariants(size).at(0) }),
64
+ sm: {
65
+ ...createStyle({ size: getSmallerTypographyVariants(sm == null ? void 0 : sm.size).at(0) })
66
+ },
67
+ md: {
68
+ ...createStyle({ size: getSmallerTypographyVariants(md == null ? void 0 : md.size).at(0) })
69
+ },
70
+ lg: {
71
+ ...createStyle({ size: getSmallerTypographyVariants(lg == null ? void 0 : lg.size).at(0) })
72
+ }
73
+ },
74
+ as: "span",
75
+ children: /* @__PURE__ */ jsx(
76
+ PriceRenderer,
77
+ {
78
+ price: {
79
+ prefix: "(",
80
+ suffix: ")",
81
+ placeholder: isNil(exchangePrice.value),
82
+ ...exchangePrice
83
+ }
84
+ }
85
+ )
86
+ }
87
+ )
88
+ ] })
89
+ ]
90
+ }
91
+ );
92
+ };
93
+ const PriceRenderer = ({ price }) => {
94
+ const { t } = useTranslation(LocaleNamespaces.Translation);
95
+ const { formatPrice, formatNumber } = useFormatter();
96
+ const { currency, value, isPending, prefix = "", suffix = "", placeholder } = price;
97
+ if (currency && isNumber(value)) {
98
+ return `${prefix}${formatPrice(value, { currency })}${suffix}`;
99
+ }
100
+ if (isNumber(value)) {
101
+ return `${prefix}${formatNumber(value)}${suffix}`;
102
+ }
103
+ if (isPending) {
104
+ return `${prefix}${t("updating")}${suffix}`;
105
+ }
106
+ if (placeholder) {
107
+ return /* @__PURE__ */ jsx(TextSkeleton, { sx: { width: 60 } });
108
+ }
109
+ return /* @__PURE__ */ jsx(Fragment, {});
110
+ };
111
+ const createStyle = ({ size } = {}) => {
112
+ return size ? {
113
+ fontSize: getTypographyVar(size).fontSize,
114
+ lineHeight: getTypographyVar(size).lineHeight
115
+ } : {};
116
+ };
117
+ export {
118
+ PriceLabel
119
+ };
@@ -0,0 +1,24 @@
1
+ import { JSX } from 'react';
2
+ import { TypographySizeVariant } from '../../theme';
3
+ import { ColorVariant, ShallowMerge, ToResponsiveProps } from '../../types';
4
+ import { PrimitiveProps } from '../primitive';
5
+ export type PriceLabelEntry = {
6
+ currency?: string;
7
+ value?: number;
8
+ isPending?: boolean;
9
+ placeholder?: boolean;
10
+ prefix?: string;
11
+ suffix?: string;
12
+ };
13
+ export interface PriceLabelResponsiveProps {
14
+ size?: TypographySizeVariant;
15
+ }
16
+ type PriceLabelExtendedProps = ToResponsiveProps<PriceLabelResponsiveProps> & {
17
+ price: PriceLabelEntry;
18
+ exchangePrice?: PriceLabelEntry;
19
+ color?: ColorVariant;
20
+ orientation?: 'horizontal' | 'vertical';
21
+ };
22
+ export type PriceLabelProps = ShallowMerge<PrimitiveProps<JSX.IntrinsicElements['span']>, PriceLabelExtendedProps>;
23
+ export {};
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/price-label/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B;AAED,KAAK,uBAAuB,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,GAAG;IAC5E,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC"}
@@ -4,7 +4,7 @@ import { Step } from "./step.js";
4
4
  import { Progress } from "../progress/progress.js";
5
5
  const maxPercent = 100;
6
6
  const Stepper = forwardRef((props, ref) => {
7
- const { direction = "horizontal", className, items, activeIndex = 0, circleSize = 32, ...rest } = props;
7
+ const { direction = "horizontal", items, activeIndex = 0, circleSize = 32, ...rest } = props;
8
8
  const value = maxPercent / (items.length - 1) * activeIndex;
9
9
  const progressBarSize = `${(items.length - 1) / items.length * 100}%`;
10
10
  const progressBarStyles = {
@@ -1,3 +1,3 @@
1
1
  import { TextProps } from './types';
2
- export declare const Text: ({ sx, children, ref, ..._props }: TextProps) => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export declare const Text: ({ children, ref, ..._props }: TextProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/lib/text/text.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAuB,MAAM,SAAS,CAAC;AAMzD,eAAO,MAAM,IAAI,qCAAsC,SAAS,qDAwB/D,CAAC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/lib/text/text.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAuB,MAAM,SAAS,CAAC;AAMzD,eAAO,MAAM,IAAI,iCAAkC,SAAS,qDA6B3D,CAAC"}
@@ -1,41 +1,44 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { isNil } from "lodash-es";
3
3
  import { getTextProps } from "./helpers.js";
4
- import { mediaQuery } from "../../theme/screens.js";
5
4
  import "../../theme/palette.js";
6
5
  import { getTypographyVar } from "../../theme/typography.js";
7
- import { createSxInterpolation } from "../../utils/stylesheet.js";
8
6
  import { Primitive } from "../primitive/primitive.js";
9
- const Text = ({ sx, children, ref, ..._props }) => {
7
+ const Text = ({ children, ref, ..._props }) => {
8
+ var _a, _b, _c;
10
9
  const { sizeVariant, sm, md, lg, as = "p", dangerouslySetInnerHTML, ...rest } = getTextProps(_props);
11
- const css = [
12
- createStyle({ sizeVariant }),
13
- {
14
- [mediaQuery("sm")]: createStyle(sm),
15
- [mediaQuery("md")]: createStyle(md),
16
- [mediaQuery("lg")]: createStyle(lg)
17
- },
18
- createSxInterpolation(sx)
19
- ];
20
10
  return /* @__PURE__ */ jsx(
21
11
  Primitive,
22
12
  {
23
- css,
24
13
  dangerouslySetInnerHTML: isNil(children) ? dangerouslySetInnerHTML : void 0,
25
14
  ...rest,
26
15
  as,
16
+ sx: {
17
+ ...createStyle({ sizeVariant }),
18
+ ...rest.sx,
19
+ sm: {
20
+ ...createStyle(sm),
21
+ ...(_a = rest.sx) == null ? void 0 : _a.sm
22
+ },
23
+ md: {
24
+ ...createStyle(md),
25
+ ...(_b = rest.sx) == null ? void 0 : _b.md
26
+ },
27
+ lg: {
28
+ ...createStyle(lg),
29
+ ...(_c = rest.sx) == null ? void 0 : _c.lg
30
+ }
31
+ },
27
32
  ref,
28
33
  children: isNil(dangerouslySetInnerHTML) ? children : null
29
34
  }
30
35
  );
31
36
  };
32
37
  const createStyle = ({ sizeVariant } = {}) => {
33
- return [
34
- sizeVariant && {
35
- fontSize: getTypographyVar(sizeVariant).fontSize,
36
- lineHeight: getTypographyVar(sizeVariant).lineHeight
37
- }
38
- ];
38
+ return sizeVariant ? {
39
+ fontSize: getTypographyVar(sizeVariant).fontSize,
40
+ lineHeight: getTypographyVar(sizeVariant).lineHeight
41
+ } : {};
39
42
  };
40
43
  export {
41
44
  Text
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.d.ts","sourceRoot":"","sources":["../../../src/lib/time-picker/time-picker.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmB1C,eAAO,MAAM,UAAU,mJAepB,eAAe,qDA2QjB,CAAC"}
1
+ {"version":3,"file":"time-picker.d.ts","sourceRoot":"","sources":["../../../src/lib/time-picker/time-picker.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmB1C,eAAO,MAAM,UAAU,mJAepB,eAAe,qDAyQjB,CAAC"}
@@ -34,7 +34,7 @@ const TimePicker = ({
34
34
  }) => {
35
35
  const floatingRef = useRef(null);
36
36
  const windowScreen = useWindowScreen();
37
- const responsiveSize = isNil(windowScreen.name) ? void 0 : getResponsiveProp(rest, "size", windowScreen.name) ?? size;
37
+ const responsiveSize = isNil(windowScreen.name) ? void 0 : getResponsiveProp(rest, "size", windowScreen.name);
38
38
  const rowMinHeight = getSizeVariantState(responsiveSize).inputSize ?? 0;
39
39
  const [isOpen, setIsOpen] = useControllableState({
40
40
  defaultValue: open ?? false,
@@ -4,7 +4,7 @@ export declare const getTypographyVar: <T extends TypographySizeVariant>(key: T,
4
4
  lineHeight: string;
5
5
  };
6
6
  export declare const typographyVars: ThemeTypography;
7
- export declare const getSmallerTypographyVariants: (variant: TypographySizeVariant) => TypographySizeVariant[];
7
+ export declare const getSmallerTypographyVariants: (variant?: TypographySizeVariant) => TypographySizeVariant[];
8
8
  type TypographySizeVariantCSS = {
9
9
  fontSize: string;
10
10
  lineHeight: string;
@@ -1 +1 @@
1
- {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/theme/typography.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,IAAI,GACJ,IAAI,GACJ,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AAEV,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,qBAAqB,OAAO,CAAC;;;CASvE,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAW5B,CAAC;AAEF,eAAO,MAAM,4BAA4B,YAAa,qBAAqB,4BAI1E,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;AAEtF,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAiB,KAAK;QACpB,UAAU,EAAE,eAAe,CAAC;KAC7B;CACF"}
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../src/theme/typography.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,IAAI,GACJ,IAAI,GACJ,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AAEV,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,qBAAqB,OAAO,CAAC;;;CASvE,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAW5B,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAAc,qBAAqB,4BAQ3E,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;AAEtF,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAiB,KAAK;QACpB,UAAU,EAAE,eAAe,CAAC;KAC7B;CACF"}
@@ -19,6 +19,9 @@ const typographyVars = {
19
19
  "6xl": getTypographyVar("6xl")
20
20
  };
21
21
  const getSmallerTypographyVariants = (variant) => {
22
+ if (!variant) {
23
+ return [];
24
+ }
22
25
  const allVariants = ["xs", "sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl"];
23
26
  return allVariants.slice(0, allVariants.indexOf(variant)).reverse();
24
27
  };
@@ -37,16 +37,6 @@ const matchSearch = (text, searchText, options) => {
37
37
  return normalizeSearchText(entry, options).includes(normalizedSearchText);
38
38
  });
39
39
  };
40
- const formatNumber = (value, { lng, ...options }) => {
41
- try {
42
- return new Intl.NumberFormat(lng, {
43
- minimumFractionDigits: 0,
44
- ...options
45
- }).format(value);
46
- } catch (error) {
47
- return value.toString();
48
- }
49
- };
50
40
  const getDecimalDigits = (value) => {
51
41
  var _a;
52
42
  return ((_a = value.toString().split(".").at(1)) == null ? void 0 : _a.length) ?? 0;
@@ -121,7 +111,6 @@ function parseSvgString(source, uniqueId) {
121
111
  export {
122
112
  ensureArray,
123
113
  ensureBoolean,
124
- formatNumber,
125
114
  getDecimalDigits,
126
115
  getEnumValues,
127
116
  matchSearch,
@@ -1,7 +1,7 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { Screen, TypographySizeVariant } from '../theme';
3
- import { SizeVariant, ColorVariant } from '../types';
4
- import { Get, Paths } from 'type-fest';
3
+ import { SizeVariant, ColorVariant, ToResponsiveProps } from '../types';
4
+ import { Get, Paths, SetRequired } from 'type-fest';
5
5
  export * from './common';
6
6
  export * from './query-params';
7
7
  export declare const getColorShadesByVariant: (variant?: ColorVariant) => {
@@ -34,7 +34,19 @@ export type SizeVariantState = Partial<{
34
34
  textVariant: TypographySizeVariant;
35
35
  }>;
36
36
  export declare const getSizeVariantState: (size?: SizeVariant) => SizeVariantState;
37
- export declare const getResponsiveProp: <O extends object, P extends Paths<O>, R = Get<O, `${P}`>>(record: Partial<Record<Screen, O>>, field: P, screen: Screen, options?: {
37
+ export declare const getResponsiveProp: <O extends object, P extends Paths<O>, R = Get<O, `${P}`>>(record: ToResponsiveProps<O>, field: P, screen: Screen, options?: {
38
38
  condition?: (value?: R) => boolean;
39
39
  }) => R;
40
+ export type FormatNumberOptions = Intl.NumberFormatOptions & {
41
+ lng: string;
42
+ };
43
+ export declare const formatNumber: (value: number, { lng, ...options }: FormatNumberOptions) => string;
44
+ export type FormatPriceOptions = SetRequired<Intl.NumberFormatOptions, 'currency'> & {
45
+ lng: string;
46
+ };
47
+ export declare const formatPrice: (value: number, { lng, ...options }: FormatPriceOptions) => string;
48
+ export type FormatDateTimeOptions = Intl.DateTimeFormatOptions & {
49
+ lng: string;
50
+ };
51
+ export declare const formatDateTime: (value: Date | string | number, { lng, ...options }: FormatDateTimeOptions) => string;
40
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,YAAY,EAAE,MAAM,OAAO,CAAC;AAI5F,OAAO,EAAe,MAAM,EAAqB,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAc/B,eAAO,MAAM,uBAAuB,aAAc,YAAY;;;;;;;;;;;;;;;;;;;;CAyF7D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,MAiB9G,CAAC;AAEF,eAAO,MAAM,eAAe,aAAc,KAAK,CAAC,SAAS,KAAG,YAAY,EAYvE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,qBAAqB,CAAC;CACpC,CAAC,CAAC;AAEH,eAAO,MAAM,mBAAmB,UAAW,WAAW,KAAG,gBAiCxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,2BAC/D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAC3B,CAAC,UACA,MAAM,YACJ;IACR,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;CACpC,KACA,CAgBF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,YAAY,EAAE,MAAM,OAAO,CAAC;AAI5F,OAAO,EAAe,MAAM,EAAqB,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEpD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAc/B,eAAO,MAAM,uBAAuB,aAAc,YAAY;;;;;;;;;;;;;;;;;;;;CAyF7D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,MAiB9G,CAAC;AAEF,eAAO,MAAM,eAAe,aAAc,KAAK,CAAC,SAAS,KAAG,YAAY,EAYvE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,qBAAqB,CAAC;CACpC,CAAC,CAAC;AAEH,eAAO,MAAM,mBAAmB,UAAW,WAAW,KAAG,gBAiCxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,2BAC/D,iBAAiB,CAAC,CAAC,CAAC,SACrB,CAAC,UACA,MAAM,YACJ;IACR,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;CACpC,KACA,CAgBF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,GAAG;IAC3D,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,MAAM,uBAAuB,mBAAmB,WASnF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,GAAG;IACnF,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,MAAM,uBAAuB,kBAAkB,WAWjF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,GAAG;IAC/D,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,IAAI,GAAG,MAAM,GAAG,MAAM,uBAAuB,qBAAqB,WAyBvG,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { Children, isValidElement, Fragment } from "react";
2
- import { isUndefined, mergeWith, get } from "lodash-es";
2
+ import { isString, isNumber, isUndefined, mergeWith, get } from "lodash-es";
3
3
  import { getSmallerScreens } from "../theme/screens.js";
4
4
  import { getColorVar } from "../theme/palette.js";
5
- import { ensureArray, ensureBoolean, formatNumber, getDecimalDigits, getEnumValues, matchSearch, normalizeSearchText, omitEmpty, parseNumber, parseSvgString } from "./common.js";
5
+ import { ensureArray, ensureBoolean, getDecimalDigits, getEnumValues, matchSearch, normalizeSearchText, omitEmpty, parseNumber, parseSvgString } from "./common.js";
6
6
  import { ArrayParamParser, BooleanParamParser, DateParamParser, EnumParamParser, NumberParamParser, StringParamParser, simplifyQueryParams } from "./query-params.js";
7
7
  const getColorShadesByVariant = (variant) => {
8
8
  switch (variant) {
@@ -156,7 +156,7 @@ const getSizeVariantState = (size) => {
156
156
  };
157
157
  const getResponsiveProp = (record, field, screen, options) => {
158
158
  const condition = (options == null ? void 0 : options.condition) ?? ((value) => !isUndefined(value));
159
- const getByScreen = (bp) => get(record == null ? void 0 : record[bp], field);
159
+ const getByScreen = (bp) => bp === "xs" ? get(record, field) : get(record == null ? void 0 : record[bp], field);
160
160
  const currentVal = getByScreen(screen);
161
161
  if (condition(currentVal)) {
162
162
  return currentVal;
@@ -166,6 +166,53 @@ const getResponsiveProp = (record, field, screen, options) => {
166
166
  });
167
167
  return getByScreen(smallerScreen ?? screen);
168
168
  };
169
+ const formatNumber = (value, { lng, ...options }) => {
170
+ try {
171
+ return new Intl.NumberFormat(lng, {
172
+ minimumFractionDigits: 0,
173
+ ...options
174
+ }).format(value);
175
+ } catch (error) {
176
+ return value.toString();
177
+ }
178
+ };
179
+ const formatPrice = (value, { lng, ...options }) => {
180
+ try {
181
+ return new Intl.NumberFormat(lng, {
182
+ style: "currency",
183
+ minimumFractionDigits: 0,
184
+ currencyDisplay: "narrowSymbol",
185
+ ...options
186
+ }).format(value);
187
+ } catch (error) {
188
+ return [value, options.currency].filter(Boolean).join(" ");
189
+ }
190
+ };
191
+ const formatDateTime = (value, { lng, ...options }) => {
192
+ const dateObject = (() => {
193
+ if (isString(value)) {
194
+ const hasTimezone = /([zZ]|[+-]\d{2}:\d{2})$/.test(value);
195
+ return hasTimezone ? new Date(value) : /* @__PURE__ */ new Date(value + "Z");
196
+ }
197
+ if (isNumber(value)) {
198
+ return new Date(value);
199
+ }
200
+ return value;
201
+ })();
202
+ try {
203
+ return new Intl.DateTimeFormat(lng, {
204
+ day: "2-digit",
205
+ month: "2-digit",
206
+ year: "numeric",
207
+ hour: "numeric",
208
+ minute: "2-digit",
209
+ hour12: false,
210
+ ...options
211
+ }).format(dateObject);
212
+ } catch (error) {
213
+ return value.toString();
214
+ }
215
+ };
169
216
  export {
170
217
  ArrayParamParser,
171
218
  BooleanParamParser,
@@ -176,7 +223,9 @@ export {
176
223
  ensureArray,
177
224
  ensureBoolean,
178
225
  flattenChildren,
226
+ formatDateTime,
179
227
  formatNumber,
228
+ formatPrice,
180
229
  getColorShadesByVariant,
181
230
  getDecimalDigits,
182
231
  getEnumValues,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@janbox/storefront-ui",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "Storefront UI component library for Janbox",
5
5
  "author": "Janbox",
6
6
  "keywords": [