@simpleapps-com/augur-web 2.2.24 → 2.2.25

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.
@@ -1,156 +1,17 @@
1
1
  "use client";
2
2
  "use client";
3
3
  import {
4
- buttonVariants
5
- } from "./chunk-QICSGVX3.js";
6
-
7
- // src/pagination.tsx
8
- import * as React from "react";
9
- import { LuChevronLeft, LuChevronRight, LuEllipsis } from "react-icons/lu";
10
- import { cn } from "@simpleapps-com/augur-utils/web";
11
- import { jsx, jsxs } from "react/jsx-runtime";
12
- var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx(
13
- "nav",
14
- {
15
- role: "navigation",
16
- "aria-label": "pagination",
17
- className: cn("mx-auto flex w-full justify-center", className),
18
- ...props
19
- }
20
- );
21
- Pagination.displayName = "Pagination";
22
- var PaginationContent = React.forwardRef(
23
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx("ul", { ref, className: cn("flex flex-row items-center gap-1", className), ...props })
24
- );
25
- PaginationContent.displayName = "PaginationContent";
26
- var PaginationItem = React.forwardRef(
27
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx("li", { ref, className: cn("", className), ...props })
28
- );
29
- PaginationItem.displayName = "PaginationItem";
30
- var PaginationLink = ({ className, isActive, size = "icon", ...props }) => /* @__PURE__ */ jsx(
31
- "a",
32
- {
33
- "aria-current": isActive ? "page" : void 0,
34
- className: cn(
35
- buttonVariants({
36
- variant: isActive ? "outline" : "ghost",
37
- size
38
- }),
39
- className
40
- ),
41
- ...props
42
- }
43
- );
44
- PaginationLink.displayName = "PaginationLink";
45
- var PaginationPrevious = ({
46
- className,
47
- ...props
48
- }) => /* @__PURE__ */ jsxs(
49
- PaginationLink,
50
- {
51
- "aria-label": "Go to previous page",
52
- size: "default",
53
- className: cn("gap-1 pl-2.5", className),
54
- ...props,
55
- children: [
56
- /* @__PURE__ */ jsx(LuChevronLeft, { className: "h-4 w-4" }),
57
- /* @__PURE__ */ jsx("span", { children: "Prev" })
58
- ]
59
- }
60
- );
61
- PaginationPrevious.displayName = "PaginationPrevious";
62
- var PaginationNext = ({ className, ...props }) => /* @__PURE__ */ jsxs(
4
+ ListPagination,
5
+ Pagination,
6
+ PaginationContent,
7
+ PaginationEllipsis,
8
+ PaginationItem,
63
9
  PaginationLink,
64
- {
65
- "aria-label": "Go to next page",
66
- size: "default",
67
- className: cn("gap-1 pr-2.5", className),
68
- ...props,
69
- children: [
70
- /* @__PURE__ */ jsx("span", { children: "Next" }),
71
- /* @__PURE__ */ jsx(LuChevronRight, { className: "h-4 w-4" })
72
- ]
73
- }
74
- );
75
- PaginationNext.displayName = "PaginationNext";
76
- var PaginationEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxs(
77
- "span",
78
- {
79
- "aria-hidden": true,
80
- className: cn("flex h-9 w-9 items-center justify-center", className),
81
- ...props,
82
- children: [
83
- /* @__PURE__ */ jsx(LuEllipsis, { className: "h-4 w-4" }),
84
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
85
- ]
86
- }
87
- );
88
- PaginationEllipsis.displayName = "PaginationEllipsis";
89
- function getPageNumbers(current, total) {
90
- if (total <= 0) return [];
91
- if (total === 1) return [1];
92
- const page = Math.max(1, Math.min(current, total));
93
- if (total <= 5) {
94
- return Array.from({ length: total }, (_, i) => i + 1);
95
- }
96
- if (page <= 3) {
97
- return [1, 2, 3, 4, "ellipsis", total];
98
- }
99
- if (page >= total - 2) {
100
- return [1, "ellipsis", total - 3, total - 2, total - 1, total];
101
- }
102
- return [1, "ellipsis", page - 1, page, page + 1, "ellipsis", total];
103
- }
104
- var ListPagination = ({
105
- page,
106
- totalPages,
107
- getHref,
108
- onPageChange,
109
- className
110
- }) => {
111
- if (totalPages <= 1) return null;
112
- const pages = getPageNumbers(page, totalPages);
113
- const isFirst = page <= 1;
114
- const isLast = page >= totalPages;
115
- const handleClick = (target) => (e) => {
116
- if (onPageChange) {
117
- e.preventDefault();
118
- onPageChange(target);
119
- }
120
- };
121
- return /* @__PURE__ */ jsx(Pagination, { className, children: /* @__PURE__ */ jsxs(PaginationContent, { children: [
122
- /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
123
- PaginationPrevious,
124
- {
125
- href: isFirst ? getHref(1) : getHref(page - 1),
126
- "aria-disabled": isFirst || void 0,
127
- className: isFirst ? "pointer-events-none opacity-50" : void 0,
128
- onClick: isFirst ? void 0 : handleClick(page - 1)
129
- }
130
- ) }),
131
- pages.map(
132
- (entry, i) => entry === "ellipsis" ? /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationEllipsis, {}) }, `ellipsis-${i}`) : /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
133
- PaginationLink,
134
- {
135
- href: getHref(entry),
136
- isActive: entry === page,
137
- onClick: handleClick(entry),
138
- children: entry
139
- }
140
- ) }, entry)
141
- ),
142
- /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
143
- PaginationNext,
144
- {
145
- href: isLast ? getHref(totalPages) : getHref(page + 1),
146
- "aria-disabled": isLast || void 0,
147
- className: isLast ? "pointer-events-none opacity-50" : void 0,
148
- onClick: isLast ? void 0 : handleClick(page + 1)
149
- }
150
- ) })
151
- ] }) });
152
- };
153
- ListPagination.displayName = "ListPagination";
10
+ PaginationNext,
11
+ PaginationPrevious,
12
+ getPageNumbers
13
+ } from "./chunk-3VN3FX2Q.js";
14
+ import "./chunk-QICSGVX3.js";
154
15
  export {
155
16
  ListPagination,
156
17
  Pagination,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pagination.tsx"],"sourcesContent":["/** Pagination navigation components, styled with buttonVariants. */\n\"use client\";\n\nimport * as React from \"react\";\nimport { LuChevronLeft, LuChevronRight, LuEllipsis } from \"react-icons/lu\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { type ButtonProps, buttonVariants } from \"./button\";\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n);\nPagination.displayName = \"Pagination\";\n\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n ({ className, ...props }, ref) => (\n <ul ref={ref} className={cn(\"flex flex-row items-center gap-1\", className)} {...props} />\n ),\n);\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n ({ className, ...props }, ref) => <li ref={ref} className={cn(\"\", className)} {...props} />,\n);\nPaginationItem.displayName = \"PaginationItem\";\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">;\n\nconst PaginationLink = ({ className, isActive, size = \"icon\", ...props }: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n);\nPaginationLink.displayName = \"PaginationLink\";\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <LuChevronLeft className=\"h-4 w-4\" />\n <span>Prev</span>\n </PaginationLink>\n);\nPaginationPrevious.displayName = \"PaginationPrevious\";\n\nconst PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <LuChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n);\nPaginationNext.displayName = \"PaginationNext\";\n\nconst PaginationEllipsis = ({ className, ...props }: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <LuEllipsis className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\n/** Build an array of page numbers and ellipsis markers for pagination UI. */\nfunction getPageNumbers(current: number, total: number): (number | \"ellipsis\")[] {\n if (total <= 0) return [];\n if (total === 1) return [1];\n\n const page = Math.max(1, Math.min(current, total));\n\n if (total <= 5) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n if (page <= 3) {\n return [1, 2, 3, 4, \"ellipsis\", total];\n }\n\n if (page >= total - 2) {\n return [1, \"ellipsis\", total - 3, total - 2, total - 1, total];\n }\n\n return [1, \"ellipsis\", page - 1, page, page + 1, \"ellipsis\", total];\n}\n\ntype ListPaginationProps = {\n /** Current page number (1-indexed). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Builds a crawlable href for each page link (required for SEO). */\n getHref: (page: number) => string;\n /** Optional client-side callback layered on top of href navigation. */\n onPageChange?: (page: number) => void;\n className?: string;\n};\n\nconst ListPagination = ({\n page,\n totalPages,\n getHref,\n onPageChange,\n className,\n}: ListPaginationProps) => {\n if (totalPages <= 1) return null;\n\n const pages = getPageNumbers(page, totalPages);\n const isFirst = page <= 1;\n const isLast = page >= totalPages;\n\n const handleClick = (target: number) => (e: React.MouseEvent) => {\n if (onPageChange) {\n e.preventDefault();\n onPageChange(target);\n }\n };\n\n return (\n <Pagination className={className}>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious\n href={isFirst ? getHref(1) : getHref(page - 1)}\n aria-disabled={isFirst || undefined}\n className={isFirst ? \"pointer-events-none opacity-50\" : undefined}\n onClick={isFirst ? undefined : handleClick(page - 1)}\n />\n </PaginationItem>\n\n {pages.map((entry, i) =>\n entry === \"ellipsis\" ? (\n <PaginationItem key={`ellipsis-${i}`}>\n <PaginationEllipsis />\n </PaginationItem>\n ) : (\n <PaginationItem key={entry}>\n <PaginationLink\n href={getHref(entry)}\n isActive={entry === page}\n onClick={handleClick(entry)}\n >\n {entry}\n </PaginationLink>\n </PaginationItem>\n ),\n )}\n\n <PaginationItem>\n <PaginationNext\n href={isLast ? getHref(totalPages) : getHref(page + 1)}\n aria-disabled={isLast || undefined}\n className={isLast ? \"pointer-events-none opacity-50\" : undefined}\n onClick={isLast ? undefined : handleClick(page + 1)}\n />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n );\n};\nListPagination.displayName = \"ListPagination\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n getPageNumbers,\n ListPagination,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simpleapps-com/augur-web",
3
- "version": "2.2.24",
3
+ "version": "2.2.25",
4
4
  "description": "Shared React UI components for Augur ecommerce sites (Radix + Tailwind)",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -228,9 +228,9 @@
228
228
  "llms.txt"
229
229
  ],
230
230
  "dependencies": {
231
- "@simpleapps-com/augur-core": "2.2.24",
232
- "@simpleapps-com/augur-hooks": "2.2.24",
233
- "@simpleapps-com/augur-utils": "2.2.24"
231
+ "@simpleapps-com/augur-core": "2.2.25",
232
+ "@simpleapps-com/augur-hooks": "2.2.25",
233
+ "@simpleapps-com/augur-utils": "2.2.25"
234
234
  },
235
235
  "peerDependencies": {
236
236
  "@radix-ui/react-accordion": "^1.2.0",
@@ -282,8 +282,8 @@
282
282
  "tsup": "^8.5.0",
283
283
  "vitest": "^3.2.0",
284
284
  "@augur-packages/tsconfig": "0.0.0",
285
- "@simpleapps-com/augur-core": "2.2.24",
286
- "@simpleapps-com/augur-hooks": "2.2.24"
285
+ "@simpleapps-com/augur-core": "2.2.25",
286
+ "@simpleapps-com/augur-hooks": "2.2.25"
287
287
  },
288
288
  "scripts": {
289
289
  "build": "tsup",