@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.
Files changed (67) hide show
  1. package/dist/breadcrumbs/index.js +2 -2
  2. package/dist/{chunk-T7RWQLUB.js → chunk-3BIV3QE2.js} +10 -4
  3. package/dist/chunk-3BIV3QE2.js.map +1 -0
  4. package/dist/{chunk-2F5MMMVP.js → chunk-64NHVOZS.js} +3 -3
  5. package/dist/{chunk-2F5MMMVP.js.map → chunk-64NHVOZS.js.map} +1 -1
  6. package/dist/{chunk-XWEI3MES.js → chunk-674JC24S.js} +4 -4
  7. package/dist/chunk-674JC24S.js.map +1 -0
  8. package/dist/{chunk-C4SHFLFR.js → chunk-CN74CNAN.js} +3 -3
  9. package/dist/{chunk-C4SHFLFR.js.map → chunk-CN74CNAN.js.map} +1 -1
  10. package/dist/{chunk-5QQH5LYU.js → chunk-D4SUSZDN.js} +23 -8
  11. package/dist/chunk-D4SUSZDN.js.map +1 -0
  12. package/dist/{chunk-CH3YMDCF.js → chunk-G6NVGBYZ.js} +3 -3
  13. package/dist/{chunk-CH3YMDCF.js.map → chunk-G6NVGBYZ.js.map} +1 -1
  14. package/dist/{chunk-4F7U5UPY.js → chunk-HUXODBIO.js} +19 -24
  15. package/dist/chunk-HUXODBIO.js.map +1 -0
  16. package/dist/chunk-LOYLJRCF.js +485 -0
  17. package/dist/chunk-LOYLJRCF.js.map +1 -0
  18. package/dist/{chunk-ZKEDJ536.js → chunk-ON2CMF6J.js} +3 -3
  19. package/dist/{chunk-ZKEDJ536.js.map → chunk-ON2CMF6J.js.map} +1 -1
  20. package/dist/{chunk-RPWYIGD3.js → chunk-TLNHWOQQ.js} +3 -3
  21. package/dist/{chunk-RPWYIGD3.js.map → chunk-TLNHWOQQ.js.map} +1 -1
  22. package/dist/{chunk-EPE3OODP.js → chunk-UTWQ2FZK.js} +118 -113
  23. package/dist/chunk-UTWQ2FZK.js.map +1 -0
  24. package/dist/{chunk-UN3EW2PL.js → chunk-YXLIGJTN.js} +31 -76
  25. package/dist/chunk-YXLIGJTN.js.map +1 -0
  26. package/dist/chunk-ZJNGZCRB.js +440 -0
  27. package/dist/chunk-ZJNGZCRB.js.map +1 -0
  28. package/dist/command/index.js +2 -2
  29. package/dist/drawer/index.js +1 -1
  30. package/dist/dropdown/index.d.ts +3 -3
  31. package/dist/dropdown/index.d.ts.map +1 -1
  32. package/dist/dropdown/index.js +1 -1
  33. package/dist/index.js +14 -14
  34. package/dist/kbd/index.js +1 -1
  35. package/dist/modal/index.d.ts +5 -5
  36. package/dist/modal/index.d.ts.map +1 -1
  37. package/dist/modal/index.js +1 -1
  38. package/dist/navigation-menu/index.d.ts +3 -3
  39. package/dist/navigation-menu/index.d.ts.map +1 -1
  40. package/dist/navigation-menu/index.js +1 -1
  41. package/dist/pagination/index.d.ts.map +1 -1
  42. package/dist/pagination/index.js +1 -1
  43. package/dist/slider/index.d.ts.map +1 -1
  44. package/dist/slider/index.js +1 -1
  45. package/dist/slider/types.d.ts +6 -0
  46. package/dist/slider/types.d.ts.map +1 -1
  47. package/dist/table/index.js +2 -2
  48. package/dist/timeline/index.d.ts +3 -10
  49. package/dist/timeline/index.d.ts.map +1 -1
  50. package/dist/timeline/index.js +1 -1
  51. package/dist/timeline/types.d.ts +4 -2
  52. package/dist/timeline/types.d.ts.map +1 -1
  53. package/dist/tree/index.d.ts.map +1 -1
  54. package/dist/tree/index.js +1 -1
  55. package/dist/tree-select/index.js +2 -2
  56. package/package.json +1 -1
  57. package/styles/global.css +176 -245
  58. package/dist/chunk-4F7U5UPY.js.map +0 -1
  59. package/dist/chunk-5QQH5LYU.js.map +0 -1
  60. package/dist/chunk-EPE3OODP.js.map +0 -1
  61. package/dist/chunk-FAD45WRP.js +0 -378
  62. package/dist/chunk-FAD45WRP.js.map +0 -1
  63. package/dist/chunk-HQLHE5RX.js +0 -297
  64. package/dist/chunk-HQLHE5RX.js.map +0 -1
  65. package/dist/chunk-T7RWQLUB.js.map +0 -1
  66. package/dist/chunk-UN3EW2PL.js.map +0 -1
  67. 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 transition-colors cursor-pointer border min-w-fit",
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
- const showPages = 5;
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
- if (current <= 3) {
189
- for (let i = 2; i <= 4; i++) {
190
- pages.push(i);
191
- }
192
- pages.push("ellipsis");
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
- `ellipsis-${index}`
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
- page
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-4F7U5UPY.js.map
429
- //# sourceMappingURL=chunk-4F7U5UPY.js.map
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