@xploreu/components 0.4.44 → 0.4.46
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/dist/{chunk-WN22TTEL.js → chunk-6QWQDSWL.js} +2 -2
- package/dist/{chunk-WN22TTEL.js.map → chunk-6QWQDSWL.js.map} +1 -1
- package/dist/chunk-7EXEQDMX.js +2 -0
- package/dist/chunk-7EXEQDMX.js.map +1 -0
- package/dist/{chunk-KUOFW7JO.js → chunk-B5LYJTBB.js} +2 -2
- package/dist/{chunk-KUOFW7JO.js.map → chunk-B5LYJTBB.js.map} +1 -1
- package/dist/{chunk-YNJZ2P52.js → chunk-C5HZCXIB.js} +2 -2
- package/dist/{chunk-YNJZ2P52.js.map → chunk-C5HZCXIB.js.map} +1 -1
- package/dist/chunk-DQGZIFNP.js +2 -0
- package/dist/chunk-DQGZIFNP.js.map +1 -0
- package/dist/{chunk-F77XVICY.js → chunk-FIDOWSDH.js} +2 -2
- package/dist/{chunk-F77XVICY.js.map → chunk-FIDOWSDH.js.map} +1 -1
- package/dist/{chunk-HGLHAEGH.js → chunk-G2GFDTP5.js} +2 -2
- package/dist/{chunk-HGLHAEGH.js.map → chunk-G2GFDTP5.js.map} +1 -1
- package/dist/{chunk-H6ETV455.js → chunk-G4DP36RY.js} +2 -2
- package/dist/{chunk-H6ETV455.js.map → chunk-G4DP36RY.js.map} +1 -1
- package/dist/{chunk-5VZ6QNBI.js → chunk-IFBRARGK.js} +2 -2
- package/dist/{chunk-5VZ6QNBI.js.map → chunk-IFBRARGK.js.map} +1 -1
- package/dist/{chunk-VIBM666E.js → chunk-M63WCJ22.js} +2 -2
- package/dist/{chunk-VIBM666E.js.map → chunk-M63WCJ22.js.map} +1 -1
- package/dist/{chunk-NFLQZ5NB.js → chunk-NBM4LIT4.js} +2 -2
- package/dist/{chunk-NFLQZ5NB.js.map → chunk-NBM4LIT4.js.map} +1 -1
- package/dist/{chunk-ZK7MHZFG.js → chunk-OBS7TDVV.js} +2 -2
- package/dist/{chunk-ZK7MHZFG.js.map → chunk-OBS7TDVV.js.map} +1 -1
- package/dist/{chunk-C675EWZW.js → chunk-QIP6KFG2.js} +2 -2
- package/dist/{chunk-C675EWZW.js.map → chunk-QIP6KFG2.js.map} +1 -1
- package/dist/{chunk-YPV6XEV4.js → chunk-S4L5WILL.js} +2 -2
- package/dist/{chunk-YPV6XEV4.js.map → chunk-S4L5WILL.js.map} +1 -1
- package/dist/chunk-SVNG3RLD.js +2 -0
- package/dist/chunk-SVNG3RLD.js.map +1 -0
- package/dist/{chunk-RAVBRPQS.js → chunk-Y2HN4RSA.js} +2 -2
- package/dist/{chunk-RAVBRPQS.js.map → chunk-Y2HN4RSA.js.map} +1 -1
- package/dist/{chunk-XIZN73T3.js → chunk-YHY3VXCO.js} +2 -2
- package/dist/{chunk-XIZN73T3.js.map → chunk-YHY3VXCO.js.map} +1 -1
- package/dist/composites/combobox-chip-outside.js +1 -1
- package/dist/composites/combobox-chip.js +1 -1
- package/dist/composites/combobox-simple.js +1 -1
- package/dist/composites/filter-combobox.js +1 -1
- package/dist/composites/index.js +1 -1
- package/dist/composites/index.js.map +1 -1
- package/dist/composites/phone-input.js +1 -1
- package/dist/ui/alert-dialog.js +1 -1
- package/dist/ui/alerter.js +1 -1
- package/dist/ui/button.js +1 -1
- package/dist/ui/calendar.js +1 -1
- package/dist/ui/carousel.js +1 -1
- package/dist/ui/combobox.d.ts +4 -3
- package/dist/ui/combobox.js +1 -1
- package/dist/ui/date-multiple-picker.js +1 -1
- package/dist/ui/date-picker.js +1 -1
- package/dist/ui/date-range-picker.js +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/ui/pagination.js +1 -1
- package/dist/ui/tabs.js +1 -1
- package/dist/ui/toast.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-RHWRIE3E.js +0 -2
- package/dist/chunk-RHWRIE3E.js.map +0 -1
- package/dist/chunk-UINS73U7.js +0 -2
- package/dist/chunk-UINS73U7.js.map +0 -1
- package/dist/chunk-XZN4XT6V.js +0 -2
- package/dist/chunk-XZN4XT6V.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/composites/combobox-simple.tsx"],"names":["comboboxSimpleIconSizes","comboboxSimpleTriggerPaddings","ComboboxSimple","items","value","defaultValue","onValueChange","placeholder","searchPlaceholder","icon","container","isPending","className","triggerClassName","contentClassName","disabled","size","infiniteScroll","showSearch","filter","props","jsxs","Combobox","a","b","ComboboxTrigger","cn","inputVariants","jsx","ComboboxValue","item","ChevronDownIcon","ComboboxPopup","ComboboxInput","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/composites/combobox-simple.tsx"],"names":["comboboxSimpleIconSizes","comboboxSimpleTriggerPaddings","ComboboxSimple","items","value","defaultValue","onValueChange","placeholder","searchPlaceholder","icon","container","isPending","className","triggerClassName","contentClassName","disabled","size","infiniteScroll","showSearch","filter","props","jsxs","Combobox","a","b","ComboboxTrigger","cn","inputVariants","jsx","ComboboxValue","item","ChevronDownIcon","ComboboxPopup","ComboboxInput","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-M63WCJ22.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { ChevronDownIcon } from \"lucide-react\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { inputVariants } from \"../ui/input\"\r\nimport { ComboboxItem, ComboboxItemTitle, type ComboboxProps } from \"../ui/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxInfiniteScroll,\r\n ComboboxInput,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxPortal,\r\n ComboboxStatus,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n} from \"../ui/combobox\"\r\n\r\n// ─── Types ───\r\n\r\nexport type ComboboxSimpleItem = {\r\n label: string\r\n value: string\r\n}\r\n\r\ntype BaseProps = {\r\n items: ComboboxSimpleItem[] | undefined\r\n placeholder?: string\r\n searchPlaceholder?: string\r\n icon?: React.ReactNode\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n isPending?: boolean\r\n className?: string\r\n triggerClassName?: string\r\n contentClassName?: string\r\n disabled?: boolean\r\n size?: VariantProps<typeof inputVariants>[\"size\"]\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n showSearch?: boolean\r\n}\r\n\r\nexport type ComboboxSimpleProps = Omit<ComboboxProps<ComboboxSimpleItem, false>, \"multiple\" | \"items\"> & BaseProps\r\n\r\nconst comboboxSimpleIconSizes: Record<string, string> = {\r\n \"3xs\": \"size-3\",\r\n \"2xs\": \"size-3.5\",\r\n xs: \"size-3.5\",\r\n sm: \"size-4\",\r\n md: \"size-4\",\r\n lg: \"size-4.5\",\r\n xl: \"size-5\",\r\n}\r\n\r\nconst comboboxSimpleTriggerPaddings: Record<string, string> = {\r\n \"3xs\": \"gap-1.5 pr-2\",\r\n \"2xs\": \"gap-1.5 pr-2.5\",\r\n xs: \"gap-2 pr-2.5\",\r\n sm: \"gap-2 pr-3\",\r\n md: \"gap-2 pr-3\",\r\n lg: \"gap-2.5 pr-3.5\",\r\n xl: \"gap-2.5 pr-4\",\r\n}\r\n\r\n// ─── Component ───\r\n\r\nfunction ComboboxSimple({\r\n items,\r\n value,\r\n defaultValue,\r\n onValueChange,\r\n placeholder = \"Select\",\r\n searchPlaceholder,\r\n icon,\r\n container,\r\n isPending,\r\n className,\r\n triggerClassName,\r\n contentClassName,\r\n disabled,\r\n size = \"md\",\r\n infiniteScroll,\r\n showSearch = false,\r\n filter,\r\n ...props\r\n}: ComboboxSimpleProps) {\r\n return (\r\n <Combobox\r\n items={items}\r\n value={value}\r\n defaultValue={defaultValue}\r\n onValueChange={onValueChange}\r\n filter={filter === null || !showSearch ? null : filter}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n <ComboboxTrigger\r\n className={cn(\r\n inputVariants({ size }),\r\n \"group flex cursor-pointer items-center text-left\",\r\n comboboxSimpleTriggerPaddings[size ?? \"md\"] ?? \"gap-2 pr-3\",\r\n triggerClassName,\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <span className={cn(comboboxSimpleIconSizes[size ?? \"md\"] ?? \"size-4\", \"shrink-0 text-fg-quaternary [&_svg]:size-full\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className=\"flex-1 truncate\">\r\n <ComboboxValue>\r\n {(item) => (\r\n <span className={item ? \"text-text-primary\" : \"text-text-placeholder\"}>\r\n {item?.label ?? placeholder}\r\n </span>\r\n )}\r\n </ComboboxValue>\r\n </span>\r\n <ChevronDownIcon\r\n className={cn(\r\n comboboxSimpleIconSizes[size ?? \"md\"] ?? \"size-4\",\r\n \"shrink-0 text-fg-quaternary transition-transform group-data-[popup-open]:rotate-180\"\r\n )}\r\n />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup\r\n container={container}\r\n className={cn(\"w-72\", contentClassName)}\r\n align=\"start\"\r\n sideOffset={8}\r\n >\r\n {showSearch && (\r\n <ComboboxInput placeholder={searchPlaceholder ?? `Search ${placeholder.toLowerCase()}...`} />\r\n )}\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : items.length === 0\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {items?.map((item) => (\r\n <ComboboxItem key={item.value} value={item}>\r\n <ComboboxItemTitle>\r\n {item.label}\r\n </ComboboxItemTitle>\r\n </ComboboxItem>\r\n ))}\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { ComboboxSimple }\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$2}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$2}from'./chunk-FIDOWSDH.js';import {a,b,c}from'./chunk-NGSCUYDU.js';import {b as b$1}from'./chunk-DQGZIFNP.js';import {a as a$1}from'./chunk-T7HRX3EC.js';import*as t from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function E({className:h,value:x,onValueChange:o,defaultValue:y,required:n,disabled:i,placeholder:v="Pick a date",disabledDates:P,dateFormat:C="LLL dd, y",...D}){let k=t.useCallback(e=>{n?e&&o?.(e):o?.(e);},[o,n]),[r,w]=useControlledState({value:x,defaultValue:y,onChange:k}),[N,M]=t.useState(r||new Date),[S,l]=t.useState(false),d=!!r;return jsxs(a,{open:i?false:S,onOpenChange:l,children:[jsx(b,{className:"w-full",render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",d&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",h),variant:null,size:null,disabled:i,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$1,{className:cn("size-4 shrink-0",d?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:r?format(r,C):v})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",d?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsx(c,{className:"w-auto border-0 rounded-[20px] p-xp-none bg-transparent",style:{background:"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)",backdropFilter:"blur(20px)",boxShadow:"0px 30px 60px 0px #0000001A"},children:jsx(a$2,{autoFocus:true,disabled:P,mode:"single",month:N,selected:r,onMonthChange:M,onSelect:e=>{n&&!e||(w(e),l(false));},...D})})]})}export{E as a};//# sourceMappingURL=chunk-NBM4LIT4.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-NBM4LIT4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/date-picker.tsx"],"names":["DatePicker","className","valueProp","onValueChange","defaultValue","required","disabled","placeholder","disabledDates","dateFormat","props","handleValueChange","val","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","hasValue","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","Calendar"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/ui/date-picker.tsx"],"names":["DatePicker","className","valueProp","onValueChange","defaultValue","required","disabled","placeholder","disabledDates","dateFormat","props","handleValueChange","val","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","hasValue","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","Calendar"],"mappings":"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","file":"chunk-NBM4LIT4.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { format } from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type Matcher } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type CalendarProps } from \"./calendar\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\n\r\nexport type DatePickerProps = {\r\n className?: string\r\n value?: Date\r\n defaultValue?: Date\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n dateFormat?: string\r\n} & ({\r\n required: true\r\n onValueChange?: (value: Date) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: Date | undefined) => void\r\n}) & Omit<CalendarProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\r\n\r\nfunction DatePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n disabledDates,\r\n dateFormat = \"LLL dd, y\",\r\n ...props\r\n}: DatePickerProps) {\r\n const handleValueChange = React.useCallback(\r\n (val: Date | undefined) => {\r\n if (required) {\r\n if (val) onValueChange?.(val)\r\n } else {\r\n onValueChange?.(val)\r\n }\r\n },\r\n [onValueChange, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<Date | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: handleValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n\r\n const hasValue = !!value\r\n\r\n return (\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n className=\"w-full\"\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {value ? format(value, dateFormat) : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className=\"w-auto border-0 rounded-[20px] p-xp-none bg-transparent\"\r\n style={{\r\n background:\r\n \"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)\",\r\n backdropFilter: \"blur(20px)\",\r\n boxShadow: \"0px 30px 60px 0px #0000001A\",\r\n }}\r\n >\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"single\"\r\n month={currentMonth}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onSelect={(val) => {\r\n if (required && !val) return\r\n setValue(val)\r\n setIsOpen(false)\r\n }}\r\n {...props}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DatePicker }\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b as b$1,c,g,e,d,f,i,j,k as k$1}from'./chunk-WYVGUIHL.js';import {b as b$2}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b as b$1,c,g,e,d,f,i,j,k as k$1}from'./chunk-WYVGUIHL.js';import {b as b$2}from'./chunk-DQGZIFNP.js';import'react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function _(r){return jsx(b$1,{...r})}function b(r){return jsx(c,{...r})}function T(r){return jsx(g,{...r})}function m({className:r,...o}){return jsx(e,{className:cn("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",r),...o})}function C({className:r,children:o,...l}){return jsxs(d,{children:[jsx(m,{}),jsx(f,{className:cn("group/alert-dialog-popup fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-md translate-x-[-50%] translate-y-[-50%] bg-bg-primary shadow-xp-lg rounded-xl overflow-hidden",r),...l,children:o})]})}function h({className:r,...o}){return jsx("div",{"data-slot":"alert-dialog-header",className:cn("px-4 py-4 grid grid-cols-[auto_1fr] items-start bg-bg-primary",r),...o})}function w({className:r,...o}){return jsx("div",{"data-slot":"alert-dialog-content",className:cn("px-4 pb-4 max-h-[60vh] overflow-y-auto",r),...o})}function k({className:r,...o}){return jsx(i,{className:cn("flex gap-2 items-center justify-end bg-bg-primary px-4 py-3 border-t border-border-tertiary shadow-[0px_-1px_24px_0px_var(--color-shadow-xs)]",r),...o})}function B({className:r,...o}){return jsx(j,{className:cn("col-start-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:row-span-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:self-center text-label-bold-2 text-text-primary",r),...o})}function F({className:r,...o}){return jsx(k$1,{className:cn("col-start-2 mt-0.5 text-body-regular-3 text-text-secondary",r),...o})}function H({className:r,variant:o="brand",...l}){return jsx("div",{"data-slot":"alert-dialog-icon","data-variant":o,className:cn("row-span-2 flex items-center justify-center rounded-lg mt-px mr-3 p-2.5 [&_svg]:size-4 text-fg-white",o==="brand"&&"bg-bg-brand-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]",o==="error"&&"bg-bg-error-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-utility-error-100)]",r),...l})}function N({color:r="destructive",variant:o="primary",...l}){return jsx(b$2,{"data-slot":"alert-dialog-action",color:r,variant:o,...l})}function R({color:r="default",variant:o="secondary",size:l,...d}){return jsx(g,{"data-slot":"alert-dialog-cancel",render:jsx(b$2,{color:r,variant:o,size:l}),...d})}export{_ as a,b,T as c,m as d,C as e,h as f,w as g,k as h,B as i,F as j,H as k,N as l,R as m};//# sourceMappingURL=chunk-OBS7TDVV.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-OBS7TDVV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/alert-dialog.tsx"],"names":["AlertDialog","props","jsx","AlertDialogTrigger","AlertDialogClose","AlertDialogBackdrop","className","cn","AlertDialogPopup","children","jsxs","AlertDialogPortal","AlertDialogHeader","AlertDialogContent","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogIcon","variant","AlertDialogAction","color","Button","AlertDialogCancel","size"],"mappings":"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","file":"chunk-ZK7MHZFG.js","sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n AlertDialog as AlertDialogPrimitive,\r\n AlertDialogTrigger as AlertDialogTriggerPrimitive,\r\n AlertDialogPortal as AlertDialogPortalPrimitive,\r\n AlertDialogBackdrop as AlertDialogBackdropPrimitive,\r\n AlertDialogPopup as AlertDialogPopupPrimitive,\r\n AlertDialogClose as AlertDialogClosePrimitive,\r\n AlertDialogFooter as AlertDialogFooterPrimitive,\r\n AlertDialogTitle as AlertDialogTitlePrimitive,\r\n AlertDialogDescription as AlertDialogDescriptionPrimitive,\r\n type AlertDialogProps as AlertDialogPrimitiveProps,\r\n type AlertDialogTriggerProps as AlertDialogTriggerPrimitiveProps,\r\n type AlertDialogPortalProps as AlertDialogPortalPrimitiveProps,\r\n type AlertDialogBackdropProps as AlertDialogBackdropPrimitiveProps,\r\n type AlertDialogPopupProps as AlertDialogPopupPrimitiveProps,\r\n type AlertDialogCloseProps as AlertDialogClosePrimitiveProps,\r\n type AlertDialogFooterProps as AlertDialogFooterPrimitiveProps,\r\n type AlertDialogTitleProps as AlertDialogTitlePrimitiveProps,\r\n type AlertDialogDescriptionProps as AlertDialogDescriptionPrimitiveProps,\r\n} from '../primitives/alert-dialog';\r\nimport { Button } from './button';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype AlertDialogProps = AlertDialogPrimitiveProps;\r\n\r\nfunction AlertDialog(props: AlertDialogProps) {\r\n return <AlertDialogPrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogTriggerProps = AlertDialogTriggerPrimitiveProps;\r\n\r\nfunction AlertDialogTrigger(props: AlertDialogTriggerProps) {\r\n return <AlertDialogTriggerPrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogCloseProps = AlertDialogClosePrimitiveProps;\r\n\r\nfunction AlertDialogClose(props: AlertDialogCloseProps) {\r\n return <AlertDialogClosePrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogBackdropProps = AlertDialogBackdropPrimitiveProps;\r\n\r\nfunction AlertDialogBackdrop({ className, ...props }: AlertDialogBackdropProps) {\r\n return (\r\n <AlertDialogBackdropPrimitive\r\n className={cn('fixed inset-0 z-50 bg-black/50 backdrop-blur-sm', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogPopupProps = AlertDialogPopupPrimitiveProps;\r\n\r\nfunction AlertDialogPopup({ className, children, ...props }: AlertDialogPopupProps) {\r\n return (\r\n <AlertDialogPortalPrimitive>\r\n <AlertDialogBackdrop />\r\n <AlertDialogPopupPrimitive\r\n className={cn(\r\n \"group/alert-dialog-popup fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-md translate-x-[-50%] translate-y-[-50%] bg-bg-primary shadow-xp-lg rounded-xl overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </AlertDialogPopupPrimitive>\r\n </AlertDialogPortalPrimitive>\r\n );\r\n}\r\n\r\ntype AlertDialogHeaderProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-header\"\r\n className={cn(\r\n \"px-4 py-4 grid grid-cols-[auto_1fr] items-start bg-bg-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogContentProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction AlertDialogContent({ className, ...props }: AlertDialogContentProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-content\"\r\n className={cn(\"px-4 pb-4 max-h-[60vh] overflow-y-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogFooterProps = AlertDialogFooterPrimitiveProps;\r\n\r\nfunction AlertDialogFooter({ className, ...props }: AlertDialogFooterProps) {\r\n return (\r\n <AlertDialogFooterPrimitive\r\n className={cn(\r\n \"flex gap-2 items-center justify-end bg-bg-primary px-4 py-3 border-t border-border-tertiary shadow-[0px_-1px_24px_0px_var(--color-shadow-xs)]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogTitleProps = AlertDialogTitlePrimitiveProps;\r\n\r\nfunction AlertDialogTitle({ className, ...props }: AlertDialogTitleProps) {\r\n return (\r\n <AlertDialogTitlePrimitive\r\n className={cn(\r\n \"col-start-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:row-span-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:self-center text-label-bold-2 text-text-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogDescriptionProps = AlertDialogDescriptionPrimitiveProps;\r\n\r\nfunction AlertDialogDescription({ className, ...props }: AlertDialogDescriptionProps) {\r\n return (\r\n <AlertDialogDescriptionPrimitive\r\n className={cn(\"col-start-2 mt-0.5 text-body-regular-3 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogIconProps = React.ComponentProps<\"div\"> & {\r\n variant?: \"brand\" | \"error\";\r\n};\r\n\r\nfunction AlertDialogIcon({\r\n className,\r\n variant = \"brand\",\r\n ...props\r\n}: AlertDialogIconProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-icon\"\r\n data-variant={variant}\r\n className={cn(\r\n \"row-span-2 flex items-center justify-center rounded-lg mt-px mr-3 p-2.5 [&_svg]:size-4 text-fg-white\",\r\n variant === \"brand\" &&\r\n \"bg-bg-brand-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]\",\r\n variant === \"error\" &&\r\n \"bg-bg-error-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-utility-error-100)]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogActionProps = React.ComponentProps<typeof Button>;\r\n\r\nfunction AlertDialogAction({\r\n color = \"destructive\",\r\n variant = \"primary\",\r\n ...props\r\n}: AlertDialogActionProps) {\r\n return (\r\n <Button\r\n data-slot=\"alert-dialog-action\"\r\n color={color}\r\n variant={variant}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogCancelProps = AlertDialogClosePrimitiveProps &\r\n Pick<React.ComponentProps<typeof Button>, \"color\" | \"variant\" | \"size\">;\r\n\r\nfunction AlertDialogCancel({\r\n color = \"default\",\r\n variant = \"secondary\",\r\n size,\r\n ...props\r\n}: AlertDialogCancelProps) {\r\n return (\r\n <AlertDialogClosePrimitive\r\n data-slot=\"alert-dialog-cancel\"\r\n render={<Button color={color} variant={variant} size={size} />}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogTrigger,\r\n AlertDialogClose,\r\n AlertDialogPopup,\r\n AlertDialogHeader,\r\n AlertDialogContent,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogIcon,\r\n AlertDialogBackdrop,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n type AlertDialogProps,\r\n type AlertDialogTriggerProps,\r\n type AlertDialogCloseProps,\r\n type AlertDialogPopupProps,\r\n type AlertDialogHeaderProps,\r\n type AlertDialogContentProps,\r\n type AlertDialogFooterProps,\r\n type AlertDialogTitleProps,\r\n type AlertDialogDescriptionProps,\r\n type AlertDialogIconProps,\r\n type AlertDialogBackdropProps,\r\n type AlertDialogActionProps,\r\n type AlertDialogCancelProps,\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/alert-dialog.tsx"],"names":["AlertDialog","props","jsx","AlertDialogTrigger","AlertDialogClose","AlertDialogBackdrop","className","cn","AlertDialogPopup","children","jsxs","AlertDialogPortal","AlertDialogHeader","AlertDialogContent","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogIcon","variant","AlertDialogAction","color","Button","AlertDialogCancel","size"],"mappings":"qMA2BA,SAASA,CAAAA,CAAYC,CAAAA,CAAyB,CAC5C,OAAOC,GAAAA,CAACF,GAAAA,CAAA,CAAsB,GAAGC,EAAO,CAC1C,CAIA,SAASE,CAAAA,CAAmBF,EAAgC,CAC1D,OAAOC,GAAAA,CAACC,CAAAA,CAAA,CAA6B,GAAGF,CAAAA,CAAO,CACjD,CAIA,SAASG,CAAAA,CAAiBH,CAAAA,CAA8B,CACtD,OAAOC,GAAAA,CAACE,CAAAA,CAAA,CAA2B,GAAGH,EAAO,CAC/C,CAIA,SAASI,CAAAA,CAAoB,CAAE,SAAA,CAAAC,CAAAA,CAAW,GAAGL,CAAM,EAA6B,CAC9E,OACEC,GAAAA,CAACG,CAAAA,CAAA,CACC,SAAA,CAAWE,EAAAA,CAAG,iDAAA,CAAmDD,CAAS,EACzE,GAAGL,CAAAA,CACN,CAEJ,CAIA,SAASO,CAAAA,CAAiB,CAAE,SAAA,CAAAF,CAAAA,CAAW,SAAAG,CAAAA,CAAU,GAAGR,CAAM,CAAA,CAA0B,CAClF,OACES,IAAAA,CAACC,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAT,GAAAA,CAACG,CAAAA,CAAA,EAAoB,EACrBH,GAAAA,CAACM,CAAAA,CAAA,CACC,SAAA,CAAWD,GACT,wLAAA,CACAD,CACF,CAAA,CACC,GAAGL,EAEH,QAAA,CAAAQ,CAAAA,CACH,CAAA,CAAA,CACF,CAEJ,CAIA,SAASG,CAAAA,CAAkB,CAAE,SAAA,CAAAN,EAAW,GAAGL,CAAM,CAAA,CAA2B,CAC1E,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,qBAAA,CACV,UAAWK,EAAAA,CACT,+DAAA,CACAD,CACF,CAAA,CACC,GAAGL,CAAAA,CACN,CAEJ,CAIA,SAASY,EAAmB,CAAE,SAAA,CAAAP,CAAAA,CAAW,GAAGL,CAAM,CAAA,CAA4B,CAC5E,OACEC,GAAAA,CAAC,OACC,WAAA,CAAU,sBAAA,CACV,SAAA,CAAWK,EAAAA,CAAG,yCAA0CD,CAAS,CAAA,CAChE,GAAGL,CAAAA,CACN,CAEJ,CAIA,SAASa,CAAAA,CAAkB,CAAE,UAAAR,CAAAA,CAAW,GAAGL,CAAM,CAAA,CAA2B,CAC1E,OACEC,GAAAA,CAACY,CAAAA,CAAA,CACC,SAAA,CAAWP,EAAAA,CACT,+IAAA,CACAD,CACF,EACC,GAAGL,CAAAA,CACN,CAEJ,CAIA,SAASc,CAAAA,CAAiB,CAAE,SAAA,CAAAT,CAAAA,CAAW,GAAGL,CAAM,CAAA,CAA0B,CACxE,OACEC,IAACa,CAAAA,CAAA,CACC,SAAA,CAAWR,EAAAA,CACT,qLACAD,CACF,CAAA,CACC,GAAGL,CAAAA,CACN,CAEJ,CAIA,SAASe,CAAAA,CAAuB,CAAE,SAAA,CAAAV,CAAAA,CAAW,GAAGL,CAAM,EAAgC,CACpF,OACEC,GAAAA,CAACc,GAAAA,CAAA,CACC,SAAA,CAAWT,EAAAA,CAAG,4DAAA,CAA8DD,CAAS,EACpF,GAAGL,CAAAA,CACN,CAEJ,CAMA,SAASgB,CAAAA,CAAgB,CACvB,SAAA,CAAAX,CAAAA,CACA,QAAAY,CAAAA,CAAU,OAAA,CACV,GAAGjB,CACL,EAAyB,CACvB,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,YAAU,mBAAA,CACV,cAAA,CAAcgB,CAAAA,CACd,SAAA,CAAWX,EAAAA,CACT,sGAAA,CACAW,CAAAA,GAAY,OAAA,EACZ,oKACAA,CAAAA,GAAY,OAAA,EACZ,gKAAA,CACAZ,CACF,EACC,GAAGL,CAAAA,CACN,CAEJ,CAIA,SAASkB,CAAAA,CAAkB,CACzB,KAAA,CAAAC,CAAAA,CAAQ,cACR,OAAA,CAAAF,CAAAA,CAAU,SAAA,CACV,GAAGjB,CACL,CAAA,CAA2B,CACzB,OACEC,GAAAA,CAACmB,IAAA,CACC,WAAA,CAAU,qBAAA,CACV,KAAA,CAAOD,EACP,OAAA,CAASF,CAAAA,CACR,GAAGjB,CAAAA,CACN,CAEJ,CAKA,SAASqB,CAAAA,CAAkB,CACzB,MAAAF,CAAAA,CAAQ,SAAA,CACR,OAAA,CAAAF,CAAAA,CAAU,YACV,IAAA,CAAAK,CAAAA,CACA,GAAGtB,CACL,EAA2B,CACzB,OACEC,GAAAA,CAACE,CAAAA,CAAA,CACC,WAAA,CAAU,qBAAA,CACV,MAAA,CAAQF,GAAAA,CAACmB,IAAA,CAAO,KAAA,CAAOD,CAAAA,CAAO,OAAA,CAASF,EAAS,IAAA,CAAMK,CAAAA,CAAM,CAAA,CAC3D,GAAGtB,EACN,CAEJ","file":"chunk-OBS7TDVV.js","sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n AlertDialog as AlertDialogPrimitive,\r\n AlertDialogTrigger as AlertDialogTriggerPrimitive,\r\n AlertDialogPortal as AlertDialogPortalPrimitive,\r\n AlertDialogBackdrop as AlertDialogBackdropPrimitive,\r\n AlertDialogPopup as AlertDialogPopupPrimitive,\r\n AlertDialogClose as AlertDialogClosePrimitive,\r\n AlertDialogFooter as AlertDialogFooterPrimitive,\r\n AlertDialogTitle as AlertDialogTitlePrimitive,\r\n AlertDialogDescription as AlertDialogDescriptionPrimitive,\r\n type AlertDialogProps as AlertDialogPrimitiveProps,\r\n type AlertDialogTriggerProps as AlertDialogTriggerPrimitiveProps,\r\n type AlertDialogPortalProps as AlertDialogPortalPrimitiveProps,\r\n type AlertDialogBackdropProps as AlertDialogBackdropPrimitiveProps,\r\n type AlertDialogPopupProps as AlertDialogPopupPrimitiveProps,\r\n type AlertDialogCloseProps as AlertDialogClosePrimitiveProps,\r\n type AlertDialogFooterProps as AlertDialogFooterPrimitiveProps,\r\n type AlertDialogTitleProps as AlertDialogTitlePrimitiveProps,\r\n type AlertDialogDescriptionProps as AlertDialogDescriptionPrimitiveProps,\r\n} from '../primitives/alert-dialog';\r\nimport { Button } from './button';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype AlertDialogProps = AlertDialogPrimitiveProps;\r\n\r\nfunction AlertDialog(props: AlertDialogProps) {\r\n return <AlertDialogPrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogTriggerProps = AlertDialogTriggerPrimitiveProps;\r\n\r\nfunction AlertDialogTrigger(props: AlertDialogTriggerProps) {\r\n return <AlertDialogTriggerPrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogCloseProps = AlertDialogClosePrimitiveProps;\r\n\r\nfunction AlertDialogClose(props: AlertDialogCloseProps) {\r\n return <AlertDialogClosePrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogBackdropProps = AlertDialogBackdropPrimitiveProps;\r\n\r\nfunction AlertDialogBackdrop({ className, ...props }: AlertDialogBackdropProps) {\r\n return (\r\n <AlertDialogBackdropPrimitive\r\n className={cn('fixed inset-0 z-50 bg-black/50 backdrop-blur-sm', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogPopupProps = AlertDialogPopupPrimitiveProps;\r\n\r\nfunction AlertDialogPopup({ className, children, ...props }: AlertDialogPopupProps) {\r\n return (\r\n <AlertDialogPortalPrimitive>\r\n <AlertDialogBackdrop />\r\n <AlertDialogPopupPrimitive\r\n className={cn(\r\n \"group/alert-dialog-popup fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-md translate-x-[-50%] translate-y-[-50%] bg-bg-primary shadow-xp-lg rounded-xl overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </AlertDialogPopupPrimitive>\r\n </AlertDialogPortalPrimitive>\r\n );\r\n}\r\n\r\ntype AlertDialogHeaderProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-header\"\r\n className={cn(\r\n \"px-4 py-4 grid grid-cols-[auto_1fr] items-start bg-bg-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogContentProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction AlertDialogContent({ className, ...props }: AlertDialogContentProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-content\"\r\n className={cn(\"px-4 pb-4 max-h-[60vh] overflow-y-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogFooterProps = AlertDialogFooterPrimitiveProps;\r\n\r\nfunction AlertDialogFooter({ className, ...props }: AlertDialogFooterProps) {\r\n return (\r\n <AlertDialogFooterPrimitive\r\n className={cn(\r\n \"flex gap-2 items-center justify-end bg-bg-primary px-4 py-3 border-t border-border-tertiary shadow-[0px_-1px_24px_0px_var(--color-shadow-xs)]\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogTitleProps = AlertDialogTitlePrimitiveProps;\r\n\r\nfunction AlertDialogTitle({ className, ...props }: AlertDialogTitleProps) {\r\n return (\r\n <AlertDialogTitlePrimitive\r\n className={cn(\r\n \"col-start-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:row-span-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:self-center text-label-bold-2 text-text-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogDescriptionProps = AlertDialogDescriptionPrimitiveProps;\r\n\r\nfunction AlertDialogDescription({ className, ...props }: AlertDialogDescriptionProps) {\r\n return (\r\n <AlertDialogDescriptionPrimitive\r\n className={cn(\"col-start-2 mt-0.5 text-body-regular-3 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogIconProps = React.ComponentProps<\"div\"> & {\r\n variant?: \"brand\" | \"error\";\r\n};\r\n\r\nfunction AlertDialogIcon({\r\n className,\r\n variant = \"brand\",\r\n ...props\r\n}: AlertDialogIconProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-icon\"\r\n data-variant={variant}\r\n className={cn(\r\n \"row-span-2 flex items-center justify-center rounded-lg mt-px mr-3 p-2.5 [&_svg]:size-4 text-fg-white\",\r\n variant === \"brand\" &&\r\n \"bg-bg-brand-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]\",\r\n variant === \"error\" &&\r\n \"bg-bg-error-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-utility-error-100)]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogActionProps = React.ComponentProps<typeof Button>;\r\n\r\nfunction AlertDialogAction({\r\n color = \"destructive\",\r\n variant = \"primary\",\r\n ...props\r\n}: AlertDialogActionProps) {\r\n return (\r\n <Button\r\n data-slot=\"alert-dialog-action\"\r\n color={color}\r\n variant={variant}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogCancelProps = AlertDialogClosePrimitiveProps &\r\n Pick<React.ComponentProps<typeof Button>, \"color\" | \"variant\" | \"size\">;\r\n\r\nfunction AlertDialogCancel({\r\n color = \"default\",\r\n variant = \"secondary\",\r\n size,\r\n ...props\r\n}: AlertDialogCancelProps) {\r\n return (\r\n <AlertDialogClosePrimitive\r\n data-slot=\"alert-dialog-cancel\"\r\n render={<Button color={color} variant={variant} size={size} />}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogTrigger,\r\n AlertDialogClose,\r\n AlertDialogPopup,\r\n AlertDialogHeader,\r\n AlertDialogContent,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogIcon,\r\n AlertDialogBackdrop,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n type AlertDialogProps,\r\n type AlertDialogTriggerProps,\r\n type AlertDialogCloseProps,\r\n type AlertDialogPopupProps,\r\n type AlertDialogHeaderProps,\r\n type AlertDialogContentProps,\r\n type AlertDialogFooterProps,\r\n type AlertDialogTitleProps,\r\n type AlertDialogDescriptionProps,\r\n type AlertDialogIconProps,\r\n type AlertDialogBackdropProps,\r\n type AlertDialogActionProps,\r\n type AlertDialogCancelProps,\r\n};\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$2}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$2}from'./chunk-FIDOWSDH.js';import {a,b,c}from'./chunk-NGSCUYDU.js';import {b as b$1}from'./chunk-DQGZIFNP.js';import {a as a$1}from'./chunk-T7HRX3EC.js';import u from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format,endOfWeek,startOfWeek,endOfMonth,startOfMonth,subMonths,endOfYear,startOfYear,subYears}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';var N=[{label:"Today",value:"today",getDateRange:()=>{let e=new Date;return {from:e,to:e}}},{value:"last-7-days",label:"Last 7 days",getDateRange:()=>({from:new Date(Date.now()-8640*60*1e3),to:new Date})},{label:"This Week",value:"this-week",getDateRange:()=>{let e=new Date;return {from:startOfWeek(e,{weekStartsOn:1}),to:endOfWeek(e,{weekStartsOn:1})}}},{label:"This Month",value:"this-month",getDateRange:()=>{let e=new Date;return {from:startOfMonth(e),to:endOfMonth(e)}}},{label:"Last 3 Months",value:"last-3-months",getDateRange:()=>{let e=new Date;return {from:subMonths(e,3),to:e}}},{label:"Last 6 Months",value:"last-6-months",getDateRange:()=>{let e=new Date;return {from:subMonths(e,6),to:e}}},{label:"This Year",value:"this-year",getDateRange:()=>{let e=new Date;return {from:startOfYear(e),to:endOfYear(e)}}},{label:"Last Year",value:"last-year",getDateRange:()=>{let e=subYears(new Date,1);return {from:startOfYear(e),to:endOfYear(e)}}},{label:"Custom Range",value:"custom-range",getDateRange:()=>{}}];function ne({className:e,value:P,onValueChange:p,defaultValue:V,required:d,disabled:b$2,placeholder:S="Pick a date",options:D=true,disabledDates:Y}){let T=u.useCallback(t=>{p?.(t);},[p,d]),[a$3,v]=useControlledState({value:P,defaultValue:V,onChange:T}),[q,h]=u.useState(a$3?.from||new Date),[z,B]=u.useState(false),[F,y]=u.useState("days"),f=!!a$3?.from,s=(t,n)=>!t||!n?false:t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate(),W=t=>{if(!a$3?.from||!a$3?.to)return false;if(t.value==="custom-range")return N.every(o=>{if(o.value==="custom-range")return true;let l=o.getDateRange();return !l?.from||!l?.to?true:!(s(a$3.from,l.from)&&s(a$3.to,l.to))});let n=t.getDateRange();return !n?.from||!n?.to?false:s(a$3.from,n.from)&&s(a$3.to,n.to)};return jsxs(a,{open:b$2?false:z,onOpenChange:B,children:[jsx(b,{render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",f&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",e),variant:null,size:null,disabled:b$2,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$1,{className:cn("size-4 shrink-0",f?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:a$3?.from?a$3.to?`${format(a$3.from,"LLL dd, y")} - ${format(a$3.to,"LLL dd, y")}`:format(a$3.from,"LLL dd, y"):S})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",f?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsxs(c,{className:cn("w-auto border-0",D?"rounded-2xl p-xp-lg flex gap-6":"p-xp-none bg-transparent"),children:[D&&jsx("div",{className:"flex flex-col gap-xp-md w-[135px]",children:N.map(t=>{let n=W(t);return jsx(b$1,{className:"justify-start px-xp-xl",variant:n?"tertiary-accent":null,onClick:()=>{let o=t.getDateRange();o&&(v(o),y("days"),h(o.from));},children:t.label},t.value)})}),jsx(a$2,{autoFocus:true,disabled:Y,mode:"range",month:q,navView:F,numberOfMonths:2,selected:a$3,onMonthChange:h,onNavViewChange:y,onSelect:t=>{d&&!t||v(t);}})]})]})}export{ne as a};//# sourceMappingURL=chunk-QIP6KFG2.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-QIP6KFG2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/date-range-picker.tsx"],"names":["dateRangeOptions","t","now","startOfWeek","endOfWeek","startOfMonth","endOfMonth","subMonths","startOfYear","endOfYear","ly","subYears","DateRangePicker","className","valueProp","onValueChangeProp","defaultValue","required","disabled","placeholder","options","disabledDates","onValueChange","React","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","navView","setNavView","hasValue","isSameDay","date1","date2","isOptionActive","option","opt","optRange","optionRange","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","active","dateRange","Calendar","val"],"mappings":"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","file":"chunk-C675EWZW.js","sourcesContent":["\"use client\"\r\n\r\nimport React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport {\r\n endOfMonth,\r\n endOfWeek,\r\n endOfYear,\r\n format,\r\n startOfMonth,\r\n startOfWeek,\r\n startOfYear,\r\n subMonths,\r\n subYears,\r\n} from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type DateRange, type Matcher } from \"react-day-picker\"\r\n\r\nexport type { DateRange }\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type NavView } from \"./calendar\"\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\n\r\nexport type DateRangePickerProps = {\r\n className?: string\r\n value?: DateRange\r\n defaultValue?: DateRange\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n options?: boolean\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n} & ({\r\n required: true\r\n onValueChange?: (value: DateRange) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: DateRange | undefined) => void\r\n})\r\n\r\ntype DateRangeOption = {\r\n label: string\r\n value: string\r\n getDateRange: () => DateRange | undefined\r\n}\r\n\r\nconst dateRangeOptions: DateRangeOption[] = [\r\n {\r\n label: \"Today\",\r\n value: \"today\",\r\n getDateRange: () => { const t = new Date(); return { from: t, to: t } },\r\n },\r\n {\r\n value: \"last-7-days\",\r\n label: \"Last 7 days\",\r\n getDateRange: () => ({\r\n from: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000), // 6 days in milliseconds\r\n to: new Date(),\r\n }),\r\n },\r\n {\r\n label: \"This Week\",\r\n value: \"this-week\",\r\n getDateRange: () => {\r\n const now = new Date()\r\n return { from: startOfWeek(now, { weekStartsOn: 1 }), to: endOfWeek(now, { weekStartsOn: 1 }) }\r\n },\r\n },\r\n {\r\n label: \"This Month\",\r\n value: \"this-month\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfMonth(now), to: endOfMonth(now) } },\r\n },\r\n {\r\n label: \"Last 3 Months\",\r\n value: \"last-3-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 3), to: now } },\r\n },\r\n {\r\n label: \"Last 6 Months\",\r\n value: \"last-6-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 6), to: now } },\r\n },\r\n {\r\n label: \"This Year\",\r\n value: \"this-year\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfYear(now), to: endOfYear(now) } },\r\n },\r\n {\r\n label: \"Last Year\",\r\n value: \"last-year\",\r\n getDateRange: () => { const ly = subYears(new Date(), 1); return { from: startOfYear(ly), to: endOfYear(ly) } },\r\n },\r\n {\r\n label: \"Custom Range\",\r\n value: \"custom-range\",\r\n getDateRange: () => undefined,\r\n },\r\n]\r\n\r\nfunction DateRangePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange: onValueChangeProp,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n options = true,\r\n disabledDates,\r\n}: DateRangePickerProps) {\r\n const onValueChange = React.useCallback(\r\n (value: DateRange | undefined) => {\r\n if (required) onValueChangeProp?.(value as DateRange)\r\n else onValueChangeProp?.(value)\r\n },\r\n [onValueChangeProp, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<DateRange | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value?.from || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [navView, setNavView] = React.useState<NavView>(\"days\")\r\n\r\n const hasValue = !!value?.from\r\n\r\n const isSameDay = (date1?: Date, date2?: Date): boolean => {\r\n if (!date1 || !date2) return false\r\n return (\r\n date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate()\r\n )\r\n }\r\n\r\n const isOptionActive = (option: DateRangeOption): boolean => {\r\n if (!value?.from || !value?.to) return false\r\n if (option.value === \"custom-range\") {\r\n return dateRangeOptions.every((opt) => {\r\n if (opt.value === \"custom-range\") return true\r\n const optRange = opt.getDateRange()\r\n if (!optRange?.from || !optRange?.to) return true\r\n return !(isSameDay(value.from, optRange.from) && isSameDay(value.to, optRange.to))\r\n })\r\n }\r\n const optionRange = option.getDateRange()\r\n if (!optionRange?.from || !optionRange?.to) return false\r\n return isSameDay(value.from, optionRange.from) && isSameDay(value.to, optionRange.to)\r\n }\r\n\r\n return (\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {value?.from\r\n ? value.to\r\n ? `${format(value.from, \"LLL dd, y\")} - ${format(value.to, \"LLL dd, y\")}`\r\n : format(value.from, \"LLL dd, y\")\r\n : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className={cn(\r\n \"w-auto border-0\",\r\n options ? \"rounded-2xl p-xp-lg flex gap-6\" : \"p-xp-none bg-transparent\",\r\n )}\r\n >\r\n {options && (\r\n <div className=\"flex flex-col gap-xp-md w-[135px]\">\r\n {dateRangeOptions.map((option) => {\r\n const active = isOptionActive(option)\r\n return (\r\n <Button\r\n key={option.value}\r\n className=\"justify-start px-xp-xl\"\r\n variant={active ? \"tertiary-accent\" : null}\r\n onClick={() => {\r\n const dateRange = option.getDateRange()\r\n if (dateRange) {\r\n setValue(dateRange)\r\n setNavView(\"days\")\r\n setCurrentMonth(dateRange.from)\r\n }\r\n }}\r\n >\r\n {option.label}\r\n </Button>\r\n )\r\n })}\r\n </div>\r\n )}\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"range\"\r\n month={currentMonth}\r\n navView={navView}\r\n numberOfMonths={2}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onNavViewChange={setNavView}\r\n onSelect={(val) => {\r\n if (required && !val) return\r\n setValue(val)\r\n }}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DateRangePicker }\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/date-range-picker.tsx"],"names":["dateRangeOptions","t","now","startOfWeek","endOfWeek","startOfMonth","endOfMonth","subMonths","startOfYear","endOfYear","ly","subYears","DateRangePicker","className","valueProp","onValueChangeProp","defaultValue","required","disabled","placeholder","options","disabledDates","onValueChange","React","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","navView","setNavView","hasValue","isSameDay","date1","date2","isOptionActive","option","opt","optRange","optionRange","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","active","dateRange","Calendar","val"],"mappings":"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","file":"chunk-QIP6KFG2.js","sourcesContent":["\"use client\"\r\n\r\nimport React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport {\r\n endOfMonth,\r\n endOfWeek,\r\n endOfYear,\r\n format,\r\n startOfMonth,\r\n startOfWeek,\r\n startOfYear,\r\n subMonths,\r\n subYears,\r\n} from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type DateRange, type Matcher } from \"react-day-picker\"\r\n\r\nexport type { DateRange }\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type NavView } from \"./calendar\"\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\n\r\nexport type DateRangePickerProps = {\r\n className?: string\r\n value?: DateRange\r\n defaultValue?: DateRange\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n options?: boolean\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n} & ({\r\n required: true\r\n onValueChange?: (value: DateRange) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: DateRange | undefined) => void\r\n})\r\n\r\ntype DateRangeOption = {\r\n label: string\r\n value: string\r\n getDateRange: () => DateRange | undefined\r\n}\r\n\r\nconst dateRangeOptions: DateRangeOption[] = [\r\n {\r\n label: \"Today\",\r\n value: \"today\",\r\n getDateRange: () => { const t = new Date(); return { from: t, to: t } },\r\n },\r\n {\r\n value: \"last-7-days\",\r\n label: \"Last 7 days\",\r\n getDateRange: () => ({\r\n from: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000), // 6 days in milliseconds\r\n to: new Date(),\r\n }),\r\n },\r\n {\r\n label: \"This Week\",\r\n value: \"this-week\",\r\n getDateRange: () => {\r\n const now = new Date()\r\n return { from: startOfWeek(now, { weekStartsOn: 1 }), to: endOfWeek(now, { weekStartsOn: 1 }) }\r\n },\r\n },\r\n {\r\n label: \"This Month\",\r\n value: \"this-month\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfMonth(now), to: endOfMonth(now) } },\r\n },\r\n {\r\n label: \"Last 3 Months\",\r\n value: \"last-3-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 3), to: now } },\r\n },\r\n {\r\n label: \"Last 6 Months\",\r\n value: \"last-6-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 6), to: now } },\r\n },\r\n {\r\n label: \"This Year\",\r\n value: \"this-year\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfYear(now), to: endOfYear(now) } },\r\n },\r\n {\r\n label: \"Last Year\",\r\n value: \"last-year\",\r\n getDateRange: () => { const ly = subYears(new Date(), 1); return { from: startOfYear(ly), to: endOfYear(ly) } },\r\n },\r\n {\r\n label: \"Custom Range\",\r\n value: \"custom-range\",\r\n getDateRange: () => undefined,\r\n },\r\n]\r\n\r\nfunction DateRangePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange: onValueChangeProp,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n options = true,\r\n disabledDates,\r\n}: DateRangePickerProps) {\r\n const onValueChange = React.useCallback(\r\n (value: DateRange | undefined) => {\r\n if (required) onValueChangeProp?.(value as DateRange)\r\n else onValueChangeProp?.(value)\r\n },\r\n [onValueChangeProp, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<DateRange | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value?.from || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [navView, setNavView] = React.useState<NavView>(\"days\")\r\n\r\n const hasValue = !!value?.from\r\n\r\n const isSameDay = (date1?: Date, date2?: Date): boolean => {\r\n if (!date1 || !date2) return false\r\n return (\r\n date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate()\r\n )\r\n }\r\n\r\n const isOptionActive = (option: DateRangeOption): boolean => {\r\n if (!value?.from || !value?.to) return false\r\n if (option.value === \"custom-range\") {\r\n return dateRangeOptions.every((opt) => {\r\n if (opt.value === \"custom-range\") return true\r\n const optRange = opt.getDateRange()\r\n if (!optRange?.from || !optRange?.to) return true\r\n return !(isSameDay(value.from, optRange.from) && isSameDay(value.to, optRange.to))\r\n })\r\n }\r\n const optionRange = option.getDateRange()\r\n if (!optionRange?.from || !optionRange?.to) return false\r\n return isSameDay(value.from, optionRange.from) && isSameDay(value.to, optionRange.to)\r\n }\r\n\r\n return (\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {value?.from\r\n ? value.to\r\n ? `${format(value.from, \"LLL dd, y\")} - ${format(value.to, \"LLL dd, y\")}`\r\n : format(value.from, \"LLL dd, y\")\r\n : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className={cn(\r\n \"w-auto border-0\",\r\n options ? \"rounded-2xl p-xp-lg flex gap-6\" : \"p-xp-none bg-transparent\",\r\n )}\r\n >\r\n {options && (\r\n <div className=\"flex flex-col gap-xp-md w-[135px]\">\r\n {dateRangeOptions.map((option) => {\r\n const active = isOptionActive(option)\r\n return (\r\n <Button\r\n key={option.value}\r\n className=\"justify-start px-xp-xl\"\r\n variant={active ? \"tertiary-accent\" : null}\r\n onClick={() => {\r\n const dateRange = option.getDateRange()\r\n if (dateRange) {\r\n setValue(dateRange)\r\n setNavView(\"days\")\r\n setCurrentMonth(dateRange.from)\r\n }\r\n }}\r\n >\r\n {option.label}\r\n </Button>\r\n )\r\n })}\r\n </div>\r\n )}\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"range\"\r\n month={currentMonth}\r\n navView={navView}\r\n numberOfMonths={2}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onNavViewChange={setNavView}\r\n onSelect={(val) => {\r\n if (required && !val) return\r\n setValue(val)\r\n }}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DateRangePicker }\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$1,e,f,k,i,j,g,h as h$1,m,l}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$1,e,f,k,i,j,g,h as h$1,m,l}from'./chunk-OBS7TDVV.js';import*as r from'react';import {X}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';var b={isOpen:false,config:{title:"",confirmText:"OK",cancelText:"Cancel",denyText:"Deny",variant:"default",showCancel:false,showDeny:false,showCloseButton:false,position:"center",textAlign:"left",footerLayout:"row",className:""},resolver:null},a=null,R={add:t=>{if(!a){console.warn("AlertDialog: Alerter component not mounted");return}a({isOpen:true,config:{confirmText:"OK",cancelText:"Cancel",denyText:"Deny",variant:"default",showCancel:false,showDeny:false,showCloseButton:false,position:"center",textAlign:"left",footerLayout:"row",className:"",...t},resolver:null});},confirm:t=>new Promise(o=>{if(!a){console.warn("AlertDialog: Alerter component not mounted"),o("cancel");return}a({isOpen:true,config:{confirmText:"Confirm",cancelText:"Cancel",denyText:"Deny",variant:"default",showCancel:true,showDeny:false,showCloseButton:false,position:"center",textAlign:"left",footerLayout:"row",className:"",...t},resolver:o});})},h=(t="center")=>({"top-start":"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:left-4 sm:right-auto sm:translate-x-0 sm:translate-y-0","top-center":"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:left-1/2 sm:-translate-x-1/2 sm:translate-y-0","top-end":"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:right-4 sm:left-auto sm:translate-x-0 sm:translate-y-0","bottom-start":"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:left-4 sm:right-auto sm:translate-x-0 sm:translate-y-0","bottom-center":"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:left-1/2 sm:-translate-x-1/2 sm:translate-y-0","bottom-end":"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:right-4 sm:left-auto sm:translate-x-0 sm:translate-y-0",center:"sm:top-1/2 sm:left-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2"})[t];function T(){let[t,o]=r.useState(b);r.useEffect(()=>(a=o,()=>{a=null;}),[]);let x=async()=>{t.config.onConfirm&&await t.config.onConfirm(),t.resolver&&t.resolver("confirm"),o(n=>({...n,isOpen:false,resolver:null}));},C=async()=>{t.config.onDeny&&await t.config.onDeny(),t.resolver&&t.resolver("deny"),o(n=>({...n,isOpen:false,resolver:null}));},i$1=()=>{t.config.onCancel&&t.config.onCancel(),t.resolver&&t.resolver("cancel"),o(n=>({...n,isOpen:false,resolver:null}));};return jsx(a$1,{open:t.isOpen,onOpenChange:n=>{n||i$1();},children:jsxs(e,{className:cn(h(t.config.position),t.config.className),children:[t.config.showCloseButton&&jsxs("button",{type:"button","aria-label":t.config.closeAriaLabel||"Close",className:"absolute right-3.5 top-3.5 rounded-xp-card-base-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground z-10",onClick:i$1,children:[jsx(X,{className:"h-4 w-4"}),jsx("span",{className:"sr-only",children:t.config.closeAriaLabel||"Close"})]}),jsxs(f,{className:cn(t.config.textAlign==="center"?"items-center text-center grid-cols-1":t.config.textAlign==="right"?"items-end text-right":"items-start text-left"),children:[t.config.icon&&jsx(k,{variant:t.config.variant==="destructive"?"error":"brand",children:t.config.icon}),jsx(i,{children:t.config.title}),t.config.description&&jsx(j,{children:t.config.description})]}),t.config.additionalContents&&jsx(g,{children:t.config.additionalContents}),jsxs(h$1,{className:cn(t.config.footerLayout==="col"?"sm:flex-col flex-col gap-2 items-stretch":"flex-row justify-end gap-2 items-center"),children:[t.config.showCancel&&jsx(m,{className:t.config.footerLayout==="col"?"w-full":void 0,onClick:i$1,...t.config.cancelButtonProps,children:t.config.cancelText}),t.config.showDeny&&jsx(l,{className:t.config.footerLayout==="col"?"w-full":void 0,onClick:C,color:t.config.denyButtonProps?.color||"destructive",variant:t.config.denyButtonProps?.variant||"secondary",...t.config.denyButtonProps,children:t.config.denyText}),jsx(l,{className:t.config.footerLayout==="col"?"w-full":void 0,onClick:x,color:t.config.confirmButtonProps?.color||(t.config.variant==="destructive"?"destructive":"default"),variant:t.config.confirmButtonProps?.variant||"primary",...t.config.confirmButtonProps,children:t.config.confirmText})]})]})})}export{R as a,T as b};//# sourceMappingURL=chunk-S4L5WILL.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-S4L5WILL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/alerter.tsx"],"names":["globalAlertState","globalSetState","alert","options","resolve","getPositionClasses","position","Alerter","state","setState","handleConfirm","prev","handleDeny","handleCancel","jsx","AlertDialog","open","jsxs","AlertDialogPopup","cn","X","AlertDialogHeader","AlertDialogIcon","AlertDialogTitle","AlertDialogDescription","AlertDialogContent","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"mappings":"mMAgEA,IAAMA,CAAAA,CAA+B,CACnC,MAAA,CAAQ,KAAA,CACR,MAAA,CAAQ,CACN,KAAA,CAAO,EAAA,CACP,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,SACZ,QAAA,CAAU,MAAA,CACV,OAAA,CAAS,SAAA,CACT,UAAA,CAAY,KAAA,CACZ,QAAA,CAAU,KAAA,CACV,eAAA,CAAiB,KAAA,CACjB,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,YAAA,CAAc,KAAA,CACd,UAAW,EACb,CAAA,CACA,QAAA,CAAU,IACZ,CAAA,CAEIC,CAAAA,CAA0E,IAAA,CAGjEC,CAAAA,CAAQ,CACnB,GAAA,CAAMC,CAAAA,EAA0B,CAC9B,GAAI,CAACF,CAAAA,CAAgB,CACnB,QAAQ,IAAA,CAAK,4CAA4C,CAAA,CACzD,MACF,CAEAA,CAAAA,CAAe,CACb,MAAA,CAAQ,IAAA,CACR,MAAA,CAAQ,CACN,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,QAAA,CACZ,QAAA,CAAU,OACV,OAAA,CAAS,SAAA,CACT,UAAA,CAAY,KAAA,CACZ,QAAA,CAAU,KAAA,CACV,eAAA,CAAiB,KAAA,CACjB,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,YAAA,CAAc,KAAA,CACd,SAAA,CAAW,EAAA,CACX,GAAGE,CACL,CAAA,CACA,QAAA,CAAU,IACZ,CAAC,EACH,CAAA,CAEA,OAAA,CAAUA,CAAAA,EACD,IAAI,OAAA,CAASC,CAAAA,EAAY,CAC9B,GAAI,CAACH,CAAAA,CAAgB,CACnB,OAAA,CAAQ,IAAA,CAAK,4CAA4C,CAAA,CACzDG,CAAAA,CAAQ,QAAQ,CAAA,CAChB,MACF,CAEAH,CAAAA,CAAe,CACb,MAAA,CAAQ,IAAA,CACR,MAAA,CAAQ,CACN,WAAA,CAAa,UACb,UAAA,CAAY,QAAA,CACZ,QAAA,CAAU,MAAA,CACV,OAAA,CAAS,SAAA,CACT,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,KAAA,CACV,eAAA,CAAiB,KAAA,CACjB,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,YAAA,CAAc,KAAA,CACd,SAAA,CAAW,EAAA,CACX,GAAGE,CACL,CAAA,CACA,QAAA,CAAUC,CACZ,CAAC,EACH,CAAC,CAEL,CAAA,CAEMC,CAAAA,CAAqB,CAACC,EAA0B,QAAA,GAAA,CACH,CAC/C,WAAA,CACE,0GAAA,CACF,YAAA,CACE,iGAAA,CACF,SAAA,CACE,0GAAA,CACF,cAAA,CACE,4HAAA,CACF,eAAA,CACE,mHAAA,CACF,YAAA,CACE,4HAAA,CACF,MAAA,CAAQ,gEACV,GACiBA,CAAQ,EAIpB,SAASC,CAAAA,EAAU,CACxB,GAAM,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAU,CAAA,CAAA,QAAA,CAAqBT,CAAgB,CAAA,CAE/D,CAAA,CAAA,SAAA,CAAU,KACdC,CAAAA,CAAiBQ,EACV,IAAM,CACXR,CAAAA,CAAiB,KACnB,CAAA,CAAA,CACC,EAAE,CAAA,CAEL,IAAMS,CAAAA,CAAgB,SAAY,CAC5BF,CAAAA,CAAM,MAAA,CAAO,SAAA,EACf,MAAMA,EAAM,MAAA,CAAO,SAAA,EAAU,CAE3BA,CAAAA,CAAM,QAAA,EACRA,CAAAA,CAAM,QAAA,CAAS,SAAS,CAAA,CAE1BC,CAAAA,CAAUE,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,MAAA,CAAQ,KAAA,CAAO,SAAU,IAAK,CAAA,CAAE,EACjE,CAAA,CAEMC,CAAAA,CAAa,SAAY,CACzBJ,CAAAA,CAAM,MAAA,CAAO,MAAA,EACf,MAAMA,CAAAA,CAAM,MAAA,CAAO,MAAA,EAAO,CAExBA,CAAAA,CAAM,UACRA,CAAAA,CAAM,QAAA,CAAS,MAAM,CAAA,CAEvBC,CAAAA,CAAUE,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,MAAA,CAAQ,KAAA,CAAO,QAAA,CAAU,IAAK,CAAA,CAAE,EACjE,CAAA,CAEME,IAAe,IAAM,CACrBL,CAAAA,CAAM,MAAA,CAAO,QAAA,EACfA,CAAAA,CAAM,MAAA,CAAO,QAAA,EAAS,CAEpBA,CAAAA,CAAM,QAAA,EACRA,CAAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,CAEzBC,CAAAA,CAAUE,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,MAAA,CAAQ,KAAA,CAAO,QAAA,CAAU,IAAK,CAAA,CAAE,EACjE,CAAA,CAEA,OACEG,GAAAA,CAACC,GAAAA,CAAA,CACC,IAAA,CAAMP,EAAM,MAAA,CACZ,YAAA,CAAeQ,CAAAA,EAAS,CACjBA,CAAAA,EAAMH,GAAAA,GACb,CAAA,CAEA,QAAA,CAAAI,IAAAA,CAACC,CAAAA,CAAA,CACC,SAAA,CAAWC,EAAAA,CACTd,CAAAA,CAAmBG,CAAAA,CAAM,OAAO,QAAQ,CAAA,CACxCA,CAAAA,CAAM,MAAA,CAAO,SACf,CAAA,CAEC,QAAA,CAAA,CAAAA,CAAAA,CAAM,MAAA,CAAO,eAAA,EACZS,IAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,YAAA,CAAYT,CAAAA,CAAM,OAAO,cAAA,EAAkB,OAAA,CAC3C,SAAA,CAAU,qSAAA,CACV,OAAA,CAASK,GAAAA,CAET,QAAA,CAAA,CAAAC,GAAAA,CAACM,CAAAA,CAAA,CAAE,SAAA,CAAU,SAAA,CAAU,CAAA,CACvBN,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,UAAW,QAAA,CAAAN,CAAAA,CAAM,MAAA,CAAO,cAAA,EAAkB,OAAA,CAAQ,CAAA,CAAA,CACpE,CAAA,CAEFS,IAAAA,CAACI,CAAAA,CAAA,CACC,SAAA,CAAWF,EAAAA,CACTX,CAAAA,CAAM,MAAA,CAAO,SAAA,GAAc,QAAA,CACvB,uCACAA,CAAAA,CAAM,MAAA,CAAO,SAAA,GAAc,OAAA,CACzB,sBAAA,CACA,uBACR,CAAA,CAEC,QAAA,CAAA,CAAAA,CAAAA,CAAM,MAAA,CAAO,IAAA,EACZM,GAAAA,CAACQ,CAAAA,CAAA,CACC,OAAA,CAASd,CAAAA,CAAM,OAAO,OAAA,GAAY,aAAA,CAAgB,OAAA,CAAU,OAAA,CAE3D,QAAA,CAAAA,CAAAA,CAAM,MAAA,CAAO,IAAA,CAChB,CAAA,CAEFM,GAAAA,CAACS,CAAAA,CAAA,CAAkB,QAAA,CAAAf,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAM,EACrCA,CAAAA,CAAM,MAAA,CAAO,WAAA,EACZM,GAAAA,CAACU,CAAAA,CAAA,CACE,QAAA,CAAAhB,CAAAA,CAAM,MAAA,CAAO,WAAA,CAChB,CAAA,CAAA,CAEJ,CAAA,CACCA,CAAAA,CAAM,MAAA,CAAO,kBAAA,EACZM,GAAAA,CAACW,EAAA,CACE,QAAA,CAAAjB,CAAAA,CAAM,MAAA,CAAO,kBAAA,CAChB,CAAA,CAEFS,IAAAA,CAACS,GAAAA,CAAA,CACC,SAAA,CAAWP,EAAAA,CACTX,CAAAA,CAAM,MAAA,CAAO,YAAA,GAAiB,KAAA,CAC1B,0CAAA,CACA,yCACN,CAAA,CAEC,QAAA,CAAA,CAAAA,CAAAA,CAAM,MAAA,CAAO,UAAA,EACZM,GAAAA,CAACa,CAAAA,CAAA,CACC,SAAA,CAAWnB,CAAAA,CAAM,MAAA,CAAO,YAAA,GAAiB,KAAA,CAAQ,QAAA,CAAW,MAAA,CAC5D,OAAA,CAASK,IACR,GAAGL,CAAAA,CAAM,MAAA,CAAO,iBAAA,CAEhB,QAAA,CAAAA,CAAAA,CAAM,MAAA,CAAO,UAAA,CAChB,CAAA,CAEDA,CAAAA,CAAM,MAAA,CAAO,QAAA,EACZM,GAAAA,CAACc,CAAAA,CAAA,CACC,SAAA,CAAWpB,EAAM,MAAA,CAAO,YAAA,GAAiB,KAAA,CAAQ,QAAA,CAAW,MAAA,CAC5D,OAAA,CAASI,CAAAA,CACT,KAAA,CAAOJ,CAAAA,CAAM,MAAA,CAAO,eAAA,EAAiB,KAAA,EAAS,aAAA,CAC9C,OAAA,CAASA,CAAAA,CAAM,MAAA,CAAO,iBAAiB,OAAA,EAAW,WAAA,CACjD,GAAGA,CAAAA,CAAM,MAAA,CAAO,eAAA,CAEhB,QAAA,CAAAA,CAAAA,CAAM,MAAA,CAAO,QAAA,CAChB,CAAA,CAEFM,GAAAA,CAACc,CAAAA,CAAA,CACC,SAAA,CAAWpB,CAAAA,CAAM,OAAO,YAAA,GAAiB,KAAA,CAAQ,QAAA,CAAW,MAAA,CAC5D,OAAA,CAASE,CAAAA,CACT,KAAA,CACEF,CAAAA,CAAM,MAAA,CAAO,kBAAA,EAAoB,KAAA,GAChCA,CAAAA,CAAM,MAAA,CAAO,OAAA,GAAY,aAAA,CAAgB,aAAA,CAAgB,WAE5D,OAAA,CAASA,CAAAA,CAAM,MAAA,CAAO,kBAAA,EAAoB,OAAA,EAAW,SAAA,CACpD,GAAGA,CAAAA,CAAM,MAAA,CAAO,kBAAA,CAEhB,QAAA,CAAAA,CAAAA,CAAM,MAAA,CAAO,WAAA,CAChB,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAEJ","file":"chunk-YPV6XEV4.js","sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"@xploreu/lib/cn\";\r\nimport {\r\n AlertDialog,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n AlertDialogContent,\r\n AlertDialogPopup,\r\n AlertDialogDescription,\r\n AlertDialogFooter,\r\n AlertDialogHeader,\r\n AlertDialogIcon,\r\n AlertDialogTitle,\r\n type AlertDialogActionProps,\r\n type AlertDialogCancelProps,\r\n} from \"./alert-dialog\";\r\n\r\n// Types\r\nexport type AlertPosition =\r\n | \"top-start\"\r\n | \"top-center\"\r\n | \"top-end\"\r\n | \"bottom-start\"\r\n | \"bottom-center\"\r\n | \"bottom-end\"\r\n | \"center\";\r\n\r\nexport interface AlertOptions {\r\n title: React.ReactNode;\r\n description?: React.ReactNode;\r\n icon?: React.ReactNode;\r\n confirmText?: string;\r\n cancelText?: string;\r\n denyText?: string;\r\n variant?: \"default\" | \"destructive\";\r\n showCancel?: boolean;\r\n showDeny?: boolean;\r\n position?: AlertPosition;\r\n textAlign?: \"left\" | \"center\" | \"right\";\r\n footerLayout?: \"row\" | \"col\";\r\n showCloseButton?: boolean;\r\n closeAriaLabel?: string;\r\n confirmButtonProps?: AlertDialogActionProps;\r\n cancelButtonProps?: AlertDialogCancelProps;\r\n denyButtonProps?: AlertDialogActionProps;\r\n onConfirm?: () => void | Promise<void>;\r\n onCancel?: () => void;\r\n onDeny?: () => void | Promise<void>;\r\n className?: string;\r\n additionalContents?: React.ReactNode;\r\n}\r\n\r\nexport type AlertResult = \"confirm\" | \"deny\" | \"cancel\";\r\n\r\ninterface AlertState {\r\n isOpen: boolean;\r\n config: AlertOptions;\r\n resolver: ((value: AlertResult) => void) | null;\r\n}\r\n\r\n// Global state\r\nconst globalAlertState: AlertState = {\r\n isOpen: false,\r\n config: {\r\n title: \"\",\r\n confirmText: \"OK\",\r\n cancelText: \"Cancel\",\r\n denyText: \"Deny\",\r\n variant: \"default\",\r\n showCancel: false,\r\n showDeny: false,\r\n showCloseButton: false,\r\n position: \"center\",\r\n textAlign: \"left\",\r\n footerLayout: \"row\",\r\n className: \"\",\r\n },\r\n resolver: null,\r\n};\r\n\r\nlet globalSetState: React.Dispatch<React.SetStateAction<AlertState>> | null = null;\r\n\r\n// Imperative Alert API\r\nexport const alert = {\r\n add: (options: AlertOptions) => {\r\n if (!globalSetState) {\r\n console.warn(\"AlertDialog: Alerter component not mounted\");\r\n return;\r\n }\r\n\r\n globalSetState({\r\n isOpen: true,\r\n config: {\r\n confirmText: \"OK\",\r\n cancelText: \"Cancel\",\r\n denyText: \"Deny\",\r\n variant: \"default\",\r\n showCancel: false,\r\n showDeny: false,\r\n showCloseButton: false,\r\n position: \"center\",\r\n textAlign: \"left\",\r\n footerLayout: \"row\",\r\n className: \"\",\r\n ...options,\r\n },\r\n resolver: null,\r\n });\r\n },\r\n\r\n confirm: (options: AlertOptions): Promise<AlertResult> => {\r\n return new Promise((resolve) => {\r\n if (!globalSetState) {\r\n console.warn(\"AlertDialog: Alerter component not mounted\");\r\n resolve(\"cancel\");\r\n return;\r\n }\r\n\r\n globalSetState({\r\n isOpen: true,\r\n config: {\r\n confirmText: \"Confirm\",\r\n cancelText: \"Cancel\",\r\n denyText: \"Deny\",\r\n variant: \"default\",\r\n showCancel: true,\r\n showDeny: false,\r\n showCloseButton: false,\r\n position: \"center\",\r\n textAlign: \"left\",\r\n footerLayout: \"row\",\r\n className: \"\",\r\n ...options,\r\n },\r\n resolver: resolve,\r\n });\r\n });\r\n },\r\n};\r\n\r\nconst getPositionClasses = (position: AlertPosition = \"center\") => {\r\n const positions: Record<AlertPosition, string> = {\r\n \"top-start\":\r\n \"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:left-4 sm:right-auto sm:translate-x-0 sm:translate-y-0\",\r\n \"top-center\":\r\n \"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:left-1/2 sm:-translate-x-1/2 sm:translate-y-0\",\r\n \"top-end\":\r\n \"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:right-4 sm:left-auto sm:translate-x-0 sm:translate-y-0\",\r\n \"bottom-start\":\r\n \"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:left-4 sm:right-auto sm:translate-x-0 sm:translate-y-0\",\r\n \"bottom-center\":\r\n \"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:left-1/2 sm:-translate-x-1/2 sm:translate-y-0\",\r\n \"bottom-end\":\r\n \"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:right-4 sm:left-auto sm:translate-x-0 sm:translate-y-0\",\r\n center: \"sm:top-1/2 sm:left-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2\",\r\n };\r\n return positions[position];\r\n};\r\n\r\n// Alerter Component (mount once at root layout)\r\nexport function Alerter() {\r\n const [state, setState] = React.useState<AlertState>(globalAlertState);\r\n\r\n React.useEffect(() => {\r\n globalSetState = setState;\r\n return () => {\r\n globalSetState = null;\r\n };\r\n }, []);\r\n\r\n const handleConfirm = async () => {\r\n if (state.config.onConfirm) {\r\n await state.config.onConfirm();\r\n }\r\n if (state.resolver) {\r\n state.resolver(\"confirm\");\r\n }\r\n setState((prev) => ({ ...prev, isOpen: false, resolver: null }));\r\n };\r\n\r\n const handleDeny = async () => {\r\n if (state.config.onDeny) {\r\n await state.config.onDeny();\r\n }\r\n if (state.resolver) {\r\n state.resolver(\"deny\");\r\n }\r\n setState((prev) => ({ ...prev, isOpen: false, resolver: null }));\r\n };\r\n\r\n const handleCancel = () => {\r\n if (state.config.onCancel) {\r\n state.config.onCancel();\r\n }\r\n if (state.resolver) {\r\n state.resolver(\"cancel\");\r\n }\r\n setState((prev) => ({ ...prev, isOpen: false, resolver: null }));\r\n };\r\n\r\n return (\r\n <AlertDialog\r\n open={state.isOpen}\r\n onOpenChange={(open) => {\r\n if (!open) handleCancel();\r\n }}\r\n >\r\n <AlertDialogPopup\r\n className={cn(\r\n getPositionClasses(state.config.position),\r\n state.config.className\r\n )}\r\n >\r\n {state.config.showCloseButton && (\r\n <button\r\n type=\"button\"\r\n aria-label={state.config.closeAriaLabel || \"Close\"}\r\n className=\"absolute right-3.5 top-3.5 rounded-xp-card-base-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground z-10\"\r\n onClick={handleCancel}\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">{state.config.closeAriaLabel || \"Close\"}</span>\r\n </button>\r\n )}\r\n <AlertDialogHeader\r\n className={cn(\r\n state.config.textAlign === \"center\"\r\n ? \"items-center text-center grid-cols-1\"\r\n : state.config.textAlign === \"right\"\r\n ? \"items-end text-right\"\r\n : \"items-start text-left\"\r\n )}\r\n >\r\n {state.config.icon && (\r\n <AlertDialogIcon\r\n variant={state.config.variant === \"destructive\" ? \"error\" : \"brand\"}\r\n >\r\n {state.config.icon}\r\n </AlertDialogIcon>\r\n )}\r\n <AlertDialogTitle>{state.config.title}</AlertDialogTitle>\r\n {state.config.description && (\r\n <AlertDialogDescription>\r\n {state.config.description}\r\n </AlertDialogDescription>\r\n )}\r\n </AlertDialogHeader>\r\n {state.config.additionalContents && (\r\n <AlertDialogContent>\r\n {state.config.additionalContents}\r\n </AlertDialogContent>\r\n )}\r\n <AlertDialogFooter\r\n className={cn(\r\n state.config.footerLayout === \"col\"\r\n ? \"sm:flex-col flex-col gap-2 items-stretch\"\r\n : \"flex-row justify-end gap-2 items-center\"\r\n )}\r\n >\r\n {state.config.showCancel && (\r\n <AlertDialogCancel\r\n className={state.config.footerLayout === \"col\" ? \"w-full\" : undefined}\r\n onClick={handleCancel}\r\n {...state.config.cancelButtonProps}\r\n >\r\n {state.config.cancelText}\r\n </AlertDialogCancel>\r\n )}\r\n {state.config.showDeny && (\r\n <AlertDialogAction\r\n className={state.config.footerLayout === \"col\" ? \"w-full\" : undefined}\r\n onClick={handleDeny}\r\n color={state.config.denyButtonProps?.color || \"destructive\"}\r\n variant={state.config.denyButtonProps?.variant || \"secondary\"}\r\n {...state.config.denyButtonProps}\r\n >\r\n {state.config.denyText}\r\n </AlertDialogAction>\r\n )}\r\n <AlertDialogAction\r\n className={state.config.footerLayout === \"col\" ? \"w-full\" : undefined}\r\n onClick={handleConfirm}\r\n color={\r\n state.config.confirmButtonProps?.color ||\r\n (state.config.variant === \"destructive\" ? \"destructive\" : \"default\")\r\n }\r\n variant={state.config.confirmButtonProps?.variant || \"primary\"}\r\n {...state.config.confirmButtonProps}\r\n >\r\n {state.config.confirmText}\r\n </AlertDialogAction>\r\n </AlertDialogFooter>\r\n </AlertDialogPopup>\r\n </AlertDialog>\r\n );\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/alerter.tsx"],"names":["globalAlertState","globalSetState","alert","options","resolve","getPositionClasses","position","Alerter","state","setState","handleConfirm","prev","handleDeny","handleCancel","jsx","AlertDialog","open","jsxs","AlertDialogPopup","cn","X","AlertDialogHeader","AlertDialogIcon","AlertDialogTitle","AlertDialogDescription","AlertDialogContent","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"mappings":"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","file":"chunk-S4L5WILL.js","sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { cn } from \"@xploreu/lib/cn\";\r\nimport {\r\n AlertDialog,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n AlertDialogContent,\r\n AlertDialogPopup,\r\n AlertDialogDescription,\r\n AlertDialogFooter,\r\n AlertDialogHeader,\r\n AlertDialogIcon,\r\n AlertDialogTitle,\r\n type AlertDialogActionProps,\r\n type AlertDialogCancelProps,\r\n} from \"./alert-dialog\";\r\n\r\n// Types\r\nexport type AlertPosition =\r\n | \"top-start\"\r\n | \"top-center\"\r\n | \"top-end\"\r\n | \"bottom-start\"\r\n | \"bottom-center\"\r\n | \"bottom-end\"\r\n | \"center\";\r\n\r\nexport interface AlertOptions {\r\n title: React.ReactNode;\r\n description?: React.ReactNode;\r\n icon?: React.ReactNode;\r\n confirmText?: string;\r\n cancelText?: string;\r\n denyText?: string;\r\n variant?: \"default\" | \"destructive\";\r\n showCancel?: boolean;\r\n showDeny?: boolean;\r\n position?: AlertPosition;\r\n textAlign?: \"left\" | \"center\" | \"right\";\r\n footerLayout?: \"row\" | \"col\";\r\n showCloseButton?: boolean;\r\n closeAriaLabel?: string;\r\n confirmButtonProps?: AlertDialogActionProps;\r\n cancelButtonProps?: AlertDialogCancelProps;\r\n denyButtonProps?: AlertDialogActionProps;\r\n onConfirm?: () => void | Promise<void>;\r\n onCancel?: () => void;\r\n onDeny?: () => void | Promise<void>;\r\n className?: string;\r\n additionalContents?: React.ReactNode;\r\n}\r\n\r\nexport type AlertResult = \"confirm\" | \"deny\" | \"cancel\";\r\n\r\ninterface AlertState {\r\n isOpen: boolean;\r\n config: AlertOptions;\r\n resolver: ((value: AlertResult) => void) | null;\r\n}\r\n\r\n// Global state\r\nconst globalAlertState: AlertState = {\r\n isOpen: false,\r\n config: {\r\n title: \"\",\r\n confirmText: \"OK\",\r\n cancelText: \"Cancel\",\r\n denyText: \"Deny\",\r\n variant: \"default\",\r\n showCancel: false,\r\n showDeny: false,\r\n showCloseButton: false,\r\n position: \"center\",\r\n textAlign: \"left\",\r\n footerLayout: \"row\",\r\n className: \"\",\r\n },\r\n resolver: null,\r\n};\r\n\r\nlet globalSetState: React.Dispatch<React.SetStateAction<AlertState>> | null = null;\r\n\r\n// Imperative Alert API\r\nexport const alert = {\r\n add: (options: AlertOptions) => {\r\n if (!globalSetState) {\r\n console.warn(\"AlertDialog: Alerter component not mounted\");\r\n return;\r\n }\r\n\r\n globalSetState({\r\n isOpen: true,\r\n config: {\r\n confirmText: \"OK\",\r\n cancelText: \"Cancel\",\r\n denyText: \"Deny\",\r\n variant: \"default\",\r\n showCancel: false,\r\n showDeny: false,\r\n showCloseButton: false,\r\n position: \"center\",\r\n textAlign: \"left\",\r\n footerLayout: \"row\",\r\n className: \"\",\r\n ...options,\r\n },\r\n resolver: null,\r\n });\r\n },\r\n\r\n confirm: (options: AlertOptions): Promise<AlertResult> => {\r\n return new Promise((resolve) => {\r\n if (!globalSetState) {\r\n console.warn(\"AlertDialog: Alerter component not mounted\");\r\n resolve(\"cancel\");\r\n return;\r\n }\r\n\r\n globalSetState({\r\n isOpen: true,\r\n config: {\r\n confirmText: \"Confirm\",\r\n cancelText: \"Cancel\",\r\n denyText: \"Deny\",\r\n variant: \"default\",\r\n showCancel: true,\r\n showDeny: false,\r\n showCloseButton: false,\r\n position: \"center\",\r\n textAlign: \"left\",\r\n footerLayout: \"row\",\r\n className: \"\",\r\n ...options,\r\n },\r\n resolver: resolve,\r\n });\r\n });\r\n },\r\n};\r\n\r\nconst getPositionClasses = (position: AlertPosition = \"center\") => {\r\n const positions: Record<AlertPosition, string> = {\r\n \"top-start\":\r\n \"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:left-4 sm:right-auto sm:translate-x-0 sm:translate-y-0\",\r\n \"top-center\":\r\n \"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:left-1/2 sm:-translate-x-1/2 sm:translate-y-0\",\r\n \"top-end\":\r\n \"data-[state=open]:slide-in-from-top-2 sm:top-4 sm:right-4 sm:left-auto sm:translate-x-0 sm:translate-y-0\",\r\n \"bottom-start\":\r\n \"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:left-4 sm:right-auto sm:translate-x-0 sm:translate-y-0\",\r\n \"bottom-center\":\r\n \"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:left-1/2 sm:-translate-x-1/2 sm:translate-y-0\",\r\n \"bottom-end\":\r\n \"data-[state=open]:slide-in-from-bottom-2 sm:bottom-4 sm:top-auto sm:right-4 sm:left-auto sm:translate-x-0 sm:translate-y-0\",\r\n center: \"sm:top-1/2 sm:left-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2\",\r\n };\r\n return positions[position];\r\n};\r\n\r\n// Alerter Component (mount once at root layout)\r\nexport function Alerter() {\r\n const [state, setState] = React.useState<AlertState>(globalAlertState);\r\n\r\n React.useEffect(() => {\r\n globalSetState = setState;\r\n return () => {\r\n globalSetState = null;\r\n };\r\n }, []);\r\n\r\n const handleConfirm = async () => {\r\n if (state.config.onConfirm) {\r\n await state.config.onConfirm();\r\n }\r\n if (state.resolver) {\r\n state.resolver(\"confirm\");\r\n }\r\n setState((prev) => ({ ...prev, isOpen: false, resolver: null }));\r\n };\r\n\r\n const handleDeny = async () => {\r\n if (state.config.onDeny) {\r\n await state.config.onDeny();\r\n }\r\n if (state.resolver) {\r\n state.resolver(\"deny\");\r\n }\r\n setState((prev) => ({ ...prev, isOpen: false, resolver: null }));\r\n };\r\n\r\n const handleCancel = () => {\r\n if (state.config.onCancel) {\r\n state.config.onCancel();\r\n }\r\n if (state.resolver) {\r\n state.resolver(\"cancel\");\r\n }\r\n setState((prev) => ({ ...prev, isOpen: false, resolver: null }));\r\n };\r\n\r\n return (\r\n <AlertDialog\r\n open={state.isOpen}\r\n onOpenChange={(open) => {\r\n if (!open) handleCancel();\r\n }}\r\n >\r\n <AlertDialogPopup\r\n className={cn(\r\n getPositionClasses(state.config.position),\r\n state.config.className\r\n )}\r\n >\r\n {state.config.showCloseButton && (\r\n <button\r\n type=\"button\"\r\n aria-label={state.config.closeAriaLabel || \"Close\"}\r\n className=\"absolute right-3.5 top-3.5 rounded-xp-card-base-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground z-10\"\r\n onClick={handleCancel}\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">{state.config.closeAriaLabel || \"Close\"}</span>\r\n </button>\r\n )}\r\n <AlertDialogHeader\r\n className={cn(\r\n state.config.textAlign === \"center\"\r\n ? \"items-center text-center grid-cols-1\"\r\n : state.config.textAlign === \"right\"\r\n ? \"items-end text-right\"\r\n : \"items-start text-left\"\r\n )}\r\n >\r\n {state.config.icon && (\r\n <AlertDialogIcon\r\n variant={state.config.variant === \"destructive\" ? \"error\" : \"brand\"}\r\n >\r\n {state.config.icon}\r\n </AlertDialogIcon>\r\n )}\r\n <AlertDialogTitle>{state.config.title}</AlertDialogTitle>\r\n {state.config.description && (\r\n <AlertDialogDescription>\r\n {state.config.description}\r\n </AlertDialogDescription>\r\n )}\r\n </AlertDialogHeader>\r\n {state.config.additionalContents && (\r\n <AlertDialogContent>\r\n {state.config.additionalContents}\r\n </AlertDialogContent>\r\n )}\r\n <AlertDialogFooter\r\n className={cn(\r\n state.config.footerLayout === \"col\"\r\n ? \"sm:flex-col flex-col gap-2 items-stretch\"\r\n : \"flex-row justify-end gap-2 items-center\"\r\n )}\r\n >\r\n {state.config.showCancel && (\r\n <AlertDialogCancel\r\n className={state.config.footerLayout === \"col\" ? \"w-full\" : undefined}\r\n onClick={handleCancel}\r\n {...state.config.cancelButtonProps}\r\n >\r\n {state.config.cancelText}\r\n </AlertDialogCancel>\r\n )}\r\n {state.config.showDeny && (\r\n <AlertDialogAction\r\n className={state.config.footerLayout === \"col\" ? \"w-full\" : undefined}\r\n onClick={handleDeny}\r\n color={state.config.denyButtonProps?.color || \"destructive\"}\r\n variant={state.config.denyButtonProps?.variant || \"secondary\"}\r\n {...state.config.denyButtonProps}\r\n >\r\n {state.config.denyText}\r\n </AlertDialogAction>\r\n )}\r\n <AlertDialogAction\r\n className={state.config.footerLayout === \"col\" ? \"w-full\" : undefined}\r\n onClick={handleConfirm}\r\n color={\r\n state.config.confirmButtonProps?.color ||\r\n (state.config.variant === \"destructive\" ? \"destructive\" : \"default\")\r\n }\r\n variant={state.config.confirmButtonProps?.variant || \"primary\"}\r\n {...state.config.confirmButtonProps}\r\n >\r\n {state.config.confirmText}\r\n </AlertDialogAction>\r\n </AlertDialogFooter>\r\n </AlertDialogPopup>\r\n </AlertDialog>\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {c,d,e,f,g,a,h,i,j,k,l,m,n,o,p,q,r,s,E,t,u,v,w,x,y,z,A,B,C,D}from'./chunk-HHG7BSWN.js';import {a as a$3}from'./chunk-TED2PUK6.js';import {b}from'./chunk-Y6TKCAAJ.js';import {a as a$1}from'./chunk-7P4PFMCM.js';import {a as a$2}from'./chunk-XG3W7QMP.js';import {b as b$2,c as c$1,d as d$1}from'./chunk-BES6JPWQ.js';import {b as b$1,e as e$1}from'./chunk-JLZNZFOO.js';import'react';import {SearchIcon,XIcon,Loader2Icon,CheckCircle2Icon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function wo(o){return jsx(c,{...o})}function io(o){let{className:t,...r}=o;return jsx(d,{className:cn("group/combobox-trigger flex items-center gap-2",t),...r})}function ko(o){let{className:t,...r}=o;return jsx(e,{className:cn("text-label-semibold-2 text-text-secondary",t),...r})}function Lo(o){let{className:t,...r}=o;return jsx(f,{className:cn("flex w-full items-center gap-2",t),...r})}function Ro({className:o,wrapperClassName:t,size:r="xs",...i}){return jsx("div",{className:cn("p-3 border-b border-border-primary",t),children:jsx(g,{className:o,render:jsx(b,{size:r,startContent:jsx(SearchIcon,{})}),...i})})}function So({className:o,displayValueKey:t={label:"label",value:"value"},placeholder:r="Search and Select Company",inputProps:i,size:m,...s}){let{inputValue:p,setInputValue:n}=a(),{className:x,startContent:to,...ro}=i||{};return jsx("div",{className:cn("flex flex-col gap-2",o),children:jsxs(so,{onMouseDown:C=>C.preventBaseUIHandler(),className:"flex-col",children:[jsx(g,{render:jsx(b,{className:cn("h-9 text-body-regular-3 pl-9 pr-7",x),endContent:jsx(io,{nativeButton:false,render:jsx(XIcon,{className:"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer","data-hidden":!p,"data-slot":"combobox-clear-input",onClick:C=>{n("",{reason:"none",event:C.nativeEvent,cancel:()=>{},allowPropagation:()=>{},isCanceled:false,isPropagationAllowed:true,trigger:void 0});}})}),placeholder:r,startContent:to??jsx(SearchIcon,{className:"!size-4 !text-fg-tertiary-hover"}),...ro}),...s}),jsx(mo,{children:C=>C?.map(y=>jsxs(po,{children:[y?.[t.label]||"",jsx(ao,{})]},y?.[t.value]||""))})]})})}function Go(o){let{className:t,...r}=o;return jsx(h,{className:cn("text-text-secondary",t),...r})}function Ao(o){return jsx(i,{render:jsx(XIcon,{}),...o})}function mo(o){return jsx(j,{...o})}function so({className:o,...t}){return jsx(k,{className:cn("flex flex-wrap gap-2",o),...t})}function po({className:o,...t}){return jsx(b$1,{className:cn("ring-1 ring-border-brand text-body-medium-3",o),color:"brand",render:jsx(l,{...t}),size:"lg"})}function ao({className:o,...t}){return jsx(e$1,{className:cn("text-fg-quaternary",o),render:jsx(m,{...t})})}function Ho({className:o$1,align:t="start",sideOffset:r=4,container:i,initialFocus:m,finalFocus:s,style:p$1,children:n$1,...x}){return jsx(n,{container:i,children:jsx(o,{align:t,className:"isolate z-50",sideOffset:r,...x,children:jsx(p,{className:cn("group/combobox-popup bg-bg-primary text-text-primary max-h-(--available-height) w-72 max-w-(--available-width) origin-(--transform-origin) rounded-md border border-border-primary shadow-md outline-hidden",o$1),finalFocus:s,initialFocus:m,style:p$1,children:jsx(no,{children:n$1})})})})}function zo(o){return jsx(n,{...o})}function Vo(o$1){return jsx(o,{...o$1})}function To(o){let{className:t,...r}=o;return jsx(q,{className:cn("bg-black/30",t),...r})}function Bo({className:o,status:t,...r$1}){let{inputValue:i}=a(),m=i?.toString().trim(),p=t==="empty"&&m?`No matches for "${m}".`:t==="empty"&&!m?"No results.":t==="pending"?jsxs(Fragment,{children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Searching..."})]}):null;return jsx(r,{className:cn("px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",!p&&"hidden",o),...r$1,children:p})}function Eo({className:o,...t}){return jsx(s,{className:cn("px-3 py-2 text-body-regular-2 text-text-secondary",o),...t})}function Fo({className:o,children:t$1,...r}){let i=E();return jsx(a$1,{size:"sm",viewportRender:jsx(t,{className:cn("max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] flex flex-col p-1 focus-visible:outline-none data-[empty]:hidden",o),...r,children:typeof t$1=="function"?(m,s)=>t$1(m,s,i.length):t$1})})}function no(o){let{className:t,...r}=o;return jsx(u,{className:cn("absolute inset-0 bg-bg-primary-hover",t),...r})}function xo(o){return jsx(v,{...o})}function Mo(o){let{className:t,...r}=o;return jsx(w,{className:cn("group/combobox-row",t),...r})}function Do({className:o,children:t,indicator:r="check-circle",...i}){let{disabled:m}=i;return jsx(xo,{activeClassName:"bg-bg-primary-hover rounded-md",disabled:m,children:jsxs(x,{"data-indicator":r,className:cn("group/combobox-item relative grid grid-cols-[auto_1fr] items-center gap-x-2 my-px p-xp-md cursor-default outline-none select-none [[data-indicator=check-circle][data-selected]]:pr-8 data-[indicator=checkbox]:pl-8",o),...i,children:[t,jsx(Co,{className:"absolute group-data-[indicator=check-circle]/combobox-item:right-2 group-data-[indicator=checkbox]/combobox-item:left-2",keepMounted:r==="checkbox",render:(s,p)=>jsxs("span",{...s,children:[r==="check-circle"&&jsx(CheckCircle2Icon,{className:"size-4 text-fg-brand-primary shrink-0"}),r==="checkbox"&&jsx(a$2,{checked:p.selected})]})})]})})}function Oo({className:o,...t}){return jsx("span",{"data-slot":"combobox-item-title",className:cn("col-start-2 text-body-medium-3 text-text-primary truncate row-span-2 group-has-[[data-slot=combobox-item-description]]/combobox-item:row-span-1",o),...t})}function qo({className:o,...t}){return jsx("span",{"data-slot":"combobox-item-description",className:cn("col-start-2 text-body-regular-3 text-text-secondary truncate",o),...t})}function _o({className:o,...t}){return jsx("div",{"data-slot":"combobox-item-icon",className:cn("row-span-2 col-start-1 flex items-center justify-center size-6 rounded-md bg-bg-brand-solid text-fg-white shrink-0 [&_svg]:size-3.5",o),...t})}function jo({src:o,imageSrc:t,className:r,avatarClassName:i,imageAlt:m,fallbackText:s,children:p,...n}){let x=o??t;return jsx("div",{"data-slot":"combobox-item-avatar",className:cn("row-span-2 col-start-1 size-6 rounded-full overflow-hidden shrink-0",r),children:jsxs(b$2,{className:cn("size-full shrink-0",i),...n,children:[jsx(c$1,{alt:m,src:x}),jsx(d$1,{className:"flex aspect-square size-full items-center justify-center bg-bg-tertiary text-label-semibold-2 text-text-quaternary",children:s??p})]})})}function Co(o){return jsx(y,{...o})}function Uo(o){let{className:t,...r}=o;return jsx(z,{className:cn("my-1 h-px bg-border-primary",t),...r})}function Xo(o){let{className:t,...r}=o;return jsx(A,{className:cn("py-1",t),...r})}function $o(o){let{className:t,...r}=o;return jsx(B,{className:cn("px-3 py-1 text-body-semibold-sm text-text-secondary",t),...r})}function Jo(o){return jsx(C,{...o})}function Ko(o){let{className:t,...r}=o;return jsx(D,{className:cn("fill-bg-primary",t),...r})}function Qo({hasMore:o,threshold:t=.5,...r}){return jsx(a$3,{hasMore:o,threshold:t,...r,children:o&&jsxs("div",{className:"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Loading more..."})]})})}export{jo as A,Co as B,Uo as C,Xo as D,$o as E,Jo as F,Ko as G,Qo as H,wo as a,io as b,ko as c,Lo as d,Ro as e,So as f,Go as g,Ao as h,mo as i,so as j,po as k,ao as l,Ho as m,zo as n,Vo as o,To as p,Bo as q,Eo as r,Fo as s,no as t,xo as u,Mo as v,Do as w,Oo as x,qo as y,_o as z};//# sourceMappingURL=chunk-SVNG3RLD.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-SVNG3RLD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/combobox.tsx"],"names":["Combobox","props","jsx","ComboboxTrigger","className","rest","cn","ComboboxLabel","ComboboxInputGroup","ComboboxInput","wrapperClassName","size","Input","SearchIcon","ComboboxInputFilter","displayValueKey","placeholder","inputProps","inputValue","setInputValue","useCombobox","inputClassName","startContent","restInputProps","jsxs","ComboboxChips","e","XIcon","event","ComboboxValue","value","item","ComboboxChip","ComboboxChipRemove","ComboboxIcon","ComboboxClear","Badge","BadgeButton","ComboboxPopup","align","sideOffset","container","initialFocus","finalFocus","style","children","ComboboxPortal","ComboboxPositioner","ComboboxHighlight","ComboboxBackdrop","ComboboxStatus","status","trimmedInputValue","text","Fragment","Loader2Icon","ComboboxEmpty","ComboboxList","items","useFilteredItems","ScrollArea","index","ComboboxHighlightItem","ComboboxRow","ComboboxItem","indicator","disabled","ComboboxItemIndicator","state","CheckCircle2Icon","Checkbox","ComboboxItemTitle","ComboboxItemDescription","ComboboxItemIcon","ComboboxItemAvatar","src","imageSrc","avatarClassName","imageAlt","fallbackText","finalSrc","Avatar","AvatarImage","AvatarFallback","ComboboxSeparator","ComboboxGroup","ComboboxGroupLabel","ComboboxCollection","ComboboxArrow","ComboboxInfiniteScroll","hasMore","threshold","InfiniteScroll"],"mappings":"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","file":"chunk-SVNG3RLD.js","sourcesContent":["import * as React from \"react\"\r\n\r\nimport {\r\n CheckCircle2Icon,\r\n Loader2Icon,\r\n SearchIcon,\r\n XIcon\r\n} from \"lucide-react\"\r\n\r\nimport {\r\n Combobox as ComboboxPrimitive,\r\n ComboboxArrow as ComboboxArrowPrimitive,\r\n type ComboboxArrowProps as ComboboxArrowPrimitiveProps,\r\n ComboboxBackdrop as ComboboxBackdropPrimitive,\r\n type ComboboxBackdropProps as ComboboxBackdropPrimitiveProps,\r\n ComboboxChip as ComboboxChipPrimitive,\r\n type ComboboxChipProps as ComboboxChipPrimitiveProps,\r\n ComboboxChipRemove as ComboboxChipRemovePrimitive,\r\n type ComboboxChipRemoveProps as ComboboxChipRemovePrimitiveProps,\r\n ComboboxChips as ComboboxChipsPrimitive,\r\n type ComboboxChipsProps as ComboboxChipsPrimitiveProps,\r\n ComboboxClear as ComboboxClearPrimitive,\r\n type ComboboxClearProps as ComboboxClearPrimitiveProps,\r\n ComboboxCollection as ComboboxCollectionPrimitive,\r\n type ComboboxCollectionProps as ComboboxCollectionPrimitiveProps,\r\n ComboboxEmpty as ComboboxEmptyPrimitive,\r\n type ComboboxEmptyProps as ComboboxEmptyPrimitiveProps,\r\n ComboboxGroup as ComboboxGroupPrimitive,\r\n ComboboxGroupLabel as ComboboxGroupLabelPrimitive,\r\n type ComboboxGroupLabelProps as ComboboxGroupLabelPrimitiveProps,\r\n type ComboboxGroupProps as ComboboxGroupPrimitiveProps,\r\n ComboboxHighlight as ComboboxHighlightPrimitive,\r\n ComboboxHighlightItem as ComboboxHighlightItemPrimitive,\r\n type ComboboxHighlightItemProps as ComboboxHighlightItemPrimitiveProps,\r\n type ComboboxHighlightProps as ComboboxHighlightPrimitiveProps,\r\n ComboboxIcon as ComboboxIconPrimitive,\r\n type ComboboxIconProps as ComboboxIconPrimitiveProps,\r\n ComboboxInput as ComboboxInputPrimitive,\r\n ComboboxInputGroup as ComboboxInputGroupPrimitive,\r\n type ComboboxInputGroupProps as ComboboxInputGroupPrimitiveProps,\r\n type ComboboxInputProps as ComboboxInputPrimitiveProps,\r\n ComboboxItem as ComboboxItemPrimitive,\r\n ComboboxItemIndicator as ComboboxItemIndicatorPrimitive,\r\n type ComboboxItemIndicatorProps as ComboboxItemIndicatorPrimitiveProps,\r\n type ComboboxItemProps as ComboboxItemPrimitiveProps,\r\n ComboboxLabel as ComboboxLabelPrimitive,\r\n type ComboboxLabelProps as ComboboxLabelPrimitiveProps,\r\n ComboboxList as ComboboxListPrimitive,\r\n type ComboboxListProps as ComboboxListPrimitiveProps,\r\n ComboboxPopup as ComboboxPopupPrimitive,\r\n type ComboboxPopupProps as ComboboxPopupPrimitiveProps,\r\n ComboboxPortal as ComboboxPortalPrimitive,\r\n type ComboboxPortalProps as ComboboxPortalPrimitiveProps,\r\n ComboboxPositioner as ComboboxPositionerPrimitive,\r\n type ComboboxPositionerProps as ComboboxPositionerPrimitiveProps,\r\n type ComboboxProps as ComboboxPrimitiveProps,\r\n ComboboxRow as ComboboxRowPrimitive,\r\n type ComboboxRowProps as ComboboxRowPrimitiveProps,\r\n ComboboxSeparator as ComboboxSeparatorPrimitive,\r\n type ComboboxSeparatorProps as ComboboxSeparatorPrimitiveProps,\r\n ComboboxStatus as ComboboxStatusPrimitive,\r\n type ComboboxStatusProps as ComboboxStatusPrimitiveProps,\r\n ComboboxTrigger as ComboboxTriggerPrimitive,\r\n type ComboboxTriggerProps as ComboboxTriggerPrimitiveProps,\r\n ComboboxValue as ComboboxValuePrimitive,\r\n type ComboboxValueProps as ComboboxValuePrimitiveProps,\r\n useCombobox,\r\n useFilteredItems,\r\n} from \"../primitives/combobox\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { ScrollArea } from \"./scroll-area\"\r\nimport { Badge, BadgeButton } from \"./badge\"\r\nimport { InfiniteScroll } from \"./infinite-scroll\"\r\nimport { Input } from \"./input\"\r\nimport { Checkbox } from \"./checkbox\"\r\nimport { Avatar, AvatarFallback, AvatarImage } from \"./avatar\"\r\n\r\ntype ComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxPrimitiveProps<Value, Multiple>\r\n\r\nfunction Combobox<Value, Multiple extends boolean | undefined = false>(props: ComboboxProps<Value, Multiple>) {\r\n return (\r\n <ComboboxPrimitive {...props} />\r\n )\r\n}\r\n\r\ntype ComboboxTriggerProps = ComboboxTriggerPrimitiveProps\r\n\r\nfunction ComboboxTrigger(props: ComboboxTriggerProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxTriggerPrimitive\r\n className={cn(\r\n \"group/combobox-trigger flex items-center gap-2\",\r\n className,\r\n )}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxLabelProps = ComboboxLabelPrimitiveProps\r\n\r\nfunction ComboboxLabel(props: ComboboxLabelProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxLabelPrimitive\r\n className={cn(\r\n \"text-label-semibold-2 text-text-secondary\",\r\n className,\r\n )}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxInputGroupProps = ComboboxInputGroupPrimitiveProps\r\n\r\nfunction ComboboxInputGroup(props: ComboboxInputGroupProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxInputGroupPrimitive\r\n className={cn(\r\n \"flex w-full items-center gap-2\",\r\n className,\r\n )}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxInputProps = Omit<ComboboxInputPrimitiveProps, \"size\"> & {\r\n wrapperClassName?: string\r\n size?: React.ComponentProps<typeof Input>[\"size\"]\r\n}\r\n\r\nfunction ComboboxInput({\r\n className,\r\n wrapperClassName,\r\n size = \"xs\",\r\n ...props\r\n}: ComboboxInputProps) {\r\n\r\n return (\r\n <div className={cn(\"p-3 border-b border-border-primary\", wrapperClassName)}>\r\n <ComboboxInputPrimitive\r\n className={className}\r\n render={<Input size={size} startContent={<SearchIcon />} />}\r\n {...props}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nfunction ComboboxInputFilter({\r\n className,\r\n displayValueKey = { label: \"label\", value: \"value\" },\r\n placeholder = \"Search and Select Company\",\r\n inputProps,\r\n size,\r\n ...props\r\n}: ComboboxInputProps & {\r\n displayValueKey?: {\r\n label: string\r\n value: string\r\n }\r\n placeholder?: string\r\n inputProps?: React.ComponentProps<typeof Input>\r\n}) {\r\n const { inputValue, setInputValue } = useCombobox()\r\n const { className: inputClassName, startContent, ...restInputProps } = inputProps || {}\r\n\r\n return (\r\n <div className={cn(\"flex flex-col gap-2\", className)}>\r\n <ComboboxChips\r\n onMouseDown={(e) => e.preventBaseUIHandler()}\r\n className=\"flex-col\"\r\n >\r\n <ComboboxInputPrimitive\r\n render={\r\n <Input\r\n className={cn(\"h-9 text-body-regular-3 pl-9 pr-7\", inputClassName)}\r\n endContent={\r\n <ComboboxTrigger\r\n nativeButton={false}\r\n render={(\r\n <XIcon\r\n className=\"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer\"\r\n data-hidden={!inputValue}\r\n data-slot=\"combobox-clear-input\"\r\n onClick={(event) => {\r\n setInputValue(\"\", {\r\n reason: \"none\",\r\n event: event.nativeEvent,\r\n cancel: () => { },\r\n allowPropagation: () => { },\r\n isCanceled: false,\r\n isPropagationAllowed: true,\r\n trigger: undefined,\r\n })\r\n }}\r\n />\r\n )}\r\n />\r\n }\r\n placeholder={placeholder}\r\n startContent={startContent ?? <SearchIcon className=\"!size-4 !text-fg-tertiary-hover\" />}\r\n {...restInputProps}\r\n />\r\n }\r\n {...props}\r\n />\r\n <ComboboxValue>\r\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\r\n {(value) => value?.map((item: any) => (\r\n <ComboboxChip key={item?.[displayValueKey.value] || \"\"}>\r\n {item?.[displayValueKey.label] || \"\"}\r\n <ComboboxChipRemove />\r\n </ComboboxChip>\r\n ))}\r\n </ComboboxValue>\r\n </ComboboxChips>\r\n </div>\r\n )\r\n}\r\n\r\ntype ComboboxIconProps = ComboboxIconPrimitiveProps\r\n\r\nfunction ComboboxIcon(props: ComboboxIconProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxIconPrimitive\r\n className={cn(\"text-text-secondary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxClearProps = ComboboxClearPrimitiveProps\r\n\r\nfunction ComboboxClear(props: ComboboxClearProps) {\r\n\r\n return (\r\n <ComboboxClearPrimitive\r\n render={<XIcon />}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxValueProps = ComboboxValuePrimitiveProps\r\n\r\nfunction ComboboxValue(props: ComboboxValueProps) {\r\n return <ComboboxValuePrimitive {...props} />\r\n}\r\n\r\ntype ComboboxChipsProps = ComboboxChipsPrimitiveProps\r\n\r\nfunction ComboboxChips({\r\n className,\r\n ...props\r\n}: ComboboxChipsProps) {\r\n return <ComboboxChipsPrimitive\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxChipProps = ComboboxChipPrimitiveProps\r\n\r\nfunction ComboboxChip({\r\n className,\r\n ...props\r\n}: ComboboxChipProps) {\r\n return (\r\n <Badge\r\n className={cn(\"ring-1 ring-border-brand text-body-medium-3\", className)}\r\n color=\"brand\"\r\n render={(\r\n <ComboboxChipPrimitive\r\n {...props}\r\n />\r\n )}\r\n size=\"lg\"\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxChipRemoveProps = ComboboxChipRemovePrimitiveProps\r\n\r\nfunction ComboboxChipRemove({\r\n className,\r\n ...props\r\n}: ComboboxChipRemoveProps) {\r\n return (\r\n <BadgeButton\r\n className={cn(\"text-fg-quaternary\", className)}\r\n render={(\r\n <ComboboxChipRemovePrimitive\r\n {...props}\r\n />\r\n )}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxPopupProps = ComboboxPositionerPrimitiveProps &\r\n ComboboxPopupPrimitiveProps & {\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n }\r\n\r\nfunction ComboboxPopup({\r\n className,\r\n align = \"start\",\r\n sideOffset = 4,\r\n container,\r\n initialFocus,\r\n finalFocus,\r\n style,\r\n children,\r\n ...props\r\n}: ComboboxPopupProps) {\r\n return (\r\n <ComboboxPortalPrimitive container={container}>\r\n <ComboboxPositionerPrimitive\r\n align={align}\r\n className=\"isolate z-50\"\r\n sideOffset={sideOffset}\r\n {...props}\r\n >\r\n <ComboboxPopupPrimitive\r\n className={cn(\r\n \"group/combobox-popup bg-bg-primary text-text-primary max-h-(--available-height) w-72 max-w-(--available-width) origin-(--transform-origin) rounded-md border border-border-primary shadow-md outline-hidden\",\r\n className,\r\n )}\r\n finalFocus={finalFocus}\r\n initialFocus={initialFocus}\r\n style={style}\r\n >\r\n <ComboboxHighlight>\r\n {children}\r\n </ComboboxHighlight>\r\n </ComboboxPopupPrimitive>\r\n </ComboboxPositionerPrimitive>\r\n </ComboboxPortalPrimitive>\r\n )\r\n}\r\n\r\ntype ComboboxPortalProps = ComboboxPortalPrimitiveProps\r\n\r\nfunction ComboboxPortal(props: ComboboxPortalProps) {\r\n return <ComboboxPortalPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxPositionerProps = ComboboxPositionerPrimitiveProps\r\n\r\nfunction ComboboxPositioner(props: ComboboxPositionerProps) {\r\n return <ComboboxPositionerPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxBackdropProps = ComboboxBackdropPrimitiveProps\r\n\r\nfunction ComboboxBackdrop(props: ComboboxBackdropProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxBackdropPrimitive\r\n className={cn(\"bg-black/30\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxStatusProps = ComboboxStatusPrimitiveProps\r\n\r\nfunction ComboboxStatus({\r\n className,\r\n status,\r\n ...props\r\n}: Omit<ComboboxStatusProps, \"children\"> & {\r\n status?: \"empty\" | \"pending\" | null\r\n}) {\r\n const { inputValue } = useCombobox()\r\n\r\n const trimmedInputValue = inputValue?.toString().trim()\r\n\r\n const getText = () => {\r\n if (status === \"empty\" && trimmedInputValue)\r\n return `No matches for \"${trimmedInputValue}\".`\r\n\r\n if (status === \"empty\" && !trimmedInputValue)\r\n return \"No results.\"\r\n\r\n if (status === \"pending\")\r\n return (\r\n <>\r\n <Loader2Icon className=\"animate-spin size-4\" />\r\n <span>\r\n Searching...\r\n </span>\r\n </>\r\n )\r\n\r\n return null\r\n }\r\n\r\n const text = getText()\r\n\r\n return (\r\n <ComboboxStatusPrimitive\r\n className={cn(\r\n \"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2\",\r\n !text && \"hidden\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {text}\r\n </ComboboxStatusPrimitive>\r\n )\r\n}\r\n\r\ntype ComboboxLoadingProps = React.ComponentProps<\"div\">\r\n\r\ntype ComboboxEmptyProps = ComboboxEmptyPrimitiveProps\r\n\r\nfunction ComboboxEmpty({ className, ...props }: ComboboxEmptyProps) {\r\n return <ComboboxEmptyPrimitive\r\n className={cn(\"px-3 py-2 text-body-regular-2 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxListProps = Omit<ComboboxListPrimitiveProps, \"children\"> & {\r\n children: React.ReactNode | ((item: any, index: number, itemsLength: number) => React.ReactNode)\r\n}\r\n\r\nfunction ComboboxList({\r\n className,\r\n children,\r\n ...props\r\n}: ComboboxListProps) {\r\n const items = useFilteredItems()\r\n\r\n return (\r\n <ScrollArea\r\n size=\"sm\"\r\n viewportRender={(\r\n <ComboboxListPrimitive\r\n className={cn(\"max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] flex flex-col p-1 focus-visible:outline-none data-[empty]:hidden\", className)}\r\n {...props}\r\n >\r\n {\r\n typeof children === \"function\"\r\n ? (item, index) => (\r\n children(item, index, items.length)\r\n )\r\n : children\r\n }\r\n </ComboboxListPrimitive>\r\n )}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxHighlightProps = ComboboxHighlightPrimitiveProps\r\n\r\nfunction ComboboxHighlight(props: ComboboxHighlightProps) {\r\n const { className, ...rest } = props\r\n\r\n return (\r\n <ComboboxHighlightPrimitive\r\n className={cn(\"absolute inset-0 bg-bg-primary-hover\", className)}\r\n {...rest}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxHighlightItemProps = ComboboxHighlightItemPrimitiveProps\r\n\r\nfunction ComboboxHighlightItem(props: ComboboxHighlightItemProps) {\r\n return <ComboboxHighlightItemPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxRowProps = ComboboxRowPrimitiveProps\r\n\r\nfunction ComboboxRow(props: ComboboxRowProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxRowPrimitive\r\n className={cn(\"group/combobox-row\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxItemProps = ComboboxItemPrimitiveProps & {\r\n indicator?: \"check-circle\" | \"checkbox\"\r\n}\r\n\r\nfunction ComboboxItem({\r\n className,\r\n children,\r\n indicator = \"check-circle\",\r\n ...props\r\n}: ComboboxItemProps) {\r\n const { disabled } = props\r\n\r\n return (\r\n <ComboboxHighlightItem\r\n activeClassName=\"bg-bg-primary-hover rounded-md\"\r\n disabled={disabled}\r\n >\r\n <ComboboxItemPrimitive\r\n data-indicator={indicator}\r\n className={cn(\r\n \"group/combobox-item relative grid grid-cols-[auto_1fr] items-center gap-x-2 my-px p-xp-md cursor-default outline-none select-none [[data-indicator=check-circle][data-selected]]:pr-8 data-[indicator=checkbox]:pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ComboboxItemIndicator\r\n className=\"absolute group-data-[indicator=check-circle]/combobox-item:right-2 group-data-[indicator=checkbox]/combobox-item:left-2\"\r\n keepMounted={indicator === \"checkbox\"}\r\n render={(props, state) => (\r\n <span {...props}>\r\n {indicator === \"check-circle\" && (\r\n <CheckCircle2Icon className=\"size-4 text-fg-brand-primary shrink-0\" />\r\n )}\r\n\r\n {indicator === \"checkbox\" && (\r\n <Checkbox checked={state.selected} />\r\n )}\r\n </span>\r\n )}\r\n />\r\n </ComboboxItemPrimitive>\r\n </ComboboxHighlightItem>\r\n )\r\n}\r\n\r\ntype ComboboxItemTitleProps = React.ComponentProps<\"span\">\r\n\r\nfunction ComboboxItemTitle({\r\n className,\r\n ...props\r\n}: ComboboxItemTitleProps) {\r\n return (\r\n <span\r\n data-slot=\"combobox-item-title\"\r\n className={cn(\r\n \"col-start-2 text-body-medium-3 text-text-primary truncate row-span-2 group-has-[[data-slot=combobox-item-description]]/combobox-item:row-span-1\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxItemDescriptionProps = React.ComponentProps<\"span\">\r\n\r\nfunction ComboboxItemDescription({\r\n className,\r\n ...props\r\n}: ComboboxItemDescriptionProps) {\r\n return (\r\n <span\r\n data-slot=\"combobox-item-description\"\r\n className={cn(\r\n \"col-start-2 text-body-regular-3 text-text-secondary truncate\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction ComboboxItemIcon({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"combobox-item-icon\"\r\n className={cn(\r\n \"row-span-2 col-start-1 flex items-center justify-center size-6 rounded-md bg-bg-brand-solid text-fg-white shrink-0 [&_svg]:size-3.5\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxItemAvatarProps = React.ComponentProps<typeof Avatar> & {\r\n src?: string\r\n imageSrc?: string\r\n imageAlt?: string\r\n avatarClassName?: string\r\n fallbackText?: string\r\n}\r\n\r\nfunction ComboboxItemAvatar({\r\n src,\r\n imageSrc,\r\n className,\r\n avatarClassName,\r\n imageAlt,\r\n fallbackText,\r\n children,\r\n ...props\r\n}: ComboboxItemAvatarProps) {\r\n const finalSrc = src ?? imageSrc\r\n\r\n return (\r\n <div\r\n data-slot=\"combobox-item-avatar\"\r\n className={cn(\r\n \"row-span-2 col-start-1 size-6 rounded-full overflow-hidden shrink-0\",\r\n className\r\n )}\r\n >\r\n <Avatar\r\n className={cn(\"size-full shrink-0\", avatarClassName)}\r\n {...props}\r\n >\r\n <AvatarImage alt={imageAlt} src={finalSrc} />\r\n <AvatarFallback className=\"flex aspect-square size-full items-center justify-center bg-bg-tertiary text-label-semibold-2 text-text-quaternary\">\r\n {fallbackText ?? children}\r\n </AvatarFallback>\r\n </Avatar>\r\n </div>\r\n )\r\n}\r\n\r\ntype ComboboxItemIndicatorProps = ComboboxItemIndicatorPrimitiveProps\r\n\r\nfunction ComboboxItemIndicator(props: ComboboxItemIndicatorProps) {\r\n return (\r\n <ComboboxItemIndicatorPrimitive {...props} />\r\n )\r\n}\r\n\r\ntype ComboboxSeparatorProps = ComboboxSeparatorPrimitiveProps\r\n\r\nfunction ComboboxSeparator(props: ComboboxSeparatorProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxSeparatorPrimitive\r\n className={cn(\"my-1 h-px bg-border-primary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxGroupProps = ComboboxGroupPrimitiveProps\r\n\r\nfunction ComboboxGroup(props: ComboboxGroupProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxGroupPrimitive\r\n className={cn(\"py-1\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxGroupLabelProps = ComboboxGroupLabelPrimitiveProps\r\n\r\nfunction ComboboxGroupLabel(props: ComboboxGroupLabelProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxGroupLabelPrimitive\r\n className={cn(\"px-3 py-1 text-body-semibold-sm text-text-secondary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxCollectionProps = ComboboxCollectionPrimitiveProps\r\n\r\nfunction ComboboxCollection(props: ComboboxCollectionProps) {\r\n return <ComboboxCollectionPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxArrowProps = ComboboxArrowPrimitiveProps\r\n\r\nfunction ComboboxArrow(props: ComboboxArrowProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxArrowPrimitive\r\n className={cn(\"fill-bg-primary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\nfunction ComboboxInfiniteScroll({\r\n hasMore,\r\n threshold = 0.5,\r\n ...props\r\n}: Omit<React.ComponentProps<typeof InfiniteScroll>, \"children\">) {\r\n return (\r\n <InfiniteScroll\r\n hasMore={hasMore}\r\n threshold={threshold}\r\n {...props}\r\n >\r\n {hasMore && (\r\n <div className=\"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2\">\r\n <Loader2Icon className=\"animate-spin size-4\" />\r\n <span>\r\n Loading more...\r\n </span>\r\n </div>\r\n )}\r\n </InfiniteScroll>\r\n )\r\n}\r\n\r\nexport {\r\n Combobox,\r\n ComboboxArrow,\r\n type ComboboxArrowProps,\r\n ComboboxBackdrop,\r\n type ComboboxBackdropProps,\r\n ComboboxChip,\r\n type ComboboxChipProps,\r\n ComboboxChipRemove,\r\n type ComboboxChipRemoveProps,\r\n ComboboxChips,\r\n type ComboboxChipsProps,\r\n ComboboxClear,\r\n type ComboboxClearProps,\r\n ComboboxCollection,\r\n type ComboboxCollectionProps,\r\n ComboboxPopup,\r\n type ComboboxPopupProps,\r\n ComboboxEmpty,\r\n type ComboboxEmptyProps,\r\n ComboboxGroup,\r\n ComboboxGroupLabel,\r\n type ComboboxGroupLabelProps,\r\n type ComboboxGroupProps,\r\n ComboboxHighlight,\r\n ComboboxHighlightItem,\r\n type ComboboxHighlightItemProps,\r\n type ComboboxHighlightProps,\r\n ComboboxIcon,\r\n type ComboboxIconProps,\r\n ComboboxInfiniteScroll,\r\n ComboboxInput,\r\n ComboboxInputFilter,\r\n ComboboxInputGroup,\r\n type ComboboxInputGroupProps,\r\n type ComboboxInputProps,\r\n ComboboxItem,\r\n ComboboxItemTitle,\r\n type ComboboxItemTitleProps,\r\n ComboboxItemDescription,\r\n type ComboboxItemDescriptionProps,\r\n ComboboxItemIcon,\r\n ComboboxItemAvatar,\r\n type ComboboxItemAvatarProps,\r\n ComboboxItemIndicator,\r\n type ComboboxItemIndicatorProps,\r\n type ComboboxItemProps,\r\n ComboboxLabel,\r\n type ComboboxLabelProps,\r\n ComboboxList,\r\n type ComboboxListProps,\r\n type ComboboxLoadingProps,\r\n ComboboxPortal,\r\n type ComboboxPortalProps,\r\n ComboboxPositioner,\r\n type ComboboxPositionerProps,\r\n type ComboboxProps,\r\n ComboboxRow,\r\n type ComboboxRowProps,\r\n ComboboxSeparator,\r\n type ComboboxSeparatorProps,\r\n ComboboxStatus,\r\n type ComboboxStatusProps,\r\n ComboboxTrigger,\r\n type ComboboxTriggerProps,\r\n ComboboxValue,\r\n type ComboboxValueProps\r\n}"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a,j,i,k,l,m,q,s,w,A,x,H}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a,j,i,k,l,m,q,s,w,A,x,H}from'./chunk-SVNG3RLD.js';import {f,g}from'./chunk-HHG7BSWN.js';import {a as a$1}from'./chunk-Y6TKCAAJ.js';import*as r from'react';import {cn}from'@xploreu/lib/cn';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function $({multiple:G=true,inputPlaceholder:j$1="Search...",container:q$1,items:s$1,infiniteScroll:z,isPending:B,taggable:C=false,maxVisible:b,...m$1}){let[O,F]=useControlledState({value:m$1?.inputValue?.toString(),defaultValue:m$1?.defaultInputValue?.toString(),onChange:m$1?.onInputValueChange}),[i$1,h]=useControlledState({value:m$1?.value??[],defaultValue:m$1?.defaultValue??[],onChange:m$1?.onValueChange}),[I,V]=r.useState([]),p=r.useRef(new Set);r.useEffect(()=>{let e=new Set(i$1.map(a=>a.value));V(a=>{let l=a.filter(o=>e.has(o.value));return l.length===a.length?a:(p.current=new Set(l.map(o=>o.value)),l)});},[i$1]);let t=O?.toString().trim()??"",v=r.useMemo(()=>t?i$1.some(e=>e.value.toLowerCase()===t.toLowerCase()):false,[t,i$1]),c=r.useMemo(()=>!C||!t?false:!s$1?.some(e=>e.label.toLowerCase()===t.toLowerCase()),[C,t,s$1]),H$1=r.useMemo(()=>{let e=[...s$1??[],...I];return c?[...e,{label:t,value:t,tag:true}]:e},[s$1,I,c,t]);return jsxs(a,{...m$1,behavior:"chip-outside",multiple:true,items:C?H$1:s$1,isItemEqualToValue:(e,a)=>e.value===a.value,onValueChange:(e,a)=>{if(C){let l=e.filter(o=>o?.tag===true&&!p.current.has(o.value));if(l.length>0){for(let o of l)p.current.add(o.value);V(o=>[...o,...l]);}}h(G?e:[e[e.length-1]],a);},onInputValueChange:F,children:[jsx(f,{className:cn(a$1(),"h-auto min-h-13 flex flex-wrap items-center gap-1.5 px-3 py-1.5 cursor-text"),children:jsxs(j,{className:cn("contents",b!==void 0&&"flex-nowrap overflow-hidden"),children:[jsx(i,{children:e=>{let a=b!==void 0?e.slice(0,b):e,l$1=b!==void 0?e.length-b:0;return jsxs(Fragment,{children:[a?.map(o=>jsxs(k,{className:cn(b!==void 0&&"min-w-0 shrink"),children:[o?.image&&jsx("img",{src:o.image,alt:o?.label||"",className:"size-4 rounded-full object-cover shrink-0 mr-1"}),b!==void 0?jsx("span",{className:"truncate",children:o?.label||""}):o?.label||"",jsx(l,{})]},o?.value||"")),l$1>0&&jsxs(k,{className:"shrink-0",children:["+",l$1]})]})}}),jsx(g,{render:jsx("input",{className:"flex-1 min-w-[80px] bg-transparent outline-none text-body-regular-1 text-text-primary placeholder:text-text-placeholder",placeholder:i$1.length===0?j$1:void 0})})]})}),jsxs(m,{container:q$1,children:[jsx(q,{status:B||s$1===void 0?"pending":s$1?.length===0&&!c?"empty":null}),jsxs(s,{children:[s$1?.map(e=>jsxs(w,{value:e,children:[e.image!==void 0&&jsx(A,{src:e.image,fallbackText:[e.label?.[0],e.label?.split(" ")?.[1]?.[0]].filter(Boolean).join(""),imageAlt:e.label}),jsx(x,{children:e.label})]},e.value)),c&&jsxs(w,{value:{label:t,value:t,tag:true},children:[!v&&jsxs("span",{className:"text-text-secondary text-body-medium-3 col-start-2",children:["Create: ",t]}),v&&jsx(x,{children:t})]}),jsx(H,{...z})]})]})]})}export{$ as a};//# sourceMappingURL=chunk-Y2HN4RSA.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-Y2HN4RSA.js.map
|