@ucptools/validator 1.0.0 → 1.1.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 (330) hide show
  1. package/dist/auth/config.d.ts +20 -0
  2. package/dist/auth/config.d.ts.map +1 -0
  3. package/dist/auth/config.js +114 -0
  4. package/dist/auth/config.js.map +1 -0
  5. package/dist/auth/index.d.ts +5 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/index.js +17 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/auth/middleware.d.ts +45 -0
  10. package/dist/auth/middleware.d.ts.map +1 -0
  11. package/dist/auth/middleware.js +170 -0
  12. package/dist/auth/middleware.js.map +1 -0
  13. package/dist/auth/service.d.ts +80 -0
  14. package/dist/auth/service.d.ts.map +1 -0
  15. package/dist/auth/service.js +298 -0
  16. package/dist/auth/service.js.map +1 -0
  17. package/dist/cli/index.d.ts +6 -0
  18. package/dist/cli/index.d.ts.map +1 -0
  19. package/dist/cli/index.js +375 -0
  20. package/dist/cli/index.js.map +1 -0
  21. package/dist/cli/mock-server.d.ts +20 -0
  22. package/dist/cli/mock-server.d.ts.map +1 -0
  23. package/dist/cli/mock-server.js +261 -0
  24. package/dist/cli/mock-server.js.map +1 -0
  25. package/dist/compliance/compliance-generator.d.ts +34 -0
  26. package/dist/compliance/compliance-generator.d.ts.map +1 -0
  27. package/dist/compliance/compliance-generator.js +320 -0
  28. package/dist/compliance/compliance-generator.js.map +1 -0
  29. package/dist/compliance/index.d.ts +8 -0
  30. package/dist/compliance/index.d.ts.map +1 -0
  31. package/dist/compliance/index.js +17 -0
  32. package/dist/compliance/index.js.map +1 -0
  33. package/dist/compliance/templates.d.ts +34 -0
  34. package/dist/compliance/templates.d.ts.map +1 -0
  35. package/{src/compliance/templates.ts → dist/compliance/templates.js} +117 -155
  36. package/dist/compliance/templates.js.map +1 -0
  37. package/dist/compliance/types.d.ts +64 -0
  38. package/dist/compliance/types.d.ts.map +1 -0
  39. package/dist/compliance/types.js +64 -0
  40. package/dist/compliance/types.js.map +1 -0
  41. package/dist/db/index.d.ts +17 -0
  42. package/dist/db/index.d.ts.map +1 -0
  43. package/dist/db/index.js +80 -0
  44. package/dist/db/index.js.map +1 -0
  45. package/dist/db/schema.d.ts +3886 -0
  46. package/dist/db/schema.d.ts.map +1 -0
  47. package/dist/db/schema.js +425 -0
  48. package/dist/db/schema.js.map +1 -0
  49. package/dist/db/utils.d.ts +252 -0
  50. package/dist/db/utils.d.ts.map +1 -0
  51. package/dist/db/utils.js +295 -0
  52. package/dist/db/utils.js.map +1 -0
  53. package/dist/feed-analyzer/feed-analyzer.d.ts +26 -0
  54. package/dist/feed-analyzer/feed-analyzer.d.ts.map +1 -0
  55. package/{src/feed-analyzer/feed-analyzer.ts → dist/feed-analyzer/feed-analyzer.js} +856 -726
  56. package/dist/feed-analyzer/feed-analyzer.js.map +1 -0
  57. package/dist/feed-analyzer/index.d.ts +8 -0
  58. package/dist/feed-analyzer/index.d.ts.map +1 -0
  59. package/dist/feed-analyzer/index.js +19 -0
  60. package/dist/feed-analyzer/index.js.map +1 -0
  61. package/dist/feed-analyzer/types.d.ts +285 -0
  62. package/dist/feed-analyzer/types.d.ts.map +1 -0
  63. package/dist/feed-analyzer/types.js +175 -0
  64. package/dist/feed-analyzer/types.js.map +1 -0
  65. package/{src/generator/index.ts → dist/generator/index.d.ts} +1 -1
  66. package/dist/generator/index.d.ts.map +1 -0
  67. package/dist/generator/index.js +13 -0
  68. package/dist/generator/index.js.map +1 -0
  69. package/dist/generator/key-generator.d.ts +24 -0
  70. package/dist/generator/key-generator.d.ts.map +1 -0
  71. package/dist/generator/key-generator.js +144 -0
  72. package/dist/generator/key-generator.js.map +1 -0
  73. package/dist/generator/profile-builder.d.ts +15 -0
  74. package/dist/generator/profile-builder.d.ts.map +1 -0
  75. package/dist/generator/profile-builder.js +338 -0
  76. package/dist/generator/profile-builder.js.map +1 -0
  77. package/dist/hosting/artifacts-generator.d.ts +10 -0
  78. package/dist/hosting/artifacts-generator.d.ts.map +1 -0
  79. package/{src/hosting/artifacts-generator.ts → dist/hosting/artifacts-generator.js} +191 -241
  80. package/dist/hosting/artifacts-generator.js.map +1 -0
  81. package/{src/hosting/index.ts → dist/hosting/index.d.ts} +1 -1
  82. package/dist/hosting/index.d.ts.map +1 -0
  83. package/dist/hosting/index.js +10 -0
  84. package/dist/hosting/index.js.map +1 -0
  85. package/dist/index.d.ts +18 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +78 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/lib/analytics.d.ts +337 -0
  90. package/dist/lib/analytics.d.ts.map +1 -0
  91. package/dist/lib/analytics.js +188 -0
  92. package/dist/lib/analytics.js.map +1 -0
  93. package/{src/security/index.ts → dist/security/index.d.ts} +8 -15
  94. package/dist/security/index.d.ts.map +1 -0
  95. package/dist/security/index.js +12 -0
  96. package/dist/security/index.js.map +1 -0
  97. package/dist/security/security-scanner.d.ts +10 -0
  98. package/dist/security/security-scanner.d.ts.map +1 -0
  99. package/dist/security/security-scanner.js +669 -0
  100. package/dist/security/security-scanner.js.map +1 -0
  101. package/dist/security/types.d.ts +80 -0
  102. package/dist/security/types.d.ts.map +1 -0
  103. package/dist/security/types.js +21 -0
  104. package/dist/security/types.js.map +1 -0
  105. package/dist/services/analytics.d.ts +114 -0
  106. package/dist/services/analytics.d.ts.map +1 -0
  107. package/dist/services/analytics.js +862 -0
  108. package/dist/services/analytics.js.map +1 -0
  109. package/dist/services/badge.d.ts +31 -0
  110. package/dist/services/badge.d.ts.map +1 -0
  111. package/dist/services/badge.js +152 -0
  112. package/dist/services/badge.js.map +1 -0
  113. package/dist/services/cron.d.ts +125 -0
  114. package/dist/services/cron.d.ts.map +1 -0
  115. package/dist/services/cron.js +613 -0
  116. package/dist/services/cron.js.map +1 -0
  117. package/dist/services/directory.d.ts +106 -0
  118. package/dist/services/directory.d.ts.map +1 -0
  119. package/dist/services/directory.js +351 -0
  120. package/dist/services/directory.js.map +1 -0
  121. package/dist/services/email.d.ts +112 -0
  122. package/dist/services/email.d.ts.map +1 -0
  123. package/dist/services/email.js +772 -0
  124. package/dist/services/email.js.map +1 -0
  125. package/dist/services/hosted-profiles.d.ts +77 -0
  126. package/dist/services/hosted-profiles.d.ts.map +1 -0
  127. package/dist/services/hosted-profiles.js +433 -0
  128. package/dist/services/hosted-profiles.js.map +1 -0
  129. package/dist/services/latency.d.ts +67 -0
  130. package/dist/services/latency.d.ts.map +1 -0
  131. package/dist/services/latency.js +274 -0
  132. package/dist/services/latency.js.map +1 -0
  133. package/dist/services/manifest-compliance.d.ts +64 -0
  134. package/dist/services/manifest-compliance.d.ts.map +1 -0
  135. package/dist/services/manifest-compliance.js +271 -0
  136. package/dist/services/manifest-compliance.js.map +1 -0
  137. package/dist/services/monitoring-diff.d.ts +31 -0
  138. package/dist/services/monitoring-diff.d.ts.map +1 -0
  139. package/dist/services/monitoring-diff.js +189 -0
  140. package/dist/services/monitoring-diff.js.map +1 -0
  141. package/dist/services/notifications.d.ts +46 -0
  142. package/dist/services/notifications.d.ts.map +1 -0
  143. package/dist/services/notifications.js +88 -0
  144. package/dist/services/notifications.js.map +1 -0
  145. package/dist/services/stripe.d.ts +93 -0
  146. package/dist/services/stripe.d.ts.map +1 -0
  147. package/dist/services/stripe.js +490 -0
  148. package/dist/services/stripe.js.map +1 -0
  149. package/dist/services/validation-history.d.ts +99 -0
  150. package/dist/services/validation-history.d.ts.map +1 -0
  151. package/dist/services/validation-history.js +344 -0
  152. package/dist/services/validation-history.js.map +1 -0
  153. package/dist/services/validation-logging.d.ts +103 -0
  154. package/dist/services/validation-logging.d.ts.map +1 -0
  155. package/dist/services/validation-logging.js +210 -0
  156. package/dist/services/validation-logging.js.map +1 -0
  157. package/dist/services/validation.d.ts +119 -0
  158. package/dist/services/validation.d.ts.map +1 -0
  159. package/dist/services/validation.js +1185 -0
  160. package/dist/services/validation.js.map +1 -0
  161. package/dist/simulator/agent-simulator.d.ts +69 -0
  162. package/dist/simulator/agent-simulator.d.ts.map +1 -0
  163. package/dist/simulator/agent-simulator.js +870 -0
  164. package/dist/simulator/agent-simulator.js.map +1 -0
  165. package/{src/simulator/index.ts → dist/simulator/index.d.ts} +7 -7
  166. package/dist/simulator/index.d.ts.map +1 -0
  167. package/dist/simulator/index.js +23 -0
  168. package/dist/simulator/index.js.map +1 -0
  169. package/{src/simulator/types.ts → dist/simulator/types.d.ts} +171 -170
  170. package/dist/simulator/types.d.ts.map +1 -0
  171. package/dist/simulator/types.js +18 -0
  172. package/dist/simulator/types.js.map +1 -0
  173. package/dist/types/acp-validation.d.ts +87 -0
  174. package/dist/types/acp-validation.d.ts.map +1 -0
  175. package/dist/types/acp-validation.js +40 -0
  176. package/dist/types/acp-validation.js.map +1 -0
  177. package/dist/types/analytics.d.ts +182 -0
  178. package/dist/types/analytics.d.ts.map +1 -0
  179. package/dist/types/analytics.js +7 -0
  180. package/dist/types/analytics.js.map +1 -0
  181. package/dist/types/generator.d.ts +106 -0
  182. package/dist/types/generator.d.ts.map +1 -0
  183. package/dist/types/generator.js +6 -0
  184. package/dist/types/generator.js.map +1 -0
  185. package/{src/types/index.ts → dist/types/index.d.ts} +1 -1
  186. package/dist/types/index.d.ts.map +1 -0
  187. package/dist/types/index.js +23 -0
  188. package/dist/types/index.js.map +1 -0
  189. package/dist/types/ucp-profile.d.ts +111 -0
  190. package/dist/types/ucp-profile.d.ts.map +1 -0
  191. package/dist/types/ucp-profile.js +45 -0
  192. package/dist/types/ucp-profile.js.map +1 -0
  193. package/dist/types/validation.d.ts +76 -0
  194. package/dist/types/validation.d.ts.map +1 -0
  195. package/dist/types/validation.js +42 -0
  196. package/dist/types/validation.js.map +1 -0
  197. package/dist/validator/acp/index.d.ts +31 -0
  198. package/dist/validator/acp/index.d.ts.map +1 -0
  199. package/dist/validator/acp/index.js +574 -0
  200. package/dist/validator/acp/index.js.map +1 -0
  201. package/dist/validator/index.d.ts +26 -0
  202. package/dist/validator/index.d.ts.map +1 -0
  203. package/dist/validator/index.js +161 -0
  204. package/dist/validator/index.js.map +1 -0
  205. package/dist/validator/network-validator.d.ts +28 -0
  206. package/dist/validator/network-validator.d.ts.map +1 -0
  207. package/dist/validator/network-validator.js +319 -0
  208. package/dist/validator/network-validator.js.map +1 -0
  209. package/dist/validator/rules-validator.d.ts +19 -0
  210. package/dist/validator/rules-validator.d.ts.map +1 -0
  211. package/dist/validator/rules-validator.js +306 -0
  212. package/dist/validator/rules-validator.js.map +1 -0
  213. package/dist/validator/sdk-validator.d.ts +58 -0
  214. package/dist/validator/sdk-validator.d.ts.map +1 -0
  215. package/{src/validator/sdk-validator.ts → dist/validator/sdk-validator.js} +273 -330
  216. package/dist/validator/sdk-validator.js.map +1 -0
  217. package/dist/validator/structural-validator.d.ts +11 -0
  218. package/dist/validator/structural-validator.d.ts.map +1 -0
  219. package/dist/validator/structural-validator.js +549 -0
  220. package/dist/validator/structural-validator.js.map +1 -0
  221. package/dist/validator/utils.d.ts +51 -0
  222. package/dist/validator/utils.d.ts.map +1 -0
  223. package/dist/validator/utils.js +132 -0
  224. package/dist/validator/utils.js.map +1 -0
  225. package/package.json +44 -12
  226. package/CLAUDE.md +0 -109
  227. package/api/analyze-feed.js +0 -140
  228. package/api/badge.js +0 -185
  229. package/api/benchmark.js +0 -177
  230. package/api/directory-stats.ts +0 -29
  231. package/api/directory.ts +0 -73
  232. package/api/generate-compliance.js +0 -143
  233. package/api/generate-schema.js +0 -457
  234. package/api/generate.js +0 -132
  235. package/api/security-scan.js +0 -133
  236. package/api/simulate.js +0 -187
  237. package/api/tsconfig.json +0 -10
  238. package/api/validate.js +0 -1351
  239. package/apify-actor/.actor/actor.json +0 -68
  240. package/apify-actor/.actor/input_schema.json +0 -32
  241. package/apify-actor/APIFY-STORE-LISTING.md +0 -412
  242. package/apify-actor/Dockerfile +0 -8
  243. package/apify-actor/README.md +0 -166
  244. package/apify-actor/main.ts +0 -111
  245. package/apify-actor/package.json +0 -17
  246. package/apify-actor/src/main.js +0 -199
  247. package/docs/BRAND-IDENTITY.md +0 -238
  248. package/docs/BRAND-STYLE-GUIDE.md +0 -356
  249. package/drizzle/0000_black_king_cobra.sql +0 -39
  250. package/drizzle/meta/0000_snapshot.json +0 -309
  251. package/drizzle/meta/_journal.json +0 -13
  252. package/drizzle.config.ts +0 -10
  253. package/public/.well-known/ucp +0 -25
  254. package/public/android-chrome-192x192.png +0 -0
  255. package/public/android-chrome-512x512.png +0 -0
  256. package/public/apple-touch-icon.png +0 -0
  257. package/public/brand.css +0 -321
  258. package/public/directory.html +0 -701
  259. package/public/favicon-16x16.png +0 -0
  260. package/public/favicon-32x32.png +0 -0
  261. package/public/favicon.ico +0 -0
  262. package/public/guides/bigcommerce.html +0 -743
  263. package/public/guides/fastucp.html +0 -838
  264. package/public/guides/magento.html +0 -779
  265. package/public/guides/shopify.html +0 -726
  266. package/public/guides/squarespace.html +0 -749
  267. package/public/guides/wix.html +0 -747
  268. package/public/guides/woocommerce.html +0 -733
  269. package/public/index.html +0 -3835
  270. package/public/learn.html +0 -396
  271. package/public/logo.jpeg +0 -0
  272. package/public/og-image-icon.png +0 -0
  273. package/public/og-image.png +0 -0
  274. package/public/robots.txt +0 -6
  275. package/public/site.webmanifest +0 -31
  276. package/public/sitemap.xml +0 -69
  277. package/public/social/linkedin-banner-1128x191.png +0 -0
  278. package/public/social/temp.PNG +0 -0
  279. package/public/social/x-header-1500x500.png +0 -0
  280. package/public/verify.html +0 -410
  281. package/scripts/generate-favicons.js +0 -44
  282. package/scripts/generate-ico.js +0 -23
  283. package/scripts/generate-og-image.js +0 -45
  284. package/scripts/reset-db.ts +0 -77
  285. package/scripts/seed-db.ts +0 -71
  286. package/scripts/setup-benchmark-db.js +0 -70
  287. package/src/api/server.ts +0 -266
  288. package/src/cli/index.ts +0 -302
  289. package/src/compliance/compliance-generator.ts +0 -452
  290. package/src/compliance/index.ts +0 -28
  291. package/src/compliance/types.ts +0 -170
  292. package/src/db/index.ts +0 -28
  293. package/src/db/schema.ts +0 -84
  294. package/src/feed-analyzer/index.ts +0 -34
  295. package/src/feed-analyzer/types.ts +0 -354
  296. package/src/generator/key-generator.ts +0 -124
  297. package/src/generator/profile-builder.ts +0 -402
  298. package/src/index.ts +0 -105
  299. package/src/security/security-scanner.ts +0 -604
  300. package/src/security/types.ts +0 -55
  301. package/src/services/directory.ts +0 -434
  302. package/src/simulator/agent-simulator.ts +0 -941
  303. package/src/types/generator.ts +0 -140
  304. package/src/types/ucp-profile.ts +0 -140
  305. package/src/types/validation.ts +0 -89
  306. package/src/validator/index.ts +0 -194
  307. package/src/validator/network-validator.ts +0 -417
  308. package/src/validator/rules-validator.ts +0 -297
  309. package/src/validator/structural-validator.ts +0 -476
  310. package/tests/fixtures/non-compliant-profile.json +0 -25
  311. package/tests/fixtures/official-sample-profile.json +0 -75
  312. package/tests/integration/benchmark.test.ts +0 -207
  313. package/tests/integration/database.test.ts +0 -163
  314. package/tests/integration/directory-api.test.ts +0 -268
  315. package/tests/integration/simulate-api.test.ts +0 -230
  316. package/tests/integration/validate-api.test.ts +0 -269
  317. package/tests/setup.ts +0 -15
  318. package/tests/unit/agent-simulator.test.ts +0 -575
  319. package/tests/unit/compliance-generator.test.ts +0 -374
  320. package/tests/unit/directory-service.test.ts +0 -272
  321. package/tests/unit/feed-analyzer.test.ts +0 -517
  322. package/tests/unit/lint-suggestions.test.ts +0 -423
  323. package/tests/unit/official-samples.test.ts +0 -211
  324. package/tests/unit/pdf-report.test.ts +0 -390
  325. package/tests/unit/sdk-validator.test.ts +0 -531
  326. package/tests/unit/security-scanner.test.ts +0 -410
  327. package/tests/unit/validation.test.ts +0 -390
  328. package/tsconfig.json +0 -20
  329. package/vercel.json +0 -34
  330. package/vitest.config.ts +0 -22
@@ -1,356 +0,0 @@
1
- # UCP.tools Brand Style Guide
2
-
3
- Comprehensive brand guidelines based on the official logo.
4
-
5
- ---
6
-
7
- ## 1. LOGO
8
-
9
- ### Primary Logo
10
- - File: `public/logo.jpeg`
11
- - Usage: App icons, favicons, social media avatars
12
- - Concept: Shopping bag with checkmark = "validated commerce"
13
-
14
- ### Logo Variations
15
- | Variant | Use Case |
16
- |---------|----------|
17
- | Full color | Primary use, light backgrounds |
18
- | White | Dark backgrounds, overlays |
19
- | Monochrome | Print, low-color contexts |
20
-
21
- ### Clear Space
22
- Maintain padding equal to the height of the bag handle on all sides.
23
-
24
- ### Minimum Size
25
- - Digital: 32x32px minimum
26
- - Print: 0.5 inch minimum
27
-
28
- ---
29
-
30
- ## 2. COLOR PALETTE
31
-
32
- ### Primary Colors (from logo gradient)
33
-
34
- | Name | Hex | RGB | Usage |
35
- |------|-----|-----|-------|
36
- | **Blue** | `#2E86AB` | rgb(46, 134, 171) | Primary actions, links |
37
- | **Teal** | `#36B5A2` | rgb(54, 181, 162) | Gradient midpoint, accents |
38
- | **Green** | `#47C97A` | rgb(71, 201, 122) | Success states, validation |
39
-
40
- ### Brand Gradient
41
- ```css
42
- background: linear-gradient(135deg, #2E86AB 0%, #36B5A2 50%, #47C97A 100%);
43
- ```
44
-
45
- ### Secondary Colors
46
-
47
- | Name | Hex | Usage |
48
- |------|-----|-------|
49
- | **Dark** | `#1A2B3C` | Text, headings |
50
- | **Medium** | `#5A6978` | Secondary text |
51
- | **Light** | `#94A3B8` | Muted text, placeholders |
52
- | **Border** | `#E2E8F0` | Dividers, borders |
53
- | **Background** | `#F8FAFC` | Page background |
54
- | **Card** | `#FFFFFF` | Card backgrounds |
55
-
56
- ### Semantic Colors
57
-
58
- | Name | Hex | Usage |
59
- |------|-----|-------|
60
- | **Success** | `#47C97A` | Valid, success states |
61
- | **Warning** | `#F59E0B` | Warnings, caution |
62
- | **Error** | `#EF4444` | Errors, invalid states |
63
- | **Info** | `#2E86AB` | Information, tips |
64
-
65
- ### Grade Colors
66
-
67
- | Grade | Background | Text |
68
- |-------|------------|------|
69
- | A | `#DCFCE7` | `#16A34A` |
70
- | B | `#DBEAFE` | `#2563EB` |
71
- | C | `#FEF9C3` | `#CA8A04` |
72
- | D | `#FED7AA` | `#EA580C` |
73
- | F | `#FEE2E2` | `#DC2626` |
74
-
75
- ---
76
-
77
- ## 3. TYPOGRAPHY
78
-
79
- ### Font Stack
80
- ```css
81
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
82
- ```
83
-
84
- ### Type Scale
85
-
86
- | Element | Size | Weight | Line Height |
87
- |---------|------|--------|-------------|
88
- | H1 | 48px / 3rem | 700 | 1.2 |
89
- | H2 | 36px / 2.25rem | 700 | 1.25 |
90
- | H3 | 24px / 1.5rem | 600 | 1.3 |
91
- | H4 | 20px / 1.25rem | 600 | 1.4 |
92
- | Body | 16px / 1rem | 400 | 1.6 |
93
- | Small | 14px / 0.875rem | 400 | 1.5 |
94
- | Caption | 12px / 0.75rem | 500 | 1.4 |
95
-
96
- ### Logo Typography
97
- ```css
98
- .logo {
99
- font-size: 24px;
100
- font-weight: 700;
101
- background: linear-gradient(135deg, #2E86AB, #47C97A);
102
- -webkit-background-clip: text;
103
- -webkit-text-fill-color: transparent;
104
- }
105
- .logo .suffix {
106
- font-weight: 400;
107
- color: #5A6978;
108
- }
109
- ```
110
-
111
- ---
112
-
113
- ## 4. SPACING
114
-
115
- ### Base Unit
116
- 8px grid system
117
-
118
- | Token | Value | Usage |
119
- |-------|-------|-------|
120
- | `--space-1` | 4px | Tight spacing |
121
- | `--space-2` | 8px | Default gap |
122
- | `--space-3` | 12px | Small padding |
123
- | `--space-4` | 16px | Medium padding |
124
- | `--space-5` | 20px | Form groups |
125
- | `--space-6` | 24px | Section gaps |
126
- | `--space-8` | 32px | Card padding |
127
- | `--space-10` | 40px | Section padding |
128
- | `--space-12` | 48px | Large sections |
129
- | `--space-16` | 64px | Hero sections |
130
-
131
- ---
132
-
133
- ## 5. BORDER RADIUS
134
-
135
- | Token | Value | Usage |
136
- |-------|-------|-------|
137
- | `--radius-sm` | 4px | Small elements, badges |
138
- | `--radius-md` | 8px | Buttons, inputs |
139
- | `--radius-lg` | 12px | Cards |
140
- | `--radius-xl` | 16px | Modals |
141
- | `--radius-full` | 9999px | Pills, avatars |
142
-
143
- ---
144
-
145
- ## 6. SHADOWS
146
-
147
- ```css
148
- --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
149
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
150
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
151
- --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
152
- ```
153
-
154
- ---
155
-
156
- ## 7. COMPONENTS
157
-
158
- ### Buttons
159
-
160
- #### Primary Button
161
- ```css
162
- .btn-primary {
163
- background: linear-gradient(135deg, #2E86AB, #36B5A2);
164
- color: white;
165
- padding: 12px 24px;
166
- border-radius: 8px;
167
- font-weight: 600;
168
- border: none;
169
- cursor: pointer;
170
- transition: transform 0.2s, box-shadow 0.2s;
171
- }
172
- .btn-primary:hover {
173
- transform: translateY(-1px);
174
- box-shadow: 0 4px 12px rgba(46, 134, 171, 0.4);
175
- }
176
- ```
177
-
178
- #### Secondary Button
179
- ```css
180
- .btn-secondary {
181
- background: white;
182
- color: #1A2B3C;
183
- padding: 12px 24px;
184
- border-radius: 8px;
185
- font-weight: 600;
186
- border: 2px solid #E2E8F0;
187
- cursor: pointer;
188
- }
189
- .btn-secondary:hover {
190
- border-color: #2E86AB;
191
- color: #2E86AB;
192
- }
193
- ```
194
-
195
- ### Cards
196
- ```css
197
- .card {
198
- background: white;
199
- border-radius: 12px;
200
- padding: 32px;
201
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
202
- border: 1px solid #E2E8F0;
203
- }
204
- ```
205
-
206
- ### Input Fields
207
- ```css
208
- input, select, textarea {
209
- width: 100%;
210
- padding: 12px 16px;
211
- border: 2px solid #E2E8F0;
212
- border-radius: 8px;
213
- font-size: 16px;
214
- transition: border-color 0.2s, box-shadow 0.2s;
215
- }
216
- input:focus {
217
- outline: none;
218
- border-color: #2E86AB;
219
- box-shadow: 0 0 0 3px rgba(46, 134, 171, 0.1);
220
- }
221
- ```
222
-
223
- ### Grade Badges
224
- ```css
225
- .grade-badge {
226
- display: inline-flex;
227
- align-items: center;
228
- gap: 8px;
229
- padding: 8px 16px;
230
- border-radius: 20px;
231
- font-weight: 700;
232
- font-size: 18px;
233
- }
234
- ```
235
-
236
- ---
237
-
238
- ## 8. ICONOGRAPHY
239
-
240
- ### Style Guidelines
241
- - Line weight: 2px stroke
242
- - Corner radius: Rounded caps and joins
243
- - Size: 24x24px default, 20x20px small, 32x32px large
244
-
245
- ### Common Icons
246
- | Icon | Usage |
247
- |------|-------|
248
- | Checkmark | Success, valid, complete |
249
- | X/Cross | Error, invalid, close |
250
- | Warning triangle | Warnings, caution |
251
- | Info circle | Information, tips |
252
- | Shopping bag | Commerce, UCP |
253
- | Shield | Security, validation |
254
-
255
- ---
256
-
257
- ## 9. MOTION
258
-
259
- ### Transitions
260
- ```css
261
- --transition-fast: 150ms ease;
262
- --transition-base: 200ms ease;
263
- --transition-slow: 300ms ease;
264
- ```
265
-
266
- ### Hover Effects
267
- - Buttons: `translateY(-1px)` + shadow increase
268
- - Cards: `translateY(-2px)` + shadow increase
269
- - Links: Color change only
270
-
271
- ---
272
-
273
- ## 10. RESPONSIVE BREAKPOINTS
274
-
275
- | Name | Width | Usage |
276
- |------|-------|-------|
277
- | Mobile | < 640px | Single column |
278
- | Tablet | 640-1024px | Two columns |
279
- | Desktop | > 1024px | Full layout |
280
-
281
- ---
282
-
283
- ## 11. VOICE & TONE
284
-
285
- ### Brand Voice
286
- - **Developer-first**: Technical but accessible
287
- - **Direct**: Clear, no fluff
288
- - **Helpful**: Solution-oriented
289
- - **Independent**: Not affiliated with Google/Shopify
290
-
291
- ### Writing Guidelines
292
- - Use active voice
293
- - Lead with benefits
294
- - Include code examples
295
- - Avoid jargon unless necessary
296
-
297
- ### Example Copy
298
-
299
- **Headlines:**
300
- - "Get ready for AI commerce"
301
- - "Validate your UCP profile"
302
- - "Check your AI commerce readiness"
303
-
304
- **CTAs:**
305
- - "Validate Now"
306
- - "Generate Profile"
307
- - "Get Started"
308
-
309
- ---
310
-
311
- ## 12. FILE ASSETS
312
-
313
- ### Required Files
314
- ```
315
- public/
316
- ├── logo.jpeg # Primary logo (square)
317
- ├── logo-white.png # White version for dark bg
318
- ├── favicon.ico # Browser favicon
319
- ├── favicon-32x32.png # 32px favicon
320
- ├── favicon-16x16.png # 16px favicon
321
- ├── apple-touch-icon.png # 180x180 iOS icon
322
- ├── og-image.png # 1200x630 social share
323
- └── brand.css # CSS design tokens
324
- ```
325
-
326
- ---
327
-
328
- ## 13. CSS DESIGN TOKENS
329
-
330
- See `public/brand.css` for the complete implementation of all design tokens as CSS custom properties.
331
-
332
- ---
333
-
334
- ## 14. USAGE EXAMPLES
335
-
336
- ### Hero Section
337
- ```html
338
- <section class="hero">
339
- <h1>UCP Profile <span class="gradient-text">Validator</span></h1>
340
- <p>Check if your store is ready for AI shopping agents</p>
341
- <button class="btn-primary">Validate Now</button>
342
- </section>
343
- ```
344
-
345
- ### Gradient Text
346
- ```css
347
- .gradient-text {
348
- background: linear-gradient(135deg, #2E86AB, #47C97A);
349
- -webkit-background-clip: text;
350
- -webkit-text-fill-color: transparent;
351
- }
352
- ```
353
-
354
- ---
355
-
356
- *Last updated: January 2026*
@@ -1,39 +0,0 @@
1
- CREATE TABLE "benchmark_stats" (
2
- "id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "benchmark_stats_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
3
- "score_bucket" integer NOT NULL,
4
- "count" integer DEFAULT 0 NOT NULL,
5
- CONSTRAINT "benchmark_stats_score_bucket_unique" UNIQUE("score_bucket")
6
- );
7
- --> statement-breakpoint
8
- CREATE TABLE "benchmark_summary" (
9
- "id" integer PRIMARY KEY DEFAULT 1 NOT NULL,
10
- "total_validations" integer DEFAULT 0 NOT NULL,
11
- "avg_score" numeric(5, 2) DEFAULT '0',
12
- "updated_at" timestamp DEFAULT now() NOT NULL
13
- );
14
- --> statement-breakpoint
15
- CREATE TABLE "merchants" (
16
- "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
17
- "domain" varchar(255) NOT NULL,
18
- "display_name" varchar(255) NOT NULL,
19
- "description" text,
20
- "logo_url" varchar(512),
21
- "website_url" varchar(512),
22
- "category" varchar(100),
23
- "country_code" varchar(2),
24
- "ucp_score" integer,
25
- "ucp_grade" varchar(2),
26
- "transports" varchar(255),
27
- "is_public" boolean DEFAULT true NOT NULL,
28
- "is_verified" boolean DEFAULT false NOT NULL,
29
- "last_validated_at" timestamp,
30
- "created_at" timestamp DEFAULT now() NOT NULL,
31
- "updated_at" timestamp DEFAULT now() NOT NULL,
32
- CONSTRAINT "merchants_domain_unique" UNIQUE("domain")
33
- );
34
- --> statement-breakpoint
35
- CREATE INDEX "idx_merchants_domain" ON "merchants" USING btree ("domain");--> statement-breakpoint
36
- CREATE INDEX "idx_merchants_category" ON "merchants" USING btree ("category");--> statement-breakpoint
37
- CREATE INDEX "idx_merchants_country" ON "merchants" USING btree ("country_code");--> statement-breakpoint
38
- CREATE INDEX "idx_merchants_score" ON "merchants" USING btree ("ucp_score");--> statement-breakpoint
39
- CREATE INDEX "idx_merchants_public" ON "merchants" USING btree ("is_public");
@@ -1,309 +0,0 @@
1
- {
2
- "id": "f7439a2c-cb5b-4649-b69f-738b854831e5",
3
- "prevId": "00000000-0000-0000-0000-000000000000",
4
- "version": "7",
5
- "dialect": "postgresql",
6
- "tables": {
7
- "public.benchmark_stats": {
8
- "name": "benchmark_stats",
9
- "schema": "",
10
- "columns": {
11
- "id": {
12
- "name": "id",
13
- "type": "integer",
14
- "primaryKey": true,
15
- "notNull": true,
16
- "identity": {
17
- "type": "always",
18
- "name": "benchmark_stats_id_seq",
19
- "schema": "public",
20
- "increment": "1",
21
- "startWith": "1",
22
- "minValue": "1",
23
- "maxValue": "2147483647",
24
- "cache": "1",
25
- "cycle": false
26
- }
27
- },
28
- "score_bucket": {
29
- "name": "score_bucket",
30
- "type": "integer",
31
- "primaryKey": false,
32
- "notNull": true
33
- },
34
- "count": {
35
- "name": "count",
36
- "type": "integer",
37
- "primaryKey": false,
38
- "notNull": true,
39
- "default": 0
40
- }
41
- },
42
- "indexes": {},
43
- "foreignKeys": {},
44
- "compositePrimaryKeys": {},
45
- "uniqueConstraints": {
46
- "benchmark_stats_score_bucket_unique": {
47
- "name": "benchmark_stats_score_bucket_unique",
48
- "nullsNotDistinct": false,
49
- "columns": [
50
- "score_bucket"
51
- ]
52
- }
53
- },
54
- "policies": {},
55
- "checkConstraints": {},
56
- "isRLSEnabled": false
57
- },
58
- "public.benchmark_summary": {
59
- "name": "benchmark_summary",
60
- "schema": "",
61
- "columns": {
62
- "id": {
63
- "name": "id",
64
- "type": "integer",
65
- "primaryKey": true,
66
- "notNull": true,
67
- "default": 1
68
- },
69
- "total_validations": {
70
- "name": "total_validations",
71
- "type": "integer",
72
- "primaryKey": false,
73
- "notNull": true,
74
- "default": 0
75
- },
76
- "avg_score": {
77
- "name": "avg_score",
78
- "type": "numeric(5, 2)",
79
- "primaryKey": false,
80
- "notNull": false,
81
- "default": "'0'"
82
- },
83
- "updated_at": {
84
- "name": "updated_at",
85
- "type": "timestamp",
86
- "primaryKey": false,
87
- "notNull": true,
88
- "default": "now()"
89
- }
90
- },
91
- "indexes": {},
92
- "foreignKeys": {},
93
- "compositePrimaryKeys": {},
94
- "uniqueConstraints": {},
95
- "policies": {},
96
- "checkConstraints": {},
97
- "isRLSEnabled": false
98
- },
99
- "public.merchants": {
100
- "name": "merchants",
101
- "schema": "",
102
- "columns": {
103
- "id": {
104
- "name": "id",
105
- "type": "uuid",
106
- "primaryKey": true,
107
- "notNull": true,
108
- "default": "gen_random_uuid()"
109
- },
110
- "domain": {
111
- "name": "domain",
112
- "type": "varchar(255)",
113
- "primaryKey": false,
114
- "notNull": true
115
- },
116
- "display_name": {
117
- "name": "display_name",
118
- "type": "varchar(255)",
119
- "primaryKey": false,
120
- "notNull": true
121
- },
122
- "description": {
123
- "name": "description",
124
- "type": "text",
125
- "primaryKey": false,
126
- "notNull": false
127
- },
128
- "logo_url": {
129
- "name": "logo_url",
130
- "type": "varchar(512)",
131
- "primaryKey": false,
132
- "notNull": false
133
- },
134
- "website_url": {
135
- "name": "website_url",
136
- "type": "varchar(512)",
137
- "primaryKey": false,
138
- "notNull": false
139
- },
140
- "category": {
141
- "name": "category",
142
- "type": "varchar(100)",
143
- "primaryKey": false,
144
- "notNull": false
145
- },
146
- "country_code": {
147
- "name": "country_code",
148
- "type": "varchar(2)",
149
- "primaryKey": false,
150
- "notNull": false
151
- },
152
- "ucp_score": {
153
- "name": "ucp_score",
154
- "type": "integer",
155
- "primaryKey": false,
156
- "notNull": false
157
- },
158
- "ucp_grade": {
159
- "name": "ucp_grade",
160
- "type": "varchar(2)",
161
- "primaryKey": false,
162
- "notNull": false
163
- },
164
- "transports": {
165
- "name": "transports",
166
- "type": "varchar(255)",
167
- "primaryKey": false,
168
- "notNull": false
169
- },
170
- "is_public": {
171
- "name": "is_public",
172
- "type": "boolean",
173
- "primaryKey": false,
174
- "notNull": true,
175
- "default": true
176
- },
177
- "is_verified": {
178
- "name": "is_verified",
179
- "type": "boolean",
180
- "primaryKey": false,
181
- "notNull": true,
182
- "default": false
183
- },
184
- "last_validated_at": {
185
- "name": "last_validated_at",
186
- "type": "timestamp",
187
- "primaryKey": false,
188
- "notNull": false
189
- },
190
- "created_at": {
191
- "name": "created_at",
192
- "type": "timestamp",
193
- "primaryKey": false,
194
- "notNull": true,
195
- "default": "now()"
196
- },
197
- "updated_at": {
198
- "name": "updated_at",
199
- "type": "timestamp",
200
- "primaryKey": false,
201
- "notNull": true,
202
- "default": "now()"
203
- }
204
- },
205
- "indexes": {
206
- "idx_merchants_domain": {
207
- "name": "idx_merchants_domain",
208
- "columns": [
209
- {
210
- "expression": "domain",
211
- "isExpression": false,
212
- "asc": true,
213
- "nulls": "last"
214
- }
215
- ],
216
- "isUnique": false,
217
- "concurrently": false,
218
- "method": "btree",
219
- "with": {}
220
- },
221
- "idx_merchants_category": {
222
- "name": "idx_merchants_category",
223
- "columns": [
224
- {
225
- "expression": "category",
226
- "isExpression": false,
227
- "asc": true,
228
- "nulls": "last"
229
- }
230
- ],
231
- "isUnique": false,
232
- "concurrently": false,
233
- "method": "btree",
234
- "with": {}
235
- },
236
- "idx_merchants_country": {
237
- "name": "idx_merchants_country",
238
- "columns": [
239
- {
240
- "expression": "country_code",
241
- "isExpression": false,
242
- "asc": true,
243
- "nulls": "last"
244
- }
245
- ],
246
- "isUnique": false,
247
- "concurrently": false,
248
- "method": "btree",
249
- "with": {}
250
- },
251
- "idx_merchants_score": {
252
- "name": "idx_merchants_score",
253
- "columns": [
254
- {
255
- "expression": "ucp_score",
256
- "isExpression": false,
257
- "asc": true,
258
- "nulls": "last"
259
- }
260
- ],
261
- "isUnique": false,
262
- "concurrently": false,
263
- "method": "btree",
264
- "with": {}
265
- },
266
- "idx_merchants_public": {
267
- "name": "idx_merchants_public",
268
- "columns": [
269
- {
270
- "expression": "is_public",
271
- "isExpression": false,
272
- "asc": true,
273
- "nulls": "last"
274
- }
275
- ],
276
- "isUnique": false,
277
- "concurrently": false,
278
- "method": "btree",
279
- "with": {}
280
- }
281
- },
282
- "foreignKeys": {},
283
- "compositePrimaryKeys": {},
284
- "uniqueConstraints": {
285
- "merchants_domain_unique": {
286
- "name": "merchants_domain_unique",
287
- "nullsNotDistinct": false,
288
- "columns": [
289
- "domain"
290
- ]
291
- }
292
- },
293
- "policies": {},
294
- "checkConstraints": {},
295
- "isRLSEnabled": false
296
- }
297
- },
298
- "enums": {},
299
- "schemas": {},
300
- "sequences": {},
301
- "roles": {},
302
- "policies": {},
303
- "views": {},
304
- "_meta": {
305
- "columns": {},
306
- "schemas": {},
307
- "tables": {}
308
- }
309
- }
@@ -1,13 +0,0 @@
1
- {
2
- "version": "7",
3
- "dialect": "postgresql",
4
- "entries": [
5
- {
6
- "idx": 0,
7
- "version": "7",
8
- "when": 1768464233041,
9
- "tag": "0000_black_king_cobra",
10
- "breakpoints": true
11
- }
12
- ]
13
- }