@dtsports/design-system 0.2.0

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 (340) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/dist/components/accordion.d.ts +19 -0
  4. package/dist/components/accordion.d.ts.map +1 -0
  5. package/dist/components/accordion.js +26 -0
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/alert.d.ts +26 -0
  8. package/dist/components/alert.d.ts.map +1 -0
  9. package/dist/components/alert.js.map +1 -0
  10. package/dist/components/app-shell.d.ts +21 -0
  11. package/dist/components/app-shell.d.ts.map +1 -0
  12. package/dist/components/app-shell.js +25 -0
  13. package/dist/components/app-shell.js.map +1 -0
  14. package/dist/components/aspect-ratio.d.ts +16 -0
  15. package/dist/components/aspect-ratio.d.ts.map +1 -0
  16. package/dist/components/aspect-ratio.js +17 -0
  17. package/dist/components/aspect-ratio.js.map +1 -0
  18. package/dist/components/avatar-group.d.ts +31 -0
  19. package/dist/components/avatar-group.d.ts.map +1 -0
  20. package/dist/components/avatar.d.ts +15 -0
  21. package/dist/components/avatar.d.ts.map +1 -0
  22. package/dist/components/avatar.js +20 -0
  23. package/dist/components/avatar.js.map +1 -0
  24. package/dist/components/badge.d.ts +27 -0
  25. package/dist/components/badge.d.ts.map +1 -0
  26. package/dist/components/badge.js +51 -0
  27. package/dist/components/badge.js.map +1 -0
  28. package/dist/components/breadcrumb.js.map +1 -0
  29. package/dist/components/button.d.ts +33 -0
  30. package/dist/components/button.d.ts.map +1 -0
  31. package/dist/components/button.js +58 -0
  32. package/dist/components/button.js.map +1 -0
  33. package/dist/components/calendar.d.ts +15 -0
  34. package/dist/components/calendar.d.ts.map +1 -0
  35. package/dist/components/calendar.js +33 -0
  36. package/dist/components/calendar.js.map +1 -0
  37. package/dist/components/capacity-bar.d.ts +32 -0
  38. package/dist/components/capacity-bar.d.ts.map +1 -0
  39. package/dist/components/capacity-bar.js +29 -0
  40. package/dist/components/capacity-bar.js.map +1 -0
  41. package/dist/components/card.d.ts +26 -0
  42. package/dist/components/card.d.ts.map +1 -0
  43. package/dist/components/card.js +20 -0
  44. package/dist/components/checkbox.d.ts +11 -0
  45. package/dist/components/checkbox.d.ts.map +1 -0
  46. package/dist/components/checkbox.js +19 -0
  47. package/dist/components/chip.d.ts +23 -0
  48. package/dist/components/chip.d.ts.map +1 -0
  49. package/dist/components/chip.js +32 -0
  50. package/dist/components/chip.js.map +1 -0
  51. package/dist/components/collapsible.d.ts +16 -0
  52. package/dist/components/collapsible.js +22 -0
  53. package/dist/components/collapsible.js.map +1 -0
  54. package/dist/components/combobox.d.ts +38 -0
  55. package/dist/components/combobox.d.ts.map +1 -0
  56. package/dist/components/combobox.js +17 -0
  57. package/dist/components/combobox.js.map +1 -0
  58. package/dist/components/confirm-action.d.ts +36 -0
  59. package/dist/components/confirm-action.d.ts.map +1 -0
  60. package/dist/components/confirm-action.js +21 -0
  61. package/dist/components/confirm-action.js.map +1 -0
  62. package/dist/components/container.js.map +1 -0
  63. package/dist/components/date-picker.d.ts.map +1 -0
  64. package/dist/components/date-picker.js +22 -0
  65. package/dist/components/date-picker.js.map +1 -0
  66. package/dist/components/dialog.d.ts +28 -0
  67. package/dist/components/dialog.d.ts.map +1 -0
  68. package/dist/components/dialog.js.map +1 -0
  69. package/dist/components/drawer.js +55 -0
  70. package/dist/components/drawer.js.map +1 -0
  71. package/dist/components/dropdown-menu.d.ts +39 -0
  72. package/dist/components/dropdown-menu.d.ts.map +1 -0
  73. package/dist/components/dropdown-menu.js +47 -0
  74. package/dist/components/empty-state.d.ts +15 -0
  75. package/dist/components/empty-state.d.ts.map +1 -0
  76. package/dist/components/empty-state.js +6 -0
  77. package/dist/components/form-field.d.ts +32 -0
  78. package/dist/components/form-field.d.ts.map +1 -0
  79. package/dist/components/form-field.js +31 -0
  80. package/dist/components/form-field.js.map +1 -0
  81. package/dist/components/input.d.ts +10 -0
  82. package/dist/components/input.d.ts.map +1 -0
  83. package/dist/components/input.js +6 -0
  84. package/dist/components/input.js.map +1 -0
  85. package/dist/components/label.d.ts +11 -0
  86. package/dist/components/label.d.ts.map +1 -0
  87. package/dist/components/label.js +13 -0
  88. package/dist/components/label.js.map +1 -0
  89. package/dist/components/live-pill.d.ts +14 -0
  90. package/dist/components/live-pill.js +15 -0
  91. package/dist/components/live-pill.js.map +1 -0
  92. package/dist/components/metric-tile.d.ts +23 -0
  93. package/dist/components/metric-tile.d.ts.map +1 -0
  94. package/dist/components/money-breakdown.d.ts +36 -0
  95. package/dist/components/money-breakdown.d.ts.map +1 -0
  96. package/dist/components/money-breakdown.js +12 -0
  97. package/dist/components/money-breakdown.js.map +1 -0
  98. package/dist/components/number-input.d.ts +16 -0
  99. package/dist/components/number-input.d.ts.map +1 -0
  100. package/dist/components/number-input.js +30 -0
  101. package/dist/components/number-input.js.map +1 -0
  102. package/dist/components/pagination.d.ts +27 -0
  103. package/dist/components/pagination.d.ts.map +1 -0
  104. package/dist/components/pagination.js +52 -0
  105. package/dist/components/pagination.js.map +1 -0
  106. package/dist/components/popover.d.ts +24 -0
  107. package/dist/components/popover.d.ts.map +1 -0
  108. package/dist/components/popover.js +28 -0
  109. package/dist/components/popover.js.map +1 -0
  110. package/dist/components/progress.d.ts +13 -0
  111. package/dist/components/progress.d.ts.map +1 -0
  112. package/dist/components/progress.js +17 -0
  113. package/dist/components/radio-group.d.ts +10 -0
  114. package/dist/components/radio-group.d.ts.map +1 -0
  115. package/dist/components/radio-group.js +17 -0
  116. package/dist/components/radio-group.js.map +1 -0
  117. package/dist/components/scroll-area.d.ts.map +1 -0
  118. package/dist/components/scroll-area.js +22 -0
  119. package/dist/components/scroll-area.js.map +1 -0
  120. package/dist/components/select.d.ts +27 -0
  121. package/dist/components/select.d.ts.map +1 -0
  122. package/dist/components/select.js +40 -0
  123. package/dist/components/select.js.map +1 -0
  124. package/dist/components/separator.d.ts +10 -0
  125. package/dist/components/separator.d.ts.map +1 -0
  126. package/dist/components/separator.js +14 -0
  127. package/dist/components/separator.js.map +1 -0
  128. package/dist/components/sidebar.d.ts.map +1 -0
  129. package/dist/components/sidebar.js +48 -0
  130. package/dist/components/sidebar.js.map +1 -0
  131. package/dist/components/skeleton.d.ts +23 -0
  132. package/dist/components/skeleton.js +25 -0
  133. package/dist/components/skeleton.js.map +1 -0
  134. package/dist/components/slider.d.ts +14 -0
  135. package/dist/components/slider.d.ts.map +1 -0
  136. package/dist/components/slider.js +30 -0
  137. package/dist/components/slider.js.map +1 -0
  138. package/dist/components/spec.d.ts +35 -0
  139. package/dist/components/spec.js +31 -0
  140. package/dist/components/spec.js.map +1 -0
  141. package/dist/components/spinner.d.ts +20 -0
  142. package/dist/components/spinner.d.ts.map +1 -0
  143. package/dist/components/spinner.js +18 -0
  144. package/dist/components/spinner.js.map +1 -0
  145. package/dist/components/stack.d.ts +48 -0
  146. package/dist/components/stack.d.ts.map +1 -0
  147. package/dist/components/stack.js +43 -0
  148. package/dist/components/stack.js.map +1 -0
  149. package/dist/components/status-pill.js +34 -0
  150. package/dist/components/status-pill.js.map +1 -0
  151. package/dist/components/switch.d.ts +9 -0
  152. package/dist/components/switch.d.ts.map +1 -0
  153. package/dist/components/switch.js +15 -0
  154. package/dist/components/switch.js.map +1 -0
  155. package/dist/components/table.d.ts +31 -0
  156. package/dist/components/table.d.ts.map +1 -0
  157. package/dist/components/tabs.d.ts +22 -0
  158. package/dist/components/tabs.d.ts.map +1 -0
  159. package/dist/components/tabs.js +28 -0
  160. package/dist/components/tabs.js.map +1 -0
  161. package/dist/components/textarea.d.ts +8 -0
  162. package/dist/components/textarea.d.ts.map +1 -0
  163. package/dist/components/textarea.js +6 -0
  164. package/dist/components/textarea.js.map +1 -0
  165. package/dist/components/theme-provider.d.ts +35 -0
  166. package/dist/components/theme-provider.d.ts.map +1 -0
  167. package/dist/components/theme-provider.js.map +1 -0
  168. package/dist/components/theme-toggle.d.ts +10 -0
  169. package/dist/components/theme-toggle.d.ts.map +1 -0
  170. package/dist/components/theme-toggle.js.map +1 -0
  171. package/dist/components/three-state.d.ts +39 -0
  172. package/dist/components/three-state.d.ts.map +1 -0
  173. package/dist/components/three-state.js +24 -0
  174. package/dist/components/three-state.js.map +1 -0
  175. package/dist/components/timestamp.d.ts +24 -0
  176. package/dist/components/timestamp.js +64 -0
  177. package/dist/components/timestamp.js.map +1 -0
  178. package/dist/components/toaster.d.ts +27 -0
  179. package/dist/components/toaster.d.ts.map +1 -0
  180. package/dist/components/toaster.js +21 -0
  181. package/dist/components/toaster.js.map +1 -0
  182. package/dist/components/tooltip.d.ts +28 -0
  183. package/dist/components/tooltip.d.ts.map +1 -0
  184. package/dist/components/tooltip.js.map +1 -0
  185. package/dist/components/top-bar.d.ts +13 -0
  186. package/dist/components/top-bar.d.ts.map +1 -0
  187. package/dist/components/top-bar.js +16 -0
  188. package/dist/index.d.ts +76 -0
  189. package/dist/index.d.ts.map +1 -0
  190. package/dist/index.js +86 -0
  191. package/dist/index.js.map +1 -0
  192. package/dist/lib/utils.d.ts +7 -0
  193. package/dist/lib/utils.d.ts.map +1 -0
  194. package/dist/lib/utils.js +10 -0
  195. package/dist/lib/utils.js.map +1 -0
  196. package/dist/marketing/footer.d.ts +31 -0
  197. package/dist/marketing/footer.d.ts.map +1 -0
  198. package/dist/marketing/footer.js +9 -0
  199. package/dist/marketing/footer.js.map +1 -0
  200. package/dist/marketing/hero.d.ts +29 -0
  201. package/dist/marketing/hero.d.ts.map +1 -0
  202. package/dist/marketing/hero.js +7 -0
  203. package/dist/marketing/hero.js.map +1 -0
  204. package/dist/marketing/index.d.ts +21 -0
  205. package/dist/marketing/index.d.ts.map +1 -0
  206. package/dist/marketing/index.js +21 -0
  207. package/dist/marketing/index.js.map +1 -0
  208. package/dist/marketing/logo-cloud.d.ts +15 -0
  209. package/dist/marketing/logo-cloud.d.ts.map +1 -0
  210. package/dist/marketing/logo-cloud.js +6 -0
  211. package/dist/marketing/logo-cloud.js.map +1 -0
  212. package/dist/marketing/nav.d.ts +33 -0
  213. package/dist/marketing/nav.d.ts.map +1 -0
  214. package/dist/marketing/nav.js +14 -0
  215. package/dist/marketing/nav.js.map +1 -0
  216. package/dist/marketing/prose.d.ts +12 -0
  217. package/dist/marketing/prose.d.ts.map +1 -0
  218. package/dist/marketing/prose.js +18 -0
  219. package/dist/marketing/prose.js.map +1 -0
  220. package/dist/marketing/section.d.ts +22 -0
  221. package/dist/marketing/section.d.ts.map +1 -0
  222. package/dist/marketing/section.js +7 -0
  223. package/dist/marketing/section.js.map +1 -0
  224. package/dist/showcase/components/code-block.d.ts +11 -0
  225. package/dist/showcase/components/code-block.d.ts.map +1 -0
  226. package/dist/showcase/components/code-block.js +20 -0
  227. package/dist/showcase/components/code-block.js.map +1 -0
  228. package/dist/showcase/components/example.d.ts +16 -0
  229. package/dist/showcase/components/example.d.ts.map +1 -0
  230. package/dist/showcase/components/example.js +14 -0
  231. package/dist/showcase/components/example.js.map +1 -0
  232. package/dist/showcase/components/section.d.ts +21 -0
  233. package/dist/showcase/components/section.d.ts.map +1 -0
  234. package/dist/showcase/components/section.js +10 -0
  235. package/dist/showcase/components/section.js.map +1 -0
  236. package/dist/showcase/components/swatch.d.ts +17 -0
  237. package/dist/showcase/components/swatch.d.ts.map +1 -0
  238. package/dist/showcase/components/swatch.js +6 -0
  239. package/dist/showcase/components/swatch.js.map +1 -0
  240. package/dist/showcase/index.d.ts +17 -0
  241. package/dist/showcase/index.d.ts.map +1 -0
  242. package/dist/showcase/index.js +17 -0
  243. package/dist/showcase/index.js.map +1 -0
  244. package/dist/showcase/page.d.ts +2 -0
  245. package/dist/showcase/page.d.ts.map +1 -0
  246. package/dist/showcase/page.js +1085 -0
  247. package/dist/showcase/page.js.map +1 -0
  248. package/dist/styles/generated/tokens.d.ts +131 -0
  249. package/dist/styles/generated/tokens.d.ts.map +1 -0
  250. package/dist/styles/generated/tokens.js +107 -0
  251. package/dist/styles/generated/tokens.js.map +1 -0
  252. package/dist/styles/globals.css +131 -0
  253. package/dist/styles/tailwind.preset.d.ts +181 -0
  254. package/dist/styles/tailwind.preset.d.ts.map +1 -0
  255. package/dist/styles/tailwind.preset.js +114 -0
  256. package/dist/styles/tailwind.preset.js.map +1 -0
  257. package/dist/tokens/index.d.ts +176 -0
  258. package/dist/tokens/index.d.ts.map +1 -0
  259. package/dist/tokens/index.js +139 -0
  260. package/dist/tokens/index.js.map +1 -0
  261. package/dist/tokens/tokens.json +154 -0
  262. package/package.json +124 -0
  263. package/src/components/accordion.tsx +76 -0
  264. package/src/components/alert.tsx +113 -0
  265. package/src/components/app-shell.tsx +43 -0
  266. package/src/components/aspect-ratio.tsx +18 -0
  267. package/src/components/avatar-group.tsx +73 -0
  268. package/src/components/avatar.tsx +81 -0
  269. package/src/components/badge.tsx +77 -0
  270. package/src/components/breadcrumb.tsx +121 -0
  271. package/src/components/button.tsx +83 -0
  272. package/src/components/calendar.tsx +85 -0
  273. package/src/components/capacity-bar.tsx +80 -0
  274. package/src/components/card.tsx +104 -0
  275. package/src/components/checkbox.tsx +46 -0
  276. package/src/components/chip.tsx +74 -0
  277. package/src/components/collapsible.tsx +54 -0
  278. package/src/components/combobox.tsx +140 -0
  279. package/src/components/confirm-action.tsx +111 -0
  280. package/src/components/container.tsx +39 -0
  281. package/src/components/date-picker.tsx +98 -0
  282. package/src/components/dialog.tsx +174 -0
  283. package/src/components/drawer.tsx +157 -0
  284. package/src/components/dropdown-menu.tsx +200 -0
  285. package/src/components/empty-state.tsx +46 -0
  286. package/src/components/form-field.tsx +118 -0
  287. package/src/components/input.tsx +29 -0
  288. package/src/components/label.tsx +35 -0
  289. package/src/components/live-pill.tsx +35 -0
  290. package/src/components/metric-tile.tsx +83 -0
  291. package/src/components/money-breakdown.tsx +92 -0
  292. package/src/components/number-input.tsx +113 -0
  293. package/src/components/pagination.tsx +157 -0
  294. package/src/components/popover.tsx +46 -0
  295. package/src/components/progress.tsx +34 -0
  296. package/src/components/radio-group.tsx +46 -0
  297. package/src/components/scroll-area.tsx +55 -0
  298. package/src/components/select.tsx +169 -0
  299. package/src/components/separator.tsx +34 -0
  300. package/src/components/sidebar.tsx +168 -0
  301. package/src/components/skeleton.tsx +85 -0
  302. package/src/components/slider.tsx +58 -0
  303. package/src/components/spec.tsx +59 -0
  304. package/src/components/spinner.tsx +36 -0
  305. package/src/components/stack.tsx +80 -0
  306. package/src/components/status-pill.tsx +100 -0
  307. package/src/components/switch.tsx +37 -0
  308. package/src/components/table.tsx +129 -0
  309. package/src/components/tabs.tsx +72 -0
  310. package/src/components/textarea.tsx +27 -0
  311. package/src/components/theme-provider.tsx +131 -0
  312. package/src/components/theme-toggle.tsx +34 -0
  313. package/src/components/three-state.tsx +90 -0
  314. package/src/components/timestamp.tsx +107 -0
  315. package/src/components/toaster.tsx +55 -0
  316. package/src/components/tooltip.tsx +49 -0
  317. package/src/components/top-bar.tsx +29 -0
  318. package/src/index.ts +221 -0
  319. package/src/lib/utils.ts +10 -0
  320. package/src/marketing/footer.tsx +93 -0
  321. package/src/marketing/hero.tsx +92 -0
  322. package/src/marketing/index.ts +24 -0
  323. package/src/marketing/logo-cloud.tsx +35 -0
  324. package/src/marketing/nav.tsx +122 -0
  325. package/src/marketing/prose.tsx +45 -0
  326. package/src/marketing/section.tsx +77 -0
  327. package/src/showcase/components/code-block.tsx +66 -0
  328. package/src/showcase/components/example.tsx +47 -0
  329. package/src/showcase/components/section.tsx +70 -0
  330. package/src/showcase/components/swatch.tsx +52 -0
  331. package/src/showcase/index.tsx +16 -0
  332. package/src/showcase/page.tsx +4216 -0
  333. package/src/styles/generated/tokens.ts +119 -0
  334. package/src/styles/globals.css +131 -0
  335. package/src/styles/tailwind.preset.ts +134 -0
  336. package/src/test/a11y.test.tsx +638 -0
  337. package/src/test/marketing-a11y.test.tsx +138 -0
  338. package/src/test/setup.ts +47 -0
  339. package/src/tokens/index.ts +154 -0
  340. package/src/tokens/tokens.json +154 -0
@@ -0,0 +1,27 @@
1
+ import type * as React from "react";
2
+ import { Toaster as SonnerToaster, toast } from "sonner";
3
+ /**
4
+ * Toaster — the design-system-themed sonner toaster. Mount ONCE inside
5
+ * ThemeProvider (typically in the root layout next to your app shell):
6
+ *
7
+ * <ThemeProvider>
8
+ * <App />
9
+ * <Toaster />
10
+ * </ThemeProvider>
11
+ *
12
+ * Fire toasts anywhere with the re-exported `toast`:
13
+ *
14
+ * toast.success("Game cancelled. 8 refunds issued as credit.");
15
+ *
16
+ * Per §3.10 every action outcome must be visible — toasts are the
17
+ * default surface for async success/failure. Per §3.7 cheap reversals
18
+ * get a 5s undo action:
19
+ *
20
+ * toast("Draft deleted", {
21
+ * action: { label: "Undo", onClick: restoreDraft },
22
+ * });
23
+ */
24
+ export type ToasterProps = React.ComponentProps<typeof SonnerToaster>;
25
+ export declare function Toaster(props: ToasterProps): import("react/jsx-runtime").JSX.Element;
26
+ export { toast };
27
+ //# sourceMappingURL=toaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../src/components/toaster.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtE,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAuB1C;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Toaster as SonnerToaster, toast } from "sonner";
4
+ import { useTheme } from "./theme-provider.js";
5
+ export function Toaster(props) {
6
+ const { theme } = useTheme();
7
+ return (_jsx(SonnerToaster, { theme: theme, duration: 5000, toastOptions: {
8
+ classNames: {
9
+ toast: "group rounded border border-border bg-background text-foreground shadow-md text-sm",
10
+ description: "text-text-muted text-xs",
11
+ actionButton: "bg-brand-forest text-brand-forest-foreground rounded-sm text-xs font-medium",
12
+ cancelButton: "bg-bg-muted text-text-muted rounded-sm text-xs",
13
+ success: "[&_[data-icon]]:text-success",
14
+ warning: "[&_[data-icon]]:text-warning",
15
+ error: "[&_[data-icon]]:text-danger",
16
+ info: "[&_[data-icon]]:text-info",
17
+ },
18
+ }, ...props }));
19
+ }
20
+ export { toast };
21
+ //# sourceMappingURL=toaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.js","sourceRoot":"","sources":["../../src/components/toaster.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAyB5C,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,EACd,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,KAAK,EACH,oFAAoF;gBACtF,WAAW,EAAE,yBAAyB;gBACtC,YAAY,EACV,6EAA6E;gBAC/E,YAAY,EAAE,gDAAgD;gBAC9D,OAAO,EAAE,8BAA8B;gBACvC,OAAO,EAAE,8BAA8B;gBACvC,KAAK,EAAE,6BAA6B;gBACpC,IAAI,EAAE,2BAA2B;aAClC;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import * as React from "react";
2
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
3
+ /**
4
+ * Tooltip — keyboard-accessible hover hints.
5
+ *
6
+ * <Tooltip>
7
+ * <TooltipTrigger asChild><Button size="icon">…</Button></TooltipTrigger>
8
+ * <TooltipContent>Cancel game</TooltipContent>
9
+ * </Tooltip>
10
+ *
11
+ * NOTE: A `<TooltipProvider>` must wrap the app root for tooltips to
12
+ * function — the design system's `<ThemeProvider>` already includes it,
13
+ * so consumers get this for free.
14
+ *
15
+ * Use for:
16
+ * - Icon-only button labels (preferred over native `title=` which is
17
+ * mouse-only and not keyboard accessible)
18
+ * - "Did you know" tips beside an input label
19
+ * - Truncated text expansions
20
+ *
21
+ * Don't use for critical info or anything a user needs to interact with —
22
+ * tooltips hide on blur and aren't reachable on touch devices.
23
+ */
24
+ export declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
25
+ export declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
26
+ export declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
27
+ export declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
28
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,iDAA4B,CAAC;AACzD,eAAO,MAAM,OAAO,yCAAwB,CAAC;AAC7C,eAAO,MAAM,cAAc,gHAA2B,CAAC;AAEvD,eAAO,MAAM,cAAc,gKAgBzB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AACzD,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAG5C,CAAC,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClD,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,gBAAgB,CAAC,OAAO,IACvB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,gHAAgH,EAChH,2CAA2C,EAC3C,SAAS,CACV,KACG,KAAK,GACT,GACsB,CAC3B,CAAC,CAAC;AACH,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ /**
3
+ * TopBar — sticky 48px header bar. Renders the chrome (border, blur,
4
+ * height); content layout is the consumer's responsibility:
5
+ *
6
+ * <TopBar>
7
+ * <Breadcrumb>…</Breadcrumb>
8
+ * <div className="flex-1" />
9
+ * <ThemeToggle />
10
+ * </TopBar>
11
+ */
12
+ export declare const TopBar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & React.RefAttributes<HTMLElement>>;
13
+ //# sourceMappingURL=top-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top-bar.d.ts","sourceRoot":"","sources":["../../src/components/top-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,uGAcjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../lib/utils.js";
4
+ /**
5
+ * TopBar — sticky 48px header bar. Renders the chrome (border, blur,
6
+ * height); content layout is the consumer's responsibility:
7
+ *
8
+ * <TopBar>
9
+ * <Breadcrumb>…</Breadcrumb>
10
+ * <div className="flex-1" />
11
+ * <ThemeToggle />
12
+ * </TopBar>
13
+ */
14
+ export const TopBar = React.forwardRef(({ className, children, ...props }, ref) => (_jsx("header", { ref: ref, className: cn("sticky top-0 z-20 bg-background/95 backdrop-blur border-b border-border", className), ...props, children: _jsx("div", { className: "flex h-12 items-center gap-3 px-6", children: children }) })));
15
+ TopBar.displayName = "TopBar";
16
+ //# sourceMappingURL=top-bar.js.map
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @dtsports/design-system — public API.
3
+ *
4
+ * Import paths:
5
+ * import { Button, Card, Table, … } from "@dtsports/design-system";
6
+ *
7
+ * Styles:
8
+ * import "@dtsports/design-system/styles/globals.css";
9
+ *
10
+ * Tailwind preset:
11
+ * import preset from "@dtsports/design-system/tailwind-preset";
12
+ *
13
+ * Docs page (mountable):
14
+ * export { default } from "@dtsports/design-system/showcase";
15
+ *
16
+ * Fonts:
17
+ * The system expects "Exo 2" to be available. Load it via your app's
18
+ * font strategy (e.g. next/font/google) in your root layout.
19
+ */
20
+ export { Button, buttonVariants, type ButtonProps } from "./components/button.js";
21
+ export { Input, type InputProps } from "./components/input.js";
22
+ export { Label } from "./components/label.js";
23
+ export { Textarea, type TextareaProps } from "./components/textarea.js";
24
+ export { Checkbox } from "./components/checkbox.js";
25
+ export { RadioGroup, RadioGroupItem } from "./components/radio-group.js";
26
+ export { Switch } from "./components/switch.js";
27
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, } from "./components/select.js";
28
+ export { NumberInput, type NumberInputProps } from "./components/number-input.js";
29
+ export { FormField, type FormFieldProps } from "./components/form-field.js";
30
+ export { Slider } from "./components/slider.js";
31
+ export { Combobox, type ComboboxOption, type ComboboxProps, } from "./components/combobox.js";
32
+ export { Calendar, type CalendarProps } from "./components/calendar.js";
33
+ export { DatePicker, type DatePickerProps } from "./components/date-picker.js";
34
+ export { Badge, badgeVariants, type BadgeProps } from "./components/badge.js";
35
+ export { Chip, chipVariants, type ChipProps } from "./components/chip.js";
36
+ export { Card, type CardProps, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, } from "./components/card.js";
37
+ export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, } from "./components/table.js";
38
+ export { Avatar, type AvatarProps } from "./components/avatar.js";
39
+ export { AvatarGroup, type AvatarGroupProps } from "./components/avatar-group.js";
40
+ export { Separator } from "./components/separator.js";
41
+ export { Spec, SpecList, type SpecProps, type SpecListProps, } from "./components/spec.js";
42
+ export { Pagination, type PaginationProps } from "./components/pagination.js";
43
+ export { Alert, alertVariants, type AlertProps } from "./components/alert.js";
44
+ export { Toaster, toast, type ToasterProps } from "./components/toaster.js";
45
+ export { Skeleton, SkeletonList, SkeletonTable } from "./components/skeleton.js";
46
+ export { Spinner, type SpinnerProps } from "./components/spinner.js";
47
+ export { Progress } from "./components/progress.js";
48
+ export { Dialog, DialogTrigger, DialogPortal, DialogClose, DialogOverlay, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter, } from "./components/dialog.js";
49
+ export { Drawer, DrawerTrigger, DrawerClose, DrawerPortal, DrawerOverlay, drawerVariants, DrawerContent, type DrawerContentProps, DrawerHeader, DrawerTitle, DrawerDescription, DrawerBody, DrawerFooter, } from "./components/drawer.js";
50
+ export { Popover, PopoverTrigger, PopoverAnchor, PopoverContent, } from "./components/popover.js";
51
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuRadioGroup, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSubTrigger, DropdownMenuSubContent, } from "./components/dropdown-menu.js";
52
+ export { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, } from "./components/tooltip.js";
53
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from "./components/accordion.js";
54
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent, } from "./components/collapsible.js";
55
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from "./components/tabs.js";
56
+ export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, type BreadcrumbLinkProps, } from "./components/breadcrumb.js";
57
+ export { AppShell, AppMain } from "./components/app-shell.js";
58
+ export { Sidebar, SidebarHeader, SidebarBody, SidebarFooter, SidebarSection, SidebarItem, type SidebarSectionProps, type SidebarItemProps, } from "./components/sidebar.js";
59
+ export { TopBar } from "./components/top-bar.js";
60
+ export { Container, type ContainerProps } from "./components/container.js";
61
+ export { Stack, type StackProps } from "./components/stack.js";
62
+ export { AspectRatio } from "./components/aspect-ratio.js";
63
+ export { ScrollArea, ScrollBar } from "./components/scroll-area.js";
64
+ export { LivePill } from "./components/live-pill.js";
65
+ export { StatusPill, type GameStatus } from "./components/status-pill.js";
66
+ export { MetricTile, type MetricTileProps } from "./components/metric-tile.js";
67
+ export { CapacityBar, type CapacityBarProps } from "./components/capacity-bar.js";
68
+ export { EmptyState, type EmptyStateProps } from "./components/empty-state.js";
69
+ export { Timestamp, type TimestampProps } from "./components/timestamp.js";
70
+ export { MoneyBreakdown, type MoneyBreakdownProps, type MoneyLine, } from "./components/money-breakdown.js";
71
+ export { ThreeState, type ListState, type ThreeStateProps, } from "./components/three-state.js";
72
+ export { ConfirmAction, type ConfirmActionProps, } from "./components/confirm-action.js";
73
+ export { ThemeProvider, useTheme } from "./components/theme-provider.js";
74
+ export { ThemeToggle } from "./components/theme-toggle.js";
75
+ export { cn } from "./lib/utils.js";
76
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @dtsports/design-system — public API.
3
+ *
4
+ * Import paths:
5
+ * import { Button, Card, Table, … } from "@dtsports/design-system";
6
+ *
7
+ * Styles:
8
+ * import "@dtsports/design-system/styles/globals.css";
9
+ *
10
+ * Tailwind preset:
11
+ * import preset from "@dtsports/design-system/tailwind-preset";
12
+ *
13
+ * Docs page (mountable):
14
+ * export { default } from "@dtsports/design-system/showcase";
15
+ *
16
+ * Fonts:
17
+ * The system expects "Exo 2" to be available. Load it via your app's
18
+ * font strategy (e.g. next/font/google) in your root layout.
19
+ */
20
+ // ── Primitives — forms ─────────────────────────────────────────────────
21
+ export { Button, buttonVariants } from "./components/button.js";
22
+ export { Input } from "./components/input.js";
23
+ export { Label } from "./components/label.js";
24
+ export { Textarea } from "./components/textarea.js";
25
+ export { Checkbox } from "./components/checkbox.js";
26
+ export { RadioGroup, RadioGroupItem } from "./components/radio-group.js";
27
+ export { Switch } from "./components/switch.js";
28
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, } from "./components/select.js";
29
+ export { NumberInput } from "./components/number-input.js";
30
+ export { FormField } from "./components/form-field.js";
31
+ export { Slider } from "./components/slider.js";
32
+ export { Combobox, } from "./components/combobox.js";
33
+ export { Calendar } from "./components/calendar.js";
34
+ export { DatePicker } from "./components/date-picker.js";
35
+ // ── Primitives — display ───────────────────────────────────────────────
36
+ export { Badge, badgeVariants } from "./components/badge.js";
37
+ export { Chip, chipVariants } from "./components/chip.js";
38
+ export { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, } from "./components/card.js";
39
+ export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, } from "./components/table.js";
40
+ export { Avatar } from "./components/avatar.js";
41
+ export { AvatarGroup } from "./components/avatar-group.js";
42
+ export { Separator } from "./components/separator.js";
43
+ export { Spec, SpecList, } from "./components/spec.js";
44
+ export { Pagination } from "./components/pagination.js";
45
+ // ── Primitives — feedback ──────────────────────────────────────────────
46
+ export { Alert, alertVariants } from "./components/alert.js";
47
+ export { Toaster, toast } from "./components/toaster.js";
48
+ export { Skeleton, SkeletonList, SkeletonTable } from "./components/skeleton.js";
49
+ export { Spinner } from "./components/spinner.js";
50
+ export { Progress } from "./components/progress.js";
51
+ // ── Overlays ───────────────────────────────────────────────────────────
52
+ export { Dialog, DialogTrigger, DialogPortal, DialogClose, DialogOverlay, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter, } from "./components/dialog.js";
53
+ export { Drawer, DrawerTrigger, DrawerClose, DrawerPortal, DrawerOverlay, drawerVariants, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription, DrawerBody, DrawerFooter, } from "./components/drawer.js";
54
+ export { Popover, PopoverTrigger, PopoverAnchor, PopoverContent, } from "./components/popover.js";
55
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuRadioGroup, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSubTrigger, DropdownMenuSubContent, } from "./components/dropdown-menu.js";
56
+ export { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, } from "./components/tooltip.js";
57
+ // ── Disclosure / navigation ─────────────────────────────────────────────
58
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from "./components/accordion.js";
59
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent, } from "./components/collapsible.js";
60
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from "./components/tabs.js";
61
+ export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, } from "./components/breadcrumb.js";
62
+ // ── Layout / shell ─────────────────────────────────────────────────────
63
+ export { AppShell, AppMain } from "./components/app-shell.js";
64
+ export { Sidebar, SidebarHeader, SidebarBody, SidebarFooter, SidebarSection, SidebarItem, } from "./components/sidebar.js";
65
+ export { TopBar } from "./components/top-bar.js";
66
+ export { Container } from "./components/container.js";
67
+ export { Stack } from "./components/stack.js";
68
+ export { AspectRatio } from "./components/aspect-ratio.js";
69
+ export { ScrollArea, ScrollBar } from "./components/scroll-area.js";
70
+ // ── Brand-specific primitives ──────────────────────────────────────────
71
+ export { LivePill } from "./components/live-pill.js";
72
+ export { StatusPill } from "./components/status-pill.js";
73
+ export { MetricTile } from "./components/metric-tile.js";
74
+ export { CapacityBar } from "./components/capacity-bar.js";
75
+ export { EmptyState } from "./components/empty-state.js";
76
+ // ── UX patterns (codified principles) ──────────────────────────────────
77
+ export { Timestamp } from "./components/timestamp.js";
78
+ export { MoneyBreakdown, } from "./components/money-breakdown.js";
79
+ export { ThreeState, } from "./components/three-state.js";
80
+ export { ConfirmAction, } from "./components/confirm-action.js";
81
+ // ── Theming ────────────────────────────────────────────────────────────
82
+ export { ThemeProvider, useTheme } from "./components/theme-provider.js";
83
+ export { ThemeToggle } from "./components/theme-toggle.js";
84
+ // ── Utilities ──────────────────────────────────────────────────────────
85
+ export { cn } from "./lib/utils.js";
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ClassValue } from "clsx";
2
+ /**
3
+ * Merge Tailwind classes with proper conflict resolution.
4
+ * Use this everywhere component variants need to be composable.
5
+ */
6
+ export declare function cn(...inputs: ClassValue[]): string;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C;;;GAGG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,10 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ /**
4
+ * Merge Tailwind classes with proper conflict resolution.
5
+ * Use this everywhere component variants need to be composable.
6
+ */
7
+ export function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Footer — marketing footer: link columns + a bottom bar for legal and
4
+ * social. Server-safe.
5
+ *
6
+ * <Footer
7
+ * brand={<Logo />}
8
+ * columns={[
9
+ * { title: "Product", links: [{ label: "Games", href: "/games" }] },
10
+ * { title: "Company", links: [{ label: "About", href: "/about" }] },
11
+ * ]}
12
+ * legal="© 2026 DT Sports"
13
+ * social={<SocialIcons />}
14
+ * />
15
+ */
16
+ export interface FooterColumn {
17
+ title: string;
18
+ links: {
19
+ label: string;
20
+ href: string;
21
+ }[];
22
+ }
23
+ export interface FooterProps extends React.HTMLAttributes<HTMLElement> {
24
+ brand?: React.ReactNode;
25
+ tagline?: React.ReactNode;
26
+ columns?: FooterColumn[];
27
+ legal?: React.ReactNode;
28
+ social?: React.ReactNode;
29
+ }
30
+ export declare function Footer({ brand, tagline, columns, legal, social, className, ...props }: FooterProps): import("react/jsx-runtime").JSX.Element;
31
+ //# sourceMappingURL=footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/marketing/footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAOD,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,OAAO,EACP,OAAY,EACZ,KAAK,EACL,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,WAAW,2CAiDb"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils.js";
3
+ const footerLinkClass = cn("text-sm text-text-muted hover:text-foreground transition-colors rounded-sm", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring");
4
+ export function Footer({ brand, tagline, columns = [], legal, social, className, ...props }) {
5
+ return (_jsx("footer", { className: cn("border-t border-border bg-bg-subtle", className), ...props, children: _jsxs("div", { className: "mx-auto max-w-6xl px-6 lg:px-8 py-16", children: [_jsxs("div", { className: "grid gap-10 md:grid-cols-[1.5fr_repeat(var(--footer-cols,3),1fr)]", style: {
6
+ "--footer-cols": Math.max(columns.length, 1),
7
+ }, children: [(brand || tagline) && (_jsxs("div", { className: "space-y-3", children: [brand, tagline && (_jsx("p", { className: "text-sm text-text-muted max-w-xs", children: tagline }))] })), columns.map((col) => (_jsxs("nav", { "aria-label": col.title, children: [_jsx("h3", { className: "mb-3 text-xs font-semibold uppercase tracking-[0.06em] text-text-subtle", children: col.title }), _jsx("ul", { className: "space-y-2", children: col.links.map((l) => (_jsx("li", { children: _jsx("a", { href: l.href, className: footerLinkClass, children: l.label }) }, l.href))) })] }, col.title)))] }), (legal || social) && (_jsxs("div", { className: "mt-12 flex flex-wrap items-center justify-between gap-4 border-t border-border pt-6", children: [_jsx("p", { className: "text-xs text-text-muted", children: legal }), social && _jsx("div", { className: "flex items-center gap-3", children: social })] }))] }) }));
8
+ }
9
+ //# sourceMappingURL=footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../src/marketing/footer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AA6BlC,MAAM,eAAe,GAAG,EAAE,CACxB,4EAA4E,EAC5E,yEAAyE,CAC1E,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EACrB,KAAK,EACL,OAAO,EACP,OAAO,GAAG,EAAE,EACZ,KAAK,EACL,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACI;IACZ,OAAO,CACL,iBACE,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,SAAS,CAAC,KAC3D,KAAK,YAET,eAAK,SAAS,EAAC,sCAAsC,aACnD,eACE,SAAS,EAAC,mEAAmE,EAC7E,KAAK,EACH;wBACE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;qBACtB,aAGzB,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CACrB,eAAK,SAAS,EAAC,WAAW,aACvB,KAAK,EACL,OAAO,IAAI,CACV,YAAG,SAAS,EAAC,kCAAkC,YAAE,OAAO,GAAK,CAC9D,IACG,CACP,EACA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,6BAAiC,GAAG,CAAC,KAAK,aACxC,aAAI,SAAS,EAAC,yEAAyE,YACpF,GAAG,CAAC,KAAK,GACP,EACL,aAAI,SAAS,EAAC,WAAW,YACtB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,uBACE,YAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,YACxC,CAAC,CAAC,KAAK,GACN,IAHG,CAAC,CAAC,IAAI,CAIV,CACN,CAAC,GACC,KAZG,GAAG,CAAC,KAAK,CAab,CACP,CAAC,IACE,EACL,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CACpB,eAAK,SAAS,EAAC,qFAAqF,aAClG,YAAG,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAK,EACjD,MAAM,IAAI,cAAK,SAAS,EAAC,yBAAyB,YAAE,MAAM,GAAO,IAC9D,CACP,IACG,GACC,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Hero — the opening section of a marketing page. Fluid display type,
4
+ * generous spacing, one lime CTA (§2.4 still applies on marketing pages).
5
+ *
6
+ * <Hero
7
+ * eyebrow="Pickup soccer, organized"
8
+ * title="Book a game in 30 seconds"
9
+ * description="Real fields, fair teams, instant refunds."
10
+ * actions={
11
+ * <>
12
+ * <Button variant="accent" size="touch">Find a game</Button>
13
+ * <Button variant="secondary" size="touch">Host with us</Button>
14
+ * </>
15
+ * }
16
+ * />
17
+ */
18
+ export interface HeroProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
19
+ eyebrow?: React.ReactNode;
20
+ title: React.ReactNode;
21
+ description?: React.ReactNode;
22
+ /** CTA row — keep to one accent button (§2.4). */
23
+ actions?: React.ReactNode;
24
+ /** Optional media (screenshot, illustration) below/beside the copy. */
25
+ media?: React.ReactNode;
26
+ align?: "center" | "start";
27
+ }
28
+ export declare function Hero({ eyebrow, title, description, actions, media, align, className, ...props }: HeroProps): import("react/jsx-runtime").JSX.Element;
29
+ //# sourceMappingURL=hero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero.d.ts","sourceRoot":"","sources":["../../src/marketing/hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EACjC,OAAO,CACR;IACC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,kDAAkD;IAClD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,uEAAuE;IACvE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC5B;AAED,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,KAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,SAAS,2CAiDX"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils.js";
3
+ export function Hero({ eyebrow, title, description, actions, media, align = "center", className, ...props }) {
4
+ const centered = align === "center";
5
+ return (_jsx("section", { className: cn("relative overflow-hidden bg-gradient-forest-fade", "px-6 lg:px-8 py-20 md:py-24 lg:py-32", className), ...props, children: _jsxs("div", { className: cn("mx-auto max-w-5xl", centered && "text-center flex flex-col items-center"), children: [eyebrow && (_jsx("p", { className: "mb-4 text-sm font-semibold uppercase tracking-[0.08em] text-brand-forest", children: eyebrow })), _jsx("h1", { className: "text-display font-bold text-foreground max-w-3xl text-balance", children: title }), description && (_jsx("p", { className: cn("mt-5 text-lg text-text-muted max-w-2xl", centered && "mx-auto"), children: description })), actions && (_jsx("div", { className: cn("mt-8 flex flex-wrap gap-3", centered && "justify-center"), children: actions })), media && _jsx("div", { className: "mt-16 w-full", children: media })] }) }));
6
+ }
7
+ //# sourceMappingURL=hero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hero.js","sourceRoot":"","sources":["../../src/marketing/hero.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAgClC,MAAM,UAAU,IAAI,CAAC,EACnB,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,KAAK,GAAG,QAAQ,EAChB,SAAS,EACT,GAAG,KAAK,EACE;IACV,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,CAAC;IACpC,OAAO,CACL,kBACE,SAAS,EAAE,EAAE,CACX,kDAAkD,EAClD,sCAAsC,EACtC,SAAS,CACV,KACG,KAAK,YAET,eACE,SAAS,EAAE,EAAE,CACX,mBAAmB,EACnB,QAAQ,IAAI,wCAAwC,CACrD,aAEA,OAAO,IAAI,CACV,YAAG,SAAS,EAAC,0EAA0E,YACpF,OAAO,GACN,CACL,EACD,aAAI,SAAS,EAAC,+DAA+D,YAC1E,KAAK,GACH,EACJ,WAAW,IAAI,CACd,YACE,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,QAAQ,IAAI,SAAS,CACtB,YAEA,WAAW,GACV,CACL,EACA,OAAO,IAAI,CACV,cACE,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,QAAQ,IAAI,gBAAgB,CAC7B,YAEA,OAAO,GACJ,CACP,EACA,KAAK,IAAI,cAAK,SAAS,EAAC,cAAc,YAAE,KAAK,GAAO,IACjD,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @dtsports/design-system/marketing — the marketing tier.
3
+ *
4
+ * Primitives for the marketing website: fluid display typography
5
+ * (text-display-sm/display/display-lg), extended spacing (py-20…40),
6
+ * and page-level building blocks. Everything consumes the same token
7
+ * source as the app tier, so the brand can't fork.
8
+ *
9
+ * All components are server-safe except MarketingNav (mobile menu state).
10
+ *
11
+ * import {
12
+ * MarketingNav, Hero, Section, Footer, LogoCloud, Prose,
13
+ * } from "@dtsports/design-system/marketing";
14
+ */
15
+ export { Hero, type HeroProps } from "./hero.js";
16
+ export { Section, type SectionProps } from "./section.js";
17
+ export { MarketingNav, type MarketingNavLink, type MarketingNavProps, } from "./nav.js";
18
+ export { Footer, type FooterColumn, type FooterProps } from "./footer.js";
19
+ export { LogoCloud, type LogoCloudProps } from "./logo-cloud.js";
20
+ export { Prose, type ProseProps } from "./prose.js";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/marketing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @dtsports/design-system/marketing — the marketing tier.
3
+ *
4
+ * Primitives for the marketing website: fluid display typography
5
+ * (text-display-sm/display/display-lg), extended spacing (py-20…40),
6
+ * and page-level building blocks. Everything consumes the same token
7
+ * source as the app tier, so the brand can't fork.
8
+ *
9
+ * All components are server-safe except MarketingNav (mobile menu state).
10
+ *
11
+ * import {
12
+ * MarketingNav, Hero, Section, Footer, LogoCloud, Prose,
13
+ * } from "@dtsports/design-system/marketing";
14
+ */
15
+ export { Hero } from "./hero.js";
16
+ export { Section } from "./section.js";
17
+ export { MarketingNav, } from "./nav.js";
18
+ export { Footer } from "./footer.js";
19
+ export { LogoCloud } from "./logo-cloud.js";
20
+ export { Prose } from "./prose.js";
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/marketing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,IAAI,EAAkB,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,YAAY,GAGb,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAuC,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAmB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ /**
3
+ * LogoCloud — "trusted by" strip. Children are the logos (imgs or SVGs);
4
+ * give each an accessible name (alt text or aria-label).
5
+ *
6
+ * <LogoCloud label="Trusted by leagues across NYC">
7
+ * <img src="/logos/x.svg" alt="X League" className="h-6" />
8
+ * …
9
+ * </LogoCloud>
10
+ */
11
+ export interface LogoCloudProps extends React.HTMLAttributes<HTMLDivElement> {
12
+ label?: React.ReactNode;
13
+ }
14
+ export declare function LogoCloud({ label, className, children, ...props }: LogoCloudProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=logo-cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo-cloud.d.ts","sourceRoot":"","sources":["../../src/marketing/logo-cloud.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,2CAahB"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils.js";
3
+ export function LogoCloud({ label, className, children, ...props }) {
4
+ return (_jsxs("div", { className: cn("py-10 text-center", className), ...props, children: [label && (_jsx("p", { className: "mb-6 text-xs font-semibold uppercase tracking-[0.08em] text-text-subtle", children: label })), _jsx("div", { className: "flex flex-wrap items-center justify-center gap-x-10 gap-y-6 opacity-70 grayscale", children: children })] }));
5
+ }
6
+ //# sourceMappingURL=logo-cloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo-cloud.js","sourceRoot":"","sources":["../../src/marketing/logo-cloud.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAelC,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACO;IACf,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,KAAM,KAAK,aAC1D,KAAK,IAAI,CACR,YAAG,SAAS,EAAC,yEAAyE,YACnF,KAAK,GACJ,CACL,EACD,cAAK,SAAS,EAAC,kFAAkF,YAC9F,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import * as React from "react";
2
+ /**
3
+ * MarketingNav — sticky marketing header: brand left, links center,
4
+ * CTA right, hamburger disclosure on mobile (44px targets, aria-expanded
5
+ * wired). Non-modal on purpose — the page stays scrollable behind it.
6
+ *
7
+ * <MarketingNav
8
+ * brand={<a href="/" aria-label="DT Sports home"><Logo /></a>}
9
+ * links={[
10
+ * { label: "Games", href: "/games" },
11
+ * { label: "Venues", href: "/venues" },
12
+ * { label: "Pricing", href: "/pricing" },
13
+ * ]}
14
+ * cta={<Button variant="accent">Find a game</Button>}
15
+ * />
16
+ *
17
+ * Render links as your router's component via `renderLink` when needed
18
+ * (defaults to a plain <a>).
19
+ */
20
+ export interface MarketingNavLink {
21
+ label: string;
22
+ href: string;
23
+ }
24
+ export interface MarketingNavProps extends React.HTMLAttributes<HTMLElement> {
25
+ brand: React.ReactNode;
26
+ links: MarketingNavLink[];
27
+ /** Right-hand CTA (keep to one accent action). */
28
+ cta?: React.ReactNode;
29
+ /** Custom link renderer, e.g. Next.js Link. */
30
+ renderLink?: (link: MarketingNavLink, className: string) => React.ReactNode;
31
+ }
32
+ export declare function MarketingNav({ brand, links, cta, renderLink, className, ...props }: MarketingNavProps): import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../src/marketing/nav.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAC1E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC7E;AAaD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,GAAG,EACH,UAAU,EACV,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAiEnB"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Menu, X } from "lucide-react";
5
+ import { cn } from "../lib/utils.js";
6
+ const desktopLinkClass = cn("text-sm font-medium text-text-muted hover:text-foreground transition-colors rounded-sm px-1", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring");
7
+ const mobileLinkClass = cn("flex items-center min-h-11 px-2 text-md font-medium text-foreground rounded-sm", "hover:bg-bg-subtle transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring");
8
+ export function MarketingNav({ brand, links, cta, renderLink, className, ...props }) {
9
+ const [open, setOpen] = React.useState(false);
10
+ const panelId = React.useId();
11
+ const link = (l, cls) => renderLink ? (_jsx(React.Fragment, { children: renderLink(l, cls) }, l.href)) : (_jsx("a", { href: l.href, className: cls, children: l.label }, l.href));
12
+ return (_jsxs("header", { className: cn("sticky top-0 z-sticky border-b border-border bg-background/90 backdrop-blur", className), ...props, children: [_jsxs("nav", { "aria-label": "Main", className: "mx-auto flex h-14 max-w-6xl items-center justify-between gap-6 px-6 lg:px-8", children: [_jsxs("div", { className: "flex items-center gap-8", children: [brand, _jsx("div", { className: "hidden md:flex items-center gap-6", children: links.map((l) => link(l, desktopLinkClass)) })] }), _jsxs("div", { className: "flex items-center gap-3", children: [cta && _jsx("div", { className: "hidden md:block", children: cta }), _jsx("button", { type: "button", "aria-expanded": open, "aria-controls": panelId, "aria-label": open ? "Close menu" : "Open menu", onClick: () => setOpen((v) => !v), className: cn("md:hidden inline-flex h-11 w-11 items-center justify-center rounded-sm text-foreground", "hover:bg-bg-subtle transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"), children: open ? (_jsx(X, { className: "h-5 w-5", strokeWidth: 1.75, "aria-hidden": "true" })) : (_jsx(Menu, { className: "h-5 w-5", strokeWidth: 1.75, "aria-hidden": "true" })) })] })] }), _jsxs("div", { id: panelId, hidden: !open, className: "md:hidden border-t border-border bg-background px-4 py-3", children: [_jsx("div", { className: "flex flex-col gap-1", children: links.map((l) => link(l, mobileLinkClass)) }), cta && _jsx("div", { className: "mt-3 border-t border-border pt-3", children: cta })] })] }));
13
+ }
14
+ //# sourceMappingURL=nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.js","sourceRoot":"","sources":["../../src/marketing/nav.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAkClC,MAAM,gBAAgB,GAAG,EAAE,CACzB,6FAA6F,EAC7F,yEAAyE,CAC1E,CAAC;AAEF,MAAM,eAAe,GAAG,EAAE,CACxB,gFAAgF,EAChF,sCAAsC,EACtC,yEAAyE,CAC1E,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,GAAG,EACH,UAAU,EACV,SAAS,EACT,GAAG,KAAK,EACU;IAClB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAE9B,MAAM,IAAI,GAAG,CAAC,CAAmB,EAAE,GAAW,EAAE,EAAE,CAChD,UAAU,CAAC,CAAC,CAAC,CACX,KAAC,KAAK,CAAC,QAAQ,cAAe,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,IAA3B,CAAC,CAAC,IAAI,CAAuC,CACnE,CAAC,CAAC,CAAC,CACF,YAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,YACzC,CAAC,CAAC,KAAK,IADF,CAAC,CAAC,IAAI,CAEV,CACL,CAAC;IAEJ,OAAO,CACL,kBACE,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,SAAS,CACV,KACG,KAAK,aAET,6BACa,MAAM,EACjB,SAAS,EAAC,6EAA6E,aAEvF,eAAK,SAAS,EAAC,yBAAyB,aACrC,KAAK,EACN,cAAK,SAAS,EAAC,mCAAmC,YAC/C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,GACxC,IACF,EACN,eAAK,SAAS,EAAC,yBAAyB,aACrC,GAAG,IAAI,cAAK,SAAS,EAAC,iBAAiB,YAAE,GAAG,GAAO,EACpD,iBACE,IAAI,EAAC,QAAQ,mBACE,IAAI,mBACJ,OAAO,gBACV,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACjC,SAAS,EAAE,EAAE,CACX,wFAAwF,EACxF,sCAAsC,EACtC,yEAAyE,CAC1E,YAEA,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,IAAI,iBAAc,MAAM,GAAG,CAChE,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,IAAI,iBAAc,MAAM,GAAG,CACnE,GACM,IACL,IACF,EACN,eACE,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,CAAC,IAAI,EACb,SAAS,EAAC,0DAA0D,aAEpE,cAAK,SAAS,EAAC,qBAAqB,YACjC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GACvC,EACL,GAAG,IAAI,cAAK,SAAS,EAAC,kCAAkC,YAAE,GAAG,GAAO,IACjE,IACC,CACV,CAAC;AACJ,CAAC"}