base-themes 0.1.1 → 0.1.3

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 (282) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/CODE_OF_CONDUCT.md +22 -0
  3. package/CONTRIBUTING.md +98 -0
  4. package/LICENSE +21 -0
  5. package/README.md +324 -5
  6. package/RELEASE.md +80 -0
  7. package/SECURITY.md +49 -0
  8. package/bin/base-themes.mjs +143 -0
  9. package/dist/base-themes.css +1 -1
  10. package/dist/base-themes.js +857 -302
  11. package/dist/llms-full.txt +288 -0
  12. package/dist/llms.txt +79 -0
  13. package/dist/types/blocks/AuthCard.d.ts +2 -0
  14. package/dist/types/blocks/CommandPaletteBlock.d.ts +2 -0
  15. package/dist/types/blocks/DashboardShell.d.ts +2 -0
  16. package/dist/types/blocks/DataTableBlock.d.ts +2 -0
  17. package/dist/types/blocks/PricingPanel.d.ts +2 -0
  18. package/dist/types/blocks/SettingsForm.d.ts +2 -0
  19. package/dist/types/blocks/TeamActivityFeed.d.ts +2 -0
  20. package/dist/types/blocks/ThemeShowcaseCard.d.ts +2 -0
  21. package/dist/types/blocks/index.d.ts +8 -0
  22. package/dist/types/components/ui/Input.d.ts +3 -0
  23. package/dist/types/components/ui/index.d.ts +1 -1
  24. package/dist/types/lib.d.ts +1 -0
  25. package/docs/adoption-dashboard.md +149 -0
  26. package/docs/analytics-setup.md +145 -0
  27. package/docs/community-gallery-proposal.md +64 -0
  28. package/docs/community-proof-telemetry.md +47 -0
  29. package/docs/contributor-issue-seeds.md +240 -0
  30. package/docs/registry-access-telemetry.md +87 -0
  31. package/docs/release-announcement-kit.md +229 -0
  32. package/docs/search-console-setup.md +111 -0
  33. package/docs/theme-token-contract.md +113 -0
  34. package/examples/dashboard/README.md +24 -0
  35. package/examples/dashboard/index.html +12 -0
  36. package/examples/dashboard/package-lock.json +1212 -0
  37. package/examples/dashboard/package.json +24 -0
  38. package/examples/dashboard/src/App.tsx +115 -0
  39. package/examples/dashboard/src/main.tsx +11 -0
  40. package/examples/dashboard/src/styles.css +129 -0
  41. package/examples/dashboard/src/vite-env.d.ts +4 -0
  42. package/examples/dashboard/tsconfig.app.json +23 -0
  43. package/examples/dashboard/tsconfig.json +7 -0
  44. package/examples/dashboard/tsconfig.node.json +15 -0
  45. package/examples/dashboard/vite.config.ts +6 -0
  46. package/examples/next/README.md +29 -0
  47. package/examples/next/app/base-themes-demo.tsx +70 -0
  48. package/examples/next/app/layout.tsx +16 -0
  49. package/examples/next/app/page.tsx +9 -0
  50. package/examples/next/app/styles.css +106 -0
  51. package/examples/next/next-env.d.ts +6 -0
  52. package/examples/next/next.config.ts +5 -0
  53. package/examples/next/package-lock.json +1199 -0
  54. package/examples/next/package.json +27 -0
  55. package/examples/next/tsconfig.json +36 -0
  56. package/examples/registry-copy/README.md +73 -0
  57. package/examples/registry-copy/plan-copy.mjs +130 -0
  58. package/examples/theme-customization/README.md +26 -0
  59. package/examples/theme-customization/index.html +12 -0
  60. package/examples/theme-customization/package-lock.json +1212 -0
  61. package/examples/theme-customization/package.json +24 -0
  62. package/examples/theme-customization/src/App.tsx +138 -0
  63. package/examples/theme-customization/src/main.tsx +11 -0
  64. package/examples/theme-customization/src/styles.css +138 -0
  65. package/examples/theme-customization/src/vite-env.d.ts +4 -0
  66. package/examples/theme-customization/tsconfig.app.json +23 -0
  67. package/examples/theme-customization/tsconfig.json +7 -0
  68. package/examples/theme-customization/tsconfig.node.json +15 -0
  69. package/examples/theme-customization/vite.config.ts +6 -0
  70. package/examples/vite/README.md +32 -0
  71. package/examples/vite/index.html +12 -0
  72. package/examples/vite/package-lock.json +1200 -0
  73. package/examples/vite/package.json +24 -0
  74. package/examples/vite/src/App.tsx +101 -0
  75. package/examples/vite/src/main.tsx +11 -0
  76. package/examples/vite/src/styles.css +125 -0
  77. package/examples/vite/src/vite-env.d.ts +4 -0
  78. package/examples/vite/tsconfig.app.json +23 -0
  79. package/examples/vite/tsconfig.json +7 -0
  80. package/examples/vite/tsconfig.node.json +15 -0
  81. package/examples/vite/vite.config.ts +6 -0
  82. package/llms-full.txt +288 -0
  83. package/llms.txt +79 -0
  84. package/package.json +157 -14
  85. package/public/previews/base-themes-bauhaus.png +0 -0
  86. package/public/previews/base-themes-bento.png +0 -0
  87. package/public/previews/base-themes-calm.png +0 -0
  88. package/public/previews/base-themes-cyberpunk.png +0 -0
  89. package/public/previews/base-themes-data-dense.png +0 -0
  90. package/public/previews/base-themes-editorial.png +0 -0
  91. package/public/previews/base-themes-enterprise.png +0 -0
  92. package/public/previews/base-themes-fluent.png +0 -0
  93. package/public/previews/base-themes-glass.png +0 -0
  94. package/public/previews/base-themes-linear.png +0 -0
  95. package/public/previews/base-themes-luxury.png +0 -0
  96. package/public/previews/base-themes-material.png +0 -0
  97. package/public/previews/base-themes-minimal.png +0 -0
  98. package/public/previews/base-themes-mono.png +0 -0
  99. package/public/previews/base-themes-neo-brutalism.png +0 -0
  100. package/public/previews/base-themes-playful.png +0 -0
  101. package/public/previews/base-themes-retro.png +0 -0
  102. package/public/previews/base-themes-shadcn.png +0 -0
  103. package/public/previews/base-themes-soft-ui.png +0 -0
  104. package/public/previews/base-themes-terminal.png +0 -0
  105. package/registry/items/accordion.json +101 -0
  106. package/registry/items/alert-dialog.json +107 -0
  107. package/registry/items/autocomplete.json +106 -0
  108. package/registry/items/avatar.json +101 -0
  109. package/registry/items/block-auth-card.json +105 -0
  110. package/registry/items/block-command-palette.json +99 -0
  111. package/registry/items/block-dashboard-shell.json +101 -0
  112. package/registry/items/block-data-table.json +99 -0
  113. package/registry/items/block-pricing-panel.json +99 -0
  114. package/registry/items/block-settings-form.json +107 -0
  115. package/registry/items/block-team-activity-feed.json +99 -0
  116. package/registry/items/block-theme-showcase-card.json +99 -0
  117. package/registry/items/button.json +102 -0
  118. package/registry/items/checkbox-group.json +106 -0
  119. package/registry/items/checkbox.json +102 -0
  120. package/registry/items/collapsible.json +101 -0
  121. package/registry/items/combobox.json +101 -0
  122. package/registry/items/context-menu.json +106 -0
  123. package/registry/items/csp-provider.json +96 -0
  124. package/registry/items/dialog.json +102 -0
  125. package/registry/items/direction-provider.json +101 -0
  126. package/registry/items/drawer.json +101 -0
  127. package/registry/items/field.json +101 -0
  128. package/registry/items/fieldset.json +101 -0
  129. package/registry/items/form.json +101 -0
  130. package/registry/items/input.json +102 -0
  131. package/registry/items/menu.json +101 -0
  132. package/registry/items/menubar.json +106 -0
  133. package/registry/items/meter.json +101 -0
  134. package/registry/items/navigation-menu.json +101 -0
  135. package/registry/items/number-field.json +101 -0
  136. package/registry/items/otp-field.json +101 -0
  137. package/registry/items/popover.json +102 -0
  138. package/registry/items/preview-card.json +101 -0
  139. package/registry/items/progress.json +101 -0
  140. package/registry/items/radio-group.json +102 -0
  141. package/registry/items/radio.json +101 -0
  142. package/registry/items/scroll-area.json +101 -0
  143. package/registry/items/select.json +102 -0
  144. package/registry/items/separator.json +101 -0
  145. package/registry/items/slider.json +102 -0
  146. package/registry/items/switch.json +102 -0
  147. package/registry/items/tabs.json +101 -0
  148. package/registry/items/theme-bauhaus.json +107 -0
  149. package/registry/items/theme-bento.json +107 -0
  150. package/registry/items/theme-calm.json +107 -0
  151. package/registry/items/theme-cyberpunk.json +108 -0
  152. package/registry/items/theme-data-dense.json +107 -0
  153. package/registry/items/theme-editorial.json +107 -0
  154. package/registry/items/theme-enterprise.json +108 -0
  155. package/registry/items/theme-fluent.json +107 -0
  156. package/registry/items/theme-glass.json +107 -0
  157. package/registry/items/theme-linear.json +107 -0
  158. package/registry/items/theme-luxury.json +107 -0
  159. package/registry/items/theme-material.json +107 -0
  160. package/registry/items/theme-minimal.json +107 -0
  161. package/registry/items/theme-mono.json +107 -0
  162. package/registry/items/theme-neo-brutalism.json +107 -0
  163. package/registry/items/theme-playful.json +107 -0
  164. package/registry/items/theme-retro.json +107 -0
  165. package/registry/items/theme-shadcn.json +107 -0
  166. package/registry/items/theme-soft-ui.json +107 -0
  167. package/registry/items/theme-terminal.json +107 -0
  168. package/registry/items/toast.json +106 -0
  169. package/registry/items/toggle-group.json +101 -0
  170. package/registry/items/toggle.json +101 -0
  171. package/registry/items/toolbar.json +101 -0
  172. package/registry/items/tooltip.json +102 -0
  173. package/registry/registry.json +564 -49
  174. package/registry/shadcn-registry.json +415 -0
  175. package/research/telemetry-fixtures/analytics-events.jsonl +9 -0
  176. package/research/telemetry-fixtures/bundle-report.json +44 -0
  177. package/research/telemetry-fixtures/community-proof.csv +5 -0
  178. package/research/telemetry-fixtures/registry-access.jsonl +10 -0
  179. package/research/telemetry-fixtures/search-console-export.csv +4 -0
  180. package/scripts/registry-plan.mjs +434 -0
  181. package/scripts/render-launch-actions.mjs +405 -0
  182. package/scripts/render-launch-status.mjs +373 -0
  183. package/scripts/render-release-announcement.mjs +329 -0
  184. package/scripts/verify-launch-readiness.mjs +415 -0
  185. package/scripts/verify-telemetry-fixtures.mjs +85 -0
  186. package/scripts/verify-telemetry-report.mjs +89 -0
  187. package/skills/base-themes/SKILL.md +156 -43
  188. package/src/blocks/AuthCard.tsx +29 -0
  189. package/src/blocks/Blocks.css +182 -0
  190. package/src/blocks/CommandPaletteBlock.tsx +32 -0
  191. package/src/blocks/DashboardShell.tsx +36 -0
  192. package/src/blocks/DataTableBlock.tsx +44 -0
  193. package/src/blocks/PricingPanel.tsx +28 -0
  194. package/src/blocks/SettingsForm.tsx +37 -0
  195. package/src/blocks/TeamActivityFeed.tsx +38 -0
  196. package/src/blocks/ThemeShowcaseCard.tsx +32 -0
  197. package/src/blocks/index.ts +8 -0
  198. package/src/components/ui/Accordion.css +42 -0
  199. package/src/components/ui/Accordion.tsx +41 -0
  200. package/src/components/ui/AlertDialog.css +40 -0
  201. package/src/components/ui/AlertDialog.tsx +52 -0
  202. package/src/components/ui/Autocomplete.css +3 -0
  203. package/src/components/ui/Autocomplete.tsx +50 -0
  204. package/src/components/ui/Avatar.css +45 -0
  205. package/src/components/ui/Avatar.tsx +36 -0
  206. package/src/components/ui/Button.css +79 -0
  207. package/src/components/ui/Button.tsx +20 -0
  208. package/src/components/ui/Checkbox.css +37 -0
  209. package/src/components/ui/Checkbox.tsx +32 -0
  210. package/src/components/ui/CheckboxGroup.tsx +21 -0
  211. package/src/components/ui/Collapsible.css +34 -0
  212. package/src/components/ui/Collapsible.tsx +29 -0
  213. package/src/components/ui/Combobox.css +75 -0
  214. package/src/components/ui/Combobox.tsx +53 -0
  215. package/src/components/ui/ContextMenu.css +9 -0
  216. package/src/components/ui/ContextMenu.tsx +47 -0
  217. package/src/components/ui/CspProvider.tsx +10 -0
  218. package/src/components/ui/Dialog.css +41 -0
  219. package/src/components/ui/Dialog.tsx +45 -0
  220. package/src/components/ui/DirectionProvider.tsx +17 -0
  221. package/src/components/ui/Drawer.css +77 -0
  222. package/src/components/ui/Drawer.tsx +56 -0
  223. package/src/components/ui/Field.css +19 -0
  224. package/src/components/ui/Field.tsx +24 -0
  225. package/src/components/ui/Fieldset.css +16 -0
  226. package/src/components/ui/Fieldset.tsx +19 -0
  227. package/src/components/ui/Form.css +5 -0
  228. package/src/components/ui/Form.tsx +12 -0
  229. package/src/components/ui/Input.css +50 -0
  230. package/src/components/ui/Input.tsx +62 -0
  231. package/src/components/ui/Menu.css +59 -0
  232. package/src/components/ui/Menu.tsx +50 -0
  233. package/src/components/ui/Menubar.css +26 -0
  234. package/src/components/ui/Menubar.tsx +42 -0
  235. package/src/components/ui/Meter.css +45 -0
  236. package/src/components/ui/Meter.tsx +37 -0
  237. package/src/components/ui/NavigationMenu.css +103 -0
  238. package/src/components/ui/NavigationMenu.tsx +64 -0
  239. package/src/components/ui/NumberField.css +38 -0
  240. package/src/components/ui/NumberField.tsx +28 -0
  241. package/src/components/ui/OtpField.css +28 -0
  242. package/src/components/ui/OtpField.tsx +24 -0
  243. package/src/components/ui/Popover.css +25 -0
  244. package/src/components/ui/Popover.tsx +37 -0
  245. package/src/components/ui/PreviewCard.css +33 -0
  246. package/src/components/ui/PreviewCard.tsx +43 -0
  247. package/src/components/ui/Progress.css +33 -0
  248. package/src/components/ui/Progress.tsx +28 -0
  249. package/src/components/ui/Radio.tsx +22 -0
  250. package/src/components/ui/RadioGroup.css +42 -0
  251. package/src/components/ui/RadioGroup.tsx +29 -0
  252. package/src/components/ui/ScrollArea.css +42 -0
  253. package/src/components/ui/ScrollArea.tsx +22 -0
  254. package/src/components/ui/Select.css +86 -0
  255. package/src/components/ui/Select.tsx +39 -0
  256. package/src/components/ui/Separator.css +14 -0
  257. package/src/components/ui/Separator.tsx +12 -0
  258. package/src/components/ui/Slider.css +39 -0
  259. package/src/components/ui/Slider.tsx +21 -0
  260. package/src/components/ui/Switch.css +45 -0
  261. package/src/components/ui/Switch.tsx +29 -0
  262. package/src/components/ui/Tabs.css +72 -0
  263. package/src/components/ui/Tabs.tsx +44 -0
  264. package/src/components/ui/Toast.css +75 -0
  265. package/src/components/ui/Toast.tsx +48 -0
  266. package/src/components/ui/Toggle.tsx +12 -0
  267. package/src/components/ui/ToggleGroup.css +35 -0
  268. package/src/components/ui/ToggleGroup.tsx +30 -0
  269. package/src/components/ui/Toolbar.css +60 -0
  270. package/src/components/ui/Toolbar.tsx +36 -0
  271. package/src/components/ui/Tooltip.css +14 -0
  272. package/src/components/ui/Tooltip.tsx +31 -0
  273. package/src/components/ui/index.ts +83 -0
  274. package/src/components/ui/useDirection.ts +1 -0
  275. package/src/components/ui/useToastManager.ts +11 -0
  276. package/src/docs/blockMeta.json +66 -0
  277. package/src/docs/componentMeta.json +322 -0
  278. package/src/docs/staticPageMeta.json +143 -0
  279. package/src/docs/themeMeta.json +22 -0
  280. package/src/styles/tokenContract.json +61 -0
  281. package/workers/analytics-receiver.mjs +170 -0
  282. package/wrangler.analytics.jsonc +12 -0
package/SECURITY.md ADDED
@@ -0,0 +1,49 @@
1
+ # Security Policy
2
+
3
+ Base Themes is a public npm package for React applications. Security reports are handled through GitHub so fixes can be coordinated before public disclosure.
4
+
5
+ ## Supported Versions
6
+
7
+ Security fixes target the latest published minor version of `base-themes`. Older versions may receive guidance, but patches are not guaranteed until the project has a stable major release policy.
8
+
9
+ ## Reporting a Vulnerability
10
+
11
+ Use GitHub private vulnerability reporting if it is enabled for the repository. If it is not available, open a minimal public issue that says you need a private security contact, without including exploit details.
12
+
13
+ Do not include secrets, tokens, private keys, customer data, or production credentials in a report.
14
+
15
+ Please include:
16
+
17
+ - Affected package version.
18
+ - Affected component, script, workflow, or registry entry.
19
+ - Reproduction steps or proof of concept.
20
+ - Impact and likely attack scenario.
21
+ - Any known mitigation.
22
+
23
+ ## Response Expectations
24
+
25
+ - Initial triage target: 3 business days.
26
+ - Fix or mitigation target: depends on severity and reproducibility.
27
+ - Public disclosure: after a patched release or clear mitigation is available.
28
+
29
+ ## Supply Chain Posture
30
+
31
+ - Releases are published by GitHub Actions using npm provenance.
32
+ - CI runs registry validation, lint, and build before publish.
33
+ - Runtime dependencies are intentionally small.
34
+ - Dependency updates are managed through Dependabot once configured.
35
+
36
+ ## Scope
37
+
38
+ In scope:
39
+
40
+ - Package source and bundled output.
41
+ - Registry metadata that could cause unsafe installs or copied files.
42
+ - GitHub Actions workflows and release pipeline.
43
+ - Documentation examples that create unsafe defaults.
44
+
45
+ Out of scope:
46
+
47
+ - Vulnerabilities in user applications after local modifications.
48
+ - Issues requiring access to private user environments.
49
+ - Social engineering or spam reports.
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env node
2
+ import { createDoctorReport, createRegistryAdd, createRegistryPlan, formatDoctorReport, formatRegistryAdd, formatRegistryList, formatRegistryPlan, loadRegistry } from '../scripts/registry-plan.mjs'
3
+
4
+ const [command, ...args] = process.argv.slice(2)
5
+ const registry = loadRegistry(new URL('../registry/registry.json', import.meta.url))
6
+
7
+ function printHelp() {
8
+ console.log(`Base Themes CLI
9
+
10
+ Usage:
11
+ base-themes list [--json]
12
+ base-themes plan <component...> [block:<block-name>...] [theme:<style>...] [--json]
13
+ base-themes add <component...> [block:<block-name>...] [theme:<style>...] [--target <dir>] [--dry-run] [--force] [--json]
14
+ base-themes doctor [project-root] [--json]
15
+
16
+ Examples:
17
+ base-themes list
18
+ base-themes list --json
19
+ base-themes plan button select block:dashboard-shell theme:enterprise
20
+ base-themes plan button select block:dashboard-shell theme:enterprise --json
21
+ base-themes add button select block:dashboard-shell theme:enterprise --target . --dry-run
22
+ base-themes doctor . --json
23
+ `)
24
+ }
25
+
26
+ function parseRegistryArgs(args) {
27
+ const requested = []
28
+ const options = {}
29
+
30
+ for (let index = 0; index < args.length; index += 1) {
31
+ const arg = args[index]
32
+ if (arg === '--dry-run') {
33
+ options.dryRun = true
34
+ continue
35
+ }
36
+ if (arg === '--force') {
37
+ options.force = true
38
+ continue
39
+ }
40
+ if (arg === '--json') {
41
+ options.json = true
42
+ continue
43
+ }
44
+ if (arg === '--target') {
45
+ const target = args[index + 1]
46
+ if (!target) throw new Error('Missing value for --target')
47
+ options.target = target
48
+ index += 1
49
+ continue
50
+ }
51
+ if (arg.startsWith('--target=')) {
52
+ options.target = arg.slice('--target='.length)
53
+ continue
54
+ }
55
+ if (arg.startsWith('--')) throw new Error(`Unknown add option: ${arg}`)
56
+ requested.push(arg)
57
+ }
58
+
59
+ return { requested, options }
60
+ }
61
+
62
+ function printResult(value, json, formatter) {
63
+ console.log(json ? JSON.stringify(value, null, 2) : formatter(value))
64
+ }
65
+
66
+ if (!command || command === 'help' || command === '--help' || command === '-h') {
67
+ printHelp()
68
+ process.exit(0)
69
+ }
70
+
71
+ if (command === 'list') {
72
+ const json = args.includes('--json')
73
+ const unknownArgs = args.filter((arg) => arg !== '--json')
74
+ if (unknownArgs.length > 0) {
75
+ console.error(`Unknown list option: ${unknownArgs[0]}`)
76
+ console.error('Usage: base-themes list [--json]')
77
+ process.exit(1)
78
+ }
79
+ printResult(registry, json, formatRegistryList)
80
+ process.exit(0)
81
+ }
82
+
83
+ if (command === 'plan') {
84
+ let parsed
85
+ try {
86
+ parsed = parseRegistryArgs(args)
87
+ } catch (error) {
88
+ console.error(error.message)
89
+ console.error('Usage: base-themes plan <component...> [block:<block-name>...] [theme:<style>...] [--json]')
90
+ process.exit(1)
91
+ }
92
+
93
+ if (parsed.requested.length === 0) {
94
+ console.error('Usage: base-themes plan <component...> [block:<block-name>...] [theme:<style>...] [--json]')
95
+ process.exit(1)
96
+ }
97
+
98
+ const plan = createRegistryPlan(registry, parsed.requested)
99
+ printResult(plan, parsed.options.json, formatRegistryPlan)
100
+ process.exit(plan.ok ? 0 : 1)
101
+ }
102
+
103
+ if (command === 'add') {
104
+ let parsed
105
+ try {
106
+ parsed = parseRegistryArgs(args)
107
+ } catch (error) {
108
+ console.error(error.message)
109
+ console.error('Usage: base-themes add <component...> [block:<block-name>...] [theme:<style>...] [--target <dir>] [--dry-run] [--force] [--json]')
110
+ process.exit(1)
111
+ }
112
+
113
+ if (parsed.requested.length === 0) {
114
+ console.error('Usage: base-themes add <component...> [block:<block-name>...] [theme:<style>...] [--target <dir>] [--dry-run] [--force] [--json]')
115
+ process.exit(1)
116
+ }
117
+
118
+ const result = createRegistryAdd(registry, parsed.requested, parsed.options)
119
+ printResult(result, parsed.options.json, formatRegistryAdd)
120
+ process.exit(result.ok ? 0 : 1)
121
+ }
122
+
123
+ if (command === 'doctor') {
124
+ const json = args.includes('--json')
125
+ const positional = args.filter((arg) => arg !== '--json')
126
+ if (positional.some((arg) => arg.startsWith('--'))) {
127
+ console.error(`Unknown doctor option: ${positional.find((arg) => arg.startsWith('--'))}`)
128
+ console.error('Usage: base-themes doctor [project-root] [--json]')
129
+ process.exit(1)
130
+ }
131
+ if (positional.length > 1) {
132
+ console.error('Usage: base-themes doctor [project-root] [--json]')
133
+ process.exit(1)
134
+ }
135
+ const root = positional[0] ?? process.cwd()
136
+ const report = createDoctorReport(root)
137
+ printResult(report, json, formatDoctorReport)
138
+ process.exit(report.ok ? 0 : 1)
139
+ }
140
+
141
+ console.error(`Unknown command: ${command}`)
142
+ printHelp()
143
+ process.exit(1)