@simpleapps-com/augur-web 2.3.1 → 2026.11.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 (255) hide show
  1. package/EXPORTS.md +18 -189
  2. package/README.md +18 -364
  3. package/dist/accordion.cjs.map +1 -1
  4. package/dist/accordion.d.ts +4 -5
  5. package/dist/accordion.d.ts.map +1 -0
  6. package/dist/add-to-cart-button.cjs.map +1 -1
  7. package/dist/add-to-cart-button.d.ts +5 -8
  8. package/dist/add-to-cart-button.d.ts.map +1 -0
  9. package/dist/breadcrumb.cjs.map +1 -1
  10. package/dist/breadcrumb.d.ts +5 -7
  11. package/dist/breadcrumb.d.ts.map +1 -0
  12. package/dist/breadcrumbs.cjs.map +1 -1
  13. package/dist/breadcrumbs.d.ts +4 -4
  14. package/dist/breadcrumbs.d.ts.map +1 -0
  15. package/dist/button.cjs.map +1 -1
  16. package/dist/button.d.ts +7 -9
  17. package/dist/button.d.ts.map +1 -0
  18. package/dist/card.cjs.map +1 -1
  19. package/dist/card.d.ts +3 -4
  20. package/dist/card.d.ts.map +1 -0
  21. package/dist/checkbox.cjs.map +1 -1
  22. package/dist/checkbox.d.ts +3 -4
  23. package/dist/checkbox.d.ts.map +1 -0
  24. package/dist/chunk-32XB3REY.cjs.map +1 -1
  25. package/dist/chunk-5VMEEKZ5.cjs.map +1 -1
  26. package/dist/chunk-5ZITWMV4.cjs.map +1 -1
  27. package/dist/chunk-76RSVRGB.cjs.map +1 -1
  28. package/dist/chunk-7EXXNELX.cjs.map +1 -1
  29. package/dist/chunk-BXMTQGKV.cjs.map +1 -1
  30. package/dist/chunk-EEJYDSXR.cjs +220 -0
  31. package/dist/chunk-EEJYDSXR.cjs.map +1 -0
  32. package/dist/chunk-GSR6SMQ2.cjs.map +1 -1
  33. package/dist/{chunk-3VN3FX2Q.js → chunk-JWTTXZDS.js} +18 -20
  34. package/dist/chunk-JWTTXZDS.js.map +1 -0
  35. package/dist/chunk-JXW4XE2P.cjs.map +1 -1
  36. package/dist/chunk-MAENILZP.cjs.map +1 -1
  37. package/dist/chunk-NEY26NNF.cjs.map +1 -1
  38. package/dist/{chunk-NSSX7USQ.cjs → chunk-OQV27VC5.cjs} +18 -20
  39. package/dist/chunk-OQV27VC5.cjs.map +1 -0
  40. package/dist/{chunk-DCXYO3RB.js → chunk-PFEPE5UE.js} +7 -3
  41. package/dist/chunk-PFEPE5UE.js.map +1 -0
  42. package/dist/chunk-T52J3SHP.cjs.map +1 -1
  43. package/dist/chunk-UFL6PVLI.cjs.map +1 -1
  44. package/dist/chunk-VI2IE6RC.js +220 -0
  45. package/dist/chunk-VI2IE6RC.js.map +1 -0
  46. package/dist/chunk-VL6L4GDA.cjs.map +1 -1
  47. package/dist/chunk-WJUDOEVB.cjs.map +1 -1
  48. package/dist/chunk-XGKBDPGD.cjs.map +1 -1
  49. package/dist/{chunk-AE4GLYJE.cjs → chunk-YTBB63IE.cjs} +7 -3
  50. package/dist/chunk-YTBB63IE.cjs.map +1 -0
  51. package/dist/chunk-Z57QBVUC.cjs.map +1 -1
  52. package/dist/command.cjs +7 -2
  53. package/dist/command.cjs.map +1 -1
  54. package/dist/command.d.ts +17 -16
  55. package/dist/command.d.ts.map +1 -0
  56. package/dist/command.js +8 -3
  57. package/dist/command.js.map +1 -1
  58. package/dist/confirm-dialog.cjs +1 -1
  59. package/dist/confirm-dialog.cjs.map +1 -1
  60. package/dist/confirm-dialog.d.ts +4 -6
  61. package/dist/confirm-dialog.d.ts.map +1 -0
  62. package/dist/confirm-dialog.js +1 -1
  63. package/dist/confirm-dialog.js.map +1 -1
  64. package/dist/data-table.cjs +46 -34
  65. package/dist/data-table.cjs.map +1 -1
  66. package/dist/data-table.d.ts +9 -11
  67. package/dist/data-table.d.ts.map +1 -0
  68. package/dist/data-table.js +45 -33
  69. package/dist/data-table.js.map +1 -1
  70. package/dist/detail-panel.cjs +3 -3
  71. package/dist/detail-panel.cjs.map +1 -1
  72. package/dist/detail-panel.d.ts +6 -8
  73. package/dist/detail-panel.d.ts.map +1 -0
  74. package/dist/detail-panel.js +3 -3
  75. package/dist/dialog.cjs.map +1 -1
  76. package/dist/dialog.d.ts +6 -8
  77. package/dist/dialog.d.ts.map +1 -0
  78. package/dist/dropdown-menu.cjs.map +1 -1
  79. package/dist/dropdown-menu.d.ts +5 -7
  80. package/dist/dropdown-menu.d.ts.map +1 -0
  81. package/dist/financing-widget.cjs +1 -3
  82. package/dist/financing-widget.cjs.map +1 -1
  83. package/dist/financing-widget.d.ts +5 -6
  84. package/dist/financing-widget.d.ts.map +1 -0
  85. package/dist/financing-widget.js +1 -3
  86. package/dist/financing-widget.js.map +1 -1
  87. package/dist/form-field.cjs.map +1 -1
  88. package/dist/form-field.d.ts +4 -5
  89. package/dist/form-field.d.ts.map +1 -0
  90. package/dist/form-input.cjs.map +1 -1
  91. package/dist/form-input.d.ts +4 -5
  92. package/dist/form-input.d.ts.map +1 -0
  93. package/dist/form-select.cjs.map +1 -1
  94. package/dist/form-select.d.ts +4 -5
  95. package/dist/form-select.d.ts.map +1 -0
  96. package/dist/form-textarea.cjs.map +1 -1
  97. package/dist/form-textarea.d.ts +4 -5
  98. package/dist/form-textarea.d.ts.map +1 -0
  99. package/dist/gtm.cjs +3 -2
  100. package/dist/gtm.cjs.map +1 -1
  101. package/dist/gtm.d.ts +12 -15
  102. package/dist/gtm.d.ts.map +1 -0
  103. package/dist/gtm.js +2 -1
  104. package/dist/input.cjs.map +1 -1
  105. package/dist/input.d.ts +4 -5
  106. package/dist/input.d.ts.map +1 -0
  107. package/dist/label.cjs.map +1 -1
  108. package/dist/label.d.ts +5 -7
  109. package/dist/label.d.ts.map +1 -0
  110. package/dist/list-view.cjs.map +1 -1
  111. package/dist/list-view.d.ts +5 -7
  112. package/dist/list-view.d.ts.map +1 -0
  113. package/dist/mdx-components.cjs +5 -2
  114. package/dist/mdx-components.cjs.map +1 -1
  115. package/dist/mdx-components.d.ts +11 -6
  116. package/dist/mdx-components.d.ts.map +1 -0
  117. package/dist/mdx-components.js +5 -2
  118. package/dist/mdx-components.js.map +1 -1
  119. package/dist/navigation-menu.cjs.map +1 -1
  120. package/dist/navigation-menu.d.ts +5 -7
  121. package/dist/navigation-menu.d.ts.map +1 -0
  122. package/dist/pagination.cjs +3 -2
  123. package/dist/pagination.cjs.map +1 -1
  124. package/dist/pagination.d.ts +10 -14
  125. package/dist/pagination.d.ts.map +1 -0
  126. package/dist/pagination.js +2 -1
  127. package/dist/payment-modal.cjs +20 -19
  128. package/dist/payment-modal.cjs.map +1 -1
  129. package/dist/payment-modal.d.ts +5 -7
  130. package/dist/payment-modal.d.ts.map +1 -0
  131. package/dist/payment-modal.js +19 -18
  132. package/dist/payment-modal.js.map +1 -1
  133. package/dist/popover.cjs.map +1 -1
  134. package/dist/popover.d.ts +4 -5
  135. package/dist/popover.d.ts.map +1 -0
  136. package/dist/price-format.cjs +27 -5
  137. package/dist/price-format.cjs.map +1 -1
  138. package/dist/price-format.d.ts +4 -5
  139. package/dist/price-format.d.ts.map +1 -0
  140. package/dist/price-format.js +26 -4
  141. package/dist/price-format.js.map +1 -1
  142. package/dist/price.cjs +34 -5
  143. package/dist/price.cjs.map +1 -1
  144. package/dist/price.d.ts +8 -10
  145. package/dist/price.d.ts.map +1 -0
  146. package/dist/price.js +32 -3
  147. package/dist/price.js.map +1 -1
  148. package/dist/provider.cjs +4 -2
  149. package/dist/provider.cjs.map +1 -1
  150. package/dist/provider.d.ts +7 -10
  151. package/dist/provider.d.ts.map +1 -0
  152. package/dist/provider.js +3 -1
  153. package/dist/provider.js.map +1 -1
  154. package/dist/quantity-input.cjs +27 -40
  155. package/dist/quantity-input.cjs.map +1 -1
  156. package/dist/quantity-input.d.ts +4 -5
  157. package/dist/quantity-input.d.ts.map +1 -0
  158. package/dist/quantity-input.js +27 -40
  159. package/dist/quantity-input.js.map +1 -1
  160. package/dist/radio-group.cjs.map +1 -1
  161. package/dist/radio-group.d.ts +3 -4
  162. package/dist/radio-group.d.ts.map +1 -0
  163. package/dist/resource-tabs.cjs +1 -0
  164. package/dist/resource-tabs.cjs.map +1 -1
  165. package/dist/resource-tabs.d.ts +6 -8
  166. package/dist/resource-tabs.d.ts.map +1 -0
  167. package/dist/resource-tabs.js +1 -0
  168. package/dist/resource-tabs.js.map +1 -1
  169. package/dist/rules.d.ts +210 -0
  170. package/dist/rules.d.ts.map +1 -0
  171. package/dist/select.cjs.map +1 -1
  172. package/dist/select.d.ts +4 -5
  173. package/dist/select.d.ts.map +1 -0
  174. package/dist/separator.cjs.map +1 -1
  175. package/dist/separator.d.ts +3 -4
  176. package/dist/separator.d.ts.map +1 -0
  177. package/dist/session-replay.cjs +4 -2
  178. package/dist/session-replay.cjs.map +1 -1
  179. package/dist/session-replay.d.ts +4 -5
  180. package/dist/session-replay.d.ts.map +1 -0
  181. package/dist/session-replay.js +4 -2
  182. package/dist/session-replay.js.map +1 -1
  183. package/dist/skeleton.cjs.map +1 -1
  184. package/dist/skeleton.d.ts +2 -4
  185. package/dist/skeleton.d.ts.map +1 -0
  186. package/dist/spinner.cjs.map +1 -1
  187. package/dist/spinner.d.ts +2 -4
  188. package/dist/spinner.d.ts.map +1 -0
  189. package/dist/stock-label.cjs +14 -12
  190. package/dist/stock-label.cjs.map +1 -1
  191. package/dist/stock-label.d.ts +7 -7
  192. package/dist/stock-label.d.ts.map +1 -0
  193. package/dist/stock-label.js +14 -12
  194. package/dist/stock-label.js.map +1 -1
  195. package/dist/table.cjs.map +1 -1
  196. package/dist/table.d.ts +3 -4
  197. package/dist/table.d.ts.map +1 -0
  198. package/dist/tabs.cjs.map +1 -1
  199. package/dist/tabs.d.ts +4 -5
  200. package/dist/tabs.d.ts.map +1 -0
  201. package/dist/textarea.cjs.map +1 -1
  202. package/dist/textarea.d.ts +4 -5
  203. package/dist/textarea.d.ts.map +1 -0
  204. package/llms.txt +23 -38
  205. package/package.json +26 -17
  206. package/dist/accordion.d.cts +0 -9
  207. package/dist/add-to-cart-button.d.cts +0 -14
  208. package/dist/breadcrumb.d.cts +0 -22
  209. package/dist/breadcrumbs.d.cts +0 -31
  210. package/dist/button.d.cts +0 -27
  211. package/dist/card.d.cts +0 -10
  212. package/dist/checkbox.d.cts +0 -6
  213. package/dist/chunk-3VN3FX2Q.js.map +0 -1
  214. package/dist/chunk-AE4GLYJE.cjs.map +0 -1
  215. package/dist/chunk-DCXYO3RB.js.map +0 -1
  216. package/dist/chunk-DZDC4HHK.js +0 -33
  217. package/dist/chunk-DZDC4HHK.js.map +0 -1
  218. package/dist/chunk-NSSX7USQ.cjs.map +0 -1
  219. package/dist/chunk-VLZDTWPR.cjs +0 -33
  220. package/dist/chunk-VLZDTWPR.cjs.map +0 -1
  221. package/dist/command.d.cts +0 -84
  222. package/dist/confirm-dialog.d.cts +0 -35
  223. package/dist/data-table.d.cts +0 -55
  224. package/dist/detail-panel.d.cts +0 -59
  225. package/dist/dialog.d.cts +0 -22
  226. package/dist/dropdown-menu.d.cts +0 -30
  227. package/dist/financing-widget.d.cts +0 -45
  228. package/dist/form-field.d.cts +0 -14
  229. package/dist/form-input.d.cts +0 -19
  230. package/dist/form-select.d.cts +0 -34
  231. package/dist/form-textarea.d.cts +0 -12
  232. package/dist/gtm.d.cts +0 -69
  233. package/dist/input.d.cts +0 -6
  234. package/dist/label.d.cts +0 -8
  235. package/dist/list-view.d.cts +0 -18
  236. package/dist/mdx-components.d.cts +0 -20
  237. package/dist/navigation-menu.d.cts +0 -15
  238. package/dist/pagination.d.cts +0 -50
  239. package/dist/payment-modal.d.cts +0 -30
  240. package/dist/popover.d.cts +0 -9
  241. package/dist/price-format.d.cts +0 -21
  242. package/dist/price.d.cts +0 -78
  243. package/dist/provider.d.cts +0 -47
  244. package/dist/quantity-input.d.cts +0 -33
  245. package/dist/radio-group.d.cts +0 -7
  246. package/dist/resource-tabs.d.cts +0 -33
  247. package/dist/select.d.cts +0 -15
  248. package/dist/separator.d.cts +0 -6
  249. package/dist/session-replay.d.cts +0 -44
  250. package/dist/skeleton.d.cts +0 -5
  251. package/dist/spinner.d.cts +0 -10
  252. package/dist/stock-label.d.cts +0 -47
  253. package/dist/table.d.cts +0 -12
  254. package/dist/tabs.d.cts +0 -9
  255. package/dist/textarea.d.cts +0 -6
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-AE4GLYJE.cjs","../src/gtm.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACAA,8BAAkF;AAmNzE,+CAAA;AAnIT,IAAM,iBAAA,EAAmB,kCAAA,IAAgD,CAAA;AAYzE,SAAS,YAAA,CAAA,EAA0C;AAEjD,EAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa,OAAO,CAAC,CAAA;AAC3C,EAAA,GAAA,CAAI,CAAC,MAAA,CAAO,SAAA,EAAW,MAAA,CAAO,UAAA,EAAY,CAAC,CAAA;AAC3C,EAAA,OAAO,MAAA,CAAO,SAAA;AAChB;AAEA,SAAS,eAAA,CAAgB,KAAA,EAAe,QAAA,EAAmC;AAEzE,EAAA,GAAA,CAAI,OAAO,SAAA,IAAa,WAAA,EAAa,MAAA;AAGrC,EAAA,GAAA,CAAI,QAAA,CAAS,cAAA,CAAe,YAAY,CAAA,EAAG,MAAA;AAE3C,EAAA,MAAM,UAAA,EAAY,YAAA,CAAa,CAAA;AAC/B,EAAA,SAAA,CAAU,IAAA,CAAK,EAAE,WAAA,EAAA,iBAAa,IAAI,IAAA,CAAK,CAAA,CAAA,CAAE,OAAA,CAAQ,CAAA,EAAG,KAAA,EAAO,SAAS,CAAC,CAAA;AAErE,EAAA,MAAM,OAAA,EAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,EAAA,MAAA,CAAO,GAAA,EAAK,YAAA;AACZ,EAAA,MAAA,CAAO,IAAA,EAAM,CAAA,2CAAA,EAA8C,kBAAA,CAAmB,KAAK,CAAC,CAAA,CAAA;AAErD,EAAA;AACd,IAAA;AACA,IAAA;AACV,EAAA;AAEU,IAAA;AACjB,EAAA;AAEgC,EAAA;AAClC;AAMkC;AAChC,EAAA;AACW,EAAA;AACO,EAAA;AACV,EAAA;AACR,EAAA;AACyB;AACoC,EAAA;AACf,EAAA;AACd,EAAA;AAEE,EAAA;AACP,IAAA;AACH,IAAA;AAEsD,IAAA;AAChD,MAAA;AACO,QAAA;AACf,QAAA;AACjB,MAAA;AACyC,IAAA;AAEzB,MAAA;AACgB,QAAA;AACf,QAAA;AACd,MAAA;AACC,IAAA;AAC0B,MAAA;AACf,MAAA;AAClB,IAAA;AACkB,EAAA;AAIqD,EAAA;AAC/D,IAAA;AACV,EAAA;AAEmB,EAAA;AACoC,IAAA;AAClB,MAAA;AACtB,MAAA;AACuB,QAAA;AAClC,MAAA;AACyB,MAAA;AAC3B,IAAA;AACM,IAAA;AACR,EAAA;AAE4B,EAAA;AAC0B,IAAA;AAEX,MAAA;AACE,MAAA;AAC9B,MAAA;AACiC,QAAA;AAC5C,MAAA;AACyB,MAAA;AAC3B,IAAA;AACM,IAAA;AACR,EAAA;AAEuC,EAAA;AACnB,IAAA;AACV,IAAA;AACE,EAAA;AAE4B,EAAA;AACnB,IAAA;AAChB,EAAA;AAES,EAAA;AACL,IAAA;AACL,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACmF,IAAA;AACrF,EAAA;AAE0D,EAAA;AAC5D;AAMsD;AACT,EAAA;AAC7B,EAAA;AAC6D,IAAA;AAC3E,EAAA;AACO,EAAA;AACT;AAWqE;AAG/D,EAAA;AAAC,IAAA;AAAA,IAAA;AAC8E,MAAA;AACtE,MAAA;AACD,MAAA;AACyC,MAAA;AACzC,MAAA;AAAA,IAAA;AAEV,EAAA;AAEJ;ADnIuF;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-AE4GLYJE.cjs","sourcesContent":[null,"\"use client\";\n\nimport { createContext, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Script loading strategy. */\nexport type AnalyticsStrategy = \"default\" | \"afterInteractive\" | \"lazyOnload\";\n\n/** GA4 standard e-commerce event names. */\nexport type EcommerceEvent =\n | \"view_item\"\n | \"view_item_list\"\n | \"select_item\"\n | \"add_to_cart\"\n | \"remove_from_cart\"\n | \"view_cart\"\n | \"begin_checkout\"\n | \"add_shipping_info\"\n | \"add_payment_info\"\n | \"purchase\"\n | \"refund\";\n\n/** GA4 e-commerce item shape. */\nexport interface EcommerceItem {\n item_id: string;\n item_name?: string;\n item_brand?: string;\n item_category?: string;\n item_variant?: string;\n price?: number;\n quantity?: number;\n index?: number;\n [key: string]: unknown;\n}\n\n/** Parameters for e-commerce events. */\nexport interface EcommerceParams {\n currency?: string;\n value?: number;\n items?: EcommerceItem[];\n transaction_id?: string;\n shipping?: number;\n tax?: number;\n coupon?: string;\n [key: string]: unknown;\n}\n\nexport interface AnalyticsProviderProps {\n /** GTM container ID (e.g. \"GTM-XXXXX\"). */\n gtmId: string;\n /** Script loading strategy. Default: \"afterInteractive\". */\n strategy?: AnalyticsStrategy;\n /** Delay GTM loading until consent is granted. Default: false. */\n consentRequired?: boolean;\n /** Log dataLayer pushes to console. Default: false. */\n debug?: boolean;\n children: ReactNode;\n}\n\nexport interface AnalyticsContextValue {\n /** Push a custom event to the dataLayer. */\n trackEvent: (event: string, params?: Record<string, unknown>) => void;\n /** Push a GA4 e-commerce event to the dataLayer. */\n trackEcommerceEvent: (event: EcommerceEvent, params: EcommerceParams) => void;\n /** Grant consent — loads GTM if consentRequired was true. */\n grantConsent: () => void;\n /** Revoke consent. Does not unload GTM (scripts can't be unloaded). */\n revokeConsent: () => void;\n /** Whether consent has been granted. */\n hasConsent: boolean;\n /** Whether the GTM script has been injected. */\n isLoaded: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\nconst AnalyticsContext = createContext<AnalyticsContextValue | null>(null);\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ndeclare global {\n interface Window {\n dataLayer?: Record<string, unknown>[];\n }\n}\n\nfunction getDataLayer(): Record<string, unknown>[] {\n /* v8 ignore next */\n if (typeof window === \"undefined\") return [];\n if (!window.dataLayer) window.dataLayer = [];\n return window.dataLayer;\n}\n\nfunction injectGtmScript(gtmId: string, strategy: AnalyticsStrategy): void {\n /* v8 ignore next */\n if (typeof document === \"undefined\") return;\n\n // Prevent double-injection\n if (document.getElementById(\"gtm-script\")) return;\n\n const dataLayer = getDataLayer();\n dataLayer.push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n\n const script = document.createElement(\"script\");\n script.id = \"gtm-script\";\n script.src = `https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(gtmId)}`;\n\n if (strategy === \"lazyOnload\") {\n script.async = true;\n script.defer = true;\n } else {\n // \"default\" and \"afterInteractive\"\n script.async = true;\n }\n\n document.head.appendChild(script);\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport function AnalyticsProvider({\n gtmId,\n strategy = \"afterInteractive\",\n consentRequired = false,\n debug = false,\n children,\n}: AnalyticsProviderProps) {\n const [hasConsent, setHasConsent] = useState(!consentRequired);\n const [isLoaded, setIsLoaded] = useState(false);\n const injectedRef = useRef(false);\n\n const loadGtm = useCallback(() => {\n if (injectedRef.current) return;\n injectedRef.current = true;\n\n if (strategy === \"lazyOnload\" && typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n });\n } else if (strategy === \"afterInteractive\") {\n // Defer to after hydration\n setTimeout(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }, 0);\n } else {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }\n }, [gtmId, strategy]);\n\n // Auto-load when consent is not required or already granted\n /* v8 ignore next */\n if (hasConsent && !injectedRef.current && typeof window !== \"undefined\") {\n loadGtm();\n }\n\n const trackEvent = useCallback(\n (event: string, params?: Record<string, unknown>) => {\n const entry = { event, ...params };\n if (debug) {\n console.log(\"[Analytics]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const trackEcommerceEvent = useCallback(\n (event: EcommerceEvent, params: EcommerceParams) => {\n // Clear previous ecommerce data per GA4 best practices\n getDataLayer().push({ ecommerce: null });\n const entry = { event, ecommerce: params };\n if (debug) {\n console.log(\"[Analytics ecommerce]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const grantConsent = useCallback(() => {\n setHasConsent(true);\n loadGtm();\n }, [loadGtm]);\n\n const revokeConsent = useCallback(() => {\n setHasConsent(false);\n }, []);\n\n const value = useMemo<AnalyticsContextValue>(\n () => ({\n trackEvent,\n trackEcommerceEvent,\n grantConsent,\n revokeConsent,\n hasConsent,\n isLoaded,\n }),\n [trackEvent, trackEcommerceEvent, grantConsent, revokeConsent, hasConsent, isLoaded],\n );\n\n return <AnalyticsContext.Provider value={value}>{children}</AnalyticsContext.Provider>;\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useAnalytics(): AnalyticsContextValue {\n const context = useContext(AnalyticsContext);\n if (!context) {\n throw new Error(\"useAnalytics must be used within an <AnalyticsProvider>\");\n }\n return context;\n}\n\n// ---------------------------------------------------------------------------\n// Noscript\n// ---------------------------------------------------------------------------\n\nexport interface AnalyticsNoscriptProps {\n /** GTM container ID (must match AnalyticsProvider). */\n gtmId: string;\n}\n\nexport function AnalyticsNoscript({ gtmId }: AnalyticsNoscriptProps) {\n return (\n <noscript>\n <iframe\n src={`https://www.googletagmanager.com/ns.html?id=${encodeURIComponent(gtmId)}`}\n height=\"0\"\n width=\"0\"\n style={{ display: \"none\", visibility: \"hidden\" }}\n title=\"Google Tag Manager\"\n />\n </noscript>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/gtm.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Script loading strategy. */\nexport type AnalyticsStrategy = \"default\" | \"afterInteractive\" | \"lazyOnload\";\n\n/** GA4 standard e-commerce event names. */\nexport type EcommerceEvent =\n | \"view_item\"\n | \"view_item_list\"\n | \"select_item\"\n | \"add_to_cart\"\n | \"remove_from_cart\"\n | \"view_cart\"\n | \"begin_checkout\"\n | \"add_shipping_info\"\n | \"add_payment_info\"\n | \"purchase\"\n | \"refund\";\n\n/** GA4 e-commerce item shape. */\nexport interface EcommerceItem {\n item_id: string;\n item_name?: string;\n item_brand?: string;\n item_category?: string;\n item_variant?: string;\n price?: number;\n quantity?: number;\n index?: number;\n [key: string]: unknown;\n}\n\n/** Parameters for e-commerce events. */\nexport interface EcommerceParams {\n currency?: string;\n value?: number;\n items?: EcommerceItem[];\n transaction_id?: string;\n shipping?: number;\n tax?: number;\n coupon?: string;\n [key: string]: unknown;\n}\n\nexport interface AnalyticsProviderProps {\n /** GTM container ID (e.g. \"GTM-XXXXX\"). */\n gtmId: string;\n /** Script loading strategy. Default: \"afterInteractive\". */\n strategy?: AnalyticsStrategy;\n /** Delay GTM loading until consent is granted. Default: false. */\n consentRequired?: boolean;\n /** Log dataLayer pushes to console. Default: false. */\n debug?: boolean;\n children: ReactNode;\n}\n\nexport interface AnalyticsContextValue {\n /** Push a custom event to the dataLayer. */\n trackEvent: (event: string, params?: Record<string, unknown>) => void;\n /** Push a GA4 e-commerce event to the dataLayer. */\n trackEcommerceEvent: (event: EcommerceEvent, params: EcommerceParams) => void;\n /** Grant consent — loads GTM if consentRequired was true. */\n grantConsent: () => void;\n /** Revoke consent. Does not unload GTM (scripts can't be unloaded). */\n revokeConsent: () => void;\n /** Whether consent has been granted. */\n hasConsent: boolean;\n /** Whether the GTM script has been injected. */\n isLoaded: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\nconst AnalyticsContext = createContext<AnalyticsContextValue | null>(null);\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ndeclare global {\n interface Window {\n dataLayer?: Record<string, unknown>[];\n }\n}\n\nfunction getDataLayer(): Record<string, unknown>[] {\n /* v8 ignore next */\n if (typeof window === \"undefined\") return [];\n if (!window.dataLayer) window.dataLayer = [];\n return window.dataLayer;\n}\n\nfunction injectGtmScript(gtmId: string, strategy: AnalyticsStrategy): void {\n /* v8 ignore next */\n if (typeof document === \"undefined\") return;\n\n // Prevent double-injection\n if (document.getElementById(\"gtm-script\")) return;\n\n const dataLayer = getDataLayer();\n dataLayer.push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n\n const script = document.createElement(\"script\");\n script.id = \"gtm-script\";\n script.src = `https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(gtmId)}`;\n\n if (strategy === \"lazyOnload\") {\n script.async = true;\n script.defer = true;\n } else {\n // \"default\" and \"afterInteractive\"\n script.async = true;\n }\n\n document.head.appendChild(script);\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport function AnalyticsProvider({\n gtmId,\n strategy = \"afterInteractive\",\n consentRequired = false,\n debug = false,\n children,\n}: AnalyticsProviderProps) {\n const [hasConsent, setHasConsent] = useState(!consentRequired);\n const [isLoaded, setIsLoaded] = useState(false);\n const injectedRef = useRef(false);\n\n const loadGtm = useCallback(() => {\n if (injectedRef.current) return;\n injectedRef.current = true;\n\n if (strategy === \"lazyOnload\" && typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n });\n } else if (strategy === \"afterInteractive\") {\n // Defer to after hydration\n setTimeout(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }, 0);\n } else {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }\n }, [gtmId, strategy]);\n\n // Auto-load when consent is not required or already granted\n /* v8 ignore next */\n if (hasConsent && !injectedRef.current && typeof window !== \"undefined\") {\n loadGtm();\n }\n\n const trackEvent = useCallback(\n (event: string, params?: Record<string, unknown>) => {\n const entry = { event, ...params };\n if (debug) {\n console.log(\"[Analytics]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const trackEcommerceEvent = useCallback(\n (event: EcommerceEvent, params: EcommerceParams) => {\n // Clear previous ecommerce data per GA4 best practices\n getDataLayer().push({ ecommerce: null });\n const entry = { event, ecommerce: params };\n if (debug) {\n console.log(\"[Analytics ecommerce]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const grantConsent = useCallback(() => {\n setHasConsent(true);\n loadGtm();\n }, [loadGtm]);\n\n const revokeConsent = useCallback(() => {\n setHasConsent(false);\n }, []);\n\n const value = useMemo<AnalyticsContextValue>(\n () => ({\n trackEvent,\n trackEcommerceEvent,\n grantConsent,\n revokeConsent,\n hasConsent,\n isLoaded,\n }),\n [trackEvent, trackEcommerceEvent, grantConsent, revokeConsent, hasConsent, isLoaded],\n );\n\n return <AnalyticsContext.Provider value={value}>{children}</AnalyticsContext.Provider>;\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useAnalytics(): AnalyticsContextValue {\n const context = useContext(AnalyticsContext);\n if (!context) {\n throw new Error(\"useAnalytics must be used within an <AnalyticsProvider>\");\n }\n return context;\n}\n\n// ---------------------------------------------------------------------------\n// Noscript\n// ---------------------------------------------------------------------------\n\nexport interface AnalyticsNoscriptProps {\n /** GTM container ID (must match AnalyticsProvider). */\n gtmId: string;\n}\n\nexport function AnalyticsNoscript({ gtmId }: AnalyticsNoscriptProps) {\n return (\n <noscript>\n <iframe\n src={`https://www.googletagmanager.com/ns.html?id=${encodeURIComponent(gtmId)}`}\n height=\"0\"\n width=\"0\"\n style={{ display: \"none\", visibility: \"hidden\" }}\n title=\"Google Tag Manager\"\n />\n </noscript>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,33 +0,0 @@
1
- "use client";
2
-
3
- // src/price-format.ts
4
- var formatDefaults = {
5
- currency: "USD",
6
- locale: "en-US",
7
- precision: 2
8
- };
9
- function createFormatPrice(config = {}) {
10
- const {
11
- currency,
12
- locale,
13
- precision: defaultPrecision
14
- } = {
15
- ...formatDefaults,
16
- ...config
17
- };
18
- return function formatPrice(value, options) {
19
- const p = options?.precision ?? defaultPrecision;
20
- const displayValue = options?.quantity !== void 0 ? value * options.quantity : value;
21
- return new Intl.NumberFormat(locale, {
22
- style: "currency",
23
- currency,
24
- minimumFractionDigits: p,
25
- maximumFractionDigits: p
26
- }).format(displayValue);
27
- };
28
- }
29
-
30
- export {
31
- createFormatPrice
32
- };
33
- //# sourceMappingURL=chunk-DZDC4HHK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/price-format.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Pure formatting logic — no React, no \"use client\".\n// Safe to import in server components.\n// ---------------------------------------------------------------------------\n\nexport interface PriceFormatConfig {\n /** ISO 4217 currency code. Default: `\"USD\"`. */\n currency?: string;\n /** BCP 47 locale. Default: `\"en-US\"`. */\n locale?: string;\n /** Decimal places. Default: `2`. */\n precision?: number;\n}\n\nexport interface FormatPriceOptions {\n /** Override precision for this call. */\n precision?: number;\n /** Multiply value by quantity before formatting. */\n quantity?: number;\n}\n\nconst formatDefaults: Required<PriceFormatConfig> = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n};\n\n/**\n * Create a pure price-formatting function. Server-safe (no React dependency).\n * Use {@link createPrice} in client components for the full Price component.\n */\nexport function createFormatPrice(\n config: PriceFormatConfig = {},\n): (value: number, options?: FormatPriceOptions) => string {\n const {\n currency,\n locale,\n precision: defaultPrecision,\n } = {\n ...formatDefaults,\n ...config,\n };\n\n return function formatPrice(value: number, options?: FormatPriceOptions): string {\n const p = options?.precision ?? defaultPrecision;\n const displayValue = options?.quantity !== undefined ? value * options.quantity : value;\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: p,\n maximumFractionDigits: p,\n }).format(displayValue);\n };\n}\n"],"mappings":";;;AAqBA,IAAM,iBAA8C;AAAA,EAClD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb;AAMO,SAAS,kBACd,SAA4B,CAAC,GAC4B;AACzD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EACb,IAAI;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SAAO,SAAS,YAAY,OAAe,SAAsC;AAC/E,UAAM,IAAI,SAAS,aAAa;AAChC,UAAM,eAAe,SAAS,aAAa,SAAY,QAAQ,QAAQ,WAAW;AAClF,WAAO,IAAI,KAAK,aAAa,QAAQ;AAAA,MACnC,OAAO;AAAA,MACP;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB,CAAC,EAAE,OAAO,YAAY;AAAA,EACxB;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-NSSX7USQ.cjs","../src/pagination.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-NSSX7USQ.cjs","sourcesContent":[null,"/** 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"]}
@@ -1,33 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
-
3
- // src/price-format.ts
4
- var formatDefaults = {
5
- currency: "USD",
6
- locale: "en-US",
7
- precision: 2
8
- };
9
- function createFormatPrice(config = {}) {
10
- const {
11
- currency,
12
- locale,
13
- precision: defaultPrecision
14
- } = {
15
- ...formatDefaults,
16
- ...config
17
- };
18
- return function formatPrice(value, options) {
19
- const p = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _ => _.precision]), () => ( defaultPrecision));
20
- const displayValue = _optionalChain([options, 'optionalAccess', _2 => _2.quantity]) !== void 0 ? value * options.quantity : value;
21
- return new Intl.NumberFormat(locale, {
22
- style: "currency",
23
- currency,
24
- minimumFractionDigits: p,
25
- maximumFractionDigits: p
26
- }).format(displayValue);
27
- };
28
- }
29
-
30
-
31
-
32
- exports.createFormatPrice = createFormatPrice;
33
- //# sourceMappingURL=chunk-VLZDTWPR.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-VLZDTWPR.cjs","../src/price-format.ts"],"names":[],"mappings":"AAAA,6rBAAY;AACZ;AACA;ACmBA,IAAM,eAAA,EAA8C;AAAA,EAClD,QAAA,EAAU,KAAA;AAAA,EACV,MAAA,EAAQ,OAAA;AAAA,EACR,SAAA,EAAW;AACb,CAAA;AAMO,SAAS,iBAAA,CACd,OAAA,EAA4B,CAAC,CAAA,EAC4B;AACzD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA,EAAW;AAAA,EACb,EAAA,EAAI;AAAA,IACF,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,EACL,CAAA;AAEA,EAAA,OAAO,SAAS,WAAA,CAAY,KAAA,EAAe,OAAA,EAAsC;AAC/E,IAAA,MAAM,EAAA,mCAAI,OAAA,2BAAS,WAAA,UAAa,kBAAA;AAChC,IAAA,MAAM,aAAA,kBAAe,OAAA,6BAAS,WAAA,IAAa,KAAA,EAAA,EAAY,MAAA,EAAQ,OAAA,CAAQ,SAAA,EAAW,KAAA;AAClF,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AAAA,MACnC,KAAA,EAAO,UAAA;AAAA,MACP,QAAA;AAAA,MACA,qBAAA,EAAuB,CAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,IACzB,CAAC,CAAA,CAAE,MAAA,CAAO,YAAY,CAAA;AAAA,EACxB,CAAA;AACF;ADzBA;AACA;AACE;AACF,8CAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-VLZDTWPR.cjs","sourcesContent":[null,"// ---------------------------------------------------------------------------\n// Pure formatting logic — no React, no \"use client\".\n// Safe to import in server components.\n// ---------------------------------------------------------------------------\n\nexport interface PriceFormatConfig {\n /** ISO 4217 currency code. Default: `\"USD\"`. */\n currency?: string;\n /** BCP 47 locale. Default: `\"en-US\"`. */\n locale?: string;\n /** Decimal places. Default: `2`. */\n precision?: number;\n}\n\nexport interface FormatPriceOptions {\n /** Override precision for this call. */\n precision?: number;\n /** Multiply value by quantity before formatting. */\n quantity?: number;\n}\n\nconst formatDefaults: Required<PriceFormatConfig> = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n};\n\n/**\n * Create a pure price-formatting function. Server-safe (no React dependency).\n * Use {@link createPrice} in client components for the full Price component.\n */\nexport function createFormatPrice(\n config: PriceFormatConfig = {},\n): (value: number, options?: FormatPriceOptions) => string {\n const {\n currency,\n locale,\n precision: defaultPrecision,\n } = {\n ...formatDefaults,\n ...config,\n };\n\n return function formatPrice(value: number, options?: FormatPriceOptions): string {\n const p = options?.precision ?? defaultPrecision;\n const displayValue = options?.quantity !== undefined ? value * options.quantity : value;\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n minimumFractionDigits: p,\n maximumFractionDigits: p,\n }).format(displayValue);\n };\n}\n"]}
@@ -1,84 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { DialogProps } from '@radix-ui/react-dialog';
4
-
5
- declare const Command: React.ForwardRefExoticComponent<Omit<{
6
- children?: React.ReactNode;
7
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
8
- ref?: React.Ref<HTMLDivElement>;
9
- } & {
10
- asChild?: boolean;
11
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
12
- label?: string;
13
- shouldFilter?: boolean;
14
- filter?: (value: string, search: string, keywords?: string[]) => number;
15
- defaultValue?: string;
16
- value?: string;
17
- onValueChange?: (value: string) => void;
18
- loop?: boolean;
19
- disablePointerSelection?: boolean;
20
- vimBindings?: boolean;
21
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
22
- type CommandDialogProps = DialogProps;
23
- declare const CommandDialog: ({ children, ...props }: CommandDialogProps) => react_jsx_runtime.JSX.Element;
24
- declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & {
25
- ref?: React.Ref<HTMLInputElement>;
26
- } & {
27
- asChild?: boolean;
28
- }, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
29
- value?: string;
30
- onValueChange?: (search: string) => void;
31
- } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
32
- declare const CommandList: React.ForwardRefExoticComponent<Omit<{
33
- children?: React.ReactNode;
34
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
35
- ref?: React.Ref<HTMLDivElement>;
36
- } & {
37
- asChild?: boolean;
38
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
39
- label?: string;
40
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
41
- declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
42
- children?: React.ReactNode;
43
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
44
- ref?: React.Ref<HTMLDivElement>;
45
- } & {
46
- asChild?: boolean;
47
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
48
- declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
49
- children?: React.ReactNode;
50
- } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
51
- ref?: React.Ref<HTMLDivElement>;
52
- } & {
53
- asChild?: boolean;
54
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
55
- heading?: React.ReactNode;
56
- value?: string;
57
- forceMount?: boolean;
58
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
59
- declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
60
- ref?: React.Ref<HTMLDivElement>;
61
- } & {
62
- asChild?: boolean;
63
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
64
- alwaysRender?: boolean;
65
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
66
- declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
67
- children?: React.ReactNode;
68
- } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
69
- ref?: React.Ref<HTMLDivElement>;
70
- } & {
71
- asChild?: boolean;
72
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
73
- disabled?: boolean;
74
- onSelect?: (value: string) => void;
75
- value?: string;
76
- keywords?: string[];
77
- forceMount?: boolean;
78
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
79
- declare const CommandShortcut: {
80
- ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
81
- displayName: string;
82
- };
83
-
84
- export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
@@ -1,35 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- interface ConfirmDialogProps {
4
- open: boolean;
5
- onOpenChange: (open: boolean) => void;
6
- title: string;
7
- description?: string;
8
- confirmLabel?: string;
9
- cancelLabel?: string;
10
- variant?: "default" | "destructive";
11
- onConfirm: () => void;
12
- loading?: boolean;
13
- }
14
- /**
15
- * Pre-composed confirmation dialog for delete/action confirmations.
16
- *
17
- * @example
18
- * ```tsx
19
- * <ConfirmDialog
20
- * open={showDelete}
21
- * onOpenChange={setShowDelete}
22
- * title="Delete brand?"
23
- * description="This action cannot be undone."
24
- * variant="destructive"
25
- * onConfirm={() => deleteBrand.mutate(uid)}
26
- * loading={deleteBrand.isPending}
27
- * />
28
- * ```
29
- */
30
- declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, variant, onConfirm, loading, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
31
- declare namespace ConfirmDialog {
32
- var displayName: string;
33
- }
34
-
35
- export { ConfirmDialog, type ConfirmDialogProps };
@@ -1,55 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { SortingState, RowSelectionState } from '@tanstack/react-table';
4
- export { RowSelectionState, SortingState, VisibilityState } from '@tanstack/react-table';
5
-
6
- interface ColumnDef<T> {
7
- key: keyof T & string;
8
- header: string;
9
- sortable?: boolean;
10
- render?: (row: T) => React.ReactNode;
11
- align?: "left" | "center" | "right";
12
- hideable?: boolean;
13
- }
14
- interface DataTablePagination {
15
- page: number;
16
- totalPages: number;
17
- getHref: (page: number) => string;
18
- onPageChange?: (page: number) => void;
19
- /** Current page size. Required when pageSizeOptions is set. */
20
- pageSize?: number;
21
- /** Available page size options. Renders a dropdown when provided. */
22
- pageSizeOptions?: number[];
23
- /** Called when the user selects a different page size. */
24
- onPageSizeChange?: (size: number) => void;
25
- }
26
- interface DataTableProps<T> {
27
- columns: ColumnDef<T>[];
28
- data: T[];
29
- searchable?: boolean;
30
- searchPlaceholder?: string;
31
- onRowClick?: (row: T) => void;
32
- loading?: boolean;
33
- emptyMessage?: string;
34
- toolbar?: React.ReactNode;
35
- className?: string;
36
- getRowId?: (row: T) => string;
37
- pagination?: DataTablePagination;
38
- globalFilter?: string;
39
- onGlobalFilterChange?: (value: string) => void;
40
- sortingState?: SortingState;
41
- onSortingChange?: (state: SortingState) => void;
42
- selectable?: boolean;
43
- rowSelection?: RowSelectionState;
44
- onRowSelectionChange?: (state: RowSelectionState) => void;
45
- bulkActions?: (selectedRows: T[]) => React.ReactNode;
46
- columnToggle?: boolean;
47
- exportCsv?: boolean;
48
- csvFilename?: string;
49
- }
50
- declare function DataTable<T>({ columns, data, searchable, searchPlaceholder, onRowClick, loading, emptyMessage, toolbar, className, getRowId, pagination, globalFilter: externalGlobalFilter, onGlobalFilterChange, sortingState, onSortingChange, selectable, rowSelection, onRowSelectionChange, bulkActions, columnToggle, exportCsv, csvFilename, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
51
- declare namespace DataTable {
52
- var displayName: string;
53
- }
54
-
55
- export { type ColumnDef, DataTable, type DataTablePagination, type DataTableProps };
@@ -1,59 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
-
4
- interface FieldDef<T> {
5
- /** Property key on the data object. */
6
- key: keyof T & string;
7
- /** Display label. */
8
- label: string;
9
- /** Field type determines the input component used in edit mode. */
10
- type: "text" | "textarea" | "select" | "readonly";
11
- /** Options for select fields. */
12
- options?: {
13
- label: string;
14
- value: string;
15
- }[];
16
- /** Mark the field as required in edit mode. */
17
- required?: boolean;
18
- /** Custom read-mode renderer. Receives the field value. */
19
- render?: (value: T[keyof T]) => React.ReactNode;
20
- }
21
- interface DetailPanelProps<T extends object> {
22
- /** Field definitions describing each field. */
23
- fields: FieldDef<T>[];
24
- /** The record to display/edit. */
25
- data: T;
26
- /** Called with the updated record when the user saves. */
27
- onSave: (data: T) => void;
28
- /** Called when the user cancels editing. */
29
- onCancel?: () => void;
30
- /** Whether a save operation is in progress. */
31
- loading?: boolean;
32
- /** Optional title displayed above the fields. */
33
- title?: string;
34
- /** Additional class name for the root container. */
35
- className?: string;
36
- /** Start in edit mode. */
37
- defaultEditing?: boolean;
38
- }
39
- /**
40
- * Read/edit toggle panel for a single record. Renders field values in read
41
- * mode, and form inputs in edit mode based on field definitions.
42
- *
43
- * @example
44
- * ```tsx
45
- * const fields: FieldDef<Brand>[] = [
46
- * { key: "brandsName", label: "Name", type: "text", required: true },
47
- * { key: "brandsDesc", label: "Description", type: "textarea" },
48
- * { key: "brandsUid", label: "UID", type: "readonly" },
49
- * ];
50
- *
51
- * <DetailPanel fields={fields} data={brand} onSave={handleSave} />
52
- * ```
53
- */
54
- declare function DetailPanel<T extends object>({ fields, data, onSave, onCancel, loading, title, className, defaultEditing, }: DetailPanelProps<T>): react_jsx_runtime.JSX.Element;
55
- declare namespace DetailPanel {
56
- var displayName: string;
57
- }
58
-
59
- export { DetailPanel, type DetailPanelProps, type FieldDef };
package/dist/dialog.d.cts DELETED
@@ -1,22 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import * as DialogPrimitive from '@radix-ui/react-dialog';
4
-
5
- declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
6
- declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
- declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
8
- declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
9
- declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
- declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
- declare const DialogHeader: {
12
- ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
13
- displayName: string;
14
- };
15
- declare const DialogFooter: {
16
- ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
17
- displayName: string;
18
- };
19
- declare const DialogTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
20
- declare const DialogDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
21
-
22
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
@@ -1,30 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
4
-
5
- declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
6
- declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
- declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
8
- declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
9
- declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
10
- declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
11
- declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
12
- inset?: boolean;
13
- } & React.RefAttributes<HTMLDivElement>>;
14
- declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
- declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
- declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
17
- inset?: boolean;
18
- } & React.RefAttributes<HTMLDivElement>>;
19
- declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
- declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
21
- declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
22
- inset?: boolean;
23
- } & React.RefAttributes<HTMLDivElement>>;
24
- declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
25
- declare const DropdownMenuShortcut: {
26
- ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
27
- displayName: string;
28
- };
29
-
30
- export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
@@ -1,45 +0,0 @@
1
- /** Supported financing providers. */
2
- type FinancingProvider = "timepayment";
3
- interface FinancingWidgetProps {
4
- /** Financing provider. */
5
- provider: FinancingProvider;
6
- /** Vendor/merchant code from the provider. */
7
- vendorCode: string;
8
- /** Disable loading. Default: false. */
9
- disabled?: boolean;
10
- /** Called when the financing script has loaded. */
11
- onLoad?: () => void;
12
- }
13
- interface UseFinancingResult {
14
- /** Whether the financing script has loaded. */
15
- isLoaded: boolean;
16
- }
17
- declare global {
18
- interface Window {
19
- TimePayment?: {
20
- apply: (vendorCode: string) => void;
21
- };
22
- }
23
- }
24
- /**
25
- * Loads a financing widget script on the pages where it's needed.
26
- * Renders nothing — this is a side-effect-only leaf component.
27
- *
28
- * Place this on product or checkout pages, NOT in the global layout.
29
- *
30
- * @example
31
- * ```tsx
32
- * // On a product page
33
- * <FinancingWidget provider="timepayment" vendorCode="PVD5P" />
34
- *
35
- * // With load callback
36
- * <FinancingWidget
37
- * provider="timepayment"
38
- * vendorCode="PVD5P"
39
- * onLoad={() => console.log("Financing ready")}
40
- * />
41
- * ```
42
- */
43
- declare function FinancingWidget({ provider, vendorCode, disabled, onLoad, }: FinancingWidgetProps): null;
44
-
45
- export { type FinancingProvider, FinancingWidget, type FinancingWidgetProps, type UseFinancingResult };
@@ -1,14 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormFieldProps {
4
- label: string;
5
- htmlFor: string;
6
- required?: boolean;
7
- error?: string;
8
- className?: string;
9
- children: React.ReactNode;
10
- }
11
- /** Base form layout: label + children + optional error message. */
12
- declare const FormField: React.ForwardRefExoticComponent<FormFieldProps & React.RefAttributes<HTMLDivElement>>;
13
-
14
- export { FormField, type FormFieldProps };
@@ -1,19 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
4
- label: string;
5
- error?: string;
6
- required?: boolean;
7
- gridSpan?: string;
8
- }
9
- /**
10
- * Labeled text input with error display. Composes FormField + Input.
11
- *
12
- * @example
13
- * ```tsx
14
- * <FormInput label="Email" name="email" type="email" required error={errors.email} />
15
- * ```
16
- */
17
- declare const FormInput: React.ForwardRefExoticComponent<FormInputProps & React.RefAttributes<HTMLInputElement>>;
18
-
19
- export { FormInput, type FormInputProps };
@@ -1,34 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormSelectProps {
4
- label: string;
5
- error?: string;
6
- required?: boolean;
7
- name: string;
8
- value?: string;
9
- onValueChange?: (value: string) => void;
10
- options: {
11
- label: string;
12
- value: string;
13
- }[];
14
- placeholder?: string;
15
- className?: string;
16
- disabled?: boolean;
17
- }
18
- /**
19
- * Labeled select dropdown with error display. Composes FormField + Select.
20
- *
21
- * @example
22
- * ```tsx
23
- * <FormSelect
24
- * label="State"
25
- * name="state"
26
- * options={[{ label: "Texas", value: "TX" }]}
27
- * value={state}
28
- * onValueChange={setState}
29
- * />
30
- * ```
31
- */
32
- declare const FormSelect: React.ForwardRefExoticComponent<FormSelectProps & React.RefAttributes<HTMLButtonElement>>;
33
-
34
- export { FormSelect, type FormSelectProps };
@@ -1,12 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormTextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
4
- label: string;
5
- error?: string;
6
- required?: boolean;
7
- gridSpan?: string;
8
- }
9
- /** Labeled textarea with error display. Composes FormField + Textarea. */
10
- declare const FormTextarea: React.ForwardRefExoticComponent<FormTextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
11
-
12
- export { FormTextarea, type FormTextareaProps };