@simpleapps-com/augur-web 1.0.8 → 1.0.10

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 (161) 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 +13 -0
  15. package/dist/button.d.ts +13 -0
  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.js +1 -1
  60. package/dist/command.js.map +1 -1
  61. package/dist/dialog.cjs +2 -2
  62. package/dist/dialog.js +1 -1
  63. package/dist/dropdown-menu.cjs.map +1 -1
  64. package/dist/dropdown-menu.js.map +1 -1
  65. package/dist/form-field.cjs +3 -3
  66. package/dist/form-field.d.cts +1 -0
  67. package/dist/form-field.d.ts +1 -0
  68. package/dist/form-field.js +2 -2
  69. package/dist/form-input.cjs +5 -5
  70. package/dist/form-input.cjs.map +1 -1
  71. package/dist/form-input.d.cts +8 -0
  72. package/dist/form-input.d.ts +8 -0
  73. package/dist/form-input.js +3 -3
  74. package/dist/form-input.js.map +1 -1
  75. package/dist/form-select.cjs +7 -7
  76. package/dist/form-select.cjs.map +1 -1
  77. package/dist/form-select.d.cts +14 -0
  78. package/dist/form-select.d.ts +14 -0
  79. package/dist/form-select.js +3 -3
  80. package/dist/form-select.js.map +1 -1
  81. package/dist/form-textarea.cjs +5 -5
  82. package/dist/form-textarea.cjs.map +1 -1
  83. package/dist/form-textarea.d.cts +1 -0
  84. package/dist/form-textarea.d.ts +1 -0
  85. package/dist/form-textarea.js +3 -3
  86. package/dist/form-textarea.js.map +1 -1
  87. package/dist/input.cjs +2 -2
  88. package/dist/input.js +1 -1
  89. package/dist/label.cjs +2 -2
  90. package/dist/label.js +1 -1
  91. package/dist/list-view.cjs.map +1 -1
  92. package/dist/list-view.d.cts +8 -0
  93. package/dist/list-view.d.ts +8 -0
  94. package/dist/list-view.js.map +1 -1
  95. package/dist/navigation-menu.cjs.map +1 -1
  96. package/dist/navigation-menu.js.map +1 -1
  97. package/dist/pagination.cjs +2 -2
  98. package/dist/pagination.cjs.map +1 -1
  99. package/dist/pagination.js +1 -1
  100. package/dist/pagination.js.map +1 -1
  101. package/dist/popover.cjs.map +1 -1
  102. package/dist/popover.js.map +1 -1
  103. package/dist/price-format.cjs +2 -2
  104. package/dist/price-format.d.cts +4 -0
  105. package/dist/price-format.d.ts +4 -0
  106. package/dist/price-format.js +1 -1
  107. package/dist/price.cjs +2 -2
  108. package/dist/price.cjs.map +1 -1
  109. package/dist/price.d.cts +17 -0
  110. package/dist/price.d.ts +17 -0
  111. package/dist/price.js +1 -1
  112. package/dist/price.js.map +1 -1
  113. package/dist/provider.cjs.map +1 -1
  114. package/dist/provider.d.cts +22 -3
  115. package/dist/provider.d.ts +22 -3
  116. package/dist/provider.js.map +1 -1
  117. package/dist/quantity-input.cjs.map +1 -1
  118. package/dist/quantity-input.d.cts +15 -0
  119. package/dist/quantity-input.d.ts +15 -0
  120. package/dist/quantity-input.js.map +1 -1
  121. package/dist/radio-group.cjs.map +1 -1
  122. package/dist/radio-group.js.map +1 -1
  123. package/dist/select.cjs +2 -2
  124. package/dist/select.js +1 -1
  125. package/dist/separator.cjs.map +1 -1
  126. package/dist/separator.js.map +1 -1
  127. package/dist/skeleton.cjs.map +1 -1
  128. package/dist/skeleton.js.map +1 -1
  129. package/dist/spinner.cjs +3 -41
  130. package/dist/spinner.cjs.map +1 -1
  131. package/dist/spinner.d.cts +1 -0
  132. package/dist/spinner.d.ts +1 -0
  133. package/dist/spinner.js +3 -41
  134. package/dist/spinner.js.map +1 -1
  135. package/dist/stock-label.cjs +85 -0
  136. package/dist/stock-label.cjs.map +1 -0
  137. package/dist/stock-label.d.cts +47 -0
  138. package/dist/stock-label.d.ts +47 -0
  139. package/dist/stock-label.js +85 -0
  140. package/dist/stock-label.js.map +1 -0
  141. package/dist/table.cjs.map +1 -1
  142. package/dist/table.js.map +1 -1
  143. package/dist/tabs.cjs.map +1 -1
  144. package/dist/tabs.js.map +1 -1
  145. package/dist/textarea.cjs +2 -2
  146. package/dist/textarea.js +1 -1
  147. package/package.json +16 -6
  148. package/dist/chunk-3RVGVJDI.cjs.map +0 -1
  149. package/dist/chunk-BYHOMRXR.js.map +0 -1
  150. package/dist/chunk-CK53LO3J.cjs.map +0 -1
  151. package/dist/chunk-DAU3SFHM.js.map +0 -1
  152. package/dist/chunk-DZ6HBEMA.js.map +0 -1
  153. package/dist/chunk-FHS7SJEQ.js.map +0 -1
  154. package/dist/chunk-GPDD67CJ.js.map +0 -1
  155. package/dist/chunk-N2TV6QZO.cjs.map +0 -1
  156. package/dist/chunk-ND6U4UQQ.js.map +0 -1
  157. package/dist/chunk-NWGXDXRV.cjs.map +0 -1
  158. package/dist/chunk-PTAWV5SA.js.map +0 -1
  159. package/dist/chunk-Q6H6D3AN.cjs.map +0 -1
  160. package/dist/chunk-SVF5VSZ2.js.map +0 -1
  161. package/dist/chunk-SXJP4G5U.cjs.map +0 -1
@@ -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":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/radio-group.cjs","../src/radio-group.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ,YAAY;AACZ;AACA;ACDA,2EAAuB;AACvB,oCAAwB;AACxB,mIAAqC;AACrC,sDAAmB;AAOf,+CAAA;AALJ,IAAM,WAAA,EAAmB,KAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,GAAQ;AAClC,EAAA,uBACE,6BAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,SAAA,EAAW,qBAAA,YAAG,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MACJ;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAC,CAAA;AACD,UAAA,CAAW,YAAA,EAAkC,mBAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,eAAA,EAAuB,KAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,GAAQ;AAClC,EAAA,uBACE,6BAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,qBAAA;AAAA,QACT,8LAAA;AAAA,QACA;AAAA,MACF,CAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,6BAAA,mBAAqB,CAAA,SAAA,EAApB,EAA8B,SAAA,EAAU,kCAAA,EACvC,QAAA,kBAAA,6BAAA,WAAC,EAAA,EAAQ,SAAA,EAAU,2BAAA,CAA2B,EAAA,CAChD;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAC,CAAA;AACD,cAAA,CAAe,YAAA,EAAkC,mBAAA,CAAA,IAAA,CAAK,WAAA;ADLtD;AACE;AACA;AACF,yEAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/radio-group.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport { LuCheck } from \"react-icons/lu\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <LuCheck className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/radio-group.cjs","../src/radio-group.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ,YAAY;AACZ;AACA;ACAA,2EAAuB;AACvB,oCAAwB;AACxB,mIAAqC;AACrC,sDAAmB;AAOf,+CAAA;AALJ,IAAM,WAAA,EAAmB,KAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,GAAQ;AAClC,EAAA,uBACE,6BAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,SAAA,EAAW,qBAAA,YAAG,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MACJ;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAC,CAAA;AACD,UAAA,CAAW,YAAA,EAAkC,mBAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,eAAA,EAAuB,KAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,GAAG,MAAM,CAAA,EAAG,GAAA,EAAA,GAAQ;AAClC,EAAA,uBACE,6BAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,qBAAA;AAAA,QACT,8LAAA;AAAA,QACA;AAAA,MACF,CAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,6BAAA,mBAAqB,CAAA,SAAA,EAApB,EAA8B,SAAA,EAAU,kCAAA,EACvC,QAAA,kBAAA,6BAAA,WAAC,EAAA,EAAQ,SAAA,EAAU,2BAAA,CAA2B,EAAA,CAChD;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAC,CAAA;AACD,cAAA,CAAe,YAAA,EAAkC,mBAAA,CAAA,IAAA,CAAK,WAAA;ADNtD;AACE;AACA;AACF,yEAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/radio-group.cjs","sourcesContent":[null,"/** Styled wrapper around @radix-ui/react-radio-group. See https://www.radix-ui.com/primitives/docs/components/radio-group */\n\"use client\";\n\nimport * as React from \"react\";\nimport { LuCheck } from \"react-icons/lu\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <LuCheck className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/radio-group.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { LuCheck } from \"react-icons/lu\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <LuCheck className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;AAEA,YAAY,WAAW;AACvB,SAAS,eAAe;AACxB,YAAY,yBAAyB;AACrC,SAAS,UAAU;AAOf;AALJ,IAAM,aAAmB,iBAGvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,WAAW,GAAG,cAAc,SAAS;AAAA,MACpC,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,WAAW,cAAkC,yBAAK;AAElD,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,8BAAqB,+BAApB,EAA8B,WAAU,oCACvC,8BAAC,WAAQ,WAAU,4BAA2B,GAChD;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,eAAe,cAAkC,yBAAK;","names":[]}
1
+ {"version":3,"sources":["../src/radio-group.tsx"],"sourcesContent":["/** Styled wrapper around @radix-ui/react-radio-group. See https://www.radix-ui.com/primitives/docs/components/radio-group */\n\"use client\";\n\nimport * as React from \"react\";\nimport { LuCheck } from \"react-icons/lu\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <LuCheck className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;AAGA,YAAY,WAAW;AACvB,SAAS,eAAe;AACxB,YAAY,yBAAyB;AACrC,SAAS,UAAU;AAOf;AALJ,IAAM,aAAmB,iBAGvB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC,WAAW,GAAG,cAAc,SAAS;AAAA,MACpC,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,WAAW,cAAkC,yBAAK;AAElD,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAqB;AAAA,IAApB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,8BAAqB,+BAApB,EAA8B,WAAU,oCACvC,8BAAC,WAAQ,WAAU,4BAA2B,GAChD;AAAA;AAAA,EACF;AAEJ,CAAC;AACD,eAAe,cAAkC,yBAAK;","names":[]}
package/dist/select.cjs CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
 
13
13
 
14
- var _chunkQ6H6D3ANcjs = require('./chunk-Q6H6D3AN.cjs');
14
+ var _chunkSHF52AZMcjs = require('./chunk-SHF52AZM.cjs');
15
15
 
16
16
 
17
17
 
@@ -23,5 +23,5 @@ var _chunkQ6H6D3ANcjs = require('./chunk-Q6H6D3AN.cjs');
23
23
 
24
24
 
25
25
 
26
- exports.Select = _chunkQ6H6D3ANcjs.Select; exports.SelectContent = _chunkQ6H6D3ANcjs.SelectContent; exports.SelectGroup = _chunkQ6H6D3ANcjs.SelectGroup; exports.SelectItem = _chunkQ6H6D3ANcjs.SelectItem; exports.SelectLabel = _chunkQ6H6D3ANcjs.SelectLabel; exports.SelectScrollDownButton = _chunkQ6H6D3ANcjs.SelectScrollDownButton; exports.SelectScrollUpButton = _chunkQ6H6D3ANcjs.SelectScrollUpButton; exports.SelectSeparator = _chunkQ6H6D3ANcjs.SelectSeparator; exports.SelectTrigger = _chunkQ6H6D3ANcjs.SelectTrigger; exports.SelectValue = _chunkQ6H6D3ANcjs.SelectValue;
26
+ exports.Select = _chunkSHF52AZMcjs.Select; exports.SelectContent = _chunkSHF52AZMcjs.SelectContent; exports.SelectGroup = _chunkSHF52AZMcjs.SelectGroup; exports.SelectItem = _chunkSHF52AZMcjs.SelectItem; exports.SelectLabel = _chunkSHF52AZMcjs.SelectLabel; exports.SelectScrollDownButton = _chunkSHF52AZMcjs.SelectScrollDownButton; exports.SelectScrollUpButton = _chunkSHF52AZMcjs.SelectScrollUpButton; exports.SelectSeparator = _chunkSHF52AZMcjs.SelectSeparator; exports.SelectTrigger = _chunkSHF52AZMcjs.SelectTrigger; exports.SelectValue = _chunkSHF52AZMcjs.SelectValue;
27
27
  //# sourceMappingURL=select.cjs.map
package/dist/select.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  SelectSeparator,
12
12
  SelectTrigger,
13
13
  SelectValue
14
- } from "./chunk-ND6U4UQQ.js";
14
+ } from "./chunk-C7E3ITLU.js";
15
15
  export {
16
16
  Select,
17
17
  SelectContent,
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/separator.cjs","../src/separator.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ,YAAY;AACZ;AACA;ACDA,2EAAuB;AACvB,8HAAoC;AACpC,sDAAmB;AAUf,+CAAA;AARJ,IAAM,UAAA,EAAkB,KAAA,CAAA,UAAA;AAAA,EAItB,CACE,EAAE,SAAA,EAAW,YAAA,EAAc,YAAA,EAAc,WAAA,EAAa,IAAA,EAAM,GAAG,MAAM,CAAA,EACrE,GAAA,EAAA,mBAEA,6BAAA;AAAA,IAAoB,kBAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAW,qBAAA;AAAA,QACT,oBAAA;AAAA,QACA,YAAA,IAAgB,aAAA,EAAe,iBAAA,EAAmB,gBAAA;AAAA,QAClD;AAAA,MACF,CAAA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACN;AAEJ,CAAA;AACA,SAAA,CAAU,YAAA,EAAiC,kBAAA,CAAA,IAAA,CAAK,WAAA;ADFhD;AACE;AACF,8BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/separator.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref,\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/separator.cjs","../src/separator.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ,YAAY;AACZ;AACA;ACAA,2EAAuB;AACvB,8HAAoC;AACpC,sDAAmB;AAUf,+CAAA;AARJ,IAAM,UAAA,EAAkB,KAAA,CAAA,UAAA;AAAA,EAItB,CACE,EAAE,SAAA,EAAW,YAAA,EAAc,YAAA,EAAc,WAAA,EAAa,IAAA,EAAM,GAAG,MAAM,CAAA,EACrE,GAAA,EAAA,mBAEA,6BAAA;AAAA,IAAoB,kBAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAW,qBAAA;AAAA,QACT,oBAAA;AAAA,QACA,YAAA,IAAgB,aAAA,EAAe,iBAAA,EAAmB,gBAAA;AAAA,QAClD;AAAA,MACF,CAAA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACN;AAEJ,CAAA;AACA,SAAA,CAAU,YAAA,EAAiC,kBAAA,CAAA,IAAA,CAAK,WAAA;ADHhD;AACE;AACF,8BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/separator.cjs","sourcesContent":[null,"/** Styled wrapper around @radix-ui/react-separator. See https://www.radix-ui.com/primitives/docs/components/separator */\n\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref,\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/separator.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref,\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"],"mappings":";;;;AAEA,YAAY,WAAW;AACvB,YAAY,wBAAwB;AACpC,SAAS,UAAU;AAUf;AARJ,IAAM,YAAkB;AAAA,EAItB,CACE,EAAE,WAAW,cAAc,cAAc,aAAa,MAAM,GAAG,MAAM,GACrE,QAEA;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eAAe,mBAAmB;AAAA,QAClD;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,UAAU,cAAiC,wBAAK;","names":[]}
1
+ {"version":3,"sources":["../src/separator.tsx"],"sourcesContent":["/** Styled wrapper around @radix-ui/react-separator. See https://www.radix-ui.com/primitives/docs/components/separator */\n\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref,\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"],"mappings":";;;;AAGA,YAAY,WAAW;AACvB,YAAY,wBAAwB;AACpC,SAAS,UAAU;AAUf;AARJ,IAAM,YAAkB;AAAA,EAItB,CACE,EAAE,WAAW,cAAc,cAAc,aAAa,MAAM,GAAG,MAAM,GACrE,QAEA;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,eAAe,mBAAmB;AAAA,QAClD;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AACA,UAAU,cAAiC,wBAAK;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/skeleton.cjs","../src/skeleton.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACFA,sDAAmB;AAOf,+CAAA;AALJ,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyC;AACvC,EAAA,uBACE,6BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,qBAAA,mCAAG,EAAqC,SAAS,CAAA;AAAA,MAC3D,GAAG;AAAA,IAAA;AAAA,EACN,CAAA;AAEJ;ADKA;AACE;AACF,4BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/skeleton.cjs","sourcesContent":[null,"import { cn } from \"@simpleapps-com/augur-utils/web\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/skeleton.cjs","../src/skeleton.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACDA,sDAAmB;AAOf,+CAAA;AALJ,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyC;AACvC,EAAA,uBACE,6BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,qBAAA,mCAAG,EAAqC,SAAS,CAAA;AAAA,MAC3D,GAAG;AAAA,IAAA;AAAA,EACN,CAAA;AAEJ;ADIA;AACE;AACF,4BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/skeleton.cjs","sourcesContent":[null,"/** Animated placeholder for loading states. */\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/skeleton.tsx"],"sourcesContent":["import { cn } from \"@simpleapps-com/augur-utils/web\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"],"mappings":";;;AAAA,SAAS,UAAU;AAOf;AALJ,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAyC;AACvC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,qCAAqC,SAAS;AAAA,MAC3D,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../src/skeleton.tsx"],"sourcesContent":["/** Animated placeholder for loading states. */\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"],"mappings":";;;AACA,SAAS,UAAU;AAOf;AALJ,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAyC;AACvC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,qCAAqC,SAAS;AAAA,MAC3D,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}