@xjur-ui/react 2.2.1 → 2.2.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @xjur-ui/react
2
2
 
3
+ ## 2.2.3
4
+
5
+ ### Patch Changes
6
+
7
+ - c3896d1: fix package json exports
8
+
9
+ ## 2.2.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 92538cf: fix: improve filter components layout and remove deprecated SelectLabel/InputLabel exports
14
+ - Updated filter variant components (Input, Select, DatePicker) to use inline-flex with w-auto for better layout
15
+ - Removed SelectLabel and InputLabel exports as they're now integrated with floating labels
16
+ - Updated Storybook documentation to reflect component API changes
17
+ - Improved horizontal scroll component spacing for filter usage
18
+
3
19
  ## 2.2.1
4
20
 
5
21
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-JGPHBUVM.js';import {a,b}from'./chunk-2JQVYVAT.js';import {a as a$3,d,e,b as b$2,c}from'./chunk-YOLTIAFT.js';import {b as b$1}from'./chunk-DVDHTP4C.js';import {a as a$2}from'./chunk-EIG6CBTQ.js';import {tv,twMerge,twJoin}from'@xjur-ui/util';import {useMemo}from'react';import*as s from'@radix-ui/react-popover';import {jsx,jsxs}from'react/jsx-runtime';var w=tv({slots:{wrapper:"group flex flex-col gap-small-2x",trigger:["h-large-4x w-auto inline-flex cursor-pointer relative","items-center gap-small rounded-small-1x","py-small_1x-alt px-small","bg-layer-2-idle border border-border-layer-2","group-has-[div[data-slot=input-action-slot]]:rounded-r-none","transition-all duration-200"],content:["group z-1000 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-content-available-width)] min-w-[var(--radix-popover-trigger-width)]"],icon:"size-large text-icon-neutral-3 flex items-center justify-center",slotText:"size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder",caption:"!text-size-body-sm font-normal"},variants:{state:{normal:{trigger:"hover:border-border-layer-3 data-[state=open]:border-primary-idle data-[state=open]:hover:border-primary-idle"},error:{trigger:"border-danger-idle hover:border-danger-idle data-[state=open]:border-danger-idle data-[state=open]:hover:border-danger-idle",caption:"text-danger-label-idle"},disabled:{trigger:"pointer-events-none border-transparent bg-layer-2-idle"}}}}),{wrapper:S,trigger:N,icon:L,caption:O,slotText:F,content:I}=w();function J({className:t,state:e="normal",defaultOpen:o,variant:n="normal",modal:i,open:a$1,onOpenChange:p,...c}){return jsx(s.Root,{defaultOpen:o,modal:i,open:a$1,onOpenChange:p,children:jsx(a.Provider,{value:{state:e,variant:n},children:jsx("div",{className:S({className:t,state:e}),...c})})})}function _({className:t,...e}){let{state:o,variant:n}=b(),i=tv({base:["group bg-layer-2-idle"],variants:{state:{normal:["border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle"],error:["border-danger-idle hover:border-danger-idle"],disabled:["border border-border-layer-2 opacity-60"]}}}),a=twMerge(N({state:o,className:t}),n==="filter"&&i({state:o,className:t}));return jsx(s.Trigger,{className:a,disabled:o==="disabled",...e})}function q({className:t,name:e,...o}){let{state:n}=b();return jsx("div",{className:L({className:t,state:n}),"data-slot":"control-slot",...o,children:jsx(b$1,{name:e})})}function B({className:t,displayValue:e="",value:o,placeholder:n,...i}){let{variant:a}=b(),p=useMemo(()=>a==="filter"?e:e||n,[e,n,a]);return jsxs("div",{className:"grid w-full items-center",children:[n&&a==="filter"&&jsx(a$1,{children:n}),n&&a==="filter"&&jsx(a$2,{className:"invisible col-start-1 row-start-1 self-center",children:n}),jsx(a$2,{className:"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x z-10 col-start-1 row-start-1 self-center text-left",children:p}),jsx("input",{...i,"aria-readonly":true,className:twJoin("pointer-events-none",t),hidden:true,placeholder:" ",readOnly:true,value:o??""})]})}function D({className:t,value:e,placeholder:o,children:n,...i}){let{variant:a}=b(),p=useMemo(()=>a==="filter"?false:Array.isArray(e)&&e.length===0&&o,[e,o,a]),c=useMemo(()=>Array.isArray(e)&&e.length>0,[e]);return jsxs("div",{className:twMerge(t,"gap-small-1x scrollbar-hide flex w-full overflow-x-hidden","group-disabled:!pl-0"),children:[o&&a==="filter"&&jsx(a$1,{children:o}),o&&a==="filter"&&!c&&jsx(a$2,{className:"invisible",children:o}),p&&jsx(a$2,{className:"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x",children:o}),n,jsx("input",{...i,"aria-readonly":true,className:twMerge(t,"pointer-events-none"),hidden:true,placeholder:c?"":" ",readOnly:true,value:Array.isArray(e)?e.join(","):e})]})}function E({className:t,sideOffset:e=5,side:o="bottom",align:n="start",children:i,...a}){let{state:p}=b();return jsx(s.Portal,{children:jsx(s.Content,{align:n,className:I({className:t,state:p}),side:o,sideOffset:e,...a,children:jsx(a$3,{children:i})})})}function G({className:t,...e}){let{state:o}=b();return jsx("p",{className:O({className:t,state:o}),...e})}function K({className:t,...e}){let{state:o}=b();return jsx("span",{className:F({className:t,state:o}),...e})}function Q(t){return jsx(d,{...t})}function U({className:t,...e$1}){return jsx(e,{className:twMerge(t,"cursor-pointer"),...e$1})}function W(t){return jsx(a$2,{...t})}function X(t){return jsx(b$2,{...t})}function Y(t){return jsx(c,{...t})}export{w as a,J as b,_ as c,q as d,B as e,D as f,E as g,G as h,K as i,Q as j,U as k,W as l,X as m,Y as n};//# sourceMappingURL=chunk-DTNZXDCY.js.map
2
+ //# sourceMappingURL=chunk-DTNZXDCY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/controls/select.tsx"],"names":["select","tv","wrapper","trigger","icon","caption","slotText","content","SelectRoot","className","state","defaultOpen","variant","modal","open","handleOpenChange","props","jsx","FieldContext","SelectTrigger","useFieldContext","filterTrigger","mergedClassName","twMerge","SelectIcon","name","Icon","SelectValue","displayValue","value","placeholder","valueOrPlaceholder","useMemo","jsxs","FloatingLabel","Typography","twJoin","SelectMultiValue","children","shouldShowPlaceholder","hasSelectedItems","SelectContent","sideOffset","side","align","ListRoot","SelectCaption","SelectSlot","SelectOptions","ListContent","SelectOption","ListItem","SelectOptionText","SelectHeader","ListHeader","SelectHeaderTitle","ListHeaderTitle"],"mappings":"8XAmBO,IAAMA,CAAAA,CAASC,GAAG,CACvB,KAAA,CAAO,CACL,OAAA,CAAS,kCAAA,CACT,QAAS,CACP,uDAAA,CACA,yCAAA,CACA,0BAAA,CACA,+CACA,6DAAA,CACA,6BACF,EACA,OAAA,CAAS,CACP,oKACF,CAAA,CACA,IAAA,CAAM,iEAAA,CACN,QAAA,CACE,2FACF,OAAA,CAAS,gCACX,EACA,QAAA,CAAU,CACR,MAAO,CACL,MAAA,CAAQ,CACN,OAAA,CACE,+GACJ,CAAA,CACA,KAAA,CAAO,CACL,OAAA,CACE,6HAAA,CACF,QAAS,wBACX,CAAA,CACA,QAAA,CAAU,CACR,QAAS,wDACX,CACF,CACF,CACF,CAAC,EAEK,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,EAAS,IAAA,CAAAC,CAAAA,CAAM,QAAAC,CAAAA,CAAS,QAAA,CAAAC,EAAU,OAAA,CAAAC,CAAQ,CAAA,CAAIP,CAAAA,GAExD,SAASQ,CAAAA,CAAW,CACzB,SAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,QAAA,CACR,WAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CAAU,SACV,KAAA,CAAAC,CAAAA,CACA,KAAAC,GAAAA,CACA,YAAA,CAAcC,CAAAA,CACd,GAAGC,CACL,CAAA,CAE4C,CAC1C,OACEC,GAAAA,CAAc,CAAA,CAAA,IAAA,CAAb,CACC,WAAA,CAAaN,CAAAA,CACb,KAAA,CAAOE,CAAAA,CACP,KAAMC,GAAAA,CACN,YAAA,CAAcC,EAEd,QAAA,CAAAE,GAAAA,CAACC,EAAa,QAAA,CAAb,CAAsB,KAAA,CAAO,CAAE,MAAAR,CAAAA,CAAO,OAAA,CAAAE,CAAQ,CAAA,CAC7C,QAAA,CAAAK,IAAC,KAAA,CAAA,CAAI,SAAA,CAAWf,CAAAA,CAAQ,CAAE,UAAAO,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,CAAA,CAAI,GAAGM,CAAAA,CAAO,CAAA,CAC5D,CAAA,CACF,CAEJ,CAEO,SAASG,CAAAA,CAAc,CAC5B,SAAA,CAAAV,CAAAA,CACA,GAAGO,CACL,CAAA,CAAgD,CAC9C,GAAM,CAAE,KAAA,CAAAN,CAAAA,CAAO,QAAAE,CAAQ,CAAA,CAAIQ,GAAgB,CAErCC,CAAAA,CAAgBpB,EAAAA,CAAG,CACvB,KAAM,CAAC,uBAAuB,CAAA,CAC9B,QAAA,CAAU,CACR,KAAA,CAAO,CACL,MAAA,CAAQ,CACN,2GACF,CAAA,CACA,KAAA,CAAO,CAAC,6CAA6C,CAAA,CACrD,SAAU,CAAC,yCAAyC,CACtD,CACF,CACF,CAAC,CAAA,CAEKqB,EAAkBC,OAAAA,CACtBpB,CAAAA,CAAQ,CAAE,KAAA,CAAAO,CAAAA,CAAO,SAAA,CAAAD,CAAU,CAAC,CAAA,CAC5BG,CAAAA,GAAY,UAAYS,CAAAA,CAAc,CAAE,MAAAX,CAAAA,CAAO,SAAA,CAAAD,CAAU,CAAC,CAC5D,CAAA,CAEA,OACEQ,IAAc,CAAA,CAAA,OAAA,CAAb,CACC,UAAWK,CAAAA,CACX,QAAA,CAAUZ,CAAAA,GAAU,UAAA,CACnB,GAAGM,CAAAA,CACN,CAEJ,CAEO,SAASQ,CAAAA,CAAW,CACzB,SAAA,CAAAf,CAAAA,CACA,IAAA,CAAAgB,CAAAA,CACA,GAAGT,CACL,CAAA,CAEG,CACD,GAAM,CAAE,MAAAN,CAAM,CAAA,CAAIU,CAAAA,EAAgB,CAElC,OACEH,GAAAA,CAAC,KAAA,CAAA,CACC,UAAWb,CAAAA,CAAK,CAAE,UAAAK,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,EACpC,WAAA,CAAU,cAAA,CACT,GAAGM,CAAAA,CAEJ,SAAAC,GAAAA,CAACS,GAAAA,CAAA,CAAK,IAAA,CAAMD,EAAM,CAAA,CACpB,CAEJ,CAEO,SAASE,CAAAA,CAAY,CAC1B,SAAA,CAAAlB,CAAAA,CACA,YAAA,CAAAmB,CAAAA,CAAe,GACf,KAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CACA,GAAGd,CACL,CAAA,CAAwD,CACtD,GAAM,CAAE,QAAAJ,CAAQ,CAAA,CAAIQ,GAAgB,CAE9BW,CAAAA,CAAqBC,QAAQ,IAC7BpB,CAAAA,GAAY,QAAA,CAAiBgB,CAAAA,CAC1BA,GAAgBE,CAAAA,CACtB,CAACF,EAAcE,CAAAA,CAAalB,CAAO,CAAC,CAAA,CAEvC,OACEqB,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,0BAAA,CACZ,QAAA,CAAA,CAAAH,GAAelB,CAAAA,GAAY,QAAA,EAC1BK,IAACiB,GAAAA,CAAA,CAAe,QAAA,CAAAJ,CAAAA,CAAY,EAG7BA,CAAAA,EAAelB,CAAAA,GAAY,UAC1BK,GAAAA,CAACkB,GAAAA,CAAA,CAAW,SAAA,CAAU,+CAAA,CACnB,QAAA,CAAAL,CAAAA,CACH,EAGFb,GAAAA,CAACkB,GAAAA,CAAA,CAAW,SAAA,CAAU,mIAAA,CACnB,SAAAJ,CAAAA,CACH,CAAA,CAEAd,GAAAA,CAAC,OAAA,CAAA,CACE,GAAGD,CAAAA,CACJ,eAAA,CAAe,IAAA,CACf,SAAA,CAAWoB,OAAO,qBAAA,CAAuB3B,CAAS,CAAA,CAClD,MAAA,CAAQ,KACR,WAAA,CAAa,GAAA,CACb,SAAU,IAAA,CACV,KAAA,CAAOoB,GAAS,EAAA,CAClB,CAAA,CAAA,CACF,CAEJ,CAEO,SAASQ,CAAAA,CAAiB,CAC/B,UAAA5B,CAAAA,CACA,KAAA,CAAAoB,EACA,WAAA,CAAAC,CAAAA,CACA,QAAA,CAAAQ,CAAAA,CACA,GAAGtB,CACL,CAAA,CAA4B,CAC1B,GAAM,CAAE,QAAAJ,CAAQ,CAAA,CAAIQ,CAAAA,EAAgB,CAE9BmB,EAAwBP,OAAAA,CAAQ,IAChCpB,IAAY,QAAA,CAAiB,KAAA,CAC1B,MAAM,OAAA,CAAQiB,CAAK,CAAA,EAAKA,CAAAA,CAAM,SAAW,CAAA,EAAKC,CAAAA,CACpD,CAACD,CAAAA,CAAOC,CAAAA,CAAalB,CAAO,CAAC,CAAA,CAE1B4B,CAAAA,CAAmBR,OAAAA,CAAQ,IACxB,KAAA,CAAM,OAAA,CAAQH,CAAK,CAAA,EAAKA,CAAAA,CAAM,OAAS,CAAA,CAC7C,CAACA,CAAK,CAAC,EAEV,OACEI,IAAAA,CAAC,OACC,SAAA,CAAWV,OAAAA,CACTd,EACA,2DAAA,CACA,sBACF,CAAA,CAEC,QAAA,CAAA,CAAAqB,GAAelB,CAAAA,GAAY,QAAA,EAC1BK,GAAAA,CAACiB,GAAAA,CAAA,CAAe,QAAA,CAAAJ,CAAAA,CAAY,CAAA,CAG7BA,CAAAA,EAAelB,IAAY,QAAA,EAAY,CAAC4B,GACvCvB,GAAAA,CAACkB,GAAAA,CAAA,CAAW,SAAA,CAAU,WAAA,CAAa,QAAA,CAAAL,CAAAA,CAAY,EAGhDS,CAAAA,EACCtB,GAAAA,CAACkB,IAAA,CAAW,SAAA,CAAU,iFACnB,QAAA,CAAAL,CAAAA,CACH,CAAA,CAGDQ,CAAAA,CAEDrB,IAAC,OAAA,CAAA,CACE,GAAGD,EACJ,eAAA,CAAe,IAAA,CACf,UAAWO,OAAAA,CAAQd,CAAAA,CAAW,qBAAqB,CAAA,CACnD,OAAQ,IAAA,CACR,WAAA,CAAa+B,EAAmB,EAAA,CAAK,GAAA,CACrC,SAAU,IAAA,CACV,KAAA,CAAO,KAAA,CAAM,OAAA,CAAQX,CAAK,CAAA,CAAIA,CAAAA,CAAM,KAAK,GAAG,CAAA,CAAIA,EAClD,CAAA,CAAA,CACF,CAEJ,CAEO,SAASY,EAAc,CAC5B,SAAA,CAAAhC,EACA,UAAA,CAAAiC,CAAAA,CAAa,EACb,IAAA,CAAAC,CAAAA,CAAO,QAAA,CACP,KAAA,CAAAC,EAAQ,OAAA,CACR,QAAA,CAAAN,EACA,GAAGtB,CACL,EAAgD,CAC9C,GAAM,CAAE,KAAA,CAAAN,CAAM,CAAA,CAAIU,CAAAA,EAAgB,CAElC,OACEH,IAAc,CAAA,CAAA,MAAA,CAAb,CACC,QAAA,CAAAA,GAAAA,CAAc,UAAb,CACC,KAAA,CAAO2B,EACP,SAAA,CAAWrC,CAAAA,CAAQ,CAAE,SAAA,CAAAE,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,CAAA,CACvC,IAAA,CAAMiC,EACN,UAAA,CAAYD,CAAAA,CACX,GAAG1B,CAAAA,CAEJ,QAAA,CAAAC,GAAAA,CAAC4B,GAAAA,CAAA,CAAU,QAAA,CAAAP,CAAAA,CAAS,EACtB,CAAA,CACF,CAEJ,CAEO,SAASQ,CAAAA,CAAc,CAAE,SAAA,CAAArC,EAAW,GAAGO,CAAM,EAAwB,CAC1E,GAAM,CAAE,KAAA,CAAAN,CAAM,CAAA,CAAIU,CAAAA,GAClB,OAAOH,GAAAA,CAAC,KAAE,SAAA,CAAWZ,CAAAA,CAAQ,CAAE,SAAA,CAAAI,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,CAAA,CAAI,GAAGM,EAAO,CACjE,CAEO,SAAS+B,CAAAA,CAAW,CAAE,SAAA,CAAAtC,CAAAA,CAAW,GAAGO,CAAM,CAAA,CAA2B,CAC1E,GAAM,CAAE,MAAAN,CAAM,CAAA,CAAIU,CAAAA,EAAgB,CAClC,OAAOH,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAWX,CAAAA,CAAS,CAAE,UAAAG,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,EAAI,GAAGM,CAAAA,CAAO,CACrE,CAEO,SAASgC,EAAchC,CAAAA,CAA2C,CACvE,OAAOC,GAAAA,CAACgC,EAAA,CAAa,GAAGjC,EAAO,CACjC,CAEO,SAASkC,CAAAA,CAAa,CAC3B,SAAA,CAAAzC,CAAAA,CACA,GAAGO,GACL,CAAA,CAAoC,CAClC,OACEC,GAAAA,CAACkC,EAAA,CAAS,SAAA,CAAW5B,OAAAA,CAAQd,CAAAA,CAAW,gBAAgB,CAAA,CAAI,GAAGO,IAAO,CAE1E,CAEO,SAASoC,CAAAA,CAAiBpC,CAAAA,CAA0C,CACzE,OAAOC,IAACkB,GAAAA,CAAA,CAAY,GAAGnB,CAAAA,CAAO,CAChC,CAEO,SAASqC,CAAAA,CAAarC,CAAAA,CAA0C,CACrE,OAAOC,GAAAA,CAACqC,GAAAA,CAAA,CAAY,GAAGtC,CAAAA,CAAO,CAChC,CAEO,SAASuC,CAAAA,CACdvC,CAAAA,CACA,CACA,OAAOC,GAAAA,CAACuC,EAAA,CAAiB,GAAGxC,EAAO,CACrC","file":"chunk-DTNZXDCY.js","sourcesContent":["import { tv, twJoin, twMerge } from '@xjur-ui/util'\nimport { useMemo, type ComponentProps } from 'react'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport { Icon, type IconType } from '../icon'\nimport { Typography } from '../typography'\nimport {\n ListHeaderTitle,\n ListHeader,\n ListContent,\n ListItem,\n ListRoot\n} from '../list'\nimport {\n FieldContext,\n useFieldContext,\n type FieldContextValue\n} from './context/field.context'\nimport { FloatingLabel } from './floating-label'\n\nexport const select = tv({\n slots: {\n wrapper: 'group flex flex-col gap-small-2x',\n trigger: [\n 'h-large-4x w-auto inline-flex cursor-pointer relative',\n 'items-center gap-small rounded-small-1x',\n 'py-small_1x-alt px-small',\n 'bg-layer-2-idle border border-border-layer-2',\n 'group-has-[div[data-slot=input-action-slot]]:rounded-r-none',\n 'transition-all duration-200'\n ],\n content: [\n 'group z-1000 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-content-available-width)] min-w-[var(--radix-popover-trigger-width)]'\n ],\n icon: 'size-large text-icon-neutral-3 flex items-center justify-center',\n slotText:\n 'size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder',\n caption: '!text-size-body-sm font-normal'\n },\n variants: {\n state: {\n normal: {\n trigger:\n 'hover:border-border-layer-3 data-[state=open]:border-primary-idle data-[state=open]:hover:border-primary-idle'\n },\n error: {\n trigger:\n 'border-danger-idle hover:border-danger-idle data-[state=open]:border-danger-idle data-[state=open]:hover:border-danger-idle',\n caption: 'text-danger-label-idle'\n },\n disabled: {\n trigger: 'pointer-events-none border-transparent bg-layer-2-idle'\n }\n }\n }\n})\n\nconst { wrapper, trigger, icon, caption, slotText, content } = select()\n\nexport function SelectRoot({\n className,\n state = 'normal',\n defaultOpen,\n variant = 'normal',\n modal,\n open,\n onOpenChange: handleOpenChange,\n ...props\n}: ComponentProps<'div'> &\n FieldContextValue &\n ComponentProps<typeof RadixPopover.Root>) {\n return (\n <RadixPopover.Root\n defaultOpen={defaultOpen}\n modal={modal}\n open={open}\n onOpenChange={handleOpenChange}\n >\n <FieldContext.Provider value={{ state, variant }}>\n <div className={wrapper({ className, state })} {...props} />\n </FieldContext.Provider>\n </RadixPopover.Root>\n )\n}\n\nexport function SelectTrigger({\n className,\n ...props\n}: ComponentProps<typeof RadixPopover.Trigger>) {\n const { state, variant } = useFieldContext()\n\n const filterTrigger = tv({\n base: ['group bg-layer-2-idle'],\n variants: {\n state: {\n normal: [\n 'border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle'\n ],\n error: ['border-danger-idle hover:border-danger-idle'],\n disabled: ['border border-border-layer-2 opacity-60']\n }\n }\n })\n\n const mergedClassName = twMerge(\n trigger({ state, className }),\n variant === 'filter' && filterTrigger({ state, className })\n )\n\n return (\n <RadixPopover.Trigger\n className={mergedClassName}\n disabled={state === 'disabled'}\n {...props}\n />\n )\n}\n\nexport function SelectIcon({\n className,\n name,\n ...props\n}: ComponentProps<'div'> & {\n name: IconType\n}) {\n const { state } = useFieldContext()\n\n return (\n <div\n className={icon({ className, state })}\n data-slot=\"control-slot\"\n {...props}\n >\n <Icon name={name} />\n </div>\n )\n}\n\nexport function SelectValue({\n className,\n displayValue = '',\n value,\n placeholder,\n ...props\n}: ComponentProps<'input'> & { displayValue?: string }) {\n const { variant } = useFieldContext()\n\n const valueOrPlaceholder = useMemo(() => {\n if (variant === 'filter') return displayValue\n return displayValue || placeholder\n }, [displayValue, placeholder, variant])\n\n return (\n <div className=\"grid w-full items-center\">\n {placeholder && variant === 'filter' && (\n <FloatingLabel>{placeholder}</FloatingLabel>\n )}\n\n {placeholder && variant === 'filter' && (\n <Typography className=\"invisible col-start-1 row-start-1 self-center\">\n {placeholder}\n </Typography>\n )}\n\n <Typography className=\"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x z-10 col-start-1 row-start-1 self-center text-left\">\n {valueOrPlaceholder}\n </Typography>\n\n <input\n {...props}\n aria-readonly={true}\n className={twJoin('pointer-events-none', className)}\n hidden={true}\n placeholder={' '}\n readOnly={true}\n value={value ?? ''}\n />\n </div>\n )\n}\n\nexport function SelectMultiValue({\n className,\n value,\n placeholder,\n children,\n ...props\n}: ComponentProps<'input'>) {\n const { variant } = useFieldContext()\n\n const shouldShowPlaceholder = useMemo(() => {\n if (variant === 'filter') return false\n return Array.isArray(value) && value.length === 0 && placeholder\n }, [value, placeholder, variant])\n\n const hasSelectedItems = useMemo(() => {\n return Array.isArray(value) && value.length > 0\n }, [value])\n\n return (\n <div\n className={twMerge(\n className,\n 'gap-small-1x scrollbar-hide flex w-full overflow-x-hidden',\n 'group-disabled:!pl-0'\n )}\n >\n {placeholder && variant === 'filter' && (\n <FloatingLabel>{placeholder}</FloatingLabel>\n )}\n\n {placeholder && variant === 'filter' && !hasSelectedItems && (\n <Typography className=\"invisible\">{placeholder}</Typography>\n )}\n\n {shouldShowPlaceholder && (\n <Typography className=\"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x\">\n {placeholder}\n </Typography>\n )}\n\n {children}\n\n <input\n {...props}\n aria-readonly={true}\n className={twMerge(className, 'pointer-events-none')}\n hidden={true}\n placeholder={hasSelectedItems ? '' : ' '}\n readOnly={true}\n value={Array.isArray(value) ? value.join(',') : value}\n />\n </div>\n )\n}\n\nexport function SelectContent({\n className,\n sideOffset = 5,\n side = 'bottom',\n align = 'start',\n children,\n ...props\n}: ComponentProps<typeof RadixPopover.Content>) {\n const { state } = useFieldContext()\n\n return (\n <RadixPopover.Portal>\n <RadixPopover.Content\n align={align}\n className={content({ className, state })}\n side={side}\n sideOffset={sideOffset}\n {...props}\n >\n <ListRoot>{children}</ListRoot>\n </RadixPopover.Content>\n </RadixPopover.Portal>\n )\n}\n\nexport function SelectCaption({ className, ...props }: ComponentProps<'p'>) {\n const { state } = useFieldContext()\n return <p className={caption({ className, state })} {...props} />\n}\n\nexport function SelectSlot({ className, ...props }: ComponentProps<'span'>) {\n const { state } = useFieldContext()\n return <span className={slotText({ className, state })} {...props} />\n}\n\nexport function SelectOptions(props: ComponentProps<typeof ListContent>) {\n return <ListContent {...props} />\n}\n\nexport function SelectOption({\n className,\n ...props\n}: ComponentProps<typeof ListItem>) {\n return (\n <ListItem className={twMerge(className, 'cursor-pointer')} {...props} />\n )\n}\n\nexport function SelectOptionText(props: ComponentProps<typeof Typography>) {\n return <Typography {...props} />\n}\n\nexport function SelectHeader(props: ComponentProps<typeof ListHeader>) {\n return <ListHeader {...props} />\n}\n\nexport function SelectHeaderTitle(\n props: ComponentProps<typeof ListHeaderTitle>\n) {\n return <ListHeaderTitle {...props} />\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {b}from'./chunk-SXGSWVMZ.js';import {b as b$1,c,f,d,h,k,l,m}from'./chunk-2JU3PFV2.js';import {useMemo}from'react';import {jsx,jsxs}from'react/jsx-runtime';var s=[{name:"M\xEAs",value:"month"},{name:"Semana",value:"week"},{name:"Dia",value:"day"}];function V(){let{calendarView:l$1,handleChangeView:S}=b(),v=useMemo(()=>s.find(e=>e.value===l$1)?.name,[l$1]);return jsx("div",{className:"w-[94px]",children:jsxs(b$1,{children:[jsxs(c,{children:[jsx(f,{displayValue:v,name:"calendar-toggle-view",value:l$1}),jsx(d,{className:"text-icon-neutral-3",name:"keyboard_arrow_down"})]}),jsx(h,{children:jsx(k,{children:s.map(e=>jsx(l,{isActive:l$1===e.value,value:e.value,onClick:()=>S(e.value),children:jsx(m,{children:e.name})},e.value))})})]})})}export{V as a};//# sourceMappingURL=chunk-G6NSC3FL.js.map
2
- //# sourceMappingURL=chunk-G6NSC3FL.js.map
1
+ import {b}from'./chunk-SXGSWVMZ.js';import {b as b$1,c,e,d,g,j,k,l}from'./chunk-DTNZXDCY.js';import {useMemo}from'react';import {jsx,jsxs}from'react/jsx-runtime';var s=[{name:"M\xEAs",value:"month"},{name:"Semana",value:"week"},{name:"Dia",value:"day"}];function V(){let{calendarView:l$1,handleChangeView:S}=b(),v=useMemo(()=>s.find(e=>e.value===l$1)?.name,[l$1]);return jsx("div",{className:"w-[94px]",children:jsxs(b$1,{children:[jsxs(c,{children:[jsx(e,{displayValue:v,name:"calendar-toggle-view",value:l$1}),jsx(d,{className:"text-icon-neutral-3",name:"keyboard_arrow_down"})]}),jsx(g,{children:jsx(j,{children:s.map(e=>jsx(k,{isActive:l$1===e.value,value:e.value,onClick:()=>S(e.value),children:jsx(l,{children:e.name})},e.value))})})]})})}export{V as a};//# sourceMappingURL=chunk-MTIWFWRN.js.map
2
+ //# sourceMappingURL=chunk-MTIWFWRN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/full-calendar/calendar-toggle-view.tsx"],"names":["views","CalendarToggleView","calendarView","handleChangeView","useFullCalendar","displayValue","useMemo","view","jsx","jsxs","SelectRoot","SelectTrigger","SelectValue","SelectIcon","SelectContent","SelectOptions","SelectOption","SelectOptionText"],"mappings":"kKAcA,IAAMA,CAAAA,CAAsD,CAC1D,CAAE,IAAA,CAAM,QAAA,CAAO,KAAA,CAAO,OAAQ,CAAA,CAC9B,CAAE,IAAA,CAAM,QAAA,CAAU,KAAA,CAAO,MAAO,CAAA,CAChC,CAAE,IAAA,CAAM,KAAA,CAAO,KAAA,CAAO,KAAM,CAC9B,CAAA,CAEO,SAASC,CAAAA,EAAqB,CACnC,GAAM,CAAE,YAAA,CAAAC,GAAAA,CAAc,gBAAA,CAAAC,CAAiB,CAAA,CAAIC,CAAAA,EAAgB,CAErDC,CAAAA,CAAeC,OAAAA,CACnB,IAAMN,EAAM,IAAA,CAAKO,CAAAA,EAAQA,CAAAA,CAAK,KAAA,GAAUL,GAAY,CAAA,EAAG,IAAA,CACvD,CAACA,GAAY,CACf,CAAA,CAEA,OACEM,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACb,SAAAC,IAAAA,CAACC,GAAAA,CAAA,CACC,QAAA,CAAA,CAAAD,IAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CACC,YAAA,CAAcP,CAAAA,CACd,IAAA,CAAK,sBAAA,CACL,KAAA,CAAOH,IACT,CAAA,CACAM,GAAAA,CAACK,CAAAA,CAAA,CACC,SAAA,CAAU,qBAAA,CACV,IAAA,CAAK,qBAAA,CACP,CAAA,CAAA,CACF,CAAA,CAEAL,GAAAA,CAACM,CAAAA,CAAA,CACC,QAAA,CAAAN,GAAAA,CAACO,CAAAA,CAAA,CACE,QAAA,CAAAf,CAAAA,CAAM,GAAA,CAAIO,CAAAA,EACTC,GAAAA,CAACQ,CAAAA,CAAA,CACC,QAAA,CAAUd,GAAAA,GAAiBK,CAAAA,CAAK,KAAA,CAEhC,KAAA,CAAOA,CAAAA,CAAK,KAAA,CACZ,OAAA,CAAS,IAAMJ,EAAiBI,CAAAA,CAAK,KAAK,CAAA,CAE1C,QAAA,CAAAC,GAAAA,CAACS,CAAAA,CAAA,CAAkB,QAAA,CAAAV,EAAK,IAAA,CAAK,CAAA,CAAA,CAJxBA,CAAAA,CAAK,KAKZ,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAEJ","file":"chunk-G6NSC3FL.js","sourcesContent":["import { useMemo } from 'react'\nimport {\n SelectContent,\n SelectOption,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n SelectOptions,\n SelectOptionText,\n SelectIcon\n} from '../controls/select'\nimport type { CalendarView } from './types/calendar-view'\nimport { useFullCalendar } from './calendar-root'\n\nconst views: Array<{ name: string; value: CalendarView }> = [\n { name: 'Mês', value: 'month' },\n { name: 'Semana', value: 'week' },\n { name: 'Dia', value: 'day' }\n]\n\nexport function CalendarToggleView() {\n const { calendarView, handleChangeView } = useFullCalendar()\n\n const displayValue = useMemo(\n () => views.find(view => view.value === calendarView)?.name,\n [calendarView]\n )\n\n return (\n <div className=\"w-[94px]\">\n <SelectRoot>\n <SelectTrigger>\n <SelectValue\n displayValue={displayValue}\n name=\"calendar-toggle-view\"\n value={calendarView}\n />\n <SelectIcon\n className=\"text-icon-neutral-3\"\n name=\"keyboard_arrow_down\"\n />\n </SelectTrigger>\n\n <SelectContent>\n <SelectOptions>\n {views.map(view => (\n <SelectOption\n isActive={calendarView === view.value}\n key={view.value}\n value={view.value}\n onClick={() => handleChangeView(view.value)}\n >\n <SelectOptionText>{view.name}</SelectOptionText>\n </SelectOption>\n ))}\n </SelectOptions>\n </SelectContent>\n </SelectRoot>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/full-calendar/calendar-toggle-view.tsx"],"names":["views","CalendarToggleView","calendarView","handleChangeView","useFullCalendar","displayValue","useMemo","view","jsx","jsxs","SelectRoot","SelectTrigger","SelectValue","SelectIcon","SelectContent","SelectOptions","SelectOption","SelectOptionText"],"mappings":"kKAcA,IAAMA,CAAAA,CAAsD,CAC1D,CAAE,IAAA,CAAM,QAAA,CAAO,KAAA,CAAO,OAAQ,CAAA,CAC9B,CAAE,IAAA,CAAM,QAAA,CAAU,KAAA,CAAO,MAAO,CAAA,CAChC,CAAE,IAAA,CAAM,KAAA,CAAO,KAAA,CAAO,KAAM,CAC9B,CAAA,CAEO,SAASC,CAAAA,EAAqB,CACnC,GAAM,CAAE,YAAA,CAAAC,GAAAA,CAAc,gBAAA,CAAAC,CAAiB,CAAA,CAAIC,CAAAA,EAAgB,CAErDC,CAAAA,CAAeC,OAAAA,CACnB,IAAMN,EAAM,IAAA,CAAKO,CAAAA,EAAQA,CAAAA,CAAK,KAAA,GAAUL,GAAY,CAAA,EAAG,IAAA,CACvD,CAACA,GAAY,CACf,CAAA,CAEA,OACEM,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACb,SAAAC,IAAAA,CAACC,GAAAA,CAAA,CACC,QAAA,CAAA,CAAAD,IAAAA,CAACE,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CACC,YAAA,CAAcP,CAAAA,CACd,IAAA,CAAK,sBAAA,CACL,KAAA,CAAOH,IACT,CAAA,CACAM,GAAAA,CAACK,CAAAA,CAAA,CACC,SAAA,CAAU,qBAAA,CACV,IAAA,CAAK,qBAAA,CACP,CAAA,CAAA,CACF,CAAA,CAEAL,GAAAA,CAACM,CAAAA,CAAA,CACC,QAAA,CAAAN,GAAAA,CAACO,CAAAA,CAAA,CACE,QAAA,CAAAf,CAAAA,CAAM,GAAA,CAAIO,CAAAA,EACTC,GAAAA,CAACQ,CAAAA,CAAA,CACC,QAAA,CAAUd,GAAAA,GAAiBK,CAAAA,CAAK,KAAA,CAEhC,KAAA,CAAOA,CAAAA,CAAK,KAAA,CACZ,OAAA,CAAS,IAAMJ,EAAiBI,CAAAA,CAAK,KAAK,CAAA,CAE1C,QAAA,CAAAC,GAAAA,CAACS,CAAAA,CAAA,CAAkB,QAAA,CAAAV,EAAK,IAAA,CAAK,CAAA,CAAA,CAJxBA,CAAAA,CAAK,KAKZ,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,EACF,CAEJ","file":"chunk-MTIWFWRN.js","sourcesContent":["import { useMemo } from 'react'\nimport {\n SelectContent,\n SelectOption,\n SelectRoot,\n SelectTrigger,\n SelectValue,\n SelectOptions,\n SelectOptionText,\n SelectIcon\n} from '../controls/select'\nimport type { CalendarView } from './types/calendar-view'\nimport { useFullCalendar } from './calendar-root'\n\nconst views: Array<{ name: string; value: CalendarView }> = [\n { name: 'Mês', value: 'month' },\n { name: 'Semana', value: 'week' },\n { name: 'Dia', value: 'day' }\n]\n\nexport function CalendarToggleView() {\n const { calendarView, handleChangeView } = useFullCalendar()\n\n const displayValue = useMemo(\n () => views.find(view => view.value === calendarView)?.name,\n [calendarView]\n )\n\n return (\n <div className=\"w-[94px]\">\n <SelectRoot>\n <SelectTrigger>\n <SelectValue\n displayValue={displayValue}\n name=\"calendar-toggle-view\"\n value={calendarView}\n />\n <SelectIcon\n className=\"text-icon-neutral-3\"\n name=\"keyboard_arrow_down\"\n />\n </SelectTrigger>\n\n <SelectContent>\n <SelectOptions>\n {views.map(view => (\n <SelectOption\n isActive={calendarView === view.value}\n key={view.value}\n value={view.value}\n onClick={() => handleChangeView(view.value)}\n >\n <SelectOptionText>{view.name}</SelectOptionText>\n </SelectOption>\n ))}\n </SelectOptions>\n </SelectContent>\n </SelectRoot>\n </div>\n )\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a as a$2}from'./chunk-PBR7SFWY.js';import {a as a$1}from'./chunk-JGPHBUVM.js';import {a,b}from'./chunk-2JQVYVAT.js';import {a as a$3}from'./chunk-CBFC4QME.js';import {b as b$1}from'./chunk-DVDHTP4C.js';import {tv,twMerge}from'@xjur-ui/util';import {InputMask}from'@react-input/mask';import {InputNumberFormat}from'@react-input/number-format';import {jsx,jsxs}from'react/jsx-runtime';var y=tv({slots:{wrapper:"group flex w-full flex-col gap-small-2x",trigger:["h-large-4x w-full relative","flex items-center gap-small rounded-small-1x","py-small_1x-alt px-small","bg-layer-2-hover border border-transparent","group-has-[div[data-slot=input-action-slot]]:rounded-r-none","transition-all duration-200"],content:"flex w-full",value:"text-size-body-md font-normal placeholder:text-neutral-placeholder flex-1 outline-none",icon:"size-large text-icon-neutral-3 flex items-center justify-center",slotText:"size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder",caption:"!text-size-body-sm font-normal",action:"h-large-4x overflow-hidden"},variants:{state:{normal:{trigger:"hover:border-border-layer-1 focus-within:border-primary-idle focus-within:hover:border-primary-idle"},error:{trigger:"border-danger-idle hover:border-danger-idle focus-within:border-danger-idle focus-within:hover:border-danger-idle",caption:"text-danger-label-idle"},disabled:{trigger:"pointer-events-none border-transparent bg-layer-2-idle"}}}}),{wrapper:h,trigger:I,content:C,value:p,icon:N,caption:w,action:P,slotText:k}=y();function R({className:e,state:t="normal",customMask:r,variant:n="normal",mask:a$1,...l}){return jsx(a.Provider,{value:{state:t,customMask:r,mask:a$1,variant:n},children:jsx("div",{className:h({className:e,state:t}),...l})})}function S({className:e,...t}){let{state:r}=b();return jsx("div",{className:C({className:e,state:r}),...t})}function V(e){return jsx(a$1,{...e})}function B({className:e,...t}){let{state:r,variant:n}=b(),a=tv({base:["group bg-layer-2-idle relative"],variants:{state:{normal:["border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle"],error:["border-danger-idle hover:border-danger-idle"],disabled:["border border-border-layer-2 opacity-60"]}}}),l=twMerge(I({state:r,className:e}),n==="filter"&&a({state:r,className:e}));return jsx("div",{"aria-disabled":r==="disabled",className:l,...t})}function q({className:e,placeholder:t,...r}){let{customMask:n,state:a,mask:l,variant:d}=b();return jsx(InputMask,{...r,...l?{...a$2(l)}:n&&{...n},className:p({className:e,state:a}),disabled:a==="disabled",placeholder:d==="filter"?" ":t,readOnly:a==="disabled"})}function E({className:e,placeholder:t,...r}){let{state:n,variant:a}=b();return jsx("input",{...r,className:p({className:e,state:n}),disabled:n==="disabled",placeholder:a==="filter"?" ":t,readOnly:n==="disabled"})}function G({className:e,locales:t="pt-BR",placeholder:r,groupDisplay:n=false,...a}){let{state:l,variant:d}=b();return jsx(InputNumberFormat,{...a,className:p({className:e,state:l}),disabled:l==="disabled",groupDisplay:n,locales:t,placeholder:d==="filter"?" ":r,readOnly:l==="disabled"})}function H({className:e,name:t,...r}){let{state:n}=b();return jsx("div",{className:N({className:e,state:n}),...r,children:jsx(b$1,{name:t})})}function J({className:e,...t}){let{state:r}=b();return jsx("span",{className:k({className:e,state:r}),...t})}function K({className:e,...t}){let{state:r}=b();return jsx("p",{className:w({className:e,state:r}),...t})}function F({className:e,...t}){let{state:r}=b();return jsx("div",{className:P({className:e,state:r}),"data-slot":"input-action-slot",...t})}function Q({handleIncrement:e,handleDecrement:t}){return jsxs(F,{className:"w-large-4x border-border-layer-2 rounded-r-small-1x bg-layer-2-hover flex flex-col items-center justify-center border",children:[jsx("button",{className:"flex h-1/2 items-center justify-center",type:"button",onClick:e,children:jsx(b$1,{className:"text-icon-neutral-3",name:"keyboard_arrow_up"})}),jsx(a$3,{}),jsx("button",{className:"flex h-1/2 items-center justify-center",type:"button",onClick:t,children:jsx(b$1,{className:"text-icon-neutral-3",name:"keyboard_arrow_down"})})]})}export{y as a,R as b,S as c,V as d,B as e,q as f,E as g,G as h,H as i,J as j,K as k,F as l,Q as m};//# sourceMappingURL=chunk-3H75F4Y2.js.map
2
- //# sourceMappingURL=chunk-3H75F4Y2.js.map
1
+ import {a as a$2}from'./chunk-PBR7SFWY.js';import {a as a$1}from'./chunk-JGPHBUVM.js';import {a,b}from'./chunk-2JQVYVAT.js';import {a as a$3}from'./chunk-CBFC4QME.js';import {b as b$1}from'./chunk-DVDHTP4C.js';import {tv,twMerge}from'@xjur-ui/util';import {InputMask}from'@react-input/mask';import {InputNumberFormat}from'@react-input/number-format';import {jsx,jsxs}from'react/jsx-runtime';var y=tv({slots:{wrapper:"group flex flex-col gap-small-2x",trigger:["h-large-4x relative","inline-flex w-auto items-center gap-small rounded-small-1x","py-small_1x-alt px-small","bg-layer-2-hover border border-transparent","group-has-[div[data-slot=input-action-slot]]:rounded-r-none","transition-all duration-200"],content:"flex w-full",value:"text-size-body-md font-normal placeholder:text-neutral-placeholder flex-1 outline-none",icon:"size-large text-icon-neutral-3 flex items-center justify-center",slotText:"size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder",caption:"!text-size-body-sm font-normal",action:"h-large-4x overflow-hidden"},variants:{state:{normal:{trigger:"hover:border-border-layer-1 focus-within:border-primary-idle focus-within:hover:border-primary-idle"},error:{trigger:"border-danger-idle hover:border-danger-idle focus-within:border-danger-idle focus-within:hover:border-danger-idle",caption:"text-danger-label-idle"},disabled:{trigger:"pointer-events-none border-transparent bg-layer-2-idle"}}}}),{wrapper:h,trigger:I,content:C,value:p,icon:N,caption:w,action:P,slotText:k}=y();function R({className:e,state:t="normal",customMask:r,variant:n="normal",mask:a$1,...l}){return jsx(a.Provider,{value:{state:t,customMask:r,mask:a$1,variant:n},children:jsx("div",{className:h({className:e,state:t}),...l})})}function S({className:e,...t}){let{state:r}=b();return jsx("div",{className:C({className:e,state:r}),...t})}function V(e){return jsx(a$1,{...e})}function B({className:e,...t}){let{state:r,variant:n}=b(),a=tv({base:["group bg-layer-2-idle relative"],variants:{state:{normal:["border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle"],error:["border-danger-idle hover:border-danger-idle"],disabled:["border border-border-layer-2 opacity-60"]}}}),l=twMerge(I({state:r,className:e}),n==="filter"&&a({state:r,className:e}));return jsx("div",{"aria-disabled":r==="disabled",className:l,...t})}function q({className:e,placeholder:t,...r}){let{customMask:n,state:a,mask:l,variant:d}=b();return jsx(InputMask,{...r,...l?{...a$2(l)}:n&&{...n},className:p({className:e,state:a}),disabled:a==="disabled",placeholder:d==="filter"?" ":t,readOnly:a==="disabled"})}function E({className:e,placeholder:t,...r}){let{state:n,variant:a}=b();return jsx("input",{...r,className:p({className:e,state:n}),disabled:n==="disabled",placeholder:a==="filter"?" ":t,readOnly:n==="disabled"})}function G({className:e,locales:t="pt-BR",placeholder:r,groupDisplay:n=false,...a}){let{state:l,variant:d}=b();return jsx(InputNumberFormat,{...a,className:p({className:e,state:l}),disabled:l==="disabled",groupDisplay:n,locales:t,placeholder:d==="filter"?" ":r,readOnly:l==="disabled"})}function H({className:e,name:t,...r}){let{state:n}=b();return jsx("div",{className:N({className:e,state:n}),"data-slot":"control-slot",...r,children:jsx(b$1,{name:t})})}function J({className:e,...t}){let{state:r}=b();return jsx("span",{className:k({className:e,state:r}),...t})}function K({className:e,...t}){let{state:r}=b();return jsx("p",{className:w({className:e,state:r}),...t})}function F({className:e,...t}){let{state:r}=b();return jsx("div",{className:P({className:e,state:r}),"data-slot":"input-action-slot",...t})}function Q({handleIncrement:e,handleDecrement:t}){return jsxs(F,{className:"w-large-4x border-border-layer-2 rounded-r-small-1x bg-layer-2-hover flex flex-col items-center justify-center border",children:[jsx("button",{className:"flex h-1/2 items-center justify-center",type:"button",onClick:e,children:jsx(b$1,{className:"text-icon-neutral-3",name:"keyboard_arrow_up"})}),jsx(a$3,{}),jsx("button",{className:"flex h-1/2 items-center justify-center",type:"button",onClick:t,children:jsx(b$1,{className:"text-icon-neutral-3",name:"keyboard_arrow_down"})})]})}export{y as a,R as b,S as c,V as d,B as e,q as f,E as g,G as h,H as i,J as j,K as k,F as l,Q as m};//# sourceMappingURL=chunk-TQWBQ452.js.map
2
+ //# sourceMappingURL=chunk-TQWBQ452.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/controls/input.tsx"],"names":["input","tv","wrapper","trigger","content","value","icon","caption","action","slotText","InputRoot","className","state","customMask","variant","mask","props","jsx","FieldContext","InputContent","useFieldContext","InputLabel","FloatingLabel","InputTrigger","filterTrigger","mergedClassName","twMerge","InputMask","placeholder","InputMaskComponent","inputMask","InputText","InputNumber","locales","groupDisplay","InputNumberFormat","InputIcon","name","Icon","InputSlot","InputCaption","InputAction","InputNumericStepper","handleIncrement","handleDecrement","jsxs","Divider"],"mappings":"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","file":"chunk-TQWBQ452.js","sourcesContent":["import { tv, twMerge } from '@xjur-ui/util'\nimport type { ComponentProps } from 'react'\nimport { InputMask as InputMaskComponent } from '@react-input/mask'\nimport {\n InputNumberFormat,\n type InputNumberFormatProps\n} from '@react-input/number-format'\nimport { Icon, type IconType } from '../icon'\nimport { inputMask } from '../../resources/input-mask'\nimport { Divider } from '../divider'\nimport {\n type FieldContextValue,\n FieldContext,\n useFieldContext\n} from './context/field.context'\nimport { FloatingLabel } from './floating-label'\n\nexport const input = tv({\n slots: {\n wrapper: 'group flex flex-col gap-small-2x',\n trigger: [\n 'h-large-4x relative',\n 'inline-flex w-auto items-center gap-small rounded-small-1x',\n 'py-small_1x-alt px-small',\n 'bg-layer-2-hover border border-transparent',\n 'group-has-[div[data-slot=input-action-slot]]:rounded-r-none',\n 'transition-all duration-200'\n ],\n content: 'flex w-full',\n value:\n 'text-size-body-md font-normal placeholder:text-neutral-placeholder flex-1 outline-none',\n icon: 'size-large text-icon-neutral-3 flex items-center justify-center',\n slotText:\n 'size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder',\n caption: '!text-size-body-sm font-normal',\n action: 'h-large-4x overflow-hidden'\n },\n variants: {\n state: {\n normal: {\n trigger:\n 'hover:border-border-layer-1 focus-within:border-primary-idle focus-within:hover:border-primary-idle'\n },\n error: {\n trigger:\n 'border-danger-idle hover:border-danger-idle focus-within:border-danger-idle focus-within:hover:border-danger-idle',\n caption: 'text-danger-label-idle'\n },\n disabled: {\n trigger: 'pointer-events-none border-transparent bg-layer-2-idle'\n }\n }\n }\n})\n\nconst { wrapper, trigger, content, value, icon, caption, action, slotText } =\n input()\n\nexport function InputRoot({\n className,\n state = 'normal',\n customMask,\n variant = 'normal',\n mask,\n ...props\n}: ComponentProps<'div'> & FieldContextValue) {\n return (\n <FieldContext.Provider value={{ state, customMask, mask, variant }}>\n <div className={wrapper({ className, state })} {...props} />\n </FieldContext.Provider>\n )\n}\n\nexport function InputContent({ className, ...props }: ComponentProps<'div'>) {\n const { state } = useFieldContext()\n return <div className={content({ className, state })} {...props} />\n}\n\nexport function InputLabel(props: ComponentProps<typeof FloatingLabel>) {\n return <FloatingLabel {...props} />\n}\n\nexport function InputTrigger({ className, ...props }: ComponentProps<'div'>) {\n const { state, variant } = useFieldContext()\n\n const filterTrigger = tv({\n base: ['group bg-layer-2-idle relative'],\n variants: {\n state: {\n normal: [\n 'border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle'\n ],\n error: ['border-danger-idle hover:border-danger-idle'],\n disabled: ['border border-border-layer-2 opacity-60']\n }\n }\n })\n\n const mergedClassName = twMerge(\n trigger({ state, className }),\n variant === 'filter' && filterTrigger({ state, className })\n )\n\n return (\n <div\n aria-disabled={state === 'disabled'}\n className={mergedClassName}\n {...props}\n />\n )\n}\n\nexport function InputMask({\n className,\n placeholder,\n ...props\n}: ComponentProps<'input'>) {\n const { customMask, state, mask, variant } = useFieldContext()\n\n return (\n <InputMaskComponent\n {...props}\n {...(mask ? { ...inputMask(mask) } : customMask && { ...customMask })}\n className={value({ className, state })}\n disabled={state === 'disabled'}\n placeholder={variant === 'filter' ? ' ' : placeholder}\n readOnly={state === 'disabled'}\n />\n )\n}\n\nexport function InputText({\n className,\n placeholder,\n ...props\n}: ComponentProps<'input'>) {\n const { state, variant } = useFieldContext()\n\n return (\n <input\n {...props}\n className={value({ className, state })}\n disabled={state === 'disabled'}\n placeholder={variant === 'filter' ? ' ' : placeholder}\n readOnly={state === 'disabled'}\n />\n )\n}\n\nexport function InputNumber({\n className,\n locales = 'pt-BR',\n placeholder,\n groupDisplay = false,\n ...props\n}: InputNumberFormatProps) {\n const { state, variant } = useFieldContext()\n\n return (\n <InputNumberFormat\n {...props}\n className={value({ className, state })}\n disabled={state === 'disabled'}\n groupDisplay={groupDisplay}\n locales={locales}\n placeholder={variant === 'filter' ? ' ' : placeholder}\n readOnly={state === 'disabled'}\n />\n )\n}\n\nexport function InputIcon({\n className,\n name,\n ...props\n}: ComponentProps<'div'> & {\n name: IconType\n}) {\n const { state } = useFieldContext()\n\n return (\n <div\n className={icon({ className, state })}\n data-slot=\"control-slot\"\n {...props}\n >\n <Icon name={name} />\n </div>\n )\n}\n\nexport function InputSlot({ className, ...props }: ComponentProps<'span'>) {\n const { state } = useFieldContext()\n return <span className={slotText({ className, state })} {...props} />\n}\n\nexport function InputCaption({ className, ...props }: ComponentProps<'p'>) {\n const { state } = useFieldContext()\n return <p className={caption({ className, state })} {...props} />\n}\n\nexport function InputAction({ className, ...props }: ComponentProps<'div'>) {\n const { state } = useFieldContext()\n return (\n <div\n className={action({ className, state })}\n data-slot=\"input-action-slot\"\n {...props}\n />\n )\n}\n\nexport function InputNumericStepper({\n handleIncrement,\n handleDecrement\n}: {\n handleIncrement: () => void\n handleDecrement: () => void\n}) {\n return (\n <InputAction className=\"w-large-4x border-border-layer-2 rounded-r-small-1x bg-layer-2-hover flex flex-col items-center justify-center border\">\n <button\n className=\"flex h-1/2 items-center justify-center\"\n type=\"button\"\n onClick={handleIncrement}\n >\n <Icon className=\"text-icon-neutral-3\" name=\"keyboard_arrow_up\" />\n </button>\n\n <Divider />\n\n <button\n className=\"flex h-1/2 items-center justify-center\"\n type=\"button\"\n onClick={handleDecrement}\n >\n <Icon className=\"text-icon-neutral-3\" name=\"keyboard_arrow_down\" />\n </button>\n </InputAction>\n )\n}\n"]}
@@ -76,7 +76,7 @@ declare function DatePickerIcon({ className, name, ...props }: ComponentProps<'d
76
76
  name: IconType;
77
77
  }): react_jsx_runtime.JSX.Element;
78
78
  declare function DatePickerSlot({ className, ...props }: ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
79
- declare function DatePickerValue({ className, displayValue, value, ...props }: ComponentProps<'input'> & {
79
+ declare function DatePickerValue({ className, displayValue, placeholder, value, ...props }: ComponentProps<'input'> & {
80
80
  displayValue?: string;
81
81
  }): react_jsx_runtime.JSX.Element;
82
82
  declare function DatePickerContent({ className, sideOffset, side, align, ...props }: ComponentProps<typeof RadixPopover.Content>): react_jsx_runtime.JSX.Element;
@@ -1,2 +1,2 @@
1
- import {a as a$1}from'../../chunk-JGPHBUVM.js';import {a,b}from'../../chunk-2JQVYVAT.js';import {b as b$1}from'../../chunk-DVDHTP4C.js';import {a as a$2}from'../../chunk-EIG6CBTQ.js';import {tv,twMerge,twJoin}from'@xjur-ui/util';import {useMemo}from'react';import*as i from'@radix-ui/react-popover';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var P=tv({slots:{wrapper:"group flex w-full flex-col gap-small-2x",trigger:["h-large-4x w-full cursor-pointer relative","flex items-center gap-small rounded-small-1x","py-small_1x-alt px-small","bg-layer-2-hover border border-transparent","group-has-[div[data-slot=input-action-slot]]:rounded-r-none","transition-all duration-200"],content:["group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-content-available-width)] min-w-[var(--radix-popover-trigger-width)]"],icon:"size-large text-icon-neutral-3 flex items-center justify-center",slotText:"size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder",caption:"!text-size-body-sm font-normal"},variants:{state:{normal:{trigger:"hover:border-border-layer-1 data-[state=open]:border-primary-idle data-[state=open]:hover:border-primary-idle"},error:{trigger:"border-danger-idle hover:border-danger-idle data-[state=open]:border-danger-idle data-[state=open]:hover:border-danger-idle",caption:"text-danger-label-idle"},disabled:{trigger:"pointer-events-none border-transparent bg-layer-2-idle"}}}}),{wrapper:y,trigger:h,icon:C,caption:R,slotText:k,content:w}=P();function M({className:e,state:r="normal",defaultOpen:o,variant:a$1="normal",modal:n,open:l,onOpenChange:u,...x}){return jsx(i.Root,{defaultOpen:o,modal:n,open:l,onOpenChange:u,children:jsx(a.Provider,{value:{state:r,variant:a$1},children:jsx("div",{className:y({className:e,state:r}),...x})})})}function V({className:e,...r}){let{state:o,variant:a}=b(),n=tv({base:["group bg-layer-2-idle relative"],variants:{state:{normal:["border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle"],error:["border-danger-idle hover:border-danger-idle"],disabled:["border border-border-layer-2 opacity-60"]}}}),l=twMerge(h({state:o,className:e}),a==="filter"&&n({state:o,className:e}));return jsx(i.Trigger,{className:l,disabled:o==="disabled",...r})}function j(e){return jsx(a$1,{...e})}function J({className:e,name:r,...o}){let{state:a}=b();return jsx("div",{className:C({className:e,state:a}),...o,children:jsx(b$1,{name:r})})}function S({className:e,...r}){let{state:o}=b();return jsx("span",{className:k({className:e,state:o}),...r})}function _({className:e,displayValue:r="",value:o,...a}){let{variant:n}=b(),l=useMemo(()=>n==="filter"?r:r||a.placeholder,[r,a.placeholder,n]);return jsxs(Fragment,{children:[jsx(a$2,{className:"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x",children:l}),jsx("input",{...a,"aria-readonly":true,className:twJoin("pointer-events-none",e),hidden:true,placeholder:" ",readOnly:true,value:o??""})]})}function q({className:e,sideOffset:r=5,side:o="bottom",align:a="start",...n}){let{state:l}=b();return jsx(i.Portal,{children:jsx(i.Content,{align:a,className:w({className:e,state:l}),side:o,sideOffset:r,...n})})}function A({className:e,...r}){let{state:o}=b();return jsx("p",{className:R({className:e,state:o}),...r})}export{A as DatePickerCaption,q as DatePickerContent,J as DatePickerIcon,j as DatePickerLabel,M as DatePickerRoot,S as DatePickerSlot,V as DatePickerTrigger,_ as DatePickerValue,P as datePicker};//# sourceMappingURL=date-picker.js.map
1
+ import {a as a$1}from'../../chunk-JGPHBUVM.js';import {a,b}from'../../chunk-2JQVYVAT.js';import {b as b$1}from'../../chunk-DVDHTP4C.js';import {a as a$2}from'../../chunk-EIG6CBTQ.js';import {tv,twMerge,twJoin}from'@xjur-ui/util';import {useMemo}from'react';import*as i from'@radix-ui/react-popover';import {jsx,jsxs}from'react/jsx-runtime';var P=tv({slots:{wrapper:"group flex flex-col gap-small-2x",trigger:["h-large-4x cursor-pointer relative","inline-flex w-auto items-center gap-small rounded-small-1x","py-small_1x-alt px-small","bg-layer-2-hover border border-transparent","group-has-[div[data-slot=input-action-slot]]:rounded-r-none","transition-all duration-200"],content:["group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-content-available-width)] min-w-[var(--radix-popover-trigger-width)]"],icon:"size-large text-icon-neutral-3 flex items-center justify-center",slotText:"size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder",caption:"!text-size-body-sm font-normal"},variants:{state:{normal:{trigger:"hover:border-border-layer-1 data-[state=open]:border-primary-idle data-[state=open]:hover:border-primary-idle"},error:{trigger:"border-danger-idle hover:border-danger-idle data-[state=open]:border-danger-idle data-[state=open]:hover:border-danger-idle",caption:"text-danger-label-idle"},disabled:{trigger:"pointer-events-none border-transparent bg-layer-2-idle"}}}}),{wrapper:y,trigger:h,icon:C,caption:R,slotText:w,content:k}=P();function L({className:r,state:t="normal",defaultOpen:e,variant:n="normal",modal:l,open:a$1,onOpenChange:p,...u}){return jsx(i.Root,{defaultOpen:e,modal:l,open:a$1,onOpenChange:p,children:jsx(a.Provider,{value:{state:t,variant:n},children:jsx("div",{className:y({className:r,state:t}),...u})})})}function M({className:r,...t}){let{state:e,variant:n}=b(),l=tv({base:["group bg-layer-2-idle relative"],variants:{state:{normal:["border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle"],error:["border-danger-idle hover:border-danger-idle"],disabled:["border border-border-layer-2 opacity-60"]}}}),a=twMerge(h({state:e,className:r}),n==="filter"&&l({state:e,className:r}));return jsx(i.Trigger,{className:a,disabled:e==="disabled",...t})}function V(r){return jsx(a$1,{...r})}function j({className:r,name:t,...e}){let{state:n}=b();return jsx("div",{className:C({className:r,state:n}),"data-slot":"control-slot",...e,children:jsx(b$1,{name:t})})}function J({className:r,...t}){let{state:e}=b();return jsx("span",{className:w({className:r,state:e}),...t})}function S({className:r,displayValue:t="",placeholder:e,value:n,...l}){let{variant:a}=b(),p=useMemo(()=>a==="filter"?t:t||e,[t,e,a]);return jsxs("div",{className:"grid w-full items-center",children:[e&&a==="filter"&&jsx(a$1,{children:e}),e&&a==="filter"&&jsx(a$2,{className:"invisible col-start-1 row-start-1 self-center",children:e}),jsx(a$2,{className:"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x z-10 col-start-1 row-start-1 self-center text-left",children:p}),jsx("input",{...l,"aria-readonly":true,className:twJoin("pointer-events-none",r),hidden:true,placeholder:" ",readOnly:true,value:n??""})]})}function _({className:r,sideOffset:t=5,side:e="bottom",align:n="start",...l}){let{state:a}=b();return jsx(i.Portal,{children:jsx(i.Content,{align:n,className:k({className:r,state:a}),side:e,sideOffset:t,...l})})}function q({className:r,...t}){let{state:e}=b();return jsx("p",{className:R({className:r,state:e}),...t})}export{q as DatePickerCaption,_ as DatePickerContent,j as DatePickerIcon,V as DatePickerLabel,L as DatePickerRoot,J as DatePickerSlot,M as DatePickerTrigger,S as DatePickerValue,P as datePicker};//# sourceMappingURL=date-picker.js.map
2
2
  //# sourceMappingURL=date-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/controls/date-picker.tsx"],"names":["datePicker","tv","wrapper","trigger","icon","caption","slotText","content","DatePickerRoot","className","state","defaultOpen","variant","modal","open","handleOpenChange","props","jsx","FieldContext","DatePickerTrigger","useFieldContext","filterTrigger","mergedClassName","twMerge","DatePickerLabel","FloatingLabel","DatePickerIcon","name","Icon","DatePickerSlot","DatePickerValue","displayValue","value","valueOrPlaceholder","useMemo","jsxs","Fragment","Typography","twJoin","DatePickerContent","sideOffset","side","align","DatePickerCaption"],"mappings":"6VAYO,IAAMA,CAAAA,CAAaC,EAAAA,CAAG,CAC3B,KAAA,CAAO,CACL,QAAS,yCAAA,CACT,OAAA,CAAS,CACP,2CAAA,CACA,8CAAA,CACA,0BAAA,CACA,4CAAA,CACA,6DAAA,CACA,6BACF,CAAA,CACA,OAAA,CAAS,CACP,kKACF,CAAA,CACA,KAAM,iEAAA,CACN,QAAA,CACE,0FAAA,CACF,OAAA,CAAS,gCACX,CAAA,CACA,QAAA,CAAU,CACR,KAAA,CAAO,CACL,MAAA,CAAQ,CACN,OAAA,CACE,+GACJ,EACA,KAAA,CAAO,CACL,OAAA,CACE,6HAAA,CACF,OAAA,CAAS,wBACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,wDACX,CACF,CACF,CACF,CAAC,CAAA,CAEK,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,OAAA,CAAAC,CAAAA,CAAS,QAAA,CAAAC,CAAAA,CAAU,OAAA,CAAAC,CAAQ,EAAIP,CAAAA,GAExD,SAASQ,CAAAA,CAAe,CAC7B,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,QAAA,CACR,WAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,GAAAA,CAAU,SACV,KAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,YAAA,CAAcC,CAAAA,CACd,GAAGC,CACL,CAAA,CAE4C,CAC1C,OACEC,GAAAA,CAAc,CAAA,CAAA,IAAA,CAAb,CACC,YAAaN,CAAAA,CACb,KAAA,CAAOE,CAAAA,CACP,IAAA,CAAMC,CAAAA,CACN,YAAA,CAAcC,CAAAA,CAEd,QAAA,CAAAE,GAAAA,CAACC,CAAAA,CAAa,QAAA,CAAb,CAAsB,KAAA,CAAO,CAAE,MAAAR,CAAAA,CAAO,OAAA,CAAAE,GAAQ,CAAA,CAC7C,QAAA,CAAAK,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWf,CAAAA,CAAQ,CAAE,SAAA,CAAAO,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,CAAA,CAAI,GAAGM,CAAAA,CAAO,CAAA,CAC5D,CAAA,CACF,CAEJ,CAEO,SAASG,CAAAA,CAAkB,CAChC,SAAA,CAAAV,CAAAA,CACA,GAAGO,CACL,EAAgD,CAC9C,GAAM,CAAE,KAAA,CAAAN,CAAAA,CAAO,OAAA,CAAAE,CAAQ,CAAA,CAAIQ,CAAAA,EAAgB,CAErCC,CAAAA,CAAgBpB,EAAAA,CAAG,CACvB,IAAA,CAAM,CAAC,gCAAgC,CAAA,CACvC,QAAA,CAAU,CACR,KAAA,CAAO,CACL,MAAA,CAAQ,CACN,2GACF,CAAA,CACA,KAAA,CAAO,CAAC,6CAA6C,CAAA,CACrD,SAAU,CAAC,yCAAyC,CACtD,CACF,CACF,CAAC,CAAA,CAEKqB,CAAAA,CAAkBC,OAAAA,CACtBpB,CAAAA,CAAQ,CAAE,KAAA,CAAAO,CAAAA,CAAO,SAAA,CAAAD,CAAU,CAAC,CAAA,CAC5BG,CAAAA,GAAY,QAAA,EAAYS,CAAAA,CAAc,CAAE,KAAA,CAAAX,CAAAA,CAAO,SAAA,CAAAD,CAAU,CAAC,CAC5D,CAAA,CAEA,OACEQ,IAAc,CAAA,CAAA,OAAA,CAAb,CACC,SAAA,CAAWK,CAAAA,CACX,QAAA,CAAUZ,CAAAA,GAAU,UAAA,CACnB,GAAGM,CAAAA,CACN,CAEJ,CAEO,SAASQ,CAAAA,CAAgBR,CAAAA,CAA6C,CAC3E,OAAOC,GAAAA,CAACQ,GAAAA,CAAA,CAAe,GAAGT,CAAAA,CAAO,CACnC,CAEO,SAASU,CAAAA,CAAe,CAC7B,SAAA,CAAAjB,CAAAA,CACA,IAAA,CAAAkB,EACA,GAAGX,CACL,CAAA,CAEG,CACD,GAAM,CAAE,KAAA,CAAAN,CAAM,CAAA,CAAIU,CAAAA,EAAgB,CAElC,OACEH,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWb,CAAAA,CAAK,CAAE,SAAA,CAAAK,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,CAAA,CAAI,GAAGM,CAAAA,CAC9C,QAAA,CAAAC,GAAAA,CAACW,GAAAA,CAAA,CAAK,KAAMD,CAAAA,CAAM,CAAA,CACpB,CAEJ,CAEO,SAASE,CAAAA,CAAe,CAC7B,SAAA,CAAApB,CAAAA,CACA,GAAGO,CACL,CAAA,CAA2B,CACzB,GAAM,CAAE,KAAA,CAAAN,CAAM,CAAA,CAAIU,CAAAA,EAAgB,CAClC,OAAOH,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWX,CAAAA,CAAS,CAAE,SAAA,CAAAG,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,CAAA,CAAI,GAAGM,CAAAA,CAAO,CACrE,CAEO,SAASc,CAAAA,CAAgB,CAC9B,SAAA,CAAArB,CAAAA,CACA,YAAA,CAAAsB,CAAAA,CAAe,EAAA,CACf,MAAAC,CAAAA,CACA,GAAGhB,CACL,CAAA,CAAwD,CACtD,GAAM,CAAE,OAAA,CAAAJ,CAAQ,CAAA,CAAIQ,CAAAA,EAAgB,CAE9Ba,CAAAA,CAAqBC,OAAAA,CAAQ,IAC7BtB,CAAAA,GAAY,QAAA,CAAiBmB,CAAAA,CAC1BA,CAAAA,EAAgBf,CAAAA,CAAM,WAAA,CAC5B,CAACe,CAAAA,CAAcf,CAAAA,CAAM,WAAA,CAAaJ,CAAO,CAAC,CAAA,CAE7C,OACEuB,KAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAnB,GAAAA,CAACoB,GAAAA,CAAA,CAAW,SAAA,CAAU,gFAAA,CACnB,QAAA,CAAAJ,CAAAA,CACH,CAAA,CAEAhB,GAAAA,CAAC,OAAA,CAAA,CACE,GAAGD,EACJ,eAAA,CAAe,IAAA,CACf,SAAA,CAAWsB,MAAAA,CAAO,qBAAA,CAAuB7B,CAAS,CAAA,CAClD,MAAA,CAAQ,IAAA,CACR,WAAA,CAAa,GAAA,CACb,QAAA,CAAU,IAAA,CACV,KAAA,CAAOuB,GAAS,EAAA,CAClB,CAAA,CAAA,CACF,CAEJ,CAEO,SAASO,CAAAA,CAAkB,CAChC,SAAA,CAAA9B,CAAAA,CACA,UAAA,CAAA+B,CAAAA,CAAa,CAAA,CACb,IAAA,CAAAC,CAAAA,CAAO,SACP,KAAA,CAAAC,CAAAA,CAAQ,OAAA,CACR,GAAG1B,CACL,CAAA,CAAgD,CAC9C,GAAM,CAAE,KAAA,CAAAN,CAAM,CAAA,CAAIU,CAAAA,EAAgB,CAElC,OACEH,GAAAA,CAAc,CAAA,CAAA,MAAA,CAAb,CACC,QAAA,CAAAA,GAAAA,CAAc,CAAA,CAAA,OAAA,CAAb,CACC,KAAA,CAAOyB,CAAAA,CACP,SAAA,CAAWnC,CAAAA,CAAQ,CAAE,SAAA,CAAAE,CAAAA,CAAW,MAAAC,CAAM,CAAC,CAAA,CACvC,IAAA,CAAM+B,CAAAA,CACN,UAAA,CAAYD,CAAAA,CACX,GAAGxB,CAAAA,CACN,CAAA,CACF,CAEJ,CAEO,SAAS2B,CAAAA,CAAkB,CAChC,SAAA,CAAAlC,CAAAA,CACA,GAAGO,CACL,CAAA,CAAwB,CACtB,GAAM,CAAE,KAAA,CAAAN,CAAM,CAAA,CAAIU,CAAAA,EAAgB,CAClC,OAAOH,IAAC,GAAA,CAAA,CAAE,SAAA,CAAWZ,CAAAA,CAAQ,CAAE,SAAA,CAAAI,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAC,CAAA,CAAI,GAAGM,CAAAA,CAAO,CACjE","file":"date-picker.js","sourcesContent":["import { tv, twJoin, twMerge } from '@xjur-ui/util'\nimport { useMemo, type ComponentProps } from 'react'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport { Icon, type IconType } from '../icon'\nimport { Typography } from '../typography'\nimport {\n FieldContext,\n useFieldContext,\n type FieldContextValue\n} from './context/field.context'\nimport { FloatingLabel } from './floating-label'\n\nexport const datePicker = tv({\n slots: {\n wrapper: 'group flex w-full flex-col gap-small-2x',\n trigger: [\n 'h-large-4x w-full cursor-pointer relative',\n 'flex items-center gap-small rounded-small-1x',\n 'py-small_1x-alt px-small',\n 'bg-layer-2-hover border border-transparent',\n 'group-has-[div[data-slot=input-action-slot]]:rounded-r-none',\n 'transition-all duration-200'\n ],\n content: [\n 'group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-content-available-width)] min-w-[var(--radix-popover-trigger-width)]'\n ],\n icon: 'size-large text-icon-neutral-3 flex items-center justify-center',\n slotText:\n 'size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder',\n caption: '!text-size-body-sm font-normal'\n },\n variants: {\n state: {\n normal: {\n trigger:\n 'hover:border-border-layer-1 data-[state=open]:border-primary-idle data-[state=open]:hover:border-primary-idle'\n },\n error: {\n trigger:\n 'border-danger-idle hover:border-danger-idle data-[state=open]:border-danger-idle data-[state=open]:hover:border-danger-idle',\n caption: 'text-danger-label-idle'\n },\n disabled: {\n trigger: 'pointer-events-none border-transparent bg-layer-2-idle'\n }\n }\n }\n})\n\nconst { wrapper, trigger, icon, caption, slotText, content } = datePicker()\n\nexport function DatePickerRoot({\n className,\n state = 'normal',\n defaultOpen,\n variant = 'normal',\n modal,\n open,\n onOpenChange: handleOpenChange,\n ...props\n}: ComponentProps<'div'> &\n FieldContextValue &\n ComponentProps<typeof RadixPopover.Root>) {\n return (\n <RadixPopover.Root\n defaultOpen={defaultOpen}\n modal={modal}\n open={open}\n onOpenChange={handleOpenChange}\n >\n <FieldContext.Provider value={{ state, variant }}>\n <div className={wrapper({ className, state })} {...props} />\n </FieldContext.Provider>\n </RadixPopover.Root>\n )\n}\n\nexport function DatePickerTrigger({\n className,\n ...props\n}: ComponentProps<typeof RadixPopover.Trigger>) {\n const { state, variant } = useFieldContext()\n\n const filterTrigger = tv({\n base: ['group bg-layer-2-idle relative'],\n variants: {\n state: {\n normal: [\n 'border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle'\n ],\n error: ['border-danger-idle hover:border-danger-idle'],\n disabled: ['border border-border-layer-2 opacity-60']\n }\n }\n })\n\n const mergedClassName = twMerge(\n trigger({ state, className }),\n variant === 'filter' && filterTrigger({ state, className })\n )\n\n return (\n <RadixPopover.Trigger\n className={mergedClassName}\n disabled={state === 'disabled'}\n {...props}\n />\n )\n}\n\nexport function DatePickerLabel(props: ComponentProps<typeof FloatingLabel>) {\n return <FloatingLabel {...props} />\n}\n\nexport function DatePickerIcon({\n className,\n name,\n ...props\n}: ComponentProps<'div'> & {\n name: IconType\n}) {\n const { state } = useFieldContext()\n\n return (\n <div className={icon({ className, state })} {...props}>\n <Icon name={name} />\n </div>\n )\n}\n\nexport function DatePickerSlot({\n className,\n ...props\n}: ComponentProps<'span'>) {\n const { state } = useFieldContext()\n return <span className={slotText({ className, state })} {...props} />\n}\n\nexport function DatePickerValue({\n className,\n displayValue = '',\n value,\n ...props\n}: ComponentProps<'input'> & { displayValue?: string }) {\n const { variant } = useFieldContext()\n\n const valueOrPlaceholder = useMemo(() => {\n if (variant === 'filter') return displayValue\n return displayValue || props.placeholder\n }, [displayValue, props.placeholder, variant])\n\n return (\n <>\n <Typography className=\"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x\">\n {valueOrPlaceholder}\n </Typography>\n\n <input\n {...props}\n aria-readonly={true}\n className={twJoin('pointer-events-none', className)}\n hidden={true}\n placeholder={' '}\n readOnly={true}\n value={value ?? ''}\n />\n </>\n )\n}\n\nexport function DatePickerContent({\n className,\n sideOffset = 5,\n side = 'bottom',\n align = 'start',\n ...props\n}: ComponentProps<typeof RadixPopover.Content>) {\n const { state } = useFieldContext()\n\n return (\n <RadixPopover.Portal>\n <RadixPopover.Content\n align={align}\n className={content({ className, state })}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n </RadixPopover.Portal>\n )\n}\n\nexport function DatePickerCaption({\n className,\n ...props\n}: ComponentProps<'p'>) {\n const { state } = useFieldContext()\n return <p className={caption({ className, state })} {...props} />\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/controls/date-picker.tsx"],"names":["datePicker","tv","wrapper","trigger","icon","caption","slotText","content","DatePickerRoot","className","state","defaultOpen","variant","modal","open","handleOpenChange","props","jsx","FieldContext","DatePickerTrigger","useFieldContext","filterTrigger","mergedClassName","twMerge","DatePickerLabel","FloatingLabel","DatePickerIcon","name","Icon","DatePickerSlot","DatePickerValue","displayValue","placeholder","value","valueOrPlaceholder","useMemo","jsxs","Typography","twJoin","DatePickerContent","sideOffset","side","align","DatePickerCaption"],"mappings":"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","file":"date-picker.js","sourcesContent":["import { tv, twJoin, twMerge } from '@xjur-ui/util'\nimport { useMemo, type ComponentProps } from 'react'\nimport * as RadixPopover from '@radix-ui/react-popover'\nimport { Icon, type IconType } from '../icon'\nimport { Typography } from '../typography'\nimport {\n FieldContext,\n useFieldContext,\n type FieldContextValue\n} from './context/field.context'\nimport { FloatingLabel } from './floating-label'\n\nexport const datePicker = tv({\n slots: {\n wrapper: 'group flex flex-col gap-small-2x',\n trigger: [\n 'h-large-4x cursor-pointer relative',\n 'inline-flex w-auto items-center gap-small rounded-small-1x',\n 'py-small_1x-alt px-small',\n 'bg-layer-2-hover border border-transparent',\n 'group-has-[div[data-slot=input-action-slot]]:rounded-r-none',\n 'transition-all duration-200'\n ],\n content: [\n 'group z-10 max-h-[var(--radix-popover-content-available-height)] max-w-[var(--radix-popover-content-available-width)] min-w-[var(--radix-popover-trigger-width)]'\n ],\n icon: 'size-large text-icon-neutral-3 flex items-center justify-center',\n slotText:\n 'size-large flex items-center justify-center !text-size-label-md text-neutral-placeholder',\n caption: '!text-size-body-sm font-normal'\n },\n variants: {\n state: {\n normal: {\n trigger:\n 'hover:border-border-layer-1 data-[state=open]:border-primary-idle data-[state=open]:hover:border-primary-idle'\n },\n error: {\n trigger:\n 'border-danger-idle hover:border-danger-idle data-[state=open]:border-danger-idle data-[state=open]:hover:border-danger-idle',\n caption: 'text-danger-label-idle'\n },\n disabled: {\n trigger: 'pointer-events-none border-transparent bg-layer-2-idle'\n }\n }\n }\n})\n\nconst { wrapper, trigger, icon, caption, slotText, content } = datePicker()\n\nexport function DatePickerRoot({\n className,\n state = 'normal',\n defaultOpen,\n variant = 'normal',\n modal,\n open,\n onOpenChange: handleOpenChange,\n ...props\n}: ComponentProps<'div'> &\n FieldContextValue &\n ComponentProps<typeof RadixPopover.Root>) {\n return (\n <RadixPopover.Root\n defaultOpen={defaultOpen}\n modal={modal}\n open={open}\n onOpenChange={handleOpenChange}\n >\n <FieldContext.Provider value={{ state, variant }}>\n <div className={wrapper({ className, state })} {...props} />\n </FieldContext.Provider>\n </RadixPopover.Root>\n )\n}\n\nexport function DatePickerTrigger({\n className,\n ...props\n}: ComponentProps<typeof RadixPopover.Trigger>) {\n const { state, variant } = useFieldContext()\n\n const filterTrigger = tv({\n base: ['group bg-layer-2-idle relative'],\n variants: {\n state: {\n normal: [\n 'border-border-layer-2 hover:border-border-layer-3 has-[input:not(:placeholder-shown)]:border-primary-idle'\n ],\n error: ['border-danger-idle hover:border-danger-idle'],\n disabled: ['border border-border-layer-2 opacity-60']\n }\n }\n })\n\n const mergedClassName = twMerge(\n trigger({ state, className }),\n variant === 'filter' && filterTrigger({ state, className })\n )\n\n return (\n <RadixPopover.Trigger\n className={mergedClassName}\n disabled={state === 'disabled'}\n {...props}\n />\n )\n}\n\nexport function DatePickerLabel(props: ComponentProps<typeof FloatingLabel>) {\n return <FloatingLabel {...props} />\n}\n\nexport function DatePickerIcon({\n className,\n name,\n ...props\n}: ComponentProps<'div'> & {\n name: IconType\n}) {\n const { state } = useFieldContext()\n\n return (\n <div\n className={icon({ className, state })}\n data-slot=\"control-slot\"\n {...props}\n >\n <Icon name={name} />\n </div>\n )\n}\n\nexport function DatePickerSlot({\n className,\n ...props\n}: ComponentProps<'span'>) {\n const { state } = useFieldContext()\n return <span className={slotText({ className, state })} {...props} />\n}\n\nexport function DatePickerValue({\n className,\n displayValue = '',\n placeholder,\n value,\n ...props\n}: ComponentProps<'input'> & { displayValue?: string }) {\n const { variant } = useFieldContext()\n\n const valueOrPlaceholder = useMemo(() => {\n if (variant === 'filter') return displayValue\n return displayValue || placeholder\n }, [displayValue, placeholder, variant])\n\n return (\n <div className=\"grid w-full items-center\">\n {placeholder && variant === 'filter' && (\n <FloatingLabel>{placeholder}</FloatingLabel>\n )}\n\n {placeholder && variant === 'filter' && (\n <Typography className=\"invisible col-start-1 row-start-1 self-center\">\n {placeholder}\n </Typography>\n )}\n\n <Typography className=\"text-neutral-dark group-has-[div[data-slot=date-picker-left-slot]]:pl-large-1x z-10 col-start-1 row-start-1 self-center text-left\">\n {valueOrPlaceholder}\n </Typography>\n\n <input\n {...props}\n aria-readonly={true}\n className={twJoin('pointer-events-none', className)}\n hidden={true}\n placeholder={' '}\n readOnly={true}\n value={value ?? ''}\n />\n </div>\n )\n}\n\nexport function DatePickerContent({\n className,\n sideOffset = 5,\n side = 'bottom',\n align = 'start',\n ...props\n}: ComponentProps<typeof RadixPopover.Content>) {\n const { state } = useFieldContext()\n\n return (\n <RadixPopover.Portal>\n <RadixPopover.Content\n align={align}\n className={content({ className, state })}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n </RadixPopover.Portal>\n )\n}\n\nexport function DatePickerCaption({\n className,\n ...props\n}: ComponentProps<'p'>) {\n const { state } = useFieldContext()\n return <p className={caption({ className, state })} {...props} />\n}\n"]}
@@ -1,2 +1,2 @@
1
- export{l as InputAction,k as InputCaption,c as InputContent,i as InputIcon,d as InputLabel,f as InputMask,h as InputNumber,m as InputNumericStepper,b as InputRoot,j as InputSlot,g as InputText,e as InputTrigger,a as input}from'../../chunk-3H75F4Y2.js';import'../../chunk-PBR7SFWY.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-CBFC4QME.js';import'../../chunk-DVDHTP4C.js';//# sourceMappingURL=input.js.map
1
+ export{l as InputAction,k as InputCaption,c as InputContent,i as InputIcon,d as InputLabel,f as InputMask,h as InputNumber,m as InputNumericStepper,b as InputRoot,j as InputSlot,g as InputText,e as InputTrigger,a as input}from'../../chunk-TQWBQ452.js';import'../../chunk-PBR7SFWY.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-CBFC4QME.js';import'../../chunk-DVDHTP4C.js';//# sourceMappingURL=input.js.map
2
2
  //# sourceMappingURL=input.js.map
@@ -6,7 +6,6 @@ import { I as IconType } from '../../icons-C-hGI45d.js';
6
6
  import { Typography } from '../typography.js';
7
7
  import { ListContent, ListItem, ListHeader, ListHeaderTitle } from '../list.js';
8
8
  import { FieldContextValue } from './context/field.context.js';
9
- import { FloatingLabel } from './floating-label.js';
10
9
  import 'class-variance-authority/types';
11
10
  import '@xjur-ui/util';
12
11
  import '@react-input/mask';
@@ -78,7 +77,6 @@ declare function SelectTrigger({ className, ...props }: ComponentProps<typeof Ra
78
77
  declare function SelectIcon({ className, name, ...props }: ComponentProps<'div'> & {
79
78
  name: IconType;
80
79
  }): react_jsx_runtime.JSX.Element;
81
- declare function SelectLabel(props: ComponentProps<typeof FloatingLabel>): react_jsx_runtime.JSX.Element;
82
80
  declare function SelectValue({ className, displayValue, value, placeholder, ...props }: ComponentProps<'input'> & {
83
81
  displayValue?: string;
84
82
  }): react_jsx_runtime.JSX.Element;
@@ -92,4 +90,4 @@ declare function SelectOptionText(props: ComponentProps<typeof Typography>): rea
92
90
  declare function SelectHeader(props: ComponentProps<typeof ListHeader>): react_jsx_runtime.JSX.Element;
93
91
  declare function SelectHeaderTitle(props: ComponentProps<typeof ListHeaderTitle>): react_jsx_runtime.JSX.Element;
94
92
 
95
- export { SelectCaption, SelectContent, SelectHeader, SelectHeaderTitle, SelectIcon, SelectLabel, SelectMultiValue, SelectOption, SelectOptionText, SelectOptions, SelectRoot, SelectSlot, SelectTrigger, SelectValue, select };
93
+ export { SelectCaption, SelectContent, SelectHeader, SelectHeaderTitle, SelectIcon, SelectMultiValue, SelectOption, SelectOptionText, SelectOptions, SelectRoot, SelectSlot, SelectTrigger, SelectValue, select };
@@ -1,2 +1,2 @@
1
- export{i as SelectCaption,h as SelectContent,n as SelectHeader,o as SelectHeaderTitle,d as SelectIcon,e as SelectLabel,g as SelectMultiValue,l as SelectOption,m as SelectOptionText,k as SelectOptions,b as SelectRoot,j as SelectSlot,c as SelectTrigger,f as SelectValue,a as select}from'../../chunk-2JU3PFV2.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=select.js.map
1
+ export{h as SelectCaption,g as SelectContent,m as SelectHeader,n as SelectHeaderTitle,d as SelectIcon,f as SelectMultiValue,k as SelectOption,l as SelectOptionText,j as SelectOptions,b as SelectRoot,i as SelectSlot,c as SelectTrigger,e as SelectValue,a as select}from'../../chunk-DTNZXDCY.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=select.js.map
2
2
  //# sourceMappingURL=select.js.map
@@ -1,2 +1,2 @@
1
- export{a as CalendarToggleView}from'../../chunk-G6NSC3FL.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-2JU3PFV2.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-toggle-view.js.map
1
+ export{a as CalendarToggleView}from'../../chunk-MTIWFWRN.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-DTNZXDCY.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-toggle-view.js.map
2
2
  //# sourceMappingURL=calendar-toggle-view.js.map
@@ -1,2 +1,2 @@
1
- export{a as CalendarTodayButton}from'../../chunk-GKILN5HI.js';export{a as CalendarToggleView}from'../../chunk-G6NSC3FL.js';export{a as CalendarViewRenderer}from'../../chunk-HLWHETF5.js';export{a as CalendarWeekView}from'../../chunk-4M3WR2KJ.js';import'../../chunk-SLMHDBWO.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';export{a as CalendarEvent,c as CalendarEventDescription,d as CalendarEventStatus,b as CalendarEventTitle}from'../../chunk-F4DYKYWJ.js';export{a as CalendarHeader}from'../../chunk-4BGTC333.js';export{a as CalendarMonthView}from'../../chunk-BYXTOSM6.js';import'../../chunk-TTKENFBF.js';import'../../chunk-OKSGVAQQ.js';export{a as CalendarNavigator}from'../../chunk-RGKXZJJS.js';import'../../chunk-EXC2XOL6.js';export{a as CalendarRoot,b as useFullCalendar}from'../../chunk-SXGSWVMZ.js';export{a as CalendarBody}from'../../chunk-J4X5RQTR.js';import'../../chunk-2JU3PFV2.js';import'../../chunk-SLAAEXWI.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-NELCN6E2.js';import'../../chunk-6PHXO2YA.js';import'../../chunk-CBFC4QME.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=index.js.map
1
+ export{a as CalendarTodayButton}from'../../chunk-GKILN5HI.js';export{a as CalendarToggleView}from'../../chunk-MTIWFWRN.js';export{a as CalendarViewRenderer}from'../../chunk-HLWHETF5.js';export{a as CalendarWeekView}from'../../chunk-4M3WR2KJ.js';import'../../chunk-SLMHDBWO.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';export{a as CalendarEvent,c as CalendarEventDescription,d as CalendarEventStatus,b as CalendarEventTitle}from'../../chunk-F4DYKYWJ.js';export{a as CalendarHeader}from'../../chunk-4BGTC333.js';export{a as CalendarMonthView}from'../../chunk-BYXTOSM6.js';import'../../chunk-TTKENFBF.js';import'../../chunk-OKSGVAQQ.js';export{a as CalendarNavigator}from'../../chunk-RGKXZJJS.js';import'../../chunk-EXC2XOL6.js';export{a as CalendarRoot,b as useFullCalendar}from'../../chunk-SXGSWVMZ.js';export{a as CalendarBody}from'../../chunk-J4X5RQTR.js';import'../../chunk-DTNZXDCY.js';import'../../chunk-SLAAEXWI.js';import'../../chunk-JGPHBUVM.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-NELCN6E2.js';import'../../chunk-6PHXO2YA.js';import'../../chunk-CBFC4QME.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import {b}from'../chunk-M6ZI7M3R.js';import {b as b$1}from'../chunk-DVDHTP4C.js';import {useRef,useState,useCallback,useEffect}from'react';import {cx}from'@xjur-ui/util';import {jsxs,jsx}from'react/jsx-runtime';function P({children:h,className:u,gap:g="small",scrollAmount:s=200,...b$2}){let l=useRef(null),[S,z]=useState(false),[w,L]=useState(false),[p,a]=useState(false),o=useCallback(()=>{let e=l.current;if(!e)return;let{scrollLeft:n,scrollWidth:i,clientWidth:r}=e;z(n>0),L(n<i-r-1);},[]),R=useCallback(()=>{let e=l.current;e&&(a(true),e.scrollTo({left:e.scrollLeft-s,behavior:"smooth"}),setTimeout(()=>a(false),300));},[s]),x=useCallback(()=>{let e=l.current;e&&(a(true),e.scrollTo({left:e.scrollLeft+s,behavior:"smooth"}),setTimeout(()=>a(false),300));},[s]);useEffect(()=>{let e=l.current;if(!e)return;let n=()=>{o();},i=()=>{o();};o(),e.addEventListener("scroll",n,{passive:true}),window.addEventListener("resize",i);let r=null;return typeof ResizeObserver<"u"&&(r=new ResizeObserver(()=>{o();}),r.observe(e)),()=>{e.removeEventListener("scroll",n),window.removeEventListener("resize",i),r&&r.disconnect();}},[o]);let y={small:"gap-small",medium:"gap-medium",large:"gap-large"}[g];return jsxs("div",{className:cx("relative isolate",u),...b$2,children:[S&&jsx("div",{className:"absolute top-1/2 left-0 z-[3] flex h-full w-[80px] -translate-y-1/2 items-center",style:{background:"linear-gradient(to right, white 40%, transparent)"},children:jsx(b,{appearance:"ghost","aria-label":"Scroll left",className:"ml-0",disabled:p,size:"icon_md",variant:"secondary",onClick:R,children:jsx(b$1,{name:"chevron_left"})})}),w&&jsx("div",{className:"absolute top-1/2 right-0 z-[2] flex h-full w-[80px] -translate-y-1/2 items-center justify-end",style:{background:"linear-gradient(to left, white 40%, transparent)"},children:jsx(b,{appearance:"ghost","aria-label":"Scroll right",className:"mr-0",disabled:p,size:"icon_md",variant:"secondary",onClick:x,children:jsx(b$1,{name:"chevron_right"})})}),jsx("div",{className:cx("scrollbar-hide relative z-1 flex overflow-x-auto overflow-y-visible","min-w-0 [&>*]:flex-none [&>*]:whitespace-nowrap",y,u),ref:l,children:h})]})}export{P as HorizontalScroll};//# sourceMappingURL=horizontal-scroll.js.map
1
+ import {b}from'../chunk-M6ZI7M3R.js';import {b as b$1}from'../chunk-DVDHTP4C.js';import {useRef,useState,useCallback,useEffect}from'react';import {cx}from'@xjur-ui/util';import {jsxs,jsx}from'react/jsx-runtime';function P({children:h,className:u,gap:g="small",scrollAmount:s=200,...b$2}){let l=useRef(null),[S,z]=useState(false),[w,y]=useState(false),[p,a]=useState(false),o=useCallback(()=>{let e=l.current;if(!e)return;let{scrollLeft:n,scrollWidth:i,clientWidth:r}=e;z(n>0),y(n<i-r-1);},[]),L=useCallback(()=>{let e=l.current;e&&(a(true),e.scrollTo({left:e.scrollLeft-s,behavior:"smooth"}),setTimeout(()=>a(false),300));},[s]),R=useCallback(()=>{let e=l.current;e&&(a(true),e.scrollTo({left:e.scrollLeft+s,behavior:"smooth"}),setTimeout(()=>a(false),300));},[s]);useEffect(()=>{let e=l.current;if(!e)return;let n=()=>{o();},i=()=>{o();};o(),e.addEventListener("scroll",n,{passive:true}),window.addEventListener("resize",i);let r=null;return typeof ResizeObserver<"u"&&(r=new ResizeObserver(()=>{o();}),r.observe(e)),()=>{e.removeEventListener("scroll",n),window.removeEventListener("resize",i),r&&r.disconnect();}},[o]);let x={small:"gap-small",medium:"gap-medium",large:"gap-large"}[g];return jsxs("div",{className:cx("relative isolate",u),...b$2,children:[S&&jsx("div",{className:"absolute top-1/2 left-0 z-[3] flex h-full w-[80px] -translate-y-1/2 items-center",style:{background:"linear-gradient(to right, white 40%, transparent)"},children:jsx(b,{appearance:"ghost","aria-label":"Scroll left",className:"ml-0",disabled:p,size:"icon_md",variant:"secondary",onClick:L,children:jsx(b$1,{name:"chevron_left"})})}),w&&jsx("div",{className:"absolute top-1/2 right-0 z-[2] flex h-full w-[80px] -translate-y-1/2 items-center justify-end",style:{background:"linear-gradient(to left, white 40%, transparent)"},children:jsx(b,{appearance:"ghost","aria-label":"Scroll right",className:"mr-0",disabled:p,size:"icon_md",variant:"secondary",onClick:R,children:jsx(b$1,{name:"chevron_right"})})}),jsx("div",{className:cx("scrollbar-hide py-small relative z-1 flex overflow-x-auto overflow-y-visible","min-w-0 [&>*]:flex-none [&>*]:whitespace-nowrap",x,u),ref:l,children:h})]})}export{P as HorizontalScroll};//# sourceMappingURL=horizontal-scroll.js.map
2
2
  //# sourceMappingURL=horizontal-scroll.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/horizontal-scroll.tsx"],"names":["HorizontalScroll","children","className","gap","scrollAmount","props","scrollContainerRef","useRef","canScrollLeft","setCanScrollLeft","useState","canScrollRight","setCanScrollRight","isScrolling","setIsScrolling","checkScrollable","useCallback","container","scrollLeft","scrollWidth","clientWidth","handleScrollLeft","handleScrollRight","useEffect","handleScroll","handleResize","resizeObserver","gapClass","jsxs","cx","jsx","Button","Icon"],"mappings":"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","file":"horizontal-scroll.js","sourcesContent":["import type { ComponentProps, ReactNode } from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { cx } from '@xjur-ui/util'\nimport { Button } from './controls/button'\nimport { Icon } from './icon'\n\nexport interface HorizontalScrollProps extends ComponentProps<'div'> {\n children: ReactNode\n gap?: 'small' | 'medium' | 'large'\n scrollAmount?: number\n}\n\nexport function HorizontalScroll({\n children,\n className,\n gap = 'small',\n scrollAmount = 200,\n ...props\n}: HorizontalScrollProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const [canScrollLeft, setCanScrollLeft] = useState(false)\n const [canScrollRight, setCanScrollRight] = useState(false)\n const [isScrolling, setIsScrolling] = useState(false)\n\n const checkScrollable = useCallback(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n const { scrollLeft, scrollWidth, clientWidth } = container\n setCanScrollLeft(scrollLeft > 0)\n setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 1)\n }, [])\n\n const handleScrollLeft = useCallback(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n setIsScrolling(true)\n container.scrollTo({\n left: container.scrollLeft - scrollAmount,\n behavior: 'smooth'\n })\n\n setTimeout(() => setIsScrolling(false), 300)\n }, [scrollAmount])\n\n const handleScrollRight = useCallback(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n setIsScrolling(true)\n container.scrollTo({\n left: container.scrollLeft + scrollAmount,\n behavior: 'smooth'\n })\n\n setTimeout(() => setIsScrolling(false), 300)\n }, [scrollAmount])\n\n useEffect(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n const handleScroll = () => {\n checkScrollable()\n }\n\n const handleResize = () => {\n checkScrollable()\n }\n\n checkScrollable()\n container.addEventListener('scroll', handleScroll, { passive: true })\n window.addEventListener('resize', handleResize)\n\n let resizeObserver: ResizeObserver | null = null\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(() => {\n checkScrollable()\n })\n resizeObserver.observe(container)\n }\n\n return () => {\n container.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n if (resizeObserver) {\n resizeObserver.disconnect()\n }\n }\n }, [checkScrollable])\n\n const gapClass = {\n small: 'gap-small',\n medium: 'gap-medium',\n large: 'gap-large'\n }[gap]\n\n return (\n <div className={cx('relative isolate', className)} {...props}>\n {/* Left Arrow */}\n {canScrollLeft && (\n <div\n className=\"absolute top-1/2 left-0 z-[3] flex h-full w-[80px] -translate-y-1/2 items-center\"\n style={{\n background: `linear-gradient(to right, white 40%, transparent)`\n }}\n >\n <Button\n appearance=\"ghost\"\n aria-label=\"Scroll left\"\n className=\"ml-0\"\n disabled={isScrolling}\n size=\"icon_md\"\n variant=\"secondary\"\n onClick={handleScrollLeft}\n >\n <Icon name=\"chevron_left\" />\n </Button>\n </div>\n )}\n\n {/* Right Arrow */}\n {canScrollRight && (\n <div\n className=\"absolute top-1/2 right-0 z-[2] flex h-full w-[80px] -translate-y-1/2 items-center justify-end\"\n style={{\n background: `linear-gradient(to left, white 40%, transparent)`\n }}\n >\n <Button\n appearance=\"ghost\"\n aria-label=\"Scroll right\"\n className=\"mr-0\"\n disabled={isScrolling}\n size=\"icon_md\"\n variant=\"secondary\"\n onClick={handleScrollRight}\n >\n <Icon name=\"chevron_right\" />\n </Button>\n </div>\n )}\n\n {/* Scrollable Content */}\n <div\n className={cx(\n 'scrollbar-hide relative z-1 flex overflow-x-auto overflow-y-visible',\n 'min-w-0 [&>*]:flex-none [&>*]:whitespace-nowrap',\n gapClass,\n className\n )}\n ref={scrollContainerRef}\n >\n {children}\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/components/horizontal-scroll.tsx"],"names":["HorizontalScroll","children","className","gap","scrollAmount","props","scrollContainerRef","useRef","canScrollLeft","setCanScrollLeft","useState","canScrollRight","setCanScrollRight","isScrolling","setIsScrolling","checkScrollable","useCallback","container","scrollLeft","scrollWidth","clientWidth","handleScrollLeft","handleScrollRight","useEffect","handleScroll","handleResize","resizeObserver","gapClass","jsxs","cx","jsx","Button","Icon"],"mappings":"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","file":"horizontal-scroll.js","sourcesContent":["import type { ComponentProps, ReactNode } from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { cx } from '@xjur-ui/util'\nimport { Button } from './controls/button'\nimport { Icon } from './icon'\n\nexport interface HorizontalScrollProps extends ComponentProps<'div'> {\n children: ReactNode\n gap?: 'small' | 'medium' | 'large'\n scrollAmount?: number\n}\n\nexport function HorizontalScroll({\n children,\n className,\n gap = 'small',\n scrollAmount = 200,\n ...props\n}: HorizontalScrollProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const [canScrollLeft, setCanScrollLeft] = useState(false)\n const [canScrollRight, setCanScrollRight] = useState(false)\n const [isScrolling, setIsScrolling] = useState(false)\n\n const checkScrollable = useCallback(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n const { scrollLeft, scrollWidth, clientWidth } = container\n setCanScrollLeft(scrollLeft > 0)\n setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 1)\n }, [])\n\n const handleScrollLeft = useCallback(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n setIsScrolling(true)\n container.scrollTo({\n left: container.scrollLeft - scrollAmount,\n behavior: 'smooth'\n })\n\n setTimeout(() => setIsScrolling(false), 300)\n }, [scrollAmount])\n\n const handleScrollRight = useCallback(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n setIsScrolling(true)\n container.scrollTo({\n left: container.scrollLeft + scrollAmount,\n behavior: 'smooth'\n })\n\n setTimeout(() => setIsScrolling(false), 300)\n }, [scrollAmount])\n\n useEffect(() => {\n const container = scrollContainerRef.current\n if (!container) return\n\n const handleScroll = () => {\n checkScrollable()\n }\n\n const handleResize = () => {\n checkScrollable()\n }\n\n checkScrollable()\n container.addEventListener('scroll', handleScroll, { passive: true })\n window.addEventListener('resize', handleResize)\n\n let resizeObserver: ResizeObserver | null = null\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(() => {\n checkScrollable()\n })\n resizeObserver.observe(container)\n }\n\n return () => {\n container.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n if (resizeObserver) {\n resizeObserver.disconnect()\n }\n }\n }, [checkScrollable])\n\n const gapClass = {\n small: 'gap-small',\n medium: 'gap-medium',\n large: 'gap-large'\n }[gap]\n\n return (\n <div className={cx('relative isolate', className)} {...props}>\n {/* Left Arrow */}\n {canScrollLeft && (\n <div\n className=\"absolute top-1/2 left-0 z-[3] flex h-full w-[80px] -translate-y-1/2 items-center\"\n style={{\n background: `linear-gradient(to right, white 40%, transparent)`\n }}\n >\n <Button\n appearance=\"ghost\"\n aria-label=\"Scroll left\"\n className=\"ml-0\"\n disabled={isScrolling}\n size=\"icon_md\"\n variant=\"secondary\"\n onClick={handleScrollLeft}\n >\n <Icon name=\"chevron_left\" />\n </Button>\n </div>\n )}\n\n {/* Right Arrow */}\n {canScrollRight && (\n <div\n className=\"absolute top-1/2 right-0 z-[2] flex h-full w-[80px] -translate-y-1/2 items-center justify-end\"\n style={{\n background: `linear-gradient(to left, white 40%, transparent)`\n }}\n >\n <Button\n appearance=\"ghost\"\n aria-label=\"Scroll right\"\n className=\"mr-0\"\n disabled={isScrolling}\n size=\"icon_md\"\n variant=\"secondary\"\n onClick={handleScrollRight}\n >\n <Icon name=\"chevron_right\" />\n </Button>\n </div>\n )}\n\n {/* Scrollable Content */}\n <div\n className={cx(\n 'scrollbar-hide py-small relative z-1 flex overflow-x-auto overflow-y-visible',\n 'min-w-0 [&>*]:flex-none [&>*]:whitespace-nowrap',\n gapClass,\n className\n )}\n ref={scrollContainerRef}\n >\n {children}\n </div>\n </div>\n )\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'../chunk-3L772WC6.js';import {b as b$3,c as c$1,h,l}from'../chunk-2JU3PFV2.js';import {b as b$2,c,g}from'../chunk-3H75F4Y2.js';import'../chunk-PBR7SFWY.js';import'../chunk-JGPHBUVM.js';import'../chunk-2JQVYVAT.js';import'../chunk-CBFC4QME.js';import'../chunk-YOLTIAFT.js';import {b as b$1}from'../chunk-M6ZI7M3R.js';import {b}from'../chunk-DVDHTP4C.js';import'../chunk-EIG6CBTQ.js';import {createContext,useState,useRef,useCallback,useContext}from'react';import {cva,cx}from'@xjur-ui/util';import {jsx,jsxs}from'react/jsx-runtime';var q=createContext(null);function T(){let l=useContext(q);if(!l)throw new Error("Upload components must be used within UploadRoot");return l}function te({children:l,className:n,files:d,onFilesChange:c,accept:m,multiple:o=false,disabled:u=false,maxFiles:b=1,maxSize:x,acceptedFormats:f=[".jpeg",".png",".webp"],...v}){return jsx(q.Provider,{value:{files:d,onFilesChange:c,accept:m,multiple:o,disabled:u,maxFiles:b,maxSize:x,acceptedFormats:f},children:jsx("div",{className:cx("flex flex-col gap-4",n),...v,children:l})})}var ae=cva(["flex flex-col items-center justify-center","relative border-2 border-dashed border-border-layer-2 rounded-lg transition-all duration-200 ease-in-out cursor-pointer","hover:border-border-layer-2 hover:bg-transparent","focus-within:border-primary-idle focus-within:ring-2 focus-within:ring-primary-idle/20","data-[drag-over=true]:border-primary-idle data-[drag-over=true]:bg-primary-alt-idle/10"],{variants:{size:{large:"p-6 min-h-[200px] ",medium:"p-6 min-h-[160px]",small:"p-6 min-h-[130px]",oneLine:"p-4 min-h-[18px]"},showButton:{true:"",false:""},variant:{default:"bg-white",transparent:"bg-transparent",minimal:"bg-white",oneLineWhite:"bg-white",oneLineTransparent:"bg-transparent"}},compoundVariants:[{size:"large",showButton:true},{size:"medium",showButton:true},{size:"small",showButton:true},{variant:"oneLineWhite",showButton:false,className:"items-center flex flex-row justify-center"},{variant:"oneLineTransparent",showButton:false,className:"items-center flex flex-row justify-center"}],defaultVariants:{size:"large",variant:"default",showButton:true}});function re({className:l,size:n="large",showButton:d=true,variant:c="default",showAcceptedFormats:m=true,buttonText:o="Selecionar arquivo",description:u="Clique ou solte os arquivos para fazer o upload",icon:b="upload",...x}){let{onFilesChange:f,accept:v,multiple:r,disabled:a,maxFiles:t,maxSize:F,acceptedFormats:E}=T(),[W,P]=useState(false),w=useRef(null),[U,D]=useState(0),N=useCallback(i=>{let s=i;return t&&t>0&&(s=s.slice(0,t)),F&&(s=s.filter(p=>p.size<=F)),v&&(s=s.filter(p=>{let Q=`.${p.name.split(".").pop()?.toLowerCase()}`;return E?.some(L=>L.startsWith(".")?L===Q:p.type.includes(L))})),s.map(p=>({name:p.name,type:p.type,fileBinary:p,restrict:false}))},[t,F,v,E]),_=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s+1),P(true);},[]),K=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s-1),U<=1&&P(false);},[U]),$=useCallback(i=>{i.preventDefault(),i.stopPropagation();},[]),G=useCallback(i=>{if(i.preventDefault(),i.stopPropagation(),P(false),D(0),a)return;let s=Array.from(i.dataTransfer.files),p=N(s);p.length>0&&f?.(p);},[a,f,N]),J=useCallback(i=>{if(a)return;let s=Array.from(i.target.files||[]),p=N(s);p.length>0&&f?.(p);},[a,f,N]);return jsxs(M,{...x,"aria-disabled":a,"aria-label":u,className:cx(ae({size:n,showButton:d,variant:c}),l),"data-drag-over":W,fileInputRef:w,onDragEnter:_,onDragLeave:K,onDragOver:$,onDrop:G,children:[jsx("input",{accept:v,className:"hidden",disabled:a,multiple:r,ref:w,type:"file",onChange:J}),jsx(H,{buttonText:o,description:u,icon:b,showAcceptedFormats:m,showButton:d,variant:c||"default",onButtonClick:()=>{!a&&w.current&&w.current.click();}})]})}function ne({children:l,className:n,...d}){return jsx("h3",{className:cx("text-neutral-dark text-lg font-semibold",n),...d,children:l})}function H({description:l="Clique ou solte os arquivos para fazer o upload",icon:n="upload",showAcceptedFormats:d=true,buttonText:c="Selecionar arquivo",showButton:m=true,onButtonClick:o,variant:u="default",className:b$2,...x}){let{acceptedFormats:f}=T(),v=()=>d?jsxs("p",{className:"text-neutral-secondary mt-2 text-sm",children:["Formatos aceitos: ",f?.join(" ")]}):null;return u==="oneLineWhite"||u==="oneLineTransparent"?jsxs("div",{...x,className:cx("flex h-full items-center justify-center gap-4 text-center",b$2),children:[jsx(b,{className:"text-neutral-secondary text-4xl",name:n}),jsx("p",{className:"text-neutral-dark text-base font-medium",children:l}),v()]}):jsxs("div",{...x,className:cx("flex h-full w-full flex-col items-center gap-4 text-center",b$2),children:[jsxs("div",{className:"flex flex-col items-center",children:[jsx(b,{className:"text-neutral-secondary mb-3 text-4xl",name:n}),jsx("p",{className:"text-neutral-dark mb-2 text-base font-medium",children:l}),v()]}),m&&jsx("div",{children:jsx(b$1,{size:"md",variant:"primary",onClick:a=>{a.stopPropagation(),o?.();},children:c})})]})}function M({children:l,fileInputRef:n,...d}){let{disabled:c}=T(),m=useCallback(()=>{!c&&n?.current&&n.current.click();},[c,n]);return jsx("div",{role:"button",tabIndex:c?-1:0,onClick:m,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),m());},...d,children:l})}function oe({fileTypeOptions:l$1=[{value:"document",label:"Documento"},{value:"image",label:"Imagem"},{value:"video",label:"V\xEDdeo"},{value:"audio",label:"\xC1udio"},{value:"other",label:"Outro"}],onUpdateFile:n,onDeleteFile:d,className:c$2,...m}){let{files:o,onFilesChange:u}=T();if(!o||o.length===0)return null;let b$4=(r,a)=>{if(n)n(r,{description:a});else {let t=[...o];t[r]={...t[r],description:a},u?.(t);}},x=(r,a)=>{if(n)n(r,{fileType:a});else {let t=[...o];t[r]={...t[r],fileType:a},u?.(t);}},f=(r,a)=>{if(n)n(r,{restrict:a});else {let t=[...o];t[r]={...t[r],restrict:a},u?.(t);}},v=r=>{if(d)d(r);else {let a=o.filter((t,F)=>F!==r);u?.(a);}};return jsx("div",{className:cx("space-y-2",c$2),...m,children:jsxs("div",{className:"border-border-layer-2 p-4",children:[jsxs("div",{className:"border-border-layer-2 mb-3 flex w-full flex-row items-center justify-between gap-4 border-b pb-2",children:[jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Descri\xE7\xE3o"})}),jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Tipo"})}),jsx("div",{className:"flex justify-end",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Restrito"})})]}),jsx("div",{className:"space-y-3",children:o.map((r,a$1)=>jsxs("div",{className:"flex flex-row items-center gap-4 py-3",children:[jsx("div",{className:"flex justify-start",children:jsx(b,{className:"text-neutral-secondary hover:text-neutral-dark cursor-grab",name:"drag_indicator"})}),jsx("div",{className:"w-full",children:jsx(b$2,{children:jsx(c,{children:jsx(g,{placeholder:"Nome do arquivo",value:r.description||r.name,onChange:t=>b$4(a$1,t.target.value)})})})}),jsx("div",{className:"w-full",children:jsxs(b$3,{children:[jsxs(c$1,{className:"flex justify-between",children:[jsx("span",{className:"text-neutral-dark",children:l$1.find(t=>t.value===r.fileType)?.label||"Tipo"}),jsx(b,{className:"text-neutral-secondary",name:"keyboard_arrow_down"})]}),jsx(h,{children:l$1.map(t=>jsx(l,{value:t.value,onSelect:()=>x(a$1,t.value),children:t.label},t.value))})]})}),jsx("div",{className:"flex justify-end",children:jsx(a,{checked:r.restrict||false,onCheckedChange:t=>f(a$1,t)})}),jsx("div",{className:"flex justify-end",children:jsx(b$1,{appearance:"ghost",size:"sm",variant:"destructive",onClick:()=>v(a$1),children:jsx(b,{name:"delete"})})})]},a$1))})]})})}var me={Root:te,Area:re,Title:ne,AreaContent:H,AreaTrigger:M,EditableList:oe};export{oe as EditableFilesList,me as Upload,re as UploadArea,H as UploadAreaContent,M as UploadAreaTrigger,te as UploadRoot,ne as UploadTitle,ae as uploadAreaVariants};//# sourceMappingURL=upload.js.map
1
+ import {a}from'../chunk-3L772WC6.js';import {b as b$3,c as c$1,g as g$1,k}from'../chunk-DTNZXDCY.js';import {b as b$2,c,g}from'../chunk-TQWBQ452.js';import'../chunk-PBR7SFWY.js';import'../chunk-JGPHBUVM.js';import'../chunk-2JQVYVAT.js';import'../chunk-CBFC4QME.js';import'../chunk-YOLTIAFT.js';import {b as b$1}from'../chunk-M6ZI7M3R.js';import {b}from'../chunk-DVDHTP4C.js';import'../chunk-EIG6CBTQ.js';import {createContext,useState,useRef,useCallback,useContext}from'react';import {cva,cx}from'@xjur-ui/util';import {jsx,jsxs}from'react/jsx-runtime';var q=createContext(null);function T(){let l=useContext(q);if(!l)throw new Error("Upload components must be used within UploadRoot");return l}function te({children:l,className:n,files:d,onFilesChange:c,accept:m,multiple:o=false,disabled:u=false,maxFiles:b=1,maxSize:x,acceptedFormats:f=[".jpeg",".png",".webp"],...v}){return jsx(q.Provider,{value:{files:d,onFilesChange:c,accept:m,multiple:o,disabled:u,maxFiles:b,maxSize:x,acceptedFormats:f},children:jsx("div",{className:cx("flex flex-col gap-4",n),...v,children:l})})}var ae=cva(["flex flex-col items-center justify-center","relative border-2 border-dashed border-border-layer-2 rounded-lg transition-all duration-200 ease-in-out cursor-pointer","hover:border-border-layer-2 hover:bg-transparent","focus-within:border-primary-idle focus-within:ring-2 focus-within:ring-primary-idle/20","data-[drag-over=true]:border-primary-idle data-[drag-over=true]:bg-primary-alt-idle/10"],{variants:{size:{large:"p-6 min-h-[200px] ",medium:"p-6 min-h-[160px]",small:"p-6 min-h-[130px]",oneLine:"p-4 min-h-[18px]"},showButton:{true:"",false:""},variant:{default:"bg-white",transparent:"bg-transparent",minimal:"bg-white",oneLineWhite:"bg-white",oneLineTransparent:"bg-transparent"}},compoundVariants:[{size:"large",showButton:true},{size:"medium",showButton:true},{size:"small",showButton:true},{variant:"oneLineWhite",showButton:false,className:"items-center flex flex-row justify-center"},{variant:"oneLineTransparent",showButton:false,className:"items-center flex flex-row justify-center"}],defaultVariants:{size:"large",variant:"default",showButton:true}});function re({className:l,size:n="large",showButton:d=true,variant:c="default",showAcceptedFormats:m=true,buttonText:o="Selecionar arquivo",description:u="Clique ou solte os arquivos para fazer o upload",icon:b="upload",...x}){let{onFilesChange:f,accept:v,multiple:r,disabled:a,maxFiles:t,maxSize:F,acceptedFormats:E}=T(),[W,P]=useState(false),w=useRef(null),[U,D]=useState(0),N=useCallback(i=>{let s=i;return t&&t>0&&(s=s.slice(0,t)),F&&(s=s.filter(p=>p.size<=F)),v&&(s=s.filter(p=>{let Q=`.${p.name.split(".").pop()?.toLowerCase()}`;return E?.some(L=>L.startsWith(".")?L===Q:p.type.includes(L))})),s.map(p=>({name:p.name,type:p.type,fileBinary:p,restrict:false}))},[t,F,v,E]),_=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s+1),P(true);},[]),K=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s-1),U<=1&&P(false);},[U]),$=useCallback(i=>{i.preventDefault(),i.stopPropagation();},[]),G=useCallback(i=>{if(i.preventDefault(),i.stopPropagation(),P(false),D(0),a)return;let s=Array.from(i.dataTransfer.files),p=N(s);p.length>0&&f?.(p);},[a,f,N]),J=useCallback(i=>{if(a)return;let s=Array.from(i.target.files||[]),p=N(s);p.length>0&&f?.(p);},[a,f,N]);return jsxs(M,{...x,"aria-disabled":a,"aria-label":u,className:cx(ae({size:n,showButton:d,variant:c}),l),"data-drag-over":W,fileInputRef:w,onDragEnter:_,onDragLeave:K,onDragOver:$,onDrop:G,children:[jsx("input",{accept:v,className:"hidden",disabled:a,multiple:r,ref:w,type:"file",onChange:J}),jsx(H,{buttonText:o,description:u,icon:b,showAcceptedFormats:m,showButton:d,variant:c||"default",onButtonClick:()=>{!a&&w.current&&w.current.click();}})]})}function ne({children:l,className:n,...d}){return jsx("h3",{className:cx("text-neutral-dark text-lg font-semibold",n),...d,children:l})}function H({description:l="Clique ou solte os arquivos para fazer o upload",icon:n="upload",showAcceptedFormats:d=true,buttonText:c="Selecionar arquivo",showButton:m=true,onButtonClick:o,variant:u="default",className:b$2,...x}){let{acceptedFormats:f}=T(),v=()=>d?jsxs("p",{className:"text-neutral-secondary mt-2 text-sm",children:["Formatos aceitos: ",f?.join(" ")]}):null;return u==="oneLineWhite"||u==="oneLineTransparent"?jsxs("div",{...x,className:cx("flex h-full items-center justify-center gap-4 text-center",b$2),children:[jsx(b,{className:"text-neutral-secondary text-4xl",name:n}),jsx("p",{className:"text-neutral-dark text-base font-medium",children:l}),v()]}):jsxs("div",{...x,className:cx("flex h-full w-full flex-col items-center gap-4 text-center",b$2),children:[jsxs("div",{className:"flex flex-col items-center",children:[jsx(b,{className:"text-neutral-secondary mb-3 text-4xl",name:n}),jsx("p",{className:"text-neutral-dark mb-2 text-base font-medium",children:l}),v()]}),m&&jsx("div",{children:jsx(b$1,{size:"md",variant:"primary",onClick:a=>{a.stopPropagation(),o?.();},children:c})})]})}function M({children:l,fileInputRef:n,...d}){let{disabled:c}=T(),m=useCallback(()=>{!c&&n?.current&&n.current.click();},[c,n]);return jsx("div",{role:"button",tabIndex:c?-1:0,onClick:m,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),m());},...d,children:l})}function oe({fileTypeOptions:l=[{value:"document",label:"Documento"},{value:"image",label:"Imagem"},{value:"video",label:"V\xEDdeo"},{value:"audio",label:"\xC1udio"},{value:"other",label:"Outro"}],onUpdateFile:n,onDeleteFile:d,className:c$2,...m}){let{files:o,onFilesChange:u}=T();if(!o||o.length===0)return null;let b$4=(r,a)=>{if(n)n(r,{description:a});else {let t=[...o];t[r]={...t[r],description:a},u?.(t);}},x=(r,a)=>{if(n)n(r,{fileType:a});else {let t=[...o];t[r]={...t[r],fileType:a},u?.(t);}},f=(r,a)=>{if(n)n(r,{restrict:a});else {let t=[...o];t[r]={...t[r],restrict:a},u?.(t);}},v=r=>{if(d)d(r);else {let a=o.filter((t,F)=>F!==r);u?.(a);}};return jsx("div",{className:cx("space-y-2",c$2),...m,children:jsxs("div",{className:"border-border-layer-2 p-4",children:[jsxs("div",{className:"border-border-layer-2 mb-3 flex w-full flex-row items-center justify-between gap-4 border-b pb-2",children:[jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Descri\xE7\xE3o"})}),jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Tipo"})}),jsx("div",{className:"flex justify-end",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Restrito"})})]}),jsx("div",{className:"space-y-3",children:o.map((r,a$1)=>jsxs("div",{className:"flex flex-row items-center gap-4 py-3",children:[jsx("div",{className:"flex justify-start",children:jsx(b,{className:"text-neutral-secondary hover:text-neutral-dark cursor-grab",name:"drag_indicator"})}),jsx("div",{className:"w-full",children:jsx(b$2,{children:jsx(c,{children:jsx(g,{placeholder:"Nome do arquivo",value:r.description||r.name,onChange:t=>b$4(a$1,t.target.value)})})})}),jsx("div",{className:"w-full",children:jsxs(b$3,{children:[jsxs(c$1,{className:"flex justify-between",children:[jsx("span",{className:"text-neutral-dark",children:l.find(t=>t.value===r.fileType)?.label||"Tipo"}),jsx(b,{className:"text-neutral-secondary",name:"keyboard_arrow_down"})]}),jsx(g$1,{children:l.map(t=>jsx(k,{value:t.value,onSelect:()=>x(a$1,t.value),children:t.label},t.value))})]})}),jsx("div",{className:"flex justify-end",children:jsx(a,{checked:r.restrict||false,onCheckedChange:t=>f(a$1,t)})}),jsx("div",{className:"flex justify-end",children:jsx(b$1,{appearance:"ghost",size:"sm",variant:"destructive",onClick:()=>v(a$1),children:jsx(b,{name:"delete"})})})]},a$1))})]})})}var me={Root:te,Area:re,Title:ne,AreaContent:H,AreaTrigger:M,EditableList:oe};export{oe as EditableFilesList,me as Upload,re as UploadArea,H as UploadAreaContent,M as UploadAreaTrigger,te as UploadRoot,ne as UploadTitle,ae as uploadAreaVariants};//# sourceMappingURL=upload.js.map
2
2
  //# sourceMappingURL=upload.js.map