@solace-health/ui 0.10.697 → 0.10.699
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 +6 -0
- package/dist/BackLink/BackLink.cjs +1 -1
- package/dist/BackLink/BackLink.js +1 -1
- package/dist/Card/index.cjs +1 -1
- package/dist/Card/index.js +1 -1
- package/dist/DateDropdown/index.cjs +1 -1
- package/dist/DateDropdown/index.js +1 -1
- package/dist/DateSelectCalendar/DateSelectCalendar.cjs +1 -1
- package/dist/DateSelectCalendar/DateSelectCalendar.js +1 -1
- package/dist/Error/index.cjs +1 -1
- package/dist/Error/index.js +1 -1
- package/dist/ExpandableDrawer/index.cjs +1 -1
- package/dist/ExpandableDrawer/index.js +1 -1
- package/dist/File/index.cjs +1 -1
- package/dist/File/index.js +1 -1
- package/dist/Form/AddressSelect/index.cjs +1 -1
- package/dist/Form/AddressSelect/index.js +1 -1
- package/dist/Form/AddressSelect/index.stories.d.ts +6 -2
- package/dist/Form/Checkbox/index.cjs +1 -1
- package/dist/Form/Checkbox/index.js +1 -1
- package/dist/Form/Container/index.stories.d.ts +6 -2
- package/dist/Form/DateDropdown/index.cjs +1 -1
- package/dist/Form/DateDropdown/index.js +1 -1
- package/dist/Form/DateSelect/index.cjs +1 -1
- package/dist/Form/DateSelect/index.js +1 -1
- package/dist/Form/DateTextMaskInput/index.cjs +1 -1
- package/dist/Form/DateTextMaskInput/index.js +1 -1
- package/dist/Form/FileUpload/index.cjs +1 -1
- package/dist/Form/FileUpload/index.js +1 -1
- package/dist/Form/Keyword/index.cjs +1 -1
- package/dist/Form/Keyword/index.js +1 -1
- package/dist/Form/LocationSelect/index.cjs +1 -1
- package/dist/Form/LocationSelect/index.js +1 -1
- package/dist/Form/LocationSelect/index.stories.d.ts +6 -2
- package/dist/Form/Number/index.cjs +1 -1
- package/dist/Form/Number/index.js +1 -1
- package/dist/Form/OTP/index.cjs +1 -1
- package/dist/Form/OTP/index.js +1 -1
- package/dist/Form/Radio/index.cjs +1 -1
- package/dist/Form/Radio/index.js +1 -1
- package/dist/Form/Select/index.cjs +1 -1
- package/dist/Form/Select/index.js +1 -1
- package/dist/Form/SelectMenu/index.cjs +1 -1
- package/dist/Form/SelectMenu/index.js +1 -1
- package/dist/Form/SentimentSelector/index.cjs +1 -1
- package/dist/Form/SentimentSelector/index.js +1 -1
- package/dist/Form/Signature/index.cjs +1 -1
- package/dist/Form/Signature/index.js +1 -1
- package/dist/Form/Text/index.cjs +1 -1
- package/dist/Form/Text/index.js +1 -1
- package/dist/Form/TextInput/index.cjs +1 -1
- package/dist/Form/TextInput/index.js +1 -1
- package/dist/Form/TimePicker/index.cjs +1 -1
- package/dist/Form/TimePicker/index.js +1 -1
- package/dist/Form/TimeSelect/index.cjs +1 -1
- package/dist/Form/TimeSelect/index.js +1 -1
- package/dist/Form/index.cjs +1 -1
- package/dist/Form/index.js +1 -1
- package/dist/Form/shared/FormInputLabel.cjs +1 -1
- package/dist/Form/shared/FormInputLabel.js +1 -1
- package/dist/Form/shared/HelpModal.cjs +1 -1
- package/dist/Form/shared/HelpModal.js +1 -1
- package/dist/IconSelector/IconSelector.cjs +1 -1
- package/dist/IconSelector/IconSelector.js +1 -1
- package/dist/Menu/ExpandIcon.cjs +1 -1
- package/dist/Menu/ExpandIcon.js +1 -1
- package/dist/Menu/index.cjs +1 -1
- package/dist/Menu/index.js +1 -1
- package/dist/Molecules/FilterPopover/FiltersMenu/FiltersMenu.cjs +1 -1
- package/dist/Molecules/FilterPopover/FiltersMenu/FiltersMenu.js +1 -1
- package/dist/Molecules/FilterPopover/index.cjs +1 -1
- package/dist/Molecules/FilterPopover/index.js +1 -1
- package/dist/NavigationMenu/ExpandIcon.cjs +1 -1
- package/dist/NavigationMenu/ExpandIcon.js +1 -1
- package/dist/NavigationMenu/index.cjs +1 -1
- package/dist/NavigationMenu/index.js +1 -1
- package/dist/PreviewDrawer/PreviewDrawer.cjs +1 -1
- package/dist/PreviewDrawer/PreviewDrawer.js +1 -1
- package/dist/Search/index.cjs +1 -1
- package/dist/Search/index.js +1 -1
- package/dist/SelectClient/index.cjs +1 -1
- package/dist/SelectClient/index.js +1 -1
- package/dist/SentimentSelector/index.cjs +1 -1
- package/dist/SentimentSelector/index.js +1 -1
- package/dist/SortableList/index.cjs +1 -1
- package/dist/SortableList/index.js +1 -1
- package/dist/TimeSelect/styles.cjs +4 -4
- package/dist/TimeSelect/styles.js +1 -1
- package/dist/{chunk-FPCB2FJZ.js → chunk-6IWT66UC.js} +2 -2
- package/dist/{chunk-FPCB2FJZ.js.map → chunk-6IWT66UC.js.map} +1 -1
- package/dist/{chunk-HLHHTNKY.js → chunk-7OKSLNLM.js} +3 -3
- package/dist/{chunk-HLHHTNKY.js.map → chunk-7OKSLNLM.js.map} +1 -1
- package/dist/{chunk-NMLWAEPS.js → chunk-AITNEX3M.js} +2 -2
- package/dist/{chunk-NMLWAEPS.js.map → chunk-AITNEX3M.js.map} +1 -1
- package/dist/{chunk-E6BK54DF.js → chunk-C4QT2REU.js} +2 -2
- package/dist/{chunk-E6BK54DF.js.map → chunk-C4QT2REU.js.map} +1 -1
- package/dist/{chunk-4IANQPWP.cjs → chunk-CESFBVDC.cjs} +2 -2
- package/dist/{chunk-4IANQPWP.cjs.map → chunk-CESFBVDC.cjs.map} +1 -1
- package/dist/{chunk-6LF75XAE.cjs → chunk-F26QEJL3.cjs} +2 -2
- package/dist/{chunk-6LF75XAE.cjs.map → chunk-F26QEJL3.cjs.map} +1 -1
- package/dist/{chunk-2KZYFEKJ.cjs → chunk-HCMJMPCZ.cjs} +3 -3
- package/dist/{chunk-2KZYFEKJ.cjs.map → chunk-HCMJMPCZ.cjs.map} +1 -1
- package/dist/chunk-I24BEPSW.js +2 -0
- package/dist/chunk-I24BEPSW.js.map +1 -0
- package/dist/{chunk-WAKVVGCX.cjs → chunk-Q7XLZDG6.cjs} +2 -2
- package/dist/{chunk-WAKVVGCX.cjs.map → chunk-Q7XLZDG6.cjs.map} +1 -1
- package/dist/{chunk-P7GTZPIS.cjs → chunk-QQCG3BDP.cjs} +2 -2
- package/dist/{chunk-P7GTZPIS.cjs.map → chunk-QQCG3BDP.cjs.map} +1 -1
- package/dist/chunk-TWFZJV2Y.js +2 -0
- package/dist/{chunk-KBIGZH6K.js.map → chunk-TWFZJV2Y.js.map} +1 -1
- package/dist/{chunk-G2DIKL67.js → chunk-UVWU27RW.js} +3 -3
- package/dist/{chunk-G2DIKL67.js.map → chunk-UVWU27RW.js.map} +1 -1
- package/dist/{chunk-RLTRAR3A.cjs → chunk-VSK56T5E.cjs} +3 -3
- package/dist/{chunk-RLTRAR3A.cjs.map → chunk-VSK56T5E.cjs.map} +1 -1
- package/dist/chunk-WV37TGCH.cjs +2 -0
- package/dist/chunk-WV37TGCH.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/v2/accordion/accordion.cjs +1 -1
- package/dist/v2/accordion/accordion.js +1 -1
- package/dist/v2/address-input/address-input.cjs +1 -1
- package/dist/v2/address-input/address-input.js +1 -1
- package/dist/v2/checkbox/button-checkbox.cjs +1 -1
- package/dist/v2/checkbox/button-checkbox.js +1 -1
- package/dist/v2/checkbox-group/checkbox-group.cjs +1 -1
- package/dist/v2/checkbox-group/checkbox-group.js +1 -1
- package/dist/v2/date-picker/date-picker-input.cjs +1 -1
- package/dist/v2/date-picker/date-picker-input.js +1 -1
- package/dist/v2/date-picker/date-picker.cjs +1 -1
- package/dist/v2/date-picker/date-picker.js +1 -1
- package/dist/v2/image-preview/image-preview.cjs +1 -1
- package/dist/v2/image-preview/image-preview.js +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.d.ts +1 -1
- package/dist/v2/index.js +1 -1
- package/dist/v2/table/table.cjs +1 -1
- package/dist/v2/table/table.d.ts +81 -2
- package/dist/v2/table/table.interactions.stories.d.ts +18 -0
- package/dist/v2/table/table.js +1 -1
- package/dist/v2/table/table.stories.d.ts +8 -0
- package/dist/v2/time-select/time-select.cjs +1 -1
- package/dist/v2/time-select/time-select.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-GYUDUDGB.js +0 -2
- package/dist/chunk-GYUDUDGB.js.map +0 -1
- package/dist/chunk-KBIGZH6K.js +0 -2
- package/dist/chunk-UZCCRCUM.cjs +0 -2
- package/dist/chunk-UZCCRCUM.cjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),o=require('radix-ui/accordion'),lu=require('react-icons/lu'),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 o__namespace=/*#__PURE__*/_interopNamespace(o);function m({...t}){return jsxRuntime.jsx(o__namespace.Root,{"data-slot":"accordion",...t})}function l({className:t,...e}){return jsxRuntime.jsx(o__namespace.Item,{"data-slot":"accordion-item",className:chunkQRO22BPZ_cjs.a("border-b last:border-b-0",t),...e})}function p({className:t,children:e,...n}){return jsxRuntime.jsx(o__namespace.Header,{className:"flex",children:jsxRuntime.jsxs(o__namespace.Trigger,{"data-slot":"accordion-trigger",className:chunkQRO22BPZ_cjs.a("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-lg font-bold transition-all outline-none
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),o=require('radix-ui/accordion'),lu=require('react-icons/lu'),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 o__namespace=/*#__PURE__*/_interopNamespace(o);function m({...t}){return jsxRuntime.jsx(o__namespace.Root,{"data-slot":"accordion",...t})}function l({className:t,...e}){return jsxRuntime.jsx(o__namespace.Item,{"data-slot":"accordion-item",className:chunkQRO22BPZ_cjs.a("border-b last:border-b-0",t),...e})}function p({className:t,children:e,...n}){return jsxRuntime.jsx(o__namespace.Header,{className:"flex",children:jsxRuntime.jsxs(o__namespace.Trigger,{"data-slot":"accordion-trigger",className:chunkQRO22BPZ_cjs.a("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-lg font-bold transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",t),...n,children:[e,jsxRuntime.jsx(lu.LuChevronDown,{className:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"})]})})}function f({className:t,children:e,...n}){return jsxRuntime.jsx(o__namespace.Content,{"data-slot":"accordion-content",className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",...n,children:jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("pt-0 pb-4",t),children:e})})}exports.a=m;exports.b=l;exports.c=p;exports.d=f;//# sourceMappingURL=chunk-F26QEJL3.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-F26QEJL3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/accordion/accordion.tsx"],"names":["Accordion","props","jsx","o","AccordionItem","className","cn","AccordionTrigger","children","jsxs","LuChevronDown","AccordionContent"],"mappings":"8gBAMA,SAASA,CAAAA,CAAU,CAAE,GAAGC,CAAM,CAAA,CAAyD,CACrF,OAAOC,cAAAA,CAAoBC,YAAA,CAAA,IAAA,CAAnB,CAAwB,WAAA,CAAU,WAAA,CAAa,GAAGF,CAAAA,CAAO,CACnE,CAEA,SAASG,CAAAA,CAAc,CACrB,SAAA,CAAAC,CAAAA,CACA,GAAGJ,CACL,CAAA,CAAyD,CACvD,OACEC,cAAAA,CAAoBC,YAAA,CAAA,IAAA,CAAnB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWG,mBAAAA,CAAG,0BAAA,CAA4BD,CAAS,CAAA,CAClD,GAAGJ,CAAAA,CACN,CAEJ,CAEA,SAASM,CAAAA,CAAiB,CACxB,SAAA,CAAAF,CAAAA,CACA,QAAA,CAAAG,CAAAA,CACA,GAAGP,CACL,CAAA,CAA4D,CAC1D,OACEC,cAAAA,CAAoBC,YAAA,CAAA,MAAA,CAAnB,CAA0B,SAAA,CAAU,MAAA,CACnC,QAAA,CAAAM,eAAAA,CAAoBN,YAAA,CAAA,OAAA,CAAnB,CACC,WAAA,CAAU,mBAAA,CACV,SAAA,CAAWG,mBAAAA,CACT,
|
|
1
|
+
{"version":3,"sources":["../src/v2/accordion/accordion.tsx"],"names":["Accordion","props","jsx","o","AccordionItem","className","cn","AccordionTrigger","children","jsxs","LuChevronDown","AccordionContent"],"mappings":"8gBAMA,SAASA,CAAAA,CAAU,CAAE,GAAGC,CAAM,CAAA,CAAyD,CACrF,OAAOC,cAAAA,CAAoBC,YAAA,CAAA,IAAA,CAAnB,CAAwB,WAAA,CAAU,WAAA,CAAa,GAAGF,CAAAA,CAAO,CACnE,CAEA,SAASG,CAAAA,CAAc,CACrB,SAAA,CAAAC,CAAAA,CACA,GAAGJ,CACL,CAAA,CAAyD,CACvD,OACEC,cAAAA,CAAoBC,YAAA,CAAA,IAAA,CAAnB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWG,mBAAAA,CAAG,0BAAA,CAA4BD,CAAS,CAAA,CAClD,GAAGJ,CAAAA,CACN,CAEJ,CAEA,SAASM,CAAAA,CAAiB,CACxB,SAAA,CAAAF,CAAAA,CACA,QAAA,CAAAG,CAAAA,CACA,GAAGP,CACL,CAAA,CAA4D,CAC1D,OACEC,cAAAA,CAAoBC,YAAA,CAAA,MAAA,CAAnB,CAA0B,SAAA,CAAU,MAAA,CACnC,QAAA,CAAAM,eAAAA,CAAoBN,YAAA,CAAA,OAAA,CAAnB,CACC,WAAA,CAAU,mBAAA,CACV,SAAA,CAAWG,mBAAAA,CACT,0RAAA,CACAD,CACF,CAAA,CACC,GAAGJ,CAAAA,CAEH,QAAA,CAAA,CAAAO,CAAAA,CACDN,cAAAA,CAACQ,gBAAAA,CAAA,CAAc,SAAA,CAAU,6GAAA,CAA8G,CAAA,CAAA,CACzI,CAAA,CACF,CAEJ,CAEA,SAASC,CAAAA,CAAiB,CACxB,SAAA,CAAAN,CAAAA,CACA,QAAA,CAAAG,CAAAA,CACA,GAAGP,CACL,CAAA,CAA4D,CAC1D,OACEC,cAAAA,CAAoBC,YAAA,CAAA,OAAA,CAAnB,CACC,WAAA,CAAU,mBAAA,CACV,SAAA,CAAU,2GAAA,CACT,GAAGF,CAAAA,CAEJ,QAAA,CAAAC,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWI,mBAAAA,CAAG,WAAA,CAAaD,CAAS,CAAA,CAAI,QAAA,CAAAG,CAAAA,CAAS,EACxD,CAEJ","file":"chunk-F26QEJL3.cjs","sourcesContent":["import * as React from 'react';\nimport * as AccordionPrimitive from 'radix-ui/accordion';\n\nimport { LuChevronDown } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\n\nfunction Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('border-b last:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-lg font-bold transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <LuChevronDown className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkO4VBODYC_cjs=require('./chunk-O4VBODYC.cjs'),chunkWTNXRFXW_cjs=require('./chunk-WTNXRFXW.cjs'),core=require('@dnd-kit/core'),sortable=require('@dnd-kit/sortable'),N=require('@emotion/styled'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var N__default=/*#__PURE__*/_interopDefault(N);var P=N__default.default.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
|
-
`;function k({id:c,onClickElement:i=()=>null,elements:t=[],onChange:E,onDragOver:p=()=>null,className:x="",disabled:h=false}){let{setNodeRef:u}=core.useDroppable({id:c}),v=({active:n,over:r,delta:o})=>{if(Math.abs(o.x)<1&&Math.abs(o.y)<1)return i(n.id);let d=t.findIndex(e=>e.id===n.id),a=t.findIndex(e=>e.id===r?.id),l=e=>sortable.arrayMove(e,d,a);return r?.id&&p(l(t)),false},S=({active:n,over:r,delta:o})=>{if(Math.abs(o.x)<1&&Math.abs(o.y)<1)return i(n.id);let d=t.findIndex(e=>e.id===n.id),a=t.findIndex(e=>e.id===r?.id),l=e=>sortable.arrayMove(e,d,a);return r?.id&&E(l(t)),null},y=core.useSensors(core.useSensor(chunkWTNXRFXW_cjs.a),core.useSensor(chunkWTNXRFXW_cjs.b));return jsxRuntime.jsx(core.DndContext,{collisionDetection:core.closestCorners,onDragOver:v,onDragEnd:S,sensors:y,children:jsxRuntime.jsx(sortable.SortableContext,{id:c,items:t,strategy:sortable.verticalListSortingStrategy,children:jsxRuntime.jsx(P,{ref:u,className:x,children:t.map(n=>jsxRuntime.jsx(chunkO4VBODYC_cjs.a,{onClickElement:i,id:n.id,disabled:h,children:n.children},n.id))})})})}exports.a=k;//# sourceMappingURL=chunk-
|
|
5
|
-
//# sourceMappingURL=chunk-
|
|
4
|
+
`;function k({id:c,onClickElement:i=()=>null,elements:t=[],onChange:E,onDragOver:p=()=>null,className:x="",disabled:h=false}){let{setNodeRef:u}=core.useDroppable({id:c}),v=({active:n,over:r,delta:o})=>{if(Math.abs(o.x)<1&&Math.abs(o.y)<1)return i(n.id);let d=t.findIndex(e=>e.id===n.id),a=t.findIndex(e=>e.id===r?.id),l=e=>sortable.arrayMove(e,d,a);return r?.id&&p(l(t)),false},S=({active:n,over:r,delta:o})=>{if(Math.abs(o.x)<1&&Math.abs(o.y)<1)return i(n.id);let d=t.findIndex(e=>e.id===n.id),a=t.findIndex(e=>e.id===r?.id),l=e=>sortable.arrayMove(e,d,a);return r?.id&&E(l(t)),null},y=core.useSensors(core.useSensor(chunkWTNXRFXW_cjs.a),core.useSensor(chunkWTNXRFXW_cjs.b));return jsxRuntime.jsx(core.DndContext,{collisionDetection:core.closestCorners,onDragOver:v,onDragEnd:S,sensors:y,children:jsxRuntime.jsx(sortable.SortableContext,{id:c,items:t,strategy:sortable.verticalListSortingStrategy,children:jsxRuntime.jsx(P,{ref:u,className:x,children:t.map(n=>jsxRuntime.jsx(chunkO4VBODYC_cjs.a,{onClickElement:i,id:n.id,disabled:h,children:n.children},n.id))})})})}exports.a=k;//# sourceMappingURL=chunk-HCMJMPCZ.cjs.map
|
|
5
|
+
//# sourceMappingURL=chunk-HCMJMPCZ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/SortableList/index.tsx"],"names":["ElementsContainer","styled","SortableList","id","onClickElement","elements","onChange","onDragOver","className","disabled","setNodeRef","useDroppable","handleDragOver","active","over","delta","activeIndex","element","overIndex","updatedItems","elementToUpdate","arrayMove","handleDragEnd","sensors","useSensors","useSensor","MouseSensor","KeyboardSensor","jsx","DndContext","closestCorners","SortableContext","verticalListSortingStrategy","SortableElement"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/SortableList/index.tsx"],"names":["ElementsContainer","styled","SortableList","id","onClickElement","elements","onChange","onDragOver","className","disabled","setNodeRef","useDroppable","handleDragOver","active","over","delta","activeIndex","element","overIndex","updatedItems","elementToUpdate","arrayMove","handleDragEnd","sensors","useSensors","useSensor","MouseSensor","KeyboardSensor","jsx","DndContext","closestCorners","SortableContext","verticalListSortingStrategy","SortableElement"],"mappings":"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","file":"chunk-HCMJMPCZ.cjs","sourcesContent":["import {\n useDroppable,\n DndContext,\n DragEndEvent,\n DragOverEvent,\n closestCorners,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { SortableContext, arrayMove, verticalListSortingStrategy } from '@dnd-kit/sortable';\n\nimport styled from '@emotion/styled';\nimport { KeyboardSensor, MouseSensor } from './sensors';\nimport SortableElement from './SortableElement';\n\nconst ElementsContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport type Element = {\n id: string;\n children: JSX.Element;\n};\n\nexport type SortableListProps = {\n id: string;\n elements: Element[];\n onChange: (elements: Element[]) => void;\n onDragOver?: (elements: Element[]) => void;\n onClickElement?: (elementId: string) => void;\n className: string;\n disabled?: boolean;\n};\n\nexport default function SortableList({\n id,\n onClickElement = () => null,\n elements = [],\n onChange,\n onDragOver = () => null,\n className = '',\n disabled = false,\n}: SortableListProps) {\n const { setNodeRef } = useDroppable({ id });\n\n const handleDragOver = ({ active, over, delta }: DragOverEvent) => {\n const belowDragDistanceThreshold = Math.abs(delta.x) < 1 && Math.abs(delta.y) < 1;\n if (belowDragDistanceThreshold) {\n return onClickElement(active.id as string);\n }\n\n const activeIndex = elements.findIndex((element) => element.id === active.id);\n const overIndex = elements.findIndex((element) => element.id === over?.id);\n\n const updatedItems = (elementToUpdate: any) =>\n arrayMove<Element>(elementToUpdate, activeIndex, overIndex);\n\n if (over?.id) {\n onDragOver(updatedItems(elements));\n }\n return false;\n };\n\n const handleDragEnd = ({ active, over, delta }: DragEndEvent) => {\n const belowDragDistanceThreshold = Math.abs(delta.x) < 1 && Math.abs(delta.y) < 1;\n if (belowDragDistanceThreshold) {\n return onClickElement(active.id as string);\n }\n\n const activeIndex = elements.findIndex((element) => element.id === active.id);\n const overIndex = elements.findIndex((element) => element.id === over?.id);\n\n const updatedItems = (elementToUpdate: any) =>\n arrayMove<Element>(elementToUpdate, activeIndex, overIndex);\n\n if (over?.id) {\n onChange(updatedItems(elements));\n }\n\n return null;\n };\n\n const sensors = useSensors(useSensor(MouseSensor), useSensor(KeyboardSensor));\n\n return (\n <DndContext\n collisionDetection={closestCorners}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n sensors={sensors}\n >\n <SortableContext id={id} items={elements} strategy={verticalListSortingStrategy}>\n <ElementsContainer ref={setNodeRef} className={className}>\n {elements.map((element) => (\n <SortableElement\n key={element.id}\n onClickElement={onClickElement}\n id={element.id}\n disabled={disabled}\n >\n {element.children}\n </SortableElement>\n ))}\n </ElementsContainer>\n </SortableContext>\n </DndContext>\n );\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-YTIIAU4W.js';import {useControllableState}from'radix-ui/internal';import {useMemo,useCallback}from'react';import {LuMinus,LuPlus,LuChevronRight}from'react-icons/lu';import {jsx}from'react/jsx-runtime';function E({className:e,...a$1}){return jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto rounded-t-md",children:jsx("table",{"data-slot":"table",className:a("w-full caption-bottom text-sm",e),...a$1})})}function R({className:e,...a$1}){return jsx("thead",{"data-slot":"table-header",className:a("bg-gray-100 [&_tr]:border-b-0",e),...a$1})}function k({...e}){return jsx("tbody",{"data-slot":"table-body",...e})}function z({className:e,...a$1}){return jsx("tfoot",{"data-slot":"table-footer",className:a("bg-muted/25 border-t font-medium [&>tr]:last:border-b-0",e),...a$1})}function L({className:e,depth:a$1=void 0,expandable:n=false,expanded:o=void 0,...s}){return jsx("tr",{"data-slot":"table-row","data-depth":a$1,"data-nested":a$1?true:void 0,"data-expandable":n?true:void 0,"data-expanded":o,"aria-level":a$1===void 0?void 0:a$1+1,"aria-expanded":n?o:void 0,className:a("[&:where(tbody_&)]:hover:bg-muted/25 data-[state=selected]:bg-muted border-b border-gray-200 transition-colors","data-[nested=true]:border-l-2 data-[nested=true]:border-l-green-800","data-[expanded=true]:not-data-nested:font-bold data-[expanded=true]:not-data-nested:text-green-800",e),...s})}function F({className:e,...a$1}){return jsx("th",{"data-slot":"table-head",className:a("h-12 px-4 py-3 text-left align-middle text-base font-bold whitespace-nowrap text-black [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...a$1})}function c({className:e,...a$1}){return jsx("td",{"data-slot":"table-cell",className:a("h-13 p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...a$1})}function O({className:e,...a$1}){return jsx("caption",{"data-slot":"table-caption",className:a("text-muted-foreground mt-4 text-sm",e),...a$1})}function S(e,a){let n=[],o=(s,p)=>{s.forEach(d=>{let b=Array.isArray(d.children),r=b&&a(d.id);n.push({row:d,depth:p,expandable:b,expanded:r}),r&&d.children?.length&&o(d.children,p+1);});};return o(e,0),n}function U({expanded:e,defaultExpanded:a,onExpandedChange:n}={}){let[o,s]=useControllableState({prop:e,defaultProp:a??[],onChange:n}),p=useMemo(()=>new Set(o),[o]),d=useCallback(r=>p.has(r),[p]),b=useCallback(r=>s((i=[])=>i.includes(r)?i.filter(T=>T!==r):[...i,r]),[s]);return {expanded:o??[],expandedIds:p,isExpanded:d,toggle:b}}function y({expanded:e,rowLabel:a$1="row",className:n,...o}){return jsx("button",{type:"button","data-slot":"table-expand-toggle","aria-expanded":e,"aria-label":`${e?"Collapse":"Expand"} ${a$1}`,className:a("flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-xs border border-gray-400 text-gray-700 transition-colors hover:border-gray-600 hover:text-black",n),...o,children:e?jsx(LuMinus,{size:12}):jsx(LuPlus,{size:12})})}function A({depth:e=0,expandable:a$1=false,expanded:n=false,onToggle:o=void 0,rowLabel:s=void 0,indentSize:p=16,className:d,children:b=void 0,...r}){return jsx(c,{className:a("w-12 pr-0",d),...r,children:jsx("div",{className:"flex items-center",style:{paddingLeft:e*p},children:a$1?jsx(y,{expanded:n,rowLabel:s,onClick:o}):b??jsx("span",{className:"size-4 shrink-0","aria-hidden":true})})})}function H({navigable:e=true,className:a$1,...n}){return jsx(c,{"data-slot":"table-nav-cell",className:a("w-16 text-right",a$1),...n,children:e?jsx(LuChevronRight,{className:"inline text-gray-700",size:16,"aria-hidden":true}):jsx("span",{className:"inline-block size-4","aria-hidden":true})})}export{E as a,R as b,k as c,z as d,L as e,F as f,c as g,O as h,S as i,U as j,y as k,A as l,H as m};//# sourceMappingURL=chunk-I24BEPSW.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-I24BEPSW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/table/table.tsx"],"names":["Table","className","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","depth","expandable","expanded","TableHead","TableCell","TableCaption","flattenTableRows","rows","isExpanded","flattened","visit","nodes","row","useTableExpansion","expandedProp","defaultExpanded","onExpandedChange","setExpanded","useControllableState","expandedIds","useMemo","useCallback","id","toggle","current","expandedId","TableExpandToggle","rowLabel","LuMinus","LuPlus","TableExpandCell","onToggle","indentSize","children","TableNavCell","navigable","LuChevronRight"],"mappings":"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","file":"chunk-I24BEPSW.js","sourcesContent":["import { useControllableState } from 'radix-ui/internal';\nimport { ComponentProps, useCallback, useMemo } from 'react';\nimport { LuChevronRight, LuMinus, LuPlus } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\n\nfunction Table({ className, ...props }: ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto rounded-t-md\">\n <table\n data-slot=\"table\"\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('bg-gray-100 [&_tr]:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ ...props }: ComponentProps<'tbody'>) {\n return <tbody data-slot=\"table-body\" {...props} />;\n}\n\nfunction TableFooter({ className, ...props }: ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('bg-muted/25 border-t font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n );\n}\n\ntype TableRowProps = ComponentProps<'tr'> & {\n /** Nesting level of the row. Exposed as `data-depth` for styling and `aria-level` for assistive tech. */\n depth?: number;\n /** Whether the row can expand. Gates `aria-expanded` so leaf rows don't announce a collapsed state. */\n expandable?: boolean;\n /** Whether this row's nested rows are showing. */\n expanded?: boolean;\n};\n\nfunction TableRow({\n className,\n depth = undefined,\n expandable = false,\n expanded = undefined,\n ...props\n}: TableRowProps) {\n return (\n <tr\n data-slot=\"table-row\"\n data-depth={depth}\n data-nested={depth ? true : undefined}\n data-expandable={expandable ? true : undefined}\n data-expanded={expanded}\n aria-level={depth === undefined ? undefined : depth + 1}\n aria-expanded={expandable ? expanded : undefined}\n className={cn(\n '[&:where(tbody_&)]:hover:bg-muted/25 data-[state=selected]:bg-muted border-b border-gray-200 transition-colors',\n // Green + bold mark the open top-level row only; bolding an expandable\n // row's label is the consumer's cell, since the row doesn't know which cell that is.\n 'data-[nested=true]:border-l-2 data-[nested=true]:border-l-green-800',\n 'data-[expanded=true]:not-data-nested:font-bold data-[expanded=true]:not-data-nested:text-green-800',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'h-12 px-4 py-3 text-left align-middle text-base font-bold whitespace-nowrap text-black [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'h-13 p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('text-muted-foreground mt-4 text-sm', className)}\n {...props}\n />\n );\n}\n\n/**\n * A row that may own nested rows. `children` is what makes a row expandable — an\n * empty array still counts, so rows whose descendants load on demand can be\n * expanded before their data has arrived.\n */\ntype TableTreeRow<T> = T & {\n id: string;\n children?: TableTreeRow<T>[];\n};\n\ntype FlatTableRow<T> = {\n row: TableTreeRow<T>;\n depth: number;\n expandable: boolean;\n expanded: boolean;\n};\n\n/**\n * Walks a row tree and returns the rows that are currently visible, depth-first.\n * HTML tables can't nest `<tr>`, so nesting is expressed as a flat list plus a\n * depth per row.\n */\nfunction flattenTableRows<T>(\n rows: TableTreeRow<T>[],\n isExpanded: (id: string) => boolean,\n): FlatTableRow<T>[] {\n const flattened: FlatTableRow<T>[] = [];\n\n const visit = (nodes: TableTreeRow<T>[], depth: number) => {\n nodes.forEach((row) => {\n const expandable = Array.isArray(row.children);\n const expanded = expandable && isExpanded(row.id);\n\n flattened.push({ row, depth, expandable, expanded });\n\n if (expanded && row.children?.length) visit(row.children, depth + 1);\n });\n };\n\n visit(rows, 0);\n\n return flattened;\n}\n\ntype UseTableExpansionOptions = {\n expanded?: string[];\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n};\n\n/**\n * Tracks which rows are expanded, controlled or uncontrolled. Pair with\n * `flattenTableRows`. Consumers loading children on demand should fetch from\n * the opened row's toggle handler — `onExpandedChange` reports the whole list,\n * not which row changed.\n */\nfunction useTableExpansion({\n expanded: expandedProp,\n defaultExpanded,\n onExpandedChange,\n}: UseTableExpansionOptions = {}) {\n const [expanded, setExpanded] = useControllableState<string[]>({\n prop: expandedProp,\n defaultProp: defaultExpanded ?? [],\n onChange: onExpandedChange,\n });\n\n const expandedIds = useMemo(() => new Set(expanded), [expanded]);\n\n const isExpanded = useCallback((id: string) => expandedIds.has(id), [expandedIds]);\n\n const toggle = useCallback(\n (id: string) =>\n setExpanded((current = []) =>\n current.includes(id) ? current.filter((expandedId) => expandedId !== id) : [...current, id],\n ),\n [setExpanded],\n );\n\n return { expanded: expanded ?? [], expandedIds, isExpanded, toggle };\n}\n\ntype TableExpandToggleProps = ComponentProps<'button'> & {\n expanded: boolean;\n /** What the toggle opens, e.g. \"February\" — announced as \"Expand February\". */\n rowLabel?: string;\n};\n\nfunction TableExpandToggle({\n expanded,\n rowLabel = 'row',\n className,\n ...props\n}: TableExpandToggleProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"table-expand-toggle\"\n aria-expanded={expanded}\n aria-label={`${expanded ? 'Collapse' : 'Expand'} ${rowLabel}`}\n className={cn(\n 'flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-xs border border-gray-400 text-gray-700 transition-colors hover:border-gray-600 hover:text-black',\n className,\n )}\n {...props}\n >\n {expanded ? <LuMinus size={12} /> : <LuPlus size={12} />}\n </button>\n );\n}\n\ntype TableExpandCellProps = ComponentProps<'td'> & {\n depth?: number;\n expandable?: boolean;\n expanded?: boolean;\n onToggle?: () => void;\n /** Accessible name for the toggle's row, e.g. \"February\". */\n rowLabel?: string;\n /** Pixels of indent applied per depth level. */\n indentSize?: number;\n};\n\n/**\n * Leading cell holding a row's indent and, when the row has nested rows, its\n * expand toggle. Rows without children render a spacer so cells stay aligned.\n */\nfunction TableExpandCell({\n depth = 0,\n expandable = false,\n expanded = false,\n onToggle = undefined,\n rowLabel = undefined,\n indentSize = 16,\n className,\n children = undefined,\n ...props\n}: TableExpandCellProps) {\n return (\n <TableCell className={cn('w-12 pr-0', className)} {...props}>\n <div className=\"flex items-center\" style={{ paddingLeft: depth * indentSize }}>\n {expandable ? (\n <TableExpandToggle expanded={expanded} rowLabel={rowLabel} onClick={onToggle} />\n ) : (\n (children ?? <span className=\"size-4 shrink-0\" aria-hidden />)\n )}\n </div>\n </TableCell>\n );\n}\n\ntype TableNavCellProps = ComponentProps<'td'> & {\n /**\n * Whether this row opens something. Rows that don't — grouping rows, for\n * instance — render a spacer so the column stays aligned.\n */\n navigable?: boolean;\n};\n\n/**\n * Trailing cell carrying the chevron that marks a row as opening something. The\n * row itself is the click target, so this is presentational rather than a button.\n */\nfunction TableNavCell({ navigable = true, className, ...props }: TableNavCellProps) {\n return (\n <TableCell data-slot=\"table-nav-cell\" className={cn('w-16 text-right', className)} {...props}>\n {navigable ? (\n <LuChevronRight className=\"inline text-gray-700\" size={16} aria-hidden />\n ) : (\n <span className=\"inline-block size-4\" aria-hidden />\n )}\n </TableCell>\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n TableExpandCell,\n TableExpandToggle,\n TableNavCell,\n flattenTableRows,\n useTableExpansion,\n type FlatTableRow,\n type TableExpandCellProps,\n type TableExpandToggleProps,\n type TableNavCellProps,\n type TableRowProps,\n type TableTreeRow,\n type UseTableExpansionOptions,\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkCESFBVDC_cjs=require('./chunk-CESFBVDC.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),jsxRuntime=require('react/jsx-runtime');var m=({id:h,children:i=null,className:b,classNames:r={},columns:o=2,value:t,onValueChange:C,items:l=[],...n})=>{let u=(e,s)=>{let g=s?[...t,e]:t.filter(d=>d!==e);C(g);};return jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("grid gap-2",o===1&&"grid-cols-1",o===2&&"grid-cols-2",o===3&&"grid-cols-3",o===4&&"grid-cols-4",b,r?.base),id:h,children:l?.length?l.map(e=>jsxRuntime.jsx(chunkCESFBVDC_cjs.a,{classNames:r?.buttonCheckbox,checked:t.includes(e.value),onCheckedChange:s=>u(e.value,s),size:n.size,...n,children:e.label},e.value)):i})};exports.a=m;//# sourceMappingURL=chunk-Q7XLZDG6.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-Q7XLZDG6.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/checkbox-group/checkbox-group.tsx"],"names":["CheckboxGroup","id","children","className","classNames","columns","value","onValueChange","items","props","handleToggle","optionValue","checked","newValues","v","jsx","cn","option","ButtonCheckbox"],"mappings":"6JAsBO,IAAMA,CAAAA,CAAgB,CAAC,CAC5B,EAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CAAW,IAAA,CACX,SAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CAAa,EAAC,CACd,OAAA,CAAAC,CAAAA,CAAU,CAAA,CACV,KAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,EAAC,CACT,GAAGC,CACL,CAAA,GAA0B,CACxB,IAAMC,CAAAA,CAAe,CAACC,CAAAA,CAAqBC,CAAAA,GAAqB,CAC9D,IAAMC,CAAAA,CAAYD,CAAAA,CAAU,CAAC,GAAGN,CAAAA,CAAOK,CAAW,CAAA,CAAIL,CAAAA,CAAM,MAAA,CAAQQ,CAAAA,EAAMA,CAAAA,GAAMH,CAAW,CAAA,CAC3FJ,CAAAA,CAAcM,CAAS,EACzB,CAAA,CAEA,OACEE,cAAAA,CAAC,KAAA,CAAA,CACC,UAAWC,mBAAAA,CACT,YAAA,CACAX,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBA,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBA,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBA,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBF,EACAC,CAAAA,EAAY,IACd,CAAA,CACA,EAAA,CAAIH,CAAAA,CAEH,QAAA,CAAAO,CAAAA,EAAO,MAAA,CACJA,CAAAA,CAAM,GAAA,CAAKS,CAAAA,EACTF,cAAAA,CAACG,mBAAAA,CAAA,CACC,WAAYd,CAAAA,EAAY,cAAA,CAExB,OAAA,CAASE,CAAAA,CAAM,QAAA,CAASW,CAAAA,CAAO,KAAK,CAAA,CACpC,eAAA,CAAkBL,CAAAA,EAAqBF,CAAAA,CAAaO,CAAAA,CAAO,KAAA,CAAOL,CAAO,CAAA,CACzE,IAAA,CAAMH,CAAAA,CAAM,IAAA,CACX,GAAGA,CAAAA,CAEH,QAAA,CAAAQ,CAAAA,CAAO,KAAA,CAAA,CANHA,CAAAA,CAAO,KAOd,CACD,CAAA,CACDf,CAAAA,CACN,CAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/checkbox-group/checkbox-group.tsx"],"names":["CheckboxGroup","id","children","className","classNames","columns","value","onValueChange","items","props","handleToggle","optionValue","checked","newValues","v","jsx","cn","option","ButtonCheckbox"],"mappings":"6JAsBO,IAAMA,CAAAA,CAAgB,CAAC,CAC5B,EAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CAAW,IAAA,CACX,SAAA,CAAAC,CAAAA,CACA,WAAAC,CAAAA,CAAa,EAAC,CACd,OAAA,CAAAC,CAAAA,CAAU,CAAA,CACV,KAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,EAAC,CACT,GAAGC,CACL,CAAA,GAA0B,CACxB,IAAMC,CAAAA,CAAe,CAACC,CAAAA,CAAqBC,CAAAA,GAAqB,CAC9D,IAAMC,CAAAA,CAAYD,CAAAA,CAAU,CAAC,GAAGN,CAAAA,CAAOK,CAAW,CAAA,CAAIL,CAAAA,CAAM,MAAA,CAAQQ,CAAAA,EAAMA,CAAAA,GAAMH,CAAW,CAAA,CAC3FJ,CAAAA,CAAcM,CAAS,EACzB,CAAA,CAEA,OACEE,cAAAA,CAAC,KAAA,CAAA,CACC,UAAWC,mBAAAA,CACT,YAAA,CACAX,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBA,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBA,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBA,CAAAA,GAAY,CAAA,EAAK,aAAA,CACjBF,EACAC,CAAAA,EAAY,IACd,CAAA,CACA,EAAA,CAAIH,CAAAA,CAEH,QAAA,CAAAO,CAAAA,EAAO,MAAA,CACJA,CAAAA,CAAM,GAAA,CAAKS,CAAAA,EACTF,cAAAA,CAACG,mBAAAA,CAAA,CACC,WAAYd,CAAAA,EAAY,cAAA,CAExB,OAAA,CAASE,CAAAA,CAAM,QAAA,CAASW,CAAAA,CAAO,KAAK,CAAA,CACpC,eAAA,CAAkBL,CAAAA,EAAqBF,CAAAA,CAAaO,CAAAA,CAAO,KAAA,CAAOL,CAAO,CAAA,CACzE,IAAA,CAAMH,CAAAA,CAAM,IAAA,CACX,GAAGA,CAAAA,CAEH,QAAA,CAAAQ,CAAAA,CAAO,KAAA,CAAA,CANHA,CAAAA,CAAO,KAOd,CACD,CAAA,CACDf,CAAAA,CACN,CAEJ","file":"chunk-Q7XLZDG6.cjs","sourcesContent":["import type { ComponentProps, PropsWithChildren } from 'react';\nimport { cn } from '@/lib/utils';\nimport { ButtonCheckbox, type ButtonCheckboxSlots } from '../checkbox/button-checkbox';\nimport type { Slots } from '../types';\n\nexport type CheckboxGroupSlots = Slots & {\n classNames?: {\n buttonCheckbox?: ButtonCheckboxSlots['classNames'];\n };\n};\n\nexport type CheckboxGroupProps = Omit<\n ComponentProps<typeof ButtonCheckbox>,\n 'classNames' | 'value'\n> & {\n columns?: 1 | 2 | 3 | 4;\n onValueChange: (value: string[]) => void;\n items?: { label: string; value: string }[];\n value: string[];\n} & CheckboxGroupSlots &\n PropsWithChildren;\n\nexport const CheckboxGroup = ({\n id,\n children = null,\n className,\n classNames = {},\n columns = 2,\n value,\n onValueChange,\n items = [],\n ...props\n}: CheckboxGroupProps) => {\n const handleToggle = (optionValue: string, checked: boolean) => {\n const newValues = checked ? [...value, optionValue] : value.filter((v) => v !== optionValue);\n onValueChange(newValues);\n };\n\n return (\n <div\n className={cn(\n 'grid gap-2',\n columns === 1 && 'grid-cols-1',\n columns === 2 && 'grid-cols-2',\n columns === 3 && 'grid-cols-3',\n columns === 4 && 'grid-cols-4',\n className,\n classNames?.base,\n )}\n id={id}\n >\n {items?.length\n ? items.map((option) => (\n <ButtonCheckbox\n classNames={classNames?.buttonCheckbox}\n key={option.value}\n checked={value.includes(option.value)}\n onCheckedChange={(checked: boolean) => handleToggle(option.value, checked)}\n size={props.size}\n {...props}\n >\n {option.label}\n </ButtonCheckbox>\n ))\n : children}\n </div>\n );\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkVJHFFAS4_cjs=require('./chunk-VJHFFAS4.cjs'),chunk777NH37Z_cjs=require('./chunk-777NH37Z.cjs'),chunk2DLCWPKO_cjs=require('./chunk-2DLCWPKO.cjs'),chunkODAOIGPB_cjs=require('./chunk-ODAOIGPB.cjs'),chunkRTFBAC56_cjs=require('./chunk-RTFBAC56.cjs'),chunkIINNHABI_cjs=require('./chunk-IINNHABI.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),He=require('use-places-autocomplete'),react=require('react'),api=require('@react-google-maps/api'),lu=require('react-icons/lu'),M=require('dayjs'),De=require('dayjs/plugin/customParseFormat.js'),reactImask=require('react-imask'),reactDayPicker=require('react-day-picker'),jsxRuntime=require('react/jsx-runtime'),Ae=require('react-easy-crop'),luxon=require('luxon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var He__default=/*#__PURE__*/_interopDefault(He);var M__default=/*#__PURE__*/_interopDefault(M);var De__default=/*#__PURE__*/_interopDefault(De);var Ae__default=/*#__PURE__*/_interopDefault(Ae);M__default.default.extend(De__default.default);var te="MM/DD/YYYY",Ce="00/00/0000",q=["MM/DD/YYYY","MM/D/YYYY","M/DD/YYYY","M/D/YYYY","YYYY-MM-DD"];function w(i){return i?M__default.default(i).format(te):""}function be({className:i="",wrapperClassName:r="",value:t=void 0,onChange:a=void 0,disabled:o=false,calendarProps:l=void 0,placeholder:p,inputProps:g=void 0,showCalendarIcon:D=true,editable:m=false}){let[d,h]=react.useState(false),v=p??(m?te:"Pick a date"),[e,n]=react.useState(void 0),u=react.useRef(t);t!==u.current&&(u.current=t,e!==void 0&&n(void 0));let c=e??t,s=f=>l?.disabled?!reactDayPicker.isMatch(f,l.disabled):true,C=react.useRef(a);C.current=a;let N=react.useRef(s);N.current=s;let{ref:J,setValue:H}=reactImask.useIMask({mask:Ce,lazy:true,overwrite:false},{onComplete:f=>{let b=M__default.default(f,q,true);b.isValid()&&N.current(b.toDate())&&C.current?.(b.toDate());}}),de=f=>{a?.(f),H(w(f)),h(false);},me=f=>{let b=f.clipboardData.getData("text").trim(),V=M__default.default(b,q,true);if(V.isValid()&&s(V.toDate())){f.preventDefault();let Q=V.toDate();a?.(Q),H(w(Q));}},ue=()=>{H(w(t));},ce=()=>{let f=J.current?.value??"";if(f===""){t!==void 0&&a?.(void 0);return}let b=M__default.default(f,q,true);b.isValid()&&s(b.toDate())&&a?.(b.toDate()),H(w(t));},fe=chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a(),D&&"pl-10",d?"border-dark-green":"",i);return jsxRuntime.jsxs(chunkODAOIGPB_cjs.a,{open:!o&&d,onOpenChange:h,children:[jsxRuntime.jsx(chunkODAOIGPB_cjs.b,{asChild:true,children:jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative flex w-full items-center rounded-md",r),children:[m?jsxRuntime.jsx("input",{ref:J,defaultValue:w(t),className:fe,placeholder:v,disabled:o,onFocus:ue,onPaste:me,onBlur:f=>{ce(),g?.onBlur?.(f);}}):jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{className:chunkQRO22BPZ_cjs.a(D&&"pl-10",d?"border-dark-green":"",i),...g,value:w(t),placeholder:v,readOnly:true,disabled:o}),D&&jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",o?"text-gray-400":"cursor-pointer text-black"),children:jsxRuntime.jsx(lu.LuCalendar,{size:16})})]})}),jsxRuntime.jsx(chunkODAOIGPB_cjs.c,{className:"w-auto overflow-hidden p-0",align:"start",onOpenAutoFocus:m?f=>f.preventDefault():void 0,children:jsxRuntime.jsx(chunkRTFBAC56_cjs.b,{mode:"single",selected:t?M__default.default(t).toDate():void 0,onSelect:de,...m?{month:c,onMonthChange:n}:{},...l})})]})}function Ie(i){let r=i.replace(/\D/g,"").slice(0,8);return r.length<=2?r:r.length<=4?`${r.slice(0,2)}/${r.slice(2)}`:`${r.slice(0,2)}/${r.slice(2,4)}/${r.slice(4)}`}function Pe(i){if(i.length!==10)return;let r=i.split("/");if(r.length!==3||r[2].length!==4)return;let t=parseInt(r[0],10),a=parseInt(r[1],10),o=parseInt(r[2],10);if(Number.isNaN(t)||Number.isNaN(a)||Number.isNaN(o))return;let l=new Date(o,t-1,a);if(!(l.getFullYear()!==o||l.getMonth()!==t-1||l.getDate()!==a))return l}function we({className:i,wrapperClassName:r,value:t,onChange:a,disabled:o=false,calendarProps:l,placeholder:p="MM/DD/YYYY",variant:g}){let[D,m]=react.useState(false),[d,h]=react.useState(t),[v,e]=react.useState(t?M__default.default(t).format("MM/DD/YYYY"):""),n=react.useRef(t?M__default.default(t).format("MM/DD/YYYY"):"");react.useEffect(()=>{let s=t?M__default.default(t).format("MM/DD/YYYY"):"";s!==n.current&&(n.current=s,e(s),t&&h(t));},[t]);let u=s=>{let C=Ie(s.target.value);e(C);let N=Pe(C);N?(n.current=C,a?.(N)):C===""&&(n.current="",a?.(void 0));},c=s=>{s.key==="ArrowDown"&&(s.preventDefault(),m(true)),!/[0-9/]/.test(s.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(s.key)&&!s.metaKey&&!s.ctrlKey&&s.preventDefault();};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",r),children:[jsxRuntime.jsx("input",{type:"text","data-slot":"input",className:chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a({variant:g}),"pr-10",i),value:v,placeholder:p,onChange:u,onKeyDown:c,disabled:o}),jsxRuntime.jsxs(chunkODAOIGPB_cjs.a,{open:!o&&D,onOpenChange:m,children:[jsxRuntime.jsx(chunkODAOIGPB_cjs.b,{asChild:true,children:jsxRuntime.jsx(chunkIINNHABI_cjs.b,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:o,"aria-label":"Select date",type:"button",children:jsxRuntime.jsx(lu.LuCalendar,{})})}),jsxRuntime.jsx(chunkODAOIGPB_cjs.c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsxRuntime.jsx(chunkRTFBAC56_cjs.b,{mode:"single",selected:t,month:d,onMonthChange:h,onSelect:s=>{let C=s?M__default.default(s).format("MM/DD/YYYY"):"";n.current=C,e(C),a?.(s),m(false);},...l})})]})]})}var Re=({alt:i,className:r="",containerClassName:t="",imagePreview:a=void 0,cropper:o=void 0})=>{let[l,p]=react.useState(false),g=!a||!l,D=!!o;return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex max-w-[386px] flex-col",r),children:[jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative h-60 rounded-md border",t),children:[a&&D?jsxRuntime.jsx(Ae__default.default,{image:a,crop:o.crop,zoom:o.zoom,aspect:o.aspect,objectFit:"contain",onCropChange:o.setCrop,onZoomChange:o.setZoom,onCropComplete:o.onCropComplete,onMediaLoaded:()=>p(true),showGrid:false}):a&&jsxRuntime.jsx("img",{alt:i,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${l?"opacity-100":"opacity-0"}`,src:a,onLoad:()=>p(true),draggable:false}),g&&jsxRuntime.jsx("div",{"aria-label":a?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&D&&jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center gap-3",children:[jsxRuntime.jsx(chunkIINNHABI_cjs.b,{"aria-label":"zoom out",onClick:()=>o.setZoom(Math.max(o.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsxRuntime.jsx(lu.LuZoomOut,{})}),jsxRuntime.jsx(chunk777NH37Z_cjs.a,{value:[o.zoom],min:1,max:3,step:.01,onValueChange:m=>o.setZoom(m[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsxRuntime.jsx(chunkIINNHABI_cjs.b,{"aria-label":"zoom in",onClick:()=>o.setZoom(Math.min(o.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsxRuntime.jsx(lu.LuZoomIn,{})})]}),jsxRuntime.jsxs(chunkIINNHABI_cjs.b,{onClick:o.reset,variant:"ghost",className:"h-8 p-2",children:[jsxRuntime.jsx(lu.LuRefreshCcw,{}),"Reset"]})]})]})};var re="00:00",ne="24:00",ae=i=>luxon.DateTime.fromFormat(i,"HH:mm").isValid,se=({startTime:i=re,endTime:r=ne,interval:t=30,onChange:a=void 0,className:o="",placeholder:l="Select one",size:p="default",portal:g=true,triggerIcon:D,getSublabel:m,...d})=>{ae(i)||(console.error(`Invalid startTime: ${i}`),i=re),ae(r)||(console.error(`Invalid endTime: ${r}`),r=ne);let h=react.useMemo(()=>{let e=luxon.DateTime.fromFormat(r,"HH:mm"),n=luxon.Duration.fromObject({minutes:t}),u=[],c=luxon.DateTime.fromFormat(i,"HH:mm");for(;c<=e;){let s=c.toFormat("HH:mm");s==="00:00"&&c.equals(e)&&(s="24:00"),u.push({label:c.toFormat("h:mm a"),value:{hour:c.toFormat("HH"),min:c.toFormat("mm"),raw:s,formatted:c.toFormat("h:mm a")}}),c=c.plus(n);}return u},[i,r,t]);return jsxRuntime.jsxs(chunkVJHFFAS4_cjs.a,{onValueChange:e=>{let n=h.find(u=>u.value.raw===e);n&&a?.(n);},...d,children:[jsxRuntime.jsx(chunkVJHFFAS4_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",o),size:p,triggerIcon:D,children:jsxRuntime.jsx(chunkVJHFFAS4_cjs.c,{placeholder:l})}),jsxRuntime.jsx(chunkVJHFFAS4_cjs.g,{position:"popper",className:"max-h-90",portal:g,children:h.map(e=>{let n=m?.(e);return jsxRuntime.jsx(chunkVJHFFAS4_cjs.i,{className:chunkQRO22BPZ_cjs.a(n?"h-auto py-2":"h-10"),value:e.value.raw,sublabel:n,children:e.label},e.value.raw)})})]})},It=se;var _e=i=>{let r="",t="",a="",o="",l="",p="";if(i.address_components.forEach(d=>{d.types.some(h=>{switch(h){case "locality":return r=d.long_name,true;case "sublocality":case "administrative_area_level_3":case "neighborhood":return r=r||d.long_name,true;case "administrative_area_level_1":return t=d.short_name,true;case "street_number":return a=d.short_name,true;case "route":return o=d.short_name,true;case "subpremise":return l=d.long_name,true;case "postal_code":return p=d.short_name,true;default:return false}});}),l){let d=l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),h=i.formatted_address?.match(new RegExp(`(?<![A-Za-z])(?:Apt|Apartment|Suite|Ste|Unit|Bldg|Building|Fl|Floor|Rm|Room|Lot|Space|Spc|Trlr|Trailer|#)\\.?\\s*#?\\s*${d}\\b`,"i"));h&&(l=h[0].trim());}let g=i.geometry.location.lat(),D=i.geometry.location.lng(),m=`${a} ${o}`.trim();return {city:r,state:t,street:m,unit:l,zip:p,lat:g,long:D}},Oe=2,ze=({onSelectAddress:i=void 0,...r})=>{let t=react.useRef(null),a=react.useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`),[o,l]=react.useState(-1),{suggestions:{data:p=[]},setValue:g,clearSuggestions:D}=He__default.default({requestOptions:{componentRestrictions:{country:"us"}}}),m=react.useCallback(()=>{D(),l(-1);},[D]);react.useEffect(()=>{let e=u=>{t.current&&!t.current.contains(u.target)&&m();},n=u=>{u.key==="Escape"&&m();};return p.length>0&&(document.addEventListener("mousedown",e),document.addEventListener("keydown",n)),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",n);}},[p.length,m]),react.useEffect(()=>{p.length===0?l(-1):l(e=>e<0?e:Math.min(e,p.length-1));},[p.length]);let d=e=>{g(e,false),m(),!(e.length<=Oe)&&He.getGeocode({address:e}).then(n=>{if(!n||n.length===0)return;let u=_e(n[0]);i?.(u);});},h=react.useCallback(e=>{g(e),l(-1);},[g]),v=o>=0?`${a.current}-option-${o}`:void 0;return jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{...r,onChange:e=>{r.onChange?.(e),h(e.target.value);},onKeyDown:e=>{if(r.onKeyDown?.(e),!e.defaultPrevented){if(!p.length){e.key==="Escape"&&m();return}if(e.key==="ArrowDown"){e.preventDefault(),l(n=>{let u=n+1;return u>=p.length||u<0?0:u});return}if(e.key==="ArrowUp"){e.preventDefault(),l(n=>n<=0?p.length-1:n-1);return}if(e.key==="Enter"&&o>=0){e.preventDefault();let n=p[o];n&&d(n.description);return}e.key==="Escape"&&(e.preventDefault(),m());}},role:"combobox","aria-expanded":p.length>0,"aria-controls":p.length>0?a.current:void 0,"aria-activedescendant":v,"aria-autocomplete":"list"}),p.length>0&&jsxRuntime.jsx("div",{ref:t,id:a.current,role:"listbox",className:"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg",children:p.map((e,n)=>{let u=`${a.current}-option-${n}`,c=n===o;return jsxRuntime.jsx("div",{id:u,role:"option","aria-selected":c,tabIndex:-1,className:`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${c?"bg-green-100":""}`,onMouseEnter:()=>l(n),onMouseDown:s=>s.preventDefault(),onClick:()=>d(e.description),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),d(e.description));},children:e.description},e.place_id)})})]})},$e=["places"],Le=({googleMapsApiKey:i,onSelectAddress:r=void 0,...t})=>{let{isLoaded:a,loadError:o}=api.useLoadScript({googleMapsApiKey:i,libraries:$e});return !a||o?jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{...t}):jsxRuntime.jsx(ze,{onSelectAddress:r,...t})};exports.a=_e;exports.b=ze;exports.c=Le;exports.d=be;exports.e=we;exports.f=Re;exports.g=se;exports.h=It;//# sourceMappingURL=chunk-P7GTZPIS.cjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunk777NH37Z_cjs=require('./chunk-777NH37Z.cjs'),chunkVJHFFAS4_cjs=require('./chunk-VJHFFAS4.cjs'),chunk2DLCWPKO_cjs=require('./chunk-2DLCWPKO.cjs'),chunkODAOIGPB_cjs=require('./chunk-ODAOIGPB.cjs'),chunkRTFBAC56_cjs=require('./chunk-RTFBAC56.cjs'),chunkIINNHABI_cjs=require('./chunk-IINNHABI.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),He=require('use-places-autocomplete'),react=require('react'),api=require('@react-google-maps/api'),lu=require('react-icons/lu'),T=require('dayjs'),xe=require('dayjs/plugin/customParseFormat.js'),reactImask=require('react-imask'),reactDayPicker=require('react-day-picker'),jsxRuntime=require('react/jsx-runtime'),Ee=require('react-easy-crop'),luxon=require('luxon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var He__default=/*#__PURE__*/_interopDefault(He);var T__default=/*#__PURE__*/_interopDefault(T);var xe__default=/*#__PURE__*/_interopDefault(xe);var Ee__default=/*#__PURE__*/_interopDefault(Ee);T__default.default.extend(xe__default.default);var te="MM/DD/YYYY",Ce="00/00/0000",q=["MM/DD/YYYY","MM/D/YYYY","M/DD/YYYY","M/D/YYYY","YYYY-MM-DD"];function I(i){return i?T__default.default(i).format(te):""}function be({className:i="",wrapperClassName:r="",value:t=void 0,onChange:a=void 0,disabled:o=false,calendarProps:l=void 0,placeholder:p,inputProps:g=void 0,showCalendarIcon:x=true,editable:m=false}){let[d,D]=react.useState(false),v=p??(m?te:"Pick a date"),[e,n]=react.useState(void 0),u=react.useRef(t);t!==u.current&&(u.current=t,e!==void 0&&n(void 0));let c=e??t,s=f=>l?.disabled?!reactDayPicker.isMatch(f,l.disabled):true,C=react.useRef(a);C.current=a;let N=react.useRef(s);N.current=s;let{ref:J,setValue:H}=reactImask.useIMask({mask:Ce,lazy:true,overwrite:false},{onComplete:f=>{let b=T__default.default(f,q,true);b.isValid()&&N.current(b.toDate())&&C.current?.(b.toDate());}}),de=f=>{a?.(f),H(I(f)),D(false);},me=f=>{let b=f.clipboardData.getData("text").trim(),V=T__default.default(b,q,true);if(V.isValid()&&s(V.toDate())){f.preventDefault();let Q=V.toDate();a?.(Q),H(I(Q));}},ue=()=>{H(I(t));},ce=()=>{let f=J.current?.value??"";if(f===""){t!==void 0&&a?.(void 0);return}let b=T__default.default(f,q,true);b.isValid()&&s(b.toDate())&&a?.(b.toDate()),H(I(t));},fe=chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a(),x&&"pl-10",d?"border-dark-green":"",i);return jsxRuntime.jsxs(chunkODAOIGPB_cjs.a,{open:!o&&d,onOpenChange:D,children:[jsxRuntime.jsx(chunkODAOIGPB_cjs.b,{asChild:true,children:jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative flex w-full items-center rounded-md",r),children:[m?jsxRuntime.jsx("input",{ref:J,defaultValue:I(t),className:fe,placeholder:v,disabled:o,onFocus:ue,onPaste:me,onBlur:f=>{ce(),g?.onBlur?.(f);}}):jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{className:chunkQRO22BPZ_cjs.a(x&&"pl-10",d?"border-dark-green":"",i),...g,value:I(t),placeholder:v,readOnly:true,disabled:o}),x&&jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",o?"text-gray-400":"cursor-pointer text-black"),children:jsxRuntime.jsx(lu.LuCalendar,{size:16})})]})}),jsxRuntime.jsx(chunkODAOIGPB_cjs.c,{className:"w-auto overflow-hidden p-0",align:"start",onOpenAutoFocus:m?f=>f.preventDefault():void 0,children:jsxRuntime.jsx(chunkRTFBAC56_cjs.b,{mode:"single",selected:t?T__default.default(t).toDate():void 0,onSelect:de,...m?{month:c,onMonthChange:n}:{},...l})})]})}function Pe(i){let r=i.replace(/\D/g,"").slice(0,8);return r.length<=2?r:r.length<=4?`${r.slice(0,2)}/${r.slice(2)}`:`${r.slice(0,2)}/${r.slice(2,4)}/${r.slice(4)}`}function we(i){if(i.length!==10)return;let r=i.split("/");if(r.length!==3||r[2].length!==4)return;let t=parseInt(r[0],10),a=parseInt(r[1],10),o=parseInt(r[2],10);if(Number.isNaN(t)||Number.isNaN(a)||Number.isNaN(o))return;let l=new Date(o,t-1,a);if(!(l.getFullYear()!==o||l.getMonth()!==t-1||l.getDate()!==a))return l}function Ie({className:i,wrapperClassName:r,value:t,onChange:a,disabled:o=false,calendarProps:l,placeholder:p="MM/DD/YYYY",variant:g}){let[x,m]=react.useState(false),[d,D]=react.useState(t),[v,e]=react.useState(t?T__default.default(t).format("MM/DD/YYYY"):""),n=react.useRef(t?T__default.default(t).format("MM/DD/YYYY"):"");react.useEffect(()=>{let s=t?T__default.default(t).format("MM/DD/YYYY"):"";s!==n.current&&(n.current=s,e(s),t&&D(t));},[t]);let u=s=>{let C=Pe(s.target.value);e(C);let N=we(C);N?(n.current=C,a?.(N)):C===""&&(n.current="",a?.(void 0));},c=s=>{s.key==="ArrowDown"&&(s.preventDefault(),m(true)),!/[0-9/]/.test(s.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(s.key)&&!s.metaKey&&!s.ctrlKey&&s.preventDefault();};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",r),children:[jsxRuntime.jsx("input",{type:"text","data-slot":"input",className:chunkQRO22BPZ_cjs.a(chunk2DLCWPKO_cjs.a({variant:g}),"pr-10",i),value:v,placeholder:p,onChange:u,onKeyDown:c,disabled:o}),jsxRuntime.jsxs(chunkODAOIGPB_cjs.a,{open:!o&&x,onOpenChange:m,children:[jsxRuntime.jsx(chunkODAOIGPB_cjs.b,{asChild:true,children:jsxRuntime.jsx(chunkIINNHABI_cjs.b,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:o,"aria-label":"Select date",type:"button",children:jsxRuntime.jsx(lu.LuCalendar,{})})}),jsxRuntime.jsx(chunkODAOIGPB_cjs.c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsxRuntime.jsx(chunkRTFBAC56_cjs.b,{mode:"single",selected:t,month:d,onMonthChange:D,onSelect:s=>{let C=s?T__default.default(s).format("MM/DD/YYYY"):"";n.current=C,e(C),a?.(s),m(false);},...l})})]})]})}var Re=({alt:i,className:r="",containerClassName:t="",imagePreview:a=void 0,cropper:o=void 0})=>{let[l,p]=react.useState(false),g=!a||!l,x=!!o;return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex max-w-[386px] flex-col",r),children:[jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative h-60 rounded-md border",t),children:[a&&x?jsxRuntime.jsx(Ee__default.default,{image:a,crop:o.crop,zoom:o.zoom,aspect:o.aspect,objectFit:"contain",onCropChange:o.setCrop,onZoomChange:o.setZoom,onCropComplete:o.onCropComplete,onMediaLoaded:()=>p(true),showGrid:false}):a&&jsxRuntime.jsx("img",{alt:i,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${l?"opacity-100":"opacity-0"}`,src:a,onLoad:()=>p(true),draggable:false}),g&&jsxRuntime.jsx("div",{"aria-label":a?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&x&&jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center gap-3",children:[jsxRuntime.jsx(chunkIINNHABI_cjs.b,{"aria-label":"zoom out",onClick:()=>o.setZoom(Math.max(o.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsxRuntime.jsx(lu.LuZoomOut,{})}),jsxRuntime.jsx(chunk777NH37Z_cjs.a,{value:[o.zoom],min:1,max:3,step:.01,onValueChange:m=>o.setZoom(m[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsxRuntime.jsx(chunkIINNHABI_cjs.b,{"aria-label":"zoom in",onClick:()=>o.setZoom(Math.min(o.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsxRuntime.jsx(lu.LuZoomIn,{})})]}),jsxRuntime.jsxs(chunkIINNHABI_cjs.b,{onClick:o.reset,variant:"ghost",className:"h-8 p-2",children:[jsxRuntime.jsx(lu.LuRefreshCcw,{}),"Reset"]})]})]})};var re="00:00",ne="24:00",ae=i=>luxon.DateTime.fromFormat(i,"HH:mm").isValid,se=({startTime:i=re,endTime:r=ne,interval:t=30,onChange:a=void 0,className:o="",placeholder:l="Select one",size:p="default",portal:g=true,triggerIcon:x,getSublabel:m,...d})=>{ae(i)||(console.error(`Invalid startTime: ${i}`),i=re),ae(r)||(console.error(`Invalid endTime: ${r}`),r=ne);let D=react.useMemo(()=>{let e=luxon.DateTime.fromFormat(r,"HH:mm"),n=luxon.Duration.fromObject({minutes:t}),u=[],c=luxon.DateTime.fromFormat(i,"HH:mm");for(;c<=e;){let s=c.toFormat("HH:mm");s==="00:00"&&c.equals(e)&&(s="24:00"),u.push({label:c.toFormat("h:mm a"),value:{hour:c.toFormat("HH"),min:c.toFormat("mm"),raw:s,formatted:c.toFormat("h:mm a")}}),c=c.plus(n);}return u},[i,r,t]);return jsxRuntime.jsxs(chunkVJHFFAS4_cjs.a,{onValueChange:e=>{let n=D.find(u=>u.value.raw===e);n&&a?.(n);},...d,children:[jsxRuntime.jsx(chunkVJHFFAS4_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",o),size:p,triggerIcon:x,children:jsxRuntime.jsx(chunkVJHFFAS4_cjs.c,{placeholder:l})}),jsxRuntime.jsx(chunkVJHFFAS4_cjs.g,{position:"popper",className:"max-h-90",portal:g,children:D.map(e=>{let n=m?.(e);return jsxRuntime.jsx(chunkVJHFFAS4_cjs.i,{className:chunkQRO22BPZ_cjs.a(n?"h-auto py-2":"h-10"),value:e.value.raw,sublabel:n,children:e.label},e.value.raw)})})]})},Pt=se;var _e=i=>{let r="",t="",a="",o="",l="",p="";if(i.address_components.forEach(d=>{d.types.some(D=>{switch(D){case "locality":return r=d.long_name,true;case "sublocality":case "administrative_area_level_3":case "neighborhood":return r=r||d.long_name,true;case "administrative_area_level_1":return t=d.short_name,true;case "street_number":return a=d.short_name,true;case "route":return o=d.short_name,true;case "subpremise":return l=d.long_name,true;case "postal_code":return p=d.short_name,true;default:return false}});}),l){let d=l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),D=i.formatted_address?.match(new RegExp(`(?<![A-Za-z])(?:Apt|Apartment|Suite|Ste|Unit|Bldg|Building|Fl|Floor|Rm|Room|Lot|Space|Spc|Trlr|Trailer|#)\\.?\\s*#?\\s*${d}\\b`,"i"));D&&(l=D[0].trim());}let g=i.geometry.location.lat(),x=i.geometry.location.lng(),m=`${a} ${o}`.trim();return {city:r,state:t,street:m,unit:l,zip:p,lat:g,long:x}},Oe=2,ze=({onSelectAddress:i=void 0,...r})=>{let t=react.useRef(null),a=react.useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`),[o,l]=react.useState(-1),{suggestions:{data:p=[]},setValue:g,clearSuggestions:x}=He__default.default({requestOptions:{componentRestrictions:{country:"us"}}}),m=react.useCallback(()=>{x(),l(-1);},[x]);react.useEffect(()=>{let e=u=>{t.current&&!t.current.contains(u.target)&&m();},n=u=>{u.key==="Escape"&&m();};return p.length>0&&(document.addEventListener("mousedown",e),document.addEventListener("keydown",n)),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",n);}},[p.length,m]),react.useEffect(()=>{p.length===0?l(-1):l(e=>e<0?e:Math.min(e,p.length-1));},[p.length]);let d=e=>{g(e,false),m(),!(e.length<=Oe)&&He.getGeocode({address:e}).then(n=>{if(!n||n.length===0)return;let u=_e(n[0]);i?.(u);});},D=react.useCallback(e=>{g(e),l(-1);},[g]),v=o>=0?`${a.current}-option-${o}`:void 0;return jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{...r,onChange:e=>{r.onChange?.(e),D(e.target.value);},onKeyDown:e=>{if(r.onKeyDown?.(e),!e.defaultPrevented){if(!p.length){e.key==="Escape"&&m();return}if(e.key==="ArrowDown"){e.preventDefault(),l(n=>{let u=n+1;return u>=p.length||u<0?0:u});return}if(e.key==="ArrowUp"){e.preventDefault(),l(n=>n<=0?p.length-1:n-1);return}if(e.key==="Enter"&&o>=0){e.preventDefault();let n=p[o];n&&d(n.description);return}e.key==="Escape"&&(e.preventDefault(),m());}},role:"combobox","aria-expanded":p.length>0,"aria-controls":p.length>0?a.current:void 0,"aria-activedescendant":v,"aria-autocomplete":"list"}),p.length>0&&jsxRuntime.jsx("div",{ref:t,id:a.current,role:"listbox",className:"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg",children:p.map((e,n)=>{let u=`${a.current}-option-${n}`,c=n===o;return jsxRuntime.jsx("div",{id:u,role:"option","aria-selected":c,tabIndex:-1,className:`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${c?"bg-green-100":""}`,onMouseEnter:()=>l(n),onMouseDown:s=>s.preventDefault(),onClick:()=>d(e.description),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),d(e.description));},children:e.description},e.place_id)})})]})},$e=["places"],Le=({googleMapsApiKey:i,onSelectAddress:r=void 0,...t})=>{let{isLoaded:a,loadError:o}=api.useLoadScript({googleMapsApiKey:i,libraries:$e});return !a||o?jsxRuntime.jsx(chunk2DLCWPKO_cjs.b,{...t}):jsxRuntime.jsx(ze,{onSelectAddress:r,...t})};exports.a=_e;exports.b=ze;exports.c=Le;exports.d=be;exports.e=Ie;exports.f=Re;exports.g=se;exports.h=Pt;//# sourceMappingURL=chunk-QQCG3BDP.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-QQCG3BDP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/date-picker/date-picker.tsx","../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/address-input/address-input.tsx"],"names":["dayjs","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","date","DatePicker","className","wrapperClassName","value","onChange","disabled","calendarProps","placeholderProp","inputProps","showCalendarIcon","editable","open","setOpen","useState","placeholder","navigatedMonth","setNavigatedMonth","prevValueForMonth","useRef","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","parsed","handleSelect","val","handlePaste","e","pasted","handleFocus","handleBlur","current","inputClasses","cn","inputVariants","jsxs","Popover","jsx","PopoverTrigger","Input","LuCalendar","PopoverContent","Calendar","maskDate","digits","parseDate","parts","month","day","year","DatePickerInput","variant","setMonth","inputValue","setInputValue","lastSyncedRef","useEffect","formatted","handleInputChange","masked","handleKeyDown","Button","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","triggerIcon","getSublabel","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","Select","SelectTrigger","SelectValue","SelectContent","sublabel","SelectItem","time_select_default","getAddressAttributes","result","city","state","streetNumber","streetName","unit","zip","component","type","escaped","descriptorMatch","lat","long","street","MIN_ADDRESS_LENGTH","AddressInputInternal","onSelectAddress","rest","dropdownRef","listboxIdRef","highlightedIndex","setHighlightedIndex","data","setValue","clearSuggestions","usePlacesAutocomplete","closeSuggestions","useCallback","handleClickOutside","event","handleEscape","handleAddressSelect","address","getGeocode","results","formattedResults","handleAddressOnChange","highlightedOptionId","next","suggestion","index","optionId","isHighlighted","libraries","AddressInput","googleMapsApiKey","props","isLoaded","loadError","useLoadScript"],"mappings":"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","file":"chunk-P7GTZPIS.cjs","sourcesContent":["import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport type { ReactElement, ReactNode } 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 placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n triggerIcon?: ReactElement;\n getSublabel?: (interval: Interval) => ReactNode;\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 placeholder = 'Select one',\n size = 'default',\n portal = true,\n triggerIcon,\n getSublabel,\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 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\n className={cn('max-w-[240px] md:w-[150px]', className)}\n size={size}\n triggerIcon={triggerIcon}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {intervals.map((time) => {\n const sublabel = getSublabel?.(time);\n return (\n <SelectItem\n className={cn(sublabel ? 'h-auto py-2' : 'h-10')}\n key={time.value.raw}\n value={time.value.raw}\n sublabel={sublabel}\n >\n {time.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import usePlacesAutocomplete, { type GeocodeResult, getGeocode } from 'use-places-autocomplete';\nimport { type ComponentProps, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\nimport { Input } from '@/v2';\n\nexport type AddressResults = {\n city: string;\n state: string;\n street: string;\n unit: string;\n zip: string;\n lat: number;\n long: number;\n};\n\nexport const getAddressAttributes = (result: GeocodeResult): AddressResults => {\n let city = '';\n let state = '';\n let streetNumber = '';\n let streetName = '';\n let unit = '';\n let zip = '';\n\n result.address_components.forEach((component) => {\n component.types.some((type) => {\n switch (type) {\n case 'locality':\n city = component.long_name; // Always prefer locality\n return true;\n case 'sublocality':\n case 'administrative_area_level_3':\n case 'neighborhood':\n city = city || component.long_name; // sets if no city\n return true;\n case 'administrative_area_level_1':\n state = component.short_name;\n return true;\n case 'street_number':\n streetNumber = component.short_name;\n return true;\n case 'route':\n streetName = component.short_name;\n return true;\n case 'subpremise':\n unit = component.long_name;\n return true;\n case 'postal_code':\n zip = component.short_name;\n return true;\n default:\n return false;\n }\n });\n });\n\n // Google's subpremise is the bare value (e.g. \"4\"), and its descriptor (Apt/Suite/#) only appears in formatted_address\n if (unit) {\n const escaped = unit.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n const descriptorMatch = result.formatted_address?.match(\n new RegExp(\n `(?<![A-Za-z])(?:Apt|Apartment|Suite|Ste|Unit|Bldg|Building|Fl|Floor|Rm|Room|Lot|Space|Spc|Trlr|Trailer|#)\\\\.?\\\\s*#?\\\\s*${escaped}\\\\b`,\n 'i',\n ),\n );\n\n if (descriptorMatch) {\n unit = descriptorMatch[0].trim();\n }\n }\n\n const lat = result.geometry.location.lat();\n const long = result.geometry.location.lng();\n const street = `${streetNumber} ${streetName}`.trim();\n\n return { city, state, street, unit, zip, lat, long };\n};\n\ntype InputProps = ComponentProps<typeof Input>;\n\ntype AddressInputProps = InputProps & {\n onSelectAddress?: (results: AddressResults) => void;\n};\n\nconst MIN_ADDRESS_LENGTH = 2;\n\nexport const AddressInputInternal = ({\n onSelectAddress = undefined,\n ...rest\n}: AddressInputProps) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listboxIdRef = useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const {\n suggestions: { data = [] },\n setValue,\n clearSuggestions,\n } = usePlacesAutocomplete({\n requestOptions: {\n componentRestrictions: { country: 'us' },\n },\n });\n\n const closeSuggestions = useCallback(() => {\n clearSuggestions();\n setHighlightedIndex(-1);\n }, [clearSuggestions]);\n\n // Handle click outside to close suggestions\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n closeSuggestions();\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSuggestions();\n }\n };\n\n if (data.length > 0) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [data.length, closeSuggestions]);\n\n useEffect(() => {\n if (data.length === 0) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return current;\n }\n\n return Math.min(current, data.length - 1);\n });\n }\n }, [data.length]);\n\n const handleAddressSelect = (address: string) => {\n setValue(address, false);\n closeSuggestions();\n\n if (address.length <= MIN_ADDRESS_LENGTH) {\n return;\n }\n\n getGeocode({ address }).then((results) => {\n if (!results || results.length === 0) {\n return;\n }\n\n const formattedResults = getAddressAttributes(results[0]);\n onSelectAddress?.(formattedResults);\n });\n };\n\n const handleAddressOnChange = useCallback(\n (inputValue: string) => {\n setValue(inputValue);\n setHighlightedIndex(-1);\n },\n [setValue],\n );\n\n const highlightedOptionId =\n highlightedIndex >= 0 ? `${listboxIdRef.current}-option-${highlightedIndex}` : undefined;\n\n return (\n <div className=\"relative\">\n <Input\n {...rest}\n onChange={(e) => {\n rest.onChange?.(e);\n handleAddressOnChange(e.target.value);\n }}\n onKeyDown={(e) => {\n rest.onKeyDown?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (!data.length) {\n if (e.key === 'Escape') {\n closeSuggestions();\n }\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n const next = current + 1;\n if (next >= data.length || next < 0) {\n return 0;\n }\n return next;\n });\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n if (current <= 0) {\n return data.length - 1;\n }\n return current - 1;\n });\n return;\n }\n\n if (e.key === 'Enter' && highlightedIndex >= 0) {\n e.preventDefault();\n const suggestion = data[highlightedIndex];\n if (suggestion) {\n handleAddressSelect(suggestion.description);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n closeSuggestions();\n }\n }}\n role=\"combobox\"\n aria-expanded={data.length > 0}\n aria-controls={data.length > 0 ? listboxIdRef.current : undefined}\n aria-activedescendant={highlightedOptionId}\n aria-autocomplete=\"list\"\n />\n {data.length > 0 && (\n <div\n ref={dropdownRef}\n id={listboxIdRef.current}\n role=\"listbox\"\n className=\"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg\"\n >\n {data.map((suggestion, index) => {\n const optionId = `${listboxIdRef.current}-option-${index}`;\n const isHighlighted = index === highlightedIndex;\n\n return (\n <div\n key={suggestion.place_id}\n id={optionId}\n role=\"option\"\n aria-selected={isHighlighted}\n tabIndex={-1}\n className={`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${\n isHighlighted ? 'bg-green-100' : ''\n }`}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => handleAddressSelect(suggestion.description)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAddressSelect(suggestion.description);\n }\n }}\n >\n {suggestion.description}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nconst libraries: ['places'] = ['places'];\n\nexport const AddressInput = ({\n googleMapsApiKey,\n onSelectAddress = undefined,\n ...props\n}: AddressInputProps & { googleMapsApiKey: string }) => {\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey,\n libraries,\n });\n // if not loaded or error, return regular input\n if (!isLoaded || loadError) {\n return <Input {...props} />;\n }\n return <AddressInputInternal onSelectAddress={onSelectAddress} {...props} />;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/v2/date-picker/date-picker.tsx","../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/address-input/address-input.tsx"],"names":["dayjs","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","date","DatePicker","className","wrapperClassName","value","onChange","disabled","calendarProps","placeholderProp","inputProps","showCalendarIcon","editable","open","setOpen","useState","placeholder","navigatedMonth","setNavigatedMonth","prevValueForMonth","useRef","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","parsed","handleSelect","val","handlePaste","e","pasted","handleFocus","handleBlur","current","inputClasses","cn","inputVariants","jsxs","Popover","jsx","PopoverTrigger","Input","LuCalendar","PopoverContent","Calendar","maskDate","digits","parseDate","parts","month","day","year","DatePickerInput","variant","setMonth","inputValue","setInputValue","lastSyncedRef","useEffect","formatted","handleInputChange","masked","handleKeyDown","Button","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","triggerIcon","getSublabel","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","Select","SelectTrigger","SelectValue","SelectContent","sublabel","SelectItem","time_select_default","getAddressAttributes","result","city","state","streetNumber","streetName","unit","zip","component","type","escaped","descriptorMatch","lat","long","street","MIN_ADDRESS_LENGTH","AddressInputInternal","onSelectAddress","rest","dropdownRef","listboxIdRef","highlightedIndex","setHighlightedIndex","data","setValue","clearSuggestions","usePlacesAutocomplete","closeSuggestions","useCallback","handleClickOutside","event","handleEscape","handleAddressSelect","address","getGeocode","results","formattedResults","handleAddressOnChange","highlightedOptionId","next","suggestion","index","optionId","isHighlighted","libraries","AddressInput","googleMapsApiKey","props","isLoaded","loadError","useLoadScript"],"mappings":"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","file":"chunk-QQCG3BDP.cjs","sourcesContent":["import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport type { ReactElement, ReactNode } 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 placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n triggerIcon?: ReactElement;\n getSublabel?: (interval: Interval) => ReactNode;\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 placeholder = 'Select one',\n size = 'default',\n portal = true,\n triggerIcon,\n getSublabel,\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 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\n className={cn('max-w-[240px] md:w-[150px]', className)}\n size={size}\n triggerIcon={triggerIcon}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {intervals.map((time) => {\n const sublabel = getSublabel?.(time);\n return (\n <SelectItem\n className={cn(sublabel ? 'h-auto py-2' : 'h-10')}\n key={time.value.raw}\n value={time.value.raw}\n sublabel={sublabel}\n >\n {time.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import usePlacesAutocomplete, { type GeocodeResult, getGeocode } from 'use-places-autocomplete';\nimport { type ComponentProps, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\nimport { Input } from '@/v2';\n\nexport type AddressResults = {\n city: string;\n state: string;\n street: string;\n unit: string;\n zip: string;\n lat: number;\n long: number;\n};\n\nexport const getAddressAttributes = (result: GeocodeResult): AddressResults => {\n let city = '';\n let state = '';\n let streetNumber = '';\n let streetName = '';\n let unit = '';\n let zip = '';\n\n result.address_components.forEach((component) => {\n component.types.some((type) => {\n switch (type) {\n case 'locality':\n city = component.long_name; // Always prefer locality\n return true;\n case 'sublocality':\n case 'administrative_area_level_3':\n case 'neighborhood':\n city = city || component.long_name; // sets if no city\n return true;\n case 'administrative_area_level_1':\n state = component.short_name;\n return true;\n case 'street_number':\n streetNumber = component.short_name;\n return true;\n case 'route':\n streetName = component.short_name;\n return true;\n case 'subpremise':\n unit = component.long_name;\n return true;\n case 'postal_code':\n zip = component.short_name;\n return true;\n default:\n return false;\n }\n });\n });\n\n // Google's subpremise is the bare value (e.g. \"4\"), and its descriptor (Apt/Suite/#) only appears in formatted_address\n if (unit) {\n const escaped = unit.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n const descriptorMatch = result.formatted_address?.match(\n new RegExp(\n `(?<![A-Za-z])(?:Apt|Apartment|Suite|Ste|Unit|Bldg|Building|Fl|Floor|Rm|Room|Lot|Space|Spc|Trlr|Trailer|#)\\\\.?\\\\s*#?\\\\s*${escaped}\\\\b`,\n 'i',\n ),\n );\n\n if (descriptorMatch) {\n unit = descriptorMatch[0].trim();\n }\n }\n\n const lat = result.geometry.location.lat();\n const long = result.geometry.location.lng();\n const street = `${streetNumber} ${streetName}`.trim();\n\n return { city, state, street, unit, zip, lat, long };\n};\n\ntype InputProps = ComponentProps<typeof Input>;\n\ntype AddressInputProps = InputProps & {\n onSelectAddress?: (results: AddressResults) => void;\n};\n\nconst MIN_ADDRESS_LENGTH = 2;\n\nexport const AddressInputInternal = ({\n onSelectAddress = undefined,\n ...rest\n}: AddressInputProps) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listboxIdRef = useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const {\n suggestions: { data = [] },\n setValue,\n clearSuggestions,\n } = usePlacesAutocomplete({\n requestOptions: {\n componentRestrictions: { country: 'us' },\n },\n });\n\n const closeSuggestions = useCallback(() => {\n clearSuggestions();\n setHighlightedIndex(-1);\n }, [clearSuggestions]);\n\n // Handle click outside to close suggestions\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n closeSuggestions();\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSuggestions();\n }\n };\n\n if (data.length > 0) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [data.length, closeSuggestions]);\n\n useEffect(() => {\n if (data.length === 0) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return current;\n }\n\n return Math.min(current, data.length - 1);\n });\n }\n }, [data.length]);\n\n const handleAddressSelect = (address: string) => {\n setValue(address, false);\n closeSuggestions();\n\n if (address.length <= MIN_ADDRESS_LENGTH) {\n return;\n }\n\n getGeocode({ address }).then((results) => {\n if (!results || results.length === 0) {\n return;\n }\n\n const formattedResults = getAddressAttributes(results[0]);\n onSelectAddress?.(formattedResults);\n });\n };\n\n const handleAddressOnChange = useCallback(\n (inputValue: string) => {\n setValue(inputValue);\n setHighlightedIndex(-1);\n },\n [setValue],\n );\n\n const highlightedOptionId =\n highlightedIndex >= 0 ? `${listboxIdRef.current}-option-${highlightedIndex}` : undefined;\n\n return (\n <div className=\"relative\">\n <Input\n {...rest}\n onChange={(e) => {\n rest.onChange?.(e);\n handleAddressOnChange(e.target.value);\n }}\n onKeyDown={(e) => {\n rest.onKeyDown?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (!data.length) {\n if (e.key === 'Escape') {\n closeSuggestions();\n }\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n const next = current + 1;\n if (next >= data.length || next < 0) {\n return 0;\n }\n return next;\n });\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n if (current <= 0) {\n return data.length - 1;\n }\n return current - 1;\n });\n return;\n }\n\n if (e.key === 'Enter' && highlightedIndex >= 0) {\n e.preventDefault();\n const suggestion = data[highlightedIndex];\n if (suggestion) {\n handleAddressSelect(suggestion.description);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n closeSuggestions();\n }\n }}\n role=\"combobox\"\n aria-expanded={data.length > 0}\n aria-controls={data.length > 0 ? listboxIdRef.current : undefined}\n aria-activedescendant={highlightedOptionId}\n aria-autocomplete=\"list\"\n />\n {data.length > 0 && (\n <div\n ref={dropdownRef}\n id={listboxIdRef.current}\n role=\"listbox\"\n className=\"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg\"\n >\n {data.map((suggestion, index) => {\n const optionId = `${listboxIdRef.current}-option-${index}`;\n const isHighlighted = index === highlightedIndex;\n\n return (\n <div\n key={suggestion.place_id}\n id={optionId}\n role=\"option\"\n aria-selected={isHighlighted}\n tabIndex={-1}\n className={`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${\n isHighlighted ? 'bg-green-100' : ''\n }`}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => handleAddressSelect(suggestion.description)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAddressSelect(suggestion.description);\n }\n }}\n >\n {suggestion.description}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nconst libraries: ['places'] = ['places'];\n\nexport const AddressInput = ({\n googleMapsApiKey,\n onSelectAddress = undefined,\n ...props\n}: AddressInputProps & { googleMapsApiKey: string }) => {\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey,\n libraries,\n });\n // if not loaded or error, return regular input\n if (!isLoaded || loadError) {\n return <Input {...props} />;\n }\n return <AddressInputInternal onSelectAddress={onSelectAddress} {...props} />;\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-YTIIAU4W.js';import*as o from'radix-ui/accordion';import {LuChevronDown}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function m({...t}){return jsx(o.Root,{"data-slot":"accordion",...t})}function l({className:t,...e}){return jsx(o.Item,{"data-slot":"accordion-item",className:a("border-b last:border-b-0",t),...e})}function p({className:t,children:e,...n}){return jsx(o.Header,{className:"flex",children:jsxs(o.Trigger,{"data-slot":"accordion-trigger",className:a("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-lg font-bold transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",t),...n,children:[e,jsx(LuChevronDown,{className:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"})]})})}function f({className:t,children:e,...n}){return jsx(o.Content,{"data-slot":"accordion-content",className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",...n,children:jsx("div",{className:a("pt-0 pb-4",t),children:e})})}export{m as a,l as b,p as c,f as d};//# sourceMappingURL=chunk-TWFZJV2Y.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-TWFZJV2Y.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/accordion/accordion.tsx"],"names":["Accordion","props","jsx","AccordionItem","className","cn","AccordionTrigger","children","jsxs","LuChevronDown","AccordionContent"],"mappings":"6JAMA,SAASA,CAAAA,CAAU,CAAE,GAAGC,CAAM,CAAA,CAAyD,CACrF,OAAOC,GAAAA,CAAoB,CAAA,CAAA,IAAA,CAAnB,CAAwB,WAAA,CAAU,WAAA,CAAa,GAAGD,CAAAA,CAAO,CACnE,CAEA,SAASE,CAAAA,CAAc,CACrB,SAAA,CAAAC,CAAAA,CACA,GAAGH,CACL,CAAA,CAAyD,CACvD,OACEC,GAAAA,CAAoB,CAAA,CAAA,IAAA,CAAnB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWG,CAAAA,CAAG,0BAAA,CAA4BD,CAAS,CAAA,CAClD,GAAGH,CAAAA,CACN,CAEJ,CAEA,SAASK,CAAAA,CAAiB,CACxB,SAAA,CAAAF,CAAAA,CACA,QAAA,CAAAG,CAAAA,CACA,GAAGN,CACL,CAAA,CAA4D,CAC1D,OACEC,GAAAA,CAAoB,CAAA,CAAA,MAAA,CAAnB,CAA0B,SAAA,CAAU,MAAA,CACnC,QAAA,CAAAM,IAAAA,CAAoB,CAAA,CAAA,OAAA,CAAnB,CACC,WAAA,CAAU,mBAAA,CACV,SAAA,CAAWH,CAAAA,CACT,
|
|
1
|
+
{"version":3,"sources":["../src/v2/accordion/accordion.tsx"],"names":["Accordion","props","jsx","AccordionItem","className","cn","AccordionTrigger","children","jsxs","LuChevronDown","AccordionContent"],"mappings":"6JAMA,SAASA,CAAAA,CAAU,CAAE,GAAGC,CAAM,CAAA,CAAyD,CACrF,OAAOC,GAAAA,CAAoB,CAAA,CAAA,IAAA,CAAnB,CAAwB,WAAA,CAAU,WAAA,CAAa,GAAGD,CAAAA,CAAO,CACnE,CAEA,SAASE,CAAAA,CAAc,CACrB,SAAA,CAAAC,CAAAA,CACA,GAAGH,CACL,CAAA,CAAyD,CACvD,OACEC,GAAAA,CAAoB,CAAA,CAAA,IAAA,CAAnB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWG,CAAAA,CAAG,0BAAA,CAA4BD,CAAS,CAAA,CAClD,GAAGH,CAAAA,CACN,CAEJ,CAEA,SAASK,CAAAA,CAAiB,CACxB,SAAA,CAAAF,CAAAA,CACA,QAAA,CAAAG,CAAAA,CACA,GAAGN,CACL,CAAA,CAA4D,CAC1D,OACEC,GAAAA,CAAoB,CAAA,CAAA,MAAA,CAAnB,CAA0B,SAAA,CAAU,MAAA,CACnC,QAAA,CAAAM,IAAAA,CAAoB,CAAA,CAAA,OAAA,CAAnB,CACC,WAAA,CAAU,mBAAA,CACV,SAAA,CAAWH,CAAAA,CACT,0RAAA,CACAD,CACF,CAAA,CACC,GAAGH,CAAAA,CAEH,QAAA,CAAA,CAAAM,CAAAA,CACDL,GAAAA,CAACO,aAAAA,CAAA,CAAc,SAAA,CAAU,6GAAA,CAA8G,CAAA,CAAA,CACzI,CAAA,CACF,CAEJ,CAEA,SAASC,CAAAA,CAAiB,CACxB,SAAA,CAAAN,CAAAA,CACA,QAAA,CAAAG,CAAAA,CACA,GAAGN,CACL,CAAA,CAA4D,CAC1D,OACEC,GAAAA,CAAoB,CAAA,CAAA,OAAA,CAAnB,CACC,WAAA,CAAU,mBAAA,CACV,SAAA,CAAU,2GAAA,CACT,GAAGD,CAAAA,CAEJ,QAAA,CAAAC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWG,CAAAA,CAAG,WAAA,CAAaD,CAAS,CAAA,CAAI,QAAA,CAAAG,CAAAA,CAAS,EACxD,CAEJ","file":"chunk-TWFZJV2Y.js","sourcesContent":["import * as React from 'react';\nimport * as AccordionPrimitive from 'radix-ui/accordion';\n\nimport { LuChevronDown } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\n\nfunction Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('border-b last:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-lg font-bold transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <LuChevronDown className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a as a$B,b as b$e,c as c$9}from'./chunk-UNNV366C.js';import {a as a$D}from'./chunk-EVPDARFL.js';import {a as a$3}from'./chunk-O43APBND.js';import {d,e,a as a$8,b,c}from'./chunk-TN52VRCL.js';import {a as a$d,b as b$f,h,c as c$a,d as d$8,e as e$4,i as i$1,g as g$3,f as f$3,k as k$1}from'./chunk-QTVAPJXT.js';import {a as a$5}from'./chunk-5WBSKSGR.js';import {a as a$9}from'./chunk-BQ2LVGXV.js';import {b as b$1}from'./chunk-QLWE6EIV.js';import {a as a$I}from'./chunk-DTSPE3KO.js';import {d as d$2,a as a$c,e as e$5,c as c$b,b as b$g}from'./chunk-QZUVN273.js';import {c as c$2,d as d$3,b as b$4,f as f$1,g as g$1,l,u,i as i$2,j,m,k as k$2,n,r,o,p,s,t,q}from'./chunk-GKNMP3SV.js';import {a as a$f,c as c$3,g as g$2,d as d$5,e as e$1,f as f$2}from'./chunk-WWVOH3Z2.js';import {c as c$4,a as a$g,b as b$5}from'./chunk-LTWGGNMG.js';import {a as a$l,b as b$6}from'./chunk-LT74ZCYF.js';import {a as a$K,g as g$4,b as b$h,f as f$5,c as c$c,d as d$9,e as e$6}from'./chunk-KEYF7NZY.js';import {a as a$E}from'./chunk-UOJ2V7M2.js';import {c as c$1,d as d$1,b as b$2,i,g,f as f$4}from'./chunk-26AWTUM2.js';import {a as a$6}from'./chunk-EDLF2PU7.js';import {a as a$m}from'./chunk-57TQHFOX.js';import {b as b$3}from'./chunk-6MYNQMQU.js';import {a as a$
|
|
1
|
+
import {a as a$B,b as b$e,c as c$9}from'./chunk-UNNV366C.js';import {a as a$D}from'./chunk-EVPDARFL.js';import {a as a$3}from'./chunk-O43APBND.js';import {d,e,a as a$8,b,c}from'./chunk-TN52VRCL.js';import {a as a$d,b as b$f,h,c as c$a,d as d$8,e as e$4,i as i$1,g as g$3,f as f$3,k as k$1}from'./chunk-QTVAPJXT.js';import {a as a$5}from'./chunk-5WBSKSGR.js';import {a as a$9}from'./chunk-BQ2LVGXV.js';import {b as b$1}from'./chunk-QLWE6EIV.js';import {a as a$I}from'./chunk-DTSPE3KO.js';import {d as d$2,a as a$c,e as e$5,c as c$b,b as b$g}from'./chunk-QZUVN273.js';import {c as c$2,d as d$3,b as b$4,f as f$1,g as g$1,l,u,i as i$2,j,m,k as k$2,n,r,o,p,s,t,q}from'./chunk-GKNMP3SV.js';import {a as a$f,c as c$3,g as g$2,d as d$5,e as e$1,f as f$2}from'./chunk-WWVOH3Z2.js';import {c as c$4,a as a$g,b as b$5}from'./chunk-LTWGGNMG.js';import {a as a$l,b as b$6}from'./chunk-LT74ZCYF.js';import {a as a$K,g as g$4,b as b$h,f as f$5,c as c$c,d as d$9,e as e$6}from'./chunk-KEYF7NZY.js';import {a as a$E}from'./chunk-UOJ2V7M2.js';import {c as c$1,d as d$1,b as b$2,i,g,f as f$4}from'./chunk-26AWTUM2.js';import {a as a$6}from'./chunk-EDLF2PU7.js';import {a as a$m}from'./chunk-57TQHFOX.js';import {b as b$3}from'./chunk-6MYNQMQU.js';import {a as a$4}from'./chunk-W4ZQEZRM.js';import {a as a$h}from'./chunk-3OO5E3ZN.js';import {a as a$i}from'./chunk-ZRCAEEVD.js';import {a as a$p}from'./chunk-GXOY5PYI.js';import {a as a$H}from'./chunk-SMQ74B53.js';import {b as b$8,a as a$w}from'./chunk-VZ6WX7SF.js';import {a as a$u}from'./chunk-NL66A3DQ.js';import'./chunk-HK2PZQ6B.js';import {a as a$e}from'./chunk-PTNAIPLE.js';import {a as a$A,b as b$c,c as c$8}from'./chunk-4VBD2DLV.js';import {a as a$v}from'./chunk-FCBKZAPC.js';import {a as a$C}from'./chunk-JAEPS33P.js';import {a as a$a}from'./chunk-QDMOGPMW.js';import {a as a$q}from'./chunk-KJ7WKKNI.js';import {a as a$L}from'./chunk-KU6ZVQZS.js';import {c as c$7,a as a$z,b as b$b}from'./chunk-LJVORPSS.js';import {a as a$7}from'./chunk-GI6J7FDP.js';import {a as a$2}from'./chunk-757OMTKD.js';import {a as a$o}from'./chunk-CXJ3PF2U.js';import {a as a$G}from'./chunk-UUVX2UR3.js';import {a as a$j}from'./chunk-IIGZTG34.js';import {a as a$k}from'./chunk-MKK6PHM2.js';import {a as a$s,b as b$7,c as c$5,d as d$6,e as e$2}from'./chunk-A23VMSH6.js';import {b as b$a,c as c$6,d as d$7,a as a$y}from'./chunk-HFAAF3KC.js';import {a as a$n}from'./chunk-QRIPM25G.js';import {a as a$r}from'./chunk-AHBRS7P5.js';import {b as b$d,a as a$M}from'./chunk-UWVJ4UBA.js';import {a as a$F}from'./chunk-PV2EFEFY.js';import {a as a$b}from'./chunk-7IHTM5PN.js';import {a as a$x,b as b$9}from'./chunk-YTYBBHCS.js';import {f}from'./chunk-S2IU53RU.js';import {a as a$t}from'./chunk-JRU2SV4H.js';import {a as a$1}from'./chunk-DMPPXMMA.js';import {a}from'./chunk-7QZQXRMR.js';import {d as d$4,e as e$3}from'./chunk-SLCTEGVG.js';import {a as a$J}from'./chunk-EXJ23J6S.js';import Ln from'@emotion/styled';import {Input,DatePicker,Upload,Card,Flex,Menu,AutoComplete,Badge}from'antd';export{ConfigProvider as ga}from'antd';import {useFormContext,useController,get,Controller,useForm}from'react-hook-form';export{useForm as L,useFormContext as M,useFormState as N,useWatch as O,useFieldArray as P,FormProvider as Q,Controller as R,useController as S}from'react-hook-form';import {createPortal}from'react-dom';import {useState,useId,useMemo,useCallback,useRef,useEffect,createElement,cloneElement}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {animated,useSpring,config}from'@react-spring/web';import Ua,{getGeocode}from'use-places-autocomplete';import {useLoadScript}from'@react-google-maps/api';import it from'dayjs';import {Global,css}from'@emotion/react';import {IMask}from'react-imask';import {useMenuState,useClick,ControlledMenu,MenuButton,MenuItem,FocusableItem,MenuHeader,MenuDivider}from'@szhsin/react-menu';var Gn=Ln.span`
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
gap: 8px;
|
|
@@ -208,5 +208,5 @@ import {a as a$B,b as b$e,c as c$9}from'./chunk-UNNV366C.js';import {a as a$D}fr
|
|
|
208
208
|
.ant-card-body {
|
|
209
209
|
padding: 1rem;
|
|
210
210
|
}
|
|
211
|
-
`,at={Primary:vl,Illustration:Pl,SolaceTip:wl};export{el as $,Go as A,Jo as B,Qo as C,Zo as D,en as E,on as F,Me as G,dt as H,ln as I,ui as J,pn as K,te as T,lt as U,Fi as V,Li as W,bt as X,Vi as Y,Ni as Z,St as _,vl as a,nl as aa,Pl as b,Ct as ba,wl as c,fl as ca,at as d,Tn as da,v as e,Fn as ea,yo as f,Sl as fa,k as g,ae as h,ve as i,So as j,ca as k,Co as l,xo as m,Pe as n,wo as o,Pa as p,ko as q,we as r,Ro as s,Eo as t,Oo as u,Do as v,Lo as w,Vo as x,$o as y,Uo as z};//# sourceMappingURL=chunk-
|
|
212
|
-
//# sourceMappingURL=chunk-
|
|
211
|
+
`,at={Primary:vl,Illustration:Pl,SolaceTip:wl};export{el as $,Go as A,Jo as B,Qo as C,Zo as D,en as E,on as F,Me as G,dt as H,ln as I,ui as J,pn as K,te as T,lt as U,Fi as V,Li as W,bt as X,Vi as Y,Ni as Z,St as _,vl as a,nl as aa,Pl as b,Ct as ba,wl as c,fl as ca,at as d,Tn as da,v as e,Fn as ea,yo as f,Sl as fa,k as g,ae as h,ve as i,So as j,ca as k,Co as l,xo as m,Pe as n,wo as o,Pa as p,ko as q,we as r,Ro as s,Eo as t,Oo as u,Do as v,Lo as w,Vo as x,$o as y,Uo as z};//# sourceMappingURL=chunk-UVWU27RW.js.map
|
|
212
|
+
//# sourceMappingURL=chunk-UVWU27RW.js.map
|