@simpleapps-com/augur-web 2.4.0 → 2026.11.2

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 (243) hide show
  1. package/EXPORTS.md +18 -189
  2. package/README.md +18 -364
  3. package/dist/accordion.cjs.map +1 -1
  4. package/dist/accordion.d.ts +4 -5
  5. package/dist/accordion.d.ts.map +1 -0
  6. package/dist/add-to-cart-button.cjs.map +1 -1
  7. package/dist/add-to-cart-button.d.ts +5 -8
  8. package/dist/add-to-cart-button.d.ts.map +1 -0
  9. package/dist/breadcrumb.cjs.map +1 -1
  10. package/dist/breadcrumb.d.ts +5 -7
  11. package/dist/breadcrumb.d.ts.map +1 -0
  12. package/dist/breadcrumbs.cjs.map +1 -1
  13. package/dist/breadcrumbs.d.ts +4 -4
  14. package/dist/breadcrumbs.d.ts.map +1 -0
  15. package/dist/button.cjs.map +1 -1
  16. package/dist/button.d.ts +7 -9
  17. package/dist/button.d.ts.map +1 -0
  18. package/dist/card.cjs.map +1 -1
  19. package/dist/card.d.ts +3 -4
  20. package/dist/card.d.ts.map +1 -0
  21. package/dist/checkbox.cjs.map +1 -1
  22. package/dist/checkbox.d.ts +3 -4
  23. package/dist/checkbox.d.ts.map +1 -0
  24. package/dist/chunk-32XB3REY.cjs.map +1 -1
  25. package/dist/chunk-5VMEEKZ5.cjs.map +1 -1
  26. package/dist/chunk-5ZITWMV4.cjs.map +1 -1
  27. package/dist/chunk-76RSVRGB.cjs.map +1 -1
  28. package/dist/chunk-7EXXNELX.cjs.map +1 -1
  29. package/dist/chunk-BXMTQGKV.cjs.map +1 -1
  30. package/dist/{chunk-DCXYO3RB.js → chunk-C6K7FZNX.js} +7 -3
  31. package/dist/chunk-C6K7FZNX.js.map +1 -0
  32. package/dist/{chunk-AE4GLYJE.cjs → chunk-DMWSWL4B.cjs} +7 -3
  33. package/dist/chunk-DMWSWL4B.cjs.map +1 -0
  34. package/dist/chunk-GSR6SMQ2.cjs.map +1 -1
  35. package/dist/chunk-IO77MGHW.js +220 -0
  36. package/dist/chunk-IO77MGHW.js.map +1 -0
  37. package/dist/chunk-JXW4XE2P.cjs.map +1 -1
  38. package/dist/{chunk-OJ5G4BLS.js → chunk-KVHOMD4T.js} +15 -18
  39. package/dist/chunk-KVHOMD4T.js.map +1 -0
  40. package/dist/chunk-MAENILZP.cjs.map +1 -1
  41. package/dist/chunk-NEY26NNF.cjs.map +1 -1
  42. package/dist/chunk-QKWXJM4Q.cjs +220 -0
  43. package/dist/chunk-QKWXJM4Q.cjs.map +1 -0
  44. package/dist/chunk-T52J3SHP.cjs.map +1 -1
  45. package/dist/{chunk-I5NVZORX.cjs → chunk-TFP5RICB.cjs} +15 -18
  46. package/dist/chunk-TFP5RICB.cjs.map +1 -0
  47. package/dist/chunk-UFL6PVLI.cjs.map +1 -1
  48. package/dist/chunk-VL6L4GDA.cjs.map +1 -1
  49. package/dist/chunk-WJUDOEVB.cjs.map +1 -1
  50. package/dist/chunk-XGKBDPGD.cjs.map +1 -1
  51. package/dist/chunk-Z57QBVUC.cjs.map +1 -1
  52. package/dist/command.cjs +1 -0
  53. package/dist/command.cjs.map +1 -1
  54. package/dist/command.d.ts +13 -15
  55. package/dist/command.d.ts.map +1 -0
  56. package/dist/command.js +1 -0
  57. package/dist/command.js.map +1 -1
  58. package/dist/confirm-dialog.cjs.map +1 -1
  59. package/dist/confirm-dialog.d.ts +4 -6
  60. package/dist/confirm-dialog.d.ts.map +1 -0
  61. package/dist/data-table.cjs +35 -23
  62. package/dist/data-table.cjs.map +1 -1
  63. package/dist/data-table.d.ts +9 -11
  64. package/dist/data-table.d.ts.map +1 -0
  65. package/dist/data-table.js +34 -22
  66. package/dist/data-table.js.map +1 -1
  67. package/dist/detail-panel.cjs.map +1 -1
  68. package/dist/detail-panel.d.ts +6 -8
  69. package/dist/detail-panel.d.ts.map +1 -0
  70. package/dist/dialog.cjs.map +1 -1
  71. package/dist/dialog.d.ts +6 -8
  72. package/dist/dialog.d.ts.map +1 -0
  73. package/dist/dropdown-menu.cjs.map +1 -1
  74. package/dist/dropdown-menu.d.ts +5 -7
  75. package/dist/dropdown-menu.d.ts.map +1 -0
  76. package/dist/financing-widget.cjs +1 -3
  77. package/dist/financing-widget.cjs.map +1 -1
  78. package/dist/financing-widget.d.ts +5 -6
  79. package/dist/financing-widget.d.ts.map +1 -0
  80. package/dist/financing-widget.js +1 -3
  81. package/dist/financing-widget.js.map +1 -1
  82. package/dist/form-field.cjs.map +1 -1
  83. package/dist/form-field.d.ts +4 -5
  84. package/dist/form-field.d.ts.map +1 -0
  85. package/dist/form-input.cjs.map +1 -1
  86. package/dist/form-input.d.ts +4 -5
  87. package/dist/form-input.d.ts.map +1 -0
  88. package/dist/form-select.cjs.map +1 -1
  89. package/dist/form-select.d.ts +4 -5
  90. package/dist/form-select.d.ts.map +1 -0
  91. package/dist/form-textarea.cjs.map +1 -1
  92. package/dist/form-textarea.d.ts +4 -5
  93. package/dist/form-textarea.d.ts.map +1 -0
  94. package/dist/gtm.cjs +3 -2
  95. package/dist/gtm.cjs.map +1 -1
  96. package/dist/gtm.d.ts +12 -15
  97. package/dist/gtm.d.ts.map +1 -0
  98. package/dist/gtm.js +2 -1
  99. package/dist/input.cjs.map +1 -1
  100. package/dist/input.d.ts +4 -5
  101. package/dist/input.d.ts.map +1 -0
  102. package/dist/label.cjs.map +1 -1
  103. package/dist/label.d.ts +5 -7
  104. package/dist/label.d.ts.map +1 -0
  105. package/dist/list-view.cjs.map +1 -1
  106. package/dist/list-view.d.ts +5 -7
  107. package/dist/list-view.d.ts.map +1 -0
  108. package/dist/mdx-components.cjs +5 -2
  109. package/dist/mdx-components.cjs.map +1 -1
  110. package/dist/mdx-components.d.ts +11 -6
  111. package/dist/mdx-components.d.ts.map +1 -0
  112. package/dist/mdx-components.js +5 -2
  113. package/dist/mdx-components.js.map +1 -1
  114. package/dist/navigation-menu.cjs.map +1 -1
  115. package/dist/navigation-menu.d.ts +5 -7
  116. package/dist/navigation-menu.d.ts.map +1 -0
  117. package/dist/pagination.cjs +3 -2
  118. package/dist/pagination.cjs.map +1 -1
  119. package/dist/pagination.d.ts +10 -14
  120. package/dist/pagination.d.ts.map +1 -0
  121. package/dist/pagination.js +2 -1
  122. package/dist/payment-modal.cjs +20 -19
  123. package/dist/payment-modal.cjs.map +1 -1
  124. package/dist/payment-modal.d.ts +5 -7
  125. package/dist/payment-modal.d.ts.map +1 -0
  126. package/dist/payment-modal.js +19 -18
  127. package/dist/payment-modal.js.map +1 -1
  128. package/dist/popover.cjs.map +1 -1
  129. package/dist/popover.d.ts +4 -5
  130. package/dist/popover.d.ts.map +1 -0
  131. package/dist/price-format.cjs.map +1 -1
  132. package/dist/price-format.d.ts +4 -5
  133. package/dist/price-format.d.ts.map +1 -0
  134. package/dist/price.cjs +4 -1
  135. package/dist/price.cjs.map +1 -1
  136. package/dist/price.d.ts +8 -22
  137. package/dist/price.d.ts.map +1 -0
  138. package/dist/price.js +4 -1
  139. package/dist/price.js.map +1 -1
  140. package/dist/provider.cjs +4 -2
  141. package/dist/provider.cjs.map +1 -1
  142. package/dist/provider.d.ts +7 -10
  143. package/dist/provider.d.ts.map +1 -0
  144. package/dist/provider.js +3 -1
  145. package/dist/provider.js.map +1 -1
  146. package/dist/quantity-input.cjs +27 -40
  147. package/dist/quantity-input.cjs.map +1 -1
  148. package/dist/quantity-input.d.ts +4 -5
  149. package/dist/quantity-input.d.ts.map +1 -0
  150. package/dist/quantity-input.js +27 -40
  151. package/dist/quantity-input.js.map +1 -1
  152. package/dist/radio-group.cjs.map +1 -1
  153. package/dist/radio-group.d.ts +3 -4
  154. package/dist/radio-group.d.ts.map +1 -0
  155. package/dist/resource-tabs.cjs +1 -0
  156. package/dist/resource-tabs.cjs.map +1 -1
  157. package/dist/resource-tabs.d.ts +6 -8
  158. package/dist/resource-tabs.d.ts.map +1 -0
  159. package/dist/resource-tabs.js +1 -0
  160. package/dist/resource-tabs.js.map +1 -1
  161. package/dist/rules.d.ts +210 -0
  162. package/dist/rules.d.ts.map +1 -0
  163. package/dist/select.cjs.map +1 -1
  164. package/dist/select.d.ts +4 -5
  165. package/dist/select.d.ts.map +1 -0
  166. package/dist/separator.cjs.map +1 -1
  167. package/dist/separator.d.ts +3 -4
  168. package/dist/separator.d.ts.map +1 -0
  169. package/dist/session-replay.cjs +4 -2
  170. package/dist/session-replay.cjs.map +1 -1
  171. package/dist/session-replay.d.ts +4 -5
  172. package/dist/session-replay.d.ts.map +1 -0
  173. package/dist/session-replay.js +4 -2
  174. package/dist/session-replay.js.map +1 -1
  175. package/dist/skeleton.cjs.map +1 -1
  176. package/dist/skeleton.d.ts +2 -4
  177. package/dist/skeleton.d.ts.map +1 -0
  178. package/dist/spinner.cjs.map +1 -1
  179. package/dist/spinner.d.ts +2 -4
  180. package/dist/spinner.d.ts.map +1 -0
  181. package/dist/stock-label.cjs +14 -12
  182. package/dist/stock-label.cjs.map +1 -1
  183. package/dist/stock-label.d.ts +7 -7
  184. package/dist/stock-label.d.ts.map +1 -0
  185. package/dist/stock-label.js +14 -12
  186. package/dist/stock-label.js.map +1 -1
  187. package/dist/table.cjs.map +1 -1
  188. package/dist/table.d.ts +3 -4
  189. package/dist/table.d.ts.map +1 -0
  190. package/dist/tabs.cjs.map +1 -1
  191. package/dist/tabs.d.ts +4 -5
  192. package/dist/tabs.d.ts.map +1 -0
  193. package/dist/textarea.cjs.map +1 -1
  194. package/dist/textarea.d.ts +4 -5
  195. package/dist/textarea.d.ts.map +1 -0
  196. package/llms.txt +23 -38
  197. package/package.json +26 -17
  198. package/dist/accordion.d.cts +0 -9
  199. package/dist/add-to-cart-button.d.cts +0 -14
  200. package/dist/breadcrumb.d.cts +0 -22
  201. package/dist/breadcrumbs.d.cts +0 -31
  202. package/dist/button.d.cts +0 -27
  203. package/dist/card.d.cts +0 -10
  204. package/dist/checkbox.d.cts +0 -6
  205. package/dist/chunk-AE4GLYJE.cjs.map +0 -1
  206. package/dist/chunk-DCXYO3RB.js.map +0 -1
  207. package/dist/chunk-I5NVZORX.cjs.map +0 -1
  208. package/dist/chunk-OJ5G4BLS.js.map +0 -1
  209. package/dist/command.d.cts +0 -87
  210. package/dist/confirm-dialog.d.cts +0 -35
  211. package/dist/data-table.d.cts +0 -55
  212. package/dist/detail-panel.d.cts +0 -59
  213. package/dist/dialog.d.cts +0 -22
  214. package/dist/dropdown-menu.d.cts +0 -30
  215. package/dist/financing-widget.d.cts +0 -45
  216. package/dist/form-field.d.cts +0 -14
  217. package/dist/form-input.d.cts +0 -19
  218. package/dist/form-select.d.cts +0 -34
  219. package/dist/form-textarea.d.cts +0 -12
  220. package/dist/gtm.d.cts +0 -69
  221. package/dist/input.d.cts +0 -6
  222. package/dist/label.d.cts +0 -8
  223. package/dist/list-view.d.cts +0 -18
  224. package/dist/mdx-components.d.cts +0 -20
  225. package/dist/navigation-menu.d.cts +0 -15
  226. package/dist/pagination.d.cts +0 -50
  227. package/dist/payment-modal.d.cts +0 -30
  228. package/dist/popover.d.cts +0 -9
  229. package/dist/price-format.d.cts +0 -21
  230. package/dist/price.d.cts +0 -90
  231. package/dist/provider.d.cts +0 -47
  232. package/dist/quantity-input.d.cts +0 -33
  233. package/dist/radio-group.d.cts +0 -7
  234. package/dist/resource-tabs.d.cts +0 -33
  235. package/dist/select.d.cts +0 -15
  236. package/dist/separator.d.cts +0 -6
  237. package/dist/session-replay.d.cts +0 -44
  238. package/dist/skeleton.d.cts +0 -5
  239. package/dist/spinner.d.cts +0 -10
  240. package/dist/stock-label.d.cts +0 -47
  241. package/dist/table.d.cts +0 -12
  242. package/dist/tabs.d.cts +0 -9
  243. package/dist/textarea.d.cts +0 -6
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/gtm.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Script loading strategy. */\nexport type AnalyticsStrategy = \"default\" | \"afterInteractive\" | \"lazyOnload\";\n\n/** GA4 standard e-commerce event names. */\nexport type EcommerceEvent =\n | \"view_item\"\n | \"view_item_list\"\n | \"select_item\"\n | \"add_to_cart\"\n | \"remove_from_cart\"\n | \"view_cart\"\n | \"begin_checkout\"\n | \"add_shipping_info\"\n | \"add_payment_info\"\n | \"purchase\"\n | \"refund\";\n\n/** GA4 e-commerce item shape. */\nexport interface EcommerceItem {\n item_id: string;\n item_name?: string;\n item_brand?: string;\n item_category?: string;\n item_variant?: string;\n price?: number;\n quantity?: number;\n index?: number;\n [key: string]: unknown;\n}\n\n/** Parameters for e-commerce events. */\nexport interface EcommerceParams {\n currency?: string;\n value?: number;\n items?: EcommerceItem[];\n transaction_id?: string;\n shipping?: number;\n tax?: number;\n coupon?: string;\n [key: string]: unknown;\n}\n\nexport interface AnalyticsProviderProps {\n /** GTM container ID (e.g. \"GTM-XXXXX\"). */\n gtmId: string;\n /** Script loading strategy. Default: \"afterInteractive\". */\n strategy?: AnalyticsStrategy;\n /** Delay GTM loading until consent is granted. Default: false. */\n consentRequired?: boolean;\n /** Log dataLayer pushes to console. Default: false. */\n debug?: boolean;\n children: ReactNode;\n}\n\nexport interface AnalyticsContextValue {\n /** Push a custom event to the dataLayer. */\n trackEvent: (event: string, params?: Record<string, unknown>) => void;\n /** Push a GA4 e-commerce event to the dataLayer. */\n trackEcommerceEvent: (event: EcommerceEvent, params: EcommerceParams) => void;\n /** Grant consent — loads GTM if consentRequired was true. */\n grantConsent: () => void;\n /** Revoke consent. Does not unload GTM (scripts can't be unloaded). */\n revokeConsent: () => void;\n /** Whether consent has been granted. */\n hasConsent: boolean;\n /** Whether the GTM script has been injected. */\n isLoaded: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\nconst AnalyticsContext = createContext<AnalyticsContextValue | null>(null);\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ndeclare global {\n interface Window {\n dataLayer?: Record<string, unknown>[];\n }\n}\n\nfunction getDataLayer(): Record<string, unknown>[] {\n /* v8 ignore next */\n if (typeof window === \"undefined\") return [];\n if (!window.dataLayer) window.dataLayer = [];\n return window.dataLayer;\n}\n\nfunction injectGtmScript(gtmId: string, strategy: AnalyticsStrategy): void {\n /* v8 ignore next */\n if (typeof document === \"undefined\") return;\n\n // Prevent double-injection\n if (document.getElementById(\"gtm-script\")) return;\n\n const dataLayer = getDataLayer();\n dataLayer.push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n\n const script = document.createElement(\"script\");\n script.id = \"gtm-script\";\n script.src = `https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(gtmId)}`;\n\n if (strategy === \"lazyOnload\") {\n script.async = true;\n script.defer = true;\n } else {\n // \"default\" and \"afterInteractive\"\n script.async = true;\n }\n\n document.head.appendChild(script);\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\nexport function AnalyticsProvider({\n gtmId,\n strategy = \"afterInteractive\",\n consentRequired = false,\n debug = false,\n children,\n}: AnalyticsProviderProps) {\n const [hasConsent, setHasConsent] = useState(!consentRequired);\n const [isLoaded, setIsLoaded] = useState(false);\n const injectedRef = useRef(false);\n\n const loadGtm = useCallback(() => {\n if (injectedRef.current) return;\n injectedRef.current = true;\n\n if (strategy === \"lazyOnload\" && typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n });\n } else if (strategy === \"afterInteractive\") {\n // Defer to after hydration\n setTimeout(() => {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }, 0);\n } else {\n injectGtmScript(gtmId, strategy);\n setIsLoaded(true);\n }\n }, [gtmId, strategy]);\n\n // Auto-load when consent is not required or already granted\n /* v8 ignore next */\n if (hasConsent && !injectedRef.current && typeof window !== \"undefined\") {\n loadGtm();\n }\n\n const trackEvent = useCallback(\n (event: string, params?: Record<string, unknown>) => {\n const entry = { event, ...params };\n if (debug) {\n console.log(\"[Analytics]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const trackEcommerceEvent = useCallback(\n (event: EcommerceEvent, params: EcommerceParams) => {\n // Clear previous ecommerce data per GA4 best practices\n getDataLayer().push({ ecommerce: null });\n const entry = { event, ecommerce: params };\n if (debug) {\n console.log(\"[Analytics ecommerce]\", entry);\n }\n getDataLayer().push(entry);\n },\n [debug],\n );\n\n const grantConsent = useCallback(() => {\n setHasConsent(true);\n loadGtm();\n }, [loadGtm]);\n\n const revokeConsent = useCallback(() => {\n setHasConsent(false);\n }, []);\n\n const value = useMemo<AnalyticsContextValue>(\n () => ({\n trackEvent,\n trackEcommerceEvent,\n grantConsent,\n revokeConsent,\n hasConsent,\n isLoaded,\n }),\n [trackEvent, trackEcommerceEvent, grantConsent, revokeConsent, hasConsent, isLoaded],\n );\n\n return <AnalyticsContext.Provider value={value}>{children}</AnalyticsContext.Provider>;\n}\n\n// ---------------------------------------------------------------------------\n// Hook\n// ---------------------------------------------------------------------------\n\nexport function useAnalytics(): AnalyticsContextValue {\n const context = useContext(AnalyticsContext);\n if (!context) {\n throw new Error(\"useAnalytics must be used within an <AnalyticsProvider>\");\n }\n return context;\n}\n\n// ---------------------------------------------------------------------------\n// Noscript\n// ---------------------------------------------------------------------------\n\nexport interface AnalyticsNoscriptProps {\n /** GTM container ID (must match AnalyticsProvider). */\n gtmId: string;\n}\n\nexport function AnalyticsNoscript({ gtmId }: AnalyticsNoscriptProps) {\n return (\n <noscript>\n <iframe\n src={`https://www.googletagmanager.com/ns.html?id=${encodeURIComponent(gtmId)}`}\n height=\"0\"\n width=\"0\"\n style={{ display: \"none\", visibility: \"hidden\" }}\n title=\"Google Tag Manager\"\n />\n </noscript>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-I5NVZORX.cjs","../src/pagination.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/augur-packages/augur-packages/packages/augur-web/dist/chunk-I5NVZORX.cjs","sourcesContent":[null,"/** Pagination navigation components, styled with buttonVariants. */\n\"use client\";\n\nimport * as React from \"react\";\nimport { LuChevronLeft, LuChevronRight, LuEllipsis } from \"react-icons/lu\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { type ButtonProps, buttonVariants } from \"./button\";\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n);\nPagination.displayName = \"Pagination\";\n\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n ({ className, ...props }, ref) => (\n <ul ref={ref} className={cn(\"flex flex-row items-center gap-1\", className)} {...props} />\n ),\n);\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n ({ className, ...props }, ref) => <li ref={ref} className={cn(\"\", className)} {...props} />,\n);\nPaginationItem.displayName = \"PaginationItem\";\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">;\n\nconst PaginationLink = ({ className, isActive, size = \"icon\", ...props }: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n);\nPaginationLink.displayName = \"PaginationLink\";\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <LuChevronLeft className=\"h-4 w-4\" />\n <span>Prev</span>\n </PaginationLink>\n);\nPaginationPrevious.displayName = \"PaginationPrevious\";\n\nconst PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <LuChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n);\nPaginationNext.displayName = \"PaginationNext\";\n\nconst PaginationEllipsis = ({ className, ...props }: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <LuEllipsis className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\n/** Build an array of page numbers and ellipsis markers for pagination UI. */\nfunction getPageNumbers(current: number, total: number): (number | \"ellipsis\")[] {\n if (total <= 0) return [];\n if (total === 1) return [1];\n\n const page = Math.max(1, Math.min(current, total));\n\n if (total <= 5) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n if (page <= 3) {\n return [1, 2, 3, 4, \"ellipsis\", total];\n }\n\n if (page >= total - 2) {\n return [1, \"ellipsis\", total - 3, total - 2, total - 1, total];\n }\n\n return [1, \"ellipsis\", page - 1, page, page + 1, \"ellipsis\", total];\n}\n\ntype ListPaginationProps = {\n /** Current page number (1-indexed). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Builds a crawlable href for each page link (required for SEO). */\n getHref: (page: number) => string;\n /** Optional client-side callback layered on top of href navigation. */\n onPageChange?: (page: number) => void;\n className?: string;\n};\n\nconst ListPagination = ({\n page,\n totalPages,\n getHref,\n onPageChange,\n className,\n}: ListPaginationProps) => {\n if (totalPages <= 1) return null;\n\n const pages = getPageNumbers(page, totalPages);\n const isFirst = page <= 1;\n const isLast = page >= totalPages;\n\n const handleClick = (target: number) => (e: React.MouseEvent) => {\n if (onPageChange) {\n e.preventDefault();\n onPageChange(target);\n }\n };\n\n // Disabled Prev/Next keep an href for layout, but MUST NOT navigate\n // (pointer-events-none blocks the mouse, not keyboard activation).\n const preventDisabled = (e: React.MouseEvent) => e.preventDefault();\n\n return (\n <Pagination className={className}>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious\n href={isFirst ? getHref(1) : getHref(page - 1)}\n aria-disabled={isFirst || undefined}\n className={isFirst ? \"pointer-events-none opacity-50\" : undefined}\n onClick={isFirst ? preventDisabled : handleClick(page - 1)}\n />\n </PaginationItem>\n\n {pages.map((entry, i) =>\n entry === \"ellipsis\" ? (\n <PaginationItem key={`ellipsis-${i}`}>\n <PaginationEllipsis />\n </PaginationItem>\n ) : (\n <PaginationItem key={entry}>\n <PaginationLink\n href={getHref(entry)}\n isActive={entry === page}\n onClick={handleClick(entry)}\n >\n {entry}\n </PaginationLink>\n </PaginationItem>\n ),\n )}\n\n <PaginationItem>\n <PaginationNext\n href={isLast ? getHref(totalPages) : getHref(page + 1)}\n aria-disabled={isLast || undefined}\n className={isLast ? \"pointer-events-none opacity-50\" : undefined}\n onClick={isLast ? preventDisabled : handleClick(page + 1)}\n />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n );\n};\nListPagination.displayName = \"ListPagination\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n getPageNumbers,\n ListPagination,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pagination.tsx"],"sourcesContent":["/** Pagination navigation components, styled with buttonVariants. */\n\"use client\";\n\nimport * as React from \"react\";\nimport { LuChevronLeft, LuChevronRight, LuEllipsis } from \"react-icons/lu\";\nimport { cn } from \"@simpleapps-com/augur-utils/web\";\nimport { type ButtonProps, buttonVariants } from \"./button\";\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n);\nPagination.displayName = \"Pagination\";\n\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n ({ className, ...props }, ref) => (\n <ul ref={ref} className={cn(\"flex flex-row items-center gap-1\", className)} {...props} />\n ),\n);\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n ({ className, ...props }, ref) => <li ref={ref} className={cn(\"\", className)} {...props} />,\n);\nPaginationItem.displayName = \"PaginationItem\";\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">;\n\nconst PaginationLink = ({ className, isActive, size = \"icon\", ...props }: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className,\n )}\n {...props}\n />\n);\nPaginationLink.displayName = \"PaginationLink\";\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <LuChevronLeft className=\"h-4 w-4\" />\n <span>Prev</span>\n </PaginationLink>\n);\nPaginationPrevious.displayName = \"PaginationPrevious\";\n\nconst PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <LuChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n);\nPaginationNext.displayName = \"PaginationNext\";\n\nconst PaginationEllipsis = ({ className, ...props }: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <LuEllipsis className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\n/** Build an array of page numbers and ellipsis markers for pagination UI. */\nfunction getPageNumbers(current: number, total: number): (number | \"ellipsis\")[] {\n if (total <= 0) return [];\n if (total === 1) return [1];\n\n const page = Math.max(1, Math.min(current, total));\n\n if (total <= 5) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n if (page <= 3) {\n return [1, 2, 3, 4, \"ellipsis\", total];\n }\n\n if (page >= total - 2) {\n return [1, \"ellipsis\", total - 3, total - 2, total - 1, total];\n }\n\n return [1, \"ellipsis\", page - 1, page, page + 1, \"ellipsis\", total];\n}\n\ntype ListPaginationProps = {\n /** Current page number (1-indexed). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Builds a crawlable href for each page link (required for SEO). */\n getHref: (page: number) => string;\n /** Optional client-side callback layered on top of href navigation. */\n onPageChange?: (page: number) => void;\n className?: string;\n};\n\nconst ListPagination = ({\n page,\n totalPages,\n getHref,\n onPageChange,\n className,\n}: ListPaginationProps) => {\n if (totalPages <= 1) return null;\n\n const pages = getPageNumbers(page, totalPages);\n const isFirst = page <= 1;\n const isLast = page >= totalPages;\n\n const handleClick = (target: number) => (e: React.MouseEvent) => {\n if (onPageChange) {\n e.preventDefault();\n onPageChange(target);\n }\n };\n\n // Disabled Prev/Next keep an href for layout, but MUST NOT navigate\n // (pointer-events-none blocks the mouse, not keyboard activation).\n const preventDisabled = (e: React.MouseEvent) => e.preventDefault();\n\n return (\n <Pagination className={className}>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious\n href={isFirst ? getHref(1) : getHref(page - 1)}\n aria-disabled={isFirst || undefined}\n className={isFirst ? \"pointer-events-none opacity-50\" : undefined}\n onClick={isFirst ? preventDisabled : handleClick(page - 1)}\n />\n </PaginationItem>\n\n {pages.map((entry, i) =>\n entry === \"ellipsis\" ? (\n <PaginationItem key={`ellipsis-${i}`}>\n <PaginationEllipsis />\n </PaginationItem>\n ) : (\n <PaginationItem key={entry}>\n <PaginationLink\n href={getHref(entry)}\n isActive={entry === page}\n onClick={handleClick(entry)}\n >\n {entry}\n </PaginationLink>\n </PaginationItem>\n ),\n )}\n\n <PaginationItem>\n <PaginationNext\n href={isLast ? getHref(totalPages) : getHref(page + 1)}\n aria-disabled={isLast || undefined}\n className={isLast ? \"pointer-events-none opacity-50\" : undefined}\n onClick={isLast ? preventDisabled : handleClick(page + 1)}\n />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n );\n};\nListPagination.displayName = \"ListPagination\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n getPageNumbers,\n ListPagination,\n};\n"],"mappings":"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","names":[]}
@@ -1,87 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { DialogProps } from '@radix-ui/react-dialog';
4
-
5
- declare const Command: React.ForwardRefExoticComponent<Omit<{
6
- children?: React.ReactNode;
7
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
8
- ref?: React.Ref<HTMLDivElement>;
9
- } & {
10
- asChild?: boolean;
11
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
12
- label?: string;
13
- shouldFilter?: boolean;
14
- filter?: (value: string, search: string, keywords?: string[]) => number;
15
- defaultValue?: string;
16
- value?: string;
17
- onValueChange?: (value: string) => void;
18
- loop?: boolean;
19
- disablePointerSelection?: boolean;
20
- vimBindings?: boolean;
21
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
22
- type CommandDialogProps = DialogProps & {
23
- /** Accessible name for the dialog, read by screen readers (visually hidden). */
24
- title?: string;
25
- };
26
- declare const CommandDialog: ({ children, title, ...props }: CommandDialogProps) => react_jsx_runtime.JSX.Element;
27
- declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & {
28
- ref?: React.Ref<HTMLInputElement>;
29
- } & {
30
- asChild?: boolean;
31
- }, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
32
- value?: string;
33
- onValueChange?: (search: string) => void;
34
- } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
35
- declare const CommandList: React.ForwardRefExoticComponent<Omit<{
36
- children?: React.ReactNode;
37
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
38
- ref?: React.Ref<HTMLDivElement>;
39
- } & {
40
- asChild?: boolean;
41
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
42
- label?: string;
43
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
44
- declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
45
- children?: React.ReactNode;
46
- } & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
47
- ref?: React.Ref<HTMLDivElement>;
48
- } & {
49
- asChild?: boolean;
50
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
51
- declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
52
- children?: React.ReactNode;
53
- } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
54
- ref?: React.Ref<HTMLDivElement>;
55
- } & {
56
- asChild?: boolean;
57
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
58
- heading?: React.ReactNode;
59
- value?: string;
60
- forceMount?: boolean;
61
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
62
- declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
63
- ref?: React.Ref<HTMLDivElement>;
64
- } & {
65
- asChild?: boolean;
66
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
67
- alwaysRender?: boolean;
68
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
69
- declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
70
- children?: React.ReactNode;
71
- } & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
72
- ref?: React.Ref<HTMLDivElement>;
73
- } & {
74
- asChild?: boolean;
75
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
76
- disabled?: boolean;
77
- onSelect?: (value: string) => void;
78
- value?: string;
79
- keywords?: string[];
80
- forceMount?: boolean;
81
- } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
82
- declare const CommandShortcut: {
83
- ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
84
- displayName: string;
85
- };
86
-
87
- export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
@@ -1,35 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- interface ConfirmDialogProps {
4
- open: boolean;
5
- onOpenChange: (open: boolean) => void;
6
- title: string;
7
- description?: string;
8
- confirmLabel?: string;
9
- cancelLabel?: string;
10
- variant?: "default" | "destructive";
11
- onConfirm: () => void;
12
- loading?: boolean;
13
- }
14
- /**
15
- * Pre-composed confirmation dialog for delete/action confirmations.
16
- *
17
- * @example
18
- * ```tsx
19
- * <ConfirmDialog
20
- * open={showDelete}
21
- * onOpenChange={setShowDelete}
22
- * title="Delete brand?"
23
- * description="This action cannot be undone."
24
- * variant="destructive"
25
- * onConfirm={() => deleteBrand.mutate(uid)}
26
- * loading={deleteBrand.isPending}
27
- * />
28
- * ```
29
- */
30
- declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, variant, onConfirm, loading, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
31
- declare namespace ConfirmDialog {
32
- var displayName: string;
33
- }
34
-
35
- export { ConfirmDialog, type ConfirmDialogProps };
@@ -1,55 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { SortingState, RowSelectionState } from '@tanstack/react-table';
4
- export { RowSelectionState, SortingState, VisibilityState } from '@tanstack/react-table';
5
-
6
- interface ColumnDef<T> {
7
- key: keyof T & string;
8
- header: string;
9
- sortable?: boolean;
10
- render?: (row: T) => React.ReactNode;
11
- align?: "left" | "center" | "right";
12
- hideable?: boolean;
13
- }
14
- interface DataTablePagination {
15
- page: number;
16
- totalPages: number;
17
- getHref: (page: number) => string;
18
- onPageChange?: (page: number) => void;
19
- /** Current page size. Required when pageSizeOptions is set. */
20
- pageSize?: number;
21
- /** Available page size options. Renders a dropdown when provided. */
22
- pageSizeOptions?: number[];
23
- /** Called when the user selects a different page size. */
24
- onPageSizeChange?: (size: number) => void;
25
- }
26
- interface DataTableProps<T> {
27
- columns: ColumnDef<T>[];
28
- data: T[];
29
- searchable?: boolean;
30
- searchPlaceholder?: string;
31
- onRowClick?: (row: T) => void;
32
- loading?: boolean;
33
- emptyMessage?: string;
34
- toolbar?: React.ReactNode;
35
- className?: string;
36
- getRowId?: (row: T) => string;
37
- pagination?: DataTablePagination;
38
- globalFilter?: string;
39
- onGlobalFilterChange?: (value: string) => void;
40
- sortingState?: SortingState;
41
- onSortingChange?: (state: SortingState) => void;
42
- selectable?: boolean;
43
- rowSelection?: RowSelectionState;
44
- onRowSelectionChange?: (state: RowSelectionState) => void;
45
- bulkActions?: (selectedRows: T[]) => React.ReactNode;
46
- columnToggle?: boolean;
47
- exportCsv?: boolean;
48
- csvFilename?: string;
49
- }
50
- declare function DataTable<T>({ columns, data, searchable, searchPlaceholder, onRowClick, loading, emptyMessage, toolbar, className, getRowId, pagination, globalFilter: externalGlobalFilter, onGlobalFilterChange, sortingState, onSortingChange, selectable, rowSelection, onRowSelectionChange, bulkActions, columnToggle, exportCsv, csvFilename, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
51
- declare namespace DataTable {
52
- var displayName: string;
53
- }
54
-
55
- export { type ColumnDef, DataTable, type DataTablePagination, type DataTableProps };
@@ -1,59 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
-
4
- interface FieldDef<T> {
5
- /** Property key on the data object. */
6
- key: keyof T & string;
7
- /** Display label. */
8
- label: string;
9
- /** Field type determines the input component used in edit mode. */
10
- type: "text" | "textarea" | "select" | "readonly";
11
- /** Options for select fields. */
12
- options?: {
13
- label: string;
14
- value: string;
15
- }[];
16
- /** Mark the field as required in edit mode. */
17
- required?: boolean;
18
- /** Custom read-mode renderer. Receives the field value. */
19
- render?: (value: T[keyof T]) => React.ReactNode;
20
- }
21
- interface DetailPanelProps<T extends object> {
22
- /** Field definitions describing each field. */
23
- fields: FieldDef<T>[];
24
- /** The record to display/edit. */
25
- data: T;
26
- /** Called with the updated record when the user saves. */
27
- onSave: (data: T) => void;
28
- /** Called when the user cancels editing. */
29
- onCancel?: () => void;
30
- /** Whether a save operation is in progress. */
31
- loading?: boolean;
32
- /** Optional title displayed above the fields. */
33
- title?: string;
34
- /** Additional class name for the root container. */
35
- className?: string;
36
- /** Start in edit mode. */
37
- defaultEditing?: boolean;
38
- }
39
- /**
40
- * Read/edit toggle panel for a single record. Renders field values in read
41
- * mode, and form inputs in edit mode based on field definitions.
42
- *
43
- * @example
44
- * ```tsx
45
- * const fields: FieldDef<Brand>[] = [
46
- * { key: "brandsName", label: "Name", type: "text", required: true },
47
- * { key: "brandsDesc", label: "Description", type: "textarea" },
48
- * { key: "brandsUid", label: "UID", type: "readonly" },
49
- * ];
50
- *
51
- * <DetailPanel fields={fields} data={brand} onSave={handleSave} />
52
- * ```
53
- */
54
- declare function DetailPanel<T extends object>({ fields, data, onSave, onCancel, loading, title, className, defaultEditing, }: DetailPanelProps<T>): react_jsx_runtime.JSX.Element;
55
- declare namespace DetailPanel {
56
- var displayName: string;
57
- }
58
-
59
- export { DetailPanel, type DetailPanelProps, type FieldDef };
package/dist/dialog.d.cts DELETED
@@ -1,22 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import * as DialogPrimitive from '@radix-ui/react-dialog';
4
-
5
- declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
6
- declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
- declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
8
- declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
9
- declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
- declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
- declare const DialogHeader: {
12
- ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
13
- displayName: string;
14
- };
15
- declare const DialogFooter: {
16
- ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
17
- displayName: string;
18
- };
19
- declare const DialogTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
20
- declare const DialogDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
21
-
22
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
@@ -1,30 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
4
-
5
- declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
6
- declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
- declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
8
- declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
9
- declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
10
- declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
11
- declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
12
- inset?: boolean;
13
- } & React.RefAttributes<HTMLDivElement>>;
14
- declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
- declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
- declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
17
- inset?: boolean;
18
- } & React.RefAttributes<HTMLDivElement>>;
19
- declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
- declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
21
- declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
22
- inset?: boolean;
23
- } & React.RefAttributes<HTMLDivElement>>;
24
- declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
25
- declare const DropdownMenuShortcut: {
26
- ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
27
- displayName: string;
28
- };
29
-
30
- export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
@@ -1,45 +0,0 @@
1
- /** Supported financing providers. */
2
- type FinancingProvider = "timepayment";
3
- interface FinancingWidgetProps {
4
- /** Financing provider. */
5
- provider: FinancingProvider;
6
- /** Vendor/merchant code from the provider. */
7
- vendorCode: string;
8
- /** Disable loading. Default: false. */
9
- disabled?: boolean;
10
- /** Called when the financing script has loaded. */
11
- onLoad?: () => void;
12
- }
13
- interface UseFinancingResult {
14
- /** Whether the financing script has loaded. */
15
- isLoaded: boolean;
16
- }
17
- declare global {
18
- interface Window {
19
- TimePayment?: {
20
- apply: (vendorCode: string) => void;
21
- };
22
- }
23
- }
24
- /**
25
- * Loads a financing widget script on the pages where it's needed.
26
- * Renders nothing — this is a side-effect-only leaf component.
27
- *
28
- * Place this on product or checkout pages, NOT in the global layout.
29
- *
30
- * @example
31
- * ```tsx
32
- * // On a product page
33
- * <FinancingWidget provider="timepayment" vendorCode="PVD5P" />
34
- *
35
- * // With load callback
36
- * <FinancingWidget
37
- * provider="timepayment"
38
- * vendorCode="PVD5P"
39
- * onLoad={() => console.log("Financing ready")}
40
- * />
41
- * ```
42
- */
43
- declare function FinancingWidget({ provider, vendorCode, disabled, onLoad, }: FinancingWidgetProps): null;
44
-
45
- export { type FinancingProvider, FinancingWidget, type FinancingWidgetProps, type UseFinancingResult };
@@ -1,14 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormFieldProps {
4
- label: string;
5
- htmlFor: string;
6
- required?: boolean;
7
- error?: string;
8
- className?: string;
9
- children: React.ReactNode;
10
- }
11
- /** Base form layout: label + children + optional error message. */
12
- declare const FormField: React.ForwardRefExoticComponent<FormFieldProps & React.RefAttributes<HTMLDivElement>>;
13
-
14
- export { FormField, type FormFieldProps };
@@ -1,19 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
4
- label: string;
5
- error?: string;
6
- required?: boolean;
7
- gridSpan?: string;
8
- }
9
- /**
10
- * Labeled text input with error display. Composes FormField + Input.
11
- *
12
- * @example
13
- * ```tsx
14
- * <FormInput label="Email" name="email" type="email" required error={errors.email} />
15
- * ```
16
- */
17
- declare const FormInput: React.ForwardRefExoticComponent<FormInputProps & React.RefAttributes<HTMLInputElement>>;
18
-
19
- export { FormInput, type FormInputProps };
@@ -1,34 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormSelectProps {
4
- label: string;
5
- error?: string;
6
- required?: boolean;
7
- name: string;
8
- value?: string;
9
- onValueChange?: (value: string) => void;
10
- options: {
11
- label: string;
12
- value: string;
13
- }[];
14
- placeholder?: string;
15
- className?: string;
16
- disabled?: boolean;
17
- }
18
- /**
19
- * Labeled select dropdown with error display. Composes FormField + Select.
20
- *
21
- * @example
22
- * ```tsx
23
- * <FormSelect
24
- * label="State"
25
- * name="state"
26
- * options={[{ label: "Texas", value: "TX" }]}
27
- * value={state}
28
- * onValueChange={setState}
29
- * />
30
- * ```
31
- */
32
- declare const FormSelect: React.ForwardRefExoticComponent<FormSelectProps & React.RefAttributes<HTMLButtonElement>>;
33
-
34
- export { FormSelect, type FormSelectProps };
@@ -1,12 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface FormTextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
4
- label: string;
5
- error?: string;
6
- required?: boolean;
7
- gridSpan?: string;
8
- }
9
- /** Labeled textarea with error display. Composes FormField + Textarea. */
10
- declare const FormTextarea: React.ForwardRefExoticComponent<FormTextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
11
-
12
- export { FormTextarea, type FormTextareaProps };
package/dist/gtm.d.cts DELETED
@@ -1,69 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { ReactNode } from 'react';
3
-
4
- /** Script loading strategy. */
5
- type AnalyticsStrategy = "default" | "afterInteractive" | "lazyOnload";
6
- /** GA4 standard e-commerce event names. */
7
- type EcommerceEvent = "view_item" | "view_item_list" | "select_item" | "add_to_cart" | "remove_from_cart" | "view_cart" | "begin_checkout" | "add_shipping_info" | "add_payment_info" | "purchase" | "refund";
8
- /** GA4 e-commerce item shape. */
9
- interface EcommerceItem {
10
- item_id: string;
11
- item_name?: string;
12
- item_brand?: string;
13
- item_category?: string;
14
- item_variant?: string;
15
- price?: number;
16
- quantity?: number;
17
- index?: number;
18
- [key: string]: unknown;
19
- }
20
- /** Parameters for e-commerce events. */
21
- interface EcommerceParams {
22
- currency?: string;
23
- value?: number;
24
- items?: EcommerceItem[];
25
- transaction_id?: string;
26
- shipping?: number;
27
- tax?: number;
28
- coupon?: string;
29
- [key: string]: unknown;
30
- }
31
- interface AnalyticsProviderProps {
32
- /** GTM container ID (e.g. "GTM-XXXXX"). */
33
- gtmId: string;
34
- /** Script loading strategy. Default: "afterInteractive". */
35
- strategy?: AnalyticsStrategy;
36
- /** Delay GTM loading until consent is granted. Default: false. */
37
- consentRequired?: boolean;
38
- /** Log dataLayer pushes to console. Default: false. */
39
- debug?: boolean;
40
- children: ReactNode;
41
- }
42
- interface AnalyticsContextValue {
43
- /** Push a custom event to the dataLayer. */
44
- trackEvent: (event: string, params?: Record<string, unknown>) => void;
45
- /** Push a GA4 e-commerce event to the dataLayer. */
46
- trackEcommerceEvent: (event: EcommerceEvent, params: EcommerceParams) => void;
47
- /** Grant consent — loads GTM if consentRequired was true. */
48
- grantConsent: () => void;
49
- /** Revoke consent. Does not unload GTM (scripts can't be unloaded). */
50
- revokeConsent: () => void;
51
- /** Whether consent has been granted. */
52
- hasConsent: boolean;
53
- /** Whether the GTM script has been injected. */
54
- isLoaded: boolean;
55
- }
56
- declare global {
57
- interface Window {
58
- dataLayer?: Record<string, unknown>[];
59
- }
60
- }
61
- declare function AnalyticsProvider({ gtmId, strategy, consentRequired, debug, children, }: AnalyticsProviderProps): react_jsx_runtime.JSX.Element;
62
- declare function useAnalytics(): AnalyticsContextValue;
63
- interface AnalyticsNoscriptProps {
64
- /** GTM container ID (must match AnalyticsProvider). */
65
- gtmId: string;
66
- }
67
- declare function AnalyticsNoscript({ gtmId }: AnalyticsNoscriptProps): react_jsx_runtime.JSX.Element;
68
-
69
- export { type AnalyticsContextValue, AnalyticsNoscript, type AnalyticsNoscriptProps, AnalyticsProvider, type AnalyticsProviderProps, type AnalyticsStrategy, type EcommerceEvent, type EcommerceItem, type EcommerceParams, useAnalytics };
package/dist/input.d.cts DELETED
@@ -1,6 +0,0 @@
1
- import * as React from 'react';
2
-
3
- type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
4
- declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
5
-
6
- export { Input, type InputProps };
package/dist/label.d.cts DELETED
@@ -1,8 +0,0 @@
1
- import * as class_variance_authority_types from 'class-variance-authority/types';
2
- import * as React from 'react';
3
- import * as LabelPrimitive from '@radix-ui/react-label';
4
- import { VariantProps } from 'class-variance-authority';
5
-
6
- declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: class_variance_authority_types.ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
7
-
8
- export { Label };
@@ -1,18 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React__default from 'react';
3
-
4
- interface ListViewProps<T> {
5
- data: T[] | undefined;
6
- renderItems: (item: T, index?: number) => React__default.ReactNode;
7
- }
8
- /**
9
- * Generic list renderer that maps an array through a render function.
10
- *
11
- * @example
12
- * ```tsx
13
- * <ListView data={products} renderItems={(item) => <ProductCard {...item} />} />
14
- * ```
15
- */
16
- declare const ListView: <T>({ data, renderItems }: ListViewProps<T>) => react_jsx_runtime.JSX.Element;
17
-
18
- export { ListView };
@@ -1,20 +0,0 @@
1
- import * as React from 'react';
2
-
3
- type MDXComponents = Record<string, React.ComponentType<any>>;
4
- /**
5
- * Returns a map of HTML element names to styled React components
6
- * for use with MDX content rendering.
7
- *
8
- * Pass to `useMDXComponents` in your Next.js `mdx-components.tsx`:
9
- *
10
- * ```tsx
11
- * import { getMDXComponents } from "@simpleapps-com/augur-web/mdx-components";
12
- *
13
- * export function useMDXComponents(components) {
14
- * return getMDXComponents(components);
15
- * }
16
- * ```
17
- */
18
- declare function getMDXComponents(overrides?: MDXComponents): MDXComponents;
19
-
20
- export { getMDXComponents };