@customafk/lunas-ui 0.2.78 → 0.2.80
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/{analysis-panel-CQZ0hmfN.cjs → analysis-panel-Bg0lCfWv.cjs} +2 -2
- package/dist/{analysis-panel-CQZ0hmfN.cjs.map → analysis-panel-Bg0lCfWv.cjs.map} +1 -1
- package/dist/{analysis-panel-BqZmOU58.mjs → analysis-panel-Cop-l4lx.mjs} +2 -2
- package/dist/{analysis-panel-BqZmOU58.mjs.map → analysis-panel-Cop-l4lx.mjs.map} +1 -1
- package/dist/{badge-display-RP5VTE10.mjs → badge-display-B0BKsU9T.mjs} +2 -2
- package/dist/{badge-display-RP5VTE10.mjs.map → badge-display-B0BKsU9T.mjs.map} +1 -1
- package/dist/{badge-display-DmCKpGk9.cjs → badge-display-Dv2UTvzp.cjs} +2 -2
- package/dist/{badge-display-DmCKpGk9.cjs.map → badge-display-Dv2UTvzp.cjs.map} +1 -1
- package/dist/{boolean-display-B9qxrF5f.mjs → boolean-display-CMX5AupA.mjs} +2 -2
- package/dist/{boolean-display-B9qxrF5f.mjs.map → boolean-display-CMX5AupA.mjs.map} +1 -1
- package/dist/{boolean-display-BwB-l9k0.cjs → boolean-display-CPX7H39m.cjs} +2 -2
- package/dist/{boolean-display-BwB-l9k0.cjs.map → boolean-display-CPX7H39m.cjs.map} +1 -1
- package/dist/{currency-display-CEg_HRYv.mjs → currency-display-CanjOswc.mjs} +2 -2
- package/dist/{currency-display-CEg_HRYv.mjs.map → currency-display-CanjOswc.mjs.map} +1 -1
- package/dist/{currency-display-Buxc6Ph5.cjs → currency-display-xxK62yo4.cjs} +2 -2
- package/dist/{currency-display-Buxc6Ph5.cjs.map → currency-display-xxK62yo4.cjs.map} +1 -1
- package/dist/data-display/statistic.cjs +1 -1
- package/dist/data-display/statistic.cjs.map +1 -1
- package/dist/data-display/statistic.mjs +1 -1
- package/dist/data-display/statistic.mjs.map +1 -1
- package/dist/date-display-DMPhFq8v.cjs +2 -0
- package/dist/date-display-DMPhFq8v.cjs.map +1 -0
- package/dist/date-display-YE8NIIrl.mjs +2 -0
- package/dist/date-display-YE8NIIrl.mjs.map +1 -0
- package/dist/{description-display-CW0g3aJa.mjs → description-display-B4KoH6ql.mjs} +2 -2
- package/dist/{description-display-CW0g3aJa.mjs.map → description-display-B4KoH6ql.mjs.map} +1 -1
- package/dist/{description-display-BR8nXqc_.cjs → description-display-jmAaeMBD.cjs} +2 -2
- package/dist/{description-display-BR8nXqc_.cjs.map → description-display-jmAaeMBD.cjs.map} +1 -1
- package/dist/detail-dialog-BCM0iEXQ.cjs +2 -0
- package/dist/detail-dialog-BCM0iEXQ.cjs.map +1 -0
- package/dist/detail-dialog-DwfTi9Fl.mjs +2 -0
- package/dist/detail-dialog-DwfTi9Fl.mjs.map +1 -0
- package/dist/dialogs/detail-dialog/index.cjs +1 -1
- package/dist/dialogs/detail-dialog/index.d.cts +1 -1
- package/dist/dialogs/detail-dialog/index.d.mts +1 -1
- package/dist/dialogs/detail-dialog/index.mjs +1 -1
- package/dist/{email-display-DqKYq0iM.cjs → email-display-CzvqQMhG.cjs} +2 -2
- package/dist/{email-display-DqKYq0iM.cjs.map → email-display-CzvqQMhG.cjs.map} +1 -1
- package/dist/{email-display-BKcoWmPK.mjs → email-display-D_k7AUmp.mjs} +2 -2
- package/dist/{email-display-BKcoWmPK.mjs.map → email-display-D_k7AUmp.mjs.map} +1 -1
- package/dist/features/descriptions/index.cjs +1 -1
- package/dist/features/descriptions/index.cjs.map +1 -1
- package/dist/features/descriptions/index.mjs +1 -1
- package/dist/features/descriptions/index.mjs.map +1 -1
- package/dist/features/file-icons/index.cjs +2 -0
- package/dist/features/file-icons/index.cjs.map +1 -0
- package/dist/features/file-icons/index.d.cts +34 -0
- package/dist/features/file-icons/index.d.mts +34 -0
- package/dist/features/file-icons/index.mjs +2 -0
- package/dist/features/file-icons/index.mjs.map +1 -0
- package/dist/features/tables/index.cjs +1 -1
- package/dist/features/tables/index.mjs +1 -1
- package/dist/{filter-DqedvThM.cjs → filter-B5EnnL9I.cjs} +2 -2
- package/dist/{filter-DqedvThM.cjs.map → filter-B5EnnL9I.cjs.map} +1 -1
- package/dist/{filter-CWuRGTl4.mjs → filter-BCNjqiBx.mjs} +2 -2
- package/dist/{filter-CWuRGTl4.mjs.map → filter-BCNjqiBx.mjs.map} +1 -1
- package/dist/{index-BOifmu0V.d.cts → index-BXqx1kOJ.d.cts} +4 -2
- package/dist/{index-BOifmu0V.d.mts → index-BXqx1kOJ.d.mts} +4 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/list-display-DPxZ_Jbf.cjs +2 -0
- package/dist/list-display-DPxZ_Jbf.cjs.map +1 -0
- package/dist/list-display-M43N3kle.mjs +2 -0
- package/dist/list-display-M43N3kle.mjs.map +1 -0
- package/dist/{name-display-B-FtblLL.cjs → name-display-BJ1wPUnS.cjs} +2 -2
- package/dist/{name-display-B-FtblLL.cjs.map → name-display-BJ1wPUnS.cjs.map} +1 -1
- package/dist/{name-display-CB9XAhXP.mjs → name-display-pWhLLS05.mjs} +2 -2
- package/dist/{name-display-CB9XAhXP.mjs.map → name-display-pWhLLS05.mjs.map} +1 -1
- package/dist/{permalink-I-INEarM.mjs → permalink-BaMvnKIz.mjs} +2 -2
- package/dist/{permalink-I-INEarM.mjs.map → permalink-BaMvnKIz.mjs.map} +1 -1
- package/dist/{permalink-CUIKG9VA.cjs → permalink-CMcI__V4.cjs} +2 -2
- package/dist/{permalink-CUIKG9VA.cjs.map → permalink-CMcI__V4.cjs.map} +1 -1
- package/dist/{phone-number-DJvfJg1b.cjs → phone-number-F9I9sNLK.cjs} +2 -2
- package/dist/{phone-number-DJvfJg1b.cjs.map → phone-number-F9I9sNLK.cjs.map} +1 -1
- package/dist/{phone-number-Cu7Mnl6J.mjs → phone-number-ao2oCmrO.mjs} +2 -2
- package/dist/{phone-number-Cu7Mnl6J.mjs.map → phone-number-ao2oCmrO.mjs.map} +1 -1
- package/dist/{progress-display-DbfN7U8m.cjs → progress-display-F8xXJ3T1.cjs} +2 -2
- package/dist/{progress-display-DbfN7U8m.cjs.map → progress-display-F8xXJ3T1.cjs.map} +1 -1
- package/dist/{progress-display-qgvclwy9.mjs → progress-display-atwRFD6e.mjs} +2 -2
- package/dist/{progress-display-qgvclwy9.mjs.map → progress-display-atwRFD6e.mjs.map} +1 -1
- package/dist/{statistic-LL4uHlRb.cjs → statistic-B9OqfhOl.cjs} +2 -2
- package/dist/{statistic-LL4uHlRb.cjs.map → statistic-B9OqfhOl.cjs.map} +1 -1
- package/dist/{statistic-ClkqqDfk.mjs → statistic-CJVc9sNs.mjs} +2 -2
- package/dist/{statistic-ClkqqDfk.mjs.map → statistic-CJVc9sNs.mjs.map} +1 -1
- package/dist/{status-display-BUphOF18.mjs → status-display-DInGGgiP.mjs} +2 -2
- package/dist/{status-display-BUphOF18.mjs.map → status-display-DInGGgiP.mjs.map} +1 -1
- package/dist/{status-display-o9inMVvb.cjs → status-display-DpKsYvZJ.cjs} +2 -2
- package/dist/{status-display-o9inMVvb.cjs.map → status-display-DpKsYvZJ.cjs.map} +1 -1
- package/dist/{summary-bar-Mb1B9Dnf.cjs → summary-bar-DKZh-VSB.cjs} +2 -2
- package/dist/{summary-bar-Mb1B9Dnf.cjs.map → summary-bar-DKZh-VSB.cjs.map} +1 -1
- package/dist/{summary-bar-CYfgdxrQ.mjs → summary-bar-DX_sOiuL.mjs} +2 -2
- package/dist/{summary-bar-CYfgdxrQ.mjs.map → summary-bar-DX_sOiuL.mjs.map} +1 -1
- package/dist/{tables-BGzwkdFO.mjs → tables-7_KgoyS-.mjs} +2 -2
- package/dist/{tables-BGzwkdFO.mjs.map → tables-7_KgoyS-.mjs.map} +1 -1
- package/dist/{tables-078i-X0d.cjs → tables-CS3NhgTc.cjs} +2 -2
- package/dist/{tables-078i-X0d.cjs.map → tables-CS3NhgTc.cjs.map} +1 -1
- package/dist/{tooltip-BcfELg8e.cjs → tooltip-BcQG6Zw9.cjs} +2 -2
- package/dist/{tooltip-BcfELg8e.cjs.map → tooltip-BcQG6Zw9.cjs.map} +1 -1
- package/dist/{tooltip-TGmzPdoR.mjs → tooltip-C6flMQgc.mjs} +2 -2
- package/dist/{tooltip-TGmzPdoR.mjs.map → tooltip-C6flMQgc.mjs.map} +1 -1
- package/dist/ui/file-uploader.cjs +2 -2
- package/dist/ui/file-uploader.cjs.map +1 -1
- package/dist/ui/file-uploader.mjs +2 -2
- package/dist/ui/file-uploader.mjs.map +1 -1
- package/package.json +5 -1
- package/dist/date-display-BgI7Wjqf.cjs +0 -2
- package/dist/date-display-BgI7Wjqf.cjs.map +0 -1
- package/dist/date-display-DGfHQhpu.mjs +0 -2
- package/dist/date-display-DGfHQhpu.mjs.map +0 -1
- package/dist/detail-dialog-Ct0vAjFe.mjs +0 -2
- package/dist/detail-dialog-Ct0vAjFe.mjs.map +0 -1
- package/dist/detail-dialog-uN5mrCa7.cjs +0 -2
- package/dist/detail-dialog-uN5mrCa7.cjs.map +0 -1
- package/dist/list-display-BRJVmji0.cjs +0 -2
- package/dist/list-display-BRJVmji0.cjs.map +0 -1
- package/dist/list-display-Co94sV4H.mjs +0 -2
- package/dist/list-display-Co94sV4H.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detail-dialog-uN5mrCa7.cjs","names":["Flex","Suspense","Skeleton","DetailDialogSidebarTrigger","Suspense","Title","CalendarIcon","DateDisplay","useSidebarState","SidebarContext","TooltipProvider","SIDEBAR_WIDTH","SIDEBAR_WIDTH_ICON","Sidebar","DetailDialogSidebarHeader","DetailDialogSidebarMenu","DetailDialogSidebarMenuItem","DetailDialogSidebarMenuButton","LunasLogo","DetailDialogSidebarContent","DetailDialogSidebarFooter","DialogPrimitive","XIcon"],"sources":["../packages/components/dialogs/detail-dialog/components/content.tsx","../packages/components/dialogs/detail-dialog/components/header.tsx","../packages/components/dialogs/detail-dialog/components/provider.tsx","../packages/components/dialogs/detail-dialog/components/sidebar-panel.tsx","../packages/components/dialogs/detail-dialog/components/wrapper.tsx","../packages/components/dialogs/detail-dialog/index.tsx"],"sourcesContent":["'use client';\n\nimport { Suspense } from 'react';\n\nimport { Flex } from '@/components/layouts/flex';\n\nexport type DetailDialogContentProps = React.PropsWithChildren<{\n /** When `true`, replaces the content with a centered loading spinner. */\n isLoading?: boolean;\n}>;\n\nfunction DetailDialogLoader() {\n return (\n <Flex justify=\"center\" className=\"inset-shadow-sm min-h-0 bg-muted-muted\">\n <div className=\"loader\" />\n </Flex>\n );\n}\n\nexport function DetailDialogContent({ isLoading, children }: DetailDialogContentProps) {\n return (\n <main data-slot=\"detail-dialog-main\" className=\"@container col-start-2 row-start-2 grid min-h-0 min-w-0 grid-rows-1\">\n {isLoading ? (\n <DetailDialogLoader />\n ) : (\n <Suspense fallback={<DetailDialogLoader />}>\n <section data-slot=\"detail-dialog-body\" className=\"relative inset-shadow-sm grid min-h-0 snap-y grid-cols-1 overflow-y-auto bg-white\">\n {children}\n </section>\n </Suspense>\n )}\n </main>\n );\n}\n","'use client';\n\nimport { Suspense } from 'react';\n\nimport { CalendarIcon } from 'lucide-react';\n\nimport { Skeleton } from '@/components/ui/skeleton';\n\nimport { DateDisplay } from '@/components/data-display/date';\nimport { Title } from '@/components/typography/title';\nimport { DetailDialogSidebarTrigger } from './sidebar-core';\n\nexport type DetailDialogHeaderProps = {\n /** Primary title displayed in the dialog header. */\n title?: string;\n /** ISO string, `Date` object, or Unix timestamp shown as a formatted creation date below the title. */\n createdAt?: string | Date | number | null;\n /** Custom content replacing the default title/date block, e.g. for consumer-specific headers. Suspense-wrapped. */\n headerComponent?: React.ReactNode;\n};\n\nfunction DetailDialogHeaderSkeleton() {\n return (\n <div data-slot=\"detail-dialog-header-skeleton\" className=\"grid justify-items-start gap-1.5\">\n <Skeleton className=\"h-5 w-40\" />\n <Skeleton className=\"h-3 w-24\" />\n </div>\n );\n}\n\nexport function DetailDialogHeader({ title, createdAt, headerComponent }: DetailDialogHeaderProps) {\n return (\n <header\n data-slot=\"detail-dialog-header\"\n className=\"col-start-2 row-start-1 grid grid-cols-[auto_1fr] items-start gap-x-2.5 border-border-weak border-b bg-card py-2.5 pr-12 pl-2\"\n >\n <DetailDialogSidebarTrigger />\n <div data-slot=\"detail-dialog-header-content\" className=\"min-w-0 overflow-x-auto\">\n <Suspense fallback={<DetailDialogHeaderSkeleton />}>\n {headerComponent ?? (\n <div className=\"grid justify-items-start gap-0\">\n <Title level={5} className=\"line-clamp-1 truncate text-wrap\">\n {title || 'Detail Dialog'}\n </Title>\n {!!createdAt && (\n <div className=\"relative grid grid-flow-col items-center gap-1 text-text-positive-weak\">\n <CalendarIcon size={12} className=\"text-primary-strong\" />\n <p className=\"text-primary-strong text-xs\">Ngày Tạo</p>\n <DateDisplay showHoliday date={createdAt} format=\"medium\" />\n </div>\n )}\n </div>\n )}\n </Suspense>\n </div>\n </header>\n );\n}\n","'use client';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { TooltipProvider } from '@/components/ui/tooltip';\n\nimport { SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SidebarContext, useSidebarState } from './sidebar-core';\n\n/**\n * Context provider for `DetailDialog`'s sidebar/header/content grid shell. Manages sidebar\n * open/collapsed state (persisted via a cookie, shared with `SidebarProvider` via\n * `useSidebarState`) and renders the 2x2 grid wrapper — sidebar spanning both rows in column 1,\n * header/content in column 2. DetailDialog-specific, not a standalone-reusable provider like\n * `./sidebar-core`'s `SidebarProvider`.\n */\nexport function DetailDialogProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n /** Whether the sidebar is open by default (uncontrolled). Defaults to `true`. */\n defaultOpen?: boolean;\n /** Controlled open state. When provided the component becomes controlled. */\n open?: boolean;\n /** Callback fired when the open state changes in controlled mode. */\n onOpenChange?: (open: boolean) => void;\n}) {\n const contextValue = useSidebarState({ defaultOpen, open: openProp, onOpenChange: setOpenProp });\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"detail-dialog-wrapper\"\n style={{ '--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON, ...style } as React.CSSProperties}\n className={cn('group/sidebar-wrapper size-full min-h-[85dvh]', 'grid grid-cols-[auto_1fr] grid-rows-[auto_1fr]', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n","'use client';\n\nimport { LunasLogo } from '@/components/features/logo';\n\nimport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n Sidebar,\n} from './sidebar-core';\n\nexport type DetailDialogSidebarPanelProps = {\n /** Title shown in the collapsible sidebar header. Defaults to `'Detail Dialog'`. */\n title?: string;\n /** Title shown in the collapsible sidebar header. Defaults to `'Detail Dialog'`. */\n sidebarTitle?: string;\n /** Arbitrary content rendered inside the sidebar scrollable area. */\n content?: React.ReactNode;\n /** Arbitrary content rendered at the bottom of the sidebar footer. */\n footer?: React.ReactNode;\n};\n\nexport function DetailDialogSidebarPanel({ title, sidebarTitle, content, footer }: DetailDialogSidebarPanelProps) {\n return (\n <div className=\"col-start-1 row-span-2 row-start-1\">\n <Sidebar>\n <DetailDialogSidebarHeader>\n <DetailDialogSidebarMenu>\n <DetailDialogSidebarMenuItem>\n <DetailDialogSidebarMenuButton size=\"lg\" tabIndex={-1}>\n <LunasLogo variant=\"icon\" iconStyle=\"solid\" size=\"md\" className=\"size-8 min-h-8 min-w-8\" />\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{sidebarTitle || 'Detail Dialog'}</span>\n <span className=\"truncate text-xs\">Lunas Enterprise</span>\n </div>\n </DetailDialogSidebarMenuButton>\n </DetailDialogSidebarMenuItem>\n </DetailDialogSidebarMenu>\n </DetailDialogSidebarHeader>\n <DetailDialogSidebarContent>{content}</DetailDialogSidebarContent>\n <DetailDialogSidebarFooter>{footer}</DetailDialogSidebarFooter>\n </Sidebar>\n </div>\n );\n}\n","'use client';\n\nimport { useCallback } from 'react';\n\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@customafk/react-toolkit/utils';\n\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nexport type DetailDialogWrapperProps = React.PropsWithChildren<{\n /** Controls whether the dialog is open. */\n open?: boolean;\n /** Callback invoked when the dialog open state changes. */\n onOpenChange?: (open: boolean) => void;\n}>;\n\n/**\n * Outer Radix Dialog scaffolding for `DetailDialog` — Root, Portal, Overlay (scrollable,\n * min-width/min-height-safe centering), Content (the dialog card), and the close button.\n * `children` render inside Content, alongside `DetailDialogProvider`'s grid shell.\n */\nexport function DetailDialogWrapper({ open, onOpenChange, children }: DetailDialogWrapperProps) {\n const handleInteractOutside = useCallback<NonNullable<React.ComponentProps<typeof DialogPrimitive.Content>['onInteractOutside']>>(event => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n return (\n <DialogPrimitive.Root data-slot=\"detail-dialog\" open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal data-slot=\"detail-dialog-portal\">\n <DialogPrimitive.Overlay\n data-slot=\"detail-dialog-overlay\"\n className=\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 flex overflow-auto bg-black/50 p-4 data-[state=closed]:animate-out data-[state=open]:animate-in supports-backdrop-filter:backdrop-blur-xs\"\n >\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'relative z-50 m-auto grid',\n 'gap-4 overflow-hidden rounded-sm border-none bg-background p-0 shadow-dialog outline-none duration-200',\n 'size-full max-h-dvh min-h-160 min-w-264 max-w-svw',\n 'data-[state=closed]:animate-out data-[state=open]:animate-in',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-80 data-[state=open]:zoom-in-80'\n )}\n onInteractOutside={handleInteractOutside}\n >\n {children}\n\n <DialogPrimitive.Close data-slot=\"dialog-close\" tabIndex={-1} asChild className=\"absolute top-3 right-3\">\n <button className=\"flex cursor-pointer items-center justify-center rounded-full p-2 text-text-positive-weak transition-colors hover:bg-muted-muted hover:text-text-positive active:bg-muted-weak active:text-text-positive-strong disabled:pointer-events-none disabled:opacity-60\">\n <XIcon size={24} />\n </button>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Overlay>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n}\n","'use client';\n\nimport { DetailDialogContent } from './components/content';\nimport { DetailDialogHeader } from './components/header';\nimport { DetailDialogProvider } from './components/provider';\nimport { DetailDialogSidebarPanel, type DetailDialogSidebarPanelProps } from './components/sidebar-panel';\nimport { DetailDialogWrapper } from './components/wrapper';\n\nexport type DetailDialogProps = {\n /** Controls whether the dialog is open. */\n open?: boolean;\n /** When `true`, replaces the main content area with a centered loading spinner. */\n isLoading?: boolean;\n /** Primary title displayed in the dialog header. */\n title?: string;\n /** ISO string, `Date` object, or Unix timestamp shown as a formatted creation date below the title. */\n createdAt?: string | Date | number | null;\n /** Optional sidebar configuration — title, body content, and footer content. */\n sidebar?: DetailDialogSidebarPanelProps;\n /** Custom content replacing the default title/date block in the header. Suspense-wrapped. */\n headerComponent?: React.ReactNode;\n /** Callback invoked when the dialog open state changes. */\n onOpenChange?: (open: boolean) => void;\n};\n\n/**\n * Full-screen detail dialog with a collapsible sidebar, a header with creation date, and a scrollable content area.\n *\n * @example\n * ```tsx\n * import { DetailDialog } from '@customafk/lunas-ui/dialogs/detail-dialog';\n *\n * <DetailDialog\n * open={open}\n * title=\"Order #1234\"\n * createdAt=\"2024-01-15T09:00:00Z\"\n * sidebar={{ title: 'Navigation', content: <nav>...</nav> }}\n * onOpenChange={setOpen}\n * >\n * <p>Detail content goes here.</p>\n * </DetailDialog>\n * ```\n */\nexport const DetailDialog: React.FC<React.PropsWithChildren<DetailDialogProps>> = ({\n open,\n isLoading,\n title,\n createdAt,\n onOpenChange,\n sidebar,\n headerComponent,\n children,\n}) => {\n return (\n <DetailDialogWrapper open={open} onOpenChange={onOpenChange}>\n <DetailDialogProvider>\n <DetailDialogSidebarPanel title={sidebar?.title} content={sidebar?.content} footer={sidebar?.footer} />\n <DetailDialogHeader title={title} createdAt={createdAt} headerComponent={headerComponent} />\n <DetailDialogContent isLoading={isLoading}>{children}</DetailDialogContent>\n </DetailDialogProvider>\n </DetailDialogWrapper>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("./ui/tooltip.cjs"),t=require("./tables-078i-X0d.cjs");let n=require("react/jsx-runtime");const r=({items:r,maxVisible:i=3})=>{if(!r||r.length===0)return(0,n.jsx)(t.Q,{});let a=r.slice(0,i),o=r.slice(i);return(0,n.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[a.map((e,t)=>(0,n.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-border bg-muted-weak px-2 py-0.5 text-text-positive text-xs`,children:e},t)),o.length>0&&(0,n.jsx)(e.TooltipProvider,{children:(0,n.jsxs)(e.Tooltip,{children:[(0,n.jsx)(e.TooltipTrigger,{asChild:!0,children:(0,n.jsxs)(`span`,{className:`inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs`,children:[`+`,o.length,` more`]})}),(0,n.jsx)(e.TooltipContent,{align:`start`,className:`flex max-w-64 flex-wrap gap-1 p-2`,children:o.map((e,t)=>(0,n.jsx)(`span`,{className:`inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs`,children:e},t))})]})})]})};exports.UITableListDisplay=r;
|
|
2
|
-
//# sourceMappingURL=list-display-BRJVmji0.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-display-BRJVmji0.cjs","names":["UITableEmpty","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"sources":["../packages/components/features/tables/components/atoms/list-display.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableListDisplay} component. */\ntype Props = {\n /** Array of strings or numbers to render as inline pills. */\n items: (string | number)[] | null | undefined;\n /**\n * Maximum number of pills shown before a `+N more` overflow badge appears\n * (default: `3`).\n */\n maxVisible?: number;\n};\n\n/**\n * Renders an array of values as compact inline pills in a table cell. When the\n * list exceeds `maxVisible`, a `+N more` badge is shown; hovering it reveals all\n * remaining items in a tooltip. Renders {@link UITableEmpty} for empty or absent\n * arrays.\n *\n * @example\n * import { UITableListDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableListDisplay items={['React', 'TypeScript', 'TailwindCSS', 'Vite']} maxVisible={3} />\n */\nexport const UITableListDisplay: React.FC<Props> = ({ items, maxVisible = 3 }) => {\n if (!items || items.length === 0) return <UITableEmpty />;\n\n const visible = items.slice(0, maxVisible);\n const overflow = items.slice(maxVisible);\n\n return (\n <div className=\"flex flex-wrap gap-1\">\n {visible.map((item, i) => (\n <span key={i} className=\"inline-flex items-center rounded-full border border-border bg-muted-weak px-2 py-0.5 text-text-positive text-xs\">\n {item}\n </span>\n ))}\n\n {overflow.length > 0 && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs\">\n +{overflow.length} more\n </span>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"flex max-w-64 flex-wrap gap-1 p-2\">\n {overflow.map((item, i) => (\n <span key={i} className=\"inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs\">\n {item}\n </span>\n ))}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n );\n};\n"],"mappings":"0GA2BA,MAAa,GAAuC,CAAE,QAAO,aAAa,KAAQ,CAChF,GAAI,CAAC,GAAS,EAAM,SAAW,EAAG,OAAO,EAAA,EAAA,IAAA,CAACA,EAAAA,EAAD,CAAe,CAAA,EAExD,IAAM,EAAU,EAAM,MAAM,EAAG,CAAU,EACnC,EAAW,EAAM,MAAM,CAAU,EAEvC,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,uBAAf,SAAA,CACG,EAAQ,KAAK,EAAM,KAClB,EAAA,EAAA,IAAA,CAAC,OAAD,CAAc,UAAU,kHACrB,SAAA,CACG,EAFK,CAEL,CACP,EAEA,EAAS,OAAS,IACjB,EAAA,EAAA,IAAA,CAACC,EAAAA,gBAAD,CAAA,UACE,EAAA,EAAA,KAAA,CAACC,EAAAA,QAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,QAAA,GACd,UAAA,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAU,qHAAhB,SAAA,CAAqI,IACjI,EAAS,OAAO,OACd,GACQ,CAAA,GAChB,EAAA,EAAA,IAAA,CAACC,EAAAA,eAAD,CAAgB,MAAM,QAAQ,UAAU,oCACrC,SAAA,EAAS,KAAK,EAAM,KACnB,EAAA,EAAA,IAAA,CAAC,OAAD,CAAc,UAAU,oGACrB,SAAA,CACG,EAFK,CAEL,CACP,CACa,CAAA,CACT,CAAA,CAAA,CACM,CAAA,CAEhB,GAET"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{Tooltip as e,TooltipContent as t,TooltipProvider as n,TooltipTrigger as r}from"./ui/tooltip.mjs";import{Q as i}from"./tables-BGzwkdFO.mjs";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=({items:s,maxVisible:c=3})=>{if(!s||s.length===0)return a(i,{});let l=s.slice(0,c),u=s.slice(c);return o(`div`,{className:`flex flex-wrap gap-1`,children:[l.map((e,t)=>a(`span`,{className:`inline-flex items-center rounded-full border border-border bg-muted-weak px-2 py-0.5 text-text-positive text-xs`,children:e},t)),u.length>0&&a(n,{children:o(e,{children:[a(r,{asChild:!0,children:o(`span`,{className:`inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs`,children:[`+`,u.length,` more`]})}),a(t,{align:`start`,className:`flex max-w-64 flex-wrap gap-1 p-2`,children:u.map((e,t)=>a(`span`,{className:`inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs`,children:e},t))})]})})]})};export{s as UITableListDisplay};
|
|
2
|
-
//# sourceMappingURL=list-display-Co94sV4H.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-display-Co94sV4H.mjs","names":[],"sources":["../packages/components/features/tables/components/atoms/list-display.tsx"],"sourcesContent":["'use client';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { UITableEmpty } from './empty';\n\n/** Props for the {@link UITableListDisplay} component. */\ntype Props = {\n /** Array of strings or numbers to render as inline pills. */\n items: (string | number)[] | null | undefined;\n /**\n * Maximum number of pills shown before a `+N more` overflow badge appears\n * (default: `3`).\n */\n maxVisible?: number;\n};\n\n/**\n * Renders an array of values as compact inline pills in a table cell. When the\n * list exceeds `maxVisible`, a `+N more` badge is shown; hovering it reveals all\n * remaining items in a tooltip. Renders {@link UITableEmpty} for empty or absent\n * arrays.\n *\n * @example\n * import { UITableListDisplay } from '@customafk/lunas-ui/features/tables';\n *\n * <UITableListDisplay items={['React', 'TypeScript', 'TailwindCSS', 'Vite']} maxVisible={3} />\n */\nexport const UITableListDisplay: React.FC<Props> = ({ items, maxVisible = 3 }) => {\n if (!items || items.length === 0) return <UITableEmpty />;\n\n const visible = items.slice(0, maxVisible);\n const overflow = items.slice(maxVisible);\n\n return (\n <div className=\"flex flex-wrap gap-1\">\n {visible.map((item, i) => (\n <span key={i} className=\"inline-flex items-center rounded-full border border-border bg-muted-weak px-2 py-0.5 text-text-positive text-xs\">\n {item}\n </span>\n ))}\n\n {overflow.length > 0 && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex cursor-default items-center rounded-full bg-primary-bg-subtle px-2 py-0.5 text-primary-intense text-xs\">\n +{overflow.length} more\n </span>\n </TooltipTrigger>\n <TooltipContent align=\"start\" className=\"flex max-w-64 flex-wrap gap-1 p-2\">\n {overflow.map((item, i) => (\n <span key={i} className=\"inline-flex items-center rounded-full border border-border px-2 py-0.5 text-text-negative text-xs\">\n {item}\n </span>\n ))}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n );\n};\n"],"mappings":"oMA2BA,MAAa,GAAuC,CAAE,QAAO,aAAa,KAAQ,CAChF,GAAI,CAAC,GAAS,EAAM,SAAW,EAAG,OAAO,EAAC,EAAD,CAAe,CAAA,EAExD,IAAM,EAAU,EAAM,MAAM,EAAG,CAAU,EACnC,EAAW,EAAM,MAAM,CAAU,EAEvC,OACE,EAAC,MAAD,CAAK,UAAU,uBAAf,SAAA,CACG,EAAQ,KAAK,EAAM,IAClB,EAAC,OAAD,CAAc,UAAU,kHACrB,SAAA,CACG,EAFK,CAEL,CACP,EAEA,EAAS,OAAS,GACjB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAgB,QAAA,GACd,SAAA,EAAC,OAAD,CAAM,UAAU,qHAAhB,SAAA,CAAqI,IACjI,EAAS,OAAO,OACd,GACQ,CAAA,EAChB,EAAC,EAAD,CAAgB,MAAM,QAAQ,UAAU,oCACrC,SAAA,EAAS,KAAK,EAAM,IACnB,EAAC,OAAD,CAAc,UAAU,oGACrB,SAAA,CACG,EAFK,CAEL,CACP,CACa,CAAA,CACT,CAAA,CAAA,CACM,CAAA,CAEhB,GAET"}
|