@simpleapps-com/augur-web 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/accordion.cjs.map +1 -1
  2. package/dist/accordion.js.map +1 -1
  3. package/dist/add-to-cart-button.cjs +46 -0
  4. package/dist/add-to-cart-button.cjs.map +1 -0
  5. package/dist/add-to-cart-button.d.cts +14 -0
  6. package/dist/add-to-cart-button.d.ts +14 -0
  7. package/dist/add-to-cart-button.js +46 -0
  8. package/dist/add-to-cart-button.js.map +1 -0
  9. package/dist/breadcrumbs.cjs.map +1 -1
  10. package/dist/breadcrumbs.d.cts +14 -0
  11. package/dist/breadcrumbs.d.ts +14 -0
  12. package/dist/breadcrumbs.js.map +1 -1
  13. package/dist/button.cjs +2 -2
  14. package/dist/button.d.cts +14 -1
  15. package/dist/button.d.ts +14 -1
  16. package/dist/button.js +1 -1
  17. package/dist/card.cjs.map +1 -1
  18. package/dist/card.js.map +1 -1
  19. package/dist/checkbox.cjs.map +1 -1
  20. package/dist/checkbox.js.map +1 -1
  21. package/dist/{chunk-FHS7SJEQ.js → chunk-3FSJ76CI.js} +1 -1
  22. package/dist/chunk-3FSJ76CI.js.map +1 -0
  23. package/dist/{chunk-GPDD67CJ.js → chunk-6JHTOVHH.js} +2 -2
  24. package/dist/chunk-6JHTOVHH.js.map +1 -0
  25. package/dist/{chunk-SXJP4G5U.cjs → chunk-AMGUJSB4.cjs} +1 -1
  26. package/dist/chunk-AMGUJSB4.cjs.map +1 -0
  27. package/dist/{chunk-BYHOMRXR.js → chunk-BMQGSDHH.js} +1 -1
  28. package/dist/chunk-BMQGSDHH.js.map +1 -0
  29. package/dist/{chunk-ND6U4UQQ.js → chunk-C7E3ITLU.js} +1 -1
  30. package/dist/chunk-C7E3ITLU.js.map +1 -0
  31. package/dist/chunk-DONF5PIE.js +47 -0
  32. package/dist/chunk-DONF5PIE.js.map +1 -0
  33. package/dist/{chunk-NWGXDXRV.cjs → chunk-DQJDDXSH.cjs} +1 -1
  34. package/dist/chunk-DQJDDXSH.cjs.map +1 -0
  35. package/dist/chunk-ECNNL5MU.cjs +145 -0
  36. package/dist/chunk-ECNNL5MU.cjs.map +1 -0
  37. package/dist/chunk-ECZR6SW3.cjs +47 -0
  38. package/dist/chunk-ECZR6SW3.cjs.map +1 -0
  39. package/dist/{chunk-PTAWV5SA.js → chunk-FHUB6XI5.js} +1 -1
  40. package/dist/chunk-FHUB6XI5.js.map +1 -0
  41. package/dist/{chunk-VT4JLAIE.cjs → chunk-I4Q2GZZK.cjs} +1 -1
  42. package/dist/{chunk-VT4JLAIE.cjs.map → chunk-I4Q2GZZK.cjs.map} +1 -1
  43. package/dist/{chunk-DAU3SFHM.js → chunk-LCNFPBPV.js} +1 -1
  44. package/dist/chunk-LCNFPBPV.js.map +1 -0
  45. package/dist/{chunk-VMOQCPK5.cjs → chunk-LNMPVCIY.cjs} +3 -3
  46. package/dist/{chunk-VMOQCPK5.cjs.map → chunk-LNMPVCIY.cjs.map} +1 -1
  47. package/dist/{chunk-3RVGVJDI.cjs → chunk-MGOH4OFM.cjs} +1 -1
  48. package/dist/chunk-MGOH4OFM.cjs.map +1 -0
  49. package/dist/{chunk-N2TV6QZO.cjs → chunk-QLSIUW3X.cjs} +1 -1
  50. package/dist/chunk-QLSIUW3X.cjs.map +1 -0
  51. package/dist/{chunk-Q6H6D3AN.cjs → chunk-SHF52AZM.cjs} +1 -1
  52. package/dist/chunk-SHF52AZM.cjs.map +1 -0
  53. package/dist/{chunk-CK53LO3J.cjs → chunk-U35O67ZA.cjs} +1 -1
  54. package/dist/chunk-U35O67ZA.cjs.map +1 -0
  55. package/dist/{chunk-DZ6HBEMA.js → chunk-X5RKGEDZ.js} +1 -1
  56. package/dist/chunk-X5RKGEDZ.js.map +1 -0
  57. package/dist/{chunk-SVF5VSZ2.js → chunk-YKVFAVK5.js} +1 -1
  58. package/dist/chunk-YKVFAVK5.js.map +1 -0
  59. package/dist/chunk-YR2SJWTF.js +145 -0
  60. package/dist/chunk-YR2SJWTF.js.map +1 -0
  61. package/dist/command.cjs +2 -2
  62. package/dist/command.cjs.map +1 -1
  63. package/dist/command.d.cts +7 -7
  64. package/dist/command.d.ts +7 -7
  65. package/dist/command.js +1 -1
  66. package/dist/command.js.map +1 -1
  67. package/dist/dialog.cjs +2 -2
  68. package/dist/dialog.js +1 -1
  69. package/dist/dropdown-menu.cjs.map +1 -1
  70. package/dist/dropdown-menu.js.map +1 -1
  71. package/dist/form-field.cjs +3 -3
  72. package/dist/form-field.d.cts +1 -0
  73. package/dist/form-field.d.ts +1 -0
  74. package/dist/form-field.js +2 -2
  75. package/dist/form-input.cjs +5 -5
  76. package/dist/form-input.cjs.map +1 -1
  77. package/dist/form-input.d.cts +8 -0
  78. package/dist/form-input.d.ts +8 -0
  79. package/dist/form-input.js +3 -3
  80. package/dist/form-input.js.map +1 -1
  81. package/dist/form-select.cjs +7 -7
  82. package/dist/form-select.cjs.map +1 -1
  83. package/dist/form-select.d.cts +14 -0
  84. package/dist/form-select.d.ts +14 -0
  85. package/dist/form-select.js +3 -3
  86. package/dist/form-select.js.map +1 -1
  87. package/dist/form-textarea.cjs +5 -5
  88. package/dist/form-textarea.cjs.map +1 -1
  89. package/dist/form-textarea.d.cts +1 -0
  90. package/dist/form-textarea.d.ts +1 -0
  91. package/dist/form-textarea.js +3 -3
  92. package/dist/form-textarea.js.map +1 -1
  93. package/dist/gtm.cjs +2 -128
  94. package/dist/gtm.cjs.map +1 -1
  95. package/dist/gtm.js +7 -133
  96. package/dist/gtm.js.map +1 -1
  97. package/dist/input.cjs +2 -2
  98. package/dist/input.js +1 -1
  99. package/dist/label.cjs +2 -2
  100. package/dist/label.js +1 -1
  101. package/dist/list-view.cjs.map +1 -1
  102. package/dist/list-view.d.cts +8 -0
  103. package/dist/list-view.d.ts +8 -0
  104. package/dist/list-view.js.map +1 -1
  105. package/dist/navigation-menu.cjs.map +1 -1
  106. package/dist/navigation-menu.js.map +1 -1
  107. package/dist/pagination.cjs +2 -2
  108. package/dist/pagination.cjs.map +1 -1
  109. package/dist/pagination.js +1 -1
  110. package/dist/pagination.js.map +1 -1
  111. package/dist/popover.cjs.map +1 -1
  112. package/dist/popover.js.map +1 -1
  113. package/dist/price-format.cjs +2 -2
  114. package/dist/price-format.d.cts +4 -0
  115. package/dist/price-format.d.ts +4 -0
  116. package/dist/price-format.js +1 -1
  117. package/dist/price.cjs +2 -2
  118. package/dist/price.cjs.map +1 -1
  119. package/dist/price.d.cts +17 -0
  120. package/dist/price.d.ts +17 -0
  121. package/dist/price.js +1 -1
  122. package/dist/price.js.map +1 -1
  123. package/dist/provider.cjs +31 -0
  124. package/dist/provider.cjs.map +1 -0
  125. package/dist/provider.d.cts +50 -0
  126. package/dist/provider.d.ts +50 -0
  127. package/dist/provider.js +31 -0
  128. package/dist/provider.js.map +1 -0
  129. package/dist/quantity-input.cjs.map +1 -1
  130. package/dist/quantity-input.d.cts +15 -0
  131. package/dist/quantity-input.d.ts +15 -0
  132. package/dist/quantity-input.js.map +1 -1
  133. package/dist/radio-group.cjs.map +1 -1
  134. package/dist/radio-group.js.map +1 -1
  135. package/dist/select.cjs +2 -2
  136. package/dist/select.js +1 -1
  137. package/dist/separator.cjs.map +1 -1
  138. package/dist/separator.js.map +1 -1
  139. package/dist/skeleton.cjs.map +1 -1
  140. package/dist/skeleton.js.map +1 -1
  141. package/dist/spinner.cjs +3 -41
  142. package/dist/spinner.cjs.map +1 -1
  143. package/dist/spinner.d.cts +1 -0
  144. package/dist/spinner.d.ts +1 -0
  145. package/dist/spinner.js +3 -41
  146. package/dist/spinner.js.map +1 -1
  147. package/dist/stock-label.cjs +85 -0
  148. package/dist/stock-label.cjs.map +1 -0
  149. package/dist/stock-label.d.cts +47 -0
  150. package/dist/stock-label.d.ts +47 -0
  151. package/dist/stock-label.js +85 -0
  152. package/dist/stock-label.js.map +1 -0
  153. package/dist/table.cjs.map +1 -1
  154. package/dist/table.js.map +1 -1
  155. package/dist/tabs.cjs.map +1 -1
  156. package/dist/tabs.js.map +1 -1
  157. package/dist/textarea.cjs +2 -2
  158. package/dist/textarea.js +1 -1
  159. package/package.json +24 -4
  160. package/dist/chunk-3RVGVJDI.cjs.map +0 -1
  161. package/dist/chunk-BYHOMRXR.js.map +0 -1
  162. package/dist/chunk-CK53LO3J.cjs.map +0 -1
  163. package/dist/chunk-DAU3SFHM.js.map +0 -1
  164. package/dist/chunk-DZ6HBEMA.js.map +0 -1
  165. package/dist/chunk-FHS7SJEQ.js.map +0 -1
  166. package/dist/chunk-GPDD67CJ.js.map +0 -1
  167. package/dist/chunk-N2TV6QZO.cjs.map +0 -1
  168. package/dist/chunk-ND6U4UQQ.js.map +0 -1
  169. package/dist/chunk-NWGXDXRV.cjs.map +0 -1
  170. package/dist/chunk-PTAWV5SA.js.map +0 -1
  171. package/dist/chunk-Q6H6D3AN.cjs.map +0 -1
  172. package/dist/chunk-SVF5VSZ2.js.map +0 -1
  173. package/dist/chunk-SXJP4G5U.cjs.map +0 -1
@@ -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":"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","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":[]}
package/dist/spinner.cjs CHANGED
@@ -1,46 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
- // src/spinner.tsx
4
- var _web = require('@simpleapps-com/augur-utils/web');
5
- var _jsxruntime = require('react/jsx-runtime');
6
- var sizeClasses = {
7
- sm: "h-3 w-3",
8
- md: "h-4 w-4",
9
- lg: "h-6 w-6"
10
- };
11
- var Spinner = ({ className, size = "md" }) => {
12
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
13
- "svg",
14
- {
15
- className: _web.cn.call(void 0, "animate-spin", sizeClasses[size], className),
16
- xmlns: "http://www.w3.org/2000/svg",
17
- fill: "none",
18
- viewBox: "0 0 24 24",
19
- children: [
20
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21
- "circle",
22
- {
23
- className: "opacity-25",
24
- cx: "12",
25
- cy: "12",
26
- r: "10",
27
- stroke: "currentColor",
28
- strokeWidth: "4"
29
- }
30
- ),
31
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32
- "path",
33
- {
34
- className: "opacity-75",
35
- fill: "currentColor",
36
- d: "m4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
37
- }
38
- )
39
- ]
40
- }
41
- );
42
- };
43
3
 
4
+ var _chunkECZR6SW3cjs = require('./chunk-ECZR6SW3.cjs');
44
5
 
45
- exports.Spinner = Spinner;
6
+
7
+ exports.Spinner = _chunkECZR6SW3cjs.Spinner;
46
8
  //# sourceMappingURL=spinner.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/spinner.cjs","../src/spinner.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACA;ACFA,sDAAmB;AAef,+CAAA;AARJ,IAAM,YAAA,EAAc;AAAA,EAClB,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,QAAA,EAAU,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,KAAK,CAAA,EAAA,GAAoB;AAC5D,EAAA,uBACE,8BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,qBAAA,cAAG,EAAgB,WAAA,CAAY,IAAI,CAAA,EAAG,SAAS,CAAA;AAAA,MAC1D,KAAA,EAAM,4BAAA;AAAA,MACN,IAAA,EAAK,MAAA;AAAA,MACL,OAAA,EAAQ,WAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,6BAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,YAAA;AAAA,YACV,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,CAAA,EAAE,IAAA;AAAA,YACF,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY;AAAA,UAAA;AAAA,QACd,CAAA;AAAA,wBACA,6BAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,YAAA;AAAA,YACV,IAAA,EAAK,cAAA;AAAA,YACL,CAAA,EAAE;AAAA,UAAA;AAAA,QACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAA;ADMA;AACE;AACF,0BAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/spinner.cjs","sourcesContent":[null,"import { cn } from \"@simpleapps-com/augur-utils/web\";\n\ninterface SpinnerProps {\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeClasses = {\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-6 w-6\",\n};\n\nconst Spinner = ({ className, size = \"md\" }: SpinnerProps) => {\n return (\n <svg\n className={cn(\"animate-spin\", sizeClasses[size], className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"m4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n};\n\nexport { Spinner };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/spinner.cjs"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,4CAAC","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/spinner.cjs"}
@@ -4,6 +4,7 @@ interface SpinnerProps {
4
4
  className?: string;
5
5
  size?: "sm" | "md" | "lg";
6
6
  }
7
+ /** Animated SVG loading spinner. Sizes: `sm` (12px), `md` (16px), `lg` (24px). */
7
8
  declare const Spinner: ({ className, size }: SpinnerProps) => react_jsx_runtime.JSX.Element;
8
9
 
9
10
  export { Spinner };
package/dist/spinner.d.ts CHANGED
@@ -4,6 +4,7 @@ interface SpinnerProps {
4
4
  className?: string;
5
5
  size?: "sm" | "md" | "lg";
6
6
  }
7
+ /** Animated SVG loading spinner. Sizes: `sm` (12px), `md` (16px), `lg` (24px). */
7
8
  declare const Spinner: ({ className, size }: SpinnerProps) => react_jsx_runtime.JSX.Element;
8
9
 
9
10
  export { Spinner };
package/dist/spinner.js CHANGED
@@ -1,45 +1,7 @@
1
1
  "use client";
2
-
3
- // src/spinner.tsx
4
- import { cn } from "@simpleapps-com/augur-utils/web";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
- var sizeClasses = {
7
- sm: "h-3 w-3",
8
- md: "h-4 w-4",
9
- lg: "h-6 w-6"
10
- };
11
- var Spinner = ({ className, size = "md" }) => {
12
- return /* @__PURE__ */ jsxs(
13
- "svg",
14
- {
15
- className: cn("animate-spin", sizeClasses[size], className),
16
- xmlns: "http://www.w3.org/2000/svg",
17
- fill: "none",
18
- viewBox: "0 0 24 24",
19
- children: [
20
- /* @__PURE__ */ jsx(
21
- "circle",
22
- {
23
- className: "opacity-25",
24
- cx: "12",
25
- cy: "12",
26
- r: "10",
27
- stroke: "currentColor",
28
- strokeWidth: "4"
29
- }
30
- ),
31
- /* @__PURE__ */ jsx(
32
- "path",
33
- {
34
- className: "opacity-75",
35
- fill: "currentColor",
36
- d: "m4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
37
- }
38
- )
39
- ]
40
- }
41
- );
42
- };
2
+ import {
3
+ Spinner
4
+ } from "./chunk-DONF5PIE.js";
43
5
  export {
44
6
  Spinner
45
7
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/spinner.tsx"],"sourcesContent":["import { cn } from \"@simpleapps-com/augur-utils/web\";\n\ninterface SpinnerProps {\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeClasses = {\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-6 w-6\",\n};\n\nconst Spinner = ({ className, size = \"md\" }: SpinnerProps) => {\n return (\n <svg\n className={cn(\"animate-spin\", sizeClasses[size], className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"m4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n};\n\nexport { Spinner };\n"],"mappings":";;;AAAA,SAAS,UAAU;AAef,SAME,KANF;AARJ,IAAM,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,UAAU,CAAC,EAAE,WAAW,OAAO,KAAK,MAAoB;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,gBAAgB,YAAY,IAAI,GAAG,SAAS;AAAA,MAC1D,OAAM;AAAA,MACN,MAAK;AAAA,MACL,SAAQ;AAAA,MAER;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAG;AAAA,YACH,IAAG;AAAA,YACH,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA;AAAA,QACd;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,GAAE;AAAA;AAAA,QACJ;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,85 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+ "use client";
3
+
4
+ // src/stock-label.tsx
5
+ var _web = require('@simpleapps-com/augur-utils/web');
6
+ var _jsxruntime = require('react/jsx-runtime');
7
+ var defaults = {
8
+ inStockLabel: "In stock",
9
+ lowStockLabel: "Low stock",
10
+ outOfStockLabel: "Out of stock"
11
+ };
12
+ function createStockLabel(config = {}) {
13
+ const {
14
+ inStockLabel,
15
+ lowStockLabel,
16
+ outOfStockLabel,
17
+ classNames: factoryClassNames
18
+ } = { ...defaults, ...config };
19
+ const slotKeys = [
20
+ "inStock",
21
+ "lowStock",
22
+ "outOfStock",
23
+ "skeleton",
24
+ "quantity"
25
+ ];
26
+ function mergeClassNames(instance) {
27
+ if (!factoryClassNames && !instance) return {};
28
+ const result = {};
29
+ for (const key of slotKeys) {
30
+ const merged = _web.cn.call(void 0, _optionalChain([factoryClassNames, 'optionalAccess', _ => _[key]]), _optionalChain([instance, 'optionalAccess', _2 => _2[key]]));
31
+ if (merged) result[key] = merged;
32
+ }
33
+ return result;
34
+ }
35
+ function StockLabel(props) {
36
+ if ("loading" in props && props.loading) {
37
+ const slots2 = mergeClassNames(props.classNames);
38
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
39
+ "span",
40
+ {
41
+ className: _web.cn.call(void 0,
42
+ "inline-block h-4 w-16 animate-pulse rounded bg-muted",
43
+ slots2.skeleton,
44
+ props.className
45
+ )
46
+ }
47
+ );
48
+ }
49
+ const {
50
+ isInStock,
51
+ isLowStock = false,
52
+ displayQuantity,
53
+ className,
54
+ classNames: instanceClassNames
55
+ } = props;
56
+ const slots = mergeClassNames(instanceClassNames);
57
+ if (!isInStock) {
58
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _web.cn.call(void 0, "text-red-600", slots.outOfStock, className), children: outOfStockLabel });
59
+ }
60
+ if (isLowStock) {
61
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _web.cn.call(void 0, "text-orange-500", slots.lowStock, className), children: [
62
+ lowStockLabel,
63
+ displayQuantity != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _web.cn.call(void 0, "ml-1", slots.quantity), children: [
64
+ "(",
65
+ displayQuantity,
66
+ ")"
67
+ ] })
68
+ ] });
69
+ }
70
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _web.cn.call(void 0, "text-green-600", slots.inStock, className), children: [
71
+ inStockLabel,
72
+ displayQuantity != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _web.cn.call(void 0, "ml-1", slots.quantity), children: [
73
+ "(",
74
+ displayQuantity,
75
+ ")"
76
+ ] })
77
+ ] });
78
+ }
79
+ StockLabel.displayName = "StockLabel";
80
+ return { StockLabel };
81
+ }
82
+
83
+
84
+ exports.createStockLabel = createStockLabel;
85
+ //# sourceMappingURL=stock-label.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/stock-label.cjs","../src/stock-label.tsx"],"names":["slots"],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/stock-label.cjs","sourcesContent":[null,"\"use client\";\n\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface StockLabelClassNames {\n /** In-stock text. */\n inStock?: string;\n /** Low-stock text. */\n lowStock?: string;\n /** Out-of-stock text. */\n outOfStock?: string;\n /** The loading skeleton. */\n skeleton?: string;\n /** The quantity parenthetical. */\n quantity?: string;\n}\n\nexport interface StockLabelConfig {\n /** Label for in-stock state. Default: `\"In stock\"`. */\n inStockLabel?: string;\n /** Label for low-stock state. Default: `\"Low stock\"`. */\n lowStockLabel?: string;\n /** Label for out-of-stock state. Default: `\"Out of stock\"`. */\n outOfStockLabel?: string;\n /** Default class names for sub-elements. */\n classNames?: StockLabelClassNames;\n}\n\ntype StockLabelPropsBase = {\n /** Whether the item is in stock. */\n isInStock: boolean;\n /** Whether the item has low stock. */\n isLowStock?: boolean;\n /** Quantity to display in parentheses (shown only when in stock or low stock). */\n displayQuantity?: number | null;\n /** Additional class names for the root element. */\n className?: string;\n /** Class names for sub-elements, merged with factory defaults. */\n classNames?: StockLabelClassNames;\n};\n\nexport type StockLabelProps =\n | (StockLabelPropsBase & { loading?: false })\n | { loading: true; className?: string; classNames?: StockLabelClassNames };\n\nexport interface CreateStockLabelResult {\n StockLabel: React.FC<StockLabelProps>;\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nconst defaults = {\n inStockLabel: \"In stock\",\n lowStockLabel: \"Low stock\",\n outOfStockLabel: \"Out of stock\",\n} as const;\n\nexport function createStockLabel(config: StockLabelConfig = {}): CreateStockLabelResult {\n const {\n inStockLabel,\n lowStockLabel,\n outOfStockLabel,\n classNames: factoryClassNames,\n } = { ...defaults, ...config };\n\n const slotKeys: (keyof StockLabelClassNames)[] = [\n \"inStock\", \"lowStock\", \"outOfStock\", \"skeleton\", \"quantity\",\n ];\n\n function mergeClassNames(\n instance?: StockLabelClassNames,\n ): StockLabelClassNames {\n if (!factoryClassNames && !instance) return {};\n const result: StockLabelClassNames = {};\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 StockLabel(props: StockLabelProps) {\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 isInStock,\n isLowStock = false,\n displayQuantity,\n className,\n classNames: instanceClassNames,\n } = props as StockLabelPropsBase;\n\n const slots = mergeClassNames(instanceClassNames);\n\n if (!isInStock) {\n return (\n <span className={cn(\"text-red-600\", slots.outOfStock, className)}>\n {outOfStockLabel}\n </span>\n );\n }\n\n if (isLowStock) {\n return (\n <span className={cn(\"text-orange-500\", slots.lowStock, className)}>\n {lowStockLabel}\n {displayQuantity != null && (\n <span className={cn(\"ml-1\", slots.quantity)}>({displayQuantity})</span>\n )}\n </span>\n );\n }\n\n return (\n <span className={cn(\"text-green-600\", slots.inStock, className)}>\n {inStockLabel}\n {displayQuantity != null && (\n <span className={cn(\"ml-1\", slots.quantity)}>({displayQuantity})</span>\n )}\n </span>\n );\n }\n\n StockLabel.displayName = \"StockLabel\";\n\n return { StockLabel };\n}\n"]}
@@ -0,0 +1,47 @@
1
+ interface StockLabelClassNames {
2
+ /** In-stock text. */
3
+ inStock?: string;
4
+ /** Low-stock text. */
5
+ lowStock?: string;
6
+ /** Out-of-stock text. */
7
+ outOfStock?: string;
8
+ /** The loading skeleton. */
9
+ skeleton?: string;
10
+ /** The quantity parenthetical. */
11
+ quantity?: string;
12
+ }
13
+ interface StockLabelConfig {
14
+ /** Label for in-stock state. Default: `"In stock"`. */
15
+ inStockLabel?: string;
16
+ /** Label for low-stock state. Default: `"Low stock"`. */
17
+ lowStockLabel?: string;
18
+ /** Label for out-of-stock state. Default: `"Out of stock"`. */
19
+ outOfStockLabel?: string;
20
+ /** Default class names for sub-elements. */
21
+ classNames?: StockLabelClassNames;
22
+ }
23
+ type StockLabelPropsBase = {
24
+ /** Whether the item is in stock. */
25
+ isInStock: boolean;
26
+ /** Whether the item has low stock. */
27
+ isLowStock?: boolean;
28
+ /** Quantity to display in parentheses (shown only when in stock or low stock). */
29
+ displayQuantity?: number | null;
30
+ /** Additional class names for the root element. */
31
+ className?: string;
32
+ /** Class names for sub-elements, merged with factory defaults. */
33
+ classNames?: StockLabelClassNames;
34
+ };
35
+ type StockLabelProps = (StockLabelPropsBase & {
36
+ loading?: false;
37
+ }) | {
38
+ loading: true;
39
+ className?: string;
40
+ classNames?: StockLabelClassNames;
41
+ };
42
+ interface CreateStockLabelResult {
43
+ StockLabel: React.FC<StockLabelProps>;
44
+ }
45
+ declare function createStockLabel(config?: StockLabelConfig): CreateStockLabelResult;
46
+
47
+ export { type CreateStockLabelResult, type StockLabelClassNames, type StockLabelConfig, type StockLabelProps, createStockLabel };
@@ -0,0 +1,47 @@
1
+ interface StockLabelClassNames {
2
+ /** In-stock text. */
3
+ inStock?: string;
4
+ /** Low-stock text. */
5
+ lowStock?: string;
6
+ /** Out-of-stock text. */
7
+ outOfStock?: string;
8
+ /** The loading skeleton. */
9
+ skeleton?: string;
10
+ /** The quantity parenthetical. */
11
+ quantity?: string;
12
+ }
13
+ interface StockLabelConfig {
14
+ /** Label for in-stock state. Default: `"In stock"`. */
15
+ inStockLabel?: string;
16
+ /** Label for low-stock state. Default: `"Low stock"`. */
17
+ lowStockLabel?: string;
18
+ /** Label for out-of-stock state. Default: `"Out of stock"`. */
19
+ outOfStockLabel?: string;
20
+ /** Default class names for sub-elements. */
21
+ classNames?: StockLabelClassNames;
22
+ }
23
+ type StockLabelPropsBase = {
24
+ /** Whether the item is in stock. */
25
+ isInStock: boolean;
26
+ /** Whether the item has low stock. */
27
+ isLowStock?: boolean;
28
+ /** Quantity to display in parentheses (shown only when in stock or low stock). */
29
+ displayQuantity?: number | null;
30
+ /** Additional class names for the root element. */
31
+ className?: string;
32
+ /** Class names for sub-elements, merged with factory defaults. */
33
+ classNames?: StockLabelClassNames;
34
+ };
35
+ type StockLabelProps = (StockLabelPropsBase & {
36
+ loading?: false;
37
+ }) | {
38
+ loading: true;
39
+ className?: string;
40
+ classNames?: StockLabelClassNames;
41
+ };
42
+ interface CreateStockLabelResult {
43
+ StockLabel: React.FC<StockLabelProps>;
44
+ }
45
+ declare function createStockLabel(config?: StockLabelConfig): CreateStockLabelResult;
46
+
47
+ export { type CreateStockLabelResult, type StockLabelClassNames, type StockLabelConfig, type StockLabelProps, createStockLabel };
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ "use client";
3
+
4
+ // src/stock-label.tsx
5
+ import { cn } from "@simpleapps-com/augur-utils/web";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var defaults = {
8
+ inStockLabel: "In stock",
9
+ lowStockLabel: "Low stock",
10
+ outOfStockLabel: "Out of stock"
11
+ };
12
+ function createStockLabel(config = {}) {
13
+ const {
14
+ inStockLabel,
15
+ lowStockLabel,
16
+ outOfStockLabel,
17
+ classNames: factoryClassNames
18
+ } = { ...defaults, ...config };
19
+ const slotKeys = [
20
+ "inStock",
21
+ "lowStock",
22
+ "outOfStock",
23
+ "skeleton",
24
+ "quantity"
25
+ ];
26
+ function mergeClassNames(instance) {
27
+ if (!factoryClassNames && !instance) return {};
28
+ const result = {};
29
+ for (const key of slotKeys) {
30
+ const merged = cn(factoryClassNames?.[key], instance?.[key]);
31
+ if (merged) result[key] = merged;
32
+ }
33
+ return result;
34
+ }
35
+ function StockLabel(props) {
36
+ if ("loading" in props && props.loading) {
37
+ const slots2 = mergeClassNames(props.classNames);
38
+ return /* @__PURE__ */ jsx(
39
+ "span",
40
+ {
41
+ className: cn(
42
+ "inline-block h-4 w-16 animate-pulse rounded bg-muted",
43
+ slots2.skeleton,
44
+ props.className
45
+ )
46
+ }
47
+ );
48
+ }
49
+ const {
50
+ isInStock,
51
+ isLowStock = false,
52
+ displayQuantity,
53
+ className,
54
+ classNames: instanceClassNames
55
+ } = props;
56
+ const slots = mergeClassNames(instanceClassNames);
57
+ if (!isInStock) {
58
+ return /* @__PURE__ */ jsx("span", { className: cn("text-red-600", slots.outOfStock, className), children: outOfStockLabel });
59
+ }
60
+ if (isLowStock) {
61
+ return /* @__PURE__ */ jsxs("span", { className: cn("text-orange-500", slots.lowStock, className), children: [
62
+ lowStockLabel,
63
+ displayQuantity != null && /* @__PURE__ */ jsxs("span", { className: cn("ml-1", slots.quantity), children: [
64
+ "(",
65
+ displayQuantity,
66
+ ")"
67
+ ] })
68
+ ] });
69
+ }
70
+ return /* @__PURE__ */ jsxs("span", { className: cn("text-green-600", slots.inStock, className), children: [
71
+ inStockLabel,
72
+ displayQuantity != null && /* @__PURE__ */ jsxs("span", { className: cn("ml-1", slots.quantity), children: [
73
+ "(",
74
+ displayQuantity,
75
+ ")"
76
+ ] })
77
+ ] });
78
+ }
79
+ StockLabel.displayName = "StockLabel";
80
+ return { StockLabel };
81
+ }
82
+ export {
83
+ createStockLabel
84
+ };
85
+ //# sourceMappingURL=stock-label.js.map