@telia/teddy 0.7.37 → 0.7.39

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 (61) hide show
  1. package/dist/components/checkbox-card-group/checkbox-card-group-content.cjs +1 -0
  2. package/dist/components/checkbox-card-group/checkbox-card-group-content.js +1 -0
  3. package/dist/components/checkbox-card-group/checkbox-card-group-indicator.cjs +1 -0
  4. package/dist/components/checkbox-card-group/checkbox-card-group-indicator.js +1 -0
  5. package/dist/components/checkbox-card-group/checkbox-card-group-item-title.cjs +1 -0
  6. package/dist/components/checkbox-card-group/checkbox-card-group-item-title.js +1 -0
  7. package/dist/components/checkbox-card-group/checkbox-card-group-item.cjs +1 -0
  8. package/dist/components/checkbox-card-group/checkbox-card-group-item.js +1 -0
  9. package/dist/components/expandable-card/expandable-card-root.cjs +15 -15
  10. package/dist/components/expandable-card/expandable-card-root.js +15 -15
  11. package/dist/components/index.cjs +4 -0
  12. package/dist/components/index.d.ts +1 -0
  13. package/dist/components/index.js +4 -0
  14. package/dist/components/modal/modal-close.cjs +1 -0
  15. package/dist/components/modal/modal-close.js +1 -0
  16. package/dist/components/navigation-menu/navigation-menu.cjs +1 -0
  17. package/dist/components/navigation-menu/navigation-menu.js +1 -0
  18. package/dist/components/radio-card-group/radio-card-group-content.cjs +1 -0
  19. package/dist/components/radio-card-group/radio-card-group-content.js +1 -0
  20. package/dist/components/radio-card-group/radio-card-group-item-title.cjs +1 -0
  21. package/dist/components/radio-card-group/radio-card-group-item-title.js +1 -0
  22. package/dist/components/radio-card-group/radio-card-group-item.cjs +1 -0
  23. package/dist/components/radio-card-group/radio-card-group-item.js +1 -0
  24. package/dist/components/shopping-cart/index.cjs +21 -0
  25. package/dist/components/shopping-cart/index.d.ts +42 -0
  26. package/dist/components/shopping-cart/index.js +21 -0
  27. package/dist/components/shopping-cart/shopping-cart-context.cjs +13 -0
  28. package/dist/components/shopping-cart/shopping-cart-context.d.ts +8 -0
  29. package/dist/components/shopping-cart/shopping-cart-context.js +13 -0
  30. package/dist/components/shopping-cart/shopping-cart-continue.cjs +9 -0
  31. package/dist/components/shopping-cart/shopping-cart-continue.d.ts +8 -0
  32. package/dist/components/shopping-cart/shopping-cart-continue.js +9 -0
  33. package/dist/components/shopping-cart/shopping-cart-disclaimer.cjs +74 -0
  34. package/dist/components/shopping-cart/shopping-cart-disclaimer.d.ts +10 -0
  35. package/dist/components/shopping-cart/shopping-cart-disclaimer.js +74 -0
  36. package/dist/components/shopping-cart/shopping-cart-item.cjs +268 -0
  37. package/dist/components/shopping-cart/shopping-cart-item.d.ts +11 -0
  38. package/dist/components/shopping-cart/shopping-cart-item.js +268 -0
  39. package/dist/components/shopping-cart/shopping-cart-items.cjs +19 -0
  40. package/dist/components/shopping-cart/shopping-cart-items.d.ts +11 -0
  41. package/dist/components/shopping-cart/shopping-cart-items.js +19 -0
  42. package/dist/components/shopping-cart/shopping-cart-payment.cjs +119 -0
  43. package/dist/components/shopping-cart/shopping-cart-payment.d.ts +19 -0
  44. package/dist/components/shopping-cart/shopping-cart-payment.js +119 -0
  45. package/dist/components/shopping-cart/shopping-cart-root.cjs +14 -0
  46. package/dist/components/shopping-cart/shopping-cart-root.d.ts +10 -0
  47. package/dist/components/shopping-cart/shopping-cart-root.js +14 -0
  48. package/dist/components/shopping-cart/types.cjs +30 -0
  49. package/dist/components/shopping-cart/types.d.ts +193 -0
  50. package/dist/components/shopping-cart/types.js +30 -0
  51. package/dist/components/shopping-cart/utils.cjs +62 -0
  52. package/dist/components/shopping-cart/utils.d.ts +6 -0
  53. package/dist/components/shopping-cart/utils.js +62 -0
  54. package/dist/components/textarea/textarea-group.cjs +12 -12
  55. package/dist/components/textarea/textarea-group.js +12 -12
  56. package/dist/main.cjs +4 -0
  57. package/dist/main.js +4 -0
  58. package/dist/shopping-cart.module-BCoLrcMI.cjs +48 -0
  59. package/dist/shopping-cart.module-DA25l2hr.js +49 -0
  60. package/dist/style.css +995 -510
  61. package/package.json +1 -1
@@ -0,0 +1,62 @@
1
+ const defaultFormatPrice = (price) => {
2
+ if (typeof price === "number") {
3
+ return price % 1 === 0 ? price + ",-" : price + " kr";
4
+ }
5
+ return price;
6
+ };
7
+ const getDiscountPrice = (price, quantity) => {
8
+ if (!price || Object.keys(price).length === 0) {
9
+ return null;
10
+ }
11
+ if (typeof price.monthly === "number") {
12
+ return price.monthly;
13
+ }
14
+ if (typeof price.upfront === "number") {
15
+ return price.upfront * quantity;
16
+ }
17
+ return null;
18
+ };
19
+ const getPrice = (formatPriceFn, price, discountValueUpfront, discountValueMonthly, quantity) => {
20
+ if (!price || Object.keys(price).length === 0) {
21
+ return null;
22
+ }
23
+ if (typeof price.monthly === "number") {
24
+ const discountedMonthly = price.monthly - discountValueMonthly;
25
+ return formatPriceFn(discountedMonthly > 0 ? discountedMonthly : 0);
26
+ }
27
+ if (typeof price.firstInvoice === "number") {
28
+ return formatPriceFn(price.firstInvoice * quantity);
29
+ }
30
+ if (typeof price.upfront === "number") {
31
+ const discountedUpfront = price.upfront - discountValueUpfront;
32
+ const totalUpfront = (discountedUpfront > 0 ? discountedUpfront : 0) * quantity;
33
+ return formatPriceFn(totalUpfront);
34
+ }
35
+ return null;
36
+ };
37
+ const getCartItemPriority = (item) => {
38
+ const cartItemTypes = {
39
+ WEBDEAL: 10,
40
+ HANDSET: 20,
41
+ TABLET: 30,
42
+ MODEM: 40,
43
+ WEARABLE: 50,
44
+ CONNECTED_DEVICE: 60,
45
+ SUBSCRIPTION: 70,
46
+ SUBSCRIPTION_DRAFT: 70,
47
+ SPECIALPRODUCT: 71,
48
+ SIM: 80,
49
+ NEW_NUMBER: 90,
50
+ SERVICE: 100,
51
+ ACCESSORY: 110,
52
+ VOUCHER: 130
53
+ };
54
+ return cartItemTypes[item.type] ?? 999;
55
+ };
56
+ const sortByType = (items) => [...items].sort((a, b) => getCartItemPriority(a) - getCartItemPriority(b));
57
+ export {
58
+ defaultFormatPrice,
59
+ getDiscountPrice,
60
+ getPrice,
61
+ sortByType
62
+ };
@@ -7,19 +7,19 @@ require("../../assets/sprite.6511e521-teddy.svg");
7
7
  const components_icon_icon = require("../icon/icon.cjs");
8
8
  const components_spinner_spinner = require("../spinner/spinner.cjs");
9
9
  const utils_composeRefs = require("../../utils/composeRefs.cjs");
10
- const fadeInAnimation = "_fadeInAnimation_15psx_1";
11
- const scaleInAnimation = "_scaleInAnimation_15psx_1";
10
+ const fadeInAnimation = "_fadeInAnimation_gun7l_1";
11
+ const scaleInAnimation = "_scaleInAnimation_gun7l_1";
12
12
  const styles = {
13
- "teddy-textarea__textarea": "_teddy-textarea__textarea_15psx_17",
14
- "teddy-textarea": "_teddy-textarea_15psx_17",
15
- "teddy-textarea__wrapper": "_teddy-textarea__wrapper_15psx_29",
16
- "teddy-textarea__textarea--valid": "_teddy-textarea__textarea--valid_15psx_84",
17
- "teddy-textarea__indicator": "_teddy-textarea__indicator_15psx_90",
18
- "teddy-textarea__textarea--error": "_teddy-textarea__textarea--error_15psx_93",
19
- "teddy-textarea__icon": "_teddy-textarea__icon_15psx_99",
13
+ "teddy-textarea__textarea": "_teddy-textarea__textarea_gun7l_17",
14
+ "teddy-textarea": "_teddy-textarea_gun7l_17",
15
+ "teddy-textarea__wrapper": "_teddy-textarea__wrapper_gun7l_31",
16
+ "teddy-textarea__textarea--valid": "_teddy-textarea__textarea--valid_gun7l_89",
17
+ "teddy-textarea__indicator": "_teddy-textarea__indicator_gun7l_95",
18
+ "teddy-textarea__textarea--error": "_teddy-textarea__textarea--error_gun7l_98",
19
+ "teddy-textarea__icon": "_teddy-textarea__icon_gun7l_104",
20
20
  fadeInAnimation,
21
21
  scaleInAnimation,
22
- "teddy-textarea__clear-button": "_teddy-textarea__clear-button_15psx_119"
22
+ "teddy-textarea__clear-button": "_teddy-textarea__clear-button_gun7l_126"
23
23
  };
24
24
  const TextareaGroupContext = React.createContext(void 0);
25
25
  function setCursorOnTextarea(e) {
@@ -67,11 +67,11 @@ const Root = React.forwardRef(
67
67
  Root.displayName = "TextareaGroup";
68
68
  const TextareaIndicator = React.forwardRef(
69
69
  ({ className, isLoading, isValid, ...props }, forwardRef) => {
70
+ const classes = clsx([styles[`${rootClassName}__indicator`]], className);
70
71
  if (!isValid && !isLoading) return null;
71
72
  if (!isValid && isLoading) {
72
- return /* @__PURE__ */ jsxRuntime.jsx(components_spinner_spinner.Spinner, { className, size: "xs", ...props, ref: forwardRef });
73
+ return /* @__PURE__ */ jsxRuntime.jsx(components_spinner_spinner.Spinner, { className: classes, size: "xs", ...props, ref: forwardRef });
73
74
  }
74
- const classes = clsx([styles[`${rootClassName}__indicator`]], className);
75
75
  return /* @__PURE__ */ jsxRuntime.jsx(components_icon_icon.Icon, { ...props, size: "md", name: "check-circle-filled", className: classes, ref: forwardRef });
76
76
  }
77
77
  );
@@ -5,19 +5,19 @@ import "../../assets/sprite.6511e521-teddy.svg";
5
5
  import { Icon } from "../icon/icon.js";
6
6
  import { Spinner } from "../spinner/spinner.js";
7
7
  import { useComposedRefs } from "../../utils/composeRefs.js";
8
- const fadeInAnimation = "_fadeInAnimation_15psx_1";
9
- const scaleInAnimation = "_scaleInAnimation_15psx_1";
8
+ const fadeInAnimation = "_fadeInAnimation_gun7l_1";
9
+ const scaleInAnimation = "_scaleInAnimation_gun7l_1";
10
10
  const styles = {
11
- "teddy-textarea__textarea": "_teddy-textarea__textarea_15psx_17",
12
- "teddy-textarea": "_teddy-textarea_15psx_17",
13
- "teddy-textarea__wrapper": "_teddy-textarea__wrapper_15psx_29",
14
- "teddy-textarea__textarea--valid": "_teddy-textarea__textarea--valid_15psx_84",
15
- "teddy-textarea__indicator": "_teddy-textarea__indicator_15psx_90",
16
- "teddy-textarea__textarea--error": "_teddy-textarea__textarea--error_15psx_93",
17
- "teddy-textarea__icon": "_teddy-textarea__icon_15psx_99",
11
+ "teddy-textarea__textarea": "_teddy-textarea__textarea_gun7l_17",
12
+ "teddy-textarea": "_teddy-textarea_gun7l_17",
13
+ "teddy-textarea__wrapper": "_teddy-textarea__wrapper_gun7l_31",
14
+ "teddy-textarea__textarea--valid": "_teddy-textarea__textarea--valid_gun7l_89",
15
+ "teddy-textarea__indicator": "_teddy-textarea__indicator_gun7l_95",
16
+ "teddy-textarea__textarea--error": "_teddy-textarea__textarea--error_gun7l_98",
17
+ "teddy-textarea__icon": "_teddy-textarea__icon_gun7l_104",
18
18
  fadeInAnimation,
19
19
  scaleInAnimation,
20
- "teddy-textarea__clear-button": "_teddy-textarea__clear-button_15psx_119"
20
+ "teddy-textarea__clear-button": "_teddy-textarea__clear-button_gun7l_126"
21
21
  };
22
22
  const TextareaGroupContext = React__default.createContext(void 0);
23
23
  function setCursorOnTextarea(e) {
@@ -65,11 +65,11 @@ const Root = React__default.forwardRef(
65
65
  Root.displayName = "TextareaGroup";
66
66
  const TextareaIndicator = React__default.forwardRef(
67
67
  ({ className, isLoading, isValid, ...props }, forwardRef) => {
68
+ const classes = clsx([styles[`${rootClassName}__indicator`]], className);
68
69
  if (!isValid && !isLoading) return null;
69
70
  if (!isValid && isLoading) {
70
- return /* @__PURE__ */ jsx(Spinner, { className, size: "xs", ...props, ref: forwardRef });
71
+ return /* @__PURE__ */ jsx(Spinner, { className: classes, size: "xs", ...props, ref: forwardRef });
71
72
  }
72
- const classes = clsx([styles[`${rootClassName}__indicator`]], className);
73
73
  return /* @__PURE__ */ jsx(Icon, { ...props, size: "md", name: "check-circle-filled", className: classes, ref: forwardRef });
74
74
  }
75
75
  );
package/dist/main.cjs CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const components_dashedButton_dashedButtonRoot = require("./components/dashed-button/dashed-button-root.cjs");
4
+ const components_shoppingCart_index = require("./components/shopping-cart/index.cjs");
4
5
  const components_stepIndicator_index = require("./components/step-indicator/index.cjs");
5
6
  const components_metricMeter_metricMeter = require("./components/metric-meter/metric-meter.cjs");
6
7
  const components_footer_index = require("./components/footer/index.cjs");
@@ -72,10 +73,12 @@ const tokens_motion_variables = require("./tokens/motion/variables.cjs");
72
73
  const tokens_shadow_variables = require("./tokens/shadow/variables.cjs");
73
74
  const tokens_spacing_variables = require("./tokens/spacing/variables.cjs");
74
75
  const tokens_typography_variables = require("./tokens/typography/variables.cjs");
76
+ const components_shoppingCart_types = require("./components/shopping-cart/types.cjs");
75
77
  const sonner = require("sonner");
76
78
  const components_input_inputGroup = require("./components/input/input-group.cjs");
77
79
  const components_textarea_textareaGroup = require("./components/textarea/textarea-group.cjs");
78
80
  exports.DashedButton = components_dashedButton_dashedButtonRoot.DashedButton;
81
+ exports.ShoppingCart = components_shoppingCart_index.ShoppingCart;
79
82
  exports.StepIndicator = components_stepIndicator_index.StepIndicator;
80
83
  exports.MetricMeter = components_metricMeter_metricMeter.MetricMeter;
81
84
  exports.Footer = components_footer_index.Footer;
@@ -151,6 +154,7 @@ exports.motion = tokens_motion_variables.variables;
151
154
  exports.shadow = tokens_shadow_variables.variables;
152
155
  exports.spacing = tokens_spacing_variables.variables;
153
156
  exports.typography = tokens_typography_variables.variables;
157
+ exports.CART_ITEM_TYPE = components_shoppingCart_types.CART_ITEM_TYPE;
154
158
  Object.defineProperty(exports, "toast", {
155
159
  enumerable: true,
156
160
  get: () => sonner.toast
package/dist/main.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { DashedButton } from "./components/dashed-button/dashed-button-root.js";
2
+ import { ShoppingCart } from "./components/shopping-cart/index.js";
2
3
  import { StepIndicator } from "./components/step-indicator/index.js";
3
4
  import { MetricMeter } from "./components/metric-meter/metric-meter.js";
4
5
  import { Footer } from "./components/footer/index.js";
@@ -70,6 +71,7 @@ import { v as v4 } from "./tokens/motion/variables.js";
70
71
  import { v as v5 } from "./tokens/shadow/variables.js";
71
72
  import { v as v6 } from "./tokens/spacing/variables.js";
72
73
  import { v as v7 } from "./tokens/typography/variables.js";
74
+ import { CART_ITEM_TYPE } from "./components/shopping-cart/types.js";
73
75
  import { toast } from "sonner";
74
76
  import { I } from "./components/input/input-group.js";
75
77
  import { T } from "./components/textarea/textarea-group.js";
@@ -82,6 +84,7 @@ export {
82
84
  Box,
83
85
  Breadcrumbs,
84
86
  Button,
87
+ CART_ITEM_TYPE,
85
88
  Card,
86
89
  Carousel,
87
90
  ChannelButton,
@@ -127,6 +130,7 @@ export {
127
130
  Ribbon,
128
131
  ScrollArea,
129
132
  Select,
133
+ ShoppingCart,
130
134
  Skeleton,
131
135
  Slider,
132
136
  Spinner,
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ const shoppingCart = "_shoppingCart_121r0_1";
3
+ const section = "_section_121r0_8";
4
+ const sectionBody = "_sectionBody_121r0_14";
5
+ const sectionInner = "_sectionInner_121r0_22";
6
+ const horizontalRule = "_horizontalRule_121r0_26";
7
+ const heading = "_heading_121r0_43";
8
+ const continueContainer = "_continueContainer_121r0_47";
9
+ const deliveryContainer = "_deliveryContainer_121r0_63";
10
+ const deliveryProgressbar = "_deliveryProgressbar_121r0_69";
11
+ const deliveryProgressbarText = "_deliveryProgressbarText_121r0_77";
12
+ const deliveryLeft = "_deliveryLeft_121r0_81";
13
+ const labelMedium = "_labelMedium_121r0_87";
14
+ const deliveryIcon = "_deliveryIcon_121r0_93";
15
+ const priceUpfrontContainer = "_priceUpfrontContainer_121r0_99";
16
+ const priceMonthlyDetailsTotal = "_priceMonthlyDetailsTotal_121r0_107";
17
+ const priceRow = "_priceRow_121r0_111";
18
+ const tooltipContent = "_tooltipContent_121r0_133";
19
+ const priceMonthlyContainer = "_priceMonthlyContainer_121r0_142";
20
+ const priceMonthlyDetails = "_priceMonthlyDetails_121r0_107";
21
+ const flexRow = "_flexRow_121r0_150";
22
+ const tooltipTrigger = "_tooltipTrigger_121r0_155";
23
+ const progressBarWrapper = "_progressBarWrapper_121r0_163";
24
+ const styles = {
25
+ shoppingCart,
26
+ section,
27
+ sectionBody,
28
+ sectionInner,
29
+ horizontalRule,
30
+ heading,
31
+ continueContainer,
32
+ deliveryContainer,
33
+ deliveryProgressbar,
34
+ deliveryProgressbarText,
35
+ deliveryLeft,
36
+ labelMedium,
37
+ deliveryIcon,
38
+ priceUpfrontContainer,
39
+ priceMonthlyDetailsTotal,
40
+ priceRow,
41
+ tooltipContent,
42
+ priceMonthlyContainer,
43
+ priceMonthlyDetails,
44
+ flexRow,
45
+ tooltipTrigger,
46
+ progressBarWrapper
47
+ };
48
+ exports.styles = styles;
@@ -0,0 +1,49 @@
1
+ const shoppingCart = "_shoppingCart_121r0_1";
2
+ const section = "_section_121r0_8";
3
+ const sectionBody = "_sectionBody_121r0_14";
4
+ const sectionInner = "_sectionInner_121r0_22";
5
+ const horizontalRule = "_horizontalRule_121r0_26";
6
+ const heading = "_heading_121r0_43";
7
+ const continueContainer = "_continueContainer_121r0_47";
8
+ const deliveryContainer = "_deliveryContainer_121r0_63";
9
+ const deliveryProgressbar = "_deliveryProgressbar_121r0_69";
10
+ const deliveryProgressbarText = "_deliveryProgressbarText_121r0_77";
11
+ const deliveryLeft = "_deliveryLeft_121r0_81";
12
+ const labelMedium = "_labelMedium_121r0_87";
13
+ const deliveryIcon = "_deliveryIcon_121r0_93";
14
+ const priceUpfrontContainer = "_priceUpfrontContainer_121r0_99";
15
+ const priceMonthlyDetailsTotal = "_priceMonthlyDetailsTotal_121r0_107";
16
+ const priceRow = "_priceRow_121r0_111";
17
+ const tooltipContent = "_tooltipContent_121r0_133";
18
+ const priceMonthlyContainer = "_priceMonthlyContainer_121r0_142";
19
+ const priceMonthlyDetails = "_priceMonthlyDetails_121r0_107";
20
+ const flexRow = "_flexRow_121r0_150";
21
+ const tooltipTrigger = "_tooltipTrigger_121r0_155";
22
+ const progressBarWrapper = "_progressBarWrapper_121r0_163";
23
+ const styles = {
24
+ shoppingCart,
25
+ section,
26
+ sectionBody,
27
+ sectionInner,
28
+ horizontalRule,
29
+ heading,
30
+ continueContainer,
31
+ deliveryContainer,
32
+ deliveryProgressbar,
33
+ deliveryProgressbarText,
34
+ deliveryLeft,
35
+ labelMedium,
36
+ deliveryIcon,
37
+ priceUpfrontContainer,
38
+ priceMonthlyDetailsTotal,
39
+ priceRow,
40
+ tooltipContent,
41
+ priceMonthlyContainer,
42
+ priceMonthlyDetails,
43
+ flexRow,
44
+ tooltipTrigger,
45
+ progressBarWrapper
46
+ };
47
+ export {
48
+ styles as s
49
+ };