@zentauri-ui/zentauri-components 2.1.7 → 2.1.9

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 (110) hide show
  1. package/README.md +8 -5
  2. package/cli/props.json +350 -3
  3. package/cli/registry.json +11 -0
  4. package/dist/{chunk-DBNGLT5U.mjs → chunk-3HBC34NF.mjs} +4 -4
  5. package/dist/{chunk-DBNGLT5U.mjs.map → chunk-3HBC34NF.mjs.map} +1 -1
  6. package/dist/{chunk-FUCW5GPE.mjs → chunk-3RC5IG6O.mjs} +55 -8
  7. package/dist/chunk-3RC5IG6O.mjs.map +1 -0
  8. package/dist/chunk-4SLVTSHM.js +241 -0
  9. package/dist/chunk-4SLVTSHM.js.map +1 -0
  10. package/dist/{chunk-TJ2EWPER.js → chunk-4TPE5DEG.js} +63 -7
  11. package/dist/chunk-4TPE5DEG.js.map +1 -0
  12. package/dist/{chunk-G7FVHZRB.js → chunk-7CZDJTPD.js} +12 -12
  13. package/dist/{chunk-G7FVHZRB.js.map → chunk-7CZDJTPD.js.map} +1 -1
  14. package/dist/{chunk-5ELR6MIN.js → chunk-7DGPRPWM.js} +6 -6
  15. package/dist/{chunk-5ELR6MIN.js.map → chunk-7DGPRPWM.js.map} +1 -1
  16. package/dist/chunk-GP3FUS2H.mjs +26 -0
  17. package/dist/chunk-GP3FUS2H.mjs.map +1 -0
  18. package/dist/chunk-IHDM7AHY.mjs +233 -0
  19. package/dist/chunk-IHDM7AHY.mjs.map +1 -0
  20. package/dist/chunk-MWG7LHAK.js +19 -0
  21. package/dist/{chunk-5FU57ZVQ.js.map → chunk-MWG7LHAK.js.map} +1 -1
  22. package/dist/{chunk-7UXPXCKV.mjs → chunk-OLT7P7JO.mjs} +3 -3
  23. package/dist/{chunk-7UXPXCKV.mjs.map → chunk-OLT7P7JO.mjs.map} +1 -1
  24. package/dist/chunk-PAISX7YL.js +38 -0
  25. package/dist/chunk-PAISX7YL.js.map +1 -0
  26. package/dist/{chunk-KVSRUAXP.mjs → chunk-VN7FE5RR.mjs} +3 -3
  27. package/dist/{chunk-KVSRUAXP.mjs.map → chunk-VN7FE5RR.mjs.map} +1 -1
  28. package/dist/design-system/code-diff.d.ts +18 -0
  29. package/dist/design-system/code-diff.d.ts.map +1 -0
  30. package/dist/design-system/facade.js +8 -7
  31. package/dist/design-system/facade.js.map +1 -1
  32. package/dist/design-system/facade.mjs +7 -6
  33. package/dist/design-system/facade.mjs.map +1 -1
  34. package/dist/design-system/index.d.ts +2 -0
  35. package/dist/design-system/index.d.ts.map +1 -1
  36. package/dist/design-system/split-button.d.ts +25 -0
  37. package/dist/design-system/split-button.d.ts.map +1 -0
  38. package/dist/ui/buttons/animated.js +10 -9
  39. package/dist/ui/buttons/animated.js.map +1 -1
  40. package/dist/ui/buttons/animated.mjs +8 -7
  41. package/dist/ui/buttons/animated.mjs.map +1 -1
  42. package/dist/ui/buttons.js +11 -10
  43. package/dist/ui/buttons.mjs +9 -8
  44. package/dist/ui/code-diff/code-diff-base.d.ts +6 -0
  45. package/dist/ui/code-diff/code-diff-base.d.ts.map +1 -0
  46. package/dist/ui/code-diff/code-diff.d.ts +6 -0
  47. package/dist/ui/code-diff/code-diff.d.ts.map +1 -0
  48. package/dist/ui/code-diff/index.d.ts +4 -0
  49. package/dist/ui/code-diff/index.d.ts.map +1 -0
  50. package/dist/ui/code-diff/types.d.ts +26 -0
  51. package/dist/ui/code-diff/types.d.ts.map +1 -0
  52. package/dist/ui/code-diff/variants.d.ts +11 -0
  53. package/dist/ui/code-diff/variants.d.ts.map +1 -0
  54. package/dist/ui/code-diff.js +302 -0
  55. package/dist/ui/code-diff.js.map +1 -0
  56. package/dist/ui/code-diff.mjs +297 -0
  57. package/dist/ui/code-diff.mjs.map +1 -0
  58. package/dist/ui/data-table.js +22 -21
  59. package/dist/ui/data-table.js.map +1 -1
  60. package/dist/ui/data-table.mjs +12 -11
  61. package/dist/ui/data-table.mjs.map +1 -1
  62. package/dist/ui/dropdown/dropdown.d.ts +1 -1
  63. package/dist/ui/dropdown/dropdown.d.ts.map +1 -1
  64. package/dist/ui/dropdown/types.d.ts +2 -2
  65. package/dist/ui/dropdown/types.d.ts.map +1 -1
  66. package/dist/ui/dropdown.js +31 -231
  67. package/dist/ui/dropdown.js.map +1 -1
  68. package/dist/ui/dropdown.mjs +4 -229
  69. package/dist/ui/dropdown.mjs.map +1 -1
  70. package/dist/ui/dynamic-stepper.js +20 -19
  71. package/dist/ui/dynamic-stepper.js.map +1 -1
  72. package/dist/ui/dynamic-stepper.mjs +9 -8
  73. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  74. package/dist/ui/pagination.js +12 -11
  75. package/dist/ui/pagination.mjs +9 -8
  76. package/dist/ui/split-button/index.d.ts +4 -0
  77. package/dist/ui/split-button/index.d.ts.map +1 -0
  78. package/dist/ui/split-button/split-button-base.d.ts +6 -0
  79. package/dist/ui/split-button/split-button-base.d.ts.map +1 -0
  80. package/dist/ui/split-button/split-button.d.ts +6 -0
  81. package/dist/ui/split-button/split-button.d.ts.map +1 -0
  82. package/dist/ui/split-button/types.d.ts +30 -0
  83. package/dist/ui/split-button/types.d.ts.map +1 -0
  84. package/dist/ui/split-button/variants.d.ts +16 -0
  85. package/dist/ui/split-button/variants.d.ts.map +1 -0
  86. package/dist/ui/split-button.js +288 -0
  87. package/dist/ui/split-button.js.map +1 -0
  88. package/dist/ui/split-button.mjs +279 -0
  89. package/dist/ui/split-button.mjs.map +1 -0
  90. package/package.json +4 -1
  91. package/src/design-system/code-diff.ts +37 -0
  92. package/src/design-system/index.ts +2 -0
  93. package/src/design-system/split-button.ts +38 -0
  94. package/src/ui/code-diff/code-diff-base.tsx +284 -0
  95. package/src/ui/code-diff/code-diff.test.tsx +50 -0
  96. package/src/ui/code-diff/code-diff.tsx +8 -0
  97. package/src/ui/code-diff/index.ts +15 -0
  98. package/src/ui/code-diff/types.ts +31 -0
  99. package/src/ui/code-diff/variants.ts +49 -0
  100. package/src/ui/dropdown/dropdown.tsx +7 -3
  101. package/src/ui/dropdown/types.ts +2 -2
  102. package/src/ui/split-button/index.ts +19 -0
  103. package/src/ui/split-button/split-button-base.tsx +232 -0
  104. package/src/ui/split-button/split-button.test.tsx +208 -0
  105. package/src/ui/split-button/split-button.tsx +9 -0
  106. package/src/ui/split-button/types.ts +46 -0
  107. package/src/ui/split-button/variants.ts +46 -0
  108. package/dist/chunk-5FU57ZVQ.js +0 -19
  109. package/dist/chunk-FUCW5GPE.mjs.map +0 -1
  110. package/dist/chunk-TJ2EWPER.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/code-diff/variants.ts","../../src/ui/code-diff/code-diff-base.tsx","../../src/ui/code-diff/code-diff.tsx"],"names":["cva","zuiCodeDiffBase","zuiCodeDiffAppearances","zuiCodeDiffSizes","zuiCodeDiffLineNumberBase","zuiCodeDiffLineAdded","zuiCodeDiffLineRemoved","zuiCodeDiffLineUnchanged","zuiCodeDiffLineContentBase","diffLines","jsx","jsxs","useMemo","cn"],"mappings":"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","file":"code-diff.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nimport {\n zuiCodeDiffAppearances,\n zuiCodeDiffBase,\n zuiCodeDiffLineAdded,\n zuiCodeDiffLineContentBase,\n zuiCodeDiffLineNumberBase,\n zuiCodeDiffLineRemoved,\n zuiCodeDiffLineUnchanged,\n zuiCodeDiffSizes,\n} from \"../../design-system/code-diff\";\n\nexport const codeDiffVariants = cva(zuiCodeDiffBase, {\n variants: {\n appearance: zuiCodeDiffAppearances,\n size: zuiCodeDiffSizes,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n\nexport const codeDiffLineNumberVariants = cva(zuiCodeDiffLineNumberBase, {\n variants: {\n type: {\n added: zuiCodeDiffLineAdded,\n removed: zuiCodeDiffLineRemoved,\n unchanged: zuiCodeDiffLineUnchanged,\n },\n },\n defaultVariants: {\n type: \"unchanged\",\n },\n});\n\nexport const codeDiffLineContentVariants = cva(zuiCodeDiffLineContentBase, {\n variants: {\n type: {\n added: zuiCodeDiffLineAdded,\n removed: zuiCodeDiffLineRemoved,\n unchanged: zuiCodeDiffLineUnchanged,\n },\n },\n defaultVariants: {\n type: \"unchanged\",\n },\n});\n","\"use client\";\n\nimport { diffLines } from \"diff\";\nimport { useMemo } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { CodeDiffBaseProps, DiffLine } from \"./types\";\nimport {\n codeDiffLineContentVariants,\n codeDiffLineNumberVariants,\n codeDiffVariants,\n} from \"./variants\";\n\nfunction computeDiff(oldCode: string, newCode: string): DiffLine[] {\n const changes = diffLines(oldCode, newCode);\n const lines: DiffLine[] = [];\n let oldLineNum = 1;\n let newLineNum = 1;\n\n for (const change of changes) {\n const changeLines = change.value.replace(/\\n$/, \"\").split(\"\\n\");\n for (const content of changeLines) {\n if (change.added) {\n lines.push({\n type: \"added\",\n content,\n oldLineNumber: null,\n newLineNumber: newLineNum++,\n });\n } else if (change.removed) {\n lines.push({\n type: \"removed\",\n content,\n oldLineNumber: oldLineNum++,\n newLineNumber: null,\n });\n } else {\n lines.push({\n type: \"unchanged\",\n content,\n oldLineNumber: oldLineNum++,\n newLineNumber: newLineNum++,\n });\n }\n }\n }\n return lines;\n}\n\ninterface SplitRow {\n oldLine: DiffLine | null;\n newLine: DiffLine | null;\n}\n\nfunction toSplitRows(lines: DiffLine[]): SplitRow[] {\n const rows: SplitRow[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const current = lines[i]!;\n\n if (current.type === \"unchanged\") {\n rows.push({ oldLine: current, newLine: current });\n i++;\n } else if (current.type === \"removed\") {\n const removedBlock: DiffLine[] = [];\n while (i < lines.length && lines[i]!.type === \"removed\") {\n removedBlock.push(lines[i]!);\n i++;\n }\n const addedBlock: DiffLine[] = [];\n while (i < lines.length && lines[i]!.type === \"added\") {\n addedBlock.push(lines[i]!);\n i++;\n }\n const maxLen = Math.max(removedBlock.length, addedBlock.length);\n for (let j = 0; j < maxLen; j++) {\n rows.push({\n oldLine: j < removedBlock.length ? removedBlock[j]! : null,\n newLine: j < addedBlock.length ? addedBlock[j]! : null,\n });\n }\n } else if (current.type === \"added\") {\n const addedBlock: DiffLine[] = [];\n while (i < lines.length && lines[i]!.type === \"added\") {\n addedBlock.push(lines[i]!);\n i++;\n }\n for (const added of addedBlock) {\n rows.push({ oldLine: null, newLine: added });\n }\n } else {\n i++;\n }\n }\n return rows;\n}\n\nfunction LineNumberCell({\n lineNumber,\n type,\n showLineNumbers,\n}: {\n lineNumber: number | null;\n type: DiffLine[\"type\"];\n showLineNumbers: boolean;\n}) {\n return (\n <td\n className={codeDiffLineNumberVariants({ type })}\n style={{ width: showLineNumbers ? \"4.5rem\" : \"2rem\" }}\n >\n {showLineNumbers && lineNumber !== null ? lineNumber : \"\"}\n </td>\n );\n}\n\nfunction LineContentCell({\n line,\n type,\n showGutterMarkers,\n}: {\n line: string;\n type: DiffLine[\"type\"];\n showGutterMarkers: boolean;\n}) {\n return (\n <td className={codeDiffLineContentVariants({ type })}>\n {showGutterMarkers ? (\n <span className=\"inline-block w-4 select-none text-center\">\n {type === \"added\" ? \"+\" : type === \"removed\" ? \"-\" : \" \"}\n </span>\n ) : null}\n <span>{line || \" \"}</span>\n </td>\n );\n}\n\nfunction UnifiedView({\n lines,\n showLineNumbers,\n showGutterMarkers,\n}: {\n lines: DiffLine[];\n showLineNumbers: boolean;\n showGutterMarkers: boolean;\n}) {\n return (\n <table className=\"w-full border-collapse table-fixed\">\n <tbody>\n {lines.map((line, idx) => (\n <tr key={idx}>\n <LineNumberCell\n lineNumber={line.oldLineNumber}\n type={line.type}\n showLineNumbers={showLineNumbers}\n />\n <LineNumberCell\n lineNumber={line.newLineNumber}\n type={line.type}\n showLineNumbers={showLineNumbers}\n />\n <LineContentCell\n line={line.content}\n type={line.type}\n showGutterMarkers={showGutterMarkers}\n />\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\nfunction SplitView({\n lines,\n showLineNumbers,\n showGutterMarkers,\n}: {\n lines: DiffLine[];\n showLineNumbers: boolean;\n showGutterMarkers: boolean;\n}) {\n const rows = toSplitRows(lines);\n\n return (\n <table className=\"w-full border-collapse table-fixed\">\n <colgroup>\n <col style={{ width: showLineNumbers ? \"4.5rem\" : \"2rem\" }} />\n <col />\n <col style={{ width: showLineNumbers ? \"4.5rem\" : \"2rem\" }} />\n <col />\n </colgroup>\n <tbody>\n {rows.map((row, idx) => (\n <tr key={idx}>\n <LineNumberCell\n lineNumber={row.oldLine?.oldLineNumber ?? null}\n type={row.oldLine?.type ?? \"unchanged\"}\n showLineNumbers={showLineNumbers}\n />\n <LineContentCell\n line={row.oldLine?.content ?? \"\"}\n type={row.oldLine?.type ?? \"unchanged\"}\n showGutterMarkers={showGutterMarkers}\n />\n <LineNumberCell\n lineNumber={row.newLine?.newLineNumber ?? null}\n type={row.newLine?.type ?? \"unchanged\"}\n showLineNumbers={showLineNumbers}\n />\n <LineContentCell\n line={row.newLine?.content ?? \"\"}\n type={row.newLine?.type ?? \"unchanged\"}\n showGutterMarkers={showGutterMarkers}\n />\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\nexport function CodeDiffBase({\n className,\n appearance,\n size,\n oldCode,\n newCode,\n viewType = \"unified\",\n showLineNumbers = true,\n showGutterMarkers = true,\n oldTitle = \"Old\",\n newTitle = \"New\",\n ref,\n as: Wrapper = \"div\",\n ...rest\n}: CodeDiffBaseProps) {\n const lines = useMemo(\n () => computeDiff(oldCode ?? \"\", newCode ?? \"\"),\n [oldCode, newCode],\n );\n const hasChanges = lines.some(\n (l) => l.type === \"added\" || l.type === \"removed\",\n );\n\n return (\n <Wrapper\n ref={ref}\n data-slot=\"code-diff\"\n className={cn(codeDiffVariants({ appearance, size }), className)}\n {...rest}\n >\n {hasChanges ? (\n <div className=\"sticky top-0 flex items-center justify-between border-b border-[color:var(--zui-code-diff-border,var(--zui-border,#0000001a))] dark:border-[color:var(--zui-code-diff-border-dark,var(--zui-border-dark,#ffffff1a))] bg-[var(--zui-code-diff-header-bg,var(--zui-surface-muted,oklch(92.9%_0.013_255.508)))] dark:bg-[var(--zui-code-diff-header-bg-dark,var(--zui-surface-muted-dark,oklch(27.9%_0.041_260.031)))] px-4 py-2\">\n <span className=\"text-xs font-medium\">\n {lines.filter((l) => l.type === \"added\").length} additions{\" \"}\n <span className=\"mx-1\">&bull;</span>{\" \"}\n {lines.filter((l) => l.type === \"removed\").length} deletions\n </span>\n <span className=\"text-xs text-[color:var(--zui-code-diff-header-fg,var(--zui-fg-muted,oklch(55.2%_0.046_257.417)))] dark:text-[color:var(--zui-code-diff-header-fg-dark,var(--zui-fg-muted-dark,oklch(70.8%_0.015_256.243)))]\">\n {oldTitle} &rarr; {newTitle}\n </span>\n </div>\n ) : null}\n {viewType === \"split\" ? (\n <SplitView\n lines={lines}\n showLineNumbers={showLineNumbers}\n showGutterMarkers={showGutterMarkers}\n />\n ) : (\n <UnifiedView\n lines={lines}\n showLineNumbers={showLineNumbers}\n showGutterMarkers={showGutterMarkers}\n />\n )}\n </Wrapper>\n );\n}\n\nCodeDiffBase.displayName = \"CodeDiff\";\n","import { CodeDiffBase } from \"./code-diff-base\";\nimport type { CodeDiffProps } from \"./types\";\n\nexport function CodeDiff(props: CodeDiffProps) {\n return <CodeDiffBase {...props} />;\n}\n\nCodeDiff.displayName = \"CodeDiff\";\n"]}
@@ -0,0 +1,297 @@
1
+ "use client";
2
+ import { zuiCodeDiffBase, zuiCodeDiffSizes, zuiCodeDiffAppearances, zuiCodeDiffLineNumberBase, zuiCodeDiffLineUnchanged, zuiCodeDiffLineRemoved, zuiCodeDiffLineAdded, zuiCodeDiffLineContentBase } from '../chunk-GP3FUS2H.mjs';
3
+ import { cn } from '../chunk-4D54YOL6.mjs';
4
+ import '../chunk-J5LGTIGS.mjs';
5
+ import { diffLines } from 'diff';
6
+ import { useMemo } from 'react';
7
+ import { cva } from 'class-variance-authority';
8
+ import { jsx, jsxs } from 'react/jsx-runtime';
9
+
10
+ var codeDiffVariants = cva(zuiCodeDiffBase, {
11
+ variants: {
12
+ appearance: zuiCodeDiffAppearances,
13
+ size: zuiCodeDiffSizes
14
+ },
15
+ defaultVariants: {
16
+ appearance: "default",
17
+ size: "md"
18
+ }
19
+ });
20
+ var codeDiffLineNumberVariants = cva(zuiCodeDiffLineNumberBase, {
21
+ variants: {
22
+ type: {
23
+ added: zuiCodeDiffLineAdded,
24
+ removed: zuiCodeDiffLineRemoved,
25
+ unchanged: zuiCodeDiffLineUnchanged
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ type: "unchanged"
30
+ }
31
+ });
32
+ var codeDiffLineContentVariants = cva(zuiCodeDiffLineContentBase, {
33
+ variants: {
34
+ type: {
35
+ added: zuiCodeDiffLineAdded,
36
+ removed: zuiCodeDiffLineRemoved,
37
+ unchanged: zuiCodeDiffLineUnchanged
38
+ }
39
+ },
40
+ defaultVariants: {
41
+ type: "unchanged"
42
+ }
43
+ });
44
+ function computeDiff(oldCode, newCode) {
45
+ const changes = diffLines(oldCode, newCode);
46
+ const lines = [];
47
+ let oldLineNum = 1;
48
+ let newLineNum = 1;
49
+ for (const change of changes) {
50
+ const changeLines = change.value.replace(/\n$/, "").split("\n");
51
+ for (const content of changeLines) {
52
+ if (change.added) {
53
+ lines.push({
54
+ type: "added",
55
+ content,
56
+ oldLineNumber: null,
57
+ newLineNumber: newLineNum++
58
+ });
59
+ } else if (change.removed) {
60
+ lines.push({
61
+ type: "removed",
62
+ content,
63
+ oldLineNumber: oldLineNum++,
64
+ newLineNumber: null
65
+ });
66
+ } else {
67
+ lines.push({
68
+ type: "unchanged",
69
+ content,
70
+ oldLineNumber: oldLineNum++,
71
+ newLineNumber: newLineNum++
72
+ });
73
+ }
74
+ }
75
+ }
76
+ return lines;
77
+ }
78
+ function toSplitRows(lines) {
79
+ const rows = [];
80
+ let i = 0;
81
+ while (i < lines.length) {
82
+ const current = lines[i];
83
+ if (current.type === "unchanged") {
84
+ rows.push({ oldLine: current, newLine: current });
85
+ i++;
86
+ } else if (current.type === "removed") {
87
+ const removedBlock = [];
88
+ while (i < lines.length && lines[i].type === "removed") {
89
+ removedBlock.push(lines[i]);
90
+ i++;
91
+ }
92
+ const addedBlock = [];
93
+ while (i < lines.length && lines[i].type === "added") {
94
+ addedBlock.push(lines[i]);
95
+ i++;
96
+ }
97
+ const maxLen = Math.max(removedBlock.length, addedBlock.length);
98
+ for (let j = 0; j < maxLen; j++) {
99
+ rows.push({
100
+ oldLine: j < removedBlock.length ? removedBlock[j] : null,
101
+ newLine: j < addedBlock.length ? addedBlock[j] : null
102
+ });
103
+ }
104
+ } else if (current.type === "added") {
105
+ const addedBlock = [];
106
+ while (i < lines.length && lines[i].type === "added") {
107
+ addedBlock.push(lines[i]);
108
+ i++;
109
+ }
110
+ for (const added of addedBlock) {
111
+ rows.push({ oldLine: null, newLine: added });
112
+ }
113
+ } else {
114
+ i++;
115
+ }
116
+ }
117
+ return rows;
118
+ }
119
+ function LineNumberCell({
120
+ lineNumber,
121
+ type,
122
+ showLineNumbers
123
+ }) {
124
+ return /* @__PURE__ */ jsx(
125
+ "td",
126
+ {
127
+ className: codeDiffLineNumberVariants({ type }),
128
+ style: { width: showLineNumbers ? "4.5rem" : "2rem" },
129
+ children: showLineNumbers && lineNumber !== null ? lineNumber : ""
130
+ }
131
+ );
132
+ }
133
+ function LineContentCell({
134
+ line,
135
+ type,
136
+ showGutterMarkers
137
+ }) {
138
+ return /* @__PURE__ */ jsxs("td", { className: codeDiffLineContentVariants({ type }), children: [
139
+ showGutterMarkers ? /* @__PURE__ */ jsx("span", { className: "inline-block w-4 select-none text-center", children: type === "added" ? "+" : type === "removed" ? "-" : " " }) : null,
140
+ /* @__PURE__ */ jsx("span", { children: line || " " })
141
+ ] });
142
+ }
143
+ function UnifiedView({
144
+ lines,
145
+ showLineNumbers,
146
+ showGutterMarkers
147
+ }) {
148
+ return /* @__PURE__ */ jsx("table", { className: "w-full border-collapse table-fixed", children: /* @__PURE__ */ jsx("tbody", { children: lines.map((line, idx) => /* @__PURE__ */ jsxs("tr", { children: [
149
+ /* @__PURE__ */ jsx(
150
+ LineNumberCell,
151
+ {
152
+ lineNumber: line.oldLineNumber,
153
+ type: line.type,
154
+ showLineNumbers
155
+ }
156
+ ),
157
+ /* @__PURE__ */ jsx(
158
+ LineNumberCell,
159
+ {
160
+ lineNumber: line.newLineNumber,
161
+ type: line.type,
162
+ showLineNumbers
163
+ }
164
+ ),
165
+ /* @__PURE__ */ jsx(
166
+ LineContentCell,
167
+ {
168
+ line: line.content,
169
+ type: line.type,
170
+ showGutterMarkers
171
+ }
172
+ )
173
+ ] }, idx)) }) });
174
+ }
175
+ function SplitView({
176
+ lines,
177
+ showLineNumbers,
178
+ showGutterMarkers
179
+ }) {
180
+ const rows = toSplitRows(lines);
181
+ return /* @__PURE__ */ jsxs("table", { className: "w-full border-collapse table-fixed", children: [
182
+ /* @__PURE__ */ jsxs("colgroup", { children: [
183
+ /* @__PURE__ */ jsx("col", { style: { width: showLineNumbers ? "4.5rem" : "2rem" } }),
184
+ /* @__PURE__ */ jsx("col", {}),
185
+ /* @__PURE__ */ jsx("col", { style: { width: showLineNumbers ? "4.5rem" : "2rem" } }),
186
+ /* @__PURE__ */ jsx("col", {})
187
+ ] }),
188
+ /* @__PURE__ */ jsx("tbody", { children: rows.map((row, idx) => /* @__PURE__ */ jsxs("tr", { children: [
189
+ /* @__PURE__ */ jsx(
190
+ LineNumberCell,
191
+ {
192
+ lineNumber: row.oldLine?.oldLineNumber ?? null,
193
+ type: row.oldLine?.type ?? "unchanged",
194
+ showLineNumbers
195
+ }
196
+ ),
197
+ /* @__PURE__ */ jsx(
198
+ LineContentCell,
199
+ {
200
+ line: row.oldLine?.content ?? "",
201
+ type: row.oldLine?.type ?? "unchanged",
202
+ showGutterMarkers
203
+ }
204
+ ),
205
+ /* @__PURE__ */ jsx(
206
+ LineNumberCell,
207
+ {
208
+ lineNumber: row.newLine?.newLineNumber ?? null,
209
+ type: row.newLine?.type ?? "unchanged",
210
+ showLineNumbers
211
+ }
212
+ ),
213
+ /* @__PURE__ */ jsx(
214
+ LineContentCell,
215
+ {
216
+ line: row.newLine?.content ?? "",
217
+ type: row.newLine?.type ?? "unchanged",
218
+ showGutterMarkers
219
+ }
220
+ )
221
+ ] }, idx)) })
222
+ ] });
223
+ }
224
+ function CodeDiffBase({
225
+ className,
226
+ appearance,
227
+ size,
228
+ oldCode,
229
+ newCode,
230
+ viewType = "unified",
231
+ showLineNumbers = true,
232
+ showGutterMarkers = true,
233
+ oldTitle = "Old",
234
+ newTitle = "New",
235
+ ref,
236
+ as: Wrapper = "div",
237
+ ...rest
238
+ }) {
239
+ const lines = useMemo(
240
+ () => computeDiff(oldCode ?? "", newCode ?? ""),
241
+ [oldCode, newCode]
242
+ );
243
+ const hasChanges = lines.some(
244
+ (l) => l.type === "added" || l.type === "removed"
245
+ );
246
+ return /* @__PURE__ */ jsxs(
247
+ Wrapper,
248
+ {
249
+ ref,
250
+ "data-slot": "code-diff",
251
+ className: cn(codeDiffVariants({ appearance, size }), className),
252
+ ...rest,
253
+ children: [
254
+ hasChanges ? /* @__PURE__ */ jsxs("div", { className: "sticky top-0 flex items-center justify-between border-b border-[color:var(--zui-code-diff-border,var(--zui-border,#0000001a))] dark:border-[color:var(--zui-code-diff-border-dark,var(--zui-border-dark,#ffffff1a))] bg-[var(--zui-code-diff-header-bg,var(--zui-surface-muted,oklch(92.9%_0.013_255.508)))] dark:bg-[var(--zui-code-diff-header-bg-dark,var(--zui-surface-muted-dark,oklch(27.9%_0.041_260.031)))] px-4 py-2", children: [
255
+ /* @__PURE__ */ jsxs("span", { className: "text-xs font-medium", children: [
256
+ lines.filter((l) => l.type === "added").length,
257
+ " additions",
258
+ " ",
259
+ /* @__PURE__ */ jsx("span", { className: "mx-1", children: "\u2022" }),
260
+ " ",
261
+ lines.filter((l) => l.type === "removed").length,
262
+ " deletions"
263
+ ] }),
264
+ /* @__PURE__ */ jsxs("span", { className: "text-xs text-[color:var(--zui-code-diff-header-fg,var(--zui-fg-muted,oklch(55.2%_0.046_257.417)))] dark:text-[color:var(--zui-code-diff-header-fg-dark,var(--zui-fg-muted-dark,oklch(70.8%_0.015_256.243)))]", children: [
265
+ oldTitle,
266
+ " \u2192 ",
267
+ newTitle
268
+ ] })
269
+ ] }) : null,
270
+ viewType === "split" ? /* @__PURE__ */ jsx(
271
+ SplitView,
272
+ {
273
+ lines,
274
+ showLineNumbers,
275
+ showGutterMarkers
276
+ }
277
+ ) : /* @__PURE__ */ jsx(
278
+ UnifiedView,
279
+ {
280
+ lines,
281
+ showLineNumbers,
282
+ showGutterMarkers
283
+ }
284
+ )
285
+ ]
286
+ }
287
+ );
288
+ }
289
+ CodeDiffBase.displayName = "CodeDiff";
290
+ function CodeDiff(props) {
291
+ return /* @__PURE__ */ jsx(CodeDiffBase, { ...props });
292
+ }
293
+ CodeDiff.displayName = "CodeDiff";
294
+
295
+ export { CodeDiff, codeDiffLineContentVariants, codeDiffLineNumberVariants, codeDiffVariants };
296
+ //# sourceMappingURL=code-diff.mjs.map
297
+ //# sourceMappingURL=code-diff.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/code-diff/variants.ts","../../src/ui/code-diff/code-diff-base.tsx","../../src/ui/code-diff/code-diff.tsx"],"names":["jsx"],"mappings":"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","file":"code-diff.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nimport {\n zuiCodeDiffAppearances,\n zuiCodeDiffBase,\n zuiCodeDiffLineAdded,\n zuiCodeDiffLineContentBase,\n zuiCodeDiffLineNumberBase,\n zuiCodeDiffLineRemoved,\n zuiCodeDiffLineUnchanged,\n zuiCodeDiffSizes,\n} from \"../../design-system/code-diff\";\n\nexport const codeDiffVariants = cva(zuiCodeDiffBase, {\n variants: {\n appearance: zuiCodeDiffAppearances,\n size: zuiCodeDiffSizes,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n\nexport const codeDiffLineNumberVariants = cva(zuiCodeDiffLineNumberBase, {\n variants: {\n type: {\n added: zuiCodeDiffLineAdded,\n removed: zuiCodeDiffLineRemoved,\n unchanged: zuiCodeDiffLineUnchanged,\n },\n },\n defaultVariants: {\n type: \"unchanged\",\n },\n});\n\nexport const codeDiffLineContentVariants = cva(zuiCodeDiffLineContentBase, {\n variants: {\n type: {\n added: zuiCodeDiffLineAdded,\n removed: zuiCodeDiffLineRemoved,\n unchanged: zuiCodeDiffLineUnchanged,\n },\n },\n defaultVariants: {\n type: \"unchanged\",\n },\n});\n","\"use client\";\n\nimport { diffLines } from \"diff\";\nimport { useMemo } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { CodeDiffBaseProps, DiffLine } from \"./types\";\nimport {\n codeDiffLineContentVariants,\n codeDiffLineNumberVariants,\n codeDiffVariants,\n} from \"./variants\";\n\nfunction computeDiff(oldCode: string, newCode: string): DiffLine[] {\n const changes = diffLines(oldCode, newCode);\n const lines: DiffLine[] = [];\n let oldLineNum = 1;\n let newLineNum = 1;\n\n for (const change of changes) {\n const changeLines = change.value.replace(/\\n$/, \"\").split(\"\\n\");\n for (const content of changeLines) {\n if (change.added) {\n lines.push({\n type: \"added\",\n content,\n oldLineNumber: null,\n newLineNumber: newLineNum++,\n });\n } else if (change.removed) {\n lines.push({\n type: \"removed\",\n content,\n oldLineNumber: oldLineNum++,\n newLineNumber: null,\n });\n } else {\n lines.push({\n type: \"unchanged\",\n content,\n oldLineNumber: oldLineNum++,\n newLineNumber: newLineNum++,\n });\n }\n }\n }\n return lines;\n}\n\ninterface SplitRow {\n oldLine: DiffLine | null;\n newLine: DiffLine | null;\n}\n\nfunction toSplitRows(lines: DiffLine[]): SplitRow[] {\n const rows: SplitRow[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const current = lines[i]!;\n\n if (current.type === \"unchanged\") {\n rows.push({ oldLine: current, newLine: current });\n i++;\n } else if (current.type === \"removed\") {\n const removedBlock: DiffLine[] = [];\n while (i < lines.length && lines[i]!.type === \"removed\") {\n removedBlock.push(lines[i]!);\n i++;\n }\n const addedBlock: DiffLine[] = [];\n while (i < lines.length && lines[i]!.type === \"added\") {\n addedBlock.push(lines[i]!);\n i++;\n }\n const maxLen = Math.max(removedBlock.length, addedBlock.length);\n for (let j = 0; j < maxLen; j++) {\n rows.push({\n oldLine: j < removedBlock.length ? removedBlock[j]! : null,\n newLine: j < addedBlock.length ? addedBlock[j]! : null,\n });\n }\n } else if (current.type === \"added\") {\n const addedBlock: DiffLine[] = [];\n while (i < lines.length && lines[i]!.type === \"added\") {\n addedBlock.push(lines[i]!);\n i++;\n }\n for (const added of addedBlock) {\n rows.push({ oldLine: null, newLine: added });\n }\n } else {\n i++;\n }\n }\n return rows;\n}\n\nfunction LineNumberCell({\n lineNumber,\n type,\n showLineNumbers,\n}: {\n lineNumber: number | null;\n type: DiffLine[\"type\"];\n showLineNumbers: boolean;\n}) {\n return (\n <td\n className={codeDiffLineNumberVariants({ type })}\n style={{ width: showLineNumbers ? \"4.5rem\" : \"2rem\" }}\n >\n {showLineNumbers && lineNumber !== null ? lineNumber : \"\"}\n </td>\n );\n}\n\nfunction LineContentCell({\n line,\n type,\n showGutterMarkers,\n}: {\n line: string;\n type: DiffLine[\"type\"];\n showGutterMarkers: boolean;\n}) {\n return (\n <td className={codeDiffLineContentVariants({ type })}>\n {showGutterMarkers ? (\n <span className=\"inline-block w-4 select-none text-center\">\n {type === \"added\" ? \"+\" : type === \"removed\" ? \"-\" : \" \"}\n </span>\n ) : null}\n <span>{line || \" \"}</span>\n </td>\n );\n}\n\nfunction UnifiedView({\n lines,\n showLineNumbers,\n showGutterMarkers,\n}: {\n lines: DiffLine[];\n showLineNumbers: boolean;\n showGutterMarkers: boolean;\n}) {\n return (\n <table className=\"w-full border-collapse table-fixed\">\n <tbody>\n {lines.map((line, idx) => (\n <tr key={idx}>\n <LineNumberCell\n lineNumber={line.oldLineNumber}\n type={line.type}\n showLineNumbers={showLineNumbers}\n />\n <LineNumberCell\n lineNumber={line.newLineNumber}\n type={line.type}\n showLineNumbers={showLineNumbers}\n />\n <LineContentCell\n line={line.content}\n type={line.type}\n showGutterMarkers={showGutterMarkers}\n />\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\nfunction SplitView({\n lines,\n showLineNumbers,\n showGutterMarkers,\n}: {\n lines: DiffLine[];\n showLineNumbers: boolean;\n showGutterMarkers: boolean;\n}) {\n const rows = toSplitRows(lines);\n\n return (\n <table className=\"w-full border-collapse table-fixed\">\n <colgroup>\n <col style={{ width: showLineNumbers ? \"4.5rem\" : \"2rem\" }} />\n <col />\n <col style={{ width: showLineNumbers ? \"4.5rem\" : \"2rem\" }} />\n <col />\n </colgroup>\n <tbody>\n {rows.map((row, idx) => (\n <tr key={idx}>\n <LineNumberCell\n lineNumber={row.oldLine?.oldLineNumber ?? null}\n type={row.oldLine?.type ?? \"unchanged\"}\n showLineNumbers={showLineNumbers}\n />\n <LineContentCell\n line={row.oldLine?.content ?? \"\"}\n type={row.oldLine?.type ?? \"unchanged\"}\n showGutterMarkers={showGutterMarkers}\n />\n <LineNumberCell\n lineNumber={row.newLine?.newLineNumber ?? null}\n type={row.newLine?.type ?? \"unchanged\"}\n showLineNumbers={showLineNumbers}\n />\n <LineContentCell\n line={row.newLine?.content ?? \"\"}\n type={row.newLine?.type ?? \"unchanged\"}\n showGutterMarkers={showGutterMarkers}\n />\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\nexport function CodeDiffBase({\n className,\n appearance,\n size,\n oldCode,\n newCode,\n viewType = \"unified\",\n showLineNumbers = true,\n showGutterMarkers = true,\n oldTitle = \"Old\",\n newTitle = \"New\",\n ref,\n as: Wrapper = \"div\",\n ...rest\n}: CodeDiffBaseProps) {\n const lines = useMemo(\n () => computeDiff(oldCode ?? \"\", newCode ?? \"\"),\n [oldCode, newCode],\n );\n const hasChanges = lines.some(\n (l) => l.type === \"added\" || l.type === \"removed\",\n );\n\n return (\n <Wrapper\n ref={ref}\n data-slot=\"code-diff\"\n className={cn(codeDiffVariants({ appearance, size }), className)}\n {...rest}\n >\n {hasChanges ? (\n <div className=\"sticky top-0 flex items-center justify-between border-b border-[color:var(--zui-code-diff-border,var(--zui-border,#0000001a))] dark:border-[color:var(--zui-code-diff-border-dark,var(--zui-border-dark,#ffffff1a))] bg-[var(--zui-code-diff-header-bg,var(--zui-surface-muted,oklch(92.9%_0.013_255.508)))] dark:bg-[var(--zui-code-diff-header-bg-dark,var(--zui-surface-muted-dark,oklch(27.9%_0.041_260.031)))] px-4 py-2\">\n <span className=\"text-xs font-medium\">\n {lines.filter((l) => l.type === \"added\").length} additions{\" \"}\n <span className=\"mx-1\">&bull;</span>{\" \"}\n {lines.filter((l) => l.type === \"removed\").length} deletions\n </span>\n <span className=\"text-xs text-[color:var(--zui-code-diff-header-fg,var(--zui-fg-muted,oklch(55.2%_0.046_257.417)))] dark:text-[color:var(--zui-code-diff-header-fg-dark,var(--zui-fg-muted-dark,oklch(70.8%_0.015_256.243)))]\">\n {oldTitle} &rarr; {newTitle}\n </span>\n </div>\n ) : null}\n {viewType === \"split\" ? (\n <SplitView\n lines={lines}\n showLineNumbers={showLineNumbers}\n showGutterMarkers={showGutterMarkers}\n />\n ) : (\n <UnifiedView\n lines={lines}\n showLineNumbers={showLineNumbers}\n showGutterMarkers={showGutterMarkers}\n />\n )}\n </Wrapper>\n );\n}\n\nCodeDiffBase.displayName = \"CodeDiff\";\n","import { CodeDiffBase } from \"./code-diff-base\";\nimport type { CodeDiffProps } from \"./types\";\n\nexport function CodeDiff(props: CodeDiffProps) {\n return <CodeDiffBase {...props} />;\n}\n\nCodeDiff.displayName = \"CodeDiff\";\n"]}
@@ -1,47 +1,49 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkOYAJG2BO_js = require('../chunk-OYAJG2BO.js');
5
4
  var chunkHMDH4BQJ_js = require('../chunk-HMDH4BQJ.js');
6
5
  var chunkI7EBE7BD_js = require('../chunk-I7EBE7BD.js');
6
+ var chunkOYAJG2BO_js = require('../chunk-OYAJG2BO.js');
7
7
  require('../chunk-74SKXGTM.js');
8
8
  var chunkKQZWTTY2_js = require('../chunk-KQZWTTY2.js');
9
- var chunkG7FVHZRB_js = require('../chunk-G7FVHZRB.js');
10
- var chunk2VUMVDR3_js = require('../chunk-2VUMVDR3.js');
11
9
  var chunkPTU5ZAYX_js = require('../chunk-PTU5ZAYX.js');
12
10
  require('../chunk-SCOIRBML.js');
11
+ var chunk7CZDJTPD_js = require('../chunk-7CZDJTPD.js');
12
+ var chunk2VUMVDR3_js = require('../chunk-2VUMVDR3.js');
13
13
  require('../chunk-XR3J46TZ.js');
14
- var chunk5ELR6MIN_js = require('../chunk-5ELR6MIN.js');
15
- require('../chunk-5FU57ZVQ.js');
14
+ var chunk7DGPRPWM_js = require('../chunk-7DGPRPWM.js');
15
+ require('../chunk-MWG7LHAK.js');
16
16
  var chunkT7PIKDUZ_js = require('../chunk-T7PIKDUZ.js');
17
17
  require('../chunk-KOIXQXZB.js');
18
- var chunkTJ2EWPER_js = require('../chunk-TJ2EWPER.js');
18
+ var chunk4TPE5DEG_js = require('../chunk-4TPE5DEG.js');
19
19
  require('../chunk-FBUY6K6S.js');
20
+ require('../chunk-KWBGLH7G.js');
21
+ require('../chunk-OH5VOGNW.js');
20
22
  require('../chunk-Y7BU5RC4.js');
21
23
  require('../chunk-NDF3HORF.js');
22
24
  require('../chunk-USLNTKVQ.js');
23
25
  require('../chunk-D7ATXPVI.js');
24
26
  require('../chunk-IEHY6KNM.js');
25
27
  require('../chunk-3MK7CWEX.js');
28
+ require('../chunk-CJCOURVM.js');
26
29
  require('../chunk-22FJROCI.js');
27
30
  require('../chunk-UJXFD4SK.js');
28
31
  require('../chunk-3EJCQXGV.js');
29
32
  require('../chunk-6KVTKYTB.js');
30
33
  require('../chunk-L7W4NRK6.js');
31
- require('../chunk-KWBGLH7G.js');
32
- require('../chunk-OH5VOGNW.js');
34
+ require('../chunk-A7MU6SFI.js');
33
35
  require('../chunk-WGN2CBG6.js');
34
36
  require('../chunk-SRSRY5K2.js');
35
37
  require('../chunk-UG3GF2BD.js');
36
38
  require('../chunk-BZTAA3MK.js');
37
39
  require('../chunk-PZ25OHJE.js');
38
40
  require('../chunk-HOOZYA4N.js');
39
- require('../chunk-CJCOURVM.js');
41
+ require('../chunk-7DVECOO7.js');
40
42
  require('../chunk-KJMW7S5X.js');
41
43
  require('../chunk-3CYJQ6KF.js');
42
44
  require('../chunk-3453DQNL.js');
43
45
  require('../chunk-DYSXCJGL.js');
44
- require('../chunk-A7MU6SFI.js');
46
+ require('../chunk-PAISX7YL.js');
45
47
  require('../chunk-NYO3W5GY.js');
46
48
  require('../chunk-HNRCPZCK.js');
47
49
  require('../chunk-J2SUGU3X.js');
@@ -49,7 +51,6 @@ require('../chunk-J5NTJVKX.js');
49
51
  require('../chunk-UQQHB3OI.js');
50
52
  require('../chunk-BBM4BKSN.js');
51
53
  require('../chunk-Y5JAQEBF.js');
52
- require('../chunk-7DVECOO7.js');
53
54
  require('../chunk-YPYPWALR.js');
54
55
  require('../chunk-PP3L6M62.js');
55
56
  require('../chunk-BJDT7P2I.js');
@@ -63,14 +64,14 @@ var react = require('react');
63
64
  var classVarianceAuthority = require('class-variance-authority');
64
65
  var jsxRuntime = require('react/jsx-runtime');
65
66
 
66
- var dataTableRootVariants = classVarianceAuthority.cva(chunkTJ2EWPER_js.zuiDataTableRootBase);
67
- var dataTableToolbarVariants = classVarianceAuthority.cva(chunkTJ2EWPER_js.zuiDataTableToolbarBase);
68
- var dataTableToolbarGroupVariants = classVarianceAuthority.cva(chunkTJ2EWPER_js.zuiDataTableToolbarGroupBase);
69
- var dataTableColumnPanelVariants = classVarianceAuthority.cva(chunkTJ2EWPER_js.zuiDataTableColumnPanelBase);
70
- var dataTableStatusVariants = classVarianceAuthority.cva(chunkTJ2EWPER_js.zuiDataTableStatusBase);
71
- var dataTableStateCellVariants = classVarianceAuthority.cva(chunkTJ2EWPER_js.zuiDataTableStateCellBase);
67
+ var dataTableRootVariants = classVarianceAuthority.cva(chunk4TPE5DEG_js.zuiDataTableRootBase);
68
+ var dataTableToolbarVariants = classVarianceAuthority.cva(chunk4TPE5DEG_js.zuiDataTableToolbarBase);
69
+ var dataTableToolbarGroupVariants = classVarianceAuthority.cva(chunk4TPE5DEG_js.zuiDataTableToolbarGroupBase);
70
+ var dataTableColumnPanelVariants = classVarianceAuthority.cva(chunk4TPE5DEG_js.zuiDataTableColumnPanelBase);
71
+ var dataTableStatusVariants = classVarianceAuthority.cva(chunk4TPE5DEG_js.zuiDataTableStatusBase);
72
+ var dataTableStateCellVariants = classVarianceAuthority.cva(chunk4TPE5DEG_js.zuiDataTableStateCellBase);
72
73
  var dataTableVirtualScrollVariants = classVarianceAuthority.cva(
73
- chunkTJ2EWPER_js.zuiDataTableVirtualScrollBase
74
+ chunk4TPE5DEG_js.zuiDataTableVirtualScrollBase
74
75
  );
75
76
  var defaultLoadingContent = "Loading data";
76
77
  var defaultEmptyContent = "No results found";
@@ -493,7 +494,7 @@ function DataTableBase(props) {
493
494
  className: dataTableToolbarGroupVariants(),
494
495
  children: [
495
496
  bulkActions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(
496
- chunk5ELR6MIN_js.Button,
497
+ chunk7DGPRPWM_js.Button,
497
498
  {
498
499
  type: "button",
499
500
  appearance: "outline",
@@ -506,7 +507,7 @@ function DataTableBase(props) {
506
507
  )),
507
508
  enableColumnVisibility ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
508
509
  /* @__PURE__ */ jsxRuntime.jsx(
509
- chunk5ELR6MIN_js.Button,
510
+ chunk7DGPRPWM_js.Button,
510
511
  {
511
512
  type: "button",
512
513
  appearance: "outline",
@@ -583,7 +584,7 @@ function DataTableBase(props) {
583
584
  sortedData.length
584
585
  ] }) : null,
585
586
  /* @__PURE__ */ jsxRuntime.jsx(
586
- chunkG7FVHZRB_js.Pagination,
587
+ chunk7CZDJTPD_js.Pagination,
587
588
  {
588
589
  appearance: resolvedPaginationAppearance,
589
590
  size: resolvedSize,