@mdigital_ui/ui 0.3.9 → 0.4.1
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/breadcrumbs/index.js +2 -2
- package/dist/{chunk-T7RWQLUB.js → chunk-3BIV3QE2.js} +10 -4
- package/dist/chunk-3BIV3QE2.js.map +1 -0
- package/dist/{chunk-2F5MMMVP.js → chunk-64NHVOZS.js} +3 -3
- package/dist/{chunk-2F5MMMVP.js.map → chunk-64NHVOZS.js.map} +1 -1
- package/dist/{chunk-XWEI3MES.js → chunk-674JC24S.js} +4 -4
- package/dist/chunk-674JC24S.js.map +1 -0
- package/dist/{chunk-C4SHFLFR.js → chunk-CN74CNAN.js} +3 -3
- package/dist/{chunk-C4SHFLFR.js.map → chunk-CN74CNAN.js.map} +1 -1
- package/dist/{chunk-5QQH5LYU.js → chunk-D4SUSZDN.js} +23 -8
- package/dist/chunk-D4SUSZDN.js.map +1 -0
- package/dist/{chunk-CH3YMDCF.js → chunk-G6NVGBYZ.js} +3 -3
- package/dist/{chunk-CH3YMDCF.js.map → chunk-G6NVGBYZ.js.map} +1 -1
- package/dist/{chunk-4F7U5UPY.js → chunk-HUXODBIO.js} +19 -24
- package/dist/chunk-HUXODBIO.js.map +1 -0
- package/dist/chunk-LOYLJRCF.js +485 -0
- package/dist/chunk-LOYLJRCF.js.map +1 -0
- package/dist/{chunk-ZKEDJ536.js → chunk-ON2CMF6J.js} +3 -3
- package/dist/{chunk-ZKEDJ536.js.map → chunk-ON2CMF6J.js.map} +1 -1
- package/dist/{chunk-RPWYIGD3.js → chunk-TLNHWOQQ.js} +3 -3
- package/dist/{chunk-RPWYIGD3.js.map → chunk-TLNHWOQQ.js.map} +1 -1
- package/dist/{chunk-EPE3OODP.js → chunk-UTWQ2FZK.js} +118 -113
- package/dist/chunk-UTWQ2FZK.js.map +1 -0
- package/dist/{chunk-UN3EW2PL.js → chunk-YXLIGJTN.js} +31 -76
- package/dist/chunk-YXLIGJTN.js.map +1 -0
- package/dist/chunk-ZJNGZCRB.js +440 -0
- package/dist/chunk-ZJNGZCRB.js.map +1 -0
- package/dist/command/index.js +2 -2
- package/dist/drawer/index.js +1 -1
- package/dist/dropdown/index.d.ts +3 -3
- package/dist/dropdown/index.d.ts.map +1 -1
- package/dist/dropdown/index.js +1 -1
- package/dist/index.js +14 -14
- package/dist/kbd/index.js +1 -1
- package/dist/modal/index.d.ts +5 -5
- package/dist/modal/index.d.ts.map +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/navigation-menu/index.d.ts +3 -3
- package/dist/navigation-menu/index.d.ts.map +1 -1
- package/dist/navigation-menu/index.js +1 -1
- package/dist/pagination/index.d.ts.map +1 -1
- package/dist/pagination/index.js +1 -1
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +1 -1
- package/dist/slider/types.d.ts +6 -0
- package/dist/slider/types.d.ts.map +1 -1
- package/dist/table/index.js +2 -2
- package/dist/timeline/index.d.ts +3 -10
- package/dist/timeline/index.d.ts.map +1 -1
- package/dist/timeline/index.js +1 -1
- package/dist/timeline/types.d.ts +4 -2
- package/dist/timeline/types.d.ts.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +1 -1
- package/dist/tree-select/index.js +2 -2
- package/package.json +1 -1
- package/styles/global.css +176 -245
- package/dist/chunk-4F7U5UPY.js.map +0 -1
- package/dist/chunk-5QQH5LYU.js.map +0 -1
- package/dist/chunk-EPE3OODP.js.map +0 -1
- package/dist/chunk-FAD45WRP.js +0 -378
- package/dist/chunk-FAD45WRP.js.map +0 -1
- package/dist/chunk-HQLHE5RX.js +0 -297
- package/dist/chunk-HQLHE5RX.js.map +0 -1
- package/dist/chunk-T7RWQLUB.js.map +0 -1
- package/dist/chunk-UN3EW2PL.js.map +0 -1
- package/dist/chunk-XWEI3MES.js.map +0 -1
|
@@ -19,7 +19,7 @@ var paginationVariants = cva("inline-flex items-center gap-1", {
|
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
var paginationItemVariants = cva(
|
|
22
|
-
"inline-flex items-center justify-center rounded-md font-medium outline-none
|
|
22
|
+
"inline-flex items-center justify-center rounded-md font-medium outline-none cursor-pointer border min-w-fit",
|
|
23
23
|
{
|
|
24
24
|
variants: {
|
|
25
25
|
size: {
|
|
@@ -178,30 +178,25 @@ var Pagination = React.memo(
|
|
|
178
178
|
};
|
|
179
179
|
const getPageNumbers = () => {
|
|
180
180
|
const pages = [];
|
|
181
|
-
|
|
182
|
-
if (totalPages <= showPages + 2) {
|
|
181
|
+
if (totalPages <= 7) {
|
|
183
182
|
for (let i = 1; i <= totalPages; i++) {
|
|
184
183
|
pages.push(i);
|
|
185
184
|
}
|
|
185
|
+
} else if (current <= 4) {
|
|
186
|
+
for (let i = 1; i <= 5; i++) pages.push(i);
|
|
187
|
+
pages.push("ellipsis");
|
|
188
|
+
pages.push(totalPages);
|
|
189
|
+
} else if (current >= totalPages - 3) {
|
|
190
|
+
pages.push(1);
|
|
191
|
+
pages.push("ellipsis");
|
|
192
|
+
for (let i = totalPages - 4; i <= totalPages; i++) pages.push(i);
|
|
186
193
|
} else {
|
|
187
194
|
pages.push(1);
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
} else if (current >= totalPages - 2) {
|
|
194
|
-
pages.push("ellipsis");
|
|
195
|
-
for (let i = totalPages - 3; i < totalPages; i++) {
|
|
196
|
-
pages.push(i);
|
|
197
|
-
}
|
|
198
|
-
} else {
|
|
199
|
-
pages.push("ellipsis");
|
|
200
|
-
pages.push(current - 1);
|
|
201
|
-
pages.push(current);
|
|
202
|
-
pages.push(current + 1);
|
|
203
|
-
pages.push("ellipsis");
|
|
204
|
-
}
|
|
195
|
+
pages.push("ellipsis");
|
|
196
|
+
pages.push(current - 1);
|
|
197
|
+
pages.push(current);
|
|
198
|
+
pages.push(current + 1);
|
|
199
|
+
pages.push("ellipsis");
|
|
205
200
|
pages.push(totalPages);
|
|
206
201
|
}
|
|
207
202
|
return pages;
|
|
@@ -292,7 +287,7 @@ var Pagination = React.memo(
|
|
|
292
287
|
"aria-hidden": "true",
|
|
293
288
|
children: /* @__PURE__ */ jsx(MoreHorizontal, { className: iconSizes[size] })
|
|
294
289
|
},
|
|
295
|
-
`
|
|
290
|
+
`slot-${index}`
|
|
296
291
|
) : /* @__PURE__ */ jsx(
|
|
297
292
|
PaginationButton,
|
|
298
293
|
{
|
|
@@ -309,7 +304,7 @@ var Pagination = React.memo(
|
|
|
309
304
|
),
|
|
310
305
|
children: page
|
|
311
306
|
},
|
|
312
|
-
|
|
307
|
+
`slot-${index}`
|
|
313
308
|
)
|
|
314
309
|
),
|
|
315
310
|
/* @__PURE__ */ jsx(
|
|
@@ -425,5 +420,5 @@ Pagination.displayName = "Pagination";
|
|
|
425
420
|
var pagination_default = Pagination;
|
|
426
421
|
|
|
427
422
|
export { pagination_default };
|
|
428
|
-
//# sourceMappingURL=chunk-
|
|
429
|
-
//# sourceMappingURL=chunk-
|
|
423
|
+
//# sourceMappingURL=chunk-HUXODBIO.js.map
|
|
424
|
+
//# sourceMappingURL=chunk-HUXODBIO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/pagination/index.tsx"],"names":[],"mappings":"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","file":"chunk-HUXODBIO.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n MoreHorizontal,\n} from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { useRipple, RippleContainer } from '../hooks/useRipple'\nimport { cn, iconSizes } from '../utils'\nimport type { PaginationProps } from './types'\n\nconst paginationVariants = cva('inline-flex items-center gap-1', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst paginationItemVariants = cva(\n 'inline-flex items-center justify-center rounded-md font-medium outline-none cursor-pointer border min-w-fit',\n {\n variants: {\n size: {\n xs: 'h-6 min-w-6 px-1.5 text-xs',\n sm: 'h-8 min-w-8 px-2 text-sm',\n md: 'h-10 min-w-10 px-3 text-base',\n lg: 'h-12 min-w-12 px-4 text-lg',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n },\n },\n)\n\nconst colorStyles = {\n default: {\n default:\n 'border-border bg-background text-text-primary hover:bg-surface hover:border-text-primary',\n solid: 'border-surface bg-surface text-text-primary hover:bg-surface/80',\n soft: 'border-border bg-surface/50 text-text-primary hover:bg-surface',\n },\n primary: {\n default:\n 'border-border bg-background text-text-primary hover:bg-primary/10 hover:border-primary',\n solid: 'border-primary bg-primary text-background hover:bg-primary/90',\n soft: 'border-primary/30 bg-primary/10 text-primary hover:bg-primary/20',\n },\n secondary: {\n default:\n 'border-border bg-background text-text-primary hover:bg-secondary/10 hover:border-secondary',\n solid:\n 'border-secondary bg-secondary text-background hover:bg-secondary/90',\n soft: 'border-secondary/30 bg-secondary/10 text-secondary hover:bg-secondary/20',\n },\n accent: {\n default:\n 'border-border bg-background text-text-primary hover:bg-accent/10 hover:border-accent',\n solid: 'border-accent bg-accent text-background hover:bg-accent/90',\n soft: 'border-accent/30 bg-accent/10 text-accent hover:bg-accent/20',\n },\n success: {\n default:\n 'border-border bg-background text-text-primary hover:bg-success/10 hover:border-success',\n solid: 'border-success bg-success text-background hover:bg-success/90',\n soft: 'border-success/30 bg-success/10 text-success hover:bg-success/20',\n },\n error: {\n default:\n 'border-border bg-background text-text-primary hover:bg-error/10 hover:border-error',\n solid: 'border-error bg-error text-background hover:bg-error/90',\n soft: 'border-error/30 bg-error/10 text-error hover:bg-error/20',\n },\n warning: {\n default:\n 'border-border bg-background text-text-primary hover:bg-warning/10 hover:border-warning',\n solid: 'border-warning bg-warning text-background hover:bg-warning/90',\n soft: 'border-warning/30 bg-warning/10 text-warning hover:bg-warning/20',\n },\n info: {\n default:\n 'border-border bg-background text-text-primary hover:bg-info/10 hover:border-info',\n solid: 'border-info bg-info text-background hover:bg-info/90',\n soft: 'border-info/30 bg-info/10 text-info hover:bg-info/20',\n },\n}\n\nconst activeColorStyles = {\n default: {\n default: 'border-text-primary bg-surface text-text-primary',\n solid: 'border-border bg-surface text-text-primary',\n soft: 'border-border bg-surface text-text-primary',\n },\n primary: {\n default: 'border-primary bg-primary/10 text-primary',\n solid: 'border-primary bg-primary-hover text-background',\n soft: 'border-primary bg-primary/20 text-primary',\n },\n secondary: {\n default: 'border-secondary bg-secondary/10 text-secondary',\n solid: 'border-secondary bg-secondary text-background',\n soft: 'border-secondary bg-secondary/20 text-secondary',\n },\n accent: {\n default: 'border-accent bg-accent/10 text-accent',\n solid: 'border-accent bg-accent text-background',\n soft: 'border-accent bg-accent/20 text-accent',\n },\n success: {\n default: 'border-success bg-success/10 text-success',\n solid: 'border-success bg-success text-background',\n soft: 'border-success bg-success/20 text-success',\n },\n error: {\n default: 'border-error bg-error/10 text-error',\n solid: 'border-error bg-error text-background',\n soft: 'border-error bg-error/20 text-error',\n },\n warning: {\n default: 'border-warning bg-warning/10 text-warning',\n solid: 'border-warning bg-warning text-background',\n soft: 'border-warning bg-warning/20 text-warning',\n },\n info: {\n default: 'border-info bg-info/10 text-info',\n solid: 'border-info bg-info text-background',\n soft: 'border-info bg-info/20 text-info',\n },\n}\n\nconst PaginationButton: React.FC<{ children: React.ReactNode; disabled?: boolean; className?: string; [key: string]: any }> = ({ children, disabled, className, ...props }) => {\n const { ripples, onPointerDown, onKeyDown, onAnimationEnd } = useRipple(!disabled)\n return (\n <button className={cn(className, 'relative overflow-hidden')} onPointerDown={onPointerDown} onKeyDown={onKeyDown} disabled={disabled} {...props}>\n {children}\n <RippleContainer ripples={ripples} onAnimationEnd={onAnimationEnd} />\n </button>\n )\n}\n\nconst Pagination = React.memo<PaginationProps>(\n ({\n total,\n current: controlledCurrent,\n defaultCurrent = 1,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n onChange,\n onShowSizeChange,\n color = 'default',\n size = 'md',\n variant = 'default',\n showSizeChanger = false,\n pageSizeOptions = [10, 20, 50, 100],\n showQuickJumper = false,\n showFirstLastButtons = false,\n showTotal,\n disabled = false,\n className,\n classNames,\n }) => {\n const [internalCurrent, setInternalCurrent] = useState(defaultCurrent)\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize)\n\n const current =\n controlledCurrent !== undefined ? controlledCurrent : internalCurrent\n const pageSize =\n controlledPageSize !== undefined ? controlledPageSize : internalPageSize\n const totalPages = Math.ceil(total / pageSize)\n\n const handlePageChange = (page: number) => {\n if (disabled || page === current || page < 1 || page > totalPages) return\n\n if (controlledCurrent === undefined) {\n setInternalCurrent(page)\n }\n onChange?.(page, pageSize)\n }\n\n const handlePageSizeChange = (newSize: number) => {\n if (disabled) return\n\n const newTotalPages = Math.ceil(total / newSize)\n const newCurrent = current > newTotalPages ? newTotalPages : current\n\n if (controlledPageSize === undefined) {\n setInternalPageSize(newSize)\n }\n if (controlledCurrent === undefined && newCurrent !== current) {\n setInternalCurrent(newCurrent)\n }\n\n onShowSizeChange?.(newCurrent, newSize)\n onChange?.(newCurrent, newSize)\n }\n\n const getPageNumbers = () => {\n const pages: (number | 'ellipsis')[] = []\n\n if (totalPages <= 7) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i)\n }\n } else if (current <= 4) {\n // Near start: always 7 items [1, 2, 3, 4, 5, ..., last]\n for (let i = 1; i <= 5; i++) pages.push(i)\n pages.push('ellipsis')\n pages.push(totalPages)\n } else if (current >= totalPages - 3) {\n // Near end: always 7 items [1, ..., last-4, last-3, last-2, last-1, last]\n pages.push(1)\n pages.push('ellipsis')\n for (let i = totalPages - 4; i <= totalPages; i++) pages.push(i)\n } else {\n // Middle: always 7 items [1, ..., c-1, c, c+1, ..., last]\n pages.push(1)\n pages.push('ellipsis')\n pages.push(current - 1)\n pages.push(current)\n pages.push(current + 1)\n pages.push('ellipsis')\n pages.push(totalPages)\n }\n\n return pages\n }\n\n const range: [number, number] = [\n (current - 1) * pageSize + 1,\n Math.min(current * pageSize, total),\n ]\n\n return (\n <div\n className={cn(\n 'pagination_root',\n 'flex items-center gap-4',\n classNames?.root,\n className,\n )}\n >\n {showTotal && (\n <div\n className={cn(\n 'pagination_info',\n 'text-text-secondary text-sm',\n classNames?.info,\n )}\n >\n {showTotal(total, range)}\n </div>\n )}\n\n <div\n className={cn(\n 'pagination_list',\n paginationVariants({ size }),\n classNames?.list,\n )}\n >\n {/* First Page Button */}\n {showFirstLastButtons && (\n <PaginationButton\n type=\"button\"\n onClick={() => handlePageChange(1)}\n disabled={disabled || current === 1}\n className={cn(\n 'pagination_button',\n paginationItemVariants({\n size,\n disabled: disabled || current === 1,\n }),\n colorStyles[color][variant],\n classNames?.button,\n )}\n aria-label=\"First page\"\n >\n <ChevronsLeft className={iconSizes[size]} />\n </PaginationButton>\n )}\n\n {/* Previous Button */}\n <PaginationButton\n type=\"button\"\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n className={cn(\n 'pagination_button',\n paginationItemVariants({\n size,\n disabled: disabled || current === 1,\n }),\n colorStyles[color][variant],\n classNames?.button,\n )}\n aria-label=\"Previous page\"\n >\n <ChevronLeft className={iconSizes[size]} />\n </PaginationButton>\n\n {/* Page Numbers */}\n {getPageNumbers().map((page, index) =>\n page === 'ellipsis' ? (\n <span\n key={`slot-${index}`}\n className={cn(\n 'pagination_ellipsis',\n paginationItemVariants({ size, disabled: false }),\n colorStyles[color]['soft'],\n 'border-none pointer-events-none',\n classNames?.ellipsis,\n )}\n aria-hidden=\"true\"\n >\n <MoreHorizontal className={iconSizes[size]} />\n </span>\n ) : (\n <PaginationButton\n type=\"button\"\n key={`slot-${index}`}\n onClick={() => handlePageChange(page)}\n disabled={disabled}\n aria-label={`Go to page ${page}`}\n aria-current={current === page ? 'page' : undefined}\n className={cn(\n 'pagination_button',\n paginationItemVariants({ size, disabled }),\n current === page\n ? activeColorStyles[color][variant]\n : colorStyles[color][variant],\n current === page ? classNames?.buttonActive : classNames?.button,\n )}\n >\n {page}\n </PaginationButton>\n ),\n )}\n\n {/* Next Button */}\n <PaginationButton\n type=\"button\"\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n className={cn(\n 'pagination_button',\n paginationItemVariants({\n size,\n disabled: disabled || current === totalPages,\n }),\n colorStyles[color][variant],\n classNames?.button,\n )}\n aria-label=\"Next page\"\n >\n <ChevronRight className={iconSizes[size]} />\n </PaginationButton>\n\n {/* Last Page Button */}\n {showFirstLastButtons && (\n <PaginationButton\n type=\"button\"\n onClick={() => handlePageChange(totalPages)}\n disabled={disabled || current === totalPages}\n className={cn(\n 'pagination_button',\n paginationItemVariants({\n size,\n disabled: disabled || current === totalPages,\n }),\n colorStyles[color][variant],\n classNames?.button,\n )}\n aria-label=\"Last page\"\n >\n <ChevronsRight className={iconSizes[size]} />\n </PaginationButton>\n )}\n </div>\n\n {/* Page Size Changer */}\n {showSizeChanger && (\n <select\n value={pageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n disabled={disabled}\n aria-label=\"Items per page\"\n className={cn(\n paginationItemVariants({ size, disabled }),\n colorStyles[color][variant],\n 'cursor-pointer',\n )}\n >\n {pageSizeOptions.map((option) => (\n <option\n key={option}\n value={option}\n >\n {option} / page\n </option>\n ))}\n </select>\n )}\n\n {/* Quick Jumper */}\n {showQuickJumper && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-text-secondary text-sm\">Go to</span>\n <input\n type=\"number\"\n min={1}\n max={totalPages}\n disabled={disabled}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n const inputEl = e.target as HTMLInputElement\n const value = parseInt(inputEl.value)\n if (!isNaN(value)) {\n const clampedValue = Math.max(1, Math.min(totalPages, value))\n handlePageChange(clampedValue)\n inputEl.value = ''\n }\n }\n }}\n onBlur={(e) => {\n const inputEl = e.target as HTMLInputElement\n const value = parseInt(inputEl.value)\n if (!isNaN(value) && inputEl.value !== '') {\n const clampedValue = Math.max(1, Math.min(totalPages, value))\n if (clampedValue !== value) {\n inputEl.value = String(clampedValue)\n }\n }\n }}\n className={cn(\n paginationItemVariants({ size, disabled }),\n colorStyles[color][variant],\n 'w-16 text-center',\n )}\n />\n </div>\n )}\n </div>\n )\n },\n)\n\nPagination.displayName = 'Pagination'\n\nexport type * from './types'\nexport default Pagination\n"]}
|
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
import { cn, iconSizes } from './chunk-NGYLRX6F.js';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var dotVariants = cva(
|
|
7
|
+
"rounded-full shrink-0 flex items-center justify-center z-10",
|
|
8
|
+
{
|
|
9
|
+
variants: {
|
|
10
|
+
size: {
|
|
11
|
+
xs: "w-2 h-2",
|
|
12
|
+
sm: "w-3 h-3",
|
|
13
|
+
md: "w-4 h-4",
|
|
14
|
+
lg: "w-5 h-5"
|
|
15
|
+
},
|
|
16
|
+
color: {
|
|
17
|
+
default: "bg-border",
|
|
18
|
+
primary: "bg-primary",
|
|
19
|
+
secondary: "bg-secondary",
|
|
20
|
+
accent: "bg-accent",
|
|
21
|
+
success: "bg-success",
|
|
22
|
+
error: "bg-error",
|
|
23
|
+
warning: "bg-warning",
|
|
24
|
+
info: "bg-info"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
size: "md",
|
|
29
|
+
color: "default"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
var connectorSizes = {
|
|
34
|
+
xs: { vertical: "w-px", horizontal: "h-px" },
|
|
35
|
+
sm: { vertical: "w-px", horizontal: "h-px" },
|
|
36
|
+
md: { vertical: "w-0.5", horizontal: "h-0.5" },
|
|
37
|
+
lg: { vertical: "w-0.5", horizontal: "h-0.5" }
|
|
38
|
+
};
|
|
39
|
+
var trackWidths = {
|
|
40
|
+
xs: "w-4",
|
|
41
|
+
sm: "w-5",
|
|
42
|
+
md: "w-6",
|
|
43
|
+
lg: "w-7"
|
|
44
|
+
};
|
|
45
|
+
var contentSizes = {
|
|
46
|
+
xs: "text-xs",
|
|
47
|
+
sm: "text-sm",
|
|
48
|
+
md: "text-base",
|
|
49
|
+
lg: "text-lg"
|
|
50
|
+
};
|
|
51
|
+
var timestampSizes = {
|
|
52
|
+
xs: "text-[10px]",
|
|
53
|
+
sm: "text-xs",
|
|
54
|
+
md: "text-sm",
|
|
55
|
+
lg: "text-base"
|
|
56
|
+
};
|
|
57
|
+
var iconDotSizes = {
|
|
58
|
+
xs: "w-5 h-5",
|
|
59
|
+
sm: "w-6 h-6",
|
|
60
|
+
md: "w-8 h-8",
|
|
61
|
+
lg: "w-10 h-10"
|
|
62
|
+
};
|
|
63
|
+
var dotRowHeights = {
|
|
64
|
+
xs: "min-h-5",
|
|
65
|
+
sm: "min-h-6",
|
|
66
|
+
md: "min-h-8",
|
|
67
|
+
lg: "min-h-10"
|
|
68
|
+
};
|
|
69
|
+
var Timeline = React.memo(
|
|
70
|
+
({
|
|
71
|
+
items,
|
|
72
|
+
mode = "left",
|
|
73
|
+
orientation = "vertical",
|
|
74
|
+
size = "md",
|
|
75
|
+
color = "default",
|
|
76
|
+
pending = false,
|
|
77
|
+
pendingText = "Loading...",
|
|
78
|
+
reverse = false,
|
|
79
|
+
className,
|
|
80
|
+
classNames,
|
|
81
|
+
ref
|
|
82
|
+
}) => {
|
|
83
|
+
const isHorizontal = orientation === "horizontal";
|
|
84
|
+
const displayItems = reverse ? [...items].reverse() : items;
|
|
85
|
+
const renderDot = (item, itemColor) => {
|
|
86
|
+
if (item.dot) {
|
|
87
|
+
return /* @__PURE__ */ jsx(
|
|
88
|
+
"div",
|
|
89
|
+
{
|
|
90
|
+
className: cn("timeline_dot", "shrink-0 z-10", classNames?.dot),
|
|
91
|
+
"data-slot": "dot",
|
|
92
|
+
children: item.dot
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
if (item.icon) {
|
|
97
|
+
return /* @__PURE__ */ jsx(
|
|
98
|
+
"div",
|
|
99
|
+
{
|
|
100
|
+
className: cn(
|
|
101
|
+
"timeline_dot",
|
|
102
|
+
"rounded-full shrink-0 flex items-center justify-center z-10",
|
|
103
|
+
iconDotSizes[size],
|
|
104
|
+
`bg-${itemColor === "default" ? "border" : itemColor}`,
|
|
105
|
+
"text-white",
|
|
106
|
+
classNames?.dot
|
|
107
|
+
),
|
|
108
|
+
"data-slot": "dot",
|
|
109
|
+
children: /* @__PURE__ */ jsx(
|
|
110
|
+
"span",
|
|
111
|
+
{
|
|
112
|
+
className: cn(
|
|
113
|
+
"timeline_icon",
|
|
114
|
+
"flex items-center justify-center",
|
|
115
|
+
iconSizes[size],
|
|
116
|
+
classNames?.icon
|
|
117
|
+
),
|
|
118
|
+
"data-slot": "icon",
|
|
119
|
+
children: item.icon
|
|
120
|
+
}
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
return /* @__PURE__ */ jsx(
|
|
126
|
+
"div",
|
|
127
|
+
{
|
|
128
|
+
className: cn(
|
|
129
|
+
"timeline_dot",
|
|
130
|
+
dotVariants({ size, color: itemColor }),
|
|
131
|
+
classNames?.dot
|
|
132
|
+
),
|
|
133
|
+
"data-slot": "dot"
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
};
|
|
137
|
+
const renderContent = (item, align) => /* @__PURE__ */ jsxs(
|
|
138
|
+
"div",
|
|
139
|
+
{
|
|
140
|
+
className: cn(
|
|
141
|
+
"timeline_content",
|
|
142
|
+
contentSizes[size],
|
|
143
|
+
align === "right" ? "text-right" : "text-left",
|
|
144
|
+
classNames?.content
|
|
145
|
+
),
|
|
146
|
+
"data-slot": "content",
|
|
147
|
+
children: [
|
|
148
|
+
/* @__PURE__ */ jsx(
|
|
149
|
+
"div",
|
|
150
|
+
{
|
|
151
|
+
className: cn(
|
|
152
|
+
"timeline_title",
|
|
153
|
+
"font-semibold text-text-primary -mt-1",
|
|
154
|
+
item.description && "mb-1",
|
|
155
|
+
classNames?.title
|
|
156
|
+
),
|
|
157
|
+
"data-slot": "title",
|
|
158
|
+
children: item.title
|
|
159
|
+
}
|
|
160
|
+
),
|
|
161
|
+
item.description && /* @__PURE__ */ jsx(
|
|
162
|
+
"div",
|
|
163
|
+
{
|
|
164
|
+
className: cn(
|
|
165
|
+
"timeline_description",
|
|
166
|
+
"text-text-secondary",
|
|
167
|
+
classNames?.description
|
|
168
|
+
),
|
|
169
|
+
"data-slot": "description",
|
|
170
|
+
children: item.description
|
|
171
|
+
}
|
|
172
|
+
)
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
const renderDate = (item, align) => {
|
|
177
|
+
if (!item.timestamp) return null;
|
|
178
|
+
return /* @__PURE__ */ jsx(
|
|
179
|
+
"div",
|
|
180
|
+
{
|
|
181
|
+
className: cn(
|
|
182
|
+
"timeline_date",
|
|
183
|
+
"text-text-secondary",
|
|
184
|
+
timestampSizes[size],
|
|
185
|
+
align === "right" ? "text-right" : "text-left",
|
|
186
|
+
classNames?.date
|
|
187
|
+
),
|
|
188
|
+
"data-slot": "date",
|
|
189
|
+
children: item.timestamp
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
};
|
|
193
|
+
const renderVerticalItem = (item, index) => {
|
|
194
|
+
const isLast = index === displayItems.length - 1 && !pending;
|
|
195
|
+
const itemColor = item.color || color;
|
|
196
|
+
const contentOnRight = mode === "left" || mode === "center" && index % 2 === 0;
|
|
197
|
+
return /* @__PURE__ */ jsxs(
|
|
198
|
+
"div",
|
|
199
|
+
{
|
|
200
|
+
className: cn(
|
|
201
|
+
"timeline_item",
|
|
202
|
+
"grid grid-cols-[1fr_auto_1fr]",
|
|
203
|
+
classNames?.item
|
|
204
|
+
),
|
|
205
|
+
"data-slot": "item",
|
|
206
|
+
children: [
|
|
207
|
+
/* @__PURE__ */ jsx("div", { className: "pb-8 pr-4", children: contentOnRight ? renderDate(item, "right") : renderContent(item, "right") }),
|
|
208
|
+
/* @__PURE__ */ jsxs(
|
|
209
|
+
"div",
|
|
210
|
+
{
|
|
211
|
+
className: cn(
|
|
212
|
+
"timeline_track",
|
|
213
|
+
"relative flex flex-col items-center",
|
|
214
|
+
trackWidths[size]
|
|
215
|
+
),
|
|
216
|
+
children: [
|
|
217
|
+
renderDot(item, itemColor),
|
|
218
|
+
!isLast && /* @__PURE__ */ jsx(
|
|
219
|
+
"div",
|
|
220
|
+
{
|
|
221
|
+
className: cn(
|
|
222
|
+
"timeline_connector",
|
|
223
|
+
"flex-1 bg-border",
|
|
224
|
+
connectorSizes[size].vertical,
|
|
225
|
+
classNames?.connector
|
|
226
|
+
),
|
|
227
|
+
"data-slot": "connector"
|
|
228
|
+
}
|
|
229
|
+
)
|
|
230
|
+
]
|
|
231
|
+
}
|
|
232
|
+
),
|
|
233
|
+
/* @__PURE__ */ jsx("div", { className: "pb-8 pl-4", children: contentOnRight ? renderContent(item, "left") : renderDate(item, "left") })
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
item.key ?? index
|
|
237
|
+
);
|
|
238
|
+
};
|
|
239
|
+
const renderVerticalPending = () => {
|
|
240
|
+
const pendingIndex = displayItems.length;
|
|
241
|
+
const contentOnRight = mode === "left" || mode === "center" && pendingIndex % 2 === 0;
|
|
242
|
+
return /* @__PURE__ */ jsxs(
|
|
243
|
+
"div",
|
|
244
|
+
{
|
|
245
|
+
className: cn(
|
|
246
|
+
"timeline_item",
|
|
247
|
+
"grid grid-cols-[1fr_auto_1fr]",
|
|
248
|
+
classNames?.item
|
|
249
|
+
),
|
|
250
|
+
"data-slot": "item",
|
|
251
|
+
children: [
|
|
252
|
+
/* @__PURE__ */ jsx("div", { className: "pr-4", children: !contentOnRight && /* @__PURE__ */ jsx(
|
|
253
|
+
"div",
|
|
254
|
+
{
|
|
255
|
+
className: cn(
|
|
256
|
+
"text-text-secondary text-right",
|
|
257
|
+
contentSizes[size]
|
|
258
|
+
),
|
|
259
|
+
children: pendingText
|
|
260
|
+
}
|
|
261
|
+
) }),
|
|
262
|
+
/* @__PURE__ */ jsx(
|
|
263
|
+
"div",
|
|
264
|
+
{
|
|
265
|
+
className: cn(
|
|
266
|
+
"timeline_track",
|
|
267
|
+
"relative flex flex-col items-center",
|
|
268
|
+
trackWidths[size]
|
|
269
|
+
),
|
|
270
|
+
children: /* @__PURE__ */ jsx(
|
|
271
|
+
"div",
|
|
272
|
+
{
|
|
273
|
+
className: cn(
|
|
274
|
+
"timeline_dot",
|
|
275
|
+
dotVariants({ size, color: "default" }),
|
|
276
|
+
"animate-pulse",
|
|
277
|
+
classNames?.dot
|
|
278
|
+
),
|
|
279
|
+
"data-slot": "dot"
|
|
280
|
+
}
|
|
281
|
+
)
|
|
282
|
+
}
|
|
283
|
+
),
|
|
284
|
+
/* @__PURE__ */ jsx("div", { className: "pl-4", children: contentOnRight && /* @__PURE__ */ jsx(
|
|
285
|
+
"div",
|
|
286
|
+
{
|
|
287
|
+
className: cn(
|
|
288
|
+
"text-text-secondary",
|
|
289
|
+
contentSizes[size],
|
|
290
|
+
classNames?.content
|
|
291
|
+
),
|
|
292
|
+
children: pendingText
|
|
293
|
+
}
|
|
294
|
+
) })
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
);
|
|
298
|
+
};
|
|
299
|
+
const renderHorizontalItem = (item, index) => {
|
|
300
|
+
const isFirst = index === 0;
|
|
301
|
+
const isLast = index === displayItems.length - 1 && !pending;
|
|
302
|
+
const itemColor = item.color || color;
|
|
303
|
+
return /* @__PURE__ */ jsxs(
|
|
304
|
+
"div",
|
|
305
|
+
{
|
|
306
|
+
className: cn(
|
|
307
|
+
"timeline_item",
|
|
308
|
+
"flex-1 flex flex-col items-center min-w-0",
|
|
309
|
+
classNames?.item
|
|
310
|
+
),
|
|
311
|
+
"data-slot": "item",
|
|
312
|
+
children: [
|
|
313
|
+
/* @__PURE__ */ jsx(
|
|
314
|
+
"div",
|
|
315
|
+
{
|
|
316
|
+
className: cn(
|
|
317
|
+
"timeline_date",
|
|
318
|
+
"text-text-secondary text-center mb-2 min-h-[1em]",
|
|
319
|
+
timestampSizes[size],
|
|
320
|
+
classNames?.date
|
|
321
|
+
),
|
|
322
|
+
"data-slot": "date",
|
|
323
|
+
children: item.timestamp
|
|
324
|
+
}
|
|
325
|
+
),
|
|
326
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center w-full", dotRowHeights[size]), children: [
|
|
327
|
+
/* @__PURE__ */ jsx(
|
|
328
|
+
"div",
|
|
329
|
+
{
|
|
330
|
+
className: cn(
|
|
331
|
+
"flex-1",
|
|
332
|
+
!isFirst && cn("bg-border", connectorSizes[size].horizontal)
|
|
333
|
+
)
|
|
334
|
+
}
|
|
335
|
+
),
|
|
336
|
+
renderDot(item, itemColor),
|
|
337
|
+
/* @__PURE__ */ jsx(
|
|
338
|
+
"div",
|
|
339
|
+
{
|
|
340
|
+
className: cn(
|
|
341
|
+
"flex-1",
|
|
342
|
+
!isLast && cn("bg-border", connectorSizes[size].horizontal)
|
|
343
|
+
)
|
|
344
|
+
}
|
|
345
|
+
)
|
|
346
|
+
] }),
|
|
347
|
+
/* @__PURE__ */ jsxs(
|
|
348
|
+
"div",
|
|
349
|
+
{
|
|
350
|
+
className: cn(
|
|
351
|
+
"timeline_content",
|
|
352
|
+
"text-center mt-1.5",
|
|
353
|
+
contentSizes[size],
|
|
354
|
+
classNames?.content
|
|
355
|
+
),
|
|
356
|
+
"data-slot": "content",
|
|
357
|
+
children: [
|
|
358
|
+
/* @__PURE__ */ jsx(
|
|
359
|
+
"div",
|
|
360
|
+
{
|
|
361
|
+
className: cn(
|
|
362
|
+
"timeline_title",
|
|
363
|
+
"font-semibold text-text-primary",
|
|
364
|
+
item.description && "mb-1",
|
|
365
|
+
classNames?.title
|
|
366
|
+
),
|
|
367
|
+
"data-slot": "title",
|
|
368
|
+
children: item.title
|
|
369
|
+
}
|
|
370
|
+
),
|
|
371
|
+
item.description && /* @__PURE__ */ jsx(
|
|
372
|
+
"div",
|
|
373
|
+
{
|
|
374
|
+
className: cn(
|
|
375
|
+
"timeline_description",
|
|
376
|
+
"text-text-secondary",
|
|
377
|
+
classNames?.description
|
|
378
|
+
),
|
|
379
|
+
"data-slot": "description",
|
|
380
|
+
children: item.description
|
|
381
|
+
}
|
|
382
|
+
)
|
|
383
|
+
]
|
|
384
|
+
}
|
|
385
|
+
)
|
|
386
|
+
]
|
|
387
|
+
},
|
|
388
|
+
item.key ?? index
|
|
389
|
+
);
|
|
390
|
+
};
|
|
391
|
+
const renderHorizontalPending = () => /* @__PURE__ */ jsxs(
|
|
392
|
+
"div",
|
|
393
|
+
{
|
|
394
|
+
className: cn(
|
|
395
|
+
"timeline_item",
|
|
396
|
+
"flex-1 flex flex-col items-center min-w-0",
|
|
397
|
+
classNames?.item
|
|
398
|
+
),
|
|
399
|
+
"data-slot": "item",
|
|
400
|
+
children: [
|
|
401
|
+
/* @__PURE__ */ jsx(
|
|
402
|
+
"div",
|
|
403
|
+
{
|
|
404
|
+
className: cn(
|
|
405
|
+
"text-text-secondary text-center mb-2 min-h-[1em]",
|
|
406
|
+
timestampSizes[size]
|
|
407
|
+
)
|
|
408
|
+
}
|
|
409
|
+
),
|
|
410
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-center w-full", dotRowHeights[size]), children: [
|
|
411
|
+
/* @__PURE__ */ jsx(
|
|
412
|
+
"div",
|
|
413
|
+
{
|
|
414
|
+
className: cn("flex-1 bg-border", connectorSizes[size].horizontal)
|
|
415
|
+
}
|
|
416
|
+
),
|
|
417
|
+
/* @__PURE__ */ jsx(
|
|
418
|
+
"div",
|
|
419
|
+
{
|
|
420
|
+
className: cn(
|
|
421
|
+
"timeline_dot",
|
|
422
|
+
dotVariants({ size, color: "default" }),
|
|
423
|
+
"animate-pulse",
|
|
424
|
+
classNames?.dot
|
|
425
|
+
),
|
|
426
|
+
"data-slot": "dot"
|
|
427
|
+
}
|
|
428
|
+
),
|
|
429
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1" })
|
|
430
|
+
] }),
|
|
431
|
+
/* @__PURE__ */ jsx(
|
|
432
|
+
"div",
|
|
433
|
+
{
|
|
434
|
+
className: cn(
|
|
435
|
+
"timeline_content",
|
|
436
|
+
"text-center mt-1.5 text-text-secondary",
|
|
437
|
+
contentSizes[size],
|
|
438
|
+
classNames?.content
|
|
439
|
+
),
|
|
440
|
+
"data-slot": "content",
|
|
441
|
+
children: pendingText
|
|
442
|
+
}
|
|
443
|
+
)
|
|
444
|
+
]
|
|
445
|
+
}
|
|
446
|
+
);
|
|
447
|
+
if (isHorizontal) {
|
|
448
|
+
return /* @__PURE__ */ jsxs(
|
|
449
|
+
"div",
|
|
450
|
+
{
|
|
451
|
+
ref,
|
|
452
|
+
className: cn(
|
|
453
|
+
"timeline_root",
|
|
454
|
+
"relative flex w-full",
|
|
455
|
+
classNames?.root,
|
|
456
|
+
className
|
|
457
|
+
),
|
|
458
|
+
"data-slot": "root",
|
|
459
|
+
children: [
|
|
460
|
+
displayItems.map((item, index) => renderHorizontalItem(item, index)),
|
|
461
|
+
pending && renderHorizontalPending()
|
|
462
|
+
]
|
|
463
|
+
}
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
return /* @__PURE__ */ jsxs(
|
|
467
|
+
"div",
|
|
468
|
+
{
|
|
469
|
+
ref,
|
|
470
|
+
className: cn("timeline_root", "relative", classNames?.root, className),
|
|
471
|
+
"data-slot": "root",
|
|
472
|
+
children: [
|
|
473
|
+
displayItems.map((item, index) => renderVerticalItem(item, index)),
|
|
474
|
+
pending && renderVerticalPending()
|
|
475
|
+
]
|
|
476
|
+
}
|
|
477
|
+
);
|
|
478
|
+
}
|
|
479
|
+
);
|
|
480
|
+
Timeline.displayName = "Timeline";
|
|
481
|
+
var timeline_default = Timeline;
|
|
482
|
+
|
|
483
|
+
export { timeline_default };
|
|
484
|
+
//# sourceMappingURL=chunk-LOYLJRCF.js.map
|
|
485
|
+
//# sourceMappingURL=chunk-LOYLJRCF.js.map
|