@simpleapps-com/augur-web 1.0.8 → 1.0.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 (163) hide show
  1. package/dist/accordion.cjs.map +1 -1
  2. package/dist/accordion.js.map +1 -1
  3. package/dist/add-to-cart-button.cjs +46 -0
  4. package/dist/add-to-cart-button.cjs.map +1 -0
  5. package/dist/add-to-cart-button.d.cts +14 -0
  6. package/dist/add-to-cart-button.d.ts +14 -0
  7. package/dist/add-to-cart-button.js +46 -0
  8. package/dist/add-to-cart-button.js.map +1 -0
  9. package/dist/breadcrumbs.cjs.map +1 -1
  10. package/dist/breadcrumbs.d.cts +14 -0
  11. package/dist/breadcrumbs.d.ts +14 -0
  12. package/dist/breadcrumbs.js.map +1 -1
  13. package/dist/button.cjs +2 -2
  14. package/dist/button.d.cts +14 -1
  15. package/dist/button.d.ts +14 -1
  16. package/dist/button.js +1 -1
  17. package/dist/card.cjs.map +1 -1
  18. package/dist/card.js.map +1 -1
  19. package/dist/checkbox.cjs.map +1 -1
  20. package/dist/checkbox.js.map +1 -1
  21. package/dist/{chunk-FHS7SJEQ.js → chunk-3FSJ76CI.js} +1 -1
  22. package/dist/chunk-3FSJ76CI.js.map +1 -0
  23. package/dist/{chunk-GPDD67CJ.js → chunk-6JHTOVHH.js} +2 -2
  24. package/dist/chunk-6JHTOVHH.js.map +1 -0
  25. package/dist/{chunk-SXJP4G5U.cjs → chunk-AMGUJSB4.cjs} +1 -1
  26. package/dist/chunk-AMGUJSB4.cjs.map +1 -0
  27. package/dist/{chunk-BYHOMRXR.js → chunk-BMQGSDHH.js} +1 -1
  28. package/dist/chunk-BMQGSDHH.js.map +1 -0
  29. package/dist/{chunk-ND6U4UQQ.js → chunk-C7E3ITLU.js} +1 -1
  30. package/dist/chunk-C7E3ITLU.js.map +1 -0
  31. package/dist/chunk-DONF5PIE.js +47 -0
  32. package/dist/chunk-DONF5PIE.js.map +1 -0
  33. package/dist/{chunk-NWGXDXRV.cjs → chunk-DQJDDXSH.cjs} +1 -1
  34. package/dist/chunk-DQJDDXSH.cjs.map +1 -0
  35. package/dist/chunk-ECZR6SW3.cjs +47 -0
  36. package/dist/chunk-ECZR6SW3.cjs.map +1 -0
  37. package/dist/{chunk-PTAWV5SA.js → chunk-FHUB6XI5.js} +1 -1
  38. package/dist/chunk-FHUB6XI5.js.map +1 -0
  39. package/dist/{chunk-VT4JLAIE.cjs → chunk-I4Q2GZZK.cjs} +1 -1
  40. package/dist/{chunk-VT4JLAIE.cjs.map → chunk-I4Q2GZZK.cjs.map} +1 -1
  41. package/dist/{chunk-DAU3SFHM.js → chunk-LCNFPBPV.js} +1 -1
  42. package/dist/chunk-LCNFPBPV.js.map +1 -0
  43. package/dist/{chunk-VMOQCPK5.cjs → chunk-LNMPVCIY.cjs} +3 -3
  44. package/dist/{chunk-VMOQCPK5.cjs.map → chunk-LNMPVCIY.cjs.map} +1 -1
  45. package/dist/{chunk-3RVGVJDI.cjs → chunk-MGOH4OFM.cjs} +1 -1
  46. package/dist/chunk-MGOH4OFM.cjs.map +1 -0
  47. package/dist/{chunk-N2TV6QZO.cjs → chunk-QLSIUW3X.cjs} +1 -1
  48. package/dist/chunk-QLSIUW3X.cjs.map +1 -0
  49. package/dist/{chunk-Q6H6D3AN.cjs → chunk-SHF52AZM.cjs} +1 -1
  50. package/dist/chunk-SHF52AZM.cjs.map +1 -0
  51. package/dist/{chunk-CK53LO3J.cjs → chunk-U35O67ZA.cjs} +1 -1
  52. package/dist/chunk-U35O67ZA.cjs.map +1 -0
  53. package/dist/{chunk-DZ6HBEMA.js → chunk-X5RKGEDZ.js} +1 -1
  54. package/dist/chunk-X5RKGEDZ.js.map +1 -0
  55. package/dist/{chunk-SVF5VSZ2.js → chunk-YKVFAVK5.js} +1 -1
  56. package/dist/chunk-YKVFAVK5.js.map +1 -0
  57. package/dist/command.cjs +2 -2
  58. package/dist/command.cjs.map +1 -1
  59. package/dist/command.d.cts +7 -7
  60. package/dist/command.d.ts +7 -7
  61. package/dist/command.js +1 -1
  62. package/dist/command.js.map +1 -1
  63. package/dist/dialog.cjs +2 -2
  64. package/dist/dialog.js +1 -1
  65. package/dist/dropdown-menu.cjs.map +1 -1
  66. package/dist/dropdown-menu.js.map +1 -1
  67. package/dist/form-field.cjs +3 -3
  68. package/dist/form-field.d.cts +1 -0
  69. package/dist/form-field.d.ts +1 -0
  70. package/dist/form-field.js +2 -2
  71. package/dist/form-input.cjs +5 -5
  72. package/dist/form-input.cjs.map +1 -1
  73. package/dist/form-input.d.cts +8 -0
  74. package/dist/form-input.d.ts +8 -0
  75. package/dist/form-input.js +3 -3
  76. package/dist/form-input.js.map +1 -1
  77. package/dist/form-select.cjs +7 -7
  78. package/dist/form-select.cjs.map +1 -1
  79. package/dist/form-select.d.cts +14 -0
  80. package/dist/form-select.d.ts +14 -0
  81. package/dist/form-select.js +3 -3
  82. package/dist/form-select.js.map +1 -1
  83. package/dist/form-textarea.cjs +5 -5
  84. package/dist/form-textarea.cjs.map +1 -1
  85. package/dist/form-textarea.d.cts +1 -0
  86. package/dist/form-textarea.d.ts +1 -0
  87. package/dist/form-textarea.js +3 -3
  88. package/dist/form-textarea.js.map +1 -1
  89. package/dist/input.cjs +2 -2
  90. package/dist/input.js +1 -1
  91. package/dist/label.cjs +2 -2
  92. package/dist/label.js +1 -1
  93. package/dist/list-view.cjs.map +1 -1
  94. package/dist/list-view.d.cts +8 -0
  95. package/dist/list-view.d.ts +8 -0
  96. package/dist/list-view.js.map +1 -1
  97. package/dist/navigation-menu.cjs.map +1 -1
  98. package/dist/navigation-menu.js.map +1 -1
  99. package/dist/pagination.cjs +2 -2
  100. package/dist/pagination.cjs.map +1 -1
  101. package/dist/pagination.js +1 -1
  102. package/dist/pagination.js.map +1 -1
  103. package/dist/popover.cjs.map +1 -1
  104. package/dist/popover.js.map +1 -1
  105. package/dist/price-format.cjs +2 -2
  106. package/dist/price-format.d.cts +4 -0
  107. package/dist/price-format.d.ts +4 -0
  108. package/dist/price-format.js +1 -1
  109. package/dist/price.cjs +2 -2
  110. package/dist/price.cjs.map +1 -1
  111. package/dist/price.d.cts +17 -0
  112. package/dist/price.d.ts +17 -0
  113. package/dist/price.js +1 -1
  114. package/dist/price.js.map +1 -1
  115. package/dist/provider.cjs.map +1 -1
  116. package/dist/provider.d.cts +22 -3
  117. package/dist/provider.d.ts +22 -3
  118. package/dist/provider.js.map +1 -1
  119. package/dist/quantity-input.cjs.map +1 -1
  120. package/dist/quantity-input.d.cts +15 -0
  121. package/dist/quantity-input.d.ts +15 -0
  122. package/dist/quantity-input.js.map +1 -1
  123. package/dist/radio-group.cjs.map +1 -1
  124. package/dist/radio-group.js.map +1 -1
  125. package/dist/select.cjs +2 -2
  126. package/dist/select.js +1 -1
  127. package/dist/separator.cjs.map +1 -1
  128. package/dist/separator.js.map +1 -1
  129. package/dist/skeleton.cjs.map +1 -1
  130. package/dist/skeleton.js.map +1 -1
  131. package/dist/spinner.cjs +3 -41
  132. package/dist/spinner.cjs.map +1 -1
  133. package/dist/spinner.d.cts +1 -0
  134. package/dist/spinner.d.ts +1 -0
  135. package/dist/spinner.js +3 -41
  136. package/dist/spinner.js.map +1 -1
  137. package/dist/stock-label.cjs +85 -0
  138. package/dist/stock-label.cjs.map +1 -0
  139. package/dist/stock-label.d.cts +47 -0
  140. package/dist/stock-label.d.ts +47 -0
  141. package/dist/stock-label.js +85 -0
  142. package/dist/stock-label.js.map +1 -0
  143. package/dist/table.cjs.map +1 -1
  144. package/dist/table.js.map +1 -1
  145. package/dist/tabs.cjs.map +1 -1
  146. package/dist/tabs.js.map +1 -1
  147. package/dist/textarea.cjs +2 -2
  148. package/dist/textarea.js +1 -1
  149. package/package.json +16 -6
  150. package/dist/chunk-3RVGVJDI.cjs.map +0 -1
  151. package/dist/chunk-BYHOMRXR.js.map +0 -1
  152. package/dist/chunk-CK53LO3J.cjs.map +0 -1
  153. package/dist/chunk-DAU3SFHM.js.map +0 -1
  154. package/dist/chunk-DZ6HBEMA.js.map +0 -1
  155. package/dist/chunk-FHS7SJEQ.js.map +0 -1
  156. package/dist/chunk-GPDD67CJ.js.map +0 -1
  157. package/dist/chunk-N2TV6QZO.cjs.map +0 -1
  158. package/dist/chunk-ND6U4UQQ.js.map +0 -1
  159. package/dist/chunk-NWGXDXRV.cjs.map +0 -1
  160. package/dist/chunk-PTAWV5SA.js.map +0 -1
  161. package/dist/chunk-Q6H6D3AN.cjs.map +0 -1
  162. package/dist/chunk-SVF5VSZ2.js.map +0 -1
  163. package/dist/chunk-SXJP4G5U.cjs.map +0 -1
@@ -2,7 +2,7 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkN2TV6QZOcjs = require('./chunk-N2TV6QZO.cjs');
5
+ var _chunkQLSIUW3Xcjs = require('./chunk-QLSIUW3X.cjs');
6
6
 
7
7
  // src/pagination.tsx
8
8
  var _react = require('react'); var React = _interopRequireWildcard(_react);
@@ -40,7 +40,7 @@ var PaginationLink = ({
40
40
  {
41
41
  "aria-current": isActive ? "page" : void 0,
42
42
  className: _web.cn.call(void 0,
43
- _chunkN2TV6QZOcjs.buttonVariants.call(void 0, {
43
+ _chunkQLSIUW3Xcjs.buttonVariants.call(void 0, {
44
44
  variant: isActive ? "outline" : "ghost",
45
45
  size
46
46
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/pagination.cjs","../src/pagination.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/pagination.cjs","sourcesContent":[null,"\"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<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <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 = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/pagination.cjs","../src/pagination.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/pagination.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<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <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 = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n"]}
@@ -2,7 +2,7 @@
2
2
  "use client";
3
3
  import {
4
4
  buttonVariants
5
- } from "./chunk-SVF5VSZ2.js";
5
+ } from "./chunk-YKVFAVK5.js";
6
6
 
7
7
  // src/pagination.tsx
8
8
  import * as React from "react";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/pagination.tsx"],"sourcesContent":["\"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<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <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 = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n"],"mappings":";;;;;;;AAEA,YAAY,WAAW;AACvB,SAAS,eAAe,gBAAgB,kBAAkB;AAC1D,SAAS,UAAU;AAIjB,cA0DA,YA1DA;AADF,IAAM,aAAa,CAAC,EAAE,WAAW,GAAG,MAAM,MACxC;AAAA,EAAC;AAAA;AAAA,IACC,MAAK;AAAA,IACL,cAAW;AAAA,IACX,WAAW,GAAG,sCAAsC,SAAS;AAAA,IAC5D,GAAG;AAAA;AACN;AAEF,WAAW,cAAc;AAEzB,IAAM,oBAA0B,iBAG9B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,oCAAoC,SAAS;AAAA,IAC1D,GAAG;AAAA;AACN,CACD;AACD,kBAAkB,cAAc;AAEhC,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,QAAG,KAAU,WAAW,GAAG,IAAI,SAAS,GAAI,GAAG,OAAO,CACxD;AACD,eAAe,cAAc;AAO7B,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,gBAAc,WAAW,SAAS;AAAA,IAClC,WAAW;AAAA,MACT,eAAe;AAAA,QACb,SAAS,WAAW,YAAY;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,eAAe,cAAc;AAE7B,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,cAAW;AAAA,IACX,MAAK;AAAA,IACL,WAAW,GAAG,gBAAgB,SAAS;AAAA,IACtC,GAAG;AAAA,IAEJ;AAAA,0BAAC,iBAAc,WAAU,WAAU;AAAA,MACnC,oBAAC,UAAK,kBAAI;AAAA;AAAA;AACZ;AAEF,mBAAmB,cAAc;AAEjC,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,cAAW;AAAA,IACX,MAAK;AAAA,IACL,WAAW,GAAG,gBAAgB,SAAS;AAAA,IACtC,GAAG;AAAA,IAEJ;AAAA,0BAAC,UAAK,kBAAI;AAAA,MACV,oBAAC,kBAAe,WAAU,WAAU;AAAA;AAAA;AACtC;AAEF,eAAe,cAAc;AAE7B,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,eAAW;AAAA,IACX,WAAW,GAAG,4CAA4C,SAAS;AAAA,IAClE,GAAG;AAAA,IAEJ;AAAA,0BAAC,cAAW,WAAU,WAAU;AAAA,MAChC,oBAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AACtC;AAEF,mBAAmB,cAAc;","names":[]}
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<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <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 = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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 = ({\n className,\n ...props\n}: 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\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n"],"mappings":";;;;;;;AAGA,YAAY,WAAW;AACvB,SAAS,eAAe,gBAAgB,kBAAkB;AAC1D,SAAS,UAAU;AAIjB,cA0DA,YA1DA;AADF,IAAM,aAAa,CAAC,EAAE,WAAW,GAAG,MAAM,MACxC;AAAA,EAAC;AAAA;AAAA,IACC,MAAK;AAAA,IACL,cAAW;AAAA,IACX,WAAW,GAAG,sCAAsC,SAAS;AAAA,IAC5D,GAAG;AAAA;AACN;AAEF,WAAW,cAAc;AAEzB,IAAM,oBAA0B,iBAG9B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA,WAAW,GAAG,oCAAoC,SAAS;AAAA,IAC1D,GAAG;AAAA;AACN,CACD;AACD,kBAAkB,cAAc;AAEhC,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,QAAG,KAAU,WAAW,GAAG,IAAI,SAAS,GAAI,GAAG,OAAO,CACxD;AACD,eAAe,cAAc;AAO7B,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,gBAAc,WAAW,SAAS;AAAA,IAClC,WAAW;AAAA,MACT,eAAe;AAAA,QACb,SAAS,WAAW,YAAY;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,eAAe,cAAc;AAE7B,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,cAAW;AAAA,IACX,MAAK;AAAA,IACL,WAAW,GAAG,gBAAgB,SAAS;AAAA,IACtC,GAAG;AAAA,IAEJ;AAAA,0BAAC,iBAAc,WAAU,WAAU;AAAA,MACnC,oBAAC,UAAK,kBAAI;AAAA;AAAA;AACZ;AAEF,mBAAmB,cAAc;AAEjC,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,cAAW;AAAA,IACX,MAAK;AAAA,IACL,WAAW,GAAG,gBAAgB,SAAS;AAAA,IACtC,GAAG;AAAA,IAEJ;AAAA,0BAAC,UAAK,kBAAI;AAAA,MACV,oBAAC,kBAAe,WAAU,WAAU;AAAA;AAAA;AACtC;AAEF,eAAe,cAAc;AAE7B,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC,eAAW;AAAA,IACX,WAAW,GAAG,4CAA4C,SAAS;AAAA,IAClE,GAAG;AAAA,IAEJ;AAAA,0BAAC,cAAW,WAAU,WAAU;AAAA,MAChC,oBAAC,UAAK,WAAU,WAAU,wBAAU;AAAA;AAAA;AACtC;AAEF,mBAAmB,cAAc;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/popover.cjs","../src/popover.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ,YAAY;AACZ;AACA;ACDA,2EAAuB;AACvB,sHAAkC;AAClC,sDAAmB;AAaf,+CAAA;AAXJ,IAAM,QAAA,EAA2B,gBAAA,CAAA,IAAA;AAEjC,IAAM,eAAA,EAAkC,gBAAA,CAAA,OAAA;AAExC,IAAM,cAAA,EAAiC,gBAAA,CAAA,MAAA;AAEvC,IAAM,eAAA,EAAuB,KAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,WAAA,EAAa,CAAA,EAAG,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBAC5D,6BAAA,gBAAkB,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAA,6BAAA;AAAA,EAAkB,gBAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,qBAAA;AAAA,MACT,4aAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,IACC,GAAG;AAAA,EAAA;AACN,EAAA,CACF,CACD,CAAA;AACD,cAAA,CAAe,YAAA,EAA+B,gBAAA,CAAA,OAAA,CAAQ,WAAA;ADJtD;AACE;AACA;AACA;AACA;AACF,mJAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/popover.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/popover.cjs","../src/popover.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ,YAAY;AACZ;AACA;ACAA,2EAAuB;AACvB,sHAAkC;AAClC,sDAAmB;AAaf,+CAAA;AAXJ,IAAM,QAAA,EAA2B,gBAAA,CAAA,IAAA;AAEjC,IAAM,eAAA,EAAkC,gBAAA,CAAA,OAAA;AAExC,IAAM,cAAA,EAAiC,gBAAA,CAAA,MAAA;AAEvC,IAAM,eAAA,EAAuB,KAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,MAAA,EAAQ,QAAA,EAAU,WAAA,EAAa,CAAA,EAAG,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,mBAC5D,6BAAA,gBAAkB,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAA,6BAAA;AAAA,EAAkB,gBAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,qBAAA;AAAA,MACT,4aAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,IACC,GAAG;AAAA,EAAA;AACN,EAAA,CACF,CACD,CAAA;AACD,cAAA,CAAe,YAAA,EAA+B,gBAAA,CAAA,OAAA,CAAQ,WAAA;ADLtD;AACE;AACA;AACA;AACA;AACF,mJAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/popover.cjs","sourcesContent":[null,"/** Styled wrapper around @radix-ui/react-popover. See https://www.radix-ui.com/primitives/docs/components/popover */\n\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/popover.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"],"mappings":";;;;AAEA,YAAY,WAAW;AACvB,YAAY,sBAAsB;AAClC,SAAS,UAAU;AAaf;AAXJ,IAAM,UAA2B;AAEjC,IAAM,iBAAkC;AAExC,IAAM,gBAAiC;AAEvC,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,QAAQ,UAAU,aAAa,GAAG,GAAG,MAAM,GAAG,QAC5D,oBAAkB,yBAAjB,EACC;AAAA,EAAkB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,GACF,CACD;AACD,eAAe,cAA+B,yBAAQ;","names":[]}
1
+ {"version":3,"sources":["../src/popover.tsx"],"sourcesContent":["/** Styled wrapper around @radix-ui/react-popover. See https://www.radix-ui.com/primitives/docs/components/popover */\n\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"],"mappings":";;;;AAGA,YAAY,WAAW;AACvB,YAAY,sBAAsB;AAClC,SAAS,UAAU;AAaf;AAXJ,IAAM,UAA2B;AAEjC,IAAM,iBAAkC;AAExC,IAAM,gBAAiC;AAEvC,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,QAAQ,UAAU,aAAa,GAAG,GAAG,MAAM,GAAG,QAC5D,oBAAkB,yBAAjB,EACC;AAAA,EAAkB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,GACF,CACD;AACD,eAAe,cAA+B,yBAAQ;","names":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkVT4JLAIEcjs = require('./chunk-VT4JLAIE.cjs');
4
+ var _chunkI4Q2GZZKcjs = require('./chunk-I4Q2GZZK.cjs');
5
5
 
6
6
 
7
- exports.createFormatPrice = _chunkVT4JLAIEcjs.createFormatPrice;
7
+ exports.createFormatPrice = _chunkI4Q2GZZKcjs.createFormatPrice;
8
8
  //# sourceMappingURL=price-format.cjs.map
@@ -12,6 +12,10 @@ interface FormatPriceOptions {
12
12
  /** Multiply value by quantity before formatting. */
13
13
  quantity?: number;
14
14
  }
15
+ /**
16
+ * Create a pure price-formatting function. Server-safe (no React dependency).
17
+ * Use {@link createPrice} in client components for the full Price component.
18
+ */
15
19
  declare function createFormatPrice(config?: PriceFormatConfig): (value: number, options?: FormatPriceOptions) => string;
16
20
 
17
21
  export { type FormatPriceOptions, type PriceFormatConfig, createFormatPrice };
@@ -12,6 +12,10 @@ interface FormatPriceOptions {
12
12
  /** Multiply value by quantity before formatting. */
13
13
  quantity?: number;
14
14
  }
15
+ /**
16
+ * Create a pure price-formatting function. Server-safe (no React dependency).
17
+ * Use {@link createPrice} in client components for the full Price component.
18
+ */
15
19
  declare function createFormatPrice(config?: PriceFormatConfig): (value: number, options?: FormatPriceOptions) => string;
16
20
 
17
21
  export { type FormatPriceOptions, type PriceFormatConfig, createFormatPrice };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  createFormatPrice
4
- } from "./chunk-PTAWV5SA.js";
4
+ } from "./chunk-FHUB6XI5.js";
5
5
  export {
6
6
  createFormatPrice
7
7
  };
package/dist/price.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkVT4JLAIEcjs = require('./chunk-VT4JLAIE.cjs');
5
+ var _chunkI4Q2GZZKcjs = require('./chunk-I4Q2GZZK.cjs');
6
6
 
7
7
  // src/price.tsx
8
8
  var _web = require('@simpleapps-com/augur-utils/web');
@@ -23,7 +23,7 @@ function createPrice(config = {}) {
23
23
  uomSeparator,
24
24
  classNames: factoryClassNames
25
25
  } = { ...defaults, ...config };
26
- const formatPrice = _chunkVT4JLAIEcjs.createFormatPrice.call(void 0, { currency, locale, precision });
26
+ const formatPrice = _chunkI4Q2GZZKcjs.createFormatPrice.call(void 0, { currency, locale, precision });
27
27
  const slotKeys = [
28
28
  "amount",
29
29
  "uom",
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/price.cjs","../src/price.tsx"],"names":["slots"],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/price.cjs","sourcesContent":[null,"\"use client\";\n\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { createFormatPrice } from \"./price-format\";\nimport type { FormatPriceOptions } from \"./price-format\";\n\n// Re-export server-safe types so client consumers get everything from one path\nexport type { PriceFormatConfig, FormatPriceOptions } from \"./price-format\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface PriceClassNames {\n /** The formatted amount text. */\n amount?: string;\n /** The UOM label (e.g. \"EACH\"). */\n uom?: string;\n /** The separator between price and UOM (e.g. \"/\"). */\n separator?: string;\n /** The zero-price label (e.g. \"Call for Price\"). */\n zero?: string;\n /** The loading skeleton. */\n skeleton?: string;\n /** The strikethrough original price. */\n original?: string;\n}\n\nexport interface PriceConfig {\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 /** Label shown when value is 0. Default: `\"Call for Price\"`. */\n zeroLabel?: string;\n /** Separator between price and UOM. Default: `\"/\"`. */\n uomSeparator?: string;\n /** Default class names for sub-elements. */\n classNames?: PriceClassNames;\n}\n\ntype PricePropsBase = {\n /** Unit price. */\n value?: number;\n /** Quantity — multiplied by value for extended price. */\n quantity?: number;\n /** Unit of measure label (e.g. \"EACH\", \"FT\"). */\n uom?: string;\n /** Override precision for this instance. */\n precision?: number;\n /** Original price shown as strikethrough for sale display. */\n originalValue?: number;\n /** Additional class names for the root element. */\n className?: string;\n /** Class names for sub-elements, merged with factory defaults. */\n classNames?: PriceClassNames;\n};\n\nexport type PriceProps =\n | (PricePropsBase & { loading?: false })\n | { loading: true; className?: string; classNames?: PriceClassNames };\n\nexport interface CreatePriceResult {\n Price: React.FC<PriceProps>;\n formatPrice: (value: number, options?: FormatPriceOptions) => string;\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nconst defaults = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n zeroLabel: \"Call for Price\",\n uomSeparator: \"/\",\n} as const;\n\nexport function createPrice(config: PriceConfig = {}): CreatePriceResult {\n const {\n currency,\n locale,\n precision,\n zeroLabel,\n uomSeparator,\n classNames: factoryClassNames,\n } = { ...defaults, ...config };\n\n const formatPrice = createFormatPrice({ currency, locale, precision });\n\n const slotKeys: (keyof PriceClassNames)[] = [\n \"amount\", \"uom\", \"separator\", \"zero\", \"skeleton\", \"original\",\n ];\n\n function mergeClassNames(\n instance?: PriceClassNames,\n ): PriceClassNames {\n if (!factoryClassNames && !instance) return {};\n const result: PriceClassNames = {};\n for (const key of slotKeys) {\n const merged = cn(factoryClassNames?.[key], instance?.[key]);\n if (merged) result[key] = merged;\n }\n return result;\n }\n\n function Price(props: PriceProps) {\n if (\"loading\" in props && props.loading) {\n const slots = mergeClassNames(props.classNames);\n return (\n <span\n className={cn(\n \"inline-block h-4 w-16 animate-pulse rounded bg-muted\",\n slots.skeleton,\n props.className,\n )}\n />\n );\n }\n\n const {\n value = 0,\n quantity,\n uom,\n precision: instancePrecision,\n originalValue,\n className,\n classNames: instanceClassNames,\n } = props as PricePropsBase;\n\n const slots = mergeClassNames(instanceClassNames);\n\n if (value === 0 && originalValue === undefined) {\n return (\n <span className={cn(\"text-muted-foreground\", slots.zero, className)}>\n {zeroLabel}\n </span>\n );\n }\n\n const formatted = formatPrice(value, {\n precision: instancePrecision,\n quantity,\n });\n\n return (\n <span className={className}>\n {originalValue !== undefined && (\n <s className={cn(\"mr-1 text-muted-foreground\", slots.original)}>\n {formatPrice(originalValue, { precision: instancePrecision })}\n </s>\n )}\n <span className={slots.amount}>{formatted}</span>\n {uom && (\n <>\n <span className={cn(\"ml-1\", slots.separator)}>\n {uomSeparator}\n </span>\n <span className={cn(\"ml-1 text-muted-foreground\", slots.uom)}>\n {uom}\n </span>\n </>\n )}\n </span>\n );\n }\n\n Price.displayName = \"Price\";\n\n return { Price, formatPrice };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/price.cjs","../src/price.tsx"],"names":["slots"],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/price.cjs","sourcesContent":[null,"\"use client\";\n\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { createFormatPrice } from \"./price-format\";\nimport type { FormatPriceOptions } from \"./price-format\";\n\n// Re-export server-safe types so client consumers get everything from one path\nexport type { PriceFormatConfig, FormatPriceOptions } from \"./price-format\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface PriceClassNames {\n /** The formatted amount text. */\n amount?: string;\n /** The UOM label (e.g. \"EACH\"). */\n uom?: string;\n /** The separator between price and UOM (e.g. \"/\"). */\n separator?: string;\n /** The zero-price label (e.g. \"Call for Price\"). */\n zero?: string;\n /** The loading skeleton. */\n skeleton?: string;\n /** The strikethrough original price. */\n original?: string;\n}\n\nexport interface PriceConfig {\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 /** Label shown when value is 0. Default: `\"Call for Price\"`. */\n zeroLabel?: string;\n /** Separator between price and UOM. Default: `\"/\"`. */\n uomSeparator?: string;\n /** Default class names for sub-elements. */\n classNames?: PriceClassNames;\n}\n\ntype PricePropsBase = {\n /** Unit price. */\n value?: number;\n /** Quantity — multiplied by value for extended price. */\n quantity?: number;\n /** Unit of measure label (e.g. \"EACH\", \"FT\"). */\n uom?: string;\n /** Override precision for this instance. */\n precision?: number;\n /** Original price shown as strikethrough for sale display. */\n originalValue?: number;\n /** Additional class names for the root element. */\n className?: string;\n /** Class names for sub-elements, merged with factory defaults. */\n classNames?: PriceClassNames;\n};\n\nexport type PriceProps =\n | (PricePropsBase & { loading?: false })\n | { loading: true; className?: string; classNames?: PriceClassNames };\n\nexport interface CreatePriceResult {\n Price: React.FC<PriceProps>;\n formatPrice: (value: number, options?: FormatPriceOptions) => string;\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nconst defaults = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n zeroLabel: \"Call for Price\",\n uomSeparator: \"/\",\n} as const;\n\n/**\n * Factory that creates a `Price` component and a `formatPrice` function\n * pre-configured with site-level currency/locale/precision.\n *\n * @example\n * ```tsx\n * // lib/price.ts -- one-time site config\n * import { createPrice } from \"@simpleapps-com/augur-web/price\";\n * export const { Price, formatPrice } = createPrice({\n * currency: \"USD\",\n * zeroLabel: \"Call for Price\",\n * });\n *\n * // components/ProductCard.tsx\n * <Price value={item.price1} uom={item.default_selling_unit} />\n * ```\n */\nexport function createPrice(config: PriceConfig = {}): CreatePriceResult {\n const {\n currency,\n locale,\n precision,\n zeroLabel,\n uomSeparator,\n classNames: factoryClassNames,\n } = { ...defaults, ...config };\n\n const formatPrice = createFormatPrice({ currency, locale, precision });\n\n const slotKeys: (keyof PriceClassNames)[] = [\n \"amount\", \"uom\", \"separator\", \"zero\", \"skeleton\", \"original\",\n ];\n\n function mergeClassNames(\n instance?: PriceClassNames,\n ): PriceClassNames {\n if (!factoryClassNames && !instance) return {};\n const result: PriceClassNames = {};\n for (const key of slotKeys) {\n const merged = cn(factoryClassNames?.[key], instance?.[key]);\n if (merged) result[key] = merged;\n }\n return result;\n }\n\n function Price(props: PriceProps) {\n if (\"loading\" in props && props.loading) {\n const slots = mergeClassNames(props.classNames);\n return (\n <span\n className={cn(\n \"inline-block h-4 w-16 animate-pulse rounded bg-muted\",\n slots.skeleton,\n props.className,\n )}\n />\n );\n }\n\n const {\n value = 0,\n quantity,\n uom,\n precision: instancePrecision,\n originalValue,\n className,\n classNames: instanceClassNames,\n } = props as PricePropsBase;\n\n const slots = mergeClassNames(instanceClassNames);\n\n if (value === 0 && originalValue === undefined) {\n return (\n <span className={cn(\"text-muted-foreground\", slots.zero, className)}>\n {zeroLabel}\n </span>\n );\n }\n\n const formatted = formatPrice(value, {\n precision: instancePrecision,\n quantity,\n });\n\n return (\n <span className={className}>\n {originalValue !== undefined && (\n <s className={cn(\"mr-1 text-muted-foreground\", slots.original)}>\n {formatPrice(originalValue, { precision: instancePrecision })}\n </s>\n )}\n <span className={slots.amount}>{formatted}</span>\n {uom && (\n <>\n <span className={cn(\"ml-1\", slots.separator)}>\n {uomSeparator}\n </span>\n <span className={cn(\"ml-1 text-muted-foreground\", slots.uom)}>\n {uom}\n </span>\n </>\n )}\n </span>\n );\n }\n\n Price.displayName = \"Price\";\n\n return { Price, formatPrice };\n}\n"]}
package/dist/price.d.cts CHANGED
@@ -56,6 +56,23 @@ interface CreatePriceResult {
56
56
  Price: React.FC<PriceProps>;
57
57
  formatPrice: (value: number, options?: FormatPriceOptions) => string;
58
58
  }
59
+ /**
60
+ * Factory that creates a `Price` component and a `formatPrice` function
61
+ * pre-configured with site-level currency/locale/precision.
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * // lib/price.ts -- one-time site config
66
+ * import { createPrice } from "@simpleapps-com/augur-web/price";
67
+ * export const { Price, formatPrice } = createPrice({
68
+ * currency: "USD",
69
+ * zeroLabel: "Call for Price",
70
+ * });
71
+ *
72
+ * // components/ProductCard.tsx
73
+ * <Price value={item.price1} uom={item.default_selling_unit} />
74
+ * ```
75
+ */
59
76
  declare function createPrice(config?: PriceConfig): CreatePriceResult;
60
77
 
61
78
  export { type CreatePriceResult, FormatPriceOptions, type PriceClassNames, type PriceConfig, type PriceProps, createPrice };
package/dist/price.d.ts CHANGED
@@ -56,6 +56,23 @@ interface CreatePriceResult {
56
56
  Price: React.FC<PriceProps>;
57
57
  formatPrice: (value: number, options?: FormatPriceOptions) => string;
58
58
  }
59
+ /**
60
+ * Factory that creates a `Price` component and a `formatPrice` function
61
+ * pre-configured with site-level currency/locale/precision.
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * // lib/price.ts -- one-time site config
66
+ * import { createPrice } from "@simpleapps-com/augur-web/price";
67
+ * export const { Price, formatPrice } = createPrice({
68
+ * currency: "USD",
69
+ * zeroLabel: "Call for Price",
70
+ * });
71
+ *
72
+ * // components/ProductCard.tsx
73
+ * <Price value={item.price1} uom={item.default_selling_unit} />
74
+ * ```
75
+ */
59
76
  declare function createPrice(config?: PriceConfig): CreatePriceResult;
60
77
 
61
78
  export { type CreatePriceResult, FormatPriceOptions, type PriceClassNames, type PriceConfig, type PriceProps, createPrice };
package/dist/price.js CHANGED
@@ -2,7 +2,7 @@
2
2
  "use client";
3
3
  import {
4
4
  createFormatPrice
5
- } from "./chunk-PTAWV5SA.js";
5
+ } from "./chunk-FHUB6XI5.js";
6
6
 
7
7
  // src/price.tsx
8
8
  import { cn } from "@simpleapps-com/augur-utils/web";
package/dist/price.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/price.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { createFormatPrice } from \"./price-format\";\nimport type { FormatPriceOptions } from \"./price-format\";\n\n// Re-export server-safe types so client consumers get everything from one path\nexport type { PriceFormatConfig, FormatPriceOptions } from \"./price-format\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface PriceClassNames {\n /** The formatted amount text. */\n amount?: string;\n /** The UOM label (e.g. \"EACH\"). */\n uom?: string;\n /** The separator between price and UOM (e.g. \"/\"). */\n separator?: string;\n /** The zero-price label (e.g. \"Call for Price\"). */\n zero?: string;\n /** The loading skeleton. */\n skeleton?: string;\n /** The strikethrough original price. */\n original?: string;\n}\n\nexport interface PriceConfig {\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 /** Label shown when value is 0. Default: `\"Call for Price\"`. */\n zeroLabel?: string;\n /** Separator between price and UOM. Default: `\"/\"`. */\n uomSeparator?: string;\n /** Default class names for sub-elements. */\n classNames?: PriceClassNames;\n}\n\ntype PricePropsBase = {\n /** Unit price. */\n value?: number;\n /** Quantity — multiplied by value for extended price. */\n quantity?: number;\n /** Unit of measure label (e.g. \"EACH\", \"FT\"). */\n uom?: string;\n /** Override precision for this instance. */\n precision?: number;\n /** Original price shown as strikethrough for sale display. */\n originalValue?: number;\n /** Additional class names for the root element. */\n className?: string;\n /** Class names for sub-elements, merged with factory defaults. */\n classNames?: PriceClassNames;\n};\n\nexport type PriceProps =\n | (PricePropsBase & { loading?: false })\n | { loading: true; className?: string; classNames?: PriceClassNames };\n\nexport interface CreatePriceResult {\n Price: React.FC<PriceProps>;\n formatPrice: (value: number, options?: FormatPriceOptions) => string;\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nconst defaults = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n zeroLabel: \"Call for Price\",\n uomSeparator: \"/\",\n} as const;\n\nexport function createPrice(config: PriceConfig = {}): CreatePriceResult {\n const {\n currency,\n locale,\n precision,\n zeroLabel,\n uomSeparator,\n classNames: factoryClassNames,\n } = { ...defaults, ...config };\n\n const formatPrice = createFormatPrice({ currency, locale, precision });\n\n const slotKeys: (keyof PriceClassNames)[] = [\n \"amount\", \"uom\", \"separator\", \"zero\", \"skeleton\", \"original\",\n ];\n\n function mergeClassNames(\n instance?: PriceClassNames,\n ): PriceClassNames {\n if (!factoryClassNames && !instance) return {};\n const result: PriceClassNames = {};\n for (const key of slotKeys) {\n const merged = cn(factoryClassNames?.[key], instance?.[key]);\n if (merged) result[key] = merged;\n }\n return result;\n }\n\n function Price(props: PriceProps) {\n if (\"loading\" in props && props.loading) {\n const slots = mergeClassNames(props.classNames);\n return (\n <span\n className={cn(\n \"inline-block h-4 w-16 animate-pulse rounded bg-muted\",\n slots.skeleton,\n props.className,\n )}\n />\n );\n }\n\n const {\n value = 0,\n quantity,\n uom,\n precision: instancePrecision,\n originalValue,\n className,\n classNames: instanceClassNames,\n } = props as PricePropsBase;\n\n const slots = mergeClassNames(instanceClassNames);\n\n if (value === 0 && originalValue === undefined) {\n return (\n <span className={cn(\"text-muted-foreground\", slots.zero, className)}>\n {zeroLabel}\n </span>\n );\n }\n\n const formatted = formatPrice(value, {\n precision: instancePrecision,\n quantity,\n });\n\n return (\n <span className={className}>\n {originalValue !== undefined && (\n <s className={cn(\"mr-1 text-muted-foreground\", slots.original)}>\n {formatPrice(originalValue, { precision: instancePrecision })}\n </s>\n )}\n <span className={slots.amount}>{formatted}</span>\n {uom && (\n <>\n <span className={cn(\"ml-1\", slots.separator)}>\n {uomSeparator}\n </span>\n <span className={cn(\"ml-1 text-muted-foreground\", slots.uom)}>\n {uom}\n </span>\n </>\n )}\n </span>\n );\n }\n\n Price.displayName = \"Price\";\n\n return { Price, formatPrice };\n}\n"],"mappings":";;;;;;;AAEA,SAAS,UAAU;AA+GX,SA4CE,UA5CF,KA4CE,YA5CF;AAxCR,IAAM,WAAW;AAAA,EACf,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAChB;AAEO,SAAS,YAAY,SAAsB,CAAC,GAAsB;AACvE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd,IAAI,EAAE,GAAG,UAAU,GAAG,OAAO;AAE7B,QAAM,cAAc,kBAAkB,EAAE,UAAU,QAAQ,UAAU,CAAC;AAErE,QAAM,WAAsC;AAAA,IAC1C;AAAA,IAAU;AAAA,IAAO;AAAA,IAAa;AAAA,IAAQ;AAAA,IAAY;AAAA,EACpD;AAEA,WAAS,gBACP,UACiB;AACjB,QAAI,CAAC,qBAAqB,CAAC,SAAU,QAAO,CAAC;AAC7C,UAAM,SAA0B,CAAC;AACjC,eAAW,OAAO,UAAU;AAC1B,YAAM,SAAS,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,CAAC;AAC3D,UAAI,OAAQ,QAAO,GAAG,IAAI;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AAEA,WAAS,MAAM,OAAmB;AAChC,QAAI,aAAa,SAAS,MAAM,SAAS;AACvC,YAAMA,SAAQ,gBAAgB,MAAM,UAAU;AAC9C,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACAA,OAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd,IAAI;AAEJ,UAAM,QAAQ,gBAAgB,kBAAkB;AAEhD,QAAI,UAAU,KAAK,kBAAkB,QAAW;AAC9C,aACE,oBAAC,UAAK,WAAW,GAAG,yBAAyB,MAAM,MAAM,SAAS,GAC/D,qBACH;AAAA,IAEJ;AAEA,UAAM,YAAY,YAAY,OAAO;AAAA,MACnC,WAAW;AAAA,MACX;AAAA,IACF,CAAC;AAED,WACE,qBAAC,UAAK,WACH;AAAA,wBAAkB,UACjB,oBAAC,OAAE,WAAW,GAAG,8BAA8B,MAAM,QAAQ,GAC1D,sBAAY,eAAe,EAAE,WAAW,kBAAkB,CAAC,GAC9D;AAAA,MAEF,oBAAC,UAAK,WAAW,MAAM,QAAS,qBAAU;AAAA,MACzC,OACC,iCACE;AAAA,4BAAC,UAAK,WAAW,GAAG,QAAQ,MAAM,SAAS,GACxC,wBACH;AAAA,QACA,oBAAC,UAAK,WAAW,GAAG,8BAA8B,MAAM,GAAG,GACxD,eACH;AAAA,SACF;AAAA,OAEJ;AAAA,EAEJ;AAEA,QAAM,cAAc;AAEpB,SAAO,EAAE,OAAO,YAAY;AAC9B;","names":["slots"]}
1
+ {"version":3,"sources":["../src/price.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { createFormatPrice } from \"./price-format\";\nimport type { FormatPriceOptions } from \"./price-format\";\n\n// Re-export server-safe types so client consumers get everything from one path\nexport type { PriceFormatConfig, FormatPriceOptions } from \"./price-format\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface PriceClassNames {\n /** The formatted amount text. */\n amount?: string;\n /** The UOM label (e.g. \"EACH\"). */\n uom?: string;\n /** The separator between price and UOM (e.g. \"/\"). */\n separator?: string;\n /** The zero-price label (e.g. \"Call for Price\"). */\n zero?: string;\n /** The loading skeleton. */\n skeleton?: string;\n /** The strikethrough original price. */\n original?: string;\n}\n\nexport interface PriceConfig {\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 /** Label shown when value is 0. Default: `\"Call for Price\"`. */\n zeroLabel?: string;\n /** Separator between price and UOM. Default: `\"/\"`. */\n uomSeparator?: string;\n /** Default class names for sub-elements. */\n classNames?: PriceClassNames;\n}\n\ntype PricePropsBase = {\n /** Unit price. */\n value?: number;\n /** Quantity — multiplied by value for extended price. */\n quantity?: number;\n /** Unit of measure label (e.g. \"EACH\", \"FT\"). */\n uom?: string;\n /** Override precision for this instance. */\n precision?: number;\n /** Original price shown as strikethrough for sale display. */\n originalValue?: number;\n /** Additional class names for the root element. */\n className?: string;\n /** Class names for sub-elements, merged with factory defaults. */\n classNames?: PriceClassNames;\n};\n\nexport type PriceProps =\n | (PricePropsBase & { loading?: false })\n | { loading: true; className?: string; classNames?: PriceClassNames };\n\nexport interface CreatePriceResult {\n Price: React.FC<PriceProps>;\n formatPrice: (value: number, options?: FormatPriceOptions) => string;\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nconst defaults = {\n currency: \"USD\",\n locale: \"en-US\",\n precision: 2,\n zeroLabel: \"Call for Price\",\n uomSeparator: \"/\",\n} as const;\n\n/**\n * Factory that creates a `Price` component and a `formatPrice` function\n * pre-configured with site-level currency/locale/precision.\n *\n * @example\n * ```tsx\n * // lib/price.ts -- one-time site config\n * import { createPrice } from \"@simpleapps-com/augur-web/price\";\n * export const { Price, formatPrice } = createPrice({\n * currency: \"USD\",\n * zeroLabel: \"Call for Price\",\n * });\n *\n * // components/ProductCard.tsx\n * <Price value={item.price1} uom={item.default_selling_unit} />\n * ```\n */\nexport function createPrice(config: PriceConfig = {}): CreatePriceResult {\n const {\n currency,\n locale,\n precision,\n zeroLabel,\n uomSeparator,\n classNames: factoryClassNames,\n } = { ...defaults, ...config };\n\n const formatPrice = createFormatPrice({ currency, locale, precision });\n\n const slotKeys: (keyof PriceClassNames)[] = [\n \"amount\", \"uom\", \"separator\", \"zero\", \"skeleton\", \"original\",\n ];\n\n function mergeClassNames(\n instance?: PriceClassNames,\n ): PriceClassNames {\n if (!factoryClassNames && !instance) return {};\n const result: PriceClassNames = {};\n for (const key of slotKeys) {\n const merged = cn(factoryClassNames?.[key], instance?.[key]);\n if (merged) result[key] = merged;\n }\n return result;\n }\n\n function Price(props: PriceProps) {\n if (\"loading\" in props && props.loading) {\n const slots = mergeClassNames(props.classNames);\n return (\n <span\n className={cn(\n \"inline-block h-4 w-16 animate-pulse rounded bg-muted\",\n slots.skeleton,\n props.className,\n )}\n />\n );\n }\n\n const {\n value = 0,\n quantity,\n uom,\n precision: instancePrecision,\n originalValue,\n className,\n classNames: instanceClassNames,\n } = props as PricePropsBase;\n\n const slots = mergeClassNames(instanceClassNames);\n\n if (value === 0 && originalValue === undefined) {\n return (\n <span className={cn(\"text-muted-foreground\", slots.zero, className)}>\n {zeroLabel}\n </span>\n );\n }\n\n const formatted = formatPrice(value, {\n precision: instancePrecision,\n quantity,\n });\n\n return (\n <span className={className}>\n {originalValue !== undefined && (\n <s className={cn(\"mr-1 text-muted-foreground\", slots.original)}>\n {formatPrice(originalValue, { precision: instancePrecision })}\n </s>\n )}\n <span className={slots.amount}>{formatted}</span>\n {uom && (\n <>\n <span className={cn(\"ml-1\", slots.separator)}>\n {uomSeparator}\n </span>\n <span className={cn(\"ml-1 text-muted-foreground\", slots.uom)}>\n {uom}\n </span>\n </>\n )}\n </span>\n );\n }\n\n Price.displayName = \"Price\";\n\n return { Price, formatPrice };\n}\n"],"mappings":";;;;;;;AAEA,SAAS,UAAU;AAgIX,SA4CE,UA5CF,KA4CE,YA5CF;AAzDR,IAAM,WAAW;AAAA,EACf,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAChB;AAmBO,SAAS,YAAY,SAAsB,CAAC,GAAsB;AACvE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd,IAAI,EAAE,GAAG,UAAU,GAAG,OAAO;AAE7B,QAAM,cAAc,kBAAkB,EAAE,UAAU,QAAQ,UAAU,CAAC;AAErE,QAAM,WAAsC;AAAA,IAC1C;AAAA,IAAU;AAAA,IAAO;AAAA,IAAa;AAAA,IAAQ;AAAA,IAAY;AAAA,EACpD;AAEA,WAAS,gBACP,UACiB;AACjB,QAAI,CAAC,qBAAqB,CAAC,SAAU,QAAO,CAAC;AAC7C,UAAM,SAA0B,CAAC;AACjC,eAAW,OAAO,UAAU;AAC1B,YAAM,SAAS,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,CAAC;AAC3D,UAAI,OAAQ,QAAO,GAAG,IAAI;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AAEA,WAAS,MAAM,OAAmB;AAChC,QAAI,aAAa,SAAS,MAAM,SAAS;AACvC,YAAMA,SAAQ,gBAAgB,MAAM,UAAU;AAC9C,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACAA,OAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,UAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd,IAAI;AAEJ,UAAM,QAAQ,gBAAgB,kBAAkB;AAEhD,QAAI,UAAU,KAAK,kBAAkB,QAAW;AAC9C,aACE,oBAAC,UAAK,WAAW,GAAG,yBAAyB,MAAM,MAAM,SAAS,GAC/D,qBACH;AAAA,IAEJ;AAEA,UAAM,YAAY,YAAY,OAAO;AAAA,MACnC,WAAW;AAAA,MACX;AAAA,IACF,CAAC;AAED,WACE,qBAAC,UAAK,WACH;AAAA,wBAAkB,UACjB,oBAAC,OAAE,WAAW,GAAG,8BAA8B,MAAM,QAAQ,GAC1D,sBAAY,eAAe,EAAE,WAAW,kBAAkB,CAAC,GAC9D;AAAA,MAEF,oBAAC,UAAK,WAAW,MAAM,QAAS,qBAAU;AAAA,MACzC,OACC,iCACE;AAAA,4BAAC,UAAK,WAAW,GAAG,QAAQ,MAAM,SAAS,GACxC,wBACH;AAAA,QACA,oBAAC,UAAK,WAAW,GAAG,8BAA8B,MAAM,GAAG,GACxD,eACH;AAAA,SACF;AAAA,OAEJ;AAAA,EAEJ;AAEA,QAAM,cAAc;AAEpB,SAAO,EAAE,OAAO,YAAY;AAC9B;","names":["slots"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/provider.cjs","../src/provider.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,yDAAmC;AAwC3B,+CAAA;AAXD,SAAS,iBAAA,CAAkB;AAAA,EAChC,MAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,uBACE,6BAAA,8BAAC,EAAA,EAAmB,GAAA,EAAU,IAAA,EAAY,SAAA,EAAsB,KAAA,EAAc,IAAA,EAAM,MAAA,EACjF,QAAA,EAAA,MAAA,CAAO,UAAA,kBACN,6BAAA;AAAA,IAAC,mCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,KAAA;AAAA,MACxB,eAAA,EAAiB,MAAA,CAAO,SAAA,CAAU,eAAA;AAAA,MAClC,QAAA,EAAU,MAAA,CAAO,SAAA,CAAU,QAAA;AAAA,MAC3B,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,KAAA;AAAA,MAEvB;AAAA,IAAA;AAAA,EACH,EAAA,EAEA,SAAA,CAEJ,CAAA;AAEJ;AD3BA;AACE;AACF,8CAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/provider.cjs","sourcesContent":[null,"import React, { type ReactNode } from \"react\";\nimport { AugurHooksProvider } from \"@simpleapps-com/augur-hooks\";\nimport type { AugurSiteConfig, AugurAuthContext, CacheConfig } from \"@simpleapps-com/augur-core\";\nimport type { AugurCallbacks } from \"@simpleapps-com/augur-hooks\";\nimport { AnalyticsProvider } from \"./gtm\";\n\nexport interface AugurSiteProviderProps {\n /** Site configuration created with `defineSite()`. */\n config: AugurSiteConfig;\n /** SDK client instance. */\n api?: unknown;\n /** Auth context (NextAuth, Clerk, etc.). */\n auth?: AugurAuthContext;\n /** Callback registry for server action overrides. */\n callbacks?: AugurCallbacks;\n /** Cache configuration (edge/Redis). */\n cache?: CacheConfig;\n children: ReactNode;\n}\n\n/**\n * Unified site provider that composes AugurHooksProvider with analytics\n * based on the site config.\n *\n * ```tsx\n * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>\n * {children}\n * </AugurSiteProvider>\n * ```\n */\nexport function AugurSiteProvider({\n config,\n api,\n auth,\n callbacks,\n cache,\n children,\n}: AugurSiteProviderProps) {\n return (\n <AugurHooksProvider api={api} auth={auth} callbacks={callbacks} cache={cache} site={config}>\n {config.analytics ? (\n <AnalyticsProvider\n gtmId={config.analytics.gtmId}\n consentRequired={config.analytics.consentRequired}\n strategy={config.analytics.strategy}\n debug={config.analytics.debug}\n >\n {children}\n </AnalyticsProvider>\n ) : (\n children\n )}\n </AugurHooksProvider>\n );\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/provider.cjs","../src/provider.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,yDAAmC;AA2D3B,+CAAA;AAXD,SAAS,iBAAA,CAAkB;AAAA,EAChC,MAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,uBACE,6BAAA,8BAAC,EAAA,EAAmB,GAAA,EAAU,IAAA,EAAY,SAAA,EAAsB,KAAA,EAAc,IAAA,EAAM,MAAA,EACjF,QAAA,EAAA,MAAA,CAAO,UAAA,kBACN,6BAAA;AAAA,IAAC,mCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,KAAA;AAAA,MACxB,eAAA,EAAiB,MAAA,CAAO,SAAA,CAAU,eAAA;AAAA,MAClC,QAAA,EAAU,MAAA,CAAO,SAAA,CAAU,QAAA;AAAA,MAC3B,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,KAAA;AAAA,MAEvB;AAAA,IAAA;AAAA,EACH,EAAA,EAEA,SAAA,CAEJ,CAAA;AAEJ;AD9CA;AACE;AACF,8CAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/provider.cjs","sourcesContent":[null,"import React, { type ReactNode } from \"react\";\nimport { AugurHooksProvider } from \"@simpleapps-com/augur-hooks\";\nimport type { AugurSiteConfig, AugurAuthContext, CacheConfig } from \"@simpleapps-com/augur-core\";\nimport type { AugurCallbacks } from \"@simpleapps-com/augur-hooks\";\nimport { AnalyticsProvider } from \"./gtm\";\n\nexport interface AugurSiteProviderProps {\n /** Site configuration created with `defineSite()`. */\n config: AugurSiteConfig;\n /** SDK client instance. */\n api?: unknown;\n /** Auth context (NextAuth, Clerk, etc.). */\n auth?: AugurAuthContext;\n /** Callback registry for server action overrides. */\n callbacks?: AugurCallbacks;\n /** Cache configuration (edge/Redis). */\n cache?: CacheConfig;\n children: ReactNode;\n}\n\n/**\n * Unified site provider that composes AugurHooksProvider with analytics\n * based on the site config.\n *\n * The `auth` prop accepts any object matching `AugurAuthContext`.\n * Map your auth provider manually — augur-hooks is auth-provider-agnostic\n * so it works with NextAuth, Clerk, Supabase Auth, etc.\n *\n * NextAuth example:\n * ```tsx\n * import { useSession } from \"next-auth/react\";\n *\n * function Providers({ children }: { children: React.ReactNode }) {\n * const { data: session, status } = useSession();\n * const auth = useMemo<AugurAuthContext>(() => ({\n * status,\n * customerId: session?.user?.customerId,\n * userId: session?.user?.id,\n * cartHdrUid: session?.user?.cartHdrUid,\n * }), [session, status]);\n *\n * return (\n * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>\n * {children}\n * </AugurSiteProvider>\n * );\n * }\n * ```\n */\nexport function AugurSiteProvider({\n config,\n api,\n auth,\n callbacks,\n cache,\n children,\n}: AugurSiteProviderProps) {\n return (\n <AugurHooksProvider api={api} auth={auth} callbacks={callbacks} cache={cache} site={config}>\n {config.analytics ? (\n <AnalyticsProvider\n gtmId={config.analytics.gtmId}\n consentRequired={config.analytics.consentRequired}\n strategy={config.analytics.strategy}\n debug={config.analytics.debug}\n >\n {children}\n </AnalyticsProvider>\n ) : (\n children\n )}\n </AugurHooksProvider>\n );\n}\n"]}
@@ -20,10 +20,29 @@ interface AugurSiteProviderProps {
20
20
  * Unified site provider that composes AugurHooksProvider with analytics
21
21
  * based on the site config.
22
22
  *
23
+ * The `auth` prop accepts any object matching `AugurAuthContext`.
24
+ * Map your auth provider manually — augur-hooks is auth-provider-agnostic
25
+ * so it works with NextAuth, Clerk, Supabase Auth, etc.
26
+ *
27
+ * NextAuth example:
23
28
  * ```tsx
24
- * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>
25
- * {children}
26
- * </AugurSiteProvider>
29
+ * import { useSession } from "next-auth/react";
30
+ *
31
+ * function Providers({ children }: { children: React.ReactNode }) {
32
+ * const { data: session, status } = useSession();
33
+ * const auth = useMemo<AugurAuthContext>(() => ({
34
+ * status,
35
+ * customerId: session?.user?.customerId,
36
+ * userId: session?.user?.id,
37
+ * cartHdrUid: session?.user?.cartHdrUid,
38
+ * }), [session, status]);
39
+ *
40
+ * return (
41
+ * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>
42
+ * {children}
43
+ * </AugurSiteProvider>
44
+ * );
45
+ * }
27
46
  * ```
28
47
  */
29
48
  declare function AugurSiteProvider({ config, api, auth, callbacks, cache, children, }: AugurSiteProviderProps): react_jsx_runtime.JSX.Element;
@@ -20,10 +20,29 @@ interface AugurSiteProviderProps {
20
20
  * Unified site provider that composes AugurHooksProvider with analytics
21
21
  * based on the site config.
22
22
  *
23
+ * The `auth` prop accepts any object matching `AugurAuthContext`.
24
+ * Map your auth provider manually — augur-hooks is auth-provider-agnostic
25
+ * so it works with NextAuth, Clerk, Supabase Auth, etc.
26
+ *
27
+ * NextAuth example:
23
28
  * ```tsx
24
- * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>
25
- * {children}
26
- * </AugurSiteProvider>
29
+ * import { useSession } from "next-auth/react";
30
+ *
31
+ * function Providers({ children }: { children: React.ReactNode }) {
32
+ * const { data: session, status } = useSession();
33
+ * const auth = useMemo<AugurAuthContext>(() => ({
34
+ * status,
35
+ * customerId: session?.user?.customerId,
36
+ * userId: session?.user?.id,
37
+ * cartHdrUid: session?.user?.cartHdrUid,
38
+ * }), [session, status]);
39
+ *
40
+ * return (
41
+ * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>
42
+ * {children}
43
+ * </AugurSiteProvider>
44
+ * );
45
+ * }
27
46
  * ```
28
47
  */
29
48
  declare function AugurSiteProvider({ config, api, auth, callbacks, cache, children, }: AugurSiteProviderProps): react_jsx_runtime.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider.tsx"],"sourcesContent":["import React, { type ReactNode } from \"react\";\nimport { AugurHooksProvider } from \"@simpleapps-com/augur-hooks\";\nimport type { AugurSiteConfig, AugurAuthContext, CacheConfig } from \"@simpleapps-com/augur-core\";\nimport type { AugurCallbacks } from \"@simpleapps-com/augur-hooks\";\nimport { AnalyticsProvider } from \"./gtm\";\n\nexport interface AugurSiteProviderProps {\n /** Site configuration created with `defineSite()`. */\n config: AugurSiteConfig;\n /** SDK client instance. */\n api?: unknown;\n /** Auth context (NextAuth, Clerk, etc.). */\n auth?: AugurAuthContext;\n /** Callback registry for server action overrides. */\n callbacks?: AugurCallbacks;\n /** Cache configuration (edge/Redis). */\n cache?: CacheConfig;\n children: ReactNode;\n}\n\n/**\n * Unified site provider that composes AugurHooksProvider with analytics\n * based on the site config.\n *\n * ```tsx\n * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>\n * {children}\n * </AugurSiteProvider>\n * ```\n */\nexport function AugurSiteProvider({\n config,\n api,\n auth,\n callbacks,\n cache,\n children,\n}: AugurSiteProviderProps) {\n return (\n <AugurHooksProvider api={api} auth={auth} callbacks={callbacks} cache={cache} site={config}>\n {config.analytics ? (\n <AnalyticsProvider\n gtmId={config.analytics.gtmId}\n consentRequired={config.analytics.consentRequired}\n strategy={config.analytics.strategy}\n debug={config.analytics.debug}\n >\n {children}\n </AnalyticsProvider>\n ) : (\n children\n )}\n </AugurHooksProvider>\n );\n}\n"],"mappings":";;;;;;AACA,SAAS,0BAA0B;AAwC3B;AAXD,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,SACE,oBAAC,sBAAmB,KAAU,MAAY,WAAsB,OAAc,MAAM,QACjF,iBAAO,YACN;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,OAAO,UAAU;AAAA,MACxB,iBAAiB,OAAO,UAAU;AAAA,MAClC,UAAU,OAAO,UAAU;AAAA,MAC3B,OAAO,OAAO,UAAU;AAAA,MAEvB;AAAA;AAAA,EACH,IAEA,UAEJ;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../src/provider.tsx"],"sourcesContent":["import React, { type ReactNode } from \"react\";\nimport { AugurHooksProvider } from \"@simpleapps-com/augur-hooks\";\nimport type { AugurSiteConfig, AugurAuthContext, CacheConfig } from \"@simpleapps-com/augur-core\";\nimport type { AugurCallbacks } from \"@simpleapps-com/augur-hooks\";\nimport { AnalyticsProvider } from \"./gtm\";\n\nexport interface AugurSiteProviderProps {\n /** Site configuration created with `defineSite()`. */\n config: AugurSiteConfig;\n /** SDK client instance. */\n api?: unknown;\n /** Auth context (NextAuth, Clerk, etc.). */\n auth?: AugurAuthContext;\n /** Callback registry for server action overrides. */\n callbacks?: AugurCallbacks;\n /** Cache configuration (edge/Redis). */\n cache?: CacheConfig;\n children: ReactNode;\n}\n\n/**\n * Unified site provider that composes AugurHooksProvider with analytics\n * based on the site config.\n *\n * The `auth` prop accepts any object matching `AugurAuthContext`.\n * Map your auth provider manually — augur-hooks is auth-provider-agnostic\n * so it works with NextAuth, Clerk, Supabase Auth, etc.\n *\n * NextAuth example:\n * ```tsx\n * import { useSession } from \"next-auth/react\";\n *\n * function Providers({ children }: { children: React.ReactNode }) {\n * const { data: session, status } = useSession();\n * const auth = useMemo<AugurAuthContext>(() => ({\n * status,\n * customerId: session?.user?.customerId,\n * userId: session?.user?.id,\n * cartHdrUid: session?.user?.cartHdrUid,\n * }), [session, status]);\n *\n * return (\n * <AugurSiteProvider config={siteConfig} api={api} auth={auth}>\n * {children}\n * </AugurSiteProvider>\n * );\n * }\n * ```\n */\nexport function AugurSiteProvider({\n config,\n api,\n auth,\n callbacks,\n cache,\n children,\n}: AugurSiteProviderProps) {\n return (\n <AugurHooksProvider api={api} auth={auth} callbacks={callbacks} cache={cache} site={config}>\n {config.analytics ? (\n <AnalyticsProvider\n gtmId={config.analytics.gtmId}\n consentRequired={config.analytics.consentRequired}\n strategy={config.analytics.strategy}\n debug={config.analytics.debug}\n >\n {children}\n </AnalyticsProvider>\n ) : (\n children\n )}\n </AugurHooksProvider>\n );\n}\n"],"mappings":";;;;;;AACA,SAAS,0BAA0B;AA2D3B;AAXD,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,SACE,oBAAC,sBAAmB,KAAU,MAAY,WAAsB,OAAc,MAAM,QACjF,iBAAO,YACN;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,OAAO,UAAU;AAAA,MACxB,iBAAiB,OAAO,UAAU;AAAA,MAClC,UAAU,OAAO,UAAU;AAAA,MAC3B,OAAO,OAAO,UAAU;AAAA,MAEvB;AAAA;AAAA,EACH,IAEA,UAEJ;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/quantity-input.cjs","../src/quantity-input.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/quantity-input.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { LuMinus, LuPlus } from \"react-icons/lu\";\n\nexport interface QuantityInputProps {\n value: number;\n onChange: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n decimals?: number;\n showStepper?: boolean;\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n buttonClassName?: string;\n}\n\nfunction roundToStep(value: number, step: number): number {\n if (step <= 1) return value;\n return Math.ceil(value / step) * step;\n}\n\nconst QuantityInput = React.memo(\n React.forwardRef<HTMLInputElement, QuantityInputProps>(\n (\n {\n value,\n onChange,\n min = 0,\n max,\n step = 1,\n decimals = 0,\n showStepper = true,\n disabled = false,\n className,\n inputClassName,\n buttonClassName,\n },\n ref,\n ) => {\n const [qtyStr, setQtyStr] = React.useState(() =>\n value.toFixed(decimals),\n );\n\n React.useEffect(() => {\n setQtyStr(value.toFixed(decimals));\n }, [value, decimals]);\n\n const commit = React.useCallback(\n (raw: string) => {\n if (raw.trim() === \"\") {\n setQtyStr(min.toFixed(decimals));\n onChange(min);\n return;\n }\n\n let parsed = parseFloat(raw);\n if (isNaN(parsed)) parsed = min;\n\n parsed = roundToStep(parsed, step);\n if (parsed < min) parsed = min;\n if (max !== undefined && parsed > max) parsed = max;\n\n const rounded = parseFloat(parsed.toFixed(decimals));\n setQtyStr(rounded.toFixed(decimals));\n onChange(rounded);\n },\n [min, max, step, decimals, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const allowed = [\n \"Backspace\",\n \"Delete\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Enter\",\n ];\n if (allowed.includes(e.key)) {\n if (e.key === \"Enter\") {\n commit(qtyStr);\n }\n return;\n }\n\n if (decimals > 0 && e.key === \".\" && !qtyStr.includes(\".\")) {\n return;\n }\n\n if (e.key >= \"0\" && e.key <= \"9\") {\n return;\n }\n\n e.preventDefault();\n },\n [decimals, qtyStr, commit],\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const pattern = decimals > 0 ? /[^0-9.]/g : /[^0-9]/g;\n let cleaned = e.target.value.replace(pattern, \"\");\n if (decimals > 0) {\n const parts = cleaned.split(\".\");\n if (parts.length > 2) {\n cleaned = parts[0] + \".\" + parts.slice(1).join(\"\");\n }\n }\n setQtyStr(cleaned);\n },\n [decimals],\n );\n\n const handleBlur = React.useCallback(() => {\n commit(qtyStr);\n }, [commit, qtyStr]);\n\n const handleDecrement = React.useCallback(() => {\n const next = Math.max(value - step, min);\n onChange(next);\n }, [value, step, min, onChange]);\n\n const handleIncrement = React.useCallback(() => {\n const next = value + step;\n onChange(max !== undefined ? Math.min(next, max) : next);\n }, [value, step, max, onChange]);\n\n const minDisabled = disabled || value <= min;\n const maxDisabled = disabled || (max !== undefined && value >= max);\n\n return (\n <div\n className={cn(\n \"inline-flex items-center border rounded-md bg-background\",\n className,\n )}\n >\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Decrease quantity\"\n disabled={minDisabled}\n onClick={handleDecrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuMinus />\n </button>\n )}\n <input\n ref={ref}\n type=\"text\"\n inputMode={decimals > 0 ? \"decimal\" : \"numeric\"}\n value={qtyStr}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\n \"h-10 w-16 text-center bg-transparent focus:outline-none\",\n inputClassName,\n )}\n />\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Increase quantity\"\n disabled={maxDisabled}\n onClick={handleIncrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuPlus />\n </button>\n )}\n </div>\n );\n },\n ),\n);\nQuantityInput.displayName = \"QuantityInput\";\n\nexport { QuantityInput };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/quantity-input.cjs","../src/quantity-input.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/quantity-input.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { LuMinus, LuPlus } from \"react-icons/lu\";\n\nexport interface QuantityInputProps {\n /** Current quantity value (controlled). */\n value: number;\n /** Called with the new quantity after validation and rounding. */\n onChange: (value: number) => void;\n /** Minimum allowed quantity. Default: `0`. */\n min?: number;\n /** Maximum allowed quantity. */\n max?: number;\n /** Increment/decrement step size. Values are rounded up to the nearest step. Default: `1`. */\n step?: number;\n /** Number of decimal places to display. Default: `0`. */\n decimals?: number;\n /** Show +/- stepper buttons. Default: `true`. */\n showStepper?: boolean;\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n buttonClassName?: string;\n}\n\nfunction roundToStep(value: number, step: number): number {\n if (step <= 1) return value;\n return Math.ceil(value / step) * step;\n}\n\n/**\n * Numeric input with optional +/- stepper buttons for cart quantities.\n *\n * @example\n * ```tsx\n * <QuantityInput value={qty} onChange={setQty} min={1} step={1} />\n * ```\n */\nconst QuantityInput = React.memo(\n React.forwardRef<HTMLInputElement, QuantityInputProps>(\n (\n {\n value,\n onChange,\n min = 0,\n max,\n step = 1,\n decimals = 0,\n showStepper = true,\n disabled = false,\n className,\n inputClassName,\n buttonClassName,\n },\n ref,\n ) => {\n const [qtyStr, setQtyStr] = React.useState(() =>\n value.toFixed(decimals),\n );\n\n React.useEffect(() => {\n setQtyStr(value.toFixed(decimals));\n }, [value, decimals]);\n\n const commit = React.useCallback(\n (raw: string) => {\n if (raw.trim() === \"\") {\n setQtyStr(min.toFixed(decimals));\n onChange(min);\n return;\n }\n\n let parsed = parseFloat(raw);\n if (isNaN(parsed)) parsed = min;\n\n parsed = roundToStep(parsed, step);\n if (parsed < min) parsed = min;\n if (max !== undefined && parsed > max) parsed = max;\n\n const rounded = parseFloat(parsed.toFixed(decimals));\n setQtyStr(rounded.toFixed(decimals));\n onChange(rounded);\n },\n [min, max, step, decimals, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const allowed = [\n \"Backspace\",\n \"Delete\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Enter\",\n ];\n if (allowed.includes(e.key)) {\n if (e.key === \"Enter\") {\n commit(qtyStr);\n }\n return;\n }\n\n if (decimals > 0 && e.key === \".\" && !qtyStr.includes(\".\")) {\n return;\n }\n\n if (e.key >= \"0\" && e.key <= \"9\") {\n return;\n }\n\n e.preventDefault();\n },\n [decimals, qtyStr, commit],\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const pattern = decimals > 0 ? /[^0-9.]/g : /[^0-9]/g;\n let cleaned = e.target.value.replace(pattern, \"\");\n if (decimals > 0) {\n const parts = cleaned.split(\".\");\n if (parts.length > 2) {\n cleaned = parts[0] + \".\" + parts.slice(1).join(\"\");\n }\n }\n setQtyStr(cleaned);\n },\n [decimals],\n );\n\n const handleBlur = React.useCallback(() => {\n commit(qtyStr);\n }, [commit, qtyStr]);\n\n const handleDecrement = React.useCallback(() => {\n const next = Math.max(value - step, min);\n onChange(next);\n }, [value, step, min, onChange]);\n\n const handleIncrement = React.useCallback(() => {\n const next = value + step;\n onChange(max !== undefined ? Math.min(next, max) : next);\n }, [value, step, max, onChange]);\n\n const minDisabled = disabled || value <= min;\n const maxDisabled = disabled || (max !== undefined && value >= max);\n\n return (\n <div\n className={cn(\n \"inline-flex items-center border rounded-md bg-background\",\n className,\n )}\n >\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Decrease quantity\"\n disabled={minDisabled}\n onClick={handleDecrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuMinus />\n </button>\n )}\n <input\n ref={ref}\n type=\"text\"\n inputMode={decimals > 0 ? \"decimal\" : \"numeric\"}\n value={qtyStr}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\n \"h-10 w-16 text-center bg-transparent focus:outline-none\",\n inputClassName,\n )}\n />\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Increase quantity\"\n disabled={maxDisabled}\n onClick={handleIncrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuPlus />\n </button>\n )}\n </div>\n );\n },\n ),\n);\nQuantityInput.displayName = \"QuantityInput\";\n\nexport { QuantityInput };\n"]}
@@ -1,18 +1,33 @@
1
1
  import * as React from 'react';
2
2
 
3
3
  interface QuantityInputProps {
4
+ /** Current quantity value (controlled). */
4
5
  value: number;
6
+ /** Called with the new quantity after validation and rounding. */
5
7
  onChange: (value: number) => void;
8
+ /** Minimum allowed quantity. Default: `0`. */
6
9
  min?: number;
10
+ /** Maximum allowed quantity. */
7
11
  max?: number;
12
+ /** Increment/decrement step size. Values are rounded up to the nearest step. Default: `1`. */
8
13
  step?: number;
14
+ /** Number of decimal places to display. Default: `0`. */
9
15
  decimals?: number;
16
+ /** Show +/- stepper buttons. Default: `true`. */
10
17
  showStepper?: boolean;
11
18
  disabled?: boolean;
12
19
  className?: string;
13
20
  inputClassName?: string;
14
21
  buttonClassName?: string;
15
22
  }
23
+ /**
24
+ * Numeric input with optional +/- stepper buttons for cart quantities.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * <QuantityInput value={qty} onChange={setQty} min={1} step={1} />
29
+ * ```
30
+ */
16
31
  declare const QuantityInput: React.NamedExoticComponent<QuantityInputProps & React.RefAttributes<HTMLInputElement>>;
17
32
 
18
33
  export { QuantityInput, type QuantityInputProps };
@@ -1,18 +1,33 @@
1
1
  import * as React from 'react';
2
2
 
3
3
  interface QuantityInputProps {
4
+ /** Current quantity value (controlled). */
4
5
  value: number;
6
+ /** Called with the new quantity after validation and rounding. */
5
7
  onChange: (value: number) => void;
8
+ /** Minimum allowed quantity. Default: `0`. */
6
9
  min?: number;
10
+ /** Maximum allowed quantity. */
7
11
  max?: number;
12
+ /** Increment/decrement step size. Values are rounded up to the nearest step. Default: `1`. */
8
13
  step?: number;
14
+ /** Number of decimal places to display. Default: `0`. */
9
15
  decimals?: number;
16
+ /** Show +/- stepper buttons. Default: `true`. */
10
17
  showStepper?: boolean;
11
18
  disabled?: boolean;
12
19
  className?: string;
13
20
  inputClassName?: string;
14
21
  buttonClassName?: string;
15
22
  }
23
+ /**
24
+ * Numeric input with optional +/- stepper buttons for cart quantities.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * <QuantityInput value={qty} onChange={setQty} min={1} step={1} />
29
+ * ```
30
+ */
16
31
  declare const QuantityInput: React.NamedExoticComponent<QuantityInputProps & React.RefAttributes<HTMLInputElement>>;
17
32
 
18
33
  export { QuantityInput, type QuantityInputProps };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/quantity-input.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { LuMinus, LuPlus } from \"react-icons/lu\";\n\nexport interface QuantityInputProps {\n value: number;\n onChange: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n decimals?: number;\n showStepper?: boolean;\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n buttonClassName?: string;\n}\n\nfunction roundToStep(value: number, step: number): number {\n if (step <= 1) return value;\n return Math.ceil(value / step) * step;\n}\n\nconst QuantityInput = React.memo(\n React.forwardRef<HTMLInputElement, QuantityInputProps>(\n (\n {\n value,\n onChange,\n min = 0,\n max,\n step = 1,\n decimals = 0,\n showStepper = true,\n disabled = false,\n className,\n inputClassName,\n buttonClassName,\n },\n ref,\n ) => {\n const [qtyStr, setQtyStr] = React.useState(() =>\n value.toFixed(decimals),\n );\n\n React.useEffect(() => {\n setQtyStr(value.toFixed(decimals));\n }, [value, decimals]);\n\n const commit = React.useCallback(\n (raw: string) => {\n if (raw.trim() === \"\") {\n setQtyStr(min.toFixed(decimals));\n onChange(min);\n return;\n }\n\n let parsed = parseFloat(raw);\n if (isNaN(parsed)) parsed = min;\n\n parsed = roundToStep(parsed, step);\n if (parsed < min) parsed = min;\n if (max !== undefined && parsed > max) parsed = max;\n\n const rounded = parseFloat(parsed.toFixed(decimals));\n setQtyStr(rounded.toFixed(decimals));\n onChange(rounded);\n },\n [min, max, step, decimals, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const allowed = [\n \"Backspace\",\n \"Delete\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Enter\",\n ];\n if (allowed.includes(e.key)) {\n if (e.key === \"Enter\") {\n commit(qtyStr);\n }\n return;\n }\n\n if (decimals > 0 && e.key === \".\" && !qtyStr.includes(\".\")) {\n return;\n }\n\n if (e.key >= \"0\" && e.key <= \"9\") {\n return;\n }\n\n e.preventDefault();\n },\n [decimals, qtyStr, commit],\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const pattern = decimals > 0 ? /[^0-9.]/g : /[^0-9]/g;\n let cleaned = e.target.value.replace(pattern, \"\");\n if (decimals > 0) {\n const parts = cleaned.split(\".\");\n if (parts.length > 2) {\n cleaned = parts[0] + \".\" + parts.slice(1).join(\"\");\n }\n }\n setQtyStr(cleaned);\n },\n [decimals],\n );\n\n const handleBlur = React.useCallback(() => {\n commit(qtyStr);\n }, [commit, qtyStr]);\n\n const handleDecrement = React.useCallback(() => {\n const next = Math.max(value - step, min);\n onChange(next);\n }, [value, step, min, onChange]);\n\n const handleIncrement = React.useCallback(() => {\n const next = value + step;\n onChange(max !== undefined ? Math.min(next, max) : next);\n }, [value, step, max, onChange]);\n\n const minDisabled = disabled || value <= min;\n const maxDisabled = disabled || (max !== undefined && value >= max);\n\n return (\n <div\n className={cn(\n \"inline-flex items-center border rounded-md bg-background\",\n className,\n )}\n >\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Decrease quantity\"\n disabled={minDisabled}\n onClick={handleDecrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuMinus />\n </button>\n )}\n <input\n ref={ref}\n type=\"text\"\n inputMode={decimals > 0 ? \"decimal\" : \"numeric\"}\n value={qtyStr}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\n \"h-10 w-16 text-center bg-transparent focus:outline-none\",\n inputClassName,\n )}\n />\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Increase quantity\"\n disabled={maxDisabled}\n onClick={handleIncrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuPlus />\n </button>\n )}\n </div>\n );\n },\n ),\n);\nQuantityInput.displayName = \"QuantityInput\";\n\nexport { QuantityInput };\n"],"mappings":";;;;AAEA,YAAY,WAAW;AACvB,SAAS,UAAU;AACnB,SAAS,SAAS,cAAc;AAoIxB,SAiBM,KAjBN;AApHR,SAAS,YAAY,OAAe,MAAsB;AACxD,MAAI,QAAQ,EAAG,QAAO;AACtB,SAAO,KAAK,KAAK,QAAQ,IAAI,IAAI;AACnC;AAEA,IAAM,gBAAsB;AAAA,EACpB;AAAA,IACJ,CACE;AAAA,MACE;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,OAAO;AAAA,MACP,WAAW;AAAA,MACX,cAAc;AAAA,MACd,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF,GACA,QACG;AACH,YAAM,CAAC,QAAQ,SAAS,IAAU;AAAA,QAAS,MACzC,MAAM,QAAQ,QAAQ;AAAA,MACxB;AAEA,MAAM,gBAAU,MAAM;AACpB,kBAAU,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACnC,GAAG,CAAC,OAAO,QAAQ,CAAC;AAEpB,YAAM,SAAe;AAAA,QACnB,CAAC,QAAgB;AACf,cAAI,IAAI,KAAK,MAAM,IAAI;AACrB,sBAAU,IAAI,QAAQ,QAAQ,CAAC;AAC/B,qBAAS,GAAG;AACZ;AAAA,UACF;AAEA,cAAI,SAAS,WAAW,GAAG;AAC3B,cAAI,MAAM,MAAM,EAAG,UAAS;AAE5B,mBAAS,YAAY,QAAQ,IAAI;AACjC,cAAI,SAAS,IAAK,UAAS;AAC3B,cAAI,QAAQ,UAAa,SAAS,IAAK,UAAS;AAEhD,gBAAM,UAAU,WAAW,OAAO,QAAQ,QAAQ,CAAC;AACnD,oBAAU,QAAQ,QAAQ,QAAQ,CAAC;AACnC,mBAAS,OAAO;AAAA,QAClB;AAAA,QACA,CAAC,KAAK,KAAK,MAAM,UAAU,QAAQ;AAAA,MACrC;AAEA,YAAM,gBAAsB;AAAA,QAC1B,CAAC,MAA6C;AAC5C,gBAAM,UAAU;AAAA,YACd;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,cAAI,QAAQ,SAAS,EAAE,GAAG,GAAG;AAC3B,gBAAI,EAAE,QAAQ,SAAS;AACrB,qBAAO,MAAM;AAAA,YACf;AACA;AAAA,UACF;AAEA,cAAI,WAAW,KAAK,EAAE,QAAQ,OAAO,CAAC,OAAO,SAAS,GAAG,GAAG;AAC1D;AAAA,UACF;AAEA,cAAI,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAChC;AAAA,UACF;AAEA,YAAE,eAAe;AAAA,QACnB;AAAA,QACA,CAAC,UAAU,QAAQ,MAAM;AAAA,MAC3B;AAEA,YAAM,eAAqB;AAAA,QACzB,CAAC,MAA2C;AAC1C,gBAAM,UAAU,WAAW,IAAI,aAAa;AAC5C,cAAI,UAAU,EAAE,OAAO,MAAM,QAAQ,SAAS,EAAE;AAChD,cAAI,WAAW,GAAG;AAChB,kBAAM,QAAQ,QAAQ,MAAM,GAAG;AAC/B,gBAAI,MAAM,SAAS,GAAG;AACpB,wBAAU,MAAM,CAAC,IAAI,MAAM,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE;AAAA,YACnD;AAAA,UACF;AACA,oBAAU,OAAO;AAAA,QACnB;AAAA,QACA,CAAC,QAAQ;AAAA,MACX;AAEA,YAAM,aAAmB,kBAAY,MAAM;AACzC,eAAO,MAAM;AAAA,MACf,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,YAAM,kBAAwB,kBAAY,MAAM;AAC9C,cAAM,OAAO,KAAK,IAAI,QAAQ,MAAM,GAAG;AACvC,iBAAS,IAAI;AAAA,MACf,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC;AAE/B,YAAM,kBAAwB,kBAAY,MAAM;AAC9C,cAAM,OAAO,QAAQ;AACrB,iBAAS,QAAQ,SAAY,KAAK,IAAI,MAAM,GAAG,IAAI,IAAI;AAAA,MACzD,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC;AAE/B,YAAM,cAAc,YAAY,SAAS;AACzC,YAAM,cAAc,YAAa,QAAQ,UAAa,SAAS;AAE/D,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UAEC;AAAA,2BACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,UAAU;AAAA,gBACV,SAAS;AAAA,gBACT,WAAW;AAAA,kBACT;AAAA,kBACA;AAAA,gBACF;AAAA,gBAEA,8BAAC,WAAQ;AAAA;AAAA,YACX;AAAA,YAEF;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,MAAK;AAAA,gBACL,WAAW,WAAW,IAAI,YAAY;AAAA,gBACtC,OAAO;AAAA,gBACP;AAAA,gBACA,WAAW;AAAA,gBACX,UAAU;AAAA,gBACV,QAAQ;AAAA,gBACR,WAAW;AAAA,kBACT;AAAA,kBACA;AAAA,gBACF;AAAA;AAAA,YACF;AAAA,YACC,eACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,UAAU;AAAA,gBACV,SAAS;AAAA,gBACT,WAAW;AAAA,kBACT;AAAA,kBACA;AAAA,gBACF;AAAA,gBAEA,8BAAC,UAAO;AAAA;AAAA,YACV;AAAA;AAAA;AAAA,MAEJ;AAAA,IAEJ;AAAA,EACF;AACF;AACA,cAAc,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/quantity-input.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { LuMinus, LuPlus } from \"react-icons/lu\";\n\nexport interface QuantityInputProps {\n /** Current quantity value (controlled). */\n value: number;\n /** Called with the new quantity after validation and rounding. */\n onChange: (value: number) => void;\n /** Minimum allowed quantity. Default: `0`. */\n min?: number;\n /** Maximum allowed quantity. */\n max?: number;\n /** Increment/decrement step size. Values are rounded up to the nearest step. Default: `1`. */\n step?: number;\n /** Number of decimal places to display. Default: `0`. */\n decimals?: number;\n /** Show +/- stepper buttons. Default: `true`. */\n showStepper?: boolean;\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n buttonClassName?: string;\n}\n\nfunction roundToStep(value: number, step: number): number {\n if (step <= 1) return value;\n return Math.ceil(value / step) * step;\n}\n\n/**\n * Numeric input with optional +/- stepper buttons for cart quantities.\n *\n * @example\n * ```tsx\n * <QuantityInput value={qty} onChange={setQty} min={1} step={1} />\n * ```\n */\nconst QuantityInput = React.memo(\n React.forwardRef<HTMLInputElement, QuantityInputProps>(\n (\n {\n value,\n onChange,\n min = 0,\n max,\n step = 1,\n decimals = 0,\n showStepper = true,\n disabled = false,\n className,\n inputClassName,\n buttonClassName,\n },\n ref,\n ) => {\n const [qtyStr, setQtyStr] = React.useState(() =>\n value.toFixed(decimals),\n );\n\n React.useEffect(() => {\n setQtyStr(value.toFixed(decimals));\n }, [value, decimals]);\n\n const commit = React.useCallback(\n (raw: string) => {\n if (raw.trim() === \"\") {\n setQtyStr(min.toFixed(decimals));\n onChange(min);\n return;\n }\n\n let parsed = parseFloat(raw);\n if (isNaN(parsed)) parsed = min;\n\n parsed = roundToStep(parsed, step);\n if (parsed < min) parsed = min;\n if (max !== undefined && parsed > max) parsed = max;\n\n const rounded = parseFloat(parsed.toFixed(decimals));\n setQtyStr(rounded.toFixed(decimals));\n onChange(rounded);\n },\n [min, max, step, decimals, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const allowed = [\n \"Backspace\",\n \"Delete\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Enter\",\n ];\n if (allowed.includes(e.key)) {\n if (e.key === \"Enter\") {\n commit(qtyStr);\n }\n return;\n }\n\n if (decimals > 0 && e.key === \".\" && !qtyStr.includes(\".\")) {\n return;\n }\n\n if (e.key >= \"0\" && e.key <= \"9\") {\n return;\n }\n\n e.preventDefault();\n },\n [decimals, qtyStr, commit],\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const pattern = decimals > 0 ? /[^0-9.]/g : /[^0-9]/g;\n let cleaned = e.target.value.replace(pattern, \"\");\n if (decimals > 0) {\n const parts = cleaned.split(\".\");\n if (parts.length > 2) {\n cleaned = parts[0] + \".\" + parts.slice(1).join(\"\");\n }\n }\n setQtyStr(cleaned);\n },\n [decimals],\n );\n\n const handleBlur = React.useCallback(() => {\n commit(qtyStr);\n }, [commit, qtyStr]);\n\n const handleDecrement = React.useCallback(() => {\n const next = Math.max(value - step, min);\n onChange(next);\n }, [value, step, min, onChange]);\n\n const handleIncrement = React.useCallback(() => {\n const next = value + step;\n onChange(max !== undefined ? Math.min(next, max) : next);\n }, [value, step, max, onChange]);\n\n const minDisabled = disabled || value <= min;\n const maxDisabled = disabled || (max !== undefined && value >= max);\n\n return (\n <div\n className={cn(\n \"inline-flex items-center border rounded-md bg-background\",\n className,\n )}\n >\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Decrease quantity\"\n disabled={minDisabled}\n onClick={handleDecrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuMinus />\n </button>\n )}\n <input\n ref={ref}\n type=\"text\"\n inputMode={decimals > 0 ? \"decimal\" : \"numeric\"}\n value={qtyStr}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onBlur={handleBlur}\n className={cn(\n \"h-10 w-16 text-center bg-transparent focus:outline-none\",\n inputClassName,\n )}\n />\n {showStepper && (\n <button\n type=\"button\"\n aria-label=\"Increase quantity\"\n disabled={maxDisabled}\n onClick={handleIncrement}\n className={cn(\n \"h-10 w-10 flex items-center justify-center hover:bg-accent disabled:opacity-50\",\n buttonClassName,\n )}\n >\n <LuPlus />\n </button>\n )}\n </div>\n );\n },\n ),\n);\nQuantityInput.displayName = \"QuantityInput\";\n\nexport { QuantityInput };\n"],"mappings":"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","names":[]}