@purpurds/countdown 0.0.1

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.
@@ -0,0 +1,45 @@
1
+ Name: @purpurds/paragraph
2
+ Version: 8.7.0
3
+ License: AGPL-3.0-only
4
+ Private: false
5
+
6
+ ---
7
+
8
+ Name: @purpurds/visually-hidden
9
+ Version: 8.7.0
10
+ License: AGPL-3.0-only
11
+ Private: false
12
+
13
+ ---
14
+
15
+ Name: classnames
16
+ Version: 2.5.1
17
+ License: MIT
18
+ Private: false
19
+ Description: A simple utility for conditionally joining classNames together
20
+ Repository: git+https://github.com/JedWatson/classnames.git
21
+ Author: Jed Watson
22
+ License Copyright:
23
+ ===
24
+
25
+ The MIT License (MIT)
26
+
27
+ Copyright (c) 2018 Jed Watson
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining a copy
30
+ of this software and associated documentation files (the "Software"), to deal
31
+ in the Software without restriction, including without limitation the rights
32
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
33
+ copies of the Software, and to permit persons to whom the Software is
34
+ furnished to do so, subject to the following conditions:
35
+
36
+ The above copyright notice and this permission notice shall be included in all
37
+ copies or substantial portions of the Software.
38
+
39
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
40
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
42
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
43
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
44
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
45
+ SOFTWARE.
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),f=require("react");require("react-dom");function J(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,o.get?o:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const p=J(f);function Q(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var A={exports:{}};/*!
2
+ Copyright (c) 2018 Jed Watson.
3
+ Licensed under the MIT License (MIT), see
4
+ http://jedwatson.github.io/classnames
5
+ */var T;function U(){return T||(T=1,(function(r){(function(){var e={}.hasOwnProperty;function t(){for(var n="",a=0;a<arguments.length;a++){var i=arguments[a];i&&(n=u(n,o.call(this,i)))}return n}function o(n){if(typeof n=="string"||typeof n=="number")return this&&this[n]||n;if(typeof n!="object")return"";if(Array.isArray(n))return t.apply(this,n);if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]"))return n.toString();var a="";for(var i in n)e.call(n,i)&&n[i]&&(a=u(a,this&&this[i]||i));return a}function u(n,a){return a?n?n+" "+a:n+a:n}r.exports?(t.default=t,r.exports=t):window.classNames=t})()})(A)),A.exports}var X=U();const Y=Q(X),rr={"purpur-paragraph":"_purpur-paragraph_1rh57_1","purpur-paragraph--disabled":"_purpur-paragraph--disabled_1rh57_7","purpur-paragraph--hyphens":"_purpur-paragraph--hyphens_1rh57_10","purpur-paragraph--negative":"_purpur-paragraph--negative_1rh57_13","purpur-paragraph--paragraph-100":"_purpur-paragraph--paragraph-100_1rh57_16","purpur-paragraph--paragraph-100-medium":"_purpur-paragraph--paragraph-100-medium_1rh57_22","purpur-paragraph--paragraph-100-bold":"_purpur-paragraph--paragraph-100-bold_1rh57_29","purpur-paragraph--paragraph-200":"_purpur-paragraph--paragraph-200_1rh57_36","purpur-paragraph--preamble-100":"_purpur-paragraph--preamble-100_1rh57_42","purpur-paragraph--preamble-200":"_purpur-paragraph--preamble-200_1rh57_48","purpur-paragraph--additional-100":"_purpur-paragraph--additional-100_1rh57_54","purpur-paragraph--additional-100-medium":"_purpur-paragraph--additional-100-medium_1rh57_60","purpur-paragraph--overline-100":"_purpur-paragraph--overline-100_1rh57_67","purpur-paragraph--overline-200":"_purpur-paragraph--overline-200_1rh57_75"},nr=Y.bind(rr),tr={PARAGRAPH100:"paragraph-100"},b="purpur-paragraph",N=({children:r,className:e,disabled:t,enableHyphenation:o=!1,negative:u=!1,variant:n=tr.PARAGRAPH100,...a})=>{const i=nr(e,b,`${b}--${n}`,{[`${b}--hyphens`]:o,[`${b}--disabled`]:t,[`${b}--negative`]:u});return s.jsx("p",{...a,className:i,children:r})};N.displayName="Paragraph";function z(r,e){if(typeof r=="function")return r(e);r!=null&&(r.current=e)}function er(...r){return e=>{let t=!1;const o=r.map(u=>{const n=z(u,e);return!t&&typeof n=="function"&&(t=!0),n});if(t)return()=>{for(let u=0;u<o.length;u++){const n=o[u];typeof n=="function"?n():z(r[u],null)}}}}function ar(r){const e=or(r),t=p.forwardRef((o,u)=>{const{children:n,...a}=o,i=p.Children.toArray(n),l=i.find(ir);if(l){const h=l.props.children,y=i.map(d=>d===l?p.Children.count(h)>1?p.Children.only(null):p.isValidElement(h)?h.props.children:null:d);return s.jsx(e,{...a,ref:u,children:p.isValidElement(h)?p.cloneElement(h,void 0,y):null})}return s.jsx(e,{...a,ref:u,children:n})});return t.displayName=`${r}.Slot`,t}function or(r){const e=p.forwardRef((t,o)=>{const{children:u,...n}=t;if(p.isValidElement(u)){const a=pr(u),i=sr(n,u.props);return u.type!==p.Fragment&&(i.ref=o?er(o,a):a),p.cloneElement(u,i)}return p.Children.count(u)>1?p.Children.only(null):null});return e.displayName=`${r}.SlotClone`,e}var ur=Symbol("radix.slottable");function ir(r){return p.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===ur}function sr(r,e){const t={...e};for(const o in e){const u=r[o],n=e[o];/^on[A-Z]/.test(o)?u&&n?t[o]=(...a)=>{n(...a),u(...a)}:u&&(t[o]=u):o==="style"?t[o]={...u,...n}:o==="className"&&(t[o]=[u,n].filter(Boolean).join(" "))}return{...r,...t}}function pr(r){var e,t;let o=(e=Object.getOwnPropertyDescriptor(r.props,"ref"))==null?void 0:e.get,u=o&&"isReactWarning"in o&&o.isReactWarning;return u?r.ref:(o=(t=Object.getOwnPropertyDescriptor(r,"ref"))==null?void 0:t.get,u=o&&"isReactWarning"in o&&o.isReactWarning,u?r.props.ref:r.props.ref||r.ref)}var cr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],lr=cr.reduce((r,e)=>{const t=ar(`Primitive.${e}`),o=p.forwardRef((u,n)=>{const{asChild:a,...i}=u,l=a?t:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(l,{...i,ref:n})});return o.displayName=`Primitive.${e}`,{...r,[e]:o}},{}),dr="VisuallyHidden",V=p.forwardRef((r,e)=>s.jsx(lr.span,{...r,ref:e,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...r.style}}));V.displayName=dr;var fr=V;const hr=({asChild:r,children:e,...t})=>s.jsx(fr,{asChild:r,...t,children:e});function _r(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var O={exports:{}};/*!
6
+ Copyright (c) 2018 Jed Watson.
7
+ Licensed under the MIT License (MIT), see
8
+ http://jedwatson.github.io/classnames
9
+ */var M;function mr(){return M||(M=1,(function(r){(function(){var e={}.hasOwnProperty;function t(){for(var n="",a=0;a<arguments.length;a++){var i=arguments[a];i&&(n=u(n,o.call(this,i)))}return n}function o(n){if(typeof n=="string"||typeof n=="number")return this&&this[n]||n;if(typeof n!="object")return"";if(Array.isArray(n))return t.apply(this,n);if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]"))return n.toString();var a="";for(var i in n)e.call(n,i)&&n[i]&&(a=u(a,this&&this[i]||i));return a}function u(n,a){return a?n?n+" "+a:n+a:n}r.exports?(t.default=t,r.exports=t):window.classNames=t})()})(O)),O.exports}var gr=mr();const W=_r(gr),yr={"purpur-countdown--size-md":"_purpur-countdown--size-md_1ljp4_1","purpur-countdown--size-lg":"_purpur-countdown--size-lg_1ljp4_5","purpur-countdown":"_purpur-countdown_1ljp4_1","purpur-countdown--variant-primary":"_purpur-countdown--variant-primary_1ljp4_12","purpur-countdown--variant-secondary":"_purpur-countdown--variant-secondary_1ljp4_15","purpur-countdown--negative":"_purpur-countdown--negative_1ljp4_18","purpur-countdown--fullwidth":"_purpur-countdown--fullwidth_1ljp4_22","purpur-countdown--showdays":"_purpur-countdown--showdays_1ljp4_28","purpur-countdown__counter-container":"_purpur-countdown__counter-container_1ljp4_36","purpur-countdown__label":"_purpur-countdown__label_1ljp4_41"},wr={"purpur-countdown-counter--size-lg":"_purpur-countdown-counter--size-lg_vx98f_1","purpur-countdown-counter--size-md":"_purpur-countdown-counter--size-md_vx98f_7","purpur-countdown-counter":"_purpur-countdown-counter_vx98f_1","purpur-countdown-counter__number":"_purpur-countdown-counter__number_vx98f_23","tick-animation":"_tick-animation_vx98f_1","tick-animation-pseudo":"_tick-animation-pseudo_vx98f_1","purpur-countdown-counter__label":"_purpur-countdown-counter__label_vx98f_44"};function R(r){const e=new Date().getTime(),t=Math.abs(r-e);let o=0,u=0,n=0,a=0;return t>=c.day&&(a=Math.floor(t/c.day)),t>=c.hour&&(n=Math.floor(t%c.day/c.hour)),t>=c.minute&&(u=Math.floor(t%c.hour/c.minute)),t>=c.second&&(o=Math.floor(t%c.minute/c.second)),{seconds:o,minutes:u,hours:n,days:a}}function D(r,e){let t=0;return e==="seconds"&&(t=r-1>=0?r-1:59),e==="minutes"&&(t=r-1>=0?r-1:59),e==="hours"&&(t=r-1>=0?r-1:23),e==="days"&&(t=r-1>=0?r-1:0),t}const c={day:1440*60*1e3,hour:3600*1e3,minute:60*1e3,second:1e3},C=W.bind(wr),x="purpur-countdown-counter",E=new Map,$=({tag:r,size:e,end:t,counterLabels:o})=>{const u=f.useRef(null),n=`${r}-interval`,[a,i]=f.useState(R(t)[r]),[l,h]=f.useState(D(a,r)),[y,d]=f.useState(0),j=f.useCallback(()=>{const m=R(t),S=D(m[r],r);h(S),i(m[r])},[t,r]);f.useEffect(()=>(E.set(n,setInterval(j,c.second)),()=>clearInterval(E.get(n))),[j,n]),f.useEffect(()=>{d(m=>m+1)},[a]);const w=o[r];return s.jsxs("div",{className:C(x),role:"group","aria-hidden":"true","data-testid":`counter-${r}`,children:[s.jsx(N,{className:C(`${x}__number`,`${x}--size-${e}`),ref:u,"data-tick":l,children:a},y),s.jsx(N,{className:C(`${x}__label`),children:w})]})},P=W.bind(yr),_="purpur-countdown",I=new Date,k=f.forwardRef(({renderAfterEnd:r,renderBeforeStart:e,...t},o)=>{const u=f.useId(),{size:n="lg",fullWidth:a=!1,negative:i=!1,showDays:l=!0,variant:h="primary",className:y,counterLabels:d}=t,j=new Date(t.starttime).getTime(),w=new Date(t.endtime).getTime(),m=j>I.getTime(),S=w<I.getTime();if(m)return e?e(t):null;if(S)return r?r(t):null;const q=()=>{const g={size:n,end:w,counterLabels:d};return s.jsxs(s.Fragment,{children:[l&&s.jsx($,{tag:"days",...g}),s.jsx($,{tag:"hours",...g}),s.jsx($,{tag:"minutes",...g}),s.jsx($,{tag:"seconds",...g})]})},H=()=>{const g=()=>{const{days:G,hours:K,minutes:L,seconds:Z}=R(w),v=[];return l&&v.push(`${G} ${d.days}`),v.push(`${K} ${d.hours}`),v.push(`${L} ${d.minutes}`),v.push(`${Z} ${d.seconds}`),v.join(", ")};return s.jsx(hr,{"data-testid":"live-region","aria-live":"polite","aria-label":t["aria-label"],children:g()})},F=q(),B=P([_,`${_}--size-${n}`,`${_}--variant-${h}`,{[`${_}--fullwidth`]:a,[`${_}--negative`]:i,[`${_}--showdays`]:l},y]);return s.jsxs("section",{id:u,className:B,ref:o,role:"timer","data-testid":t["data-testid"],children:[H(),t.label&&s.jsx(N,{className:P(`${_}__label`),variant:"paragraph-100-medium",children:t.label}),s.jsx("div",{className:P(`${_}__counter-container`),children:F})]})});k.displayName="Countdown";exports.Countdown=k;
10
+ //# sourceMappingURL=countdown.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countdown.cjs.js","sources":["../../paragraph/dist/paragraph.es.js","../../visually-hidden/dist/visually-hidden.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/utils.ts","../src/counter.tsx","../src/countdown.tsx"],"sourcesContent":["import { jsx as l } from \"react/jsx-runtime\";\nfunction g(p) {\n return p && p.__esModule && Object.prototype.hasOwnProperty.call(p, \"default\") ? p.default : p;\n}\nvar o = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar s;\nfunction _() {\n return s || (s = 1, (function(p) {\n (function() {\n var n = {}.hasOwnProperty;\n function u() {\n for (var r = \"\", a = 0; a < arguments.length; a++) {\n var e = arguments[a];\n e && (r = h(r, i.call(this, e)));\n }\n return r;\n }\n function i(r) {\n if (typeof r == \"string\" || typeof r == \"number\")\n return this && this[r] || r;\n if (typeof r != \"object\")\n return \"\";\n if (Array.isArray(r))\n return u.apply(this, r);\n if (r.toString !== Object.prototype.toString && !r.toString.toString().includes(\"[native code]\"))\n return r.toString();\n var a = \"\";\n for (var e in r)\n n.call(r, e) && r[e] && (a = h(a, this && this[e] || e));\n return a;\n }\n function h(r, a) {\n return a ? r ? r + \" \" + a : r + a : r;\n }\n p.exports ? (u.default = u, p.exports = u) : window.classNames = u;\n })();\n })(o)), o.exports;\n}\nvar d = _();\nconst c = /* @__PURE__ */ g(d), f = {\n \"purpur-paragraph\": \"_purpur-paragraph_1rh57_1\",\n \"purpur-paragraph--disabled\": \"_purpur-paragraph--disabled_1rh57_7\",\n \"purpur-paragraph--hyphens\": \"_purpur-paragraph--hyphens_1rh57_10\",\n \"purpur-paragraph--negative\": \"_purpur-paragraph--negative_1rh57_13\",\n \"purpur-paragraph--paragraph-100\": \"_purpur-paragraph--paragraph-100_1rh57_16\",\n \"purpur-paragraph--paragraph-100-medium\": \"_purpur-paragraph--paragraph-100-medium_1rh57_22\",\n \"purpur-paragraph--paragraph-100-bold\": \"_purpur-paragraph--paragraph-100-bold_1rh57_29\",\n \"purpur-paragraph--paragraph-200\": \"_purpur-paragraph--paragraph-200_1rh57_36\",\n \"purpur-paragraph--preamble-100\": \"_purpur-paragraph--preamble-100_1rh57_42\",\n \"purpur-paragraph--preamble-200\": \"_purpur-paragraph--preamble-200_1rh57_48\",\n \"purpur-paragraph--additional-100\": \"_purpur-paragraph--additional-100_1rh57_54\",\n \"purpur-paragraph--additional-100-medium\": \"_purpur-paragraph--additional-100-medium_1rh57_60\",\n \"purpur-paragraph--overline-100\": \"_purpur-paragraph--overline-100_1rh57_67\",\n \"purpur-paragraph--overline-200\": \"_purpur-paragraph--overline-200_1rh57_75\"\n}, m = c.bind(f), A = {\n PARAGRAPH100: \"paragraph-100\",\n PARAGRAPH100MEDIUM: \"paragraph-100-medium\",\n PARAGRAPH100BOLD: \"paragraph-100-bold\",\n PARAGRAPH200: \"paragraph-200\",\n PREAMBLE100: \"preamble-100\",\n PREAMBLE200: \"preamble-200\",\n ADDITIONAL100: \"additional-100\",\n ADDITIONAL100MEDIUM: \"additional-100-medium\",\n OVERLINE100: \"overline-100\",\n OVERLINE200: \"overline-200\"\n}, t = \"purpur-paragraph\", b = ({\n children: p,\n className: n,\n disabled: u,\n enableHyphenation: i = !1,\n negative: h = !1,\n variant: r = A.PARAGRAPH100,\n ...a\n}) => {\n const e = m(n, t, `${t}--${r}`, {\n [`${t}--hyphens`]: i,\n [`${t}--disabled`]: u,\n [`${t}--negative`]: h\n });\n return /* @__PURE__ */ l(\"p\", { ...a, className: e, children: p });\n};\nb.displayName = \"Paragraph\";\nexport {\n b as Paragraph,\n A as ParagraphVariant\n};\n//# sourceMappingURL=paragraph.es.js.map\n","import { jsx as u } from \"react/jsx-runtime\";\nimport * as l from \"react\";\nimport \"react-dom\";\nfunction d(e, n) {\n if (typeof e == \"function\")\n return e(n);\n e != null && (e.current = n);\n}\nfunction h(...e) {\n return (n) => {\n let i = !1;\n const r = e.map((t) => {\n const o = d(t, n);\n return !i && typeof o == \"function\" && (i = !0), o;\n });\n if (i)\n return () => {\n for (let t = 0; t < r.length; t++) {\n const o = r[t];\n typeof o == \"function\" ? o() : d(e[t], null);\n }\n };\n };\n}\n// @__NO_SIDE_EFFECTS__\nfunction g(e) {\n const n = /* @__PURE__ */ v(e), i = l.forwardRef((r, t) => {\n const { children: o, ...a } = r, s = l.Children.toArray(o), c = s.find(S);\n if (c) {\n const f = c.props.children, y = s.map((p) => p === c ? l.Children.count(f) > 1 ? l.Children.only(null) : l.isValidElement(f) ? f.props.children : null : p);\n return /* @__PURE__ */ u(n, { ...a, ref: t, children: l.isValidElement(f) ? l.cloneElement(f, void 0, y) : null });\n }\n return /* @__PURE__ */ u(n, { ...a, ref: t, children: o });\n });\n return i.displayName = `${e}.Slot`, i;\n}\n// @__NO_SIDE_EFFECTS__\nfunction v(e) {\n const n = l.forwardRef((i, r) => {\n const { children: t, ...o } = i;\n if (l.isValidElement(t)) {\n const a = E(t), s = C(o, t.props);\n return t.type !== l.Fragment && (s.ref = r ? h(r, a) : a), l.cloneElement(t, s);\n }\n return l.Children.count(t) > 1 ? l.Children.only(null) : null;\n });\n return n.displayName = `${e}.SlotClone`, n;\n}\nvar w = Symbol(\"radix.slottable\");\nfunction S(e) {\n return l.isValidElement(e) && typeof e.type == \"function\" && \"__radixId\" in e.type && e.type.__radixId === w;\n}\nfunction C(e, n) {\n const i = { ...n };\n for (const r in n) {\n const t = e[r], o = n[r];\n /^on[A-Z]/.test(r) ? t && o ? i[r] = (...s) => {\n o(...s), t(...s);\n } : t && (i[r] = t) : r === \"style\" ? i[r] = { ...t, ...o } : r === \"className\" && (i[r] = [t, o].filter(Boolean).join(\" \"));\n }\n return { ...e, ...i };\n}\nfunction E(e) {\n var r, t;\n let n = (r = Object.getOwnPropertyDescriptor(e.props, \"ref\")) == null ? void 0 : r.get, i = n && \"isReactWarning\" in n && n.isReactWarning;\n return i ? e.ref : (n = (t = Object.getOwnPropertyDescriptor(e, \"ref\")) == null ? void 0 : t.get, i = n && \"isReactWarning\" in n && n.isReactWarning, i ? e.props.ref : e.props.ref || e.ref);\n}\nvar R = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"span\",\n \"svg\",\n \"ul\"\n], b = R.reduce((e, n) => {\n const i = /* @__PURE__ */ g(`Primitive.${n}`), r = l.forwardRef((t, o) => {\n const { asChild: a, ...s } = t, c = a ? i : n;\n return typeof window < \"u\" && (window[Symbol.for(\"radix-ui\")] = !0), /* @__PURE__ */ u(c, { ...s, ref: o });\n });\n return r.displayName = `Primitive.${n}`, { ...e, [n]: r };\n}, {}), N = \"VisuallyHidden\", m = l.forwardRef(\n (e, n) => /* @__PURE__ */ u(\n b.span,\n {\n ...e,\n ref: n,\n style: {\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n ...e.style\n }\n }\n )\n);\nm.displayName = N;\nvar P = m;\nconst O = ({ asChild: e, children: n, ...i }) => /* @__PURE__ */ u(P, { asChild: e, ...i, children: n });\nexport {\n O as VisuallyHidden\n};\n//# sourceMappingURL=visually-hidden.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue.call(this, arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn this && this[arg] || arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(this, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, this && this[key] || key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export function getDiffs(endtime: number) {\n const now = new Date().getTime();\n const diffInMs = Math.abs(endtime - now);\n\n let seconds = 0,\n minutes = 0,\n hours = 0,\n days = 0;\n\n if (diffInMs >= inMs.day) {\n days = Math.floor(diffInMs / inMs.day);\n }\n if (diffInMs >= inMs.hour) {\n hours = Math.floor((diffInMs % inMs.day) / inMs.hour);\n }\n if (diffInMs >= inMs.minute) {\n minutes = Math.floor((diffInMs % inMs.hour) / inMs.minute);\n }\n if (diffInMs >= inMs.second) {\n seconds = Math.floor((diffInMs % inMs.minute) / inMs.second);\n }\n\n return {\n seconds,\n minutes,\n hours,\n days,\n };\n}\n\nexport function getNext(time: number, tag: string) {\n let r = 0;\n if (tag === \"seconds\") r = time - 1 >= 0 ? time - 1 : 59;\n if (tag === \"minutes\") r = time - 1 >= 0 ? time - 1 : 59;\n if (tag === \"hours\") r = time - 1 >= 0 ? time - 1 : 23;\n if (tag === \"days\") r = time - 1 >= 0 ? time - 1 : 0;\n return r;\n}\n\nexport const inMs = {\n day: 24 * 60 * 60 * 1000,\n hour: 60 * 60 * 1000,\n minute: 60 * 1000,\n second: 1000,\n};\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Paragraph } from \"@purpurds/paragraph\";\nimport c from \"classnames/bind\";\n\nimport { type CounterLabels } from \"./countdown.types\";\nimport styles from \"./counter.module.scss\";\nimport { getDiffs, getNext, inMs } from \"./utils\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown-counter\";\n\ninterface CounterProps {\n end: number;\n size: \"md\" | \"lg\";\n tag: \"days\" | \"hours\" | \"minutes\" | \"seconds\";\n counterLabels: CounterLabels;\n}\n\nconst intervals: Map<string, ReturnType<typeof setInterval>> = new Map();\n\nexport const Counter = ({ tag, size, end, counterLabels }: CounterProps) => {\n const ref = useRef<HTMLHeadingElement>(null);\n const id = `${tag}-interval`;\n\n const [currentTime, setCurrentTime] = useState(getDiffs(end)[tag]);\n const [nextTime, setNextTime] = useState(getNext(currentTime, tag));\n const [animationKey, setAnimationKey] = useState(0);\n\n const checktime = useCallback(() => {\n const diffs = getDiffs(end);\n const next = getNext(diffs[tag], tag);\n\n setNextTime(next);\n setCurrentTime(diffs[tag]);\n }, [end, tag]);\n\n useEffect(() => {\n intervals.set(id, setInterval(checktime, inMs.second));\n return () => clearInterval(intervals.get(id)!);\n }, [checktime, id]);\n\n useEffect(() => {\n setAnimationKey((prev) => prev + 1);\n }, [currentTime]);\n\n const counterTag = counterLabels[tag];\n\n return (\n <div\n className={cx(rootClassName)}\n role=\"group\"\n aria-hidden=\"true\"\n data-testid={`counter-${tag}`}\n >\n <Paragraph\n className={cx(`${rootClassName}__number`, `${rootClassName}--size-${size}`)}\n ref={ref}\n data-tick={nextTime}\n key={animationKey}\n >\n {currentTime}\n </Paragraph>\n <Paragraph className={cx(`${rootClassName}__label`)}>{counterTag}</Paragraph>\n </div>\n );\n};\n","import React, { type ForwardedRef, forwardRef, useId } from \"react\";\nimport { Paragraph } from \"@purpurds/paragraph\";\nimport { VisuallyHidden } from \"@purpurds/visually-hidden\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./countdown.module.scss\";\nimport { type CountdownProps } from \"./countdown.types\";\nimport { Counter } from \"./counter\";\nimport { getDiffs } from \"./utils\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown\";\n\nconst now = new Date();\n\n/**\n * Countdown component to display a countdown timer.\n * @param props - CountdownProps\n * @returns A React component that displays a countdown timer.\n */\n\nexport const Countdown = forwardRef(\n (\n { renderAfterEnd, renderBeforeStart, ...props }: CountdownProps,\n ref: ForwardedRef<HTMLButtonElement>\n ) => {\n const id = useId();\n\n const {\n size = \"lg\",\n fullWidth = false,\n negative = false,\n showDays = true,\n variant = \"primary\",\n className,\n counterLabels,\n } = props;\n\n const start = new Date(props.starttime).getTime();\n const end = new Date(props.endtime).getTime();\n\n const hasNotStarted = start > now.getTime();\n const hasEnded = end < now.getTime();\n\n if (hasNotStarted) return renderBeforeStart ? renderBeforeStart(props) : null;\n if (hasEnded) return renderAfterEnd ? renderAfterEnd(props) : null;\n\n const getCounters = () => {\n const counterProps = { size, end, counterLabels };\n\n return (\n <>\n {showDays && <Counter tag=\"days\" {...counterProps} />}\n <Counter tag=\"hours\" {...counterProps} />\n <Counter tag=\"minutes\" {...counterProps} />\n <Counter tag=\"seconds\" {...counterProps} />\n </>\n );\n };\n\n // Create a single announcement of the current time (only once)\n\n const renderAnnouncer = () => {\n const getTimeAnnouncement = () => {\n const { days, hours, minutes, seconds } = getDiffs(end);\n\n const parts = [];\n\n if (showDays) parts.push(`${days} ${counterLabels.days}`);\n parts.push(`${hours} ${counterLabels.hours}`);\n parts.push(`${minutes} ${counterLabels.minutes}`);\n parts.push(`${seconds} ${counterLabels.seconds}`);\n\n return parts.join(\", \");\n };\n\n return (\n <VisuallyHidden\n data-testid=\"live-region\"\n aria-live=\"polite\"\n aria-label={props[\"aria-label\"]}\n >\n {getTimeAnnouncement()}\n </VisuallyHidden>\n );\n };\n\n const counters = getCounters();\n\n const classes = cx([\n rootClassName,\n `${rootClassName}--size-${size}`,\n `${rootClassName}--variant-${variant}`,\n {\n [`${rootClassName}--fullwidth`]: fullWidth,\n [`${rootClassName}--negative`]: negative,\n [`${rootClassName}--showdays`]: showDays,\n },\n className,\n ]);\n\n return (\n <section\n id={id}\n className={classes}\n ref={ref}\n role=\"timer\"\n data-testid={props[\"data-testid\"]}\n >\n {/* Visually hidden live region that announces time only once */}\n {renderAnnouncer()}\n {props.label && (\n <Paragraph className={cx(`${rootClassName}__label`)} variant=\"paragraph-100-medium\">\n {props.label}\n </Paragraph>\n )}\n <div className={cx(`${rootClassName}__counter-container`)}>{counters}</div>\n </section>\n );\n }\n);\n\nCountdown.displayName = \"Countdown\";\n"],"names":["g","p","o","s","_","n","u","r","e","h","i","d","c","f","m","A","t","b","l","v","S","E","C","w","R","N","P","O","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","getDiffs","endtime","now","diffInMs","seconds","minutes","hours","days","inMs","getNext","time","tag","cx","styles","rootClassName","intervals","Counter","size","end","counterLabels","ref","useRef","id","currentTime","setCurrentTime","useState","nextTime","setNextTime","animationKey","setAnimationKey","checktime","useCallback","diffs","next","useEffect","prev","counterTag","jsxs","jsx","Paragraph","Countdown","forwardRef","renderAfterEnd","renderBeforeStart","props","useId","fullWidth","negative","showDays","variant","className","start","hasNotStarted","hasEnded","getCounters","counterProps","Fragment","renderAnnouncer","getTimeAnnouncement","parts","VisuallyHidden","counters"],"mappings":"ubACA,SAASA,EAAEC,EAAG,CACZ,OAAOA,GAAKA,EAAE,YAAc,OAAO,UAAU,eAAe,KAAKA,EAAG,SAAS,EAAIA,EAAE,QAAUA,CAC/F,CACA,IAAIC,EAAI,CAAE,QAAS,EAAE,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAIC,EACJ,SAASC,GAAI,CACX,OAAOD,IAAMA,EAAI,GAAI,SAASF,EAAG,EAC9B,UAAW,CACV,IAAII,EAAI,CAAA,EAAG,eACX,SAASC,GAAI,CACX,QAASC,EAAI,GAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACjD,IAAIC,EAAI,UAAU,CAAC,EACnBA,IAAMD,EAAIE,EAAEF,EAAGG,EAAE,KAAK,KAAMF,CAAC,CAAC,EAChC,CACA,OAAOD,CACT,CACA,SAASG,EAAEH,EAAG,CACZ,GAAI,OAAOA,GAAK,UAAY,OAAOA,GAAK,SACtC,OAAO,MAAQ,KAAKA,CAAC,GAAKA,EAC5B,GAAI,OAAOA,GAAK,SACd,MAAO,GACT,GAAI,MAAM,QAAQA,CAAC,EACjB,OAAOD,EAAE,MAAM,KAAMC,CAAC,EACxB,GAAIA,EAAE,WAAa,OAAO,UAAU,UAAY,CAACA,EAAE,SAAS,WAAW,SAAS,eAAe,EAC7F,OAAOA,EAAE,SAAQ,EACnB,IAAI,EAAI,GACR,QAASC,KAAKD,EACZF,EAAE,KAAKE,EAAGC,CAAC,GAAKD,EAAEC,CAAC,IAAM,EAAIC,EAAE,EAAG,MAAQ,KAAKD,CAAC,GAAKA,CAAC,GACxD,OAAO,CACT,CACA,SAASC,EAAEF,EAAG,EAAG,CACf,OAAO,EAAIA,EAAIA,EAAI,IAAM,EAAIA,EAAI,EAAIA,CACvC,CACAN,EAAE,SAAWK,EAAE,QAAUA,EAAGL,EAAE,QAAUK,GAAK,OAAO,WAAaA,CACnE,GAAC,CACH,GAAGJ,CAAC,GAAIA,EAAE,OACZ,CACA,IAAIS,EAAIP,EAAC,EACT,MAAMQ,EAAoBZ,EAAEW,CAAC,EAAGE,GAAI,CAClC,mBAAoB,4BACpB,6BAA8B,sCAC9B,4BAA6B,sCAC7B,6BAA8B,uCAC9B,kCAAmC,4CACnC,yCAA0C,mDAC1C,uCAAwC,iDACxC,kCAAmC,4CACnC,iCAAkC,2CAClC,iCAAkC,2CAClC,mCAAoC,6CACpC,0CAA2C,oDAC3C,iCAAkC,2CAClC,iCAAkC,0CACpC,EAAGC,GAAIF,EAAE,KAAKC,EAAC,EAAGE,GAAI,CACpB,aAAc,eAUhB,EAAGC,EAAI,mBAAoBC,EAAI,CAAC,CAC9B,SAAUhB,EACV,UAAWI,EACX,SAAUC,EACV,kBAAmBI,EAAI,GACvB,SAAUD,EAAI,GACd,QAASF,EAAIQ,GAAE,aACf,GAAG,CACL,IAAM,CACJ,MAAMP,EAAIM,GAAET,EAAGW,EAAG,GAAGA,CAAC,KAAKT,CAAC,GAAI,CAC9B,CAAC,GAAGS,CAAC,WAAW,EAAGN,EACnB,CAAC,GAAGM,CAAC,YAAY,EAAGV,EACpB,CAAC,GAAGU,CAAC,YAAY,EAAGP,CACxB,CAAG,EACD,OAAuBS,EAAAA,IAAE,IAAK,CAAE,GAAG,EAAG,UAAWV,EAAG,SAAUP,EAAG,CACnE,EACAgB,EAAE,YAAc,YCnFhB,SAASN,EAAEH,EAAGH,EAAG,CACf,GAAI,OAAOG,GAAK,WACd,OAAOA,EAAEH,CAAC,EACZG,GAAK,OAASA,EAAE,QAAUH,EAC5B,CACA,SAASI,MAAKD,EAAG,CACf,OAAQH,GAAM,CACZ,IAAIK,EAAI,GACR,MAAMH,EAAIC,EAAE,IAAKQ,GAAM,CACrB,MAAMd,EAAIS,EAAEK,EAAGX,CAAC,EAChB,MAAO,CAACK,GAAK,OAAOR,GAAK,aAAeQ,EAAI,IAAKR,CACnD,CAAC,EACD,GAAIQ,EACF,MAAO,IAAM,CACX,QAASM,EAAI,EAAGA,EAAIT,EAAE,OAAQS,IAAK,CACjC,MAAMd,EAAIK,EAAES,CAAC,EACb,OAAOd,GAAK,WAAaA,EAAC,EAAKS,EAAEH,EAAEQ,CAAC,EAAG,IAAI,CAC7C,CACF,CACJ,CACF,CAEA,SAAShB,GAAEQ,EAAG,CACZ,MAAMH,EAAoBc,GAAEX,CAAC,EAAGE,EAAIQ,EAAE,WAAW,CAACX,EAAGS,IAAM,CACzD,KAAM,CAAE,SAAUd,EAAG,GAAG,CAAC,EAAKK,EAAGJ,EAAIe,EAAE,SAAS,QAAQhB,CAAC,EAAGU,EAAIT,EAAE,KAAKiB,EAAC,EACxE,GAAIR,EAAG,CACL,MAAMC,EAAID,EAAE,MAAM,SAAU,EAAIT,EAAE,IAAKF,GAAMA,IAAMW,EAAIM,EAAE,SAAS,MAAML,CAAC,EAAI,EAAIK,EAAE,SAAS,KAAK,IAAI,EAAIA,EAAE,eAAeL,CAAC,EAAIA,EAAE,MAAM,SAAW,KAAOZ,CAAC,EAC1J,OAAuBK,EAAAA,IAAED,EAAG,CAAE,GAAG,EAAG,IAAKW,EAAG,SAAUE,EAAE,eAAeL,CAAC,EAAIK,EAAE,aAAaL,EAAG,OAAQ,CAAC,EAAI,KAAM,CACnH,CACA,OAAuBP,EAAAA,IAAED,EAAG,CAAE,GAAG,EAAG,IAAKW,EAAG,SAAUd,EAAG,CAC3D,CAAC,EACD,OAAOQ,EAAE,YAAc,GAAGF,CAAC,QAASE,CACtC,CAEA,SAASS,GAAEX,EAAG,CACZ,MAAMH,EAAIa,EAAE,WAAW,CAACR,EAAGH,IAAM,CAC/B,KAAM,CAAE,SAAUS,EAAG,GAAGd,CAAC,EAAKQ,EAC9B,GAAIQ,EAAE,eAAeF,CAAC,EAAG,CACvB,MAAM,EAAIK,GAAEL,CAAC,EAAGb,EAAImB,GAAEpB,EAAGc,EAAE,KAAK,EAChC,OAAOA,EAAE,OAASE,EAAE,WAAaf,EAAE,IAAMI,EAAIE,GAAEF,EAAG,CAAC,EAAI,GAAIW,EAAE,aAAaF,EAAGb,CAAC,CAChF,CACA,OAAOe,EAAE,SAAS,MAAMF,CAAC,EAAI,EAAIE,EAAE,SAAS,KAAK,IAAI,EAAI,IAC3D,CAAC,EACD,OAAOb,EAAE,YAAc,GAAGG,CAAC,aAAcH,CAC3C,CACA,IAAIkB,GAAI,OAAO,iBAAiB,EAChC,SAASH,GAAEZ,EAAG,CACZ,OAAOU,EAAE,eAAeV,CAAC,GAAK,OAAOA,EAAE,MAAQ,YAAc,cAAeA,EAAE,MAAQA,EAAE,KAAK,YAAce,EAC7G,CACA,SAASD,GAAEd,EAAGH,EAAG,CACf,MAAMK,EAAI,CAAE,GAAGL,CAAC,EAChB,UAAWE,KAAKF,EAAG,CACjB,MAAMW,EAAIR,EAAED,CAAC,EAAGL,EAAIG,EAAEE,CAAC,EACvB,WAAW,KAAKA,CAAC,EAAIS,GAAKd,EAAIQ,EAAEH,CAAC,EAAI,IAAIJ,IAAM,CAC7CD,EAAE,GAAGC,CAAC,EAAGa,EAAE,GAAGb,CAAC,CACjB,EAAIa,IAAMN,EAAEH,CAAC,EAAIS,GAAKT,IAAM,QAAUG,EAAEH,CAAC,EAAI,CAAE,GAAGS,EAAG,GAAGd,CAAC,EAAKK,IAAM,cAAgBG,EAAEH,CAAC,EAAI,CAACS,EAAGd,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC5H,CACA,MAAO,CAAE,GAAGM,EAAG,GAAGE,CAAC,CACrB,CACA,SAASW,GAAEb,EAAG,CACZ,IAAID,EAAG,EACP,IAAIF,GAAKE,EAAI,OAAO,yBAAyBC,EAAE,MAAO,KAAK,IAAM,KAAO,OAASD,EAAE,IAAKG,EAAIL,GAAK,mBAAoBA,GAAKA,EAAE,eAC5H,OAAOK,EAAIF,EAAE,KAAOH,GAAK,EAAI,OAAO,yBAAyBG,EAAG,KAAK,IAAM,KAAO,OAAS,EAAE,IAAKE,EAAIL,GAAK,mBAAoBA,GAAKA,EAAE,eAAgBK,EAAIF,EAAE,MAAM,IAAMA,EAAE,MAAM,KAAOA,EAAE,IAC3L,CACA,IAAIgB,GAAI,CACN,IACA,SACA,MACA,OACA,KACA,KACA,MACA,QACA,QACA,KACA,MACA,KACA,IACA,OACA,MACA,IACF,EAAGP,GAAIO,GAAE,OAAO,CAAChB,EAAGH,IAAM,CACxB,MAAMK,EAAoBV,GAAE,aAAaK,CAAC,EAAE,EAAGE,EAAIW,EAAE,WAAW,CAACF,EAAGd,IAAM,CACxE,KAAM,CAAE,QAAS,EAAG,GAAGC,CAAC,EAAKa,EAAGJ,EAAI,EAAIF,EAAIL,EAC5C,OAAO,OAAO,OAAS,MAAQ,OAAO,OAAO,IAAI,UAAU,CAAC,EAAI,IAAqBC,EAAAA,IAAEM,EAAG,CAAE,GAAGT,EAAG,IAAKD,EAAG,CAC5G,CAAC,EACD,OAAOK,EAAE,YAAc,aAAaF,CAAC,GAAI,CAAE,GAAGG,EAAG,CAACH,CAAC,EAAGE,CAAC,CACzD,EAAG,CAAA,CAAE,EAAGkB,GAAI,iBAAkBX,EAAII,EAAE,WAClC,CAACV,EAAGH,IAAsBC,EAAAA,IACxBW,GAAE,KACF,CACE,GAAGT,EACH,IAAKH,EACL,MAAO,CAEL,SAAU,WACV,OAAQ,EACR,MAAO,EACP,OAAQ,EACR,QAAS,EACT,OAAQ,GACR,SAAU,SACV,KAAM,mBACN,WAAY,SACZ,SAAU,SACV,GAAGG,EAAE,KACb,CACA,CACA,CACA,EACAM,EAAE,YAAcW,GAChB,IAAIC,GAAIZ,EACR,MAAMa,GAAI,CAAC,CAAE,QAASnB,EAAG,SAAUH,EAAG,GAAGK,CAAC,IAAuBJ,EAAAA,IAAEoB,GAAG,CAAE,QAASlB,EAAG,GAAGE,EAAG,SAAUL,EAAG;;;;mDC5GtG,UAAY,CAGZ,IAAIuB,EAAS,CAAA,EAAG,eAEhB,SAASC,GAAc,CAGtB,QAFIC,EAAU,GAELpB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAC1C,IAAIqB,EAAM,UAAUrB,CAAC,EACjBqB,IACHD,EAAUE,EAAYF,EAASG,EAAW,KAAK,KAAMF,CAAG,CAAC,EAE7D,CAEE,OAAOD,CACT,CAEC,SAASG,EAAYF,EAAK,CACzB,GAAI,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,SAC7C,OAAO,MAAQ,KAAKA,CAAG,GAAKA,EAG7B,GAAI,OAAOA,GAAQ,SAClB,MAAO,GAGR,GAAI,MAAM,QAAQA,CAAG,EACpB,OAAOF,EAAW,MAAM,KAAME,CAAG,EAGlC,GAAIA,EAAI,WAAa,OAAO,UAAU,UAAY,CAACA,EAAI,SAAS,SAAQ,EAAG,SAAS,eAAe,EAClG,OAAOA,EAAI,SAAQ,EAGpB,IAAID,EAAU,GAEd,QAASI,KAAOH,EACXH,EAAO,KAAKG,EAAKG,CAAG,GAAKH,EAAIG,CAAG,IACnCJ,EAAUE,EAAYF,EAAS,MAAQ,KAAKI,CAAG,GAAKA,CAAG,GAIzD,OAAOJ,CACT,CAEC,SAASE,EAAaG,EAAOC,EAAU,CACtC,OAAKA,EAIDD,EACIA,EAAQ,IAAMC,EAGfD,EAAQC,EAPPD,CAQV,CAEsCE,EAAO,SAC3CR,EAAW,QAAUA,EACrBQ,UAAiBR,GAOjB,OAAO,WAAaA,CAEtB,wtCC5EO,SAASS,EAASC,EAAiB,CACxC,MAAMC,EAAM,IAAI,KAAA,EAAO,QAAA,EACjBC,EAAW,KAAK,IAAIF,EAAUC,CAAG,EAEvC,IAAIE,EAAU,EACZC,EAAU,EACVC,EAAQ,EACRC,EAAO,EAET,OAAIJ,GAAYK,EAAK,MACnBD,EAAO,KAAK,MAAMJ,EAAWK,EAAK,GAAG,GAEnCL,GAAYK,EAAK,OACnBF,EAAQ,KAAK,MAAOH,EAAWK,EAAK,IAAOA,EAAK,IAAI,GAElDL,GAAYK,EAAK,SACnBH,EAAU,KAAK,MAAOF,EAAWK,EAAK,KAAQA,EAAK,MAAM,GAEvDL,GAAYK,EAAK,SACnBJ,EAAU,KAAK,MAAOD,EAAWK,EAAK,OAAUA,EAAK,MAAM,GAGtD,CACL,QAAAJ,EACA,QAAAC,EACA,MAAAC,EACA,KAAAC,CAAA,CAEJ,CAEO,SAASE,EAAQC,EAAcC,EAAa,CACjD,IAAI1C,EAAI,EACR,OAAI0C,IAAQ,YAAW1C,EAAIyC,EAAO,GAAK,EAAIA,EAAO,EAAI,IAClDC,IAAQ,YAAW1C,EAAIyC,EAAO,GAAK,EAAIA,EAAO,EAAI,IAClDC,IAAQ,UAAS1C,EAAIyC,EAAO,GAAK,EAAIA,EAAO,EAAI,IAChDC,IAAQ,SAAQ1C,EAAIyC,EAAO,GAAK,EAAIA,EAAO,EAAI,GAC5CzC,CACT,CAEO,MAAMuC,EAAO,CAClB,IAAK,KAAU,GAAK,IACpB,KAAM,KAAU,IAChB,OAAQ,GAAK,IACb,OAAQ,GACV,ECpCMI,EAAKtC,EAAE,KAAKuC,EAAM,EAElBC,EAAgB,2BAShBC,MAA6D,IAEtDC,EAAU,CAAC,CAAE,IAAAL,EAAK,KAAAM,EAAM,IAAAC,EAAK,cAAAC,KAAkC,CAC1E,MAAMC,EAAMC,EAAAA,OAA2B,IAAI,EACrCC,EAAK,GAAGX,CAAG,YAEX,CAACY,EAAaC,CAAc,EAAIC,EAAAA,SAASzB,EAASkB,CAAG,EAAEP,CAAG,CAAC,EAC3D,CAACe,EAAUC,CAAW,EAAIF,EAAAA,SAAShB,EAAQc,EAAaZ,CAAG,CAAC,EAC5D,CAACiB,EAAcC,CAAe,EAAIJ,EAAAA,SAAS,CAAC,EAE5CK,EAAYC,EAAAA,YAAY,IAAM,CAClC,MAAMC,EAAQhC,EAASkB,CAAG,EACpBe,EAAOxB,EAAQuB,EAAMrB,CAAG,EAAGA,CAAG,EAEpCgB,EAAYM,CAAI,EAChBT,EAAeQ,EAAMrB,CAAG,CAAC,CAC3B,EAAG,CAACO,EAAKP,CAAG,CAAC,EAEbuB,EAAAA,UAAU,KACRnB,EAAU,IAAIO,EAAI,YAAYQ,EAAWtB,EAAK,MAAM,CAAC,EAC9C,IAAM,cAAcO,EAAU,IAAIO,CAAE,CAAE,GAC5C,CAACQ,EAAWR,CAAE,CAAC,EAElBY,EAAAA,UAAU,IAAM,CACdL,EAAiBM,GAASA,EAAO,CAAC,CACpC,EAAG,CAACZ,CAAW,CAAC,EAEhB,MAAMa,EAAajB,EAAcR,CAAG,EAEpC,OACE0B,EAAAA,KAAC,MAAA,CACC,UAAWzB,EAAGE,CAAa,EAC3B,KAAK,QACL,cAAY,OACZ,cAAa,WAAWH,CAAG,GAE3B,SAAA,CAAA2B,EAAAA,IAACC,EAAA,CACC,UAAW3B,EAAG,GAAGE,CAAa,WAAY,GAAGA,CAAa,UAAUG,CAAI,EAAE,EAC1E,IAAAG,EACA,YAAWM,EAGV,SAAAH,CAAA,EAFIK,CAAA,EAIPU,EAAAA,IAACC,GAAU,UAAW3B,EAAG,GAAGE,CAAa,SAAS,EAAI,SAAAsB,CAAA,CAAW,CAAA,CAAA,CAAA,CAGvE,ECxDMxB,EAAKtC,EAAE,KAAKuC,EAAM,EAElBC,EAAgB,mBAEhBZ,MAAU,KAQHsC,EAAYC,EAAAA,WACvB,CACE,CAAE,eAAAC,EAAgB,kBAAAC,EAAmB,GAAGC,CAAA,EACxCxB,IACG,CACH,MAAME,EAAKuB,EAAAA,MAAA,EAEL,CACJ,KAAA5B,EAAO,KACP,UAAA6B,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,QAAAC,EAAU,UACV,UAAAC,EACA,cAAA/B,CAAA,EACEyB,EAEEO,EAAQ,IAAI,KAAKP,EAAM,SAAS,EAAE,QAAA,EAClC1B,EAAM,IAAI,KAAK0B,EAAM,OAAO,EAAE,QAAA,EAE9BQ,EAAgBD,EAAQjD,EAAI,QAAA,EAC5BmD,EAAWnC,EAAMhB,EAAI,QAAA,EAE3B,GAAIkD,EAAe,OAAOT,EAAoBA,EAAkBC,CAAK,EAAI,KACzE,GAAIS,EAAU,OAAOX,EAAiBA,EAAeE,CAAK,EAAI,KAE9D,MAAMU,EAAc,IAAM,CACxB,MAAMC,EAAe,CAAE,KAAAtC,EAAM,IAAAC,EAAK,cAAAC,CAAA,EAElC,OACEkB,EAAAA,KAAAmB,WAAA,CACG,SAAA,CAAAR,GAAYV,EAAAA,IAACtB,EAAA,CAAQ,IAAI,OAAQ,GAAGuC,EAAc,EACnDjB,EAAAA,IAACtB,EAAA,CAAQ,IAAI,QAAS,GAAGuC,CAAA,CAAc,EACvCjB,EAAAA,IAACtB,EAAA,CAAQ,IAAI,UAAW,GAAGuC,CAAA,CAAc,EACzCjB,EAAAA,IAACtB,EAAA,CAAQ,IAAI,UAAW,GAAGuC,CAAA,CAAc,CAAA,EAC3C,CAEJ,EAIME,EAAkB,IAAM,CAC5B,MAAMC,EAAsB,IAAM,CAChC,KAAM,CAAE,KAAAnD,EAAM,MAAAD,EAAO,QAAAD,EAAS,QAAAD,CAAA,EAAYJ,EAASkB,CAAG,EAEhDyC,EAAQ,CAAA,EAEd,OAAIX,KAAgB,KAAK,GAAGzC,CAAI,IAAIY,EAAc,IAAI,EAAE,EACxDwC,EAAM,KAAK,GAAGrD,CAAK,IAAIa,EAAc,KAAK,EAAE,EAC5CwC,EAAM,KAAK,GAAGtD,CAAO,IAAIc,EAAc,OAAO,EAAE,EAChDwC,EAAM,KAAK,GAAGvD,CAAO,IAAIe,EAAc,OAAO,EAAE,EAEzCwC,EAAM,KAAK,IAAI,CACxB,EAEA,OACErB,EAAAA,IAACsB,GAAA,CACC,cAAY,cACZ,YAAU,SACV,aAAYhB,EAAM,YAAY,EAE7B,SAAAc,EAAA,CAAoB,CAAA,CAG3B,EAEMG,EAAWP,EAAA,EAEX9D,EAAUoB,EAAG,CACjBE,EACA,GAAGA,CAAa,UAAUG,CAAI,GAC9B,GAAGH,CAAa,aAAamC,CAAO,GACpC,CACE,CAAC,GAAGnC,CAAa,aAAa,EAAGgC,EACjC,CAAC,GAAGhC,CAAa,YAAY,EAAGiC,EAChC,CAAC,GAAGjC,CAAa,YAAY,EAAGkC,CAAA,EAElCE,CAAA,CACD,EAED,OACEb,EAAAA,KAAC,UAAA,CACC,GAAAf,EACA,UAAW9B,EACX,IAAA4B,EACA,KAAK,QACL,cAAawB,EAAM,aAAa,EAG/B,SAAA,CAAAa,EAAA,EACAb,EAAM,OACLN,EAAAA,IAACC,EAAA,CAAU,UAAW3B,EAAG,GAAGE,CAAa,SAAS,EAAG,QAAQ,uBAC1D,WAAM,MACT,EAEFwB,EAAAA,IAAC,OAAI,UAAW1B,EAAG,GAAGE,CAAa,qBAAqB,EAAI,SAAA+C,CAAA,CAAS,CAAA,CAAA,CAAA,CAG3E,CACF,EAEArB,EAAU,YAAc","x_google_ignoreList":[2]}
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ import { CountdownProps } from './countdown.types';
3
+
4
+ /**
5
+ * Countdown component to display a countdown timer.
6
+ * @param props - CountdownProps
7
+ * @returns A React component that displays a countdown timer.
8
+ */
9
+ export declare const Countdown: React.ForwardRefExoticComponent<CountdownProps & React.RefAttributes<HTMLButtonElement>>;
10
+ //# sourceMappingURL=countdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countdown.d.ts","sourceRoot":"","sources":["../src/countdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAMpE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUxD;;;;GAIG;AAEH,eAAO,MAAM,SAAS,0FAmGrB,CAAC"}
@@ -0,0 +1,375 @@
1
+ import { jsx as s, jsxs as P, Fragment as Q } from "react/jsx-runtime";
2
+ import * as p from "react";
3
+ import { useRef as U, useState as C, useCallback as X, useEffect as z, forwardRef as Y, useId as rr } from "react";
4
+ import "react-dom";
5
+ function nr(r) {
6
+ return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, "default") ? r.default : r;
7
+ }
8
+ var T = { exports: {} };
9
+ /*!
10
+ Copyright (c) 2018 Jed Watson.
11
+ Licensed under the MIT License (MIT), see
12
+ http://jedwatson.github.io/classnames
13
+ */
14
+ var E;
15
+ function tr() {
16
+ return E || (E = 1, (function(r) {
17
+ (function() {
18
+ var a = {}.hasOwnProperty;
19
+ function t() {
20
+ for (var n = "", e = 0; e < arguments.length; e++) {
21
+ var i = arguments[e];
22
+ i && (n = o(n, u.call(this, i)));
23
+ }
24
+ return n;
25
+ }
26
+ function u(n) {
27
+ if (typeof n == "string" || typeof n == "number")
28
+ return this && this[n] || n;
29
+ if (typeof n != "object")
30
+ return "";
31
+ if (Array.isArray(n))
32
+ return t.apply(this, n);
33
+ if (n.toString !== Object.prototype.toString && !n.toString.toString().includes("[native code]"))
34
+ return n.toString();
35
+ var e = "";
36
+ for (var i in n)
37
+ a.call(n, i) && n[i] && (e = o(e, this && this[i] || i));
38
+ return e;
39
+ }
40
+ function o(n, e) {
41
+ return e ? n ? n + " " + e : n + e : n;
42
+ }
43
+ r.exports ? (t.default = t, r.exports = t) : window.classNames = t;
44
+ })();
45
+ })(T)), T.exports;
46
+ }
47
+ var er = tr();
48
+ const ar = /* @__PURE__ */ nr(er), or = {
49
+ "purpur-paragraph": "_purpur-paragraph_1rh57_1",
50
+ "purpur-paragraph--disabled": "_purpur-paragraph--disabled_1rh57_7",
51
+ "purpur-paragraph--hyphens": "_purpur-paragraph--hyphens_1rh57_10",
52
+ "purpur-paragraph--negative": "_purpur-paragraph--negative_1rh57_13",
53
+ "purpur-paragraph--paragraph-100": "_purpur-paragraph--paragraph-100_1rh57_16",
54
+ "purpur-paragraph--paragraph-100-medium": "_purpur-paragraph--paragraph-100-medium_1rh57_22",
55
+ "purpur-paragraph--paragraph-100-bold": "_purpur-paragraph--paragraph-100-bold_1rh57_29",
56
+ "purpur-paragraph--paragraph-200": "_purpur-paragraph--paragraph-200_1rh57_36",
57
+ "purpur-paragraph--preamble-100": "_purpur-paragraph--preamble-100_1rh57_42",
58
+ "purpur-paragraph--preamble-200": "_purpur-paragraph--preamble-200_1rh57_48",
59
+ "purpur-paragraph--additional-100": "_purpur-paragraph--additional-100_1rh57_54",
60
+ "purpur-paragraph--additional-100-medium": "_purpur-paragraph--additional-100-medium_1rh57_60",
61
+ "purpur-paragraph--overline-100": "_purpur-paragraph--overline-100_1rh57_67",
62
+ "purpur-paragraph--overline-200": "_purpur-paragraph--overline-200_1rh57_75"
63
+ }, ur = ar.bind(or), ir = {
64
+ PARAGRAPH100: "paragraph-100"
65
+ }, v = "purpur-paragraph", N = ({
66
+ children: r,
67
+ className: a,
68
+ disabled: t,
69
+ enableHyphenation: u = !1,
70
+ negative: o = !1,
71
+ variant: n = ir.PARAGRAPH100,
72
+ ...e
73
+ }) => {
74
+ const i = ur(a, v, `${v}--${n}`, {
75
+ [`${v}--hyphens`]: u,
76
+ [`${v}--disabled`]: t,
77
+ [`${v}--negative`]: o
78
+ });
79
+ return /* @__PURE__ */ s("p", { ...e, className: i, children: r });
80
+ };
81
+ N.displayName = "Paragraph";
82
+ function M(r, a) {
83
+ if (typeof r == "function")
84
+ return r(a);
85
+ r != null && (r.current = a);
86
+ }
87
+ function pr(...r) {
88
+ return (a) => {
89
+ let t = !1;
90
+ const u = r.map((o) => {
91
+ const n = M(o, a);
92
+ return !t && typeof n == "function" && (t = !0), n;
93
+ });
94
+ if (t)
95
+ return () => {
96
+ for (let o = 0; o < u.length; o++) {
97
+ const n = u[o];
98
+ typeof n == "function" ? n() : M(r[o], null);
99
+ }
100
+ };
101
+ };
102
+ }
103
+ // @__NO_SIDE_EFFECTS__
104
+ function sr(r) {
105
+ const a = /* @__PURE__ */ cr(r), t = p.forwardRef((u, o) => {
106
+ const { children: n, ...e } = u, i = p.Children.toArray(n), l = i.find(dr);
107
+ if (l) {
108
+ const h = l.props.children, g = i.map((d) => d === l ? p.Children.count(h) > 1 ? p.Children.only(null) : p.isValidElement(h) ? h.props.children : null : d);
109
+ return /* @__PURE__ */ s(a, { ...e, ref: o, children: p.isValidElement(h) ? p.cloneElement(h, void 0, g) : null });
110
+ }
111
+ return /* @__PURE__ */ s(a, { ...e, ref: o, children: n });
112
+ });
113
+ return t.displayName = `${r}.Slot`, t;
114
+ }
115
+ // @__NO_SIDE_EFFECTS__
116
+ function cr(r) {
117
+ const a = p.forwardRef((t, u) => {
118
+ const { children: o, ...n } = t;
119
+ if (p.isValidElement(o)) {
120
+ const e = fr(o), i = hr(n, o.props);
121
+ return o.type !== p.Fragment && (i.ref = u ? pr(u, e) : e), p.cloneElement(o, i);
122
+ }
123
+ return p.Children.count(o) > 1 ? p.Children.only(null) : null;
124
+ });
125
+ return a.displayName = `${r}.SlotClone`, a;
126
+ }
127
+ var lr = Symbol("radix.slottable");
128
+ function dr(r) {
129
+ return p.isValidElement(r) && typeof r.type == "function" && "__radixId" in r.type && r.type.__radixId === lr;
130
+ }
131
+ function hr(r, a) {
132
+ const t = { ...a };
133
+ for (const u in a) {
134
+ const o = r[u], n = a[u];
135
+ /^on[A-Z]/.test(u) ? o && n ? t[u] = (...e) => {
136
+ n(...e), o(...e);
137
+ } : o && (t[u] = o) : u === "style" ? t[u] = { ...o, ...n } : u === "className" && (t[u] = [o, n].filter(Boolean).join(" "));
138
+ }
139
+ return { ...r, ...t };
140
+ }
141
+ function fr(r) {
142
+ var a, t;
143
+ let u = (a = Object.getOwnPropertyDescriptor(r.props, "ref")) == null ? void 0 : a.get, o = u && "isReactWarning" in u && u.isReactWarning;
144
+ return o ? r.ref : (u = (t = Object.getOwnPropertyDescriptor(r, "ref")) == null ? void 0 : t.get, o = u && "isReactWarning" in u && u.isReactWarning, o ? r.props.ref : r.props.ref || r.ref);
145
+ }
146
+ var _r = [
147
+ "a",
148
+ "button",
149
+ "div",
150
+ "form",
151
+ "h2",
152
+ "h3",
153
+ "img",
154
+ "input",
155
+ "label",
156
+ "li",
157
+ "nav",
158
+ "ol",
159
+ "p",
160
+ "span",
161
+ "svg",
162
+ "ul"
163
+ ], mr = _r.reduce((r, a) => {
164
+ const t = /* @__PURE__ */ sr(`Primitive.${a}`), u = p.forwardRef((o, n) => {
165
+ const { asChild: e, ...i } = o, l = e ? t : a;
166
+ return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ s(l, { ...i, ref: n });
167
+ });
168
+ return u.displayName = `Primitive.${a}`, { ...r, [a]: u };
169
+ }, {}), gr = "VisuallyHidden", k = p.forwardRef(
170
+ (r, a) => /* @__PURE__ */ s(
171
+ mr.span,
172
+ {
173
+ ...r,
174
+ ref: a,
175
+ style: {
176
+ // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
177
+ position: "absolute",
178
+ border: 0,
179
+ width: 1,
180
+ height: 1,
181
+ padding: 0,
182
+ margin: -1,
183
+ overflow: "hidden",
184
+ clip: "rect(0, 0, 0, 0)",
185
+ whiteSpace: "nowrap",
186
+ wordWrap: "normal",
187
+ ...r.style
188
+ }
189
+ }
190
+ )
191
+ );
192
+ k.displayName = gr;
193
+ var wr = k;
194
+ const yr = ({ asChild: r, children: a, ...t }) => /* @__PURE__ */ s(wr, { asChild: r, ...t, children: a });
195
+ function vr(r) {
196
+ return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, "default") ? r.default : r;
197
+ }
198
+ var S = { exports: {} };
199
+ /*!
200
+ Copyright (c) 2018 Jed Watson.
201
+ Licensed under the MIT License (MIT), see
202
+ http://jedwatson.github.io/classnames
203
+ */
204
+ var D;
205
+ function br() {
206
+ return D || (D = 1, (function(r) {
207
+ (function() {
208
+ var a = {}.hasOwnProperty;
209
+ function t() {
210
+ for (var n = "", e = 0; e < arguments.length; e++) {
211
+ var i = arguments[e];
212
+ i && (n = o(n, u.call(this, i)));
213
+ }
214
+ return n;
215
+ }
216
+ function u(n) {
217
+ if (typeof n == "string" || typeof n == "number")
218
+ return this && this[n] || n;
219
+ if (typeof n != "object")
220
+ return "";
221
+ if (Array.isArray(n))
222
+ return t.apply(this, n);
223
+ if (n.toString !== Object.prototype.toString && !n.toString.toString().includes("[native code]"))
224
+ return n.toString();
225
+ var e = "";
226
+ for (var i in n)
227
+ a.call(n, i) && n[i] && (e = o(e, this && this[i] || i));
228
+ return e;
229
+ }
230
+ function o(n, e) {
231
+ return e ? n ? n + " " + e : n + e : n;
232
+ }
233
+ r.exports ? (t.default = t, r.exports = t) : window.classNames = t;
234
+ })();
235
+ })(S)), S.exports;
236
+ }
237
+ var $r = br();
238
+ const H = /* @__PURE__ */ vr($r), xr = {
239
+ "purpur-countdown--size-md": "_purpur-countdown--size-md_1ljp4_1",
240
+ "purpur-countdown--size-lg": "_purpur-countdown--size-lg_1ljp4_5",
241
+ "purpur-countdown": "_purpur-countdown_1ljp4_1",
242
+ "purpur-countdown--variant-primary": "_purpur-countdown--variant-primary_1ljp4_12",
243
+ "purpur-countdown--variant-secondary": "_purpur-countdown--variant-secondary_1ljp4_15",
244
+ "purpur-countdown--negative": "_purpur-countdown--negative_1ljp4_18",
245
+ "purpur-countdown--fullwidth": "_purpur-countdown--fullwidth_1ljp4_22",
246
+ "purpur-countdown--showdays": "_purpur-countdown--showdays_1ljp4_28",
247
+ "purpur-countdown__counter-container": "_purpur-countdown__counter-container_1ljp4_36",
248
+ "purpur-countdown__label": "_purpur-countdown__label_1ljp4_41"
249
+ }, Nr = {
250
+ "purpur-countdown-counter--size-lg": "_purpur-countdown-counter--size-lg_vx98f_1",
251
+ "purpur-countdown-counter--size-md": "_purpur-countdown-counter--size-md_vx98f_7",
252
+ "purpur-countdown-counter": "_purpur-countdown-counter_vx98f_1",
253
+ "purpur-countdown-counter__number": "_purpur-countdown-counter__number_vx98f_23",
254
+ "tick-animation": "_tick-animation_vx98f_1",
255
+ "tick-animation-pseudo": "_tick-animation-pseudo_vx98f_1",
256
+ "purpur-countdown-counter__label": "_purpur-countdown-counter__label_vx98f_44"
257
+ };
258
+ function O(r) {
259
+ const a = (/* @__PURE__ */ new Date()).getTime(), t = Math.abs(r - a);
260
+ let u = 0, o = 0, n = 0, e = 0;
261
+ return t >= c.day && (e = Math.floor(t / c.day)), t >= c.hour && (n = Math.floor(t % c.day / c.hour)), t >= c.minute && (o = Math.floor(t % c.hour / c.minute)), t >= c.second && (u = Math.floor(t % c.minute / c.second)), {
262
+ seconds: u,
263
+ minutes: o,
264
+ hours: n,
265
+ days: e
266
+ };
267
+ }
268
+ function I(r, a) {
269
+ let t = 0;
270
+ return a === "seconds" && (t = r - 1 >= 0 ? r - 1 : 59), a === "minutes" && (t = r - 1 >= 0 ? r - 1 : 59), a === "hours" && (t = r - 1 >= 0 ? r - 1 : 23), a === "days" && (t = r - 1 >= 0 ? r - 1 : 0), t;
271
+ }
272
+ const c = {
273
+ day: 1440 * 60 * 1e3,
274
+ hour: 3600 * 1e3,
275
+ minute: 60 * 1e3,
276
+ second: 1e3
277
+ }, R = H.bind(Nr), $ = "purpur-countdown-counter", V = /* @__PURE__ */ new Map(), x = ({ tag: r, size: a, end: t, counterLabels: u }) => {
278
+ const o = U(null), n = `${r}-interval`, [e, i] = C(O(t)[r]), [l, h] = C(I(e, r)), [g, d] = C(0), b = X(() => {
279
+ const _ = O(t), j = I(_[r], r);
280
+ h(j), i(_[r]);
281
+ }, [t, r]);
282
+ z(() => (V.set(n, setInterval(b, c.second)), () => clearInterval(V.get(n))), [b, n]), z(() => {
283
+ d((_) => _ + 1);
284
+ }, [e]);
285
+ const w = u[r];
286
+ return /* @__PURE__ */ P(
287
+ "div",
288
+ {
289
+ className: R($),
290
+ role: "group",
291
+ "aria-hidden": "true",
292
+ "data-testid": `counter-${r}`,
293
+ children: [
294
+ /* @__PURE__ */ s(
295
+ N,
296
+ {
297
+ className: R(`${$}__number`, `${$}--size-${a}`),
298
+ ref: o,
299
+ "data-tick": l,
300
+ children: e
301
+ },
302
+ g
303
+ ),
304
+ /* @__PURE__ */ s(N, { className: R(`${$}__label`), children: w })
305
+ ]
306
+ }
307
+ );
308
+ }, A = H.bind(xr), f = "purpur-countdown", W = /* @__PURE__ */ new Date(), jr = Y(
309
+ ({ renderAfterEnd: r, renderBeforeStart: a, ...t }, u) => {
310
+ const o = rr(), {
311
+ size: n = "lg",
312
+ fullWidth: e = !1,
313
+ negative: i = !1,
314
+ showDays: l = !0,
315
+ variant: h = "primary",
316
+ className: g,
317
+ counterLabels: d
318
+ } = t, b = new Date(t.starttime).getTime(), w = new Date(t.endtime).getTime(), _ = b > W.getTime(), j = w < W.getTime();
319
+ if (_) return a ? a(t) : null;
320
+ if (j) return r ? r(t) : null;
321
+ const F = () => {
322
+ const m = { size: n, end: w, counterLabels: d };
323
+ return /* @__PURE__ */ P(Q, { children: [
324
+ l && /* @__PURE__ */ s(x, { tag: "days", ...m }),
325
+ /* @__PURE__ */ s(x, { tag: "hours", ...m }),
326
+ /* @__PURE__ */ s(x, { tag: "minutes", ...m }),
327
+ /* @__PURE__ */ s(x, { tag: "seconds", ...m })
328
+ ] });
329
+ }, q = () => {
330
+ const m = () => {
331
+ const { days: K, hours: L, minutes: Z, seconds: J } = O(w), y = [];
332
+ return l && y.push(`${K} ${d.days}`), y.push(`${L} ${d.hours}`), y.push(`${Z} ${d.minutes}`), y.push(`${J} ${d.seconds}`), y.join(", ");
333
+ };
334
+ return /* @__PURE__ */ s(
335
+ yr,
336
+ {
337
+ "data-testid": "live-region",
338
+ "aria-live": "polite",
339
+ "aria-label": t["aria-label"],
340
+ children: m()
341
+ }
342
+ );
343
+ }, B = F(), G = A([
344
+ f,
345
+ `${f}--size-${n}`,
346
+ `${f}--variant-${h}`,
347
+ {
348
+ [`${f}--fullwidth`]: e,
349
+ [`${f}--negative`]: i,
350
+ [`${f}--showdays`]: l
351
+ },
352
+ g
353
+ ]);
354
+ return /* @__PURE__ */ P(
355
+ "section",
356
+ {
357
+ id: o,
358
+ className: G,
359
+ ref: u,
360
+ role: "timer",
361
+ "data-testid": t["data-testid"],
362
+ children: [
363
+ q(),
364
+ t.label && /* @__PURE__ */ s(N, { className: A(`${f}__label`), variant: "paragraph-100-medium", children: t.label }),
365
+ /* @__PURE__ */ s("div", { className: A(`${f}__counter-container`), children: B })
366
+ ]
367
+ }
368
+ );
369
+ }
370
+ );
371
+ jr.displayName = "Countdown";
372
+ export {
373
+ jr as Countdown
374
+ };
375
+ //# sourceMappingURL=countdown.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countdown.es.js","sources":["../../paragraph/dist/paragraph.es.js","../../visually-hidden/dist/visually-hidden.es.js","../../../common/temp/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/bind.js","../src/utils.ts","../src/counter.tsx","../src/countdown.tsx"],"sourcesContent":["import { jsx as l } from \"react/jsx-runtime\";\nfunction g(p) {\n return p && p.__esModule && Object.prototype.hasOwnProperty.call(p, \"default\") ? p.default : p;\n}\nvar o = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar s;\nfunction _() {\n return s || (s = 1, (function(p) {\n (function() {\n var n = {}.hasOwnProperty;\n function u() {\n for (var r = \"\", a = 0; a < arguments.length; a++) {\n var e = arguments[a];\n e && (r = h(r, i.call(this, e)));\n }\n return r;\n }\n function i(r) {\n if (typeof r == \"string\" || typeof r == \"number\")\n return this && this[r] || r;\n if (typeof r != \"object\")\n return \"\";\n if (Array.isArray(r))\n return u.apply(this, r);\n if (r.toString !== Object.prototype.toString && !r.toString.toString().includes(\"[native code]\"))\n return r.toString();\n var a = \"\";\n for (var e in r)\n n.call(r, e) && r[e] && (a = h(a, this && this[e] || e));\n return a;\n }\n function h(r, a) {\n return a ? r ? r + \" \" + a : r + a : r;\n }\n p.exports ? (u.default = u, p.exports = u) : window.classNames = u;\n })();\n })(o)), o.exports;\n}\nvar d = _();\nconst c = /* @__PURE__ */ g(d), f = {\n \"purpur-paragraph\": \"_purpur-paragraph_1rh57_1\",\n \"purpur-paragraph--disabled\": \"_purpur-paragraph--disabled_1rh57_7\",\n \"purpur-paragraph--hyphens\": \"_purpur-paragraph--hyphens_1rh57_10\",\n \"purpur-paragraph--negative\": \"_purpur-paragraph--negative_1rh57_13\",\n \"purpur-paragraph--paragraph-100\": \"_purpur-paragraph--paragraph-100_1rh57_16\",\n \"purpur-paragraph--paragraph-100-medium\": \"_purpur-paragraph--paragraph-100-medium_1rh57_22\",\n \"purpur-paragraph--paragraph-100-bold\": \"_purpur-paragraph--paragraph-100-bold_1rh57_29\",\n \"purpur-paragraph--paragraph-200\": \"_purpur-paragraph--paragraph-200_1rh57_36\",\n \"purpur-paragraph--preamble-100\": \"_purpur-paragraph--preamble-100_1rh57_42\",\n \"purpur-paragraph--preamble-200\": \"_purpur-paragraph--preamble-200_1rh57_48\",\n \"purpur-paragraph--additional-100\": \"_purpur-paragraph--additional-100_1rh57_54\",\n \"purpur-paragraph--additional-100-medium\": \"_purpur-paragraph--additional-100-medium_1rh57_60\",\n \"purpur-paragraph--overline-100\": \"_purpur-paragraph--overline-100_1rh57_67\",\n \"purpur-paragraph--overline-200\": \"_purpur-paragraph--overline-200_1rh57_75\"\n}, m = c.bind(f), A = {\n PARAGRAPH100: \"paragraph-100\",\n PARAGRAPH100MEDIUM: \"paragraph-100-medium\",\n PARAGRAPH100BOLD: \"paragraph-100-bold\",\n PARAGRAPH200: \"paragraph-200\",\n PREAMBLE100: \"preamble-100\",\n PREAMBLE200: \"preamble-200\",\n ADDITIONAL100: \"additional-100\",\n ADDITIONAL100MEDIUM: \"additional-100-medium\",\n OVERLINE100: \"overline-100\",\n OVERLINE200: \"overline-200\"\n}, t = \"purpur-paragraph\", b = ({\n children: p,\n className: n,\n disabled: u,\n enableHyphenation: i = !1,\n negative: h = !1,\n variant: r = A.PARAGRAPH100,\n ...a\n}) => {\n const e = m(n, t, `${t}--${r}`, {\n [`${t}--hyphens`]: i,\n [`${t}--disabled`]: u,\n [`${t}--negative`]: h\n });\n return /* @__PURE__ */ l(\"p\", { ...a, className: e, children: p });\n};\nb.displayName = \"Paragraph\";\nexport {\n b as Paragraph,\n A as ParagraphVariant\n};\n//# sourceMappingURL=paragraph.es.js.map\n","import { jsx as u } from \"react/jsx-runtime\";\nimport * as l from \"react\";\nimport \"react-dom\";\nfunction d(e, n) {\n if (typeof e == \"function\")\n return e(n);\n e != null && (e.current = n);\n}\nfunction h(...e) {\n return (n) => {\n let i = !1;\n const r = e.map((t) => {\n const o = d(t, n);\n return !i && typeof o == \"function\" && (i = !0), o;\n });\n if (i)\n return () => {\n for (let t = 0; t < r.length; t++) {\n const o = r[t];\n typeof o == \"function\" ? o() : d(e[t], null);\n }\n };\n };\n}\n// @__NO_SIDE_EFFECTS__\nfunction g(e) {\n const n = /* @__PURE__ */ v(e), i = l.forwardRef((r, t) => {\n const { children: o, ...a } = r, s = l.Children.toArray(o), c = s.find(S);\n if (c) {\n const f = c.props.children, y = s.map((p) => p === c ? l.Children.count(f) > 1 ? l.Children.only(null) : l.isValidElement(f) ? f.props.children : null : p);\n return /* @__PURE__ */ u(n, { ...a, ref: t, children: l.isValidElement(f) ? l.cloneElement(f, void 0, y) : null });\n }\n return /* @__PURE__ */ u(n, { ...a, ref: t, children: o });\n });\n return i.displayName = `${e}.Slot`, i;\n}\n// @__NO_SIDE_EFFECTS__\nfunction v(e) {\n const n = l.forwardRef((i, r) => {\n const { children: t, ...o } = i;\n if (l.isValidElement(t)) {\n const a = E(t), s = C(o, t.props);\n return t.type !== l.Fragment && (s.ref = r ? h(r, a) : a), l.cloneElement(t, s);\n }\n return l.Children.count(t) > 1 ? l.Children.only(null) : null;\n });\n return n.displayName = `${e}.SlotClone`, n;\n}\nvar w = Symbol(\"radix.slottable\");\nfunction S(e) {\n return l.isValidElement(e) && typeof e.type == \"function\" && \"__radixId\" in e.type && e.type.__radixId === w;\n}\nfunction C(e, n) {\n const i = { ...n };\n for (const r in n) {\n const t = e[r], o = n[r];\n /^on[A-Z]/.test(r) ? t && o ? i[r] = (...s) => {\n o(...s), t(...s);\n } : t && (i[r] = t) : r === \"style\" ? i[r] = { ...t, ...o } : r === \"className\" && (i[r] = [t, o].filter(Boolean).join(\" \"));\n }\n return { ...e, ...i };\n}\nfunction E(e) {\n var r, t;\n let n = (r = Object.getOwnPropertyDescriptor(e.props, \"ref\")) == null ? void 0 : r.get, i = n && \"isReactWarning\" in n && n.isReactWarning;\n return i ? e.ref : (n = (t = Object.getOwnPropertyDescriptor(e, \"ref\")) == null ? void 0 : t.get, i = n && \"isReactWarning\" in n && n.isReactWarning, i ? e.props.ref : e.props.ref || e.ref);\n}\nvar R = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"span\",\n \"svg\",\n \"ul\"\n], b = R.reduce((e, n) => {\n const i = /* @__PURE__ */ g(`Primitive.${n}`), r = l.forwardRef((t, o) => {\n const { asChild: a, ...s } = t, c = a ? i : n;\n return typeof window < \"u\" && (window[Symbol.for(\"radix-ui\")] = !0), /* @__PURE__ */ u(c, { ...s, ref: o });\n });\n return r.displayName = `Primitive.${n}`, { ...e, [n]: r };\n}, {}), N = \"VisuallyHidden\", m = l.forwardRef(\n (e, n) => /* @__PURE__ */ u(\n b.span,\n {\n ...e,\n ref: n,\n style: {\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n ...e.style\n }\n }\n )\n);\nm.displayName = N;\nvar P = m;\nconst O = ({ asChild: e, children: n, ...i }) => /* @__PURE__ */ u(P, { asChild: e, ...i, children: n });\nexport {\n O as VisuallyHidden\n};\n//# sourceMappingURL=visually-hidden.es.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue.call(this, arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn this && this[arg] || arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(this, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, this && this[key] || key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export function getDiffs(endtime: number) {\n const now = new Date().getTime();\n const diffInMs = Math.abs(endtime - now);\n\n let seconds = 0,\n minutes = 0,\n hours = 0,\n days = 0;\n\n if (diffInMs >= inMs.day) {\n days = Math.floor(diffInMs / inMs.day);\n }\n if (diffInMs >= inMs.hour) {\n hours = Math.floor((diffInMs % inMs.day) / inMs.hour);\n }\n if (diffInMs >= inMs.minute) {\n minutes = Math.floor((diffInMs % inMs.hour) / inMs.minute);\n }\n if (diffInMs >= inMs.second) {\n seconds = Math.floor((diffInMs % inMs.minute) / inMs.second);\n }\n\n return {\n seconds,\n minutes,\n hours,\n days,\n };\n}\n\nexport function getNext(time: number, tag: string) {\n let r = 0;\n if (tag === \"seconds\") r = time - 1 >= 0 ? time - 1 : 59;\n if (tag === \"minutes\") r = time - 1 >= 0 ? time - 1 : 59;\n if (tag === \"hours\") r = time - 1 >= 0 ? time - 1 : 23;\n if (tag === \"days\") r = time - 1 >= 0 ? time - 1 : 0;\n return r;\n}\n\nexport const inMs = {\n day: 24 * 60 * 60 * 1000,\n hour: 60 * 60 * 1000,\n minute: 60 * 1000,\n second: 1000,\n};\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Paragraph } from \"@purpurds/paragraph\";\nimport c from \"classnames/bind\";\n\nimport { type CounterLabels } from \"./countdown.types\";\nimport styles from \"./counter.module.scss\";\nimport { getDiffs, getNext, inMs } from \"./utils\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown-counter\";\n\ninterface CounterProps {\n end: number;\n size: \"md\" | \"lg\";\n tag: \"days\" | \"hours\" | \"minutes\" | \"seconds\";\n counterLabels: CounterLabels;\n}\n\nconst intervals: Map<string, ReturnType<typeof setInterval>> = new Map();\n\nexport const Counter = ({ tag, size, end, counterLabels }: CounterProps) => {\n const ref = useRef<HTMLHeadingElement>(null);\n const id = `${tag}-interval`;\n\n const [currentTime, setCurrentTime] = useState(getDiffs(end)[tag]);\n const [nextTime, setNextTime] = useState(getNext(currentTime, tag));\n const [animationKey, setAnimationKey] = useState(0);\n\n const checktime = useCallback(() => {\n const diffs = getDiffs(end);\n const next = getNext(diffs[tag], tag);\n\n setNextTime(next);\n setCurrentTime(diffs[tag]);\n }, [end, tag]);\n\n useEffect(() => {\n intervals.set(id, setInterval(checktime, inMs.second));\n return () => clearInterval(intervals.get(id)!);\n }, [checktime, id]);\n\n useEffect(() => {\n setAnimationKey((prev) => prev + 1);\n }, [currentTime]);\n\n const counterTag = counterLabels[tag];\n\n return (\n <div\n className={cx(rootClassName)}\n role=\"group\"\n aria-hidden=\"true\"\n data-testid={`counter-${tag}`}\n >\n <Paragraph\n className={cx(`${rootClassName}__number`, `${rootClassName}--size-${size}`)}\n ref={ref}\n data-tick={nextTime}\n key={animationKey}\n >\n {currentTime}\n </Paragraph>\n <Paragraph className={cx(`${rootClassName}__label`)}>{counterTag}</Paragraph>\n </div>\n );\n};\n","import React, { type ForwardedRef, forwardRef, useId } from \"react\";\nimport { Paragraph } from \"@purpurds/paragraph\";\nimport { VisuallyHidden } from \"@purpurds/visually-hidden\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./countdown.module.scss\";\nimport { type CountdownProps } from \"./countdown.types\";\nimport { Counter } from \"./counter\";\nimport { getDiffs } from \"./utils\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown\";\n\nconst now = new Date();\n\n/**\n * Countdown component to display a countdown timer.\n * @param props - CountdownProps\n * @returns A React component that displays a countdown timer.\n */\n\nexport const Countdown = forwardRef(\n (\n { renderAfterEnd, renderBeforeStart, ...props }: CountdownProps,\n ref: ForwardedRef<HTMLButtonElement>\n ) => {\n const id = useId();\n\n const {\n size = \"lg\",\n fullWidth = false,\n negative = false,\n showDays = true,\n variant = \"primary\",\n className,\n counterLabels,\n } = props;\n\n const start = new Date(props.starttime).getTime();\n const end = new Date(props.endtime).getTime();\n\n const hasNotStarted = start > now.getTime();\n const hasEnded = end < now.getTime();\n\n if (hasNotStarted) return renderBeforeStart ? renderBeforeStart(props) : null;\n if (hasEnded) return renderAfterEnd ? renderAfterEnd(props) : null;\n\n const getCounters = () => {\n const counterProps = { size, end, counterLabels };\n\n return (\n <>\n {showDays && <Counter tag=\"days\" {...counterProps} />}\n <Counter tag=\"hours\" {...counterProps} />\n <Counter tag=\"minutes\" {...counterProps} />\n <Counter tag=\"seconds\" {...counterProps} />\n </>\n );\n };\n\n // Create a single announcement of the current time (only once)\n\n const renderAnnouncer = () => {\n const getTimeAnnouncement = () => {\n const { days, hours, minutes, seconds } = getDiffs(end);\n\n const parts = [];\n\n if (showDays) parts.push(`${days} ${counterLabels.days}`);\n parts.push(`${hours} ${counterLabels.hours}`);\n parts.push(`${minutes} ${counterLabels.minutes}`);\n parts.push(`${seconds} ${counterLabels.seconds}`);\n\n return parts.join(\", \");\n };\n\n return (\n <VisuallyHidden\n data-testid=\"live-region\"\n aria-live=\"polite\"\n aria-label={props[\"aria-label\"]}\n >\n {getTimeAnnouncement()}\n </VisuallyHidden>\n );\n };\n\n const counters = getCounters();\n\n const classes = cx([\n rootClassName,\n `${rootClassName}--size-${size}`,\n `${rootClassName}--variant-${variant}`,\n {\n [`${rootClassName}--fullwidth`]: fullWidth,\n [`${rootClassName}--negative`]: negative,\n [`${rootClassName}--showdays`]: showDays,\n },\n className,\n ]);\n\n return (\n <section\n id={id}\n className={classes}\n ref={ref}\n role=\"timer\"\n data-testid={props[\"data-testid\"]}\n >\n {/* Visually hidden live region that announces time only once */}\n {renderAnnouncer()}\n {props.label && (\n <Paragraph className={cx(`${rootClassName}__label`)} variant=\"paragraph-100-medium\">\n {props.label}\n </Paragraph>\n )}\n <div className={cx(`${rootClassName}__counter-container`)}>{counters}</div>\n </section>\n );\n }\n);\n\nCountdown.displayName = \"Countdown\";\n"],"names":["g","p","o","s","_","n","u","r","a","e","h","i","d","c","f","m","A","t","b","l","v","S","y","E","C","w","R","N","P","O","hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","getDiffs","endtime","now","diffInMs","seconds","minutes","hours","days","inMs","getNext","time","tag","cx","styles","rootClassName","intervals","Counter","size","end","counterLabels","ref","useRef","id","currentTime","setCurrentTime","useState","nextTime","setNextTime","animationKey","setAnimationKey","checktime","useCallback","diffs","next","useEffect","prev","counterTag","jsxs","jsx","Paragraph","Countdown","forwardRef","renderAfterEnd","renderBeforeStart","props","useId","fullWidth","negative","showDays","variant","className","start","hasNotStarted","hasEnded","getCounters","counterProps","Fragment","renderAnnouncer","getTimeAnnouncement","parts","VisuallyHidden","counters"],"mappings":";;;;AACA,SAASA,GAAEC,GAAG;AACZ,SAAOA,KAAKA,EAAE,cAAc,OAAO,UAAU,eAAe,KAAKA,GAAG,SAAS,IAAIA,EAAE,UAAUA;AAC/F;AACA,IAAIC,IAAI,EAAE,SAAS,GAAE;AACrB;AAAA;AAAA;AAAA;AAAA;AAKA,IAAIC;AACJ,SAASC,KAAI;AACX,SAAOD,MAAMA,IAAI,IAAI,SAASF,GAAG;AAC/B,KAAC,WAAW;AACV,UAAII,IAAI,CAAA,EAAG;AACX,eAASC,IAAI;AACX,iBAASC,IAAI,IAAIC,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AACjD,cAAIC,IAAI,UAAUD,CAAC;AACnB,UAAAC,MAAMF,IAAIG,EAAEH,GAAGI,EAAE,KAAK,MAAMF,CAAC,CAAC;AAAA,QAChC;AACA,eAAOF;AAAA,MACT;AACA,eAASI,EAAEJ,GAAG;AACZ,YAAI,OAAOA,KAAK,YAAY,OAAOA,KAAK;AACtC,iBAAO,QAAQ,KAAKA,CAAC,KAAKA;AAC5B,YAAI,OAAOA,KAAK;AACd,iBAAO;AACT,YAAI,MAAM,QAAQA,CAAC;AACjB,iBAAOD,EAAE,MAAM,MAAMC,CAAC;AACxB,YAAIA,EAAE,aAAa,OAAO,UAAU,YAAY,CAACA,EAAE,SAAS,WAAW,SAAS,eAAe;AAC7F,iBAAOA,EAAE,SAAQ;AACnB,YAAIC,IAAI;AACR,iBAASC,KAAKF;AACZ,UAAAF,EAAE,KAAKE,GAAGE,CAAC,KAAKF,EAAEE,CAAC,MAAMD,IAAIE,EAAEF,GAAG,QAAQ,KAAKC,CAAC,KAAKA,CAAC;AACxD,eAAOD;AAAA,MACT;AACA,eAASE,EAAEH,GAAGC,GAAG;AACf,eAAOA,IAAID,IAAIA,IAAI,MAAMC,IAAID,IAAIC,IAAID;AAAA,MACvC;AACA,MAAAN,EAAE,WAAWK,EAAE,UAAUA,GAAGL,EAAE,UAAUK,KAAK,OAAO,aAAaA;AAAA,IACnE,GAAC;AAAA,EACH,GAAGJ,CAAC,IAAIA,EAAE;AACZ;AACA,IAAIU,KAAIR,GAAC;AACT,MAAMS,KAAoBb,gBAAAA,GAAEY,EAAC,GAAGE,KAAI;AAAA,EAClC,oBAAoB;AAAA,EACpB,8BAA8B;AAAA,EAC9B,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,mCAAmC;AAAA,EACnC,0CAA0C;AAAA,EAC1C,wCAAwC;AAAA,EACxC,mCAAmC;AAAA,EACnC,kCAAkC;AAAA,EAClC,kCAAkC;AAAA,EAClC,oCAAoC;AAAA,EACpC,2CAA2C;AAAA,EAC3C,kCAAkC;AAAA,EAClC,kCAAkC;AACpC,GAAGC,KAAIF,GAAE,KAAKC,EAAC,GAAGE,KAAI;AAAA,EACpB,cAAc;AAUhB,GAAGC,IAAI,oBAAoBC,IAAI,CAAC;AAAA,EAC9B,UAAUjB;AAAA,EACV,WAAWI;AAAA,EACX,UAAUC;AAAA,EACV,mBAAmBK,IAAI;AAAA,EACvB,UAAUD,IAAI;AAAA,EACd,SAASH,IAAIS,GAAE;AAAA,EACf,GAAGR;AACL,MAAM;AACJ,QAAMC,IAAIM,GAAEV,GAAGY,GAAG,GAAGA,CAAC,KAAKV,CAAC,IAAI;AAAA,IAC9B,CAAC,GAAGU,CAAC,WAAW,GAAGN;AAAA,IACnB,CAAC,GAAGM,CAAC,YAAY,GAAGX;AAAA,IACpB,CAAC,GAAGW,CAAC,YAAY,GAAGP;AAAA,EACxB,CAAG;AACD,SAAuBS,gBAAAA,EAAE,KAAK,EAAE,GAAGX,GAAG,WAAWC,GAAG,UAAUR,GAAG;AACnE;AACAiB,EAAE,cAAc;ACnFhB,SAASN,EAAEH,GAAGJ,GAAG;AACf,MAAI,OAAOI,KAAK;AACd,WAAOA,EAAEJ,CAAC;AACZ,EAAAI,KAAK,SAASA,EAAE,UAAUJ;AAC5B;AACA,SAASK,MAAKD,GAAG;AACf,SAAO,CAACJ,MAAM;AACZ,QAAIM,IAAI;AACR,UAAMJ,IAAIE,EAAE,IAAI,CAACQ,MAAM;AACrB,YAAMf,IAAIU,EAAEK,GAAGZ,CAAC;AAChB,aAAO,CAACM,KAAK,OAAOT,KAAK,eAAeS,IAAI,KAAKT;AAAA,IACnD,CAAC;AACD,QAAIS;AACF,aAAO,MAAM;AACX,iBAASM,IAAI,GAAGA,IAAIV,EAAE,QAAQU,KAAK;AACjC,gBAAMf,IAAIK,EAAEU,CAAC;AACb,iBAAOf,KAAK,aAAaA,EAAC,IAAKU,EAAEH,EAAEQ,CAAC,GAAG,IAAI;AAAA,QAC7C;AAAA,MACF;AAAA,EACJ;AACF;AAAA;AAEA,SAASjB,GAAES,GAAG;AACZ,QAAMJ,IAAoB,gBAAAe,GAAEX,CAAC,GAAGE,IAAIQ,EAAE,WAAW,CAACZ,GAAGU,MAAM;AACzD,UAAM,EAAE,UAAUf,GAAG,GAAGM,EAAC,IAAKD,GAAGJ,IAAIgB,EAAE,SAAS,QAAQjB,CAAC,GAAGW,IAAIV,EAAE,KAAKkB,EAAC;AACxE,QAAIR,GAAG;AACL,YAAMC,IAAID,EAAE,MAAM,UAAUS,IAAInB,EAAE,IAAI,CAACF,MAAMA,MAAMY,IAAIM,EAAE,SAAS,MAAML,CAAC,IAAI,IAAIK,EAAE,SAAS,KAAK,IAAI,IAAIA,EAAE,eAAeL,CAAC,IAAIA,EAAE,MAAM,WAAW,OAAOb,CAAC;AAC1J,aAAuBK,gBAAAA,EAAED,GAAG,EAAE,GAAGG,GAAG,KAAKS,GAAG,UAAUE,EAAE,eAAeL,CAAC,IAAIK,EAAE,aAAaL,GAAG,QAAQQ,CAAC,IAAI,MAAM;AAAA,IACnH;AACA,WAAuBhB,gBAAAA,EAAED,GAAG,EAAE,GAAGG,GAAG,KAAKS,GAAG,UAAUf,GAAG;AAAA,EAC3D,CAAC;AACD,SAAOS,EAAE,cAAc,GAAGF,CAAC,SAASE;AACtC;AAAA;AAEA,SAASS,GAAEX,GAAG;AACZ,QAAMJ,IAAIc,EAAE,WAAW,CAACR,GAAGJ,MAAM;AAC/B,UAAM,EAAE,UAAUU,GAAG,GAAGf,EAAC,IAAKS;AAC9B,QAAIQ,EAAE,eAAeF,CAAC,GAAG;AACvB,YAAMT,IAAIe,GAAEN,CAAC,GAAGd,IAAIqB,GAAEtB,GAAGe,EAAE,KAAK;AAChC,aAAOA,EAAE,SAASE,EAAE,aAAahB,EAAE,MAAMI,IAAIG,GAAEH,GAAGC,CAAC,IAAIA,IAAIW,EAAE,aAAaF,GAAGd,CAAC;AAAA,IAChF;AACA,WAAOgB,EAAE,SAAS,MAAMF,CAAC,IAAI,IAAIE,EAAE,SAAS,KAAK,IAAI,IAAI;AAAA,EAC3D,CAAC;AACD,SAAOd,EAAE,cAAc,GAAGI,CAAC,cAAcJ;AAC3C;AACA,IAAIoB,KAAI,OAAO,iBAAiB;AAChC,SAASJ,GAAEZ,GAAG;AACZ,SAAOU,EAAE,eAAeV,CAAC,KAAK,OAAOA,EAAE,QAAQ,cAAc,eAAeA,EAAE,QAAQA,EAAE,KAAK,cAAcgB;AAC7G;AACA,SAASD,GAAEf,GAAGJ,GAAG;AACf,QAAMM,IAAI,EAAE,GAAGN,EAAC;AAChB,aAAWE,KAAKF,GAAG;AACjB,UAAMY,IAAIR,EAAEF,CAAC,GAAGL,IAAIG,EAAEE,CAAC;AACvB,eAAW,KAAKA,CAAC,IAAIU,KAAKf,IAAIS,EAAEJ,CAAC,IAAI,IAAIJ,MAAM;AAC7C,MAAAD,EAAE,GAAGC,CAAC,GAAGc,EAAE,GAAGd,CAAC;AAAA,IACjB,IAAIc,MAAMN,EAAEJ,CAAC,IAAIU,KAAKV,MAAM,UAAUI,EAAEJ,CAAC,IAAI,EAAE,GAAGU,GAAG,GAAGf,EAAC,IAAKK,MAAM,gBAAgBI,EAAEJ,CAAC,IAAI,CAACU,GAAGf,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAC5H;AACA,SAAO,EAAE,GAAGO,GAAG,GAAGE,EAAC;AACrB;AACA,SAASY,GAAEd,GAAG;AACZ,MAAIF,GAAG;AACP,MAAIF,KAAKE,IAAI,OAAO,yBAAyBE,EAAE,OAAO,KAAK,MAAM,OAAO,SAASF,EAAE,KAAKI,IAAIN,KAAK,oBAAoBA,KAAKA,EAAE;AAC5H,SAAOM,IAAIF,EAAE,OAAOJ,KAAK,IAAI,OAAO,yBAAyBI,GAAG,KAAK,MAAM,OAAO,SAAS,EAAE,KAAKE,IAAIN,KAAK,oBAAoBA,KAAKA,EAAE,gBAAgBM,IAAIF,EAAE,MAAM,MAAMA,EAAE,MAAM,OAAOA,EAAE;AAC3L;AACA,IAAIiB,KAAI;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAGR,KAAIQ,GAAE,OAAO,CAACjB,GAAGJ,MAAM;AACxB,QAAMM,IAAoB,gBAAAX,GAAE,aAAaK,CAAC,EAAE,GAAGE,IAAIY,EAAE,WAAW,CAACF,GAAGf,MAAM;AACxE,UAAM,EAAE,SAASM,GAAG,GAAGL,EAAC,IAAKc,GAAGJ,IAAIL,IAAIG,IAAIN;AAC5C,WAAO,OAAO,SAAS,QAAQ,OAAO,OAAO,IAAI,UAAU,CAAC,IAAI,KAAqBC,gBAAAA,EAAEO,GAAG,EAAE,GAAGV,GAAG,KAAKD,GAAG;AAAA,EAC5G,CAAC;AACD,SAAOK,EAAE,cAAc,aAAaF,CAAC,IAAI,EAAE,GAAGI,GAAG,CAACJ,CAAC,GAAGE,EAAC;AACzD,GAAG,CAAA,CAAE,GAAGoB,KAAI,kBAAkBZ,IAAII,EAAE;AAAA,EAClC,CAACV,GAAGJ,MAAsBC,gBAAAA;AAAAA,IACxBY,GAAE;AAAA,IACF;AAAA,MACE,GAAGT;AAAA,MACH,KAAKJ;AAAA,MACL,OAAO;AAAA;AAAA,QAEL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,GAAGI,EAAE;AAAA,MACb;AAAA,IACA;AAAA,EACA;AACA;AACAM,EAAE,cAAcY;AAChB,IAAIC,KAAIb;AACR,MAAMc,KAAI,CAAC,EAAE,SAASpB,GAAG,UAAUJ,GAAG,GAAGM,EAAC,MAAuBL,gBAAAA,EAAEsB,IAAG,EAAE,SAASnB,GAAG,GAAGE,GAAG,UAAUN,GAAG;;;;;;;;;;;;;AC5GvG,KAAC,WAAY;AAGZ,UAAIyB,IAAS,CAAA,EAAG;AAEhB,eAASC,IAAc;AAGtB,iBAFIC,IAAU,IAELrB,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAC1C,cAAIsB,IAAM,UAAUtB,CAAC;AACrB,UAAIsB,MACHD,IAAUE,EAAYF,GAASG,EAAW,KAAK,MAAMF,CAAG,CAAC;AAAA,QAE7D;AAEE,eAAOD;AAAA,MACT;AAEC,eAASG,EAAYF,GAAK;AACzB,YAAI,OAAOA,KAAQ,YAAY,OAAOA,KAAQ;AAC7C,iBAAO,QAAQ,KAAKA,CAAG,KAAKA;AAG7B,YAAI,OAAOA,KAAQ;AAClB,iBAAO;AAGR,YAAI,MAAM,QAAQA,CAAG;AACpB,iBAAOF,EAAW,MAAM,MAAME,CAAG;AAGlC,YAAIA,EAAI,aAAa,OAAO,UAAU,YAAY,CAACA,EAAI,SAAS,SAAQ,EAAG,SAAS,eAAe;AAClG,iBAAOA,EAAI,SAAQ;AAGpB,YAAID,IAAU;AAEd,iBAASI,KAAOH;AACf,UAAIH,EAAO,KAAKG,GAAKG,CAAG,KAAKH,EAAIG,CAAG,MACnCJ,IAAUE,EAAYF,GAAS,QAAQ,KAAKI,CAAG,KAAKA,CAAG;AAIzD,eAAOJ;AAAA,MACT;AAEC,eAASE,EAAaG,GAAOC,GAAU;AACtC,eAAKA,IAIDD,IACIA,IAAQ,MAAMC,IAGfD,IAAQC,IAPPD;AAAA,MAQV;AAEC,MAAqCE,EAAO,WAC3CR,EAAW,UAAUA,GACrBQ,YAAiBR,KAOjB,OAAO,aAAaA;AAAA,IAEtB;;;;;;;;;;;;;;;;;;;;;;;;AC5EO,SAASS,EAASC,GAAiB;AACxC,QAAMC,KAAM,oBAAI,KAAA,GAAO,QAAA,GACjBC,IAAW,KAAK,IAAIF,IAAUC,CAAG;AAEvC,MAAIE,IAAU,GACZC,IAAU,GACVC,IAAQ,GACRC,IAAO;AAET,SAAIJ,KAAYK,EAAK,QACnBD,IAAO,KAAK,MAAMJ,IAAWK,EAAK,GAAG,IAEnCL,KAAYK,EAAK,SACnBF,IAAQ,KAAK,MAAOH,IAAWK,EAAK,MAAOA,EAAK,IAAI,IAElDL,KAAYK,EAAK,WACnBH,IAAU,KAAK,MAAOF,IAAWK,EAAK,OAAQA,EAAK,MAAM,IAEvDL,KAAYK,EAAK,WACnBJ,IAAU,KAAK,MAAOD,IAAWK,EAAK,SAAUA,EAAK,MAAM,IAGtD;AAAA,IACL,SAAAJ;AAAA,IACA,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC;AAAA,EAAA;AAEJ;AAEO,SAASE,EAAQC,GAAcC,GAAa;AACjD,MAAI5C,IAAI;AACR,SAAI4C,MAAQ,cAAW5C,IAAI2C,IAAO,KAAK,IAAIA,IAAO,IAAI,KAClDC,MAAQ,cAAW5C,IAAI2C,IAAO,KAAK,IAAIA,IAAO,IAAI,KAClDC,MAAQ,YAAS5C,IAAI2C,IAAO,KAAK,IAAIA,IAAO,IAAI,KAChDC,MAAQ,WAAQ5C,IAAI2C,IAAO,KAAK,IAAIA,IAAO,IAAI,IAC5C3C;AACT;AAEO,MAAMyC,IAAO;AAAA,EAClB,KAAK,OAAU,KAAK;AAAA,EACpB,MAAM,OAAU;AAAA,EAChB,QAAQ,KAAK;AAAA,EACb,QAAQ;AACV,GCpCMI,IAAKvC,EAAE,KAAKwC,EAAM,GAElBC,IAAgB,4BAShBC,wBAA6D,IAAA,GAEtDC,IAAU,CAAC,EAAE,KAAAL,GAAK,MAAAM,GAAM,KAAAC,GAAK,eAAAC,QAAkC;AAC1E,QAAMC,IAAMC,EAA2B,IAAI,GACrCC,IAAK,GAAGX,CAAG,aAEX,CAACY,GAAaC,CAAc,IAAIC,EAASzB,EAASkB,CAAG,EAAEP,CAAG,CAAC,GAC3D,CAACe,GAAUC,CAAW,IAAIF,EAAShB,EAAQc,GAAaZ,CAAG,CAAC,GAC5D,CAACiB,GAAcC,CAAe,IAAIJ,EAAS,CAAC,GAE5CK,IAAYC,EAAY,MAAM;AAClC,UAAMC,IAAQhC,EAASkB,CAAG,GACpBe,IAAOxB,EAAQuB,EAAMrB,CAAG,GAAGA,CAAG;AAEpC,IAAAgB,EAAYM,CAAI,GAChBT,EAAeQ,EAAMrB,CAAG,CAAC;AAAA,EAC3B,GAAG,CAACO,GAAKP,CAAG,CAAC;AAEb,EAAAuB,EAAU,OACRnB,EAAU,IAAIO,GAAI,YAAYQ,GAAWtB,EAAK,MAAM,CAAC,GAC9C,MAAM,cAAcO,EAAU,IAAIO,CAAE,CAAE,IAC5C,CAACQ,GAAWR,CAAE,CAAC,GAElBY,EAAU,MAAM;AACd,IAAAL,EAAgB,CAACM,MAASA,IAAO,CAAC;AAAA,EACpC,GAAG,CAACZ,CAAW,CAAC;AAEhB,QAAMa,IAAajB,EAAcR,CAAG;AAEpC,SACE,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWzB,EAAGE,CAAa;AAAA,MAC3B,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,eAAa,WAAWH,CAAG;AAAA,MAE3B,UAAA;AAAA,QAAA,gBAAA2B;AAAA,UAACC;AAAAA,UAAA;AAAA,YACC,WAAW3B,EAAG,GAAGE,CAAa,YAAY,GAAGA,CAAa,UAAUG,CAAI,EAAE;AAAA,YAC1E,KAAAG;AAAA,YACA,aAAWM;AAAA,YAGV,UAAAH;AAAA,UAAA;AAAA,UAFIK;AAAA,QAAA;AAAA,QAIP,gBAAAU,EAACC,KAAU,WAAW3B,EAAG,GAAGE,CAAa,SAAS,GAAI,UAAAsB,EAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvE,GCxDMxB,IAAKvC,EAAE,KAAKwC,EAAM,GAElBC,IAAgB,oBAEhBZ,wBAAU,KAAA,GAQHsC,KAAYC;AAAA,EACvB,CACE,EAAE,gBAAAC,GAAgB,mBAAAC,GAAmB,GAAGC,EAAA,GACxCxB,MACG;AACH,UAAME,IAAKuB,GAAA,GAEL;AAAA,MACJ,MAAA5B,IAAO;AAAA,MACP,WAAA6B,IAAY;AAAA,MACZ,UAAAC,IAAW;AAAA,MACX,UAAAC,IAAW;AAAA,MACX,SAAAC,IAAU;AAAA,MACV,WAAAC;AAAA,MACA,eAAA/B;AAAA,IAAA,IACEyB,GAEEO,IAAQ,IAAI,KAAKP,EAAM,SAAS,EAAE,QAAA,GAClC1B,IAAM,IAAI,KAAK0B,EAAM,OAAO,EAAE,QAAA,GAE9BQ,IAAgBD,IAAQjD,EAAI,QAAA,GAC5BmD,IAAWnC,IAAMhB,EAAI,QAAA;AAE3B,QAAIkD,EAAe,QAAOT,IAAoBA,EAAkBC,CAAK,IAAI;AACzE,QAAIS,EAAU,QAAOX,IAAiBA,EAAeE,CAAK,IAAI;AAE9D,UAAMU,IAAc,MAAM;AACxB,YAAMC,IAAe,EAAE,MAAAtC,GAAM,KAAAC,GAAK,eAAAC,EAAA;AAElC,aACE,gBAAAkB,EAAAmB,GAAA,EACG,UAAA;AAAA,QAAAR,KAAY,gBAAAV,EAACtB,GAAA,EAAQ,KAAI,QAAQ,GAAGuC,GAAc;AAAA,QACnD,gBAAAjB,EAACtB,GAAA,EAAQ,KAAI,SAAS,GAAGuC,EAAA,CAAc;AAAA,QACvC,gBAAAjB,EAACtB,GAAA,EAAQ,KAAI,WAAW,GAAGuC,EAAA,CAAc;AAAA,QACzC,gBAAAjB,EAACtB,GAAA,EAAQ,KAAI,WAAW,GAAGuC,EAAA,CAAc;AAAA,MAAA,GAC3C;AAAA,IAEJ,GAIME,IAAkB,MAAM;AAC5B,YAAMC,IAAsB,MAAM;AAChC,cAAM,EAAE,MAAAnD,GAAM,OAAAD,GAAO,SAAAD,GAAS,SAAAD,EAAA,IAAYJ,EAASkB,CAAG,GAEhDyC,IAAQ,CAAA;AAEd,eAAIX,OAAgB,KAAK,GAAGzC,CAAI,IAAIY,EAAc,IAAI,EAAE,GACxDwC,EAAM,KAAK,GAAGrD,CAAK,IAAIa,EAAc,KAAK,EAAE,GAC5CwC,EAAM,KAAK,GAAGtD,CAAO,IAAIc,EAAc,OAAO,EAAE,GAChDwC,EAAM,KAAK,GAAGvD,CAAO,IAAIe,EAAc,OAAO,EAAE,GAEzCwC,EAAM,KAAK,IAAI;AAAA,MACxB;AAEA,aACE,gBAAArB;AAAA,QAACsB;AAAAA,QAAA;AAAA,UACC,eAAY;AAAA,UACZ,aAAU;AAAA,UACV,cAAYhB,EAAM,YAAY;AAAA,UAE7B,UAAAc,EAAA;AAAA,QAAoB;AAAA,MAAA;AAAA,IAG3B,GAEMG,IAAWP,EAAA,GAEX9D,IAAUoB,EAAG;AAAA,MACjBE;AAAA,MACA,GAAGA,CAAa,UAAUG,CAAI;AAAA,MAC9B,GAAGH,CAAa,aAAamC,CAAO;AAAA,MACpC;AAAA,QACE,CAAC,GAAGnC,CAAa,aAAa,GAAGgC;AAAA,QACjC,CAAC,GAAGhC,CAAa,YAAY,GAAGiC;AAAA,QAChC,CAAC,GAAGjC,CAAa,YAAY,GAAGkC;AAAA,MAAA;AAAA,MAElCE;AAAA,IAAA,CACD;AAED,WACE,gBAAAb;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAAf;AAAA,QACA,WAAW9B;AAAA,QACX,KAAA4B;AAAA,QACA,MAAK;AAAA,QACL,eAAawB,EAAM,aAAa;AAAA,QAG/B,UAAA;AAAA,UAAAa,EAAA;AAAA,UACAb,EAAM,SACL,gBAAAN,EAACC,GAAA,EAAU,WAAW3B,EAAG,GAAGE,CAAa,SAAS,GAAG,SAAQ,wBAC1D,YAAM,OACT;AAAA,UAEF,gBAAAwB,EAAC,SAAI,WAAW1B,EAAG,GAAGE,CAAa,qBAAqB,GAAI,UAAA+C,EAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAG3E;AACF;AAEArB,GAAU,cAAc;","x_google_ignoreList":[2]}
@@ -0,0 +1,41 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export type CountdownProps = {
4
+ "data-testid"?: string;
5
+ "aria-label": string;
6
+ className?: string;
7
+ label?: string;
8
+ size: "md" | "lg";
9
+ variant: "primary" | "secondary";
10
+ fullWidth?: boolean;
11
+ showDays?: boolean;
12
+ negative?: boolean;
13
+ /**
14
+ * Start time of the countdown. Can be a Date object or a timestamp in milliseconds.
15
+ */
16
+ starttime: Date | number;
17
+ /**
18
+ * End time of the countdown. Can be a Date object or a timestamp in milliseconds.
19
+ */
20
+ endtime: Date | number;
21
+ /**
22
+ * Render a custom element before the countdown starts.
23
+ */
24
+ renderBeforeStart?: (props: Omit<CountdownProps, "renderBeforeStart" | "renderAfterEnd">) => ReactNode;
25
+ /**
26
+ * Render a custom element after the countdown ends.
27
+ */
28
+ renderAfterEnd?: (props: Omit<CountdownProps, "renderBeforeStart" | "renderAfterEnd">) => ReactNode;
29
+ /**
30
+ * Copy for the countdown labels.
31
+ * Used to customize the text displayed for each time unit.
32
+ */
33
+ counterLabels: CounterLabels;
34
+ };
35
+ export type CounterLabels = {
36
+ days: string;
37
+ hours: string;
38
+ minutes: string;
39
+ seconds: string;
40
+ };
41
+ //# sourceMappingURL=countdown.types.d.ts.map