@ternent/core 0.0.1

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 (313) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +17 -0
  3. package/.github/workflows/deploy-armour.yml +42 -0
  4. package/.github/workflows/deploy-identity.yml +42 -0
  5. package/.github/workflows/deploy-seal.yml +42 -0
  6. package/.github/workflows/deploy-ui.yml +42 -0
  7. package/.github/workflows/deploy-utils.yml +42 -0
  8. package/.github/workflows/release-create.yml +59 -0
  9. package/.github/workflows/release-publish.yml +54 -0
  10. package/.nvmrc +1 -0
  11. package/.ops/publish.mjs +31 -0
  12. package/package.json +16 -0
  13. package/packages/README.md +0 -0
  14. package/packages/armour/CHANGELOG.md +66 -0
  15. package/packages/armour/CLAUDE.md +8 -0
  16. package/packages/armour/README.md +103 -0
  17. package/packages/armour/SPEC.md +92 -0
  18. package/packages/armour/package.json +45 -0
  19. package/packages/armour/src/constants.ts +5 -0
  20. package/packages/armour/src/deps.d.ts +56 -0
  21. package/packages/armour/src/errors.ts +172 -0
  22. package/packages/armour/src/files.ts +73 -0
  23. package/packages/armour/src/identity.ts +72 -0
  24. package/packages/armour/src/index.ts +56 -0
  25. package/packages/armour/src/init.ts +10 -0
  26. package/packages/armour/src/passphrase.ts +33 -0
  27. package/packages/armour/src/recipients.ts +73 -0
  28. package/packages/armour/src/text.ts +68 -0
  29. package/packages/armour/src/types.ts +93 -0
  30. package/packages/armour/test/armour.test.ts +270 -0
  31. package/packages/armour/tsconfig.build.json +12 -0
  32. package/packages/armour/tsconfig.json +12 -0
  33. package/packages/armour/vite.config.ts +29 -0
  34. package/packages/concord/CHANGELOG.md +83 -0
  35. package/packages/concord/CLAUDE.md +9 -0
  36. package/packages/concord/README.md +146 -0
  37. package/packages/concord/SPEC.md +287 -0
  38. package/packages/concord/package.json +51 -0
  39. package/packages/concord/src/app.ts +717 -0
  40. package/packages/concord/src/errors.ts +9 -0
  41. package/packages/concord/src/index.ts +20 -0
  42. package/packages/concord/src/types.ts +127 -0
  43. package/packages/concord/test/concord.test.ts +978 -0
  44. package/packages/concord/tsconfig.json +12 -0
  45. package/packages/concord/vite.browser.config.ts +27 -0
  46. package/packages/concord/vite.config.ts +35 -0
  47. package/packages/concord/vite.config.ts.timestamp-1774262297922-ffd76e35ea668.mjs +83 -0
  48. package/packages/identity/CHANGELOG.md +47 -0
  49. package/packages/identity/README.md +236 -0
  50. package/packages/identity/package.json +41 -0
  51. package/packages/identity/src/index.ts +538 -0
  52. package/packages/identity/test/identity.test.ts +172 -0
  53. package/packages/identity/tsconfig.build.json +12 -0
  54. package/packages/identity/vite.config.ts +17 -0
  55. package/packages/ledger/CHANGELOG.md +69 -0
  56. package/packages/ledger/CLAUDE.md +9 -0
  57. package/packages/ledger/SPEC.md +304 -0
  58. package/packages/ledger/package.json +48 -0
  59. package/packages/ledger/src/index.ts +2 -0
  60. package/packages/ledger/src/ledger.ts +1286 -0
  61. package/packages/ledger/src/seal-cli.d.ts +25 -0
  62. package/packages/ledger/src/types.ts +294 -0
  63. package/packages/ledger/test/ledger.test.ts +838 -0
  64. package/packages/ledger/tsconfig.json +12 -0
  65. package/packages/ledger/vite.browser.config.ts +27 -0
  66. package/packages/ledger/vite.config.ts +39 -0
  67. package/packages/seal/CHANGELOG.md +137 -0
  68. package/packages/seal/CLAUDE.md +8 -0
  69. package/packages/seal/README.md +258 -0
  70. package/packages/seal/bin/seal +6 -0
  71. package/packages/seal/package.json +59 -0
  72. package/packages/seal/src/artifact.ts +380 -0
  73. package/packages/seal/src/cli.ts +372 -0
  74. package/packages/seal/src/commands/identity.ts +52 -0
  75. package/packages/seal/src/commands/manifest.ts +71 -0
  76. package/packages/seal/src/commands/publicKey.ts +7 -0
  77. package/packages/seal/src/commands/sign.ts +56 -0
  78. package/packages/seal/src/commands/verify.ts +54 -0
  79. package/packages/seal/src/crypto.ts +85 -0
  80. package/packages/seal/src/errors.ts +88 -0
  81. package/packages/seal/src/index.ts +5 -0
  82. package/packages/seal/src/manifest.ts +114 -0
  83. package/packages/seal/src/node.ts +18 -0
  84. package/packages/seal/src/proof.ts +344 -0
  85. package/packages/seal/test/artifact.test.ts +86 -0
  86. package/packages/seal/test/cli.test.ts +208 -0
  87. package/packages/seal/test/crypto.test.ts +21 -0
  88. package/packages/seal/test/manifest.test.ts +32 -0
  89. package/packages/seal/test/proof.test.ts +60 -0
  90. package/packages/seal/tsconfig.json +12 -0
  91. package/packages/seal/vite.config.ts +54 -0
  92. package/packages/ui/CHANGELOG.md +393 -0
  93. package/packages/ui/README.md +57 -0
  94. package/packages/ui/jsconfig.json +19 -0
  95. package/packages/ui/package.json +64 -0
  96. package/packages/ui/scripts/check-tokens.js +56 -0
  97. package/packages/ui/scripts/generate-theme-css.mjs +85 -0
  98. package/packages/ui/src/design-system/base.css +8 -0
  99. package/packages/ui/src/design-system/docs/ACCESSIBILITY_RULES.md +186 -0
  100. package/packages/ui/src/design-system/docs/AI_SYSTEM.md +281 -0
  101. package/packages/ui/src/design-system/docs/PATTERN_RULES.md +83 -0
  102. package/packages/ui/src/design-system/docs/PRIMITIVE_RULES.md +258 -0
  103. package/packages/ui/src/design-system/docs/TOKEN_RULES.md +235 -0
  104. package/packages/ui/src/design-system/docs/VISUAL_DIRECTION.md +68 -0
  105. package/packages/ui/src/design-system/foundation.js +420 -0
  106. package/packages/ui/src/design-system/tokens.css +140 -0
  107. package/packages/ui/src/design-system/tokens.js +327 -0
  108. package/packages/ui/src/design-system/utils.js +246 -0
  109. package/packages/ui/src/main.js +4 -0
  110. package/packages/ui/src/patterns/FeatureCard/FeatureCard.spec.md +24 -0
  111. package/packages/ui/src/patterns/FeatureCard/FeatureCard.types.ts +8 -0
  112. package/packages/ui/src/patterns/FeatureCard/FeatureCard.vue +175 -0
  113. package/packages/ui/src/patterns/FormField/FormField.spec.md +65 -0
  114. package/packages/ui/src/patterns/FormField/FormField.types.ts +11 -0
  115. package/packages/ui/src/patterns/FormField/FormField.vue +87 -0
  116. package/packages/ui/src/patterns/IdentityGlyph/IdentityGlyph.vue +61 -0
  117. package/packages/ui/src/patterns/IdentityGlyph/IdentityHandle.vue +58 -0
  118. package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.types.ts +36 -0
  119. package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.utils.ts +585 -0
  120. package/packages/ui/src/patterns/IdentityGlyph/index.ts +5 -0
  121. package/packages/ui/src/patterns/KeyValueList/KeyValueList.spec.md +28 -0
  122. package/packages/ui/src/patterns/KeyValueList/KeyValueList.types.ts +16 -0
  123. package/packages/ui/src/patterns/KeyValueList/KeyValueList.vue +50 -0
  124. package/packages/ui/src/patterns/LandingPage/LandingIcon.vue +90 -0
  125. package/packages/ui/src/patterns/LandingPage/LandingPage.spec.md +24 -0
  126. package/packages/ui/src/patterns/LandingPage/LandingPage.types.ts +212 -0
  127. package/packages/ui/src/patterns/LandingPage/LandingPage.vue +599 -0
  128. package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.test.ts +33 -0
  129. package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.vue +44 -0
  130. package/packages/ui/src/patterns/Logo/Logo.spec.md +22 -0
  131. package/packages/ui/src/patterns/Logo/Logo.vue +160 -0
  132. package/packages/ui/src/patterns/PageSurface/PageSurface.spec.md +15 -0
  133. package/packages/ui/src/patterns/PageSurface/PageSurface.vue +85 -0
  134. package/packages/ui/src/patterns/PanelChrome/PanelChrome.spec.md +39 -0
  135. package/packages/ui/src/patterns/PanelChrome/PanelChrome.types.ts +1 -0
  136. package/packages/ui/src/patterns/PanelChrome/PanelChrome.vue +187 -0
  137. package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.spec.md +31 -0
  138. package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.types.ts +23 -0
  139. package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.vue +354 -0
  140. package/packages/ui/src/patterns/RecordList/RecordList.spec.md +35 -0
  141. package/packages/ui/src/patterns/RecordList/RecordList.test.ts +42 -0
  142. package/packages/ui/src/patterns/RecordList/RecordList.types.ts +9 -0
  143. package/packages/ui/src/patterns/RecordList/RecordList.utils.ts +5 -0
  144. package/packages/ui/src/patterns/RecordList/RecordList.vue +134 -0
  145. package/packages/ui/src/patterns/SectionClarifier/SectionClarifier.vue +85 -0
  146. package/packages/ui/src/patterns/SectionIntro/SectionIntro.spec.md +25 -0
  147. package/packages/ui/src/patterns/SectionIntro/SectionIntro.types.ts +7 -0
  148. package/packages/ui/src/patterns/SectionIntro/SectionIntro.vue +141 -0
  149. package/packages/ui/src/patterns/SidebarNav/SidebarNav.spec.md +34 -0
  150. package/packages/ui/src/patterns/SidebarNav/SidebarNav.types.ts +17 -0
  151. package/packages/ui/src/patterns/SidebarNav/SidebarNav.vue +110 -0
  152. package/packages/ui/src/patterns/SplitView/SplitView.spec.md +28 -0
  153. package/packages/ui/src/patterns/SplitView/SplitView.test.ts +22 -0
  154. package/packages/ui/src/patterns/SplitView/SplitView.types.ts +3 -0
  155. package/packages/ui/src/patterns/SplitView/SplitView.utils.ts +13 -0
  156. package/packages/ui/src/patterns/SplitView/SplitView.vue +39 -0
  157. package/packages/ui/src/patterns/StepList/StepList.spec.md +15 -0
  158. package/packages/ui/src/patterns/StepList/StepList.types.ts +4 -0
  159. package/packages/ui/src/patterns/StepList/StepList.vue +91 -0
  160. package/packages/ui/src/patterns/Verification/VerificationBadge.vue +97 -0
  161. package/packages/ui/src/patterns/Verification/VerificationComponents.test.ts +153 -0
  162. package/packages/ui/src/patterns/Verification/VerificationDetailsPanel.vue +270 -0
  163. package/packages/ui/src/patterns/Verification/VerificationSummary.vue +171 -0
  164. package/packages/ui/src/patterns/Verification/index.ts +6 -0
  165. package/packages/ui/src/patterns/Verification/verification.types.ts +8 -0
  166. package/packages/ui/src/patterns/Verification/verification.utils.test.ts +37 -0
  167. package/packages/ui/src/patterns/Verification/verification.utils.ts +75 -0
  168. package/packages/ui/src/patterns/index.ts +25 -0
  169. package/packages/ui/src/primitives/Accordian/Accordian.vue +11 -0
  170. package/packages/ui/src/primitives/Accordian/AccordianItem.vue +14 -0
  171. package/packages/ui/src/primitives/Accordion/Accordion.props.ts +21 -0
  172. package/packages/ui/src/primitives/Accordion/Accordion.spec.md +50 -0
  173. package/packages/ui/src/primitives/Accordion/Accordion.types.ts +4 -0
  174. package/packages/ui/src/primitives/Accordion/Accordion.variants.ts +12 -0
  175. package/packages/ui/src/primitives/Accordion/Accordion.vue +71 -0
  176. package/packages/ui/src/primitives/Accordion/AccordionItem.props.ts +14 -0
  177. package/packages/ui/src/primitives/Accordion/AccordionItem.vue +40 -0
  178. package/packages/ui/src/primitives/Badge/Badge.props.ts +17 -0
  179. package/packages/ui/src/primitives/Badge/Badge.spec.md +17 -0
  180. package/packages/ui/src/primitives/Badge/Badge.types.ts +15 -0
  181. package/packages/ui/src/primitives/Badge/Badge.variants.ts +48 -0
  182. package/packages/ui/src/primitives/Badge/Badge.vue +31 -0
  183. package/packages/ui/src/primitives/Button/Button.props.ts +29 -0
  184. package/packages/ui/src/primitives/Button/Button.spec.md +139 -0
  185. package/packages/ui/src/primitives/Button/Button.types.ts +19 -0
  186. package/packages/ui/src/primitives/Button/Button.variants.ts +72 -0
  187. package/packages/ui/src/primitives/Button/Button.vue +90 -0
  188. package/packages/ui/src/primitives/Card/Card.props.ts +17 -0
  189. package/packages/ui/src/primitives/Card/Card.spec.md +29 -0
  190. package/packages/ui/src/primitives/Card/Card.types.ts +12 -0
  191. package/packages/ui/src/primitives/Card/Card.variants.ts +27 -0
  192. package/packages/ui/src/primitives/Card/Card.vue +37 -0
  193. package/packages/ui/src/primitives/Checkbox/Checkbox.props.ts +21 -0
  194. package/packages/ui/src/primitives/Checkbox/Checkbox.spec.md +51 -0
  195. package/packages/ui/src/primitives/Checkbox/Checkbox.types.ts +4 -0
  196. package/packages/ui/src/primitives/Checkbox/Checkbox.variants.ts +34 -0
  197. package/packages/ui/src/primitives/Checkbox/Checkbox.vue +92 -0
  198. package/packages/ui/src/primitives/Dialog/Dialog.props.ts +29 -0
  199. package/packages/ui/src/primitives/Dialog/Dialog.spec.md +52 -0
  200. package/packages/ui/src/primitives/Dialog/Dialog.types.ts +3 -0
  201. package/packages/ui/src/primitives/Dialog/Dialog.variants.ts +27 -0
  202. package/packages/ui/src/primitives/Dialog/Dialog.vue +78 -0
  203. package/packages/ui/src/primitives/Drawer/Drawer.props.ts +33 -0
  204. package/packages/ui/src/primitives/Drawer/Drawer.spec.md +50 -0
  205. package/packages/ui/src/primitives/Drawer/Drawer.types.ts +5 -0
  206. package/packages/ui/src/primitives/Drawer/Drawer.variants.ts +35 -0
  207. package/packages/ui/src/primitives/Drawer/Drawer.vue +88 -0
  208. package/packages/ui/src/primitives/FieldMessage/FieldMessage.props.ts +17 -0
  209. package/packages/ui/src/primitives/FieldMessage/FieldMessage.spec.md +35 -0
  210. package/packages/ui/src/primitives/FieldMessage/FieldMessage.types.ts +5 -0
  211. package/packages/ui/src/primitives/FieldMessage/FieldMessage.variants.ts +14 -0
  212. package/packages/ui/src/primitives/FieldMessage/FieldMessage.vue +40 -0
  213. package/packages/ui/src/primitives/FileInput/FileInput.props.ts +41 -0
  214. package/packages/ui/src/primitives/FileInput/FileInput.types.ts +6 -0
  215. package/packages/ui/src/primitives/FileInput/FileInput.variants.ts +46 -0
  216. package/packages/ui/src/primitives/FileInput/FileInput.vue +163 -0
  217. package/packages/ui/src/primitives/Input/Input.props.ts +29 -0
  218. package/packages/ui/src/primitives/Input/Input.spec.md +79 -0
  219. package/packages/ui/src/primitives/Input/Input.types.ts +13 -0
  220. package/packages/ui/src/primitives/Input/Input.variants.ts +54 -0
  221. package/packages/ui/src/primitives/Input/Input.vue +99 -0
  222. package/packages/ui/src/primitives/Label/Label.props.ts +25 -0
  223. package/packages/ui/src/primitives/Label/Label.spec.md +31 -0
  224. package/packages/ui/src/primitives/Label/Label.types.ts +3 -0
  225. package/packages/ui/src/primitives/Label/Label.variants.ts +17 -0
  226. package/packages/ui/src/primitives/Label/Label.vue +38 -0
  227. package/packages/ui/src/primitives/Menu/Menu.props.ts +17 -0
  228. package/packages/ui/src/primitives/Menu/Menu.spec.md +38 -0
  229. package/packages/ui/src/primitives/Menu/Menu.types.ts +10 -0
  230. package/packages/ui/src/primitives/Menu/Menu.variants.ts +10 -0
  231. package/packages/ui/src/primitives/Menu/Menu.vue +57 -0
  232. package/packages/ui/src/primitives/Popover/Popover.props.ts +25 -0
  233. package/packages/ui/src/primitives/Popover/Popover.spec.md +49 -0
  234. package/packages/ui/src/primitives/Popover/Popover.types.ts +3 -0
  235. package/packages/ui/src/primitives/Popover/Popover.variants.ts +18 -0
  236. package/packages/ui/src/primitives/Popover/Popover.vue +74 -0
  237. package/packages/ui/src/primitives/RadioGroup/RadioGroup.props.ts +29 -0
  238. package/packages/ui/src/primitives/RadioGroup/RadioGroup.spec.md +50 -0
  239. package/packages/ui/src/primitives/RadioGroup/RadioGroup.types.ts +12 -0
  240. package/packages/ui/src/primitives/RadioGroup/RadioGroup.variants.ts +48 -0
  241. package/packages/ui/src/primitives/RadioGroup/RadioGroup.vue +87 -0
  242. package/packages/ui/src/primitives/Separator/Separator.props.ts +9 -0
  243. package/packages/ui/src/primitives/Separator/Separator.spec.md +15 -0
  244. package/packages/ui/src/primitives/Separator/Separator.types.ts +3 -0
  245. package/packages/ui/src/primitives/Separator/Separator.variants.ts +8 -0
  246. package/packages/ui/src/primitives/Separator/Separator.vue +23 -0
  247. package/packages/ui/src/primitives/Skeleton/Skeleton.props.ts +21 -0
  248. package/packages/ui/src/primitives/Skeleton/Skeleton.spec.md +18 -0
  249. package/packages/ui/src/primitives/Skeleton/Skeleton.types.ts +5 -0
  250. package/packages/ui/src/primitives/Skeleton/Skeleton.variants.ts +18 -0
  251. package/packages/ui/src/primitives/Skeleton/Skeleton.vue +37 -0
  252. package/packages/ui/src/primitives/Spinner/Spinner.props.ts +13 -0
  253. package/packages/ui/src/primitives/Spinner/Spinner.spec.md +16 -0
  254. package/packages/ui/src/primitives/Spinner/Spinner.types.ts +5 -0
  255. package/packages/ui/src/primitives/Spinner/Spinner.variants.ts +15 -0
  256. package/packages/ui/src/primitives/Spinner/Spinner.vue +33 -0
  257. package/packages/ui/src/primitives/SplitButton/SplitButton.vue +108 -0
  258. package/packages/ui/src/primitives/Switch/Switch.props.ts +21 -0
  259. package/packages/ui/src/primitives/Switch/Switch.spec.md +49 -0
  260. package/packages/ui/src/primitives/Switch/Switch.types.ts +3 -0
  261. package/packages/ui/src/primitives/Switch/Switch.variants.ts +34 -0
  262. package/packages/ui/src/primitives/Switch/Switch.vue +71 -0
  263. package/packages/ui/src/primitives/Tabs/Tabs.props.ts +25 -0
  264. package/packages/ui/src/primitives/Tabs/Tabs.spec.md +48 -0
  265. package/packages/ui/src/primitives/Tabs/Tabs.types.ts +11 -0
  266. package/packages/ui/src/primitives/Tabs/Tabs.variants.ts +28 -0
  267. package/packages/ui/src/primitives/Tabs/Tabs.vue +59 -0
  268. package/packages/ui/src/primitives/Textarea/Textarea.props.ts +33 -0
  269. package/packages/ui/src/primitives/Textarea/Textarea.spec.md +59 -0
  270. package/packages/ui/src/primitives/Textarea/Textarea.types.ts +5 -0
  271. package/packages/ui/src/primitives/Textarea/Textarea.variants.ts +27 -0
  272. package/packages/ui/src/primitives/Textarea/Textarea.vue +74 -0
  273. package/packages/ui/src/primitives/Tooltip/Tooltip.props.ts +21 -0
  274. package/packages/ui/src/primitives/Tooltip/Tooltip.spec.md +45 -0
  275. package/packages/ui/src/primitives/Tooltip/Tooltip.types.ts +3 -0
  276. package/packages/ui/src/primitives/Tooltip/Tooltip.variants.ts +4 -0
  277. package/packages/ui/src/primitives/Tooltip/Tooltip.vue +31 -0
  278. package/packages/ui/src/primitives/TreeView/TreeView.types.ts +10 -0
  279. package/packages/ui/src/primitives/TreeView/TreeView.vue +113 -0
  280. package/packages/ui/src/primitives/TreeView/TreeViewNode.vue +190 -0
  281. package/packages/ui/src/primitives/index.ts +29 -0
  282. package/packages/ui/src/style.css +7 -0
  283. package/packages/ui/src/style.js +1 -0
  284. package/packages/ui/src/themes/armour.css +147 -0
  285. package/packages/ui/src/themes/aurora.css +147 -0
  286. package/packages/ui/src/themes/citrine-ash.css +147 -0
  287. package/packages/ui/src/themes/concord.css +147 -0
  288. package/packages/ui/src/themes/garnet-honey.css +147 -0
  289. package/packages/ui/src/themes/harbor-rose.css +147 -0
  290. package/packages/ui/src/themes/ledger.css +147 -0
  291. package/packages/ui/src/themes/neon-noir.css +74 -0
  292. package/packages/ui/src/themes/obsidian-iris.css +147 -0
  293. package/packages/ui/src/themes/pixpax.css +147 -0
  294. package/packages/ui/src/themes/print.css +147 -0
  295. package/packages/ui/src/themes/prism.css +147 -0
  296. package/packages/ui/src/themes/proof.css +145 -0
  297. package/packages/ui/src/themes/semanticThemeContract.js +2256 -0
  298. package/packages/ui/src/themes/spruce-ink.css +147 -0
  299. package/packages/ui/src/themes/sunset.css +147 -0
  300. package/packages/ui/tailwind.config.js +64 -0
  301. package/packages/ui/vite.config.js +35 -0
  302. package/packages/ui/vite.config.js.timestamp-1780697224943-89fbc929987bc.mjs +38 -0
  303. package/packages/utils/CHANGELOG.md +111 -0
  304. package/packages/utils/README.md +3 -0
  305. package/packages/utils/package.json +46 -0
  306. package/packages/utils/src/index.test.js +39 -0
  307. package/packages/utils/src/index.ts +289 -0
  308. package/packages/utils/tsconfig.build.json +12 -0
  309. package/packages/utils/vite.config.js +28 -0
  310. package/pnpm-workspace.yaml +8 -0
  311. package/scripts/vite/package-lib-config.ts +59 -0
  312. package/tsconfig.json +24 -0
  313. package/tsconfig.node.json +9 -0
@@ -0,0 +1,420 @@
1
+ /**
2
+ * COMPLETE DESIGN SYSTEM
3
+ * World-class design tokens and utilities for premium SaaS interfaces
4
+ * Inspired by Stripe, Airbnb, Linear, and Vercel
5
+ */
6
+
7
+ // === CORE COLOR PALETTE ===
8
+ export const colors = {
9
+ // Sophisticated grays (backbone of professional design)
10
+ gray: {
11
+ 25: "#fcfcfd",
12
+ 50: "#f9fafb",
13
+ 100: "#f2f4f7",
14
+ 200: "#e4e7ec",
15
+ 300: "#d0d5dd",
16
+ 400: "#98a2b3",
17
+ 500: "#667085",
18
+ 600: "#475467",
19
+ 700: "#344054",
20
+ 800: "#1d2939",
21
+ 900: "#101828",
22
+ 950: "#0c111d",
23
+ },
24
+
25
+ // Primary brand colors
26
+ primary: {
27
+ 50: "#f0f0ff",
28
+ 100: "#e0e0ff",
29
+ 200: "#c7c7ff",
30
+ 300: "#a5a5ff",
31
+ 400: "#8080ff",
32
+ 500: "#635bff", // Main brand
33
+ 600: "#5b52ff",
34
+ 700: "#4f46e5",
35
+ 800: "#4338ca",
36
+ 900: "#3730a3",
37
+ 950: "#1e1b4b",
38
+ },
39
+
40
+ // Success/positive
41
+ success: {
42
+ 50: "#f0fdf4",
43
+ 100: "#dcfce7",
44
+ 200: "#bbf7d0",
45
+ 300: "#86efac",
46
+ 400: "#4ade80",
47
+ 500: "#00d924", // Main success
48
+ 600: "#00c221",
49
+ 700: "#00a01c",
50
+ 800: "#008018",
51
+ 900: "#006613",
52
+ },
53
+
54
+ // Warning/attention
55
+ warning: {
56
+ 50: "#fefaf0",
57
+ 100: "#fef3c7",
58
+ 200: "#fed7aa",
59
+ 300: "#fdba74",
60
+ 400: "#fb923c",
61
+ 500: "#f5a623", // Main warning
62
+ 600: "#ea580c",
63
+ 700: "#c2410c",
64
+ 800: "#9a3412",
65
+ 900: "#7c2d12",
66
+ },
67
+
68
+ // Error/danger
69
+ error: {
70
+ 50: "#fef2f2",
71
+ 100: "#fee2e2",
72
+ 200: "#fecaca",
73
+ 300: "#fca5a5",
74
+ 400: "#f87171",
75
+ 500: "#e25950", // Main error
76
+ 600: "#dc2626",
77
+ 700: "#b91c1c",
78
+ 800: "#991b1b",
79
+ 900: "#7f1d1d",
80
+ },
81
+
82
+ // Info/accent
83
+ info: {
84
+ 50: "#eff6ff",
85
+ 100: "#dbeafe",
86
+ 200: "#bfdbfe",
87
+ 300: "#93c5fd",
88
+ 400: "#60a5fa",
89
+ 500: "#0073e6", // Main info
90
+ 600: "#0066cc",
91
+ 700: "#1d4ed8",
92
+ 800: "#1e40af",
93
+ 900: "#1e3a8a",
94
+ },
95
+ };
96
+
97
+ // === SPACING SYSTEM ===
98
+ export const spacing = {
99
+ px: "1px",
100
+ 0: "0",
101
+ 0.5: "0.125rem", // 2px
102
+ 1: "0.25rem", // 4px
103
+ 1.5: "0.375rem", // 6px
104
+ 2: "0.5rem", // 8px
105
+ 2.5: "0.625rem", // 10px
106
+ 3: "0.75rem", // 12px
107
+ 3.5: "0.875rem", // 14px
108
+ 4: "1rem", // 16px - Base unit
109
+ 5: "1.25rem", // 20px
110
+ 6: "1.5rem", // 24px
111
+ 7: "1.75rem", // 28px
112
+ 8: "2rem", // 32px
113
+ 9: "2.25rem", // 36px
114
+ 10: "2.5rem", // 40px
115
+ 11: "2.75rem", // 44px
116
+ 12: "3rem", // 48px
117
+ 14: "3.5rem", // 56px
118
+ 16: "4rem", // 64px
119
+ 20: "5rem", // 80px
120
+ 24: "6rem", // 96px
121
+ 28: "7rem", // 112px
122
+ 32: "8rem", // 128px
123
+ 36: "9rem", // 144px
124
+ 40: "10rem", // 160px
125
+ 44: "11rem", // 176px
126
+ 48: "12rem", // 192px
127
+ 52: "13rem", // 208px
128
+ 56: "14rem", // 224px
129
+ 60: "15rem", // 240px
130
+ 64: "16rem", // 256px
131
+ 72: "18rem", // 288px
132
+ 80: "20rem", // 320px
133
+ 96: "24rem", // 384px
134
+ };
135
+
136
+ // === TYPOGRAPHY SYSTEM ===
137
+ export const typography = {
138
+ fontFamily: {
139
+ sans: [
140
+ "Inter var",
141
+ "Inter",
142
+ "-apple-system",
143
+ "BlinkMacSystemFont",
144
+ "Segoe UI",
145
+ "Roboto",
146
+ "sans-serif",
147
+ ],
148
+ mono: ["JetBrains Mono", "Fira Code", "SF Mono", "Monaco", "Consolas", "monospace"],
149
+ display: ["Cal Sans", "Inter var", "Inter", "sans-serif"], // For headings
150
+ },
151
+
152
+ fontSize: {
153
+ xs: ["0.75rem", { lineHeight: "1rem", letterSpacing: "0.05em" }],
154
+ sm: ["0.875rem", { lineHeight: "1.25rem", letterSpacing: "0.025em" }],
155
+ base: ["1rem", { lineHeight: "1.5rem", letterSpacing: "0" }],
156
+ lg: ["1.125rem", { lineHeight: "1.75rem", letterSpacing: "-0.025em" }],
157
+ xl: ["1.25rem", { lineHeight: "1.75rem", letterSpacing: "-0.025em" }],
158
+ "2xl": ["1.5rem", { lineHeight: "2rem", letterSpacing: "-0.05em" }],
159
+ "3xl": ["1.875rem", { lineHeight: "2.25rem", letterSpacing: "-0.05em" }],
160
+ "4xl": ["2.25rem", { lineHeight: "2.5rem", letterSpacing: "-0.075em" }],
161
+ "5xl": ["3rem", { lineHeight: "1", letterSpacing: "-0.075em" }],
162
+ "6xl": ["3.75rem", { lineHeight: "1", letterSpacing: "-0.075em" }],
163
+ "7xl": ["4.5rem", { lineHeight: "1", letterSpacing: "-0.075em" }],
164
+ "8xl": ["6rem", { lineHeight: "1", letterSpacing: "-0.075em" }],
165
+ "9xl": ["8rem", { lineHeight: "1", letterSpacing: "-0.075em" }],
166
+ },
167
+
168
+ fontWeight: {
169
+ thin: "100",
170
+ extralight: "200",
171
+ light: "300",
172
+ normal: "400",
173
+ medium: "500",
174
+ semibold: "600",
175
+ bold: "700",
176
+ extrabold: "800",
177
+ black: "900",
178
+ },
179
+ };
180
+
181
+ // === COMPONENT SYSTEM ===
182
+ export const components = {
183
+ // Button variants with precise styling
184
+ button: {
185
+ base: {
186
+ display: "inline-flex",
187
+ alignItems: "center",
188
+ justifyContent: "center",
189
+ fontWeight: "500",
190
+ transition: "color 180ms ease, background-color 180ms ease, box-shadow 180ms ease",
191
+ borderRadius: "0.75rem",
192
+ border: "1px solid transparent",
193
+ cursor: "pointer",
194
+ outline: "none",
195
+ position: "relative",
196
+ overflow: "hidden",
197
+ },
198
+
199
+ sizes: {
200
+ xs: {
201
+ height: "1.75rem", // 28px
202
+ padding: "0 0.6rem",
203
+ fontSize: "0.75rem",
204
+ gap: "0.25rem",
205
+ },
206
+ sm: {
207
+ height: "2rem", // 32px
208
+ padding: "0 0.85rem",
209
+ fontSize: "0.8125rem",
210
+ gap: "0.35rem",
211
+ },
212
+ base: {
213
+ height: "2.5rem", // 40px
214
+ padding: "0 1rem",
215
+ fontSize: "0.875rem",
216
+ gap: "0.5rem",
217
+ },
218
+ lg: {
219
+ height: "2.75rem", // 44px
220
+ padding: "0 1.15rem",
221
+ fontSize: "0.9375rem",
222
+ gap: "0.45rem",
223
+ },
224
+ xl: {
225
+ height: "3rem", // 48px
226
+ padding: "0 1.35rem",
227
+ fontSize: "1rem",
228
+ gap: "0.6rem",
229
+ },
230
+ },
231
+
232
+ variants: {
233
+ primary: {
234
+ backgroundColor: colors.primary[500],
235
+ color: "white",
236
+ hover: {
237
+ backgroundColor: colors.primary[600],
238
+ boxShadow: "0 6px 18px rgba(99, 91, 255, 0.18)",
239
+ },
240
+ focus: {
241
+ boxShadow: "0 0 0 3px rgba(99, 91, 255, 0.2)",
242
+ },
243
+ },
244
+ secondary: {
245
+ backgroundColor: colors.gray[100],
246
+ color: colors.gray[800],
247
+ border: `1px solid ${colors.gray[300]}`,
248
+ hover: {
249
+ backgroundColor: colors.gray[200],
250
+ borderColor: colors.gray[400],
251
+ boxShadow: "0 8px 20px rgba(52, 64, 84, 0.08)",
252
+ },
253
+ },
254
+ outline: {
255
+ backgroundColor: "transparent",
256
+ color: colors.primary[600],
257
+ border: `1px solid ${colors.primary[300]}`,
258
+ hover: {
259
+ backgroundColor: colors.primary[50],
260
+ borderColor: colors.primary[400],
261
+ boxShadow: "0 0 0 1px rgba(99, 91, 255, 0.25)",
262
+ },
263
+ },
264
+ ghost: {
265
+ backgroundColor: "transparent",
266
+ color: colors.gray[700],
267
+ hover: {
268
+ backgroundColor: colors.gray[100],
269
+ },
270
+ },
271
+ },
272
+ },
273
+
274
+ // Card system
275
+ card: {
276
+ base: {
277
+ backgroundColor: "white",
278
+ borderRadius: "0.75rem",
279
+ border: `1px solid ${colors.gray[200]}`,
280
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
281
+ transition: "all 200ms ease-out",
282
+ },
283
+ variants: {
284
+ default: {},
285
+ elevated: {
286
+ boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
287
+ hover: {
288
+ boxShadow: "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",
289
+ transform: "translateY(-2px)",
290
+ },
291
+ },
292
+ interactive: {
293
+ cursor: "pointer",
294
+ hover: {
295
+ borderColor: colors.primary[300],
296
+ boxShadow: "0 4px 12px rgba(99, 91, 255, 0.15)",
297
+ },
298
+ },
299
+ },
300
+ },
301
+
302
+ // Input system
303
+ input: {
304
+ base: {
305
+ width: "100%",
306
+ padding: "0.5rem 0.75rem",
307
+ backgroundColor: "white",
308
+ border: `1px solid ${colors.gray[300]}`,
309
+ borderRadius: "0.5rem",
310
+ fontSize: "0.875rem",
311
+ transition: "all 200ms ease-out",
312
+ outline: "none",
313
+ },
314
+ states: {
315
+ focus: {
316
+ borderColor: colors.primary[500],
317
+ boxShadow: "0 0 0 3px rgba(99, 91, 255, 0.1)",
318
+ },
319
+ error: {
320
+ borderColor: colors.error[500],
321
+ boxShadow: "0 0 0 3px rgba(226, 89, 80, 0.1)",
322
+ },
323
+ disabled: {
324
+ backgroundColor: colors.gray[50],
325
+ color: colors.gray[400],
326
+ cursor: "not-allowed",
327
+ },
328
+ },
329
+ },
330
+ };
331
+
332
+ // === LAYOUT SYSTEM ===
333
+ export const layout = {
334
+ containers: {
335
+ xs: "20rem", // 320px
336
+ sm: "24rem", // 384px
337
+ md: "28rem", // 448px
338
+ lg: "32rem", // 512px
339
+ xl: "36rem", // 576px
340
+ "2xl": "42rem", // 672px
341
+ "3xl": "48rem", // 768px
342
+ "4xl": "56rem", // 896px
343
+ "5xl": "64rem", // 1024px
344
+ "6xl": "72rem", // 1152px
345
+ "7xl": "80rem", // 1280px
346
+ },
347
+
348
+ breakpoints: {
349
+ sm: "640px",
350
+ md: "768px",
351
+ lg: "1024px",
352
+ xl: "1280px",
353
+ "2xl": "1536px",
354
+ },
355
+
356
+ grid: {
357
+ cols: 12,
358
+ gap: "1.5rem", // 24px
359
+ },
360
+
361
+ app: {
362
+ headerHeight: "4rem", // 64px
363
+ sidebarWidth: "16rem", // 256px
364
+ sidebarCollapsed: "4rem", // 64px
365
+ maxContentWidth: "80rem", // 1280px
366
+ },
367
+ };
368
+
369
+ // === ANIMATION SYSTEM ===
370
+ export const animations = {
371
+ durations: {
372
+ fast: "150ms",
373
+ base: "200ms",
374
+ slow: "300ms",
375
+ slower: "500ms",
376
+ },
377
+
378
+ easings: {
379
+ linear: "linear",
380
+ out: "cubic-bezier(0, 0, 0.2, 1)",
381
+ in: "cubic-bezier(0.4, 0, 1, 1)",
382
+ "in-out": "cubic-bezier(0.4, 0, 0.2, 1)",
383
+ bounce: "cubic-bezier(0.68, -0.55, 0.265, 1.55)",
384
+ elastic: "cubic-bezier(0.175, 0.885, 0.32, 1.275)",
385
+ },
386
+
387
+ micro: {
388
+ hover: "transform 200ms ease-out",
389
+ press: "transform 100ms ease-out",
390
+ focus: "box-shadow 200ms ease-out",
391
+ },
392
+ };
393
+
394
+ // === Z-INDEX SCALE ===
395
+ export const zIndex = {
396
+ hide: -1,
397
+ auto: "auto",
398
+ base: 0,
399
+ docked: 10,
400
+ dropdown: 1000,
401
+ sticky: 1100,
402
+ banner: 1200,
403
+ overlay: 1300,
404
+ modal: 1400,
405
+ popover: 1500,
406
+ skipLink: 1600,
407
+ toast: 1700,
408
+ tooltip: 1800,
409
+ };
410
+
411
+ // Export everything as the complete design system
412
+ export const designSystem = {
413
+ colors,
414
+ spacing,
415
+ typography,
416
+ components,
417
+ layout,
418
+ animations,
419
+ zIndex,
420
+ };
@@ -0,0 +1,140 @@
1
+ /* This file is generated from src/themes/semanticThemeContract.js. */
2
+
3
+ :root {
4
+ color-scheme: light;
5
+ --ui-bg: #fbf7f0;
6
+ --ui-fg: #181615;
7
+ --ui-fg-muted: #5f5b55;
8
+ --ui-surface: #f2ece2;
9
+ --ui-surface-hover: #e7e0d4;
10
+ --ui-border: rgba(24, 22, 21, 0.12);
11
+ --ui-primary: #6d28d9;
12
+ --ui-on-primary: #fbf7f0;
13
+ --ui-primary-muted: rgba(109, 40, 217, 0.14);
14
+ --ui-primary-hover: rgba(109, 40, 217, 0.22);
15
+ --ui-primary-active: rgba(109, 40, 217, 0.3);
16
+ --ui-accent: #b45309;
17
+ --ui-on-accent: #fbf7f0;
18
+ --ui-accent-muted: rgba(180, 83, 9, 0.14);
19
+ --ui-accent-hover: rgba(180, 83, 9, 0.22);
20
+ --ui-accent-active: rgba(180, 83, 9, 0.3);
21
+ --ui-secondary: #3eca9b;
22
+ --ui-on-secondary: #0f1a16;
23
+ --ui-secondary-muted: rgba(62, 202, 155, 0.14);
24
+ --ui-secondary-hover: rgba(62, 202, 155, 0.22);
25
+ --ui-secondary-active: rgba(62, 202, 155, 0.3);
26
+ --ui-critical: #b42318;
27
+ --ui-on-critical: #fbf7f0;
28
+ --ui-critical-muted: rgba(180, 35, 24, 0.16);
29
+ --ui-critical-hover: rgba(180, 35, 24, 0.24);
30
+ --ui-critical-active: rgba(180, 35, 24, 0.32);
31
+ --ui-success: #1f8f62;
32
+ --ui-on-success: #fbf7f0;
33
+ --ui-success-muted: rgba(31, 143, 98, 0.16);
34
+ --ui-success-hover: rgba(31, 143, 98, 0.24);
35
+ --ui-success-active: rgba(31, 143, 98, 0.32);
36
+ --ui-warning: #b45309;
37
+ --ui-on-warning: #fbf7f0;
38
+ --ui-warning-muted: rgba(180, 83, 9, 0.16);
39
+ --ui-warning-hover: rgba(180, 83, 9, 0.24);
40
+ --ui-warning-active: rgba(180, 83, 9, 0.32);
41
+ --ui-info: #2563eb;
42
+ --ui-on-info: #fbf7f0;
43
+ --ui-info-muted: rgba(37, 99, 235, 0.16);
44
+ --ui-info-hover: rgba(37, 99, 235, 0.24);
45
+ --ui-info-active: rgba(37, 99, 235, 0.32);
46
+ --ui-danger: var(--ui-critical);
47
+ --ui-on-danger: var(--ui-on-critical);
48
+ --ui-danger-muted: var(--ui-critical-muted);
49
+ --ui-danger-hover: var(--ui-critical-hover);
50
+ --ui-danger-active: var(--ui-critical-active);
51
+ --ui-tonal-secondary: rgba(24, 22, 21, 0.06);
52
+ --ui-tonal-secondary-hover: rgba(24, 22, 21, 0.1);
53
+ --ui-tonal-tertiary: rgba(24, 22, 21, 0.03);
54
+ --ui-tonal-tertiary-hover: rgba(24, 22, 21, 0.07);
55
+ --ui-ring: rgba(109, 40, 217, 0.4);
56
+ --ui-glow-primary: 0 0 0 2px rgba(109, 40, 217, 0.25);
57
+ --ui-glow-accent: 0 0 0 2px rgba(180, 83, 9, 0.22);
58
+ --ui-glow-critical: 0 0 0 2px rgba(180, 35, 24, 0.25);
59
+ --ui-glow-success: 0 0 0 2px rgba(31, 143, 98, 0.22);
60
+ --ui-radius-sm: 8px;
61
+ --ui-radius-md: 12px;
62
+ --ui-radius-lg: 16px;
63
+ --ui-duration-fast: 120ms;
64
+ --ui-duration-normal: 200ms;
65
+ --ui-duration-slow: 300ms;
66
+ --ui-ease-out: cubic-bezier(0, 0, 0.2, 1);
67
+ --ui-shadow-sm: 0 1px 2px rgba(10, 8, 6, 0.12);
68
+ --ui-shadow-md: 0 6px 18px rgba(10, 8, 6, 0.22);
69
+ --ui-lift-hover: -0.5px;
70
+ --ui-scale-active: 0.97;
71
+ --ui-logo-start: #FF5757;
72
+ --ui-logo-end: #8C52FF;
73
+ --ui-logo-cutout: #fbf7f0;
74
+ }
75
+
76
+ @media (prefers-color-scheme: dark) {
77
+ :root {
78
+ color-scheme: dark;
79
+ --ui-bg: #2d3047;
80
+ --ui-fg: #e9e6df;
81
+ --ui-fg-muted: #b7b2a8;
82
+ --ui-surface: #1b1a18;
83
+ --ui-surface-hover: #24231f;
84
+ --ui-border: rgba(233, 230, 223, 0.12);
85
+ --ui-primary: #419d78;
86
+ --ui-on-primary: #141311;
87
+ --ui-primary-muted: rgba(196, 181, 253, 0.14);
88
+ --ui-primary-hover: rgba(196, 181, 253, 0.22);
89
+ --ui-primary-active: rgba(196, 181, 253, 0.3);
90
+ --ui-accent: #f59e0b;
91
+ --ui-on-accent: #141311;
92
+ --ui-accent-muted: rgba(245, 158, 11, 0.16);
93
+ --ui-accent-hover: rgba(245, 158, 11, 0.24);
94
+ --ui-accent-active: rgba(245, 158, 11, 0.32);
95
+ --ui-secondary: #2b9572;
96
+ --ui-on-secondary: #0b1411;
97
+ --ui-secondary-muted: rgba(43, 149, 114, 0.16);
98
+ --ui-secondary-hover: rgba(43, 149, 114, 0.24);
99
+ --ui-secondary-active: rgba(43, 149, 114, 0.32);
100
+ --ui-critical: #f87171;
101
+ --ui-on-critical: #141311;
102
+ --ui-critical-muted: rgba(248, 113, 113, 0.16);
103
+ --ui-critical-hover: rgba(248, 113, 113, 0.24);
104
+ --ui-critical-active: rgba(248, 113, 113, 0.32);
105
+ --ui-success: #34d399;
106
+ --ui-on-success: #0b1411;
107
+ --ui-success-muted: rgba(52, 211, 153, 0.16);
108
+ --ui-success-hover: rgba(52, 211, 153, 0.24);
109
+ --ui-success-active: rgba(52, 211, 153, 0.32);
110
+ --ui-warning: #f59e0b;
111
+ --ui-on-warning: #141311;
112
+ --ui-warning-muted: rgba(245, 158, 11, 0.16);
113
+ --ui-warning-hover: rgba(245, 158, 11, 0.24);
114
+ --ui-warning-active: rgba(245, 158, 11, 0.32);
115
+ --ui-info: #60a5fa;
116
+ --ui-on-info: #0b1411;
117
+ --ui-info-muted: rgba(96, 165, 250, 0.16);
118
+ --ui-info-hover: rgba(96, 165, 250, 0.24);
119
+ --ui-info-active: rgba(96, 165, 250, 0.32);
120
+ --ui-danger: var(--ui-critical);
121
+ --ui-on-danger: var(--ui-on-critical);
122
+ --ui-danger-muted: var(--ui-critical-muted);
123
+ --ui-danger-hover: var(--ui-critical-hover);
124
+ --ui-danger-active: var(--ui-critical-active);
125
+ --ui-tonal-secondary: rgba(233, 230, 223, 0.08);
126
+ --ui-tonal-secondary-hover: rgba(233, 230, 223, 0.14);
127
+ --ui-tonal-tertiary: rgba(233, 230, 223, 0.04);
128
+ --ui-tonal-tertiary-hover: rgba(233, 230, 223, 0.1);
129
+ --ui-ring: rgba(196, 181, 253, 0.5);
130
+ --ui-glow-primary: 0 0 0 2px rgba(196, 181, 253, 0.35);
131
+ --ui-glow-accent: 0 0 0 2px rgba(245, 158, 11, 0.35);
132
+ --ui-glow-critical: 0 0 0 2px rgba(248, 113, 113, 0.3);
133
+ --ui-glow-success: 0 0 0 2px rgba(52, 211, 153, 0.3);
134
+ --ui-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
135
+ --ui-shadow-md: 0 6px 18px rgba(0, 0, 0, 0.45);
136
+ --ui-logo-start: #FF6B6B;
137
+ --ui-logo-end: #A78BFA;
138
+ --ui-logo-cutout: #2d3047;
139
+ }
140
+ }