@zenpatient-org/healthspan-marketing-ui 0.2.5 → 0.2.8

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 (29) hide show
  1. package/dist/components/ImageGallery/ImageGallery.cjs.js +1 -1
  2. package/dist/components/ImageGallery/ImageGallery.es.js +7 -7
  3. package/dist/components/PriceDisplay/PriceDisplay.cjs.js +1 -0
  4. package/dist/components/PriceDisplay/PriceDisplay.d.ts +12 -0
  5. package/dist/components/PriceDisplay/PriceDisplay.es.js +55 -0
  6. package/dist/components/PriceDisplay/index.d.ts +2 -0
  7. package/dist/components/PriceDisplay/priceDisplay.module.css +88 -0
  8. package/dist/components/Quote/Quote.cjs.js +1 -0
  9. package/dist/components/Quote/Quote.d.ts +10 -0
  10. package/dist/components/Quote/Quote.es.js +31 -0
  11. package/dist/components/Quote/Quote.module.css +29 -0
  12. package/dist/components/Quote/const.cjs.js +1 -0
  13. package/dist/components/Quote/const.d.ts +7 -0
  14. package/dist/components/Quote/const.es.js +16 -0
  15. package/dist/components/Quote/index.d.ts +2 -0
  16. package/dist/components/RatingPreview/RatingPreview.cjs.js +1 -0
  17. package/dist/components/RatingPreview/RatingPreview.d.ts +8 -0
  18. package/dist/components/RatingPreview/RatingPreview.es.js +25 -0
  19. package/dist/components/RatingPreview/index.d.ts +1 -0
  20. package/dist/components/RatingPreview/ratingPreview.module.css +11 -0
  21. package/dist/pageComponents/ScrollingFeatures/ScrollingFeatures.cjs.js +1 -0
  22. package/dist/pageComponents/ScrollingFeatures/ScrollingFeatures.d.ts +11 -0
  23. package/dist/pageComponents/ScrollingFeatures/ScrollingFeatures.es.js +16 -0
  24. package/dist/pageComponents/ScrollingFeatures/index.d.ts +2 -0
  25. package/dist/pageComponents/ScrollingFeatures/scrollingFeatures.module.css +39 -0
  26. package/dist/utils/periodView.cjs.js +1 -0
  27. package/dist/utils/periodView.d.ts +1 -0
  28. package/dist/utils/periodView.es.js +16 -0
  29. package/package.json +21 -1
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("swiper/modules"),d=require("swiper/react"),q=require("react"),w=require("../../utils/useSwiper/useSwiper.cjs.js"),j=require("../../utils/cn/cn.cjs.js");;/* empty css */;/* empty css */;/* empty css */const i=require("../../src/components/ImageGallery/imageGallery.module.css"),y=require("../Label/Label.cjs.js"),x=require("./components/ImageGalleryPagination/ImageGalleryPagination.cjs.js"),P=require("../GalleryPagination/GalleryPagination.cjs.js"),_=[m.Navigation],v=({images:n,label:a,className:p,pagination:s="preview"})=>{const{activeIndex:t,handleSlideTo:c,handleSlideChange:S,onSwiperInit:h,handleSwiperResize:g,handleUserInteraction:r}=w.useSwiperWithAutoPlay(3e3),o=q.useCallback(l=>{r(),c(l)},[r,c]);return e.jsxs("div",{className:j.cn(i.root,p),children:[a&&e.jsx("div",{className:i.labelWrap,children:e.jsx(y.Label,{color:"black",size:"sm",children:a})}),e.jsx(d.Swiper,{onSwiper:h,onResize:g,onSlideChange:S,onTouchStart:r,onTouchEnd:r,modules:_,spaceBetween:0,slidesPerView:1,className:i.swiper,children:n.map((l,u)=>e.jsx(d.SwiperSlide,{children:e.jsx("div",{className:i.imageWrapper,children:e.jsx("img",{src:l,alt:"product image",className:i.image,onClick:r},u)})},u))}),s==="preview"&&n.length>1&&e.jsx(x.ImageGalleryPagination,{images:n,activeIndex:t,onSelect:o}),s==="plain"&&n.length>1&&e.jsx(P.GalleryPagination,{count:n.length,activeIndex:t,onSelect:o})]})};exports.ImageGallery=v;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("swiper/modules"),d=require("swiper/react"),q=require("react"),w=require("../../utils/useSwiper/useSwiper.cjs.js"),j=require("../../utils/cn/cn.cjs.js");;/* empty css */;/* empty css */;/* empty css */const i=require("../../src/components/ImageGallery/imageGallery.module.css"),y=require("../Label/Label.cjs.js"),x=require("./components/ImageGalleryPagination/ImageGalleryPagination.cjs.js"),P=require("../GalleryPagination/GalleryPagination.cjs.js"),_=[m.Navigation],I=({images:n,label:a,className:p,pagination:s="plain"})=>{const{activeIndex:t,handleSlideTo:c,handleSlideChange:S,onSwiperInit:h,handleSwiperResize:g,handleUserInteraction:r}=w.useSwiperWithAutoPlay(3e3),o=q.useCallback(l=>{r(),c(l)},[r,c]);return e.jsxs("div",{className:j.cn(i.root,p),children:[a&&e.jsx("div",{className:i.labelWrap,children:e.jsx(y.Label,{color:"black",size:"sm",children:a})}),e.jsx(d.Swiper,{onSwiper:h,onResize:g,onSlideChange:S,onTouchStart:r,onTouchEnd:r,modules:_,spaceBetween:0,slidesPerView:1,className:i.swiper,children:n.map((l,u)=>e.jsx(d.SwiperSlide,{children:e.jsx("div",{className:i.imageWrapper,children:e.jsx("img",{src:l,alt:"product image",className:i.image,onClick:r},u)})},u))}),s==="preview"&&n.length>1&&e.jsx(x.ImageGalleryPagination,{images:n,activeIndex:t,onSelect:o}),s==="plain"&&n.length>1&&e.jsx(P.GalleryPagination,{count:n.length,activeIndex:t,onSelect:o})]})};exports.ImageGallery=I;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { jsxs as w, jsx as e } from "react/jsx-runtime";
3
- import { Navigation as f } from "swiper/modules";
4
- import { Swiper as g, SwiperSlide as u } from "swiper/react";
2
+ import { jsxs as f, jsx as e } from "react/jsx-runtime";
3
+ import { Navigation as g } from "swiper/modules";
4
+ import { Swiper as u, SwiperSlide as w } from "swiper/react";
5
5
  import { useCallback as v } from "react";
6
6
  import { useSwiperWithAutoPlay as I } from "../../utils/useSwiper/useSwiper.es.js";
7
7
  import { cn as N } from "../../utils/cn/cn.es.js";
@@ -12,17 +12,17 @@ import o from "../../components/ImageGallery/imageGallery.module.css";
12
12
  import { Label as P } from "../Label/Label.es.js";
13
13
  import { ImageGalleryPagination as y } from "./components/ImageGalleryPagination/ImageGalleryPagination.es.js";
14
14
  import { GalleryPagination as C } from "../GalleryPagination/GalleryPagination.es.js";
15
- const W = [f], D = ({ images: r, label: n, className: s, pagination: t = "preview" }) => {
15
+ const W = [g], D = ({ images: r, label: n, className: s, pagination: t = "plain" }) => {
16
16
  const { activeIndex: a, handleSlideTo: m, handleSlideChange: d, onSwiperInit: h, handleSwiperResize: S, handleUserInteraction: i } = I(3e3), c = v(
17
17
  (l) => {
18
18
  i(), m(l);
19
19
  },
20
20
  [i, m]
21
21
  );
22
- return /* @__PURE__ */ w("div", { className: N(o.root, s), children: [
22
+ return /* @__PURE__ */ f("div", { className: N(o.root, s), children: [
23
23
  n && /* @__PURE__ */ e("div", { className: o.labelWrap, children: /* @__PURE__ */ e(P, { color: "black", size: "sm", children: n }) }),
24
24
  /* @__PURE__ */ e(
25
- g,
25
+ u,
26
26
  {
27
27
  onSwiper: h,
28
28
  onResize: S,
@@ -33,7 +33,7 @@ const W = [f], D = ({ images: r, label: n, className: s, pagination: t = "previe
33
33
  spaceBetween: 0,
34
34
  slidesPerView: 1,
35
35
  className: o.swiper,
36
- children: r.map((l, p) => /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e("div", { className: o.imageWrapper, children: /* @__PURE__ */ e(
36
+ children: r.map((l, p) => /* @__PURE__ */ e(w, { children: /* @__PURE__ */ e("div", { className: o.imageWrapper, children: /* @__PURE__ */ e(
37
37
  "img",
38
38
  {
39
39
  src: l,
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),s=require("../Typography/Typography.cjs.js"),e=require("../../src/components/PriceDisplay/priceDisplay.module.css"),c=require("../../utils/cn/cn.cjs.js"),d=require("../../utils/periodView.cjs.js"),l=({items:i})=>a.jsx("div",{className:e.root,children:i.map((r,n)=>a.jsxs("div",{className:c.cn(e.container,r.display==="double"?e.double:e.single),children:[a.jsx(s.Typography,{as:"p",defaultVariant:r.display==="double"?"bodySm":"bodyLg",className:e.description,children:r.description}),a.jsxs("div",{className:e.priceWrapper,children:[a.jsx(s.Typography,{as:"p",defaultVariant:"bodySm",className:e.prefix,children:r.prefix}),a.jsxs("div",{className:e.priceAmount,children:[a.jsx(s.Typography,{as:"p",defaultVariant:"headingXl",mobileVariant:"headingLg",className:e.price,children:(r.price/100).toFixed(0)}),a.jsx(s.Typography,{as:"p",defaultVariant:"headingXs",mobileVariant:"headingXxs",className:e.currency,children:"$"}),r.period!=="none"&&a.jsxs(s.Typography,{as:"p",defaultVariant:"labelMd",className:e.period,children:["/",d.shortPeriod(r.period)]})]})]})]},n))});exports.PriceDisplay=l;
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type PriceDisplayProps = {
4
+ description: string;
5
+ prefix: string;
6
+ price: number;
7
+ period: 'none' | 'month' | 'year' | 'quarter';
8
+ display: 'single' | 'double';
9
+ };
10
+ export declare const PriceDisplay: React.FC<{
11
+ items: Array<PriceDisplayProps>;
12
+ }>;
@@ -0,0 +1,55 @@
1
+ import { jsx as e, jsxs as d } from "react/jsx-runtime";
2
+ import { Typography as i } from "../Typography/Typography.es.js";
3
+ import a from "../../components/PriceDisplay/priceDisplay.module.css";
4
+ import { cn as o } from "../../utils/cn/cn.es.js";
5
+ import { shortPeriod as n } from "../../utils/periodView.es.js";
6
+ const f = ({ items: s }) => /* @__PURE__ */ e("div", { className: a.root, children: s.map((r, l) => /* @__PURE__ */ d(
7
+ "div",
8
+ {
9
+ className: o(a.container, r.display === "double" ? a.double : a.single),
10
+ children: [
11
+ /* @__PURE__ */ e(
12
+ i,
13
+ {
14
+ as: "p",
15
+ defaultVariant: r.display === "double" ? "bodySm" : "bodyLg",
16
+ className: a.description,
17
+ children: r.description
18
+ }
19
+ ),
20
+ /* @__PURE__ */ d("div", { className: a.priceWrapper, children: [
21
+ /* @__PURE__ */ e(i, { as: "p", defaultVariant: "bodySm", className: a.prefix, children: r.prefix }),
22
+ /* @__PURE__ */ d("div", { className: a.priceAmount, children: [
23
+ /* @__PURE__ */ e(
24
+ i,
25
+ {
26
+ as: "p",
27
+ defaultVariant: "headingXl",
28
+ mobileVariant: "headingLg",
29
+ className: a.price,
30
+ children: (r.price / 100).toFixed(0)
31
+ }
32
+ ),
33
+ /* @__PURE__ */ e(
34
+ i,
35
+ {
36
+ as: "p",
37
+ defaultVariant: "headingXs",
38
+ mobileVariant: "headingXxs",
39
+ className: a.currency,
40
+ children: "$"
41
+ }
42
+ ),
43
+ r.period !== "none" && /* @__PURE__ */ d(i, { as: "p", defaultVariant: "labelMd", className: a.period, children: [
44
+ "/",
45
+ n(r.period)
46
+ ] })
47
+ ] })
48
+ ] })
49
+ ]
50
+ },
51
+ l
52
+ )) });
53
+ export {
54
+ f as PriceDisplay
55
+ };
@@ -0,0 +1,2 @@
1
+ export * from './PriceDisplay';
2
+ export type { PriceDisplayProps } from './PriceDisplay';
@@ -0,0 +1,88 @@
1
+ .root {
2
+ display: flex;
3
+ gap: 2.25rem;
4
+ }
5
+
6
+ @media (max-width: 768px) {
7
+ .root {
8
+ flex-direction: column;
9
+ gap: 1rem;
10
+ padding: 0 1rem;
11
+ }
12
+
13
+ .root > :first-child {
14
+ border-right: none;
15
+ padding-right: 0;
16
+ padding-bottom: 1rem;
17
+ }
18
+ }
19
+
20
+ .container {
21
+ display: flex;
22
+ justify-content: space-between;
23
+ align-items: center;
24
+ gap: 3vw;
25
+ }
26
+
27
+ .container.double {
28
+ flex-direction: column;
29
+ align-items: flex-start;
30
+ gap: 1rem;
31
+ }
32
+
33
+ .container.double:first-child {
34
+ border-right: 1px solid var(--color-neutral-200);
35
+ }
36
+
37
+ @media (max-width: 768px) {
38
+ .container.double {
39
+ flex-direction: row;
40
+ align-items: flex-start;
41
+ }
42
+
43
+ .container.double:first-child {
44
+ border-right: none;
45
+ border-bottom: 1px solid var(--color-neutral-200);
46
+ }
47
+ }
48
+
49
+ .description {
50
+ flex: 1;
51
+ min-width: 0;
52
+ max-width: 25ch;
53
+ }
54
+
55
+ .priceWrapper {
56
+ display: flex;
57
+ gap: 0.25rem;
58
+ flex-direction: column;
59
+ align-items: flex-start;
60
+ text-align: left;
61
+ }
62
+
63
+ .prefix {
64
+ color: var(--color-neutral-500);
65
+ }
66
+
67
+ .priceAmount {
68
+ display: flex;
69
+ align-items: baseline;
70
+ line-height: 1;
71
+ }
72
+
73
+ .price {
74
+ grid-column: 1 / 2;
75
+ grid-row: 1 / 3;
76
+ }
77
+
78
+ .currency {
79
+ grid-column: 2 / 3;
80
+ grid-row: 1 / 2;
81
+ align-self: flex-start;
82
+ }
83
+
84
+ .period {
85
+ grid-column: 2 / 3;
86
+ grid-row: 2 / 3;
87
+ color: var(--color-neutral-500);
88
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("../Typography/Typography.cjs.js"),t=require("../../src/components/Quote/Quote.module.css"),i=require("./const.cjs.js"),u=({prefix:a,color:n,quote:l,source:s,sourcePrefix:c})=>{var o;return e.jsxs("div",{className:t.quoteContainer,children:[e.jsxs("div",{className:t.quoteContent,children:[e.jsx("img",{src:(o=i.prefixSelection[a])==null?void 0:o[n],alt:`${a} icon`,className:t.quoteIcon}),e.jsx(r.Typography,{as:"p",defaultVariant:"preambleSm",mobileVariant:"bodyXl",className:t.quoteText,children:l})]}),s&&e.jsxs(r.Typography,{as:"figcaption",defaultVariant:"labelMd",mobileVariant:"labelSm",emphasis:!0,className:t.quoteAuthor,children:[i.sourcePrefixSelection[c]," ",s]})]})};exports.Quote=u;
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+
3
+ export type QuoteProps = {
4
+ prefix: 'quotation_mark';
5
+ color: 'indigo' | 'ochre' | 'solar' | 'grey';
6
+ quote: string;
7
+ sourcePrefix: 'hyphen' | 'dash';
8
+ source?: string;
9
+ };
10
+ export declare const Quote: React.FC<QuoteProps>;
@@ -0,0 +1,31 @@
1
+ import { jsxs as a, jsx as i } from "react/jsx-runtime";
2
+ import { Typography as l } from "../Typography/Typography.es.js";
3
+ import e from "../../components/Quote/Quote.module.css";
4
+ import { prefixSelection as c, sourcePrefixSelection as p } from "./const.es.js";
5
+ const b = ({ prefix: t, color: s, quote: m, source: o, sourcePrefix: n }) => {
6
+ var r;
7
+ return /* @__PURE__ */ a("div", { className: e.quoteContainer, children: [
8
+ /* @__PURE__ */ a("div", { className: e.quoteContent, children: [
9
+ /* @__PURE__ */ i("img", { src: (r = c[t]) == null ? void 0 : r[s], alt: `${t} icon`, className: e.quoteIcon }),
10
+ /* @__PURE__ */ i(l, { as: "p", defaultVariant: "preambleSm", mobileVariant: "bodyXl", className: e.quoteText, children: m })
11
+ ] }),
12
+ o && /* @__PURE__ */ a(
13
+ l,
14
+ {
15
+ as: "figcaption",
16
+ defaultVariant: "labelMd",
17
+ mobileVariant: "labelSm",
18
+ emphasis: !0,
19
+ className: e.quoteAuthor,
20
+ children: [
21
+ p[n],
22
+ " ",
23
+ o
24
+ ]
25
+ }
26
+ )
27
+ ] });
28
+ };
29
+ export {
30
+ b as Quote
31
+ };
@@ -0,0 +1,29 @@
1
+ .quoteContainer {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 24px;
5
+ margin: 0;
6
+ }
7
+
8
+ .quoteContent {
9
+ display: grid;
10
+ grid-template-columns: auto 1fr;
11
+ align-items: flex-start;
12
+ gap: 1rem;
13
+ }
14
+
15
+ .quoteIcon {
16
+ flex-shrink: 0;
17
+ width: 1.5rem;
18
+ height: auto;
19
+ }
20
+
21
+ .quoteText {
22
+ margin: 0;
23
+ }
24
+
25
+ .quoteAuthor {
26
+ align-self: flex-end;
27
+ text-transform: uppercase;
28
+ color: var(--color-neutral-500);
29
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t={quotation_mark:{indigo:"https://methodical-vitality-96814f361f.media.strapiapp.com/quote_icon_e0242e7418.svg",ochre:"https://methodical-vitality-96814f361f.media.strapiapp.com/ochre_quote_9ed26a4ec7.svg",solar:"https://methodical-vitality-96814f361f.media.strapiapp.com/solar_quote_534860f311.svg",grey:"https://methodical-vitality-96814f361f.media.strapiapp.com/grey_a08b0fedad.svg"}},i={hyphen:e.jsx("span",{children:"—"}),dash:e.jsx("span",{children:"–"})};exports.prefixSelection=t;exports.sourcePrefixSelection=i;
@@ -0,0 +1,7 @@
1
+ export type QuotePrefix = 'quotation_mark';
2
+ export type QuoteColor = 'indigo' | 'ochre' | 'solar' | 'grey';
3
+ export declare const prefixSelection: Record<QuotePrefix, Record<QuoteColor, `https://${string}`>>;
4
+ export declare const sourcePrefixSelection: {
5
+ hyphen: import("react/jsx-runtime").JSX.Element;
6
+ dash: import("react/jsx-runtime").JSX.Element;
7
+ };
@@ -0,0 +1,16 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ const i = {
3
+ quotation_mark: {
4
+ indigo: "https://methodical-vitality-96814f361f.media.strapiapp.com/quote_icon_e0242e7418.svg",
5
+ ochre: "https://methodical-vitality-96814f361f.media.strapiapp.com/ochre_quote_9ed26a4ec7.svg",
6
+ solar: "https://methodical-vitality-96814f361f.media.strapiapp.com/solar_quote_534860f311.svg",
7
+ grey: "https://methodical-vitality-96814f361f.media.strapiapp.com/grey_a08b0fedad.svg"
8
+ }
9
+ }, a = {
10
+ hyphen: /* @__PURE__ */ t("span", { children: "—" }),
11
+ dash: /* @__PURE__ */ t("span", { children: "–" })
12
+ };
13
+ export {
14
+ i as prefixSelection,
15
+ a as sourcePrefixSelection
16
+ };
@@ -0,0 +1,2 @@
1
+ export * from './Quote';
2
+ export type { QuoteProps } from './Quote';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),o=require("../../src/components/RatingPreview/ratingPreview.module.css"),t=require("../Typography/Typography.cjs.js"),c=require("../Icon/Icon.cjs.js"),l=require("../Icon/constants.cjs.js"),u=a=>{const s=Math.round(a*2)/2,n=[];for(let r=0;r<Math.floor(s);r++)n.push(e.jsx(c.Icon,{name:l.EIconName.STAR_FILL,className:o.starIcon},`full-${r}`));return s%1===.5&&n.push(e.jsx(c.Icon,{name:l.EIconName.STAR_HALF,className:o.starIcon},"half")),n},i=({rating:a,text:s})=>e.jsxs("div",{className:o.ratingPreview,children:[e.jsxs(t.Typography,{as:"p",defaultVariant:"labelMd",children:[a.stars," ",u(a.stars)]}),s&&e.jsxs(e.Fragment,{children:[e.jsx(t.Typography,{as:"p",defaultVariant:"labelSm",children:"|"}),e.jsx(t.Typography,{as:"p",defaultVariant:"labelSm",emphasis:!0,children:s})]})]});exports.RatingPreview=i;exports.default=i;
@@ -0,0 +1,8 @@
1
+ export type TRatingPreviewProps = {
2
+ rating: {
3
+ stars: number;
4
+ };
5
+ text?: string;
6
+ };
7
+ export declare const RatingPreview: ({ rating, text }: TRatingPreviewProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default RatingPreview;
@@ -0,0 +1,25 @@
1
+ import { jsxs as n, Fragment as c, jsx as e } from "react/jsx-runtime";
2
+ import l from "../../components/RatingPreview/ratingPreview.module.css";
3
+ import { Typography as o } from "../Typography/Typography.es.js";
4
+ import { Icon as i } from "../Icon/Icon.es.js";
5
+ import { EIconName as m } from "../Icon/constants.es.js";
6
+ const d = (r) => {
7
+ const a = Math.round(r * 2) / 2, s = [];
8
+ for (let t = 0; t < Math.floor(a); t++)
9
+ s.push(/* @__PURE__ */ e(i, { name: m.STAR_FILL, className: l.starIcon }, `full-${t}`));
10
+ return a % 1 === 0.5 && s.push(/* @__PURE__ */ e(i, { name: m.STAR_HALF, className: l.starIcon }, "half")), s;
11
+ }, I = ({ rating: r, text: a }) => /* @__PURE__ */ n("div", { className: l.ratingPreview, children: [
12
+ /* @__PURE__ */ n(o, { as: "p", defaultVariant: "labelMd", children: [
13
+ r.stars,
14
+ " ",
15
+ d(r.stars)
16
+ ] }),
17
+ a && /* @__PURE__ */ n(c, { children: [
18
+ /* @__PURE__ */ e(o, { as: "p", defaultVariant: "labelSm", children: "|" }),
19
+ /* @__PURE__ */ e(o, { as: "p", defaultVariant: "labelSm", emphasis: !0, children: a })
20
+ ] })
21
+ ] });
22
+ export {
23
+ I as RatingPreview,
24
+ I as default
25
+ };
@@ -0,0 +1 @@
1
+ export { RatingPreview } from './RatingPreview';
@@ -0,0 +1,11 @@
1
+ .ratingPreview {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 8px;
5
+ }
6
+
7
+ .starIcon {
8
+ margin-bottom: -1px;
9
+ width: 14px;
10
+ height: 14px;
11
+ }
@@ -0,0 +1 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("../../src/pageComponents/ScrollingFeatures/scrollingFeatures.module.css"),a=require("../../components/InfiniteScroll/InfiniteScroll.cjs.js"),o=require("../../components/Icon/Icon.cjs.js"),l=require("../../components/Typography/Typography.cjs.js"),i=({text:n,icon:c,href:t})=>{const s=e.jsxs(e.Fragment,{children:[e.jsx(o.Icon,{className:r.featureIcon,name:c}),e.jsx(l.Typography,{className:r.featureText,defaultVariant:"labelMd",children:n})]});return t?e.jsx("a",{href:t,className:r.clickableFeature,children:s}):e.jsx("div",{className:r.feature,children:s})},u=({items:n})=>e.jsx("section",{className:r.root,children:n.length>0&&e.jsx("div",{className:r.featuresContainer,children:e.jsx(a.InfiniteScroll,{items:n,renderItem:i})})});exports.ScrollingFeatures=u;
@@ -0,0 +1,11 @@
1
+ import { EIconName } from '../../components/Icon';
2
+
3
+ export type TScrollingFeatureItem = {
4
+ icon: EIconName;
5
+ text: string;
6
+ href?: string;
7
+ };
8
+ export type TScrollingFeatures = {
9
+ items: ReadonlyArray<TScrollingFeatureItem>;
10
+ };
11
+ export declare const ScrollingFeatures: ({ items }: TScrollingFeatures) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { jsx as e, jsxs as c, Fragment as o } from "react/jsx-runtime";
3
+ import r from "../../pageComponents/ScrollingFeatures/scrollingFeatures.module.css";
4
+ import { InfiniteScroll as s } from "../../components/InfiniteScroll/InfiniteScroll.es.js";
5
+ import { Icon as i } from "../../components/Icon/Icon.es.js";
6
+ import { Typography as m } from "../../components/Typography/Typography.es.js";
7
+ const d = ({ text: a, icon: l, href: t }) => {
8
+ const n = /* @__PURE__ */ c(o, { children: [
9
+ /* @__PURE__ */ e(i, { className: r.featureIcon, name: l }),
10
+ /* @__PURE__ */ e(m, { className: r.featureText, defaultVariant: "labelMd", children: a })
11
+ ] });
12
+ return t ? /* @__PURE__ */ e("a", { href: t, className: r.clickableFeature, children: n }) : /* @__PURE__ */ e("div", { className: r.feature, children: n });
13
+ }, g = ({ items: a }) => /* @__PURE__ */ e("section", { className: r.root, children: a.length > 0 && /* @__PURE__ */ e("div", { className: r.featuresContainer, children: /* @__PURE__ */ e(s, { items: a, renderItem: d }) }) });
14
+ export {
15
+ g as ScrollingFeatures
16
+ };
@@ -0,0 +1,2 @@
1
+ export { ScrollingFeatures } from './ScrollingFeatures';
2
+ export type { TScrollingFeatures } from './ScrollingFeatures';
@@ -0,0 +1,39 @@
1
+ .root {
2
+ display: flex;
3
+ width: 100%;
4
+ }
5
+
6
+ .featuresContainer {
7
+ padding: 16px 0;
8
+ }
9
+
10
+ .feature,
11
+ .clickableFeature {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 12px;
15
+ padding: 0 40px;
16
+ }
17
+
18
+ .clickableFeature {
19
+ cursor: pointer;
20
+ text-decoration: none;
21
+ color: var(--color-text-primary);
22
+ }
23
+
24
+ .featureText {
25
+ line-height: 110%;
26
+ letter-spacing: -0.42px;
27
+ }
28
+
29
+ .featureIcon {
30
+ margin-top: -2px;
31
+ width: 16px;
32
+ height: 16px;
33
+ }
34
+
35
+ @media screen and (width <= 768px) {
36
+ .feature {
37
+ padding: 0 24px;
38
+ }
39
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=e=>{switch(e){case"month":return"mo";case"year":return"yr";case"quarter":return"qtr";case"none":default:return""}};exports.shortPeriod=r;
@@ -0,0 +1 @@
1
+ export declare const shortPeriod: (period: "none" | "month" | "year" | "quarter") => "" | "mo" | "yr" | "qtr";
@@ -0,0 +1,16 @@
1
+ const e = (r) => {
2
+ switch (r) {
3
+ case "month":
4
+ return "mo";
5
+ case "year":
6
+ return "yr";
7
+ case "quarter":
8
+ return "qtr";
9
+ case "none":
10
+ default:
11
+ return "";
12
+ }
13
+ };
14
+ export {
15
+ e as shortPeriod
16
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenpatient-org/healthspan-marketing-ui",
3
- "version": "0.2.5",
3
+ "version": "0.2.8",
4
4
  "description": "Design system",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.es.js",
@@ -160,6 +160,11 @@
160
160
  "import": "./dist/components/Tabs/Tabs.es.js",
161
161
  "require": "./dist/components/Tabs/Tabs.cjs.js"
162
162
  },
163
+ "./Quotes": {
164
+ "types": "./dist/components/Quotes/index.d.ts",
165
+ "import": "./dist/components/Quotes/Quotes.es.js",
166
+ "require": "./dist/components/Quotes/Quotes.cjs.js"
167
+ },
163
168
  "./StudyGridCard": {
164
169
  "types": "./dist/components/StudyGridCard/StudyGridCard.d.ts",
165
170
  "import": "./dist/components/StudyGridCard/StudyGridCard.es.js",
@@ -170,6 +175,11 @@
170
175
  "import": "./dist/components/ProgramCard/ProgramCard.es.js",
171
176
  "require": "./dist/components/ProgramCard/ProgramCard.cjs.js"
172
177
  },
178
+ "./PriceDisplayComponent": {
179
+ "types": "./dist/components/PriceDisplayComponent/PriceDisplayComponent.d.ts",
180
+ "import": "./dist/components/PriceDisplayComponent/PriceDisplayComponent.es.js",
181
+ "require": "./dist/components/PriceDisplayComponent/PriceDisplayComponent.cjs.js"
182
+ },
173
183
  "./ProductGalleryCard": {
174
184
  "types": "./dist/components/ProductGalleryCard/ProductGalleryCard.d.ts",
175
185
  "import": "./dist/components/ProductGalleryCard/ProductGalleryCard.es.js",
@@ -660,6 +670,16 @@
660
670
  "import": "./dist/modules/ImageWithBenefits/ImageWithBenefits.es.js",
661
671
  "require": "./dist/modules/ImageWithBenefits/ImageWithBenefits.cjs.js"
662
672
  },
673
+ "./ScrollingFeatures": {
674
+ "types": "./dist/pageComponents/ScrollingFeatures/ScrollingFeatures.d.ts",
675
+ "import": "./dist/pageComponents/ScrollingFeatures/ScrollingFeatures.es.js",
676
+ "require": "./dist/pageComponents/ScrollingFeatures/ScrollingFeatures.cjs.js"
677
+ },
678
+ "./RatingPreview": {
679
+ "types": "./dist/components/RatingPreview/RatingPreview.d.ts",
680
+ "import": "./dist/components/RatingPreview/RatingPreview.es.js",
681
+ "require": "./dist/components/RatingPreview/RatingPreview.cjs.js"
682
+ },
663
683
  "./dist/*.css": "./dist/*.css",
664
684
  "./dist/**/*.module.css": "./dist/**/*.module.css",
665
685
  "./styles/core": {