@solace-health/ui 0.10.530 → 0.10.531

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.
package/README.md CHANGED
@@ -65,6 +65,8 @@ yalc link @solace-health/ui
65
65
 
66
66
  `solace-health-app` will now be using your local version of `solace-health-ui`.
67
67
 
68
+ NOTE: Make sure the package versions match between the UI library and the consuming app, otherwise linking may not work as expected.
69
+
68
70
  #### 4. Reloading the consumer app
69
71
 
70
72
  To automatically build and publish new changes to the UI repo with yalc, run the following command:
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),t=require('@radix-ui/react-hover-card'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var t__namespace=/*#__PURE__*/_interopNamespace(t);function m({...o}){return jsxRuntime.jsx(t__namespace.Root,{"data-slot":"hover-card",...o})}function s({...o}){return jsxRuntime.jsx(t__namespace.Trigger,{"data-slot":"hover-card-trigger",...o})}function v({className:o,align:a="center",sideOffset:i=4,...d}){return jsxRuntime.jsx(t__namespace.Portal,{"data-slot":"hover-card-portal",children:jsxRuntime.jsx(t__namespace.Content,{"data-slot":"hover-card-content",align:a,sideOffset:i,className:chunkQRO22BPZ_cjs.a("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-w-xl origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",o),...d})})}exports.a=m;exports.b=s;exports.c=v;//# sourceMappingURL=chunk-HTYMWSQE.cjs.map
2
+ //# sourceMappingURL=chunk-HTYMWSQE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/hover-card/hover-card.tsx"],"names":["HoverCard","props","jsx","t","HoverCardTrigger","HoverCardContent","className","align","sideOffset","cn"],"mappings":"yfAKA,SAASA,CAAU,CAAA,CAAE,GAAGC,CAAM,EAAyD,CACrF,OAAOC,cAAoB,CAAAC,YAAA,CAAA,IAAA,CAAnB,CAAwB,WAAU,CAAA,YAAA,CAAc,GAAGF,CAAAA,CAAO,CACpE,CAEA,SAASG,CAAiB,CAAA,CAAE,GAAGH,CAAM,CAAA,CAA4D,CAC/F,OAAOC,eAAoBC,YAAnB,CAAA,OAAA,CAAA,CAA2B,YAAU,oBAAsB,CAAA,GAAGF,EAAO,CAC/E,CAEA,SAASI,CAAAA,CAAiB,CACxB,SAAAC,CAAAA,CAAAA,CACA,KAAAC,CAAAA,CAAAA,CAAQ,SACR,UAAAC,CAAAA,CAAAA,CAAa,CACb,CAAA,GAAGP,CACL,CAA4D,CAAA,CAC1D,OACEC,cAAAA,CAAoBC,oBAAnB,CAA0B,WAAA,CAAU,mBACnC,CAAA,QAAA,CAAAD,eAAoBC,YAAnB,CAAA,OAAA,CAAA,CACC,WAAU,CAAA,oBAAA,CACV,MAAOI,CACP,CAAA,UAAA,CAAYC,CACZ,CAAA,SAAA,CAAWC,oBACT,ueACAH,CAAAA,CACF,EACC,GAAGL,CAAAA,CACN,EACF,CAEJ","file":"chunk-HTYMWSQE.cjs","sourcesContent":["import * as React from 'react';\nimport * as HoverCardPrimitive from '@radix-ui/react-hover-card';\n\nimport { cn } from '@/lib/utils';\n\nfunction HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />;\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-w-xl origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"]}
@@ -1,2 +1,2 @@
1
- import {a,d,c,g,i}from'./chunk-YIOPQQWU.js';import {a as a$1}from'./chunk-YTIIAU4W.js';import {DateTime,Duration}from'luxon';import {useMemo}from'react';import {jsxs,jsx}from'react/jsx-runtime';var S="00:00",b="24:00",T=r=>DateTime.fromFormat(r,"HH:mm").isValid,D=({startTime:r=S,endTime:t=b,interval:f=30,onChange:w=void 0,className:C="",size:v="default",portal:h=true,...F})=>{T(r)||(console.error(`Invalid startTime: ${r}`),r=S),T(t)||(console.error(`Invalid endTime: ${t}`),t=b);let g$1=useMemo(()=>{let o=DateTime.fromFormat(t,"HH:mm"),a=Duration.fromObject({minutes:f}),n=[],e=DateTime.fromFormat(r,"HH:mm");for(;e<=o;){let p=e.toFormat("HH:mm");p==="00:00"&&e.equals(o)&&(p="24:00"),n.push({label:e.toFormat("h:mm a"),value:{hour:e.toFormat("HH"),min:e.toFormat("mm"),raw:p,formatted:e.toFormat("h:mm a")}}),e=e.plus(a);}return n},[r,t,f]),M=g$1.map(o=>({label:o.label,value:o.value.raw}));return jsxs(a,{onValueChange:o=>{let a=g$1.find(n=>n.value.raw===o);a&&w?.(a);},...F,children:[jsx(d,{className:a$1("max-w-[240px] md:w-[150px]",C),size:v,children:jsx(c,{placeholder:"Select one"})}),jsx(g,{position:"popper",className:"max-h-90",portal:h,children:M.map(o=>jsx(i,{className:"h-10",value:o.value,children:o.label},o.value))})]})},br=D;export{D as a,br as b};//# sourceMappingURL=chunk-IZUQXFRW.js.map
2
- //# sourceMappingURL=chunk-IZUQXFRW.js.map
1
+ import {a,d,c,g,i}from'./chunk-YIOPQQWU.js';import {a as a$1}from'./chunk-YTIIAU4W.js';import {DateTime,Duration}from'luxon';import {useMemo}from'react';import {jsxs,jsx}from'react/jsx-runtime';var C="00:00",S="24:00",b=r=>DateTime.fromFormat(r,"HH:mm").isValid,D=({startTime:r=C,endTime:t=S,interval:f=30,onChange:T=void 0,className:w="",size:v="default",portal:h=true,...F})=>{b(r)||(console.error(`Invalid startTime: ${r}`),r=C),b(t)||(console.error(`Invalid endTime: ${t}`),t=S);let g$1=useMemo(()=>{let o=DateTime.fromFormat(t,"HH:mm"),a=Duration.fromObject({minutes:f}),n=[],e=DateTime.fromFormat(r,"HH:mm");for(;e<=o;){let p=e.toFormat("HH:mm");p==="00:00"&&e.equals(o)&&(p="24:00"),n.push({label:e.toFormat("h:mm a"),value:{hour:e.toFormat("HH"),min:e.toFormat("mm"),raw:p,formatted:e.toFormat("h:mm a")}}),e=e.plus(a);}return n},[r,t,f]),M=g$1.map(o=>({label:o.label,value:o.value.raw}));return jsxs(a,{onValueChange:o=>{let a=g$1.find(n=>n.value.raw===o);a&&T?.(a);},...F,children:[jsx(d,{className:a$1("max-w-[240px] md:w-[150px]",w),size:v,children:jsx(c,{placeholder:"Select one"})}),jsx(g,{position:"popper",className:"max-h-90",portal:h,children:M.map(o=>jsx(i,{className:"h-10",value:o.value,children:o.label},o.value))})]})},vr=D;export{D as a,vr as b};//# sourceMappingURL=chunk-N2GXHZUY.js.map
2
+ //# sourceMappingURL=chunk-N2GXHZUY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/time-select/time-select.tsx"],"names":["START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","onChange","className","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","jsxs","Select","e","jsx","SelectTrigger","cn","SelectValue","SelectContent","option","SelectItem","time_select_default"],"mappings":"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","file":"chunk-IZUQXFRW.js","sourcesContent":["import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder=\"Select one\" />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n"]}
1
+ {"version":3,"sources":["../src/v2/time-select/time-select.tsx"],"names":["START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","onChange","className","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","jsxs","Select","e","jsx","SelectTrigger","cn","SelectValue","SelectContent","option","SelectItem","time_select_default"],"mappings":"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","file":"chunk-N2GXHZUY.js","sourcesContent":["import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder=\"Select one\" />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk75JCLU5T_cjs=require('./chunk-75JCLU5T.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),luxon=require('luxon'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var S="00:00",b="24:00",T=r=>luxon.DateTime.fromFormat(r,"HH:mm").isValid,D=({startTime:r=S,endTime:t=b,interval:f=30,onChange:w=void 0,className:C="",size:v="default",portal:h=true,...F})=>{T(r)||(console.error(`Invalid startTime: ${r}`),r=S),T(t)||(console.error(`Invalid endTime: ${t}`),t=b);let g=react.useMemo(()=>{let o=luxon.DateTime.fromFormat(t,"HH:mm"),a=luxon.Duration.fromObject({minutes:f}),n=[],e=luxon.DateTime.fromFormat(r,"HH:mm");for(;e<=o;){let p=e.toFormat("HH:mm");p==="00:00"&&e.equals(o)&&(p="24:00"),n.push({label:e.toFormat("h:mm a"),value:{hour:e.toFormat("HH"),min:e.toFormat("mm"),raw:p,formatted:e.toFormat("h:mm a")}}),e=e.plus(a);}return n},[r,t,f]),M=g.map(o=>({label:o.label,value:o.value.raw}));return jsxRuntime.jsxs(chunk75JCLU5T_cjs.a,{onValueChange:o=>{let a=g.find(n=>n.value.raw===o);a&&w?.(a);},...F,children:[jsxRuntime.jsx(chunk75JCLU5T_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",C),size:v,children:jsxRuntime.jsx(chunk75JCLU5T_cjs.c,{placeholder:"Select one"})}),jsxRuntime.jsx(chunk75JCLU5T_cjs.g,{position:"popper",className:"max-h-90",portal:h,children:M.map(o=>jsxRuntime.jsx(chunk75JCLU5T_cjs.i,{className:"h-10",value:o.value,children:o.label},o.value))})]})},br=D;exports.a=D;exports.b=br;//# sourceMappingURL=chunk-6TYW3TSG.cjs.map
2
- //# sourceMappingURL=chunk-6TYW3TSG.cjs.map
1
+ 'use strict';var chunk75JCLU5T_cjs=require('./chunk-75JCLU5T.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),luxon=require('luxon'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var C="00:00",S="24:00",b=r=>luxon.DateTime.fromFormat(r,"HH:mm").isValid,D=({startTime:r=C,endTime:t=S,interval:f=30,onChange:T=void 0,className:w="",size:v="default",portal:h=true,...F})=>{b(r)||(console.error(`Invalid startTime: ${r}`),r=C),b(t)||(console.error(`Invalid endTime: ${t}`),t=S);let g=react.useMemo(()=>{let o=luxon.DateTime.fromFormat(t,"HH:mm"),a=luxon.Duration.fromObject({minutes:f}),n=[],e=luxon.DateTime.fromFormat(r,"HH:mm");for(;e<=o;){let p=e.toFormat("HH:mm");p==="00:00"&&e.equals(o)&&(p="24:00"),n.push({label:e.toFormat("h:mm a"),value:{hour:e.toFormat("HH"),min:e.toFormat("mm"),raw:p,formatted:e.toFormat("h:mm a")}}),e=e.plus(a);}return n},[r,t,f]),M=g.map(o=>({label:o.label,value:o.value.raw}));return jsxRuntime.jsxs(chunk75JCLU5T_cjs.a,{onValueChange:o=>{let a=g.find(n=>n.value.raw===o);a&&T?.(a);},...F,children:[jsxRuntime.jsx(chunk75JCLU5T_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",w),size:v,children:jsxRuntime.jsx(chunk75JCLU5T_cjs.c,{placeholder:"Select one"})}),jsxRuntime.jsx(chunk75JCLU5T_cjs.g,{position:"popper",className:"max-h-90",portal:h,children:M.map(o=>jsxRuntime.jsx(chunk75JCLU5T_cjs.i,{className:"h-10",value:o.value,children:o.label},o.value))})]})},vr=D;exports.a=D;exports.b=vr;//# sourceMappingURL=chunk-RQS7G3ER.cjs.map
2
+ //# sourceMappingURL=chunk-RQS7G3ER.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/time-select/time-select.tsx"],"names":["START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","onChange","className","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","jsxs","Select","e","jsx","SelectTrigger","cn","SelectValue","SelectContent","option","SelectItem","time_select_default"],"mappings":"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","file":"chunk-6TYW3TSG.cjs","sourcesContent":["import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder=\"Select one\" />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n"]}
1
+ {"version":3,"sources":["../src/v2/time-select/time-select.tsx"],"names":["START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","onChange","className","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","jsxs","Select","e","jsx","SelectTrigger","cn","SelectValue","SelectContent","option","SelectItem","time_select_default"],"mappings":"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","file":"chunk-RQS7G3ER.cjs","sourcesContent":["import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder=\"Select one\" />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-YTIIAU4W.js';import*as t from'@radix-ui/react-hover-card';import {jsx}from'react/jsx-runtime';function m({...o}){return jsx(t.Root,{"data-slot":"hover-card",...o})}function s({...o}){return jsx(t.Trigger,{"data-slot":"hover-card-trigger",...o})}function v({className:o,align:a$1="center",sideOffset:i=4,...d}){return jsx(t.Portal,{"data-slot":"hover-card-portal",children:jsx(t.Content,{"data-slot":"hover-card-content",align:a$1,sideOffset:i,className:a("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-w-xl origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",o),...d})})}export{m as a,s as b,v as c};//# sourceMappingURL=chunk-XH6WCBQY.js.map
2
+ //# sourceMappingURL=chunk-XH6WCBQY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/hover-card/hover-card.tsx"],"names":["HoverCard","props","jsx","HoverCardTrigger","HoverCardContent","className","align","sideOffset","cn"],"mappings":"qHAKA,SAASA,CAAU,CAAA,CAAE,GAAGC,CAAM,EAAyD,CACrF,OAAOC,GAAoB,CAAA,CAAA,CAAA,IAAA,CAAnB,CAAwB,WAAU,CAAA,YAAA,CAAc,GAAGD,CAAAA,CAAO,CACpE,CAEA,SAASE,CAAiB,CAAA,CAAE,GAAGF,CAAM,CAAA,CAA4D,CAC/F,OAAOC,IAAoB,CAAnB,CAAA,OAAA,CAAA,CAA2B,YAAU,oBAAsB,CAAA,GAAGD,EAAO,CAC/E,CAEA,SAASG,CAAAA,CAAiB,CACxB,SAAAC,CAAAA,CAAAA,CACA,KAAAC,CAAAA,GAAAA,CAAQ,SACR,UAAAC,CAAAA,CAAAA,CAAa,CACb,CAAA,GAAGN,CACL,CAA4D,CAAA,CAC1D,OACEC,GAAAA,CAAoB,SAAnB,CAA0B,WAAA,CAAU,mBACnC,CAAA,QAAA,CAAAA,IAAoB,CAAnB,CAAA,OAAA,CAAA,CACC,WAAU,CAAA,oBAAA,CACV,MAAOI,GACP,CAAA,UAAA,CAAYC,CACZ,CAAA,SAAA,CAAWC,EACT,ueACAH,CAAAA,CACF,EACC,GAAGJ,CAAAA,CACN,EACF,CAEJ","file":"chunk-XH6WCBQY.js","sourcesContent":["import * as React from 'react';\nimport * as HoverCardPrimitive from '@radix-ui/react-hover-card';\n\nimport { cn } from '@/lib/utils';\n\nfunction HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />;\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-w-xl origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"]}