@cryptlex/web-components 6.6.26 → 6.6.28

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.
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as n}from"react/jsx-runtime";import{cva as o}from"class-variance-authority";import{classNames as l}from"../utilities/theme.js";import{IcInfo as u,IcWarning as m,IcCheck as d,IcError as f}from"./icons.js";import"clsx";import"react";const p=o("rounded-md transition-colors bg-elevation-1 border py-icon px-input body-sm inline-flex items-center gap-icon",{variants:{variant:{destructive:"text-destructive",success:"text-success",warning:"text-warning",neutral:"text-muted border-muted",default:"border-accent"}},defaultVariants:{variant:"default"}}),x=e=>{switch(e){case"destructive":return f;case"success":return d;case"warning":return m;case"neutral":case void 0:default:return u}};function k({children:e,className:s,variant:t,icon:c,...a}){const r=c??x(t);return i("div",{role:"alert",className:l(p({variant:t}),s),...a,children:[r&&n(r,{className:"inline-block size-icon shrink-0"}),n("span",{className:"inline-block flex-1 min-w-0 mt-0",children:e})]})}export{k as Alert,p as alertVariants};
1
+ import{jsxs as a,jsx as s}from"react/jsx-runtime";import{cva as o}from"class-variance-authority";import{classNames as l}from"../utilities/theme.js";import{IcInfo as u,IcWarning as d,IcCheck as m,IcError as f}from"./icons.js";import"clsx";import"react";const p=o("rounded-md transition-colors bg-elevation-1 border py-icon px-input body-sm inline-flex items-center gap-icon",{variants:{variant:{destructive:"text-destructive border-destructive",success:"text-success border-success",warning:"text-warning",neutral:"text-muted border-muted",default:""}},defaultVariants:{variant:"default"}}),v=e=>{switch(e){case"destructive":return f;case"success":return m;case"warning":return d;case"neutral":case void 0:default:return u}};function k({children:e,className:n,variant:t,icon:c,...i}){const r=c??v(t);return a("div",{role:"alert",className:l(p({variant:t}),n),...i,children:[r&&s(r,{className:"inline-block size-icon shrink-0"}),s("span",{className:"inline-block flex-1 min-w-0 mt-0",children:e})]})}export{k as Alert,p as alertVariants};
2
2
  //# sourceMappingURL=alert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sources":["../../lib/components/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport React from 'react';\nimport { classNames } from '../utilities/theme';\nimport type { CtxIcon } from './icons';\nimport { IcCheck, IcError, IcInfo, IcWarning } from './icons';\n\nexport const alertVariants = cva(\n `rounded-md transition-colors bg-elevation-1 border py-icon px-input body-sm inline-flex items-center gap-icon`,\n {\n variants: {\n variant: {\n destructive: 'text-destructive',\n success: 'text-success',\n warning: 'text-warning',\n neutral: 'text-muted border-muted',\n default: 'border-accent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n// Default icons for each variant\nconst getDefaultIcon = (variant: string | null | undefined): CtxIcon | null => {\n switch (variant) {\n case 'destructive':\n return IcError;\n case 'success':\n return IcCheck;\n case 'warning':\n return IcWarning;\n case 'neutral':\n case undefined:\n default:\n return IcInfo;\n }\n};\nexport function Alert({\n children,\n className,\n variant,\n icon,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof alertVariants> & {\n icon?: CtxIcon;\n }) {\n // Overrides the default icon with the provided icon\n const Icon = icon ?? getDefaultIcon(variant);\n\n return (\n <div role=\"alert\" className={classNames(alertVariants({ variant }), className)} {...props}>\n {Icon && <Icon className=\"inline-block size-icon shrink-0\" />}\n <span className=\"inline-block flex-1 min-w-0 mt-0\">{children}</span>\n </div>\n );\n}\n"],"names":["alertVariants","cva","getDefaultIcon","variant","IcError","IcCheck","IcWarning","IcInfo","Alert","children","className","icon","props","Icon","jsxs","classNames","jsx"],"mappings":"4PAMO,MAAMA,EAAgBC,EACzB,gHACA,CACI,SAAU,CACN,QAAS,CACL,YAAa,mBACb,QAAS,eACT,QAAS,eACT,QAAS,0BACT,QAAS,eAAA,CACb,EAEJ,gBAAiB,CACb,QAAS,SAAA,CACb,CAER,EAGMC,EAAkBC,GAAuD,CAC3E,OAAQA,EAAA,CACJ,IAAK,cACD,OAAOC,EACX,IAAK,UACD,OAAOC,EACX,IAAK,UACD,OAAOC,EACX,IAAK,UACL,KAAK,OACL,QACI,OAAOC,CAAA,CAEnB,EACO,SAASC,EAAM,CAClB,SAAAC,EACA,UAAAC,EACA,QAAAP,EACA,KAAAQ,EACA,GAAGC,CACP,EAGO,CAEH,MAAMC,EAAOF,GAAQT,EAAeC,CAAO,EAE3C,OACIW,EAAC,MAAA,CAAI,KAAK,QAAQ,UAAWC,EAAWf,EAAc,CAAE,QAAAG,CAAA,CAAS,EAAGO,CAAS,EAAI,GAAGE,EAC/E,SAAA,CAAAC,GAAQG,EAACH,EAAA,CAAK,UAAU,iCAAA,CAAkC,EAC3DG,EAAC,OAAA,CAAK,UAAU,mCAAoC,SAAAP,CAAA,CAAS,CAAA,EACjE,CAER"}
1
+ {"version":3,"file":"alert.js","sources":["../../lib/components/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport React from 'react';\nimport { classNames } from '../utilities/theme';\nimport type { CtxIcon } from './icons';\nimport { IcCheck, IcError, IcInfo, IcWarning } from './icons';\n\nexport const alertVariants = cva(\n `rounded-md transition-colors bg-elevation-1 border py-icon px-input body-sm inline-flex items-center gap-icon`,\n {\n variants: {\n variant: {\n destructive: 'text-destructive border-destructive',\n success: 'text-success border-success',\n warning: 'text-warning',\n neutral: 'text-muted border-muted',\n default: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n// Default icons for each variant\nconst getDefaultIcon = (variant: string | null | undefined): CtxIcon | null => {\n switch (variant) {\n case 'destructive':\n return IcError;\n case 'success':\n return IcCheck;\n case 'warning':\n return IcWarning;\n case 'neutral':\n case undefined:\n default:\n return IcInfo;\n }\n};\nexport function Alert({\n children,\n className,\n variant,\n icon,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof alertVariants> & {\n icon?: CtxIcon;\n }) {\n // Overrides the default icon with the provided icon\n const Icon = icon ?? getDefaultIcon(variant);\n\n return (\n <div role=\"alert\" className={classNames(alertVariants({ variant }), className)} {...props}>\n {Icon && <Icon className=\"inline-block size-icon shrink-0\" />}\n <span className=\"inline-block flex-1 min-w-0 mt-0\">{children}</span>\n </div>\n );\n}\n"],"names":["alertVariants","cva","getDefaultIcon","variant","IcError","IcCheck","IcWarning","IcInfo","Alert","children","className","icon","props","Icon","jsxs","classNames","jsx"],"mappings":"4PAMO,MAAMA,EAAgBC,EACzB,gHACA,CACI,SAAU,CACN,QAAS,CACL,YAAa,sCACb,QAAS,8BACT,QAAS,eACT,QAAS,0BACT,QAAS,EAAA,CACb,EAEJ,gBAAiB,CACb,QAAS,SAAA,CACb,CAER,EAGMC,EAAkBC,GAAuD,CAC3E,OAAQA,EAAA,CACJ,IAAK,cACD,OAAOC,EACX,IAAK,UACD,OAAOC,EACX,IAAK,UACD,OAAOC,EACX,IAAK,UACL,KAAK,OACL,QACI,OAAOC,CAAA,CAEnB,EACO,SAASC,EAAM,CAClB,SAAAC,EACA,UAAAC,EACA,QAAAP,EACA,KAAAQ,EACA,GAAGC,CACP,EAGO,CAEH,MAAMC,EAAOF,GAAQT,EAAeC,CAAO,EAE3C,OACIW,EAAC,MAAA,CAAI,KAAK,QAAQ,UAAWC,EAAWf,EAAc,CAAE,QAAAG,CAAA,CAAS,EAAGO,CAAS,EAAI,GAAGE,EAC/E,SAAA,CAAAC,GAAQG,EAACH,EAAA,CAAK,UAAU,iCAAA,CAAkC,EAC3DG,EAAC,OAAA,CAAK,UAAU,mCAAoC,SAAAP,CAAA,CAAS,CAAA,EACjE,CAER"}
@@ -1,7 +1,7 @@
1
1
  import { VariantProps } from 'class-variance-authority';
2
2
  import { ButtonProps as AriaButtonProps } from 'react-aria-components';
3
3
  export declare const buttonVariants: (props?: ({
4
- variant?: "link" | "primary" | "secondary" | "secondary_neutral" | "destructive" | "destructive_neutral" | "neutral" | "primary_neutral" | "ghost" | null | undefined;
4
+ variant?: "link" | "primary" | "destructive" | "destructive_neutral" | "neutral" | "primary_neutral" | "ghost" | null | undefined;
5
5
  size?: "none" | "default" | "icon" | null | undefined;
6
6
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
7
  export type ButtonProps = AriaButtonProps & VariantProps<typeof buttonVariants> & {
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as r,jsxs as c,Fragment as a}from"react/jsx-runtime";import{cva as l}from"class-variance-authority";import{Button as d,composeRenderProps as i}from"react-aria-components";import{classNames as p}from"../utilities/theme.js";import{Loader as b}from"./loader.js";import"clsx";import"./icons.js";import"react";const f=l("btn",{variants:{variant:{primary:"btn-primary",secondary:"btn-secondary",secondary_neutral:"btn-secondary-neutral",destructive:"btn-destructive",destructive_neutral:"btn-destructive-neutral",neutral:"btn-neutral",primary_neutral:"btn-primary-neutral",ghost:"btn-ghost",link:"btn-link"},size:{default:"input-dim",icon:"size-input rounded-md",none:""}},defaultVariants:{variant:"neutral",size:"default"}});function j({className:n,variant:o,size:s,children:u,isPending:e,active:v,...m}){return r(d,{...m,className:i(n,t=>p(f({variant:o,size:s,className:t}),n)),children:i(u,t=>c(a,{children:[e&&r(b,{}),!e&&r(a,{children:t})]}))})}export{j as Button,f as buttonVariants};
1
+ "use client";import{jsx as r,jsxs as c,Fragment as a}from"react/jsx-runtime";import{cva as l}from"class-variance-authority";import{Button as p,composeRenderProps as i}from"react-aria-components";import{classNames as d}from"../utilities/theme.js";import{Loader as b}from"./loader.js";import"clsx";import"./icons.js";import"react";const f=l("btn",{variants:{variant:{primary:"btn-primary",destructive:"btn-destructive",destructive_neutral:"btn-destructive-neutral",neutral:"btn-neutral",primary_neutral:"btn-primary-neutral",ghost:"btn-ghost",link:"btn-link"},size:{default:"input-dim",icon:"size-input rounded-md",none:""}},defaultVariants:{variant:"neutral",size:"default"}});function k({className:n,variant:o,size:m,children:u,isPending:e,active:v,...s}){return r(p,{...s,className:i(n,t=>d(f({variant:o,size:m,className:t}),n)),children:i(u,t=>c(a,{children:[e&&r(b,{}),!e&&r(a,{children:t})]}))})}export{k as Button,f as buttonVariants};
2
2
  //# sourceMappingURL=button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../lib/components/button.tsx"],"sourcesContent":["'use client';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Button as AriaButton, composeRenderProps, type ButtonProps as AriaButtonProps } from 'react-aria-components';\nimport { classNames } from '../utilities/theme';\nimport { Loader } from './loader';\n\nexport const buttonVariants = cva('btn', {\n variants: {\n variant: {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n secondary_neutral: 'btn-secondary-neutral',\n destructive: 'btn-destructive',\n destructive_neutral: 'btn-destructive-neutral',\n neutral: 'btn-neutral',\n primary_neutral: 'btn-primary-neutral',\n ghost: 'btn-ghost',\n link: 'btn-link',\n },\n size: {\n default: 'input-dim',\n icon: 'size-input rounded-md',\n none: '',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'default',\n },\n});\n\nexport type ButtonProps = AriaButtonProps &\n VariantProps<typeof buttonVariants> & {\n ref?: React.Ref<HTMLButtonElement>;\n active?: boolean;\n };\n\nexport function Button({\n className: additionalClasses,\n variant,\n size,\n children,\n isPending,\n active,\n ...props\n}: ButtonProps) {\n return (\n <AriaButton\n {...props}\n className={composeRenderProps(additionalClasses, className =>\n classNames(\n buttonVariants({\n variant,\n size,\n className,\n }),\n additionalClasses\n )\n )}\n >\n {composeRenderProps(children, children => (\n <>\n {isPending && <Loader />}\n {!isPending && <>{children}</>}\n </>\n ))}\n </AriaButton>\n );\n}\n"],"names":["buttonVariants","cva","Button","additionalClasses","variant","size","children","isPending","active","props","jsx","AriaButton","composeRenderProps","className","classNames","jsxs","Fragment","Loader"],"mappings":"yUAMO,MAAMA,EAAiBC,EAAI,MAAO,CACrC,SAAU,CACN,QAAS,CACL,QAAS,cACT,UAAW,gBACX,kBAAmB,wBACnB,YAAa,kBACb,oBAAqB,0BACrB,QAAS,cACT,gBAAiB,sBACjB,MAAO,YACP,KAAM,UAAA,EAEV,KAAM,CACF,QAAS,YACT,KAAM,wBACN,KAAM,EAAA,CACV,EAEJ,gBAAiB,CACb,QAAS,UACT,KAAM,SAAA,CAEd,CAAC,EAQM,SAASC,EAAO,CACnB,UAAWC,EACX,QAAAC,EACA,KAAAC,EACA,SAAAC,EACA,UAAAC,EACA,OAAAC,EACA,GAAGC,CACP,EAAgB,CACZ,OACIC,EAACC,EAAA,CACI,GAAGF,EACJ,UAAWG,EAAmBT,EAAmBU,GAC7CC,EACId,EAAe,CACX,QAAAI,EACA,KAAAC,EACA,UAAAQ,CAAA,CACH,EACDV,CAAA,CACJ,EAGH,SAAAS,EAAmBN,EAAUA,GAC1BS,EAAAC,EAAA,CACK,SAAA,CAAAT,KAAcU,EAAA,EAAO,EACrB,CAACV,GAAaG,EAAAM,EAAA,CAAG,SAAAV,CAAAA,CAAS,CAAA,EAC/B,CACH,CAAA,CAAA,CAGb"}
1
+ {"version":3,"file":"button.js","sources":["../../lib/components/button.tsx"],"sourcesContent":["'use client';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Button as AriaButton, composeRenderProps, type ButtonProps as AriaButtonProps } from 'react-aria-components';\nimport { classNames } from '../utilities/theme';\nimport { Loader } from './loader';\n\nexport const buttonVariants = cva('btn', {\n variants: {\n variant: {\n primary: 'btn-primary',\n destructive: 'btn-destructive',\n destructive_neutral: 'btn-destructive-neutral',\n neutral: 'btn-neutral',\n primary_neutral: 'btn-primary-neutral',\n ghost: 'btn-ghost',\n link: 'btn-link',\n },\n size: {\n default: 'input-dim',\n icon: 'size-input rounded-md',\n none: '',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'default',\n },\n});\n\nexport type ButtonProps = AriaButtonProps &\n VariantProps<typeof buttonVariants> & {\n ref?: React.Ref<HTMLButtonElement>;\n active?: boolean;\n };\n\nexport function Button({\n className: additionalClasses,\n variant,\n size,\n children,\n isPending,\n active,\n ...props\n}: ButtonProps) {\n return (\n <AriaButton\n {...props}\n className={composeRenderProps(additionalClasses, className =>\n classNames(\n buttonVariants({\n variant,\n size,\n className,\n }),\n additionalClasses\n )\n )}\n >\n {composeRenderProps(children, children => (\n <>\n {isPending && <Loader />}\n {!isPending && <>{children}</>}\n </>\n ))}\n </AriaButton>\n );\n}\n"],"names":["buttonVariants","cva","Button","additionalClasses","variant","size","children","isPending","active","props","jsx","AriaButton","composeRenderProps","className","classNames","jsxs","Fragment","Loader"],"mappings":"yUAMO,MAAMA,EAAiBC,EAAI,MAAO,CACrC,SAAU,CACN,QAAS,CACL,QAAS,cACT,YAAa,kBACb,oBAAqB,0BACrB,QAAS,cACT,gBAAiB,sBACjB,MAAO,YACP,KAAM,UAAA,EAEV,KAAM,CACF,QAAS,YACT,KAAM,wBACN,KAAM,EAAA,CACV,EAEJ,gBAAiB,CACb,QAAS,UACT,KAAM,SAAA,CAEd,CAAC,EAQM,SAASC,EAAO,CACnB,UAAWC,EACX,QAAAC,EACA,KAAAC,EACA,SAAAC,EACA,UAAAC,EACA,OAAAC,EACA,GAAGC,CACP,EAAgB,CACZ,OACIC,EAACC,EAAA,CACI,GAAGF,EACJ,UAAWG,EAAmBT,EAAmBU,GAC7CC,EACId,EAAe,CACX,QAAAI,EACA,KAAAC,EACA,UAAAQ,CAAA,CACH,EACDV,CAAA,CACJ,EAGH,SAAAS,EAAmBN,EAAUA,GAC1BS,EAAAC,EAAA,CACK,SAAA,CAAAT,KAAcU,EAAA,EAAO,EACrB,CAACV,GAAaG,EAAAM,EAAA,CAAG,SAAAV,CAAAA,CAAS,CAAA,EAC/B,CACH,CAAA,CAAA,CAGb"}
@@ -1,2 +1,2 @@
1
- import{jsxs as n,jsx as e}from"react/jsx-runtime";import{classNames as s}from"../utilities/theme.js";import"clsx";function a({code:o,fileName:r,className:d,...t}){return n("div",{className:s("rounded-md border border-border bg-elevation-1 overflow-auto text-sm",d),...t,children:[r&&e("div",{className:"flex items-center justify-between px-icon py-2 border-b border-border bg-elevation-1 text-muted-foreground body-sm",children:e("span",{children:r})}),e("div",{className:"p-icon",dangerouslySetInnerHTML:{__html:o}})]})}export{a as CodeBlock};
1
+ import{jsxs as s,jsx as e}from"react/jsx-runtime";import{classNames as n}from"../utilities/theme.js";import"clsx";function l({code:o,fileName:r,className:d,...t}){return s("div",{className:n("rounded-md border border-border bg-elevation-1 overflow-auto text-sm",d),...t,children:[r&&e("div",{className:"flex items-center justify-between px-icon py-2 border-b border-border text-muted body-sm",children:e("span",{children:r})}),e("div",{className:"p-icon",dangerouslySetInnerHTML:{__html:o}})]})}export{l as CodeBlock};
2
2
  //# sourceMappingURL=code-block.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-block.js","sources":["../../lib/components/code-block.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames } from '../utilities/theme';\n\nexport interface CodeBlockProps extends React.ComponentProps<'div'> {\n code: string;\n fileName?: string;\n}\n\nexport function CodeBlock({ code, fileName, className, ...props }: CodeBlockProps) {\n return (\n <div\n className={classNames('rounded-md border border-border bg-elevation-1 overflow-auto text-sm', className)}\n {...props}\n >\n {fileName && (\n <div className=\"flex items-center justify-between px-icon py-2 border-b border-border bg-elevation-1 text-muted-foreground body-sm\">\n <span>{fileName}</span>\n </div>\n )}\n <div className=\"p-icon\" dangerouslySetInnerHTML={{ __html: code }} />\n </div>\n );\n}\n"],"names":["CodeBlock","code","fileName","className","props","jsxs","classNames","jsx"],"mappings":"kHAQO,SAASA,EAAU,CAAE,KAAAC,EAAM,SAAAC,EAAU,UAAAC,EAAW,GAAGC,GAAyB,CAC/E,OACIC,EAAC,MAAA,CACG,UAAWC,EAAW,uEAAwEH,CAAS,EACtG,GAAGC,EAEH,SAAA,CAAAF,KACI,MAAA,CAAI,UAAU,qHACX,SAAAK,EAAC,OAAA,CAAM,WAAS,CAAA,CACpB,EAEJA,EAAC,OAAI,UAAU,SAAS,wBAAyB,CAAE,OAAQN,EAAK,CAAG,CAAA,CAAA,CAAA,CAG/E"}
1
+ {"version":3,"file":"code-block.js","sources":["../../lib/components/code-block.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames } from '../utilities/theme';\n\nexport interface CodeBlockProps extends React.ComponentProps<'div'> {\n code: string;\n fileName?: string;\n}\n\nexport function CodeBlock({ code, fileName, className, ...props }: CodeBlockProps) {\n return (\n <div\n className={classNames('rounded-md border border-border bg-elevation-1 overflow-auto text-sm', className)}\n {...props}\n >\n {fileName && (\n <div className=\"flex items-center justify-between px-icon py-2 border-b border-border text-muted body-sm\">\n <span>{fileName}</span>\n </div>\n )}\n <div className=\"p-icon\" dangerouslySetInnerHTML={{ __html: code }} />\n </div>\n );\n}\n"],"names":["CodeBlock","code","fileName","className","props","jsxs","classNames","jsx"],"mappings":"kHAQO,SAASA,EAAU,CAAE,KAAAC,EAAM,SAAAC,EAAU,UAAAC,EAAW,GAAGC,GAAyB,CAC/E,OACIC,EAAC,MAAA,CACG,UAAWC,EAAW,uEAAwEH,CAAS,EACtG,GAAGC,EAEH,SAAA,CAAAF,KACI,MAAA,CAAI,UAAU,2FACX,SAAAK,EAAC,OAAA,CAAM,WAAS,CAAA,CACpB,EAEJA,EAAC,OAAI,UAAU,SAAS,wBAAyB,CAAE,OAAQN,EAAK,CAAG,CAAA,CAAA,CAAA,CAG/E"}
@@ -2,7 +2,7 @@ import { operations } from '@cryptlex/web-api-types/develop';
2
2
  import { MultiSelectProps } from '../components/multi-select';
3
3
  import { ApiFilters } from '../utilities/resources';
4
4
  import { MultipleIdSearchInput } from './id-search';
5
- export declare const FILTER_COMPARISON_OPERATORS: readonly ["eq", "ne", "cn", "nc", "sw", "ew", "in", "nin", "gt", "gte", "lt", "lte"];
5
+ export declare const FILTER_COMPARISON_OPERATORS: readonly ["eq", "ne", "cn", "nc", "sw", "ew", "in", "nin", "gt", "gte", "lt", "lte", "between"];
6
6
  export type FilterComparisonOperator = (typeof FILTER_COMPARISON_OPERATORS)[number];
7
7
  export declare const COMPARISON_OPERATOR_LABELS: Record<FilterComparisonOperator, string>;
8
8
  type BaseLocalFilter<T extends FilterType, V> = {
@@ -12,13 +12,17 @@ type BaseLocalFilter<T extends FilterType, V> = {
12
12
  operator: FilterComparisonOperator;
13
13
  value: V | undefined;
14
14
  displayValue?: string;
15
+ /** If false, the filter chip is shown in the UI but not sent as a query parameter. Becomes true once the user edits the value. */
16
+ active?: boolean;
17
+ /** If true, clearing the filter resets it to preview state instead of removing it. */
18
+ isPreview?: boolean;
15
19
  };
16
20
  type EnumLocalFilter = BaseLocalFilter<'enum', Set<string | number>>;
17
21
  type IdLocalFilter = BaseLocalFilter<'id', string>;
18
22
  type BoolLocalFilter = BaseLocalFilter<'bool', boolean>;
19
23
  type StringLocalFilter = BaseLocalFilter<'string', string>;
20
24
  type NumberLocalFilter = BaseLocalFilter<'number', number>;
21
- type DateLocalFilter = BaseLocalFilter<'date', string>;
25
+ type DateLocalFilter = BaseLocalFilter<'date', string | [string, string]>;
22
26
  type IdSearchLocalFilter = BaseLocalFilter<'id-search', string[]>;
23
27
  export type TableFilter = EnumLocalFilter | IdLocalFilter | BoolLocalFilter | StringLocalFilter | DateLocalFilter | IdSearchLocalFilter | NumberLocalFilter;
24
28
  export type FilterConfig = {
@@ -39,8 +43,8 @@ export type FilterConfig = {
39
43
  };
40
44
  export type FilterType = FilterConfig['type'];
41
45
  export type FiltersConfig<TOperation extends keyof operations> = [keyof ApiFilters<TOperation>] extends [never] ? Record<string, FilterConfig> : Required<Record<keyof ApiFilters<TOperation>, FilterConfig>>;
42
- export declare function DataTableFilter({ className, defaultFilters, ...props }: React.ComponentProps<'section'> & {
43
- /** Filters applied on initial mount when no existing filters are active. */
44
- defaultFilters?: TableFilter[];
46
+ export declare function DataTableFilter({ className, previewFilters, ...props }: React.ComponentProps<'section'> & {
47
+ /** Keys from filterConfig to show as filter chips on mount, not applied until the user edits them. */
48
+ previewFilters?: string[];
45
49
  }): import("react/jsx-runtime").JSX.Element;
46
50
  export {};
@@ -13,15 +13,16 @@ declare module '@tanstack/react-table' {
13
13
  displayType: DisplayType;
14
14
  }
15
15
  }
16
- type DataTableFactory<T extends object, TOperation extends keyof operations> = {
16
+ type DataTableFactory<T extends object, TOperation extends keyof operations, TFilterConfig extends FiltersConfig<TOperation> = FiltersConfig<TOperation>> = {
17
17
  path: NoInfer<ClientPathsWithMethod<CtxClientType, 'get'>>;
18
18
  pathParameters?: NoInfer<ApiPathParameters<TOperation>>;
19
19
  columns: ColumnDef<T, any>[];
20
20
  tableActions: TableAction<T>[];
21
21
  columnsToHideByDefault?: Partial<Record<keyof T, boolean>>;
22
22
  allowSelection?: boolean;
23
- filterConfig: FiltersConfig<TOperation>;
23
+ filterConfig: TFilterConfig;
24
24
  initialFilters: TableFilter[];
25
+ previewFilters?: (keyof TFilterConfig)[];
25
26
  };
26
27
  type DataTableState = {
27
28
  sorting: SortingState;
@@ -31,7 +32,7 @@ export declare function getColumnHelper<O extends keyof operations>(): ColumnHel
31
32
  /**
32
33
  * Hook for handling all data-table state. Used in DataTableContext
33
34
  */
34
- export declare function useDataTableState<T extends object, TOperation extends keyof operations>({ path, pathParameters, columns, filterConfig, columnsToHideByDefault, allowSelection, initialFilters, tableActions, }: DataTableFactory<T, TOperation>): {
35
+ export declare function useDataTableState<T extends object, TOperation extends keyof operations, TFilterConfig extends FiltersConfig<TOperation> = FiltersConfig<TOperation>>({ path, pathParameters, columns, filterConfig, columnsToHideByDefault, allowSelection, initialFilters, previewFilters, tableActions, }: DataTableFactory<T, TOperation, TFilterConfig>): {
35
36
  readonly tableState: DataTableState;
36
37
  readonly updateTableState: (updates: Partial<DataTableState>) => void;
37
38
  readonly query: import('@tanstack/react-query').UseQueryResult<{
@@ -42,15 +43,21 @@ export declare function useDataTableState<T extends object, TOperation extends k
42
43
  readonly searchQuery: string;
43
44
  readonly tanTable: import('@tanstack/react-table').Table<any>;
44
45
  readonly mergedFilters: {
46
+ [x: string]: {
47
+ gte: string;
48
+ lte: string;
49
+ };
50
+ } | {
45
51
  [x: string]: {
46
52
  [x: string]: string | number | boolean | Set<string | number> | undefined;
47
53
  };
48
54
  };
49
55
  readonly filters: TableFilter[];
50
56
  readonly setFilters: import('react').Dispatch<import('react').SetStateAction<TableFilter[]>>;
51
- readonly filterConfig: FiltersConfig<TOperation>;
57
+ readonly filterConfig: TFilterConfig;
52
58
  readonly tableActions: TableAction<T>[];
53
59
  readonly pathParameters: NoInfer<ApiPathParameters<TOperation>> | undefined;
60
+ readonly previewFilters: (keyof TFilterConfig)[] | undefined;
54
61
  };
55
62
  export declare const DataTableContext: import('react').Context<{
56
63
  readonly tableState: DataTableState;
@@ -63,6 +70,11 @@ export declare const DataTableContext: import('react').Context<{
63
70
  readonly searchQuery: string;
64
71
  readonly tanTable: import('@tanstack/react-table').Table<any>;
65
72
  readonly mergedFilters: {
73
+ [x: string]: {
74
+ gte: string;
75
+ lte: string;
76
+ };
77
+ } | {
66
78
  [x: string]: {
67
79
  [x: string]: string | number | boolean | Set<string | number> | undefined;
68
80
  };
@@ -538,6 +550,7 @@ export declare const DataTableContext: import('react').Context<{
538
550
  } | {
539
551
  id: string;
540
552
  } | undefined> | undefined;
553
+ readonly previewFilters: string[] | undefined;
541
554
  } | null>;
542
555
  export declare function useDataTable(): {
543
556
  readonly tableState: DataTableState;
@@ -550,6 +563,11 @@ export declare function useDataTable(): {
550
563
  readonly searchQuery: string;
551
564
  readonly tanTable: import('@tanstack/react-table').Table<any>;
552
565
  readonly mergedFilters: {
566
+ [x: string]: {
567
+ gte: string;
568
+ lte: string;
569
+ };
570
+ } | {
553
571
  [x: string]: {
554
572
  [x: string]: string | number | boolean | Set<string | number> | undefined;
555
573
  };
@@ -1025,6 +1043,7 @@ export declare function useDataTable(): {
1025
1043
  } | {
1026
1044
  id: string;
1027
1045
  } | undefined> | undefined;
1046
+ readonly previewFilters: string[] | undefined;
1028
1047
  };
1029
1048
  export declare function DataTableProvider<T extends object, TOperation extends keyof operations>({ children, ...props }: {
1030
1049
  children: React.ReactNode;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,Fragment as T,jsxs as d}from"react/jsx-runtime";import{parseAbsolute as pe,getLocalTimeZone as fe}from"@internationalized/date";import{createContext as be,useState as x,useMemo as he,useEffect as ee,useContext as Se,useRef as ve}from"react";import{Button as y}from"./button.js";import{useSensors as ye,useSensor as V,PointerSensor as we,KeyboardSensor as Ce,DndContext as Ie,closestCenter as Ne,DragOverlay as xe}from"@dnd-kit/core";import{sortableKeyboardCoordinates as Te,SortableContext as Pe,verticalListSortingStrategy as De,arrayMove as Fe,useSortable as Ae}from"@dnd-kit/sortable";import{CSS as Re}from"@dnd-kit/utilities";import{useQuery as Oe}from"@tanstack/react-query";import{createColumnHelper as te,useReactTable as ze,getCoreRowModel as Le,flexRender as M}from"@tanstack/react-table";import{useLocalStorage as B}from"@uidotdev/usehooks";import{merge as _e}from"lodash-es";import{Badge as K}from"./badge.js";import{DatePicker as Me}from"./date-picker.js";import{EasyMenu as P,MenuItem as I}from"./menu.js";import{MultiSelect as qe}from"./multi-select.js";import{NumberField as Ee}from"./numberfield.js";import{PopoverTrigger as $e,Popover as je}from"./popover.js";import{TextField as He}from"./textfield.js";import{formatDate as ne}from"../utilities/date.js";import{useResourceFormatter as E,ALL_OS as ke}from"../utilities/resources.js";import{classNames as w}from"../utilities/theme.js";import{IcInfo as Ve,IcMoreVertical as Be,IcRefresh as Ke,IcColumns as Qe,IcGrip as Ue,IcFirst as Ge,IcLeft as Ze,IcRight as Xe,IcLast as Ye,IcSortAsc as Je,IcSortDesc as We,IcSortNone as et,IcCheck as Q,IcMinus as tt,IcAccount as nt,IcLicense as rt,IcDate as at,IcFile as ot,IcFilter as it,IcRemove as st}from"./icons.js";import{MultipleIdSearchInput as lt}from"./id-search.js";import{Loader as ct}from"./loader.js";import{SearchField as ut}from"./searchfield.js";import{Table as dt,TableHeader as mt,TableRow as U,TableHead as gt,TableBody as pt,TableCell as ft}from"./table.js";import{CountryName as bt}from"../utilities/countries.js";import{Duration as ht}from"../utilities/duration.js";import{formatDays as St,formatFilesize as vt,formatNumber as yt}from"../utilities/numbers.js";import{Checkbox as G}from"./checkbox.js";import{TooltipTrigger as wt,Tooltip as Ct}from"./tooltip.js";import{getSubscriptionStartTriggerLabel as It,ALL_LICENSE_TYPES as Nt}from"./select-options.js";import{useCtxClient as xt}from"../utilities/ctx-client.js";import{ControlledDialogProvider as Tt,useControlledDialog as re}from"./dialog.js";import"class-variance-authority";import"react-aria-components";import"clsx";import"./calendar.js";import"./form.js";import"./card.js";import"./datefield.js";import"../utilities/form.js";import"../utilities/form-context.js";import"@tanstack/react-form";import"./list-box.js";import"./select.js";import"./kbd.js";import"../utilities/string.js";import"../utilities/empty-option.js";function Pt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const ae=te(),Dt=[ae.accessor("checkbox",{header:({table:e})=>t(G,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all"}),cell:({row:e})=>t(G,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1})],C="TableActions";function Ft(e){return e.length===0?[]:[ae.accessor(C,{header:"Actions",id:C,enableHiding:!1,cell:({row:r})=>t(qt,{label:t(Be,{}),data:r.original,items:e}),enableSorting:!1})]}function Hn(){return te()}function kn({path:e,pathParameters:r,columns:n,filterConfig:a,columnsToHideByDefault:i={},allowSelection:s=!1,initialFilters:l=[],tableActions:o}){const[u,g]=x({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:p,pagination:b}=u,[v,z]=x(""),[A,R]=x({}),[m,f]=x(l),S=he(()=>m.map(c=>Array.isArray(c.value)?{[c.property]:{[c.operator]:c.value.join(",")}}:{[c.property]:{[c.operator]:c.value}}).reduce((c,h)=>_e(c,h),{}),[m]),D={...m,page:b.pageIndex+1,limit:b.pageSize,sort:Pt(p[0]),search:v},ce=xt(),L=["get",e,D],[$,j]=B(`${L.join("")}_ctx_column_order_preference`,[]),[H,ue]=B(`${L.join("")}_ctx_column_visibility_preference`,{id:!1,...i}),_=c=>{g(h=>({...h,...c}))},O=Oe({queryKey:L,queryFn:async()=>{const c=await ce.GET(e,{params:{query:{page:D.page,limit:D.limit,sort:D.sort,search:D.search,...S},path:r}});return{data:c.data??[],total:Number.parseInt(c.response.headers.get("Pagination-Count")||"0")}}}),de=o.filter(se),me=[...s?Dt:[],...n,...Ft(de??[])];function ge(c){return typeof c=="function"}function F(c,h){return ge(c)?c(h):c}const k=ze({data:O.data?.data??[],columns:me,getCoreRowModel:Le(),rowCount:O.data?.total??0,manualPagination:!0,onPaginationChange:c=>{_({pagination:F(c,b)})},manualSorting:!0,onSortingChange:c=>{R({}),_({sorting:[...F(c,p)]})},manualFiltering:!0,onColumnVisibilityChange:c=>{ue(F(c,H))},onRowSelectionChange:c=>{R(F(c,A))},onColumnOrderChange:c=>{j(F(c,$))},state:{sorting:p,columnVisibility:H,pagination:b,rowSelection:A,columnOrder:$},meta:{refetch:O.refetch}});return ee(()=>{const c=k.getAllLeafColumns();j([...c.filter(h=>h.id!==C).map(h=>h.id),...c.filter(h=>h.id===C).map(h=>h.id)])},[]),{tableState:u,updateTableState:_,query:O,setSearchQuery:z,searchQuery:v,tanTable:k,mergedFilters:S,filters:m,setFilters:f,filterConfig:a,tableActions:o,pathParameters:r}}const oe=be(null);function N(){const e=Se(oe);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function Vn({children:e,...r}){return t(oe.Provider,{value:r,children:e})}function Bn({className:e,...r}){const{query:n,tanTable:a}=N();return t(T,{children:d(Tt,{children:[t(zt,{}),d("section",{...r,className:w("z-20 flex flex-col bg-elevation-1 border rounded-md",e),children:[d("div",{className:"w-full overflow-auto h-table relative rounded-md",tabIndex:0,children:[n.isLoading&&t(Z,{className:"cursor-wait",children:t(ct,{})}),!n.isLoading&&a.getRowModel().rows.length===0&&t(Z,{className:"cursor-not-allowed",children:!n.isFetching&&(n.isError?d("span",{className:"flex gap-3 justify-center items-center",children:[t(Ve,{}),t("span",{children:n.error.message})]}):n.data?.data?.length===0?t(T,{children:"No results found."}):t(T,{children:"Unknown error. Please contact customer support."}))}),!n.isLoading&&a.getRowModel().rows.length!==0&&t(_t,{className:"w-full"})]}),d("div",{className:"flex w-full justify-between border-t gap-icon p-icon overflow-x-auto",children:[d("div",{className:"flex gap-icon",children:[t(At,{}),t(Ot,{})]}),t(Rt,{})]})]})]})})}function Z({children:e,className:r}){return d(T,{children:[t("span",{className:w(r,"absolute top-0 bg-elevation-1 text-foreground z-20 size-full body-sm flex items-center justify-center"),children:e}),t("span",{className:"relative h-full w-0 block"})]})}function At(){const{tanTable:e}=N(),[r,n]=x(null),a=E(),i=ye(V(we),V(Ce,{coordinateGetter:Te}));return t(Ie,{sensors:i,collisionDetection:Ne,onDragStart:l=>{const{active:o}=l;n(o.id.toString())},onDragEnd:l=>{const{active:o,over:u}=l;if(u&&o.id!==u.id){const g=e.getState().columnOrder,p=g.indexOf(o.id.toString()),b=g.indexOf(u.id.toString());e.setColumnOrder([...Fe(g,p,b)])}n(null)},children:d(Pe,{items:e.getState().columnOrder,strategy:De,children:[d(P,{label:d(T,{children:[t(Qe,{className:"inline align-bottom me-1"}),"Columns"]}),selectionMode:"multiple",items:e.getAllFlatColumns(),selectedKeys:e.getVisibleFlatColumns().map(l=>l.id),children:[t(I,{onAction:()=>e.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),e.getState().columnOrder.map(l=>{const o=e.getAllFlatColumns().find(u=>u.id===l);return!o||o.id==="checkbox"||o.id===C?null:t(s,{column:o},o.id)})]}),t(xe,{children:r?t("div",{className:"opacity-70 border-2 border-primary",children:a(r)}):null})]})});function s({column:l}){const{attributes:o,listeners:u,setNodeRef:g,transform:p,transition:b}=Ae({id:l.id}),v={transform:Re.Transform.toString(p),transition:b,zIndex:"999"};return d(I,{ref:g,style:v,...o,id:l.id,onAction:()=>l.toggleVisibility(),isDisabled:!l.getCanHide(),className:"flex items-center",children:[t(Ue,{...u,className:"size-icon cursor-grab"}),q(l),l.getIsSorted()&&t(ie,{className:"size-icon",direction:l.getIsSorted()})]})}}function Rt(){const{tanTable:e}=N(),r=e.getRowCount();return d("div",{className:"flex items-center gap-2",children:[t("span",{className:"whitespace-nowrap body-sm text-muted",children:`${e.getState().pagination.pageIndex*e.getState().pagination.pageSize+1} - ${Math.min((e.getState().pagination.pageIndex+1)*e.getState().pagination.pageSize,r)} of ${r?.toLocaleString()}`}),t(y,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Ge,{})}),t(y,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Ze,{})}),t(y,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Xe,{})}),t(y,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Ye,{})})]})}function Ot(){const{tanTable:e}=N(),r=[10,20,30,40,50];return t(P,{label:e.getState().pagination.pageSize.toString(),selectionMode:"single",selectedKeys:[e.getState().pagination.pageSize.toString()],items:r.map(n=>({id:n.toString(),value:n})),children:n=>t(I,{onAction:()=>e.setPageSize(n.value),children:n.value})})}function zt(){const{query:e,tanTable:r,searchQuery:n,setSearchQuery:a,tableActions:i}=N(),s=r.getSelectedRowModel().rows.length>0,l=i.filter(o=>o.resourceType!=="single").filter(o=>o.resourceType==="multiple"===s);return d("section",{className:"flex justify-between my-0 mb-icon gap-icon overflow-auto",children:[d("div",{className:"flex gap-icon",children:[t(y,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(Ke,{})}),t(ut,{value:n,onChange:a}),t(Vt,{})]}),t("div",{className:"flex gap-icon",children:t(Mt,{items:l,isFetching:e.isFetching})})]})}function ie({direction:e,...r}){return e==="asc"?t(Je,{className:"size-3.5",...r}):e==="desc"?t(We,{className:"size-3.5",...r}):t(et,{className:"size-3.5",...r})}function q(e){const r=E(),n=e.columnDef.header;return typeof n=="string"?n:r(e.id)}function Lt(e){const r=e.column.columnDef.meta?.displayType,n=e.getValue();if(n==null)return null;switch(r){case"date":return t("span",{className:"tabular-nums",children:ne(n)});case"number":return t("span",{className:"block text-right tabular-nums",children:yt(n)});case"boolean":return t(K,{variant:n?"success":"destructive",className:"w-full capitalize",children:String(n)});case"badge":return t(K,{className:"w-full",children:String(n)});case"country":return t(bt,{value:n});case"enum":return t("span",{className:"uppercase w-full",children:String(n)});case"fileSize":return vt(n);case"days":return St(n);case"os":return ke[n]??n;case"licenseType":return Nt[n]??n;case"subscriptionInterval":return ht.formatISODuration(n);case"subscriptionStartTrigger":return It(n);default:return String(n)}}function X({header:e}){const r=e.column.columnDef.header;return typeof r=="string"||!r?q(e.column):typeof r=="function"?typeof r(e.getContext())=="string"?q(e.column):M(r,e.getContext()):M(r,e.getContext())}function _t({className:e}){const{tanTable:r}=N(),n=(a,i,s="z-50")=>w("px-icon py-2 text-left body-sm font-medium whitespace-nowrap",a&&`bg-elevation-1 sticky right-0 ${s} text-center justify-center`,i);return d(dt,{className:w("table-auto border-0 rounded-md",e),children:[t(mt,{className:"sticky top-0 z-10 rounded-md",children:r.getHeaderGroups().map(a=>t(U,{children:a.headers.map(i=>d(gt,{scope:"col",colSpan:i.colSpan,className:n(i.id===C,"bg-elevation-1"),children:[!i.column.getCanSort()&&!i.isPlaceholder&&t("div",{className:w("w-full py-1 inline-flex items-center gap-1 body-sm",i.id===C?"justify-center":"justify-start"),children:t(X,{header:i})}),i.column.getCanSort()&&d(y,{variant:"ghost",className:w("w-full p-1",i.id===C?"justify-center":"justify-start"),onPress:i.column.getToggleSortingHandler(),children:[t("span",{children:t(X,{header:i})}),t(ie,{direction:i.column.getIsSorted()})]})]},i.id))},a.id))}),t(pt,{children:r.getRowModel().rows.map(a=>t(U,{className:w("transition-colors data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20"),"data-selected":a.getIsSelected(),children:a.getVisibleCells().map(i=>{const s=i.column.id===C,l=i.column.columnDef.meta?.displayType?Lt(i):M(i.column.columnDef.cell,i.getContext());return t(ft,{className:w(n(s,void 0,"z-1"),s&&"flex justify-center items-center"),children:l},i.id)})},a.id))})]})}function Y(e){return e.resourceType==="none"}function se(e){return e.resourceType==="single"}function J(e){return e.resourceType==="multiple"}function Mt({items:e,isFetching:r}){const{openDialog:n,closeDialog:a}=re(),{tanTable:i}=N();function s(o,u){return o.isDisabled?Y(o)?o.isDisabled():J(o)?o.isDisabled(u):!1:!1}const l=i.getSelectedRowModel().rows.map(o=>o.original);return t(T,{children:e.map((o,u)=>{const g=o.icon,p=s(o,l)||r;return d(y,{"aria-label":o.label,type:"button",isDisabled:p,className:"animate-in fade-in slide-in-from-right-15 duration-300 transition-transform",onPress:b=>{const v={event:b,openDialog:n,closeDialog:a};Y(o)?o.onPress(v):J(o)&&o.onPress({...v,data:l})},variant:o.variant??"neutral",children:[g&&t(g,{"aria-hidden":!0}),t("span",{children:o.label})]},`${o.label}-${u}`)})})}function qt({label:e,items:r,data:n}){const{openDialog:a,closeDialog:i}=re();return r.length<4?t("div",{className:"flex items-center gap-2",children:r.map((s,l)=>{const o=s.icon,u=typeof s.label=="function"?s.label(n):s.label;return d(wt,{children:[t(y,{"aria-label":typeof u=="string"?u:void 0,isDisabled:s.isDisabled?.(n)??!1,variant:"ghost",size:"icon",onPress:()=>{const g={openDialog:a,closeDialog:i};s.onPress({...g,data:n})},children:t(o,{className:"size-icon"})}),t(Ct,{children:u})]},`${l}-${typeof u=="string"?u:""}`)})}):t(P,{"aria-label":"Actions",label:e,size:"icon",children:r.map((s,l)=>{const o=s.icon,u=typeof s.label=="function"?s.label(n):s.label;return d(I,{id:typeof u=="string"?u:void 0,isDisabled:s.isDisabled?.(n)??!1,onAction:()=>{const g={openDialog:a,closeDialog:i};se(s)&&s.onPress({...g,data:n})},children:[t(o,{className:"size-icon"}),u]},`${l}-${typeof u=="string"?u:""}`)})})}const Kn=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte"],W={eq:"equal to",ne:"not equal to",cn:"contains",nc:"does not contain",sw:"starts with",ew:"ends with",in:"includes",nin:"does not include",gt:"greater than",gte:"greater than or equal to",lt:"less than",lte:"less than or equal to"},Et={eq:"=",ne:"≠",cn:"contains",nc:"!contains",sw:"starts with",ew:"ends with",in:"in",nin:"not in",gt:">",gte:"≥",lt:"<",lte:"≤"};function $t(e,r){const n=`${r}-${Date.now()}`,a=le[e][0];switch(e){case"bool":return{id:n,type:e,property:r,operator:a,value:!0};case"string":return{id:n,type:e,property:r,operator:a,value:""};case"date":return{id:n,type:e,property:r,operator:a,value:new Date().toISOString()};case"id":return{id:n,type:e,property:r,operator:a,value:""};case"id-search":return{id:n,type:e,property:r,operator:a,value:[]};case"enum":return{id:n,type:e,property:r,operator:a,value:new Set};case"number":return{id:n,type:e,property:r,operator:a,value:0}}}const le={bool:["eq"],enum:["in","nin"],id:["in","nin"],"id-search":["in","nin"],string:["eq","ne","cn","nc","sw","ew","in","nin"],date:["lt","gt"],number:["eq","ne","gt","gte","lt","lte"]};function jt(e){switch(e.type){case"string":case"id":return e.value??"";case"number":return e.value?.toString()??"";case"bool":return e.value?"true":"false";case"date":return e.value?ne(e.value,{dateStyle:"short"})??"":"";case"enum":return e.value&&e.value.size>0?`${e.value.size} selected`:"";case"id-search":return e.value&&e.value.length>0?e.value.length===1?"1 item":`${e.value.length} items`:""}}function Ht({filter:e,filterConfig:r,pathParameters:n,onChange:a}){if(e.type==="string"||e.type==="id")return t(He,{autoFocus:!0,value:e.value??"",onChange:a,"aria-label":"Filter value"});if(e.type==="number")return t(Ee,{autoFocus:!0,value:e.value,onChange:a,"aria-label":"Filter value"});if(e.type==="bool")return d(P,{autoFocus:!0,label:e.value?"True":"False",variant:"neutral","aria-label":"Filter value",children:[t(I,{onAction:()=>a(!0),children:"True"}),t(I,{onAction:()=>a(!1),children:"False"})]});if(e.type==="date"){const i=e.value?pe(e.value,fe()):null;return t(Me,{autoFocus:!0,hideTimeZone:!0,value:i,onChange:s=>a(s?s.toAbsoluteString():new Date().toISOString()),"aria-label":"Filter date"})}if(e.type==="enum"){const i=r[e.property];return i.type!=="enum"?null:t(qe,{autoFocus:!0,items:i.options,value:e.value??new Set,onChange:a,"aria-label":"Filter value"})}if(e.type==="id-search"){const i=r[e.property];if(i.type!=="id-search")return null;const s=n?{path:n,query:{}}:void 0;return t(lt,{autoFocus:!0,path:i.path,accessor:i.accessor,defaultParams:s,value:e.value??[],onChange:a,"aria-label":"Filter value"})}return null}function kt({filter:e,filterConfig:r,pathParameters:n,resourceFormatter:a,onRemove:i,onUpdate:s,isOpen:l,onOpenChange:o}){const u=le[e.type],g=jt(e);return d($e,{isOpen:l,onOpenChange:o,children:[d(y,{type:"button",variant:"primary_neutral",className:"animate-in slide-in-from-left-10 fade-in",children:[t("span",{className:"font-medium",children:a(e.property)}),t("span",{children:Et[e.operator]}),g&&t("span",{children:g})]}),t(je,{className:"p-icon min-w-48",children:d("div",{className:"flex flex-col gap-icon",children:[u.length>1&&t(P,{label:W[e.operator],variant:"neutral","aria-label":"Change operator",children:u.map(p=>t(I,{onAction:()=>s({operator:p}),children:W[p]},p))}),t(Ht,{filter:e,filterConfig:r,pathParameters:n,onChange:p=>s({value:p})}),t(y,{type:"button",variant:"destructive",onPress:i,"aria-label":`Remove ${a(e.property)} filter`,children:t(st,{})})]})})]})}function Vt({className:e,defaultFilters:r,...n}){const{filters:a,query:i,setFilters:s,filterConfig:l,pathParameters:o}=N(),u=E(),g=Object.keys(l).sort(),[p,b]=x(null),v=ve(!1);ee(()=>{!v.current&&r&&r.length>0&&a.length===0&&s(r),v.current=!0},[]);const z=(m,f)=>{const S=$t(m,f);s([...a,S]),b(S.id)},A=m=>{s(a.filter(f=>f.id!==m))},R=(m,f)=>{s(a.map(S=>S.id===m?{...S,...f}:S))};return d("section",{...n,className:w("flex flex-wrap gap-icon items-center",e),children:[a.map(m=>t(kt,{filter:m,filterConfig:l,pathParameters:o,resourceFormatter:u,onRemove:()=>A(m.id),onUpdate:f=>R(m.id,f),isOpen:p===m.id,onOpenChange:f=>b(f?m.id:null)},m.id)),t(P,{label:t(it,{}),isDisabled:i.isPending||g.length===0,variant:"neutral","aria-label":"Add filter",children:g.map(m=>{const f=l[m].type,S=Bt[f];return d(I,{className:"!justify-between",onAction:()=>z(f,m),children:[u(m),t(S,{})]},m)})})]})}const Bt={"id-search":ot,bool:Q,date:at,enum:rt,id:nt,number:tt,string:Q};export{W as C,Vt as D,Bn as DataTable,oe as DataTableContext,Vn as DataTableProvider,Kn as F,Hn as getColumnHelper,N as useDataTable,kn as useDataTableState};
1
+ "use client";import{jsx as t,Fragment as D,jsxs as p}from"react/jsx-runtime";import{parseAbsolute as q,getLocalTimeZone as E}from"@internationalized/date";import{createContext as ve,useState as A,useMemo as ye,useEffect as le,useContext as we,useRef as Ce}from"react";import{Button as w}from"./button.js";import{useSensors as Ie,useSensor as X,PointerSensor as Ne,KeyboardSensor as xe,DndContext as Te,closestCenter as Ae,DragOverlay as De}from"@dnd-kit/core";import{sortableKeyboardCoordinates as Pe,SortableContext as Fe,verticalListSortingStrategy as Oe,arrayMove as Re,useSortable as ze}from"@dnd-kit/sortable";import{CSS as Le}from"@dnd-kit/utilities";import{useQuery as _e}from"@tanstack/react-query";import{createColumnHelper as se,useReactTable as Me,getCoreRowModel as $e,flexRender as V}from"@tanstack/react-table";import{useLocalStorage as Y}from"@uidotdev/usehooks";import{merge as je}from"lodash-es";import{Badge as J}from"./badge.js";import{DatePicker as H}from"./date-picker.js";import{EasyMenu as P,MenuItem as x}from"./menu.js";import{MultiSelect as qe}from"./multi-select.js";import{NumberField as Ee}from"./numberfield.js";import{PopoverTrigger as He,Popover as ke}from"./popover.js";import{TextField as Ve}from"./textfield.js";import{formatDate as _}from"../utilities/date.js";import{useResourceFormatter as K,ALL_OS as Be,useProjectName as Ke}from"../utilities/resources.js";import{classNames as C}from"../utilities/theme.js";import{IcInfo as Qe,IcMoreVertical as Ue,IcRefresh as Ze,IcColumns as Ge,IcGrip as Xe,IcFirst as Ye,IcLeft as Je,IcRight as We,IcLast as et,IcSortAsc as tt,IcSortDesc as nt,IcSortNone as rt,IcCheck as W,IcMinus as at,IcAccount as ot,IcLicense as it,IcDate as lt,IcFile as st,IcFilter as ct}from"./icons.js";import{MultipleIdSearchInput as ut}from"./id-search.js";import{Loader as dt}from"./loader.js";import{SearchField as mt}from"./searchfield.js";import{Table as gt,TableHeader as pt,TableRow as ee,TableHead as ft,TableBody as bt,TableCell as ht}from"./table.js";import{CountryName as St}from"../utilities/countries.js";import{Duration as vt}from"../utilities/duration.js";import{formatDays as yt,formatFilesize as wt,formatNumber as Ct}from"../utilities/numbers.js";import{Checkbox as te}from"./checkbox.js";import{TooltipTrigger as It,Tooltip as Nt}from"./tooltip.js";import{getSubscriptionStartTriggerLabel as xt,ALL_LICENSE_TYPES as Tt}from"./select-options.js";import{useCtxClient as At}from"../utilities/ctx-client.js";import{ControlledDialogProvider as Dt,useControlledDialog as ce}from"./dialog.js";import"class-variance-authority";import"react-aria-components";import"clsx";import"./calendar.js";import"./form.js";import"./card.js";import"./datefield.js";import"../utilities/form.js";import"../utilities/form-context.js";import"@tanstack/react-form";import"./list-box.js";import"./select.js";import"./kbd.js";import"../utilities/string.js";import"../utilities/empty-option.js";function Pt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const ue=se(),Ft=[ue.accessor("checkbox",{header:({table:e})=>t(te,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all"}),cell:({row:e})=>t(te,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1})],I="TableActions";function Ot(e){return e.length===0?[]:[ue.accessor(I,{header:"Actions",id:I,enableHiding:!1,cell:({row:r})=>t(qt,{label:t(Ue,{}),data:r.original,items:e}),enableSorting:!1})]}function kn(){return se()}function Vn({path:e,pathParameters:r,columns:n,filterConfig:a,columnsToHideByDefault:o={},allowSelection:i=!1,initialFilters:s=[],previewFilters:l,tableActions:u}){const[m,S]=A({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:b,pagination:v}=m,[O,M]=A(""),[R,d]=A({}),[g,f]=A(s),y=ye(()=>g.filter(c=>c.active!==!1).map(c=>c.operator==="between"&&Array.isArray(c.value)&&c.value.length===2?{[c.property]:{gte:c.value[0],lte:c.value[1]}}:Array.isArray(c.value)?{[c.property]:{[c.operator]:c.value.join(",")}}:{[c.property]:{[c.operator]:c.value}}).reduce((c,h)=>je(c,h),{}),[g]),N={...g,page:v.pageIndex+1,limit:v.pageSize,sort:Pt(b[0]),search:O},z=At(),$=["get",e,N],[Q,U]=Y(`${$.join("")}_ctx_column_order_preference`,[]),[Z,fe]=Y(`${$.join("")}_ctx_column_visibility_preference`,{id:!1,...o}),j=c=>{S(h=>({...h,...c}))},L=_e({queryKey:$,queryFn:async()=>{const c=await z.GET(e,{params:{query:{page:N.page,limit:N.limit,sort:N.sort,search:N.search,...y},path:r}});return{data:c.data??[],total:Number.parseInt(c.response.headers.get("Pagination-Count")||"0")}}}),be=u.filter(ge),he=[...i?Ft:[],...n,...Ot(be??[])];function Se(c){return typeof c=="function"}function F(c,h){return Se(c)?c(h):c}const G=Me({data:L.data?.data??[],columns:he,getCoreRowModel:$e(),rowCount:L.data?.total??0,manualPagination:!0,onPaginationChange:c=>{j({pagination:F(c,v)})},manualSorting:!0,onSortingChange:c=>{d({}),j({sorting:[...F(c,b)]})},manualFiltering:!0,onColumnVisibilityChange:c=>{fe(F(c,Z))},onRowSelectionChange:c=>{d(F(c,R))},onColumnOrderChange:c=>{U(F(c,Q))},state:{sorting:b,columnVisibility:Z,pagination:v,rowSelection:R,columnOrder:Q},meta:{refetch:L.refetch}});return le(()=>{const c=G.getAllLeafColumns();U([...c.filter(h=>h.id!==I).map(h=>h.id),...c.filter(h=>h.id===I).map(h=>h.id)])},[]),{tableState:m,updateTableState:j,query:L,setSearchQuery:M,searchQuery:O,tanTable:G,mergedFilters:y,filters:g,setFilters:f,filterConfig:a,tableActions:u,pathParameters:r,previewFilters:l}}const de=ve(null);function T(){const e=we(de);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function Bn({children:e,...r}){return t(de.Provider,{value:r,children:e})}function Kn({className:e,...r}){const{query:n,tanTable:a}=T();return t(D,{children:p(Dt,{children:[t(_t,{}),p("section",{...r,className:C("z-20 flex flex-col bg-elevation-1 border rounded-md",e),children:[p("div",{className:"w-full overflow-auto h-table relative rounded-md",tabIndex:0,children:[n.isLoading&&t(ne,{className:"cursor-wait",children:t(dt,{})}),!n.isLoading&&a.getRowModel().rows.length===0&&t(ne,{className:"cursor-not-allowed",children:!n.isFetching&&(n.isError?p("span",{className:"flex gap-3 justify-center items-center",children:[t(Qe,{}),t("span",{children:n.error.message})]}):n.data?.data?.length===0?t(D,{children:"No results found."}):t(D,{children:"Unknown error. Please contact customer support."}))}),!n.isLoading&&a.getRowModel().rows.length!==0&&t($t,{className:"w-full"})]}),p("div",{className:"flex w-full justify-between border-t gap-icon p-icon overflow-x-auto",children:[p("div",{className:"flex gap-icon",children:[t(Rt,{}),t(Lt,{})]}),t(zt,{})]})]})]})})}function ne({children:e,className:r}){return p(D,{children:[t("span",{className:C(r,"absolute top-0 bg-elevation-1 text-foreground z-20 size-full body-sm flex items-center justify-center"),children:e}),t("span",{className:"relative h-full w-0 block"})]})}function Rt(){const{tanTable:e}=T(),[r,n]=A(null),a=K(),o=Ie(X(Ne),X(xe,{coordinateGetter:Pe}));return t(Te,{sensors:o,collisionDetection:Ae,onDragStart:s=>{const{active:l}=s;n(l.id.toString())},onDragEnd:s=>{const{active:l,over:u}=s;if(u&&l.id!==u.id){const m=e.getState().columnOrder,S=m.indexOf(l.id.toString()),b=m.indexOf(u.id.toString());e.setColumnOrder([...Re(m,S,b)])}n(null)},children:p(Fe,{items:e.getState().columnOrder,strategy:Oe,children:[p(P,{label:p(D,{children:[t(Ge,{className:"inline align-bottom me-1"}),"Columns"]}),selectionMode:"multiple",items:e.getAllFlatColumns(),selectedKeys:e.getVisibleFlatColumns().map(s=>s.id),children:[t(x,{onAction:()=>e.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),e.getState().columnOrder.map(s=>{const l=e.getAllFlatColumns().find(u=>u.id===s);return!l||l.id==="checkbox"||l.id===I?null:t(i,{column:l},l.id)})]}),t(De,{children:r?t("div",{className:"opacity-70 border-2 border-primary",children:a(r)}):null})]})});function i({column:s}){const{attributes:l,listeners:u,setNodeRef:m,transform:S,transition:b}=ze({id:s.id}),v={transform:Le.Transform.toString(S),transition:b,zIndex:"999"};return p(x,{ref:m,style:v,...l,id:s.id,onAction:()=>s.toggleVisibility(),isDisabled:!s.getCanHide(),className:"flex items-center",children:[t(Xe,{...u,className:"size-icon cursor-grab"}),B(s),s.getIsSorted()&&t(me,{className:"size-icon",direction:s.getIsSorted()})]})}}function zt(){const{tanTable:e}=T(),r=e.getRowCount();return p("div",{className:"flex items-center gap-2",children:[t("span",{className:"whitespace-nowrap body-sm text-muted",children:`${e.getState().pagination.pageIndex*e.getState().pagination.pageSize+1} - ${Math.min((e.getState().pagination.pageIndex+1)*e.getState().pagination.pageSize,r)} of ${r?.toLocaleString()}`}),t(w,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Ye,{})}),t(w,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Je,{})}),t(w,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(We,{})}),t(w,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(et,{})})]})}function Lt(){const{tanTable:e}=T(),r=[10,20,30,40,50];return t(P,{label:e.getState().pagination.pageSize.toString(),selectionMode:"single",selectedKeys:[e.getState().pagination.pageSize.toString()],items:r.map(n=>({id:n.toString(),value:n})),children:n=>t(x,{onAction:()=>e.setPageSize(n.value),children:n.value})})}function _t(){const{query:e,tanTable:r,searchQuery:n,setSearchQuery:a,tableActions:o,previewFilters:i}=T(),s=r.getSelectedRowModel().rows.length>0,l=o.filter(u=>u.resourceType!=="single").filter(u=>u.resourceType==="multiple"===s);return p("section",{className:"flex justify-between my-0 mb-icon gap-icon overflow-x-auto py-1",children:[p("div",{className:"flex gap-icon",children:[t(w,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(Ze,{})}),t(mt,{value:n,onChange:a}),t(Bt,{previewFilters:i})]}),t("div",{className:"flex gap-icon",children:t(jt,{items:l,isFetching:e.isFetching})})]})}function me({direction:e,...r}){return e==="asc"?t(tt,{className:"size-3.5",...r}):e==="desc"?t(nt,{className:"size-3.5",...r}):t(rt,{className:"size-3.5",...r})}function B(e){const r=K(),n=e.columnDef.header;return typeof n=="string"?n:r(e.id)}function Mt(e){const r=e.column.columnDef.meta?.displayType,n=e.getValue();if(n==null)return null;switch(r){case"date":return t("span",{className:"tabular-nums",children:_(n)});case"number":return t("span",{className:"block text-right tabular-nums",children:Ct(n)});case"boolean":return t(J,{variant:n?"success":"destructive",className:"w-full capitalize",children:String(n)});case"badge":return t(J,{className:"w-full",children:String(n)});case"country":return t(St,{value:n});case"enum":return t("span",{className:"uppercase w-full",children:String(n)});case"fileSize":return wt(n);case"days":return yt(n);case"os":return Be[n]??n;case"licenseType":return Tt[n]??n;case"subscriptionInterval":return vt.formatISODuration(n);case"subscriptionStartTrigger":return xt(n);default:return String(n)}}function re({header:e}){const r=e.column.columnDef.header;return typeof r=="string"||!r?B(e.column):typeof r=="function"?typeof r(e.getContext())=="string"?B(e.column):V(r,e.getContext()):V(r,e.getContext())}function $t({className:e}){const{tanTable:r}=T(),n=(a,o,i="z-50")=>C("px-icon py-2 text-left body-sm font-medium whitespace-nowrap",a&&`bg-elevation-1 sticky right-0 ${i} text-center justify-center`,o);return p(gt,{className:C("table-auto border-0 rounded-md",e),children:[t(pt,{className:"sticky top-0 z-10 rounded-md",children:r.getHeaderGroups().map(a=>t(ee,{children:a.headers.map(o=>p(ft,{scope:"col",colSpan:o.colSpan,className:n(o.id===I,"bg-elevation-1"),children:[!o.column.getCanSort()&&!o.isPlaceholder&&t("div",{className:C("w-full py-1 inline-flex items-center gap-1 body-sm",o.id===I?"justify-center":"justify-start"),children:t(re,{header:o})}),o.column.getCanSort()&&p(w,{variant:"ghost",className:C("w-full p-1",o.id===I?"justify-center":"justify-start"),onPress:o.column.getToggleSortingHandler(),children:[t("span",{children:t(re,{header:o})}),t(me,{direction:o.column.getIsSorted()})]})]},o.id))},a.id))}),t(bt,{children:r.getRowModel().rows.map(a=>t(ee,{className:C("transition-colors data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20"),"data-selected":a.getIsSelected(),children:a.getVisibleCells().map(o=>{const i=o.column.id===I,s=o.column.columnDef.meta?.displayType?Mt(o):V(o.column.columnDef.cell,o.getContext());return t(ht,{className:C(n(i,void 0,"z-1"),i&&"flex justify-center items-center"),children:s},o.id)})},a.id))})]})}function ae(e){return e.resourceType==="none"}function ge(e){return e.resourceType==="single"}function oe(e){return e.resourceType==="multiple"}function jt({items:e,isFetching:r}){const{openDialog:n,closeDialog:a}=ce(),{tanTable:o}=T();function i(l,u){return l.isDisabled?ae(l)?l.isDisabled():oe(l)?l.isDisabled(u):!1:!1}const s=o.getSelectedRowModel().rows.map(l=>l.original);return t(D,{children:e.map((l,u)=>{const m=l.icon,S=i(l,s)||r;return p(w,{"aria-label":l.label,type:"button",isDisabled:S,className:"animate-in fade-in slide-in-from-right-15 duration-300 transition-transform",onPress:b=>{const v={event:b,openDialog:n,closeDialog:a};ae(l)?l.onPress(v):oe(l)&&l.onPress({...v,data:s})},variant:l.variant??"neutral",children:[m&&t(m,{"aria-hidden":!0}),t("span",{children:l.label})]},`${l.label}-${u}`)})})}function qt({label:e,items:r,data:n}){const{openDialog:a,closeDialog:o}=ce();return r.length<4?t("div",{className:"flex items-center gap-2",children:r.map((i,s)=>{const l=i.icon,u=typeof i.label=="function"?i.label(n):i.label;return p(It,{children:[t(w,{"aria-label":typeof u=="string"?u:void 0,isDisabled:i.isDisabled?.(n)??!1,variant:"ghost",size:"icon",onPress:()=>{const m={openDialog:a,closeDialog:o};i.onPress({...m,data:n})},children:t(l,{className:"size-icon"})}),t(Nt,{children:u})]},`${s}-${typeof u=="string"?u:""}`)})}):t(P,{"aria-label":"Actions",label:e,size:"icon",children:r.map((i,s)=>{const l=i.icon,u=typeof i.label=="function"?i.label(n):i.label;return p(x,{id:typeof u=="string"?u:void 0,isDisabled:i.isDisabled?.(n)??!1,onAction:()=>{const m={openDialog:a,closeDialog:o};ge(i)&&i.onPress({...m,data:n})},children:[t(l,{className:"size-icon"}),u]},`${s}-${typeof u=="string"?u:""}`)})})}const Qn=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte","between"],ie={eq:"equal to",ne:"not equal to",cn:"contains",nc:"does not contain",sw:"starts with",ew:"ends with",in:"includes",nin:"does not include",gt:"greater than",gte:"greater than or equal to",lt:"less than",lte:"less than or equal to",between:"between"},Et={eq:"=",ne:"≠",cn:"contains",nc:"!contains",sw:"starts with",ew:"ends with",in:"in",nin:"not in",gt:">",gte:"≥",lt:"<",lte:"≤",between:"↔"};function k(e,r){const n=`${r}-${Date.now()}`,a=pe[e][0];switch(e){case"bool":return{id:n,type:e,property:r,operator:a,value:!0};case"string":return{id:n,type:e,property:r,operator:a,value:""};case"date":return{id:n,type:e,property:r,operator:a,value:a==="between"?[new Date().toISOString(),new Date().toISOString()]:new Date().toISOString()};case"id":return{id:n,type:e,property:r,operator:a,value:""};case"id-search":return{id:n,type:e,property:r,operator:a,value:[]};case"enum":return{id:n,type:e,property:r,operator:a,value:new Set};case"number":return{id:n,type:e,property:r,operator:a,value:0}}}const pe={bool:["eq"],enum:["in","nin"],id:["in","nin"],"id-search":["in","nin"],string:["eq","ne","cn","nc","sw","ew","in","nin"],date:["between","lt","gt"],number:["eq","ne","gt","gte","lt","lte"]};function Ht(e){switch(e.type){case"string":case"id":return e.value??"";case"number":return e.value?.toString()??"";case"bool":return e.value?"true":"false";case"date":if(Array.isArray(e.value)){const[r,n]=e.value;return`${_(r,{dateStyle:"short"})??""} – ${_(n,{dateStyle:"short"})??""}`}return e.value?_(e.value,{dateStyle:"short"})??"":"";case"enum":return e.value&&e.value.size>0?`${e.value.size} selected`:"";case"id-search":return e.value&&e.value.length>0?e.value.length===1?"1 item":`${e.value.length} items`:""}}function kt({filter:e,filterConfig:r,pathParameters:n,onChange:a}){if(e.type==="string"||e.type==="id")return t(Ve,{autoFocus:!0,value:e.value??"",onChange:a,"aria-label":"Filter value"});if(e.type==="number")return t(Ee,{autoFocus:!0,value:e.value,onChange:a,"aria-label":"Filter value"});if(e.type==="bool")return p(P,{autoFocus:!0,label:e.value?"True":"False",variant:"neutral","aria-label":"Filter value",children:[t(x,{onAction:()=>a(!0),children:"True"}),t(x,{onAction:()=>a(!1),children:"False"})]});if(e.type==="date"){if(e.operator==="between"){const[i,s]=Array.isArray(e.value)?e.value:[new Date().toISOString(),new Date().toISOString()],l=q(i,E()),u=q(s,E());return p("div",{className:"flex flex-col gap-icon",children:[t(H,{autoFocus:!0,hideTimeZone:!0,label:"From",value:l,onChange:m=>a([m?m.toAbsoluteString():i,s])}),t(H,{hideTimeZone:!0,label:"To",value:u,onChange:m=>a([i,m?m.toAbsoluteString():s])})]})}const o=e.value&&!Array.isArray(e.value)?q(e.value,E()):null;return t(H,{autoFocus:!0,hideTimeZone:!0,value:o,onChange:i=>a(i?i.toAbsoluteString():new Date().toISOString()),"aria-label":"Filter date"})}if(e.type==="enum"){const o=r[e.property];return o.type!=="enum"?null:t(qe,{autoFocus:!0,items:o.options,value:e.value??new Set,onChange:a,"aria-label":"Filter value"})}if(e.type==="id-search"){const o=r[e.property];if(o.type!=="id-search")return null;const i=n?{path:n,query:{}}:void 0;return t(ut,{autoFocus:!0,path:o.path,accessor:o.accessor,defaultParams:i,value:e.value??[],onChange:a,"aria-label":"Filter value"})}return null}function Vt({filter:e,filterConfig:r,pathParameters:n,resourceFormatter:a,onRemove:o,onUpdate:i,isOpen:s,onOpenChange:l}){const u=pe[e.type],m=Ht(e),S=Ke();return p(He,{isOpen:s,onOpenChange:l,children:[t("div",{className:"relative",children:p(w,{type:"button",variant:e.active===!1?"neutral":"primary_neutral",className:"animate-in slide-in-from-left-10 fade-in",children:[t("span",{className:"font-medium",children:a(e.property)}),S!=="customer-portal"&&t("span",{children:Et[e.operator]}),S!=="customer-portal"&&m&&t("span",{children:m}),e.active!==!1&&t("span",{className:"size-2 z-100 rounded-full bg-primary ms-1"})]})}),t(ke,{className:"p-icon min-w-48",children:p("div",{className:"flex flex-col gap-icon",children:[u.length>1&&t(P,{label:ie[e.operator],variant:"neutral","aria-label":"Change operator",children:u.map(b=>t(x,{onAction:()=>i({operator:b}),children:ie[b]},b))}),t(kt,{filter:e,filterConfig:r,pathParameters:n,onChange:b=>i({value:b})}),t(w,{type:"button",variant:"neutral",className:"self-end",onPress:o,"aria-label":`Remove ${a(e.property)} filter`,children:"Clear"})]})})]})}function Bt({className:e,previewFilters:r,...n}){const{filters:a,query:o,setFilters:i,filterConfig:s,pathParameters:l}=T(),u=K(),m=Object.keys(s).filter(d=>!a.some(g=>g.property===d)).sort(),[S,b]=A(null),v=Ce(!1);le(()=>{if(!v.current&&a.length===0){const d=[];r&&r.length>0&&d.push(...r.filter(g=>s[g]).map(g=>({...k(s[g].type,g),active:!1,isPreview:!0}))),d.length>0&&i(d)}v.current=!0},[]);const O=(d,g)=>{const f=k(d,g);i([...a,f]),b(f.id)},M=d=>{a.find(f=>f.id===d)?.isPreview?i(a.map(f=>f.id===d?{...k(s[f.property].type,f.property),active:!1,isPreview:!0}:f)):i(a.filter(f=>f.id!==d))},R=(d,g)=>{i(a.map(f=>{if(f.id!==d)return f;let y=g.value!==void 0?g.value:f.value;const N=g.operator??f.operator;if(f.type==="date"&&g.operator!==void 0)if(N==="between"&&!Array.isArray(y)){const z=typeof y=="string"?y:new Date().toISOString();y=[z,z]}else N!=="between"&&Array.isArray(y)&&(y=y[0]??new Date().toISOString());return{...f,...g,value:y,active:!0}}))};return p("section",{...n,className:C("flex flex-wrap gap-icon items-center",e),children:[a.map(d=>t(Vt,{filter:d,filterConfig:s,pathParameters:l,resourceFormatter:u,onRemove:()=>M(d.id),onUpdate:g=>R(d.id,g),isOpen:S===d.id,onOpenChange:g=>b(g?d.id:null)},d.id)),m.length>0&&t(P,{label:t(ct,{}),isDisabled:o.isPending,variant:"neutral","aria-label":"Add filter",children:m.map(d=>{const g=s[d].type,f=Kt[g];return p(x,{className:"!justify-between",onAction:()=>O(g,d),children:[u(d),t(f,{})]},d)})})]})}const Kt={"id-search":st,bool:W,date:lt,enum:it,id:ot,number:at,string:W};export{ie as C,Bt as D,Kn as DataTable,de as DataTableContext,Bn as DataTableProvider,Qn as F,kn as getColumnHelper,T as useDataTable,Vn as useDataTableState};
2
2
  //# sourceMappingURL=data-table.js.map