@cryptlex/web-components 6.6.16 → 6.6.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/alert.js +1 -1
- package/dist/components/alert.js.map +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/badge.js.map +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/card.js.map +1 -1
- package/dist/components/charts.js +1 -1
- package/dist/components/charts.js.map +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/code-block.js +1 -1
- package/dist/components/code-block.js.map +1 -1
- package/dist/components/data-table-filter.js +1 -1
- package/dist/components/data-table.js +1 -1
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/datefield.js +1 -1
- package/dist/components/datefield.js.map +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/duration-field.js +1 -1
- package/dist/components/duration-field.js.map +1 -1
- package/dist/components/form.d.ts +1 -1
- package/dist/components/form.js +1 -1
- package/dist/components/form.js.map +1 -1
- package/dist/components/id-search.js +1 -1
- package/dist/components/id-search.js.map +1 -1
- package/dist/components/list-box.js +1 -1
- package/dist/components/list-box.js.map +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/menu.js.map +1 -1
- package/dist/components/multi-select.js +1 -1
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/numberfield.js +1 -1
- package/dist/components/numberfield.js.map +1 -1
- package/dist/components/otpfield.js +1 -1
- package/dist/components/otpfield.js.map +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/searchfield.js +1 -1
- package/dist/components/searchfield.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/textfield.js +1 -1
- package/dist/components/textfield.js.map +1 -1
- package/dist/utilities/form-hook.js +1 -1
- package/dist/utilities/form-hook.js.map +1 -1
- package/dist/utilities/shiki.js +1 -1
- package/dist/utilities/shiki.js.map +1 -1
- package/lib/index.css +13 -14
- package/lib/tokens.css +4 -0
- package/package.json +1 -1
package/dist/components/alert.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as o,jsx as s}from"react/jsx-runtime";import{cva as a}from"class-variance-authority";import{classNames as l}from"../utilities/theme.js";import{IcInfo as m,IcCheck as u,IcError as d}from"./icons.js";import"clsx";import"react";const f=a("rounded-md transition-colors bg-elevation-
|
|
1
|
+
import{jsxs as o,jsx as s}from"react/jsx-runtime";import{cva as a}from"class-variance-authority";import{classNames as l}from"../utilities/theme.js";import{IcInfo as m,IcCheck as u,IcError as d}from"./icons.js";import"clsx";import"react";const f=a("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",default:"border-accent",muted:"text-muted border-muted"}},defaultVariants:{variant:"default"}}),p=e=>{switch(e){case"destructive":return d;case"success":return u;case"muted":case void 0:default:return m}};function N({children:e,className:c,variant:t,icon:n,...i}){const r=n??p(t);return o("div",{role:"alert",className:l(f({variant:t}),c),...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{N as Alert,f 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 } from './icons';\n\nexport const alertVariants = cva(\n `rounded-md transition-colors bg-elevation-
|
|
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 } 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 default: 'border-accent',\n muted: 'text-muted border-muted',\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 'muted':\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","IcInfo","Alert","children","className","icon","props","Icon","jsxs","classNames","jsx"],"mappings":"6OAMO,MAAMA,EAAgBC,EACzB,gHACA,CACI,SAAU,CACN,QAAS,CACL,YAAa,mBACb,QAAS,eACT,QAAS,gBACT,MAAO,yBAAA,CACX,EAEJ,gBAAiB,CACb,QAAS,SAAA,CACb,CAER,EAGMC,EAAkBC,GAAuD,CAC3E,OAAQA,EAAA,CACJ,IAAK,cACD,OAAOC,EACX,IAAK,UACD,OAAOC,EACX,IAAK,QACL,KAAK,OACL,QACI,OAAOC,CAAA,CAEnB,EACO,SAASC,EAAM,CAClB,SAAAC,EACA,UAAAC,EACA,QAAAN,EACA,KAAAO,EACA,GAAGC,CACP,EAGO,CAEH,MAAMC,EAAOF,GAAQR,EAAeC,CAAO,EAE3C,OACIU,EAAC,MAAA,CAAI,KAAK,QAAQ,UAAWC,EAAWd,EAAc,CAAE,QAAAG,CAAA,CAAS,EAAGM,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"}
|
package/dist/components/badge.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{classNames as o}from"../utilities/theme.js";import"clsx";function
|
|
1
|
+
import{jsxs as i,jsx as e}from"react/jsx-runtime";import{classNames as o}from"../utilities/theme.js";import"clsx";function d({className:n,children:s,...r}){return i("span",{className:o("leading-tight body-sm px-2 relative rounded-l-md inline-flex items-center justify-center select-none border h-input focus:outline-hidden focus:ring-1 focus:ring-ring",n),...r,children:[e("span",{className:"absolute rounded-full border size-3 left-2"}),e("span",{children:s})]})}export{d as Badge};
|
|
2
2
|
//# sourceMappingURL=badge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","sources":["../../lib/components/badge.tsx"],"sourcesContent":["import { classNames } from '../utilities/theme';\n\nexport function Badge({ className, children, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n className={classNames(\n 'leading-tight body-sm px-2 rounded-
|
|
1
|
+
{"version":3,"file":"badge.js","sources":["../../lib/components/badge.tsx"],"sourcesContent":["import { classNames } from '../utilities/theme';\n\nexport function Badge({ className, children, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n className={classNames(\n 'leading-tight body-sm px-2 relative rounded-l-md inline-flex items-center justify-center select-none border h-input focus:outline-hidden focus:ring-1 focus:ring-ring',\n className\n )}\n {...props}\n >\n <span className=\"absolute rounded-full border size-3 left-2\"></span>\n {/* Contents */}\n <span>{children}</span>\n </span>\n );\n}\n"],"names":["Badge","className","children","props","jsxs","classNames","jsx"],"mappings":"kHAEO,SAASA,EAAM,CAAE,UAAAC,EAAW,SAAAC,EAAU,GAAGC,GAAuC,CACnF,OACIC,EAAC,OAAA,CACG,UAAWC,EACP,wKACAJ,CAAA,EAEH,GAAGE,EAEJ,SAAA,CAAAG,EAAC,OAAA,CAAK,UAAU,4CAAA,CAA6C,EAE7DA,EAAC,QAAM,SAAAJ,CAAA,CAAS,CAAA,CAAA,CAAA,CAG5B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsxs as o,jsx as e}from"react/jsx-runtime";import{today as b,getLocalTimeZone as v}from"@internationalized/date";import{CalendarGridHeader as y,useLocale as S,Heading as G,CalendarGrid as H,CalendarHeaderCell as N,CalendarGridBody as R,RangeCalendarStateContext as $,CalendarCell as w,composeRenderProps as l,Calendar as B,RangeCalendar as z}from"react-aria-components";import{use as E}from"react";import{Button as c,buttonVariants as I}from"./button.js";import{classNames as n}from"../utilities/theme.js";import{FormFieldError as m}from"./form.js";import{IcRight as s,IcLeft as u}from"./icons.js";import"class-variance-authority";import"./loader.js";import"clsx";function f(a){let{direction:t}=S();return o("header",{className:"flex w-full items-center gap-1 px-1 pb-icon",...a,children:[e(c,{slot:"previous",size:"icon",children:t==="rtl"?e(s,{"aria-hidden":!0}):e(u,{"aria-hidden":!0})}),e(G,{className:"grow text-center body font-medium"}),e(c,{slot:"next",size:"icon",children:t==="rtl"?e(u,{"aria-hidden":!0}):e(s,{"aria-hidden":!0})})]})}function g({className:a,...t}){return e(H,{className:n(" border-separate border-spacing-x-0 border-spacing-y-1 ",a),...t})}const C=y;function h({className:a,...t}){return e(N,{className:n("w-9 body-sm font-normal text-muted-foreground",a),...t})}function x({className:a,...t}){return e(R,{className:n("[&>tr>td]:p-0",a),...t})}function p({className:a,...t}){const i=!!E($);return e(w,{className:l(a,(d,r)=>n(I({variant:"ghost",size:"icon"}),r.isDisabled&&"text-muted-foreground opacity-50",r.isSelected&&"bg-primary text-primary-foreground data-[focused]:bg-primary data-[focused]:text-primary-foreground",r.isHovered&&r.isSelected&&(r.isSelectionStart||r.isSelectionEnd||!i)&&"data-[hovered]:bg-primary data-[hovered]:text-primary-foreground",r.isSelected&&i&&!r.isSelectionStart&&!r.isSelectionEnd&&"rounded-none bg-accent text-accent-foreground",r.isOutsideMonth&&"text-muted-foreground opacity-50 data-[selected]:bg-accent/50 data-[selected]:text-muted-foreground data-[selected]:opacity-30",r.date.compare(b(v()))===0&&!r.isSelected&&"bg-accent text-accent-foreground",r.isUnavailable&&"cursor-default text-destructive ",r.isInvalid&&"bg-destructive text-destructive-foreground data-[focused]:bg-destructive data-[hovered]:bg-destructive data-[focused]:text-destructive-foreground data-[hovered]:text-destructive-foreground",d)),...t})}function
|
|
1
|
+
"use client";import{jsxs as o,jsx as e}from"react/jsx-runtime";import{today as b,getLocalTimeZone as v}from"@internationalized/date";import{CalendarGridHeader as y,useLocale as S,Heading as G,CalendarGrid as H,CalendarHeaderCell as N,CalendarGridBody as R,RangeCalendarStateContext as $,CalendarCell as w,composeRenderProps as l,Calendar as B,RangeCalendar as z}from"react-aria-components";import{use as E}from"react";import{Button as c,buttonVariants as I}from"./button.js";import{classNames as n}from"../utilities/theme.js";import{FormFieldError as m}from"./form.js";import{IcRight as s,IcLeft as u}from"./icons.js";import"class-variance-authority";import"./loader.js";import"clsx";import"./card.js";function f(a){let{direction:t}=S();return o("header",{className:"flex w-full items-center gap-1 px-1 pb-icon",...a,children:[e(c,{slot:"previous",size:"icon",children:t==="rtl"?e(s,{"aria-hidden":!0}):e(u,{"aria-hidden":!0})}),e(G,{className:"grow text-center body font-medium"}),e(c,{slot:"next",size:"icon",children:t==="rtl"?e(u,{"aria-hidden":!0}):e(s,{"aria-hidden":!0})})]})}function g({className:a,...t}){return e(H,{className:n(" border-separate border-spacing-x-0 border-spacing-y-1 ",a),...t})}const C=y;function h({className:a,...t}){return e(N,{className:n("w-9 body-sm font-normal text-muted-foreground",a),...t})}function x({className:a,...t}){return e(R,{className:n("[&>tr>td]:p-0",a),...t})}function p({className:a,...t}){const i=!!E($);return e(w,{className:l(a,(d,r)=>n(I({variant:"ghost",size:"icon"}),r.isDisabled&&"text-muted-foreground opacity-50",r.isSelected&&"bg-primary text-primary-foreground data-[focused]:bg-primary data-[focused]:text-primary-foreground",r.isHovered&&r.isSelected&&(r.isSelectionStart||r.isSelectionEnd||!i)&&"data-[hovered]:bg-primary data-[hovered]:text-primary-foreground",r.isSelected&&i&&!r.isSelectionStart&&!r.isSelectionEnd&&"rounded-none bg-accent text-accent-foreground",r.isOutsideMonth&&"text-muted-foreground opacity-50 data-[selected]:bg-accent/50 data-[selected]:text-muted-foreground data-[selected]:opacity-30",r.date.compare(b(v()))===0&&!r.isSelected&&"bg-accent text-accent-foreground",r.isUnavailable&&"cursor-default text-destructive ",r.isInvalid&&"bg-destructive text-destructive-foreground data-[focused]:bg-destructive data-[hovered]:bg-destructive data-[focused]:text-destructive-foreground data-[hovered]:text-destructive-foreground",d)),...t})}function J({errorMessage:a,className:t,...i}){return o(B,{className:l(t,d=>n("w-fit",d)),...i,children:[e(f,{}),o(g,{children:[e(C,{children:d=>e(h,{children:d})}),e(x,{children:d=>e(p,{date:d})})]}),a&&e(m,{children:a})]})}function K({errorMessage:a,className:t,...i}){return o(z,{className:l(t,d=>n("w-fit",d)),...i,children:[e(f,{}),o(g,{children:[e(C,{children:d=>e(h,{children:d})}),e(x,{children:d=>e(p,{date:d})})]}),a&&e(m,{slot:"errorMessage",children:a})]})}export{J as Calendar,p as CalendarCell,g as CalendarGrid,x as CalendarGridBody,C as CalendarGridHeader,h as CalendarHeaderCell,f as CalendarHeading,K as RangeCalendar};
|
|
2
2
|
//# sourceMappingURL=calendar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sources":["../../lib/components/calendar.tsx"],"sourcesContent":["'use client';\nimport { getLocalTimeZone, today } from '@internationalized/date';\nimport {\n Calendar as AriaCalendar,\n CalendarCell as AriaCalendarCell,\n CalendarCellProps as AriaCalendarCellProps,\n CalendarGrid as AriaCalendarGrid,\n CalendarGridBody as AriaCalendarGridBody,\n CalendarGridBodyProps as AriaCalendarGridBodyProps,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarGridProps as AriaCalendarGridProps,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarHeaderCellProps as AriaCalendarHeaderCellProps,\n CalendarProps as AriaCalendarProps,\n DateValue as AriaDateValue,\n Heading as AriaHeading,\n RangeCalendar as AriaRangeCalendar,\n RangeCalendarProps as AriaRangeCalendarProps,\n RangeCalendarStateContext as AriaRangeCalendarStateContext,\n composeRenderProps,\n useLocale,\n} from 'react-aria-components';\n\nimport { use } from 'react';\nimport { Button, buttonVariants } from '../components/button';\nimport { classNames } from '../utilities/theme';\nimport { FormFieldError } from './form';\nimport { IcLeft, IcRight } from './icons';\n\n/**\n * Calendar header with navigation buttons and month/year display.\n */\nexport function CalendarHeading(props: React.HTMLAttributes<HTMLElement>) {\n let { direction } = useLocale();\n\n return (\n <header className=\"flex w-full items-center gap-1 px-1 pb-icon\" {...props}>\n <Button slot=\"previous\" size=\"icon\">\n {direction === 'rtl' ? <IcRight aria-hidden /> : <IcLeft aria-hidden />}\n </Button>\n <AriaHeading className=\"grow text-center body font-medium\" />\n <Button slot=\"next\" size=\"icon\">\n {direction === 'rtl' ? <IcLeft aria-hidden /> : <IcRight aria-hidden />}\n </Button>\n </header>\n );\n}\n\n/**\n * Grid container for calendar cells with proper spacing.\n */\nexport function CalendarGrid({ className, ...props }: AriaCalendarGridProps) {\n return (\n <AriaCalendarGrid\n className={classNames(' border-separate border-spacing-x-0 border-spacing-y-1 ', className)}\n {...props}\n />\n );\n}\n\nexport const CalendarGridHeader = AriaCalendarGridHeader;\n\n/**\n * Header cell displaying day of week abbreviation.\n */\nexport function CalendarHeaderCell({ className, ...props }: AriaCalendarHeaderCellProps) {\n return (\n <AriaCalendarHeaderCell\n className={classNames('w-9 body-sm font-normal text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\n/**\n * Body container for calendar date cells.\n */\nexport function CalendarGridBody({ className, ...props }: AriaCalendarGridBodyProps) {\n return <AriaCalendarGridBody className={classNames('[&>tr>td]:p-0', className)} {...props} />;\n}\n\n/**\n * Individual calendar date cell with selection, hover, and availability states.\n * Automatically adapts styling for range selection contexts.\n */\nexport function CalendarCell({ className, ...props }: AriaCalendarCellProps) {\n const isRange = Boolean(use(AriaRangeCalendarStateContext));\n return (\n <AriaCalendarCell\n className={composeRenderProps(className, (className, renderProps) =>\n classNames(\n buttonVariants({ variant: 'ghost', size: 'icon' }),\n /* Disabled */\n renderProps.isDisabled && 'text-muted-foreground opacity-50',\n /* Selected */\n renderProps.isSelected &&\n 'bg-primary text-primary-foreground data-[focused]:bg-primary data-[focused]:text-primary-foreground',\n /* Hover */\n renderProps.isHovered &&\n renderProps.isSelected &&\n (renderProps.isSelectionStart || renderProps.isSelectionEnd || !isRange) &&\n 'data-[hovered]:bg-primary data-[hovered]:text-primary-foreground',\n /* Selection Start/End */\n renderProps.isSelected &&\n isRange &&\n !renderProps.isSelectionStart &&\n !renderProps.isSelectionEnd &&\n 'rounded-none bg-accent text-accent-foreground',\n /* Outside Month */\n renderProps.isOutsideMonth &&\n 'text-muted-foreground opacity-50 data-[selected]:bg-accent/50 data-[selected]:text-muted-foreground data-[selected]:opacity-30',\n /* Current Date */\n renderProps.date.compare(today(getLocalTimeZone())) === 0 &&\n !renderProps.isSelected &&\n 'bg-accent text-accent-foreground',\n /* Unavailable Date */\n renderProps.isUnavailable && 'cursor-default text-destructive ',\n renderProps.isInvalid &&\n 'bg-destructive text-destructive-foreground data-[focused]:bg-destructive data-[hovered]:bg-destructive data-[focused]:text-destructive-foreground data-[hovered]:text-destructive-foreground',\n className\n )\n )}\n {...props}\n />\n );\n}\n\ninterface CalendarProps<T extends AriaDateValue> extends AriaCalendarProps<T> {\n /** Error message to display below the calendar */\n errorMessage?: string;\n}\n\n/**\n * Calendar component for single date selection.\n *\n * @example Basic usage\n * ```tsx\n * <Calendar defaultValue={today(getLocalTimeZone())} />\n * ```\n */\nexport function Calendar<T extends AriaDateValue>({ errorMessage, className, ...props }: CalendarProps<T>) {\n return (\n <AriaCalendar className={composeRenderProps(className, className => classNames('w-fit', className))} {...props}>\n <CalendarHeading />\n <CalendarGrid>\n <CalendarGridHeader>{day => <CalendarHeaderCell>{day}</CalendarHeaderCell>}</CalendarGridHeader>\n <CalendarGridBody>{date => <CalendarCell date={date} />}</CalendarGridBody>\n </CalendarGrid>\n {errorMessage && <FormFieldError>{errorMessage}</FormFieldError>}\n </AriaCalendar>\n );\n}\n\ninterface RangeCalendarProps<T extends AriaDateValue> extends AriaRangeCalendarProps<T> {\n /** Error message to display below the calendar */\n errorMessage?: string;\n}\n\n/**\n * Calendar component for date range selection.\n *\n * @example Basic range selection\n * ```tsx\n * <RangeCalendar\n * defaultValue={{\n * start: today(getLocalTimeZone()),\n * end: today(getLocalTimeZone()).add({ days: 7 })\n * }}\n * />\n * ```\n */\nexport function RangeCalendar<T extends AriaDateValue>({ errorMessage, className, ...props }: RangeCalendarProps<T>) {\n return (\n <AriaRangeCalendar\n className={composeRenderProps(className, className => classNames('w-fit', className))}\n {...props}\n >\n <CalendarHeading />\n <CalendarGrid>\n <CalendarGridHeader>{day => <CalendarHeaderCell>{day}</CalendarHeaderCell>}</CalendarGridHeader>\n <CalendarGridBody>{date => <CalendarCell date={date} />}</CalendarGridBody>\n </CalendarGrid>\n {errorMessage && <FormFieldError slot=\"errorMessage\">{errorMessage}</FormFieldError>}\n </AriaRangeCalendar>\n );\n}\n"],"names":["CalendarHeading","props","direction","useLocale","jsxs","jsx","Button","IcRight","IcLeft","AriaHeading","CalendarGrid","className","AriaCalendarGrid","classNames","CalendarGridHeader","AriaCalendarGridHeader","CalendarHeaderCell","AriaCalendarHeaderCell","CalendarGridBody","AriaCalendarGridBody","CalendarCell","isRange","use","AriaRangeCalendarStateContext","AriaCalendarCell","composeRenderProps","renderProps","buttonVariants","today","getLocalTimeZone","Calendar","errorMessage","AriaCalendar","day","date","FormFieldError","RangeCalendar","AriaRangeCalendar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendar.js","sources":["../../lib/components/calendar.tsx"],"sourcesContent":["'use client';\nimport { getLocalTimeZone, today } from '@internationalized/date';\nimport {\n Calendar as AriaCalendar,\n CalendarCell as AriaCalendarCell,\n CalendarCellProps as AriaCalendarCellProps,\n CalendarGrid as AriaCalendarGrid,\n CalendarGridBody as AriaCalendarGridBody,\n CalendarGridBodyProps as AriaCalendarGridBodyProps,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarGridProps as AriaCalendarGridProps,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarHeaderCellProps as AriaCalendarHeaderCellProps,\n CalendarProps as AriaCalendarProps,\n DateValue as AriaDateValue,\n Heading as AriaHeading,\n RangeCalendar as AriaRangeCalendar,\n RangeCalendarProps as AriaRangeCalendarProps,\n RangeCalendarStateContext as AriaRangeCalendarStateContext,\n composeRenderProps,\n useLocale,\n} from 'react-aria-components';\n\nimport { use } from 'react';\nimport { Button, buttonVariants } from '../components/button';\nimport { classNames } from '../utilities/theme';\nimport { FormFieldError } from './form';\nimport { IcLeft, IcRight } from './icons';\n\n/**\n * Calendar header with navigation buttons and month/year display.\n */\nexport function CalendarHeading(props: React.HTMLAttributes<HTMLElement>) {\n let { direction } = useLocale();\n\n return (\n <header className=\"flex w-full items-center gap-1 px-1 pb-icon\" {...props}>\n <Button slot=\"previous\" size=\"icon\">\n {direction === 'rtl' ? <IcRight aria-hidden /> : <IcLeft aria-hidden />}\n </Button>\n <AriaHeading className=\"grow text-center body font-medium\" />\n <Button slot=\"next\" size=\"icon\">\n {direction === 'rtl' ? <IcLeft aria-hidden /> : <IcRight aria-hidden />}\n </Button>\n </header>\n );\n}\n\n/**\n * Grid container for calendar cells with proper spacing.\n */\nexport function CalendarGrid({ className, ...props }: AriaCalendarGridProps) {\n return (\n <AriaCalendarGrid\n className={classNames(' border-separate border-spacing-x-0 border-spacing-y-1 ', className)}\n {...props}\n />\n );\n}\n\nexport const CalendarGridHeader = AriaCalendarGridHeader;\n\n/**\n * Header cell displaying day of week abbreviation.\n */\nexport function CalendarHeaderCell({ className, ...props }: AriaCalendarHeaderCellProps) {\n return (\n <AriaCalendarHeaderCell\n className={classNames('w-9 body-sm font-normal text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\n/**\n * Body container for calendar date cells.\n */\nexport function CalendarGridBody({ className, ...props }: AriaCalendarGridBodyProps) {\n return <AriaCalendarGridBody className={classNames('[&>tr>td]:p-0', className)} {...props} />;\n}\n\n/**\n * Individual calendar date cell with selection, hover, and availability states.\n * Automatically adapts styling for range selection contexts.\n */\nexport function CalendarCell({ className, ...props }: AriaCalendarCellProps) {\n const isRange = Boolean(use(AriaRangeCalendarStateContext));\n return (\n <AriaCalendarCell\n className={composeRenderProps(className, (className, renderProps) =>\n classNames(\n buttonVariants({ variant: 'ghost', size: 'icon' }),\n /* Disabled */\n renderProps.isDisabled && 'text-muted-foreground opacity-50',\n /* Selected */\n renderProps.isSelected &&\n 'bg-primary text-primary-foreground data-[focused]:bg-primary data-[focused]:text-primary-foreground',\n /* Hover */\n renderProps.isHovered &&\n renderProps.isSelected &&\n (renderProps.isSelectionStart || renderProps.isSelectionEnd || !isRange) &&\n 'data-[hovered]:bg-primary data-[hovered]:text-primary-foreground',\n /* Selection Start/End */\n renderProps.isSelected &&\n isRange &&\n !renderProps.isSelectionStart &&\n !renderProps.isSelectionEnd &&\n 'rounded-none bg-accent text-accent-foreground',\n /* Outside Month */\n renderProps.isOutsideMonth &&\n 'text-muted-foreground opacity-50 data-[selected]:bg-accent/50 data-[selected]:text-muted-foreground data-[selected]:opacity-30',\n /* Current Date */\n renderProps.date.compare(today(getLocalTimeZone())) === 0 &&\n !renderProps.isSelected &&\n 'bg-accent text-accent-foreground',\n /* Unavailable Date */\n renderProps.isUnavailable && 'cursor-default text-destructive ',\n renderProps.isInvalid &&\n 'bg-destructive text-destructive-foreground data-[focused]:bg-destructive data-[hovered]:bg-destructive data-[focused]:text-destructive-foreground data-[hovered]:text-destructive-foreground',\n className\n )\n )}\n {...props}\n />\n );\n}\n\ninterface CalendarProps<T extends AriaDateValue> extends AriaCalendarProps<T> {\n /** Error message to display below the calendar */\n errorMessage?: string;\n}\n\n/**\n * Calendar component for single date selection.\n *\n * @example Basic usage\n * ```tsx\n * <Calendar defaultValue={today(getLocalTimeZone())} />\n * ```\n */\nexport function Calendar<T extends AriaDateValue>({ errorMessage, className, ...props }: CalendarProps<T>) {\n return (\n <AriaCalendar className={composeRenderProps(className, className => classNames('w-fit', className))} {...props}>\n <CalendarHeading />\n <CalendarGrid>\n <CalendarGridHeader>{day => <CalendarHeaderCell>{day}</CalendarHeaderCell>}</CalendarGridHeader>\n <CalendarGridBody>{date => <CalendarCell date={date} />}</CalendarGridBody>\n </CalendarGrid>\n {errorMessage && <FormFieldError>{errorMessage}</FormFieldError>}\n </AriaCalendar>\n );\n}\n\ninterface RangeCalendarProps<T extends AriaDateValue> extends AriaRangeCalendarProps<T> {\n /** Error message to display below the calendar */\n errorMessage?: string;\n}\n\n/**\n * Calendar component for date range selection.\n *\n * @example Basic range selection\n * ```tsx\n * <RangeCalendar\n * defaultValue={{\n * start: today(getLocalTimeZone()),\n * end: today(getLocalTimeZone()).add({ days: 7 })\n * }}\n * />\n * ```\n */\nexport function RangeCalendar<T extends AriaDateValue>({ errorMessage, className, ...props }: RangeCalendarProps<T>) {\n return (\n <AriaRangeCalendar\n className={composeRenderProps(className, className => classNames('w-fit', className))}\n {...props}\n >\n <CalendarHeading />\n <CalendarGrid>\n <CalendarGridHeader>{day => <CalendarHeaderCell>{day}</CalendarHeaderCell>}</CalendarGridHeader>\n <CalendarGridBody>{date => <CalendarCell date={date} />}</CalendarGridBody>\n </CalendarGrid>\n {errorMessage && <FormFieldError slot=\"errorMessage\">{errorMessage}</FormFieldError>}\n </AriaRangeCalendar>\n );\n}\n"],"names":["CalendarHeading","props","direction","useLocale","jsxs","jsx","Button","IcRight","IcLeft","AriaHeading","CalendarGrid","className","AriaCalendarGrid","classNames","CalendarGridHeader","AriaCalendarGridHeader","CalendarHeaderCell","AriaCalendarHeaderCell","CalendarGridBody","AriaCalendarGridBody","CalendarCell","isRange","use","AriaRangeCalendarStateContext","AriaCalendarCell","composeRenderProps","renderProps","buttonVariants","today","getLocalTimeZone","Calendar","errorMessage","AriaCalendar","day","date","FormFieldError","RangeCalendar","AriaRangeCalendar"],"mappings":"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"}
|
package/dist/components/card.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as n}from"react/jsx-runtime";import{classNames as o}from"../utilities/theme.js";import"clsx";function d({className:e,...r}){return n("div",{className:o("flex flex-col p-icon border border-border rounded-md bg-elevation-
|
|
1
|
+
import{jsx as n}from"react/jsx-runtime";import{classNames as o}from"../utilities/theme.js";import"clsx";function d({className:e,...r}){return n("div",{className:o("flex flex-col p-icon border border-border rounded-md bg-elevation-1 text-foreground",e),...r})}function s({className:e,...r}){return n("div",{className:o("flex flex-col gap-y-1 pb-icon shrink-0",e),...r})}function c({className:e,...r}){return n("h3",{className:o("heading-3 leading-none",e),...r})}function l({className:e,...r}){return n("p",{className:o("body-sm text-muted",e),...r})}function u({className:e,...r}){return n("div",{className:o("grow body",e),...r})}function f({className:e,...r}){return n("div",{className:o("flex items-center w-full pt-icon gap-2 justify-end",e),...r})}export{d as Card,u as CardContent,l as CardDescription,f as CardFooter,s as CardHeader,c as CardTitle};
|
|
2
2
|
//# sourceMappingURL=card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","sources":["../../lib/components/card.tsx"],"sourcesContent":["import type * as React from 'react';\nimport { classNames } from '../utilities/theme';\n\nexport function Card({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n className={classNames(\n 'flex flex-col p-icon border border-border rounded-md bg-elevation-
|
|
1
|
+
{"version":3,"file":"card.js","sources":["../../lib/components/card.tsx"],"sourcesContent":["import type * as React from 'react';\nimport { classNames } from '../utilities/theme';\n\nexport function Card({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n className={classNames(\n 'flex flex-col p-icon border border-border rounded-md bg-elevation-1 text-foreground',\n className\n )}\n {...props}\n />\n );\n}\n\nexport function CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div className={classNames('flex flex-col gap-y-1 pb-icon shrink-0', className)} {...props} />;\n}\n\nexport function CardTitle({ className, ...props }: React.ComponentProps<'h3'>) {\n return <h3 className={classNames('heading-3 leading-none', className)} {...props} />;\n}\n\nexport function CardDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return <p className={classNames('body-sm text-muted', className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div className={classNames('grow body', className)} {...props} />;\n}\n\nexport function CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div className={classNames('flex items-center w-full pt-icon gap-2 justify-end', className)} {...props} />;\n}\n"],"names":["Card","className","props","jsx","classNames","CardHeader","CardTitle","CardDescription","CardContent","CardFooter"],"mappings":"wGAGO,SAASA,EAAK,CAAE,UAAAC,EAAW,GAAGC,GAAsC,CACvE,OACIC,EAAC,MAAA,CACG,UAAWC,EACP,sFACAH,CAAA,EAEH,GAAGC,CAAA,CAAA,CAGhB,CAEO,SAASG,EAAW,CAAE,UAAAJ,EAAW,GAAGC,GAAsC,CAC7E,OAAOC,EAAC,OAAI,UAAWC,EAAW,yCAA0CH,CAAS,EAAI,GAAGC,EAAO,CACvG,CAEO,SAASI,EAAU,CAAE,UAAAL,EAAW,GAAGC,GAAqC,CAC3E,OAAOC,EAAC,MAAG,UAAWC,EAAW,yBAA0BH,CAAS,EAAI,GAAGC,EAAO,CACtF,CAEO,SAASK,EAAgB,CAAE,UAAAN,EAAW,GAAGC,GAAoC,CAChF,OAAOC,EAAC,KAAE,UAAWC,EAAW,qBAAsBH,CAAS,EAAI,GAAGC,EAAO,CACjF,CAEO,SAASM,EAAY,CAAE,UAAAP,EAAW,GAAGC,GAAsC,CAC9E,OAAOC,EAAC,OAAI,UAAWC,EAAW,YAAaH,CAAS,EAAI,GAAGC,EAAO,CAC1E,CAEO,SAASO,EAAW,CAAE,UAAAR,EAAW,GAAGC,GAAsC,CAC7E,OAAOC,EAAC,OAAI,UAAWC,EAAW,qDAAsDH,CAAS,EAAI,GAAGC,EAAO,CACnH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsx as r,jsxs as l}from"react/jsx-runtime";import{XAxis as
|
|
1
|
+
"use client";import{jsx as r,jsxs as l}from"react/jsx-runtime";import{XAxis as v,YAxis as b,CartesianGrid as k,Legend as C,Tooltip as A,ResponsiveContainer as c,LineChart as S,Line as $,BarChart as L,Bar as K,PieChart as N,Pie as B}from"recharts";import{formatNumber as d}from"../utilities/numbers.js";function P(t){return d(t,{notation:"compact",maximumFractionDigits:2})}function h({...t}){return r(v,{stroke:"var(--color-neutral-6)",...t})}function f({...t}){return r(b,{stroke:"var(--color-neutral-6)",className:"p-5",...t,tickFormatter:P})}function p({...t}){return r(k,{stroke:"var(--color-neutral-4)",...t})}function s({...t}){return r(C,{iconSize:12,formatter:e=>r("span",{className:"text-foreground",children:e}),wrapperStyle:{background:"var(--color-elevation-1)"},...t})}function m({...t}){return r(A,{formatter:e=>typeof e=="number"?d(e):e,contentStyle:{backgroundColor:"var(--color-elevation-1)",border:"1px solid var(--color-border)"},labelStyle:{color:"var(--color-muted-foreground)",fontWeight:"600",marginBottom:"0.5rem"},itemStyle:{color:"var(--color-foreground)",padding:"0"},...t})}function Y({className:t,data:e,config:o,...n}){return r(c,{...n,children:l(S,{className:"body-sm",data:e,children:[r(p,{strokeDasharray:"3 3"}),r(h,{dataKey:o.xAxis.toString()}),r(f,{}),r(m,{}),r(s,{iconType:"plainline"}),o.lines.map((i,a)=>r($,{strokeWidth:2,type:"monotone",dataKey:i.toString(),stroke:`var(--color-chart-${a%5+1})`}))]})})}function G({className:t,data:e,config:o,...n}){return r(c,{className:t,...n,children:l(L,{className:"body-sm",data:e,children:[r(p,{strokeDasharray:"3 3"}),r(h,{dataKey:o.xAxis.toString()}),r(f,{}),r(m,{}),r(s,{}),o.bars.map((i,a)=>r(K,{dataKey:i.toString(),fill:`var(--color-chart-${a%5+1})`,stroke:`var(--color-chart-${a%5+1})`}))]})})}function T(t){const{name:e,percent:o}=t;return`${e}: ${((typeof o=="number"?o:0)*100).toFixed(0)}%`}function W({data:t,variant:e="full",showLabels:o=!0,...n}){const i=e==="semi"?180:0,a=e==="semi"?0:360,y=e==="semi"?"100%":"50%";return r(c,{...n,children:l(N,{children:[r(m,{}),r(s,{}),r(B,{data:Object.entries(t).map(([g,x],u)=>({fill:`var(--color-chart-${u%5+1})`,stroke:`var(--color-chart-${u%5+1})`,name:g,value:x})),dataKey:"value",nameKey:"name",cx:"50%",cy:y,startAngle:i,endAngle:a,label:o?T:void 0,labelLine:{stroke:"var(--color-neutral-6)"},isAnimationActive:!0})]})})}export{G as Barchart,p as ChartCartesianGrid,s as ChartLegend,m as ChartTooltip,h as ChartXAxis,f as ChartYAxis,Y as Linechart,W as PieChart,P as formateYAxisTick};
|
|
2
2
|
//# sourceMappingURL=charts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.js","sources":["../../lib/components/charts.tsx"],"sourcesContent":["'use client';\nimport {\n Bar,\n BarChart,\n Line,\n LineChart,\n Pie,\n CartesianGrid as RechartsCartesianGrid,\n Legend as RechartsLegend,\n PieChart as RechartsPieChart,\n Tooltip as RechartsTooltip,\n XAxis as RechartsXAxis,\n YAxis as RechartsYAxis,\n ResponsiveContainer,\n type PieLabelRenderProps,\n} from 'recharts';\nimport { formatNumber } from '../utilities/numbers';\n\nexport function formateYAxisTick(value: number) {\n return formatNumber(value, {\n notation: 'compact',\n maximumFractionDigits: 2,\n });\n}\nexport function ChartXAxis({ ...props }: React.ComponentProps<typeof RechartsXAxis>) {\n return <RechartsXAxis stroke=\"var(--color-neutral-6)\" {...props} />;\n}\n\nexport function ChartYAxis({ ...props }: React.ComponentProps<typeof RechartsYAxis>) {\n return (\n <RechartsYAxis stroke=\"var(--color-neutral-6)\" className=\"p-5\" {...props} tickFormatter={formateYAxisTick} />\n );\n}\n\nexport function ChartCartesianGrid({ ...props }: React.ComponentProps<typeof RechartsCartesianGrid>) {\n return <RechartsCartesianGrid stroke=\"var(--color-neutral-4)\" {...props} />;\n}\n\nexport function ChartLegend({ ...props }: React.ComponentProps<typeof RechartsLegend>) {\n return (\n <RechartsLegend\n iconSize={12}\n formatter={v => <span className=\"text-foreground\">{v}</span>}\n wrapperStyle={{ background: 'var(--color-elevation-1)' }}\n {...props}\n />\n );\n}\n\nexport function ChartTooltip({ ...props }: React.ComponentProps<typeof RechartsTooltip>) {\n return (\n <RechartsTooltip\n formatter={v => (typeof v === 'number' ? formatNumber(v) : v)}\n contentStyle={{\n backgroundColor: 'var(--color-elevation-
|
|
1
|
+
{"version":3,"file":"charts.js","sources":["../../lib/components/charts.tsx"],"sourcesContent":["'use client';\nimport {\n Bar,\n BarChart,\n Line,\n LineChart,\n Pie,\n CartesianGrid as RechartsCartesianGrid,\n Legend as RechartsLegend,\n PieChart as RechartsPieChart,\n Tooltip as RechartsTooltip,\n XAxis as RechartsXAxis,\n YAxis as RechartsYAxis,\n ResponsiveContainer,\n type PieLabelRenderProps,\n} from 'recharts';\nimport { formatNumber } from '../utilities/numbers';\n\nexport function formateYAxisTick(value: number) {\n return formatNumber(value, {\n notation: 'compact',\n maximumFractionDigits: 2,\n });\n}\nexport function ChartXAxis({ ...props }: React.ComponentProps<typeof RechartsXAxis>) {\n return <RechartsXAxis stroke=\"var(--color-neutral-6)\" {...props} />;\n}\n\nexport function ChartYAxis({ ...props }: React.ComponentProps<typeof RechartsYAxis>) {\n return (\n <RechartsYAxis stroke=\"var(--color-neutral-6)\" className=\"p-5\" {...props} tickFormatter={formateYAxisTick} />\n );\n}\n\nexport function ChartCartesianGrid({ ...props }: React.ComponentProps<typeof RechartsCartesianGrid>) {\n return <RechartsCartesianGrid stroke=\"var(--color-neutral-4)\" {...props} />;\n}\n\nexport function ChartLegend({ ...props }: React.ComponentProps<typeof RechartsLegend>) {\n return (\n <RechartsLegend\n iconSize={12}\n formatter={v => <span className=\"text-foreground\">{v}</span>}\n wrapperStyle={{ background: 'var(--color-elevation-1)' }}\n {...props}\n />\n );\n}\n\nexport function ChartTooltip({ ...props }: React.ComponentProps<typeof RechartsTooltip>) {\n return (\n <RechartsTooltip\n formatter={v => (typeof v === 'number' ? formatNumber(v) : v)}\n contentStyle={{\n backgroundColor: 'var(--color-elevation-1)',\n border: '1px solid var(--color-border)',\n }}\n labelStyle={{\n color: 'var(--color-muted-foreground)',\n fontWeight: '600',\n marginBottom: '0.5rem',\n }}\n itemStyle={{\n color: 'var(--color-foreground)',\n padding: '0',\n }}\n {...props}\n />\n );\n}\nexport function Linechart<T extends object>({\n className,\n data,\n config,\n ...props\n}: Omit<React.ComponentProps<typeof ResponsiveContainer>, 'children'> & {\n data: T[];\n config: {\n xAxis: keyof T;\n lines: (keyof T)[];\n };\n}) {\n return (\n <ResponsiveContainer {...props}>\n <LineChart className=\"body-sm\" data={data}>\n <ChartCartesianGrid strokeDasharray=\"3 3\" />\n <ChartXAxis dataKey={config.xAxis.toString()} />\n <ChartYAxis />\n <ChartTooltip />\n <ChartLegend iconType=\"plainline\" />\n {config.lines.map((l, i) => (\n <Line\n strokeWidth={2}\n type=\"monotone\"\n dataKey={l.toString()}\n stroke={`var(--color-chart-${(i % 5) + 1})`}\n />\n ))}\n </LineChart>\n </ResponsiveContainer>\n );\n}\n\nexport function Barchart<T>({\n className,\n data,\n config,\n ...props\n}: Omit<React.ComponentProps<typeof ResponsiveContainer>, 'children'> & {\n data: T[];\n config: {\n xAxis: keyof T;\n bars: (keyof T)[];\n };\n}) {\n return (\n <ResponsiveContainer className={className} {...props}>\n <BarChart className=\"body-sm\" data={data}>\n <ChartCartesianGrid strokeDasharray=\"3 3\" />\n <ChartXAxis dataKey={config.xAxis.toString()} />\n <ChartYAxis />\n <ChartTooltip />\n <ChartLegend />\n {config.bars.map((b, i) => (\n <Bar\n dataKey={b.toString()}\n fill={`var(--color-chart-${(i % 5) + 1})`}\n stroke={`var(--color-chart-${(i % 5) + 1})`}\n />\n ))}\n </BarChart>\n </ResponsiveContainer>\n );\n}\n\nfunction getLabel(props: PieLabelRenderProps) {\n const { name, percent } = props;\n return `${name}: ${((typeof percent === 'number' ? percent : 0) * 100).toFixed(0)}%`;\n}\nexport function PieChart<T extends Record<string, number>>({\n data,\n variant = 'full',\n showLabels = true,\n ...props\n}: Omit<React.ComponentProps<typeof ResponsiveContainer>, 'children'> & {\n data: T;\n variant?: 'full' | 'semi';\n showLabels?: boolean;\n}) {\n const finalStartAngle = variant === 'semi' ? 180 : 0;\n const finalEndAngle = variant === 'semi' ? 0 : 360;\n const cy = variant === 'semi' ? '100%' : '50%';\n\n return (\n <ResponsiveContainer {...props}>\n <RechartsPieChart>\n <ChartTooltip />\n <ChartLegend />\n <Pie\n data={Object.entries(data).map(([name, value], i) => {\n return {\n fill: `var(--color-chart-${(i % 5) + 1})`,\n stroke: `var(--color-chart-${(i % 5) + 1})`,\n name,\n value,\n };\n })}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy={cy}\n startAngle={finalStartAngle}\n endAngle={finalEndAngle}\n label={showLabels ? getLabel : undefined}\n labelLine={{ stroke: 'var(--color-neutral-6)' }}\n isAnimationActive={true}\n />\n </RechartsPieChart>\n </ResponsiveContainer>\n );\n}\n"],"names":["formateYAxisTick","value","formatNumber","ChartXAxis","props","jsx","RechartsXAxis","ChartYAxis","RechartsYAxis","ChartCartesianGrid","RechartsCartesianGrid","ChartLegend","RechartsLegend","v","ChartTooltip","RechartsTooltip","Linechart","className","data","config","ResponsiveContainer","LineChart","l","i","Line","Barchart","jsxs","BarChart","b","Bar","getLabel","name","percent","PieChart","variant","showLabels","finalStartAngle","finalEndAngle","cy","RechartsPieChart","Pie"],"mappings":"8SAkBO,SAASA,EAAiBC,EAAe,CAC5C,OAAOC,EAAaD,EAAO,CACvB,SAAU,UACV,sBAAuB,CAAA,CAC1B,CACL,CACO,SAASE,EAAW,CAAE,GAAGC,GAAqD,CACjF,OAAOC,EAACC,EAAA,CAAc,OAAO,yBAA0B,GAAGF,EAAO,CACrE,CAEO,SAASG,EAAW,CAAE,GAAGH,GAAqD,CACjF,OACIC,EAACG,GAAc,OAAO,yBAAyB,UAAU,MAAO,GAAGJ,EAAO,cAAeJ,CAAA,CAAkB,CAEnH,CAEO,SAASS,EAAmB,CAAE,GAAGL,GAA6D,CACjG,OAAOC,EAACK,EAAA,CAAsB,OAAO,yBAA0B,GAAGN,EAAO,CAC7E,CAEO,SAASO,EAAY,CAAE,GAAGP,GAAsD,CACnF,OACIC,EAACO,EAAA,CACG,SAAU,GACV,UAAWC,GAAKR,EAAC,OAAA,CAAK,UAAU,kBAAmB,SAAAQ,EAAE,EACrD,aAAc,CAAE,WAAY,0BAAA,EAC3B,GAAGT,CAAA,CAAA,CAGhB,CAEO,SAASU,EAAa,CAAE,GAAGV,GAAuD,CACrF,OACIC,EAACU,EAAA,CACG,UAAWF,GAAM,OAAOA,GAAM,SAAWX,EAAaW,CAAC,EAAIA,EAC3D,aAAc,CACV,gBAAiB,2BACjB,OAAQ,+BAAA,EAEZ,WAAY,CACR,MAAO,gCACP,WAAY,MACZ,aAAc,QAAA,EAElB,UAAW,CACP,MAAO,0BACP,QAAS,GAAA,EAEZ,GAAGT,CAAA,CAAA,CAGhB,CACO,SAASY,EAA4B,CACxC,UAAAC,EACA,KAAAC,EACA,OAAAC,EACA,GAAGf,CACP,EAMG,CACC,OACIC,EAACe,GAAqB,GAAGhB,EACrB,WAACiB,EAAA,CAAU,UAAU,UAAU,KAAAH,EAC3B,SAAA,CAAAb,EAACI,EAAA,CAAmB,gBAAgB,KAAA,CAAM,IACzCN,EAAA,CAAW,QAASgB,EAAO,MAAM,WAAY,IAC7CZ,EAAA,EAAW,IACXO,EAAA,EAAa,EACdT,EAACM,EAAA,CAAY,SAAS,WAAA,CAAY,EACjCQ,EAAO,MAAM,IAAI,CAACG,EAAGC,IAClBlB,EAACmB,EAAA,CACG,YAAa,EACb,KAAK,WACL,QAASF,EAAE,SAAA,EACX,OAAQ,qBAAsBC,EAAI,EAAK,CAAC,GAAA,CAAA,CAE/C,CAAA,CAAA,CACL,CAAA,CACJ,CAER,CAEO,SAASE,EAAY,CACxB,UAAAR,EACA,KAAAC,EACA,OAAAC,EACA,GAAGf,CACP,EAMG,CACC,OACIC,EAACe,GAAoB,UAAAH,EAAuB,GAAGb,EAC3C,SAAAsB,EAACC,EAAA,CAAS,UAAU,UAAU,KAAAT,EAC1B,SAAA,CAAAb,EAACI,EAAA,CAAmB,gBAAgB,KAAA,CAAM,IACzCN,EAAA,CAAW,QAASgB,EAAO,MAAM,WAAY,IAC7CZ,EAAA,EAAW,IACXO,EAAA,EAAa,IACbH,EAAA,EAAY,EACZQ,EAAO,KAAK,IAAI,CAACS,EAAGL,IACjBlB,EAACwB,EAAA,CACG,QAASD,EAAE,SAAA,EACX,KAAM,qBAAsBL,EAAI,EAAK,CAAC,IACtC,OAAQ,qBAAsBA,EAAI,EAAK,CAAC,GAAA,CAAA,CAE/C,CAAA,CAAA,CACL,CAAA,CACJ,CAER,CAEA,SAASO,EAAS1B,EAA4B,CAC1C,KAAM,CAAE,KAAA2B,EAAM,QAAAC,CAAA,EAAY5B,EAC1B,MAAO,GAAG2B,CAAI,OAAO,OAAOC,GAAY,SAAWA,EAAU,GAAK,KAAK,QAAQ,CAAC,CAAC,GACrF,CACO,SAASC,EAA2C,CACvD,KAAAf,EACA,QAAAgB,EAAU,OACV,WAAAC,EAAa,GACb,GAAG/B,CACP,EAIG,CACC,MAAMgC,EAAkBF,IAAY,OAAS,IAAM,EAC7CG,EAAgBH,IAAY,OAAS,EAAI,IACzCI,EAAKJ,IAAY,OAAS,OAAS,MAEzC,OACI7B,EAACe,EAAA,CAAqB,GAAGhB,EACrB,WAACmC,EAAA,CACG,SAAA,CAAAlC,EAACS,EAAA,EAAa,IACbH,EAAA,EAAY,EACbN,EAACmC,EAAA,CACG,KAAM,OAAO,QAAQtB,CAAI,EAAE,IAAI,CAAC,CAACa,EAAM9B,CAAK,EAAGsB,KACpC,CACH,KAAM,qBAAsBA,EAAI,EAAK,CAAC,IACtC,OAAQ,qBAAsBA,EAAI,EAAK,CAAC,IACxC,KAAAQ,EACA,MAAA9B,CAAA,EAEP,EACD,QAAQ,QACR,QAAQ,OACR,GAAG,MACH,GAAAqC,EACA,WAAYF,EACZ,SAAUC,EACV,MAAOF,EAAaL,EAAW,OAC/B,UAAW,CAAE,OAAQ,wBAAA,EACrB,kBAAmB,EAAA,CAAA,CACvB,CAAA,CACJ,CAAA,CACJ,CAER"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsx as e,Fragment as k,jsxs as v}from"react/jsx-runtime";import{useId as C}from"react";import{Checkbox as y,composeRenderProps as l,CheckboxGroup as N}from"react-aria-components";import{useFieldContext as I}from"../utilities/form-context.js";import{classNames as r}from"../utilities/theme.js";import{FormField as w,labelVariants as B}from"./form.js";import{IcMinus as F,IcCheck as j}from"./icons.js";import"@tanstack/react-form";import"clsx";import"class-variance-authority";const i="group-data-[disabled]/checkbox:cursor-not-allowed group-data-[disabled]/checkbox:opacity-50",a="group-data-[invalid]/checkbox:border-destructive",u="focus:outline-none focus-visible:outline-none",b="group-data-[selected]/checkbox:bg-primary",S="relative shrink-0 h-6 w-11 rounded-full border border-input bg-elevation-
|
|
1
|
+
"use client";import{jsx as e,Fragment as k,jsxs as v}from"react/jsx-runtime";import{useId as C}from"react";import{Checkbox as y,composeRenderProps as l,CheckboxGroup as N}from"react-aria-components";import{useFieldContext as I}from"../utilities/form-context.js";import{classNames as r}from"../utilities/theme.js";import{FormField as w,labelVariants as B}from"./form.js";import{IcMinus as F,IcCheck as j}from"./icons.js";import"@tanstack/react-form";import"clsx";import"class-variance-authority";import"./card.js";const i="group-data-[disabled]/checkbox:cursor-not-allowed group-data-[disabled]/checkbox:opacity-50",a="group-data-[invalid]/checkbox:border-destructive",u="focus:outline-none focus-visible:outline-none",b="group-data-[selected]/checkbox:bg-primary",S="relative shrink-0 h-6 w-11 rounded-full border border-input bg-elevation-1 transition-colors duration-200",z="absolute top-1/2 -translate-y-1/2 left-0.5 h-5 w-5 rounded-full bg-background border border-input transition-transform duration-200",D="flex size-input shrink-0 items-center bg-elevation-1 rounded-full justify-center border border-input text-current ring-offset-background",J=N;function G({className:o,label:t,description:m,errorMessage:h,requiredIndicator:p,variant:x="checkbox",...c}){const g=C(),d=c.id||g,f=x==="switch";return e("div",{className:"group form-field",children:e(w,{label:t,description:m,errorMessage:h,requiredIndicator:p,htmlFor:d,children:e(y,{className:l(o,n=>r("group/checkbox cursor-pointer relative focus-ring flex items-center gap-x-2 disabled-muted",B,n)),id:d,...c,children:l(e(k,{}),(n,s)=>f?e("div",{className:r(S,b,i,a,"group-data-[invalid]/checkbox:group-data-[selected]/checkbox:bg-destructive",u),children:e("div",{className:r(z,"group-data-[selected]/checkbox:translate-x-4.5",i,a)})}):e("div",{className:r(D,"group-data-[indeterminate]/checkbox:bg-primary",b,"group-data-[indeterminate]/checkbox:text-primary-foreground group-data-[selected]/checkbox:text-primary-foreground",i,a,"group-data-[invalid]/checkbox:group-data-[selected]/checkbox:bg-destructive group-data-[invalid]/checkbox:group-data-[selected]/checkbox:text-destructive-foreground",u),children:v("span",{className:"flex items-center justify-center",children:[s.isIndeterminate&&e(F,{className:"size-icon"}),!s.isIndeterminate&&s.isSelected&&e(j,{className:"size-icon"})]})}))})})})}function L({...o}){const t=I({disabled:o.isDisabled});return e(G,{requiredIndicator:t.isRequired,isSelected:t.state.value,isDisabled:t.isSubmitting||o.isDisabled,onChange:()=>t.handleChange(!t.state.value),onBlur:t.handleBlur,...o})}export{G as Checkbox,J as CheckboxGroup,L as TfCheckbox};
|
|
2
2
|
//# sourceMappingURL=checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","sources":["../../lib/components/checkbox.tsx"],"sourcesContent":["'use client';\nimport { useId } from 'react';\nimport {\n Checkbox as AriaCheckbox,\n CheckboxGroup as AriaCheckboxGroup,\n composeRenderProps,\n type CheckboxProps as AriaCheckboxProps,\n} from 'react-aria-components';\n\nimport { useFieldContext } from '../utilities/form-context';\nimport { classNames } from '../utilities/theme';\nimport { FormField, labelVariants, type FormFieldProps } from './form';\nimport { IcCheck, IcMinus } from './icons';\n\nconst disabledClasses = 'group-data-[disabled]/checkbox:cursor-not-allowed group-data-[disabled]/checkbox:opacity-50';\nconst invalidBorderClasses = 'group-data-[invalid]/checkbox:border-destructive';\nconst focusResetClasses = 'focus:outline-none focus-visible:outline-none';\nconst selectedPrimaryClasses = 'group-data-[selected]/checkbox:bg-primary';\n\nconst switchBaseClasses =\n 'relative shrink-0 h-6 w-11 rounded-full border border-input bg-elevation-
|
|
1
|
+
{"version":3,"file":"checkbox.js","sources":["../../lib/components/checkbox.tsx"],"sourcesContent":["'use client';\nimport { useId } from 'react';\nimport {\n Checkbox as AriaCheckbox,\n CheckboxGroup as AriaCheckboxGroup,\n composeRenderProps,\n type CheckboxProps as AriaCheckboxProps,\n} from 'react-aria-components';\n\nimport { useFieldContext } from '../utilities/form-context';\nimport { classNames } from '../utilities/theme';\nimport { FormField, labelVariants, type FormFieldProps } from './form';\nimport { IcCheck, IcMinus } from './icons';\n\nconst disabledClasses = 'group-data-[disabled]/checkbox:cursor-not-allowed group-data-[disabled]/checkbox:opacity-50';\nconst invalidBorderClasses = 'group-data-[invalid]/checkbox:border-destructive';\nconst focusResetClasses = 'focus:outline-none focus-visible:outline-none';\nconst selectedPrimaryClasses = 'group-data-[selected]/checkbox:bg-primary';\n\nconst switchBaseClasses =\n 'relative shrink-0 h-6 w-11 rounded-full border border-input bg-elevation-1 transition-colors duration-200';\nconst switchKnobClasses =\n 'absolute top-1/2 -translate-y-1/2 left-0.5 h-5 w-5 rounded-full bg-background border border-input transition-transform duration-200';\n\nconst checkboxBaseClasses =\n 'flex size-input shrink-0 items-center bg-elevation-1 rounded-full justify-center border border-input text-current ring-offset-background';\n\nexport const CheckboxGroup = AriaCheckboxGroup;\ntype CheckboxProps = AriaCheckboxProps &\n FormFieldProps & {\n variant?: 'checkbox' | 'switch';\n };\nexport function Checkbox({\n className,\n label,\n description,\n errorMessage,\n requiredIndicator,\n variant = 'checkbox',\n ...props\n}: Omit<CheckboxProps, 'children'>) {\n const generatedId = useId();\n const fieldId = props.id || generatedId;\n const isSwitch = variant === 'switch';\n return (\n <div className=\"group form-field\">\n <FormField\n {...{\n label,\n description,\n errorMessage,\n requiredIndicator,\n htmlFor: fieldId,\n }}\n >\n <AriaCheckbox\n className={composeRenderProps(className, className =>\n classNames(\n 'group/checkbox cursor-pointer relative focus-ring flex items-center gap-x-2 disabled-muted',\n labelVariants,\n className\n )\n )}\n id={fieldId}\n {...props}\n >\n {composeRenderProps(<></>, (_, renderProps) => {\n if (isSwitch) {\n return (\n <div\n className={classNames(\n switchBaseClasses,\n selectedPrimaryClasses,\n disabledClasses,\n invalidBorderClasses,\n 'group-data-[invalid]/checkbox:group-data-[selected]/checkbox:bg-destructive',\n focusResetClasses\n )}\n >\n <div\n className={classNames(\n switchKnobClasses,\n 'group-data-[selected]/checkbox:translate-x-4.5',\n disabledClasses,\n invalidBorderClasses\n )}\n />\n </div>\n );\n }\n\n return (\n <div\n className={classNames(\n checkboxBaseClasses,\n 'group-data-[indeterminate]/checkbox:bg-primary',\n selectedPrimaryClasses,\n 'group-data-[indeterminate]/checkbox:text-primary-foreground group-data-[selected]/checkbox:text-primary-foreground',\n disabledClasses,\n invalidBorderClasses,\n 'group-data-[invalid]/checkbox:group-data-[selected]/checkbox:bg-destructive group-data-[invalid]/checkbox:group-data-[selected]/checkbox:text-destructive-foreground',\n focusResetClasses\n )}\n >\n <span className=\"flex items-center justify-center\">\n {renderProps.isIndeterminate && <IcMinus className=\"size-icon\" />}\n {!renderProps.isIndeterminate && renderProps.isSelected && (\n <IcCheck className=\"size-icon\" />\n )}\n </span>\n </div>\n );\n })}\n </AriaCheckbox>\n </FormField>\n </div>\n );\n}\n\nexport type TfCheckboxProps = Omit<React.ComponentProps<typeof Checkbox>, 'onChange' | 'onBlur' | 'isChecked'>;\nexport function TfCheckbox({ ...props }: TfCheckboxProps) {\n const field = useFieldContext<boolean>({ disabled: props.isDisabled });\n return (\n <Checkbox\n requiredIndicator={field.isRequired}\n isSelected={field.state.value}\n isDisabled={field.isSubmitting || props.isDisabled}\n onChange={() => field.handleChange(!field.state.value)}\n onBlur={field.handleBlur}\n {...props}\n />\n );\n}\n"],"names":["disabledClasses","invalidBorderClasses","focusResetClasses","selectedPrimaryClasses","switchBaseClasses","switchKnobClasses","checkboxBaseClasses","CheckboxGroup","AriaCheckboxGroup","Checkbox","className","label","description","errorMessage","requiredIndicator","variant","props","generatedId","useId","fieldId","isSwitch","jsx","FormField","AriaCheckbox","composeRenderProps","classNames","labelVariants","Fragment","_","renderProps","jsxs","IcMinus","IcCheck","TfCheckbox","field","useFieldContext"],"mappings":"igBAcA,MAAMA,EAAkB,8FAClBC,EAAuB,mDACvBC,EAAoB,gDACpBC,EAAyB,4CAEzBC,EACF,4GACEC,EACF,sIAEEC,EACF,2IAESC,EAAgBC,EAKtB,SAASC,EAAS,CACrB,UAAAC,EACA,MAAAC,EACA,YAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,QAAAC,EAAU,WACV,GAAGC,CACP,EAAoC,CAChC,MAAMC,EAAcC,EAAA,EACdC,EAAUH,EAAM,IAAMC,EACtBG,EAAWL,IAAY,SAC7B,OACIM,EAAC,MAAA,CAAI,UAAU,mBACX,SAAAA,EAACC,EAAA,CAEO,MAAAX,EACA,YAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,QAASK,EAGb,SAAAE,EAACE,EAAA,CACG,UAAWC,EAAmBd,EAAWA,GACrCe,EACI,6FACAC,EACAhB,CAAA,CACJ,EAEJ,GAAIS,EACH,GAAGH,EAEH,SAAAQ,EAAmBH,EAAAM,EAAA,CAAA,CAAE,EAAK,CAACC,EAAGC,IACvBT,EAEIC,EAAC,MAAA,CACG,UAAWI,EACPrB,EACAD,EACAH,EACAC,EACA,8EACAC,CAAA,EAGJ,SAAAmB,EAAC,MAAA,CACG,UAAWI,EACPpB,EACA,iDACAL,EACAC,CAAA,CACJ,CAAA,CACJ,CAAA,EAMRoB,EAAC,MAAA,CACG,UAAWI,EACPnB,EACA,iDACAH,EACA,qHACAH,EACAC,EACA,uKACAC,CAAA,EAGJ,SAAA4B,EAAC,OAAA,CAAK,UAAU,mCACX,SAAA,CAAAD,EAAY,iBAAmBR,EAACU,EAAA,CAAQ,UAAU,YAAY,EAC9D,CAACF,EAAY,iBAAmBA,EAAY,YACzCR,EAACW,EAAA,CAAQ,UAAU,WAAA,CAAY,CAAA,CAAA,CAEvC,CAAA,CAAA,CAGX,CAAA,CAAA,CACL,CAAA,EAER,CAER,CAGO,SAASC,EAAW,CAAE,GAAGjB,GAA0B,CACtD,MAAMkB,EAAQC,EAAyB,CAAE,SAAUnB,EAAM,WAAY,EACrE,OACIK,EAACZ,EAAA,CACG,kBAAmByB,EAAM,WACzB,WAAYA,EAAM,MAAM,MACxB,WAAYA,EAAM,cAAgBlB,EAAM,WACxC,SAAU,IAAMkB,EAAM,aAAa,CAACA,EAAM,MAAM,KAAK,EACrD,OAAQA,EAAM,WACb,GAAGlB,CAAA,CAAA,CAGhB"}
|
|
@@ -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
|
+
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};
|
|
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
|
+
{"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,2 +1,2 @@
|
|
|
1
|
-
import"react/jsx-runtime";import"@internationalized/date";import"react";import"./button.js";import{C as
|
|
1
|
+
import"react/jsx-runtime";import"@internationalized/date";import"react";import"./button.js";import{C as X,D as Y,F as Z}from"./data-table.js";import"./date-picker.js";import"./menu.js";import"./multi-select.js";import"./numberfield.js";import"./popover.js";import"./textfield.js";import"../utilities/date.js";import"../utilities/resources.js";import"../utilities/theme.js";import"./icons.js";import"./id-search.js";import"class-variance-authority";import"react-aria-components";import"./loader.js";import"clsx";import"@dnd-kit/core";import"@dnd-kit/sortable";import"@dnd-kit/utilities";import"@tanstack/react-query";import"@tanstack/react-table";import"@uidotdev/usehooks";import"lodash-es";import"./badge.js";import"./searchfield.js";import"./form.js";import"./card.js";import"./table.js";import"../utilities/countries.js";import"./select-options.js";import"../utilities/string.js";import"../utilities/duration.js";import"../utilities/numbers.js";import"./checkbox.js";import"../utilities/form-context.js";import"@tanstack/react-form";import"../utilities/ctx-client.js";import"./dialog.js";import"./calendar.js";import"./datefield.js";import"../utilities/form.js";import"./list-box.js";import"./select.js";import"./kbd.js";import"../utilities/empty-option.js";export{X as COMPARISON_OPERATOR_LABELS,Y as DataTableFilter,Z as FILTER_COMPARISON_OPERATORS};
|
|
2
2
|
//# sourceMappingURL=data-table-filter.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsx as t,Fragment as T,jsxs as d}from"react/jsx-runtime";import{parseAbsolute as ge,getLocalTimeZone as pe}from"@internationalized/date";import{createContext as fe,useState as N,useMemo as be,useEffect as W,useContext as he,useRef as Se}from"react";import{Button as C}from"./button.js";import{useSensors as ve,useSensor as V,PointerSensor as ye,KeyboardSensor as Ce,DndContext as we,closestCenter as Ie,DragOverlay as xe}from"@dnd-kit/core";import{sortableKeyboardCoordinates as Ne,SortableContext as Te,verticalListSortingStrategy as Pe,arrayMove as De,useSortable as Fe}from"@dnd-kit/sortable";import{CSS as Ae}from"@dnd-kit/utilities";import{useQuery as Re}from"@tanstack/react-query";import{createColumnHelper as ee,useReactTable as Oe,getCoreRowModel as ze,flexRender as M}from"@tanstack/react-table";import{useLocalStorage as B}from"@uidotdev/usehooks";import{merge as Le}from"lodash-es";import{Badge as _e}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 je,Popover as $e}from"./popover.js";import{TextField as He}from"./textfield.js";import{formatDate as te}from"../utilities/date.js";import{useResourceFormatter as E,ALL_OS as ke}from"../utilities/resources.js";import{classNames as y}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 K,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 Q,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 U}from"./checkbox.js";import{getSubscriptionStartTriggerLabel as Ct,ALL_LICENSE_TYPES as wt}from"./select-options.js";import{useCtxClient as It}from"../utilities/ctx-client.js";import{ControlledDialogProvider as xt,useControlledDialog as ne}from"./dialog.js";import"class-variance-authority";import"react-aria-components";import"clsx";import"./calendar.js";import"./form.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 Nt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const re=ee(),Tt=[re.accessor("checkbox",{header:({table:e})=>t(U,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all"}),cell:({row:e})=>t(U,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1})],w="TableActions";function Pt(e){return e.length===0?[]:[re.accessor(w,{header:"Actions",id:w,enableHiding:!1,cell:({row:r})=>t(_t,{label:t(Be,{}),data:r.original,items:e}),enableSorting:!1})]}function qn(){return ee()}function En({path:e,pathParameters:r,columns:n,filterConfig:a,columnsToHideByDefault:o={},allowSelection:s=!1,initialFilters:c=[],tableActions:i}){const[u,g]=N({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:p,pagination:b}=u,[v,z]=N(""),[A,R]=N({}),[m,f]=N(c),S=be(()=>m.map(l=>Array.isArray(l.value)?{[l.property]:{[l.operator]:l.value.join(",")}}:{[l.property]:{[l.operator]:l.value}}).reduce((l,h)=>Le(l,h),{}),[m]),D={...m,page:b.pageIndex+1,limit:b.pageSize,sort:Nt(p[0]),search:v},le=It(),L=["get",e,D],[j,$]=B(`${L.join("")}_ctx_column_order_preference`,[]),[H,ce]=B(`${L.join("")}_ctx_column_visibility_preference`,{id:!1,...o}),_=l=>{g(h=>({...h,...l}))},O=Re({queryKey:L,queryFn:async()=>{const l=await le.GET(e,{params:{query:{page:D.page,limit:D.limit,sort:D.sort,search:D.search,...S},path:r}});return{data:l.data??[],total:Number.parseInt(l.response.headers.get("Pagination-Count")||"0")}}}),ue=i.filter(ie),de=[...s?Tt:[],...n,...Pt(ue??[])];function me(l){return typeof l=="function"}function F(l,h){return me(l)?l(h):l}const k=Oe({data:O.data?.data??[],columns:de,getCoreRowModel:ze(),rowCount:O.data?.total??0,manualPagination:!0,onPaginationChange:l=>{_({pagination:F(l,b)})},manualSorting:!0,onSortingChange:l=>{R({}),_({sorting:[...F(l,p)]})},manualFiltering:!0,onColumnVisibilityChange:l=>{ce(F(l,H))},onRowSelectionChange:l=>{R(F(l,A))},onColumnOrderChange:l=>{$(F(l,j))},state:{sorting:p,columnVisibility:H,pagination:b,rowSelection:A,columnOrder:j},meta:{refetch:O.refetch}});return W(()=>{const l=k.getAllLeafColumns();$([...l.filter(h=>h.id!==w).map(h=>h.id),...l.filter(h=>h.id===w).map(h=>h.id)])},[]),{tableState:u,updateTableState:_,query:O,setSearchQuery:z,searchQuery:v,tanTable:k,mergedFilters:S,filters:m,setFilters:f,filterConfig:a,tableActions:i,pathParameters:r}}const ae=fe(null);function x(){const e=he(ae);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function jn({children:e,...r}){return t(ae.Provider,{value:r,children:e})}function $n({className:e,...r}){const{query:n,tanTable:a}=x();return t(T,{children:d(xt,{children:[t(Rt,{}),d("section",{...r,className:y("z-20 flex flex-col bg-elevation-2 border rounded-md",e),children:[d("div",{className:"w-full overflow-auto h-table relative rounded-md",tabIndex:0,children:[n.isLoading&&t(G,{className:"cursor-wait",children:t(ct,{})}),!n.isLoading&&a.getRowModel().rows.length===0&&t(G,{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(zt,{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(Dt,{}),t(At,{})]}),t(Ft,{})]})]})]})})}function G({children:e,className:r}){return d(T,{children:[t("span",{className:y(r,"absolute top-0 bg-elevation-2 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 Dt(){const{tanTable:e}=x(),[r,n]=N(null),a=E(),o=ve(V(ye),V(Ce,{coordinateGetter:Ne}));return t(we,{sensors:o,collisionDetection:Ie,onDragStart:c=>{const{active:i}=c;n(i.id.toString())},onDragEnd:c=>{const{active:i,over:u}=c;if(u&&i.id!==u.id){const g=e.getState().columnOrder,p=g.indexOf(i.id.toString()),b=g.indexOf(u.id.toString());e.setColumnOrder([...De(g,p,b)])}n(null)},children:d(Te,{items:e.getState().columnOrder,strategy:Pe,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(c=>c.id),children:[t(I,{onAction:()=>e.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),e.getState().columnOrder.map(c=>{const i=e.getAllFlatColumns().find(u=>u.id===c);return!i||i.id==="checkbox"||i.id===w?null:t(s,{column:i},i.id)})]}),t(xe,{children:r?t("div",{className:"opacity-70 border-2 border-primary",children:a(r)}):null})]})});function s({column:c}){const{attributes:i,listeners:u,setNodeRef:g,transform:p,transition:b}=Fe({id:c.id}),v={transform:Ae.Transform.toString(p),transition:b,zIndex:"999"};return d(I,{ref:g,style:v,...i,id:c.id,onAction:()=>c.toggleVisibility(),isDisabled:!c.getCanHide(),className:"flex items-center",children:[t(Ue,{...u,className:"size-icon cursor-grab"}),q(c),c.getIsSorted()&&t(oe,{className:"size-icon",direction:c.getIsSorted()})]})}}function Ft(){const{tanTable:e}=x(),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(C,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Ge,{})}),t(C,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Ze,{})}),t(C,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Xe,{})}),t(C,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Ye,{})})]})}function At(){const{tanTable:e}=x(),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 Rt(){const{query:e,tanTable:r,searchQuery:n,setSearchQuery:a,tableActions:o}=x(),s=r.getSelectedRowModel().rows.length>0,c=o.filter(i=>i.resourceType!=="single").filter(i=>i.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(C,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(Ke,{})}),t(ut,{value:n,onChange:a}),t(Ht,{})]}),t("div",{className:"flex gap-icon",children:t(Lt,{items:c,isFetching:e.isFetching})})]})}function oe({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 Ot(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:te(n)});case"number":return t("span",{className:"block text-right tabular-nums",children:yt(n)});case"boolean":case"badge":return t(_e,{className:"uppercase 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 wt[n]??n;case"subscriptionInterval":return ht.formatISODuration(n);case"subscriptionStartTrigger":return Ct(n);default:return String(n)}}function Z({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 zt({className:e}){const{tanTable:r}=x(),n=(a,o,s="z-50")=>y("px-icon py-2 text-left body-sm font-medium whitespace-nowrap",a&&`bg-elevation-2 sticky right-0 ${s} text-center justify-center`,o);return d(dt,{className:y("table-auto border-0 rounded-md",e),children:[t(mt,{className:"sticky top-0 z-10 rounded-md",children:r.getHeaderGroups().map(a=>t(Q,{children:a.headers.map(o=>d(gt,{scope:"col",colSpan:o.colSpan,className:n(o.id===w,"bg-elevation-2"),children:[!o.column.getCanSort()&&!o.isPlaceholder&&t("div",{className:y("w-full py-1 inline-flex items-center gap-1 body-sm",o.id===w?"justify-center":"justify-start"),children:t(Z,{header:o})}),o.column.getCanSort()&&d(C,{variant:"ghost",className:y("w-full p-1",o.id===w?"justify-center":"justify-start"),onPress:o.column.getToggleSortingHandler(),children:[t("span",{children:t(Z,{header:o})}),t(oe,{direction:o.column.getIsSorted()})]})]},o.id))},a.id))}),t(pt,{children:r.getRowModel().rows.map(a=>t(Q,{className:y("transition-colors data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20"),"data-selected":a.getIsSelected(),children:a.getVisibleCells().map(o=>{const s=o.column.id===w,c=o.column.columnDef.meta?.displayType?Ot(o):M(o.column.columnDef.cell,o.getContext());return t(ft,{className:y(n(s,void 0,"z-1"),s&&"flex justify-center items-center"),children:c},o.id)})},a.id))})]})}function X(e){return e.resourceType==="none"}function ie(e){return e.resourceType==="single"}function Y(e){return e.resourceType==="multiple"}function Lt({items:e,isFetching:r}){const{openDialog:n,closeDialog:a}=ne(),{tanTable:o}=x();function s(i,u){return i.isDisabled?X(i)?i.isDisabled():Y(i)?i.isDisabled(u):!1:!1}const c=o.getSelectedRowModel().rows.map(i=>i.original);return t(T,{children:e.map((i,u)=>{const g=i.icon,p=s(i,c)||r;return d(C,{"aria-label":i.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};X(i)?i.onPress(v):Y(i)&&i.onPress({...v,data:c})},variant:i.variant??"neutral",children:[g&&t(g,{"aria-hidden":!0}),t("span",{children:i.label})]},`${i.label}-${u}`)})})}function _t({label:e,items:r,data:n}){const{openDialog:a,closeDialog:o}=ne();return t(P,{"aria-label":"Actions",label:e,size:"icon",children:r.map((s,c)=>{const i=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:o};ie(s)&&s.onPress({...g,data:n})},children:[t(i,{className:"size-icon"}),u]},`${c}-${typeof u=="string"?u:""}`)})})}const Hn=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte"],J={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"},Mt={eq:"=",ne:"≠",cn:"contains",nc:"!contains",sw:"starts with",ew:"ends with",in:"in",nin:"not in",gt:">",gte:"≥",lt:"<",lte:"≤"};function qt(e,r){const n=`${r}-${Date.now()}`,a=se[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 se={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 Et(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?te(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 jt({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 o=e.value?ge(e.value,pe()):null;return t(Me,{autoFocus:!0,hideTimeZone:!0,value:o,onChange:s=>a(s?s.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 s=n?{path:n,query:{}}:void 0;return t(lt,{autoFocus:!0,path:o.path,accessor:o.accessor,defaultParams:s,value:e.value??[],onChange:a,"aria-label":"Filter value"})}return null}function $t({filter:e,filterConfig:r,pathParameters:n,resourceFormatter:a,onRemove:o,onUpdate:s,isOpen:c,onOpenChange:i}){const u=se[e.type],g=Et(e);return d(je,{isOpen:c,onOpenChange:i,children:[d(C,{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:Mt[e.operator]}),g&&t("span",{children:g})]}),t($e,{className:"p-icon min-w-48",children:d("div",{className:"flex flex-col gap-icon",children:[u.length>1&&t(P,{label:J[e.operator],variant:"neutral","aria-label":"Change operator",children:u.map(p=>t(I,{onAction:()=>s({operator:p}),children:J[p]},p))}),t(jt,{filter:e,filterConfig:r,pathParameters:n,onChange:p=>s({value:p})}),t(C,{type:"button",variant:"destructive_neutral",onPress:o,"aria-label":`Remove ${a(e.property)} filter`,children:t(st,{})})]})})]})}function Ht({className:e,defaultFilters:r,...n}){const{filters:a,query:o,setFilters:s,filterConfig:c,pathParameters:i}=x(),u=E(),g=Object.keys(c).sort(),[p,b]=N(null),v=Se(!1);W(()=>{!v.current&&r&&r.length>0&&a.length===0&&s(r),v.current=!0},[]);const z=(m,f)=>{const S=qt(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:y("flex flex-wrap gap-icon items-center",e),children:[a.map(m=>t($t,{filter:m,filterConfig:c,pathParameters:i,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:o.isPending||g.length===0,variant:"neutral","aria-label":"Add filter",children:g.map(m=>{const f=c[m].type,S=kt[f];return d(I,{className:"!justify-between",onAction:()=>z(f,m),children:[u(m),t(S,{})]},m)})})]})}const kt={"id-search":ot,bool:K,date:at,enum:rt,id:nt,number:tt,string:K};export{J as C,Ht as D,$n as DataTable,ae as DataTableContext,jn as DataTableProvider,Hn as F,qn as getColumnHelper,x as useDataTable,En as useDataTableState};
|
|
1
|
+
"use client";import{jsx as t,Fragment as T,jsxs as d}from"react/jsx-runtime";import{parseAbsolute as ge,getLocalTimeZone as pe}from"@internationalized/date";import{createContext as fe,useState as N,useMemo as be,useEffect as W,useContext as he,useRef as Se}from"react";import{Button as C}from"./button.js";import{useSensors as ve,useSensor as V,PointerSensor as ye,KeyboardSensor as Ce,DndContext as we,closestCenter as Ie,DragOverlay as xe}from"@dnd-kit/core";import{sortableKeyboardCoordinates as Ne,SortableContext as Te,verticalListSortingStrategy as Pe,arrayMove as De,useSortable as Fe}from"@dnd-kit/sortable";import{CSS as Ae}from"@dnd-kit/utilities";import{useQuery as Re}from"@tanstack/react-query";import{createColumnHelper as ee,useReactTable as Oe,getCoreRowModel as ze,flexRender as M}from"@tanstack/react-table";import{useLocalStorage as B}from"@uidotdev/usehooks";import{merge as Le}from"lodash-es";import{Badge as _e}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 je,Popover as $e}from"./popover.js";import{TextField as He}from"./textfield.js";import{formatDate as te}from"../utilities/date.js";import{useResourceFormatter as E,ALL_OS as ke}from"../utilities/resources.js";import{classNames as y}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 K,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 Q,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 U}from"./checkbox.js";import{getSubscriptionStartTriggerLabel as Ct,ALL_LICENSE_TYPES as wt}from"./select-options.js";import{useCtxClient as It}from"../utilities/ctx-client.js";import{ControlledDialogProvider as xt,useControlledDialog as ne}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 Nt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const re=ee(),Tt=[re.accessor("checkbox",{header:({table:e})=>t(U,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all"}),cell:({row:e})=>t(U,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1})],w="TableActions";function Pt(e){return e.length===0?[]:[re.accessor(w,{header:"Actions",id:w,enableHiding:!1,cell:({row:r})=>t(_t,{label:t(Be,{}),data:r.original,items:e}),enableSorting:!1})]}function En(){return ee()}function jn({path:e,pathParameters:r,columns:n,filterConfig:a,columnsToHideByDefault:o={},allowSelection:s=!1,initialFilters:c=[],tableActions:i}){const[u,g]=N({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:p,pagination:b}=u,[v,z]=N(""),[A,R]=N({}),[m,f]=N(c),S=be(()=>m.map(l=>Array.isArray(l.value)?{[l.property]:{[l.operator]:l.value.join(",")}}:{[l.property]:{[l.operator]:l.value}}).reduce((l,h)=>Le(l,h),{}),[m]),D={...m,page:b.pageIndex+1,limit:b.pageSize,sort:Nt(p[0]),search:v},le=It(),L=["get",e,D],[j,$]=B(`${L.join("")}_ctx_column_order_preference`,[]),[H,ce]=B(`${L.join("")}_ctx_column_visibility_preference`,{id:!1,...o}),_=l=>{g(h=>({...h,...l}))},O=Re({queryKey:L,queryFn:async()=>{const l=await le.GET(e,{params:{query:{page:D.page,limit:D.limit,sort:D.sort,search:D.search,...S},path:r}});return{data:l.data??[],total:Number.parseInt(l.response.headers.get("Pagination-Count")||"0")}}}),ue=i.filter(ie),de=[...s?Tt:[],...n,...Pt(ue??[])];function me(l){return typeof l=="function"}function F(l,h){return me(l)?l(h):l}const k=Oe({data:O.data?.data??[],columns:de,getCoreRowModel:ze(),rowCount:O.data?.total??0,manualPagination:!0,onPaginationChange:l=>{_({pagination:F(l,b)})},manualSorting:!0,onSortingChange:l=>{R({}),_({sorting:[...F(l,p)]})},manualFiltering:!0,onColumnVisibilityChange:l=>{ce(F(l,H))},onRowSelectionChange:l=>{R(F(l,A))},onColumnOrderChange:l=>{$(F(l,j))},state:{sorting:p,columnVisibility:H,pagination:b,rowSelection:A,columnOrder:j},meta:{refetch:O.refetch}});return W(()=>{const l=k.getAllLeafColumns();$([...l.filter(h=>h.id!==w).map(h=>h.id),...l.filter(h=>h.id===w).map(h=>h.id)])},[]),{tableState:u,updateTableState:_,query:O,setSearchQuery:z,searchQuery:v,tanTable:k,mergedFilters:S,filters:m,setFilters:f,filterConfig:a,tableActions:i,pathParameters:r}}const ae=fe(null);function x(){const e=he(ae);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function $n({children:e,...r}){return t(ae.Provider,{value:r,children:e})}function Hn({className:e,...r}){const{query:n,tanTable:a}=x();return t(T,{children:d(xt,{children:[t(Rt,{}),d("section",{...r,className:y("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(G,{className:"cursor-wait",children:t(ct,{})}),!n.isLoading&&a.getRowModel().rows.length===0&&t(G,{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(zt,{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(Dt,{}),t(At,{})]}),t(Ft,{})]})]})]})})}function G({children:e,className:r}){return d(T,{children:[t("span",{className:y(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 Dt(){const{tanTable:e}=x(),[r,n]=N(null),a=E(),o=ve(V(ye),V(Ce,{coordinateGetter:Ne}));return t(we,{sensors:o,collisionDetection:Ie,onDragStart:c=>{const{active:i}=c;n(i.id.toString())},onDragEnd:c=>{const{active:i,over:u}=c;if(u&&i.id!==u.id){const g=e.getState().columnOrder,p=g.indexOf(i.id.toString()),b=g.indexOf(u.id.toString());e.setColumnOrder([...De(g,p,b)])}n(null)},children:d(Te,{items:e.getState().columnOrder,strategy:Pe,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(c=>c.id),children:[t(I,{onAction:()=>e.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),e.getState().columnOrder.map(c=>{const i=e.getAllFlatColumns().find(u=>u.id===c);return!i||i.id==="checkbox"||i.id===w?null:t(s,{column:i},i.id)})]}),t(xe,{children:r?t("div",{className:"opacity-70 border-2 border-primary",children:a(r)}):null})]})});function s({column:c}){const{attributes:i,listeners:u,setNodeRef:g,transform:p,transition:b}=Fe({id:c.id}),v={transform:Ae.Transform.toString(p),transition:b,zIndex:"999"};return d(I,{ref:g,style:v,...i,id:c.id,onAction:()=>c.toggleVisibility(),isDisabled:!c.getCanHide(),className:"flex items-center",children:[t(Ue,{...u,className:"size-icon cursor-grab"}),q(c),c.getIsSorted()&&t(oe,{className:"size-icon",direction:c.getIsSorted()})]})}}function Ft(){const{tanTable:e}=x(),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(C,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Ge,{})}),t(C,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Ze,{})}),t(C,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Xe,{})}),t(C,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Ye,{})})]})}function At(){const{tanTable:e}=x(),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 Rt(){const{query:e,tanTable:r,searchQuery:n,setSearchQuery:a,tableActions:o}=x(),s=r.getSelectedRowModel().rows.length>0,c=o.filter(i=>i.resourceType!=="single").filter(i=>i.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(C,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(Ke,{})}),t(ut,{value:n,onChange:a}),t(Ht,{})]}),t("div",{className:"flex gap-icon",children:t(Lt,{items:c,isFetching:e.isFetching})})]})}function oe({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 Ot(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:te(n)});case"number":return t("span",{className:"block text-right tabular-nums",children:yt(n)});case"boolean":case"badge":return t(_e,{className:"uppercase 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 wt[n]??n;case"subscriptionInterval":return ht.formatISODuration(n);case"subscriptionStartTrigger":return Ct(n);default:return String(n)}}function Z({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 zt({className:e}){const{tanTable:r}=x(),n=(a,o,s="z-50")=>y("px-icon py-2 text-left body-sm font-medium whitespace-nowrap",a&&`bg-elevation-1 sticky right-0 ${s} text-center justify-center`,o);return d(dt,{className:y("table-auto border-0 rounded-md",e),children:[t(mt,{className:"sticky top-0 z-10 rounded-md",children:r.getHeaderGroups().map(a=>t(Q,{children:a.headers.map(o=>d(gt,{scope:"col",colSpan:o.colSpan,className:n(o.id===w,"bg-elevation-1"),children:[!o.column.getCanSort()&&!o.isPlaceholder&&t("div",{className:y("w-full py-1 inline-flex items-center gap-1 body-sm",o.id===w?"justify-center":"justify-start"),children:t(Z,{header:o})}),o.column.getCanSort()&&d(C,{variant:"ghost",className:y("w-full p-1",o.id===w?"justify-center":"justify-start"),onPress:o.column.getToggleSortingHandler(),children:[t("span",{children:t(Z,{header:o})}),t(oe,{direction:o.column.getIsSorted()})]})]},o.id))},a.id))}),t(pt,{children:r.getRowModel().rows.map(a=>t(Q,{className:y("transition-colors data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20"),"data-selected":a.getIsSelected(),children:a.getVisibleCells().map(o=>{const s=o.column.id===w,c=o.column.columnDef.meta?.displayType?Ot(o):M(o.column.columnDef.cell,o.getContext());return t(ft,{className:y(n(s,void 0,"z-1"),s&&"flex justify-center items-center"),children:c},o.id)})},a.id))})]})}function X(e){return e.resourceType==="none"}function ie(e){return e.resourceType==="single"}function Y(e){return e.resourceType==="multiple"}function Lt({items:e,isFetching:r}){const{openDialog:n,closeDialog:a}=ne(),{tanTable:o}=x();function s(i,u){return i.isDisabled?X(i)?i.isDisabled():Y(i)?i.isDisabled(u):!1:!1}const c=o.getSelectedRowModel().rows.map(i=>i.original);return t(T,{children:e.map((i,u)=>{const g=i.icon,p=s(i,c)||r;return d(C,{"aria-label":i.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};X(i)?i.onPress(v):Y(i)&&i.onPress({...v,data:c})},variant:i.variant??"neutral",children:[g&&t(g,{"aria-hidden":!0}),t("span",{children:i.label})]},`${i.label}-${u}`)})})}function _t({label:e,items:r,data:n}){const{openDialog:a,closeDialog:o}=ne();return t(P,{"aria-label":"Actions",label:e,size:"icon",children:r.map((s,c)=>{const i=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:o};ie(s)&&s.onPress({...g,data:n})},children:[t(i,{className:"size-icon"}),u]},`${c}-${typeof u=="string"?u:""}`)})})}const kn=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte"],J={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"},Mt={eq:"=",ne:"≠",cn:"contains",nc:"!contains",sw:"starts with",ew:"ends with",in:"in",nin:"not in",gt:">",gte:"≥",lt:"<",lte:"≤"};function qt(e,r){const n=`${r}-${Date.now()}`,a=se[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 se={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 Et(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?te(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 jt({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 o=e.value?ge(e.value,pe()):null;return t(Me,{autoFocus:!0,hideTimeZone:!0,value:o,onChange:s=>a(s?s.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 s=n?{path:n,query:{}}:void 0;return t(lt,{autoFocus:!0,path:o.path,accessor:o.accessor,defaultParams:s,value:e.value??[],onChange:a,"aria-label":"Filter value"})}return null}function $t({filter:e,filterConfig:r,pathParameters:n,resourceFormatter:a,onRemove:o,onUpdate:s,isOpen:c,onOpenChange:i}){const u=se[e.type],g=Et(e);return d(je,{isOpen:c,onOpenChange:i,children:[d(C,{type:"button",variant:"neutral",className:"animate-in slide-in-from-left-10 fade-in rounded-full",children:[t("span",{className:"font-medium",children:a(e.property)}),t("span",{children:Mt[e.operator]}),g&&t("span",{children:g})]}),t($e,{className:"p-icon min-w-48",children:d("div",{className:"flex flex-col gap-icon",children:[u.length>1&&t(P,{label:J[e.operator],variant:"neutral","aria-label":"Change operator",children:u.map(p=>t(I,{onAction:()=>s({operator:p}),children:J[p]},p))}),t(jt,{filter:e,filterConfig:r,pathParameters:n,onChange:p=>s({value:p})}),t(C,{type:"button",variant:"destructive_neutral",onPress:o,"aria-label":`Remove ${a(e.property)} filter`,children:t(st,{})})]})})]})}function Ht({className:e,defaultFilters:r,...n}){const{filters:a,query:o,setFilters:s,filterConfig:c,pathParameters:i}=x(),u=E(),g=Object.keys(c).sort(),[p,b]=N(null),v=Se(!1);W(()=>{!v.current&&r&&r.length>0&&a.length===0&&s(r),v.current=!0},[]);const z=(m,f)=>{const S=qt(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:y("flex flex-wrap gap-icon items-center",e),children:[a.map(m=>t($t,{filter:m,filterConfig:c,pathParameters:i,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:o.isPending||g.length===0,variant:"neutral","aria-label":"Add filter",children:g.map(m=>{const f=c[m].type,S=kt[f];return d(I,{className:"!justify-between",onAction:()=>z(f,m),children:[u(m),t(S,{})]},m)})})]})}const kt={"id-search":ot,bool:K,date:at,enum:rt,id:nt,number:tt,string:K};export{J as C,Ht as D,Hn as DataTable,ae as DataTableContext,$n as DataTableProvider,kn as F,En as getColumnHelper,x as useDataTable,jn as useDataTableState};
|
|
2
2
|
//# sourceMappingURL=data-table.js.map
|