@adres/mgda-ui 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/brand-knowledge.json +451 -0
  2. package/knowledge/accordion.md +135 -0
  3. package/knowledge/activity-rings.md +123 -0
  4. package/knowledge/alert.md +184 -0
  5. package/knowledge/answer-actions.md +217 -0
  6. package/knowledge/aspect-ratio.md +82 -0
  7. package/knowledge/avatar.md +158 -0
  8. package/knowledge/badge.md +172 -0
  9. package/knowledge/bar-graph.md +167 -0
  10. package/knowledge/bento-grid.md +115 -0
  11. package/knowledge/blockquote.md +153 -0
  12. package/knowledge/box-list.md +177 -0
  13. package/knowledge/bullet-list.md +128 -0
  14. package/knowledge/button-group.md +179 -0
  15. package/knowledge/button.md +231 -0
  16. package/knowledge/calendar.md +168 -0
  17. package/knowledge/card.md +321 -0
  18. package/knowledge/cards-nav.md +170 -0
  19. package/knowledge/chain-of-thought.md +164 -0
  20. package/knowledge/chat-container.md +135 -0
  21. package/knowledge/chat-message.md +224 -0
  22. package/knowledge/checkbox-card.md +172 -0
  23. package/knowledge/checkbox.md +111 -0
  24. package/knowledge/citations.md +241 -0
  25. package/knowledge/combobox.md +265 -0
  26. package/knowledge/countdown-pill.md +153 -0
  27. package/knowledge/cta.md +118 -0
  28. package/knowledge/data-list.md +173 -0
  29. package/knowledge/data-table.md +220 -0
  30. package/knowledge/dialog.md +249 -0
  31. package/knowledge/drawer.md +236 -0
  32. package/knowledge/dropdown-menu.md +238 -0
  33. package/knowledge/dropzone.md +153 -0
  34. package/knowledge/email-chips-input.md +161 -0
  35. package/knowledge/empty-state.md +106 -0
  36. package/knowledge/entity-header.md +166 -0
  37. package/knowledge/feature-grid.md +120 -0
  38. package/knowledge/feedback-bar.md +127 -0
  39. package/knowledge/footer.md +116 -0
  40. package/knowledge/heading.md +189 -0
  41. package/knowledge/hero.md +361 -0
  42. package/knowledge/input-button.md +187 -0
  43. package/knowledge/input-group.md +185 -0
  44. package/knowledge/input.md +256 -0
  45. package/knowledge/inset.md +177 -0
  46. package/knowledge/kpi-card.md +206 -0
  47. package/knowledge/list-nav.md +181 -0
  48. package/knowledge/logo-cloud.md +102 -0
  49. package/knowledge/media-gallery.md +158 -0
  50. package/knowledge/message-actions.md +175 -0
  51. package/knowledge/nav-sidebar.md +225 -0
  52. package/knowledge/number-stepper.md +159 -0
  53. package/knowledge/page-header.md +109 -0
  54. package/knowledge/pagination.md +225 -0
  55. package/knowledge/popover.md +159 -0
  56. package/knowledge/pricing.md +132 -0
  57. package/knowledge/progress.md +156 -0
  58. package/knowledge/prompt-input.md +337 -0
  59. package/knowledge/prompt-suggestions.md +168 -0
  60. package/knowledge/quota-bar.md +160 -0
  61. package/knowledge/quote.md +116 -0
  62. package/knowledge/radio-card.md +172 -0
  63. package/knowledge/radio-group.md +135 -0
  64. package/knowledge/reasoning.md +142 -0
  65. package/knowledge/search.md +131 -0
  66. package/knowledge/section-nav.md +162 -0
  67. package/knowledge/segmented-control.md +181 -0
  68. package/knowledge/select-button.md +205 -0
  69. package/knowledge/select.md +210 -0
  70. package/knowledge/separator.md +75 -0
  71. package/knowledge/shimmer-text.md +140 -0
  72. package/knowledge/sidebar.md +227 -0
  73. package/knowledge/skeleton.md +142 -0
  74. package/knowledge/slider.md +133 -0
  75. package/knowledge/slideshow.md +159 -0
  76. package/knowledge/source.md +156 -0
  77. package/knowledge/spinner.md +120 -0
  78. package/knowledge/stat-strip.md +128 -0
  79. package/knowledge/stats.md +117 -0
  80. package/knowledge/step-indicator.md +157 -0
  81. package/knowledge/switch.md +88 -0
  82. package/knowledge/table.md +190 -0
  83. package/knowledge/tabs.md +169 -0
  84. package/knowledge/testimonials.md +115 -0
  85. package/knowledge/text-link.md +192 -0
  86. package/knowledge/text.md +194 -0
  87. package/knowledge/thinking-bar.md +115 -0
  88. package/knowledge/thinking-steps.md +140 -0
  89. package/knowledge/toaster.md +127 -0
  90. package/knowledge/toggle.md +113 -0
  91. package/knowledge/tool-call-card.md +241 -0
  92. package/knowledge/tooltip.md +120 -0
  93. package/knowledge/top-nav.md +138 -0
  94. package/knowledge.json +19854 -0
  95. package/package.json +94 -4
  96. package/src/components/accordion.stories.tsx +46 -0
  97. package/src/components/accordion.tsx +74 -0
  98. package/src/components/activity-rings.stories.tsx +73 -0
  99. package/src/components/activity-rings.tsx +121 -0
  100. package/src/components/alert.stories.tsx +43 -0
  101. package/src/components/alert.tsx +132 -0
  102. package/src/components/answer-actions.stories.tsx +54 -0
  103. package/src/components/answer-actions.test.tsx +37 -0
  104. package/src/components/answer-actions.tsx +313 -0
  105. package/src/components/aspect-ratio.stories.tsx +32 -0
  106. package/src/components/aspect-ratio.tsx +5 -0
  107. package/src/components/avatar.stories.tsx +40 -0
  108. package/src/components/avatar.tsx +154 -0
  109. package/src/components/badge.stories.tsx +27 -0
  110. package/src/components/badge.tsx +63 -0
  111. package/src/components/bar-graph.stories.tsx +28 -0
  112. package/src/components/bar-graph.tsx +204 -0
  113. package/src/components/bento-grid.stories.tsx +23 -0
  114. package/src/components/bento-grid.tsx +67 -0
  115. package/src/components/blockquote.stories.tsx +28 -0
  116. package/src/components/blockquote.tsx +88 -0
  117. package/src/components/box-list.stories.tsx +25 -0
  118. package/src/components/box-list.tsx +108 -0
  119. package/src/components/bullet-list.stories.tsx +22 -0
  120. package/src/components/bullet-list.tsx +101 -0
  121. package/src/components/button-group.stories.tsx +31 -0
  122. package/src/components/button-group.tsx +156 -0
  123. package/src/components/button.stories.tsx +66 -0
  124. package/src/components/button.test.ts +17 -0
  125. package/src/components/button.tsx +139 -0
  126. package/src/components/calendar.stories.tsx +25 -0
  127. package/src/components/calendar.tsx +367 -0
  128. package/src/components/card.stories.tsx +44 -0
  129. package/src/components/card.tsx +392 -0
  130. package/src/components/cards-nav.stories.tsx +35 -0
  131. package/src/components/cards-nav.tsx +115 -0
  132. package/src/components/chain-of-thought.stories.tsx +67 -0
  133. package/src/components/chain-of-thought.test.tsx +50 -0
  134. package/src/components/chain-of-thought.tsx +170 -0
  135. package/src/components/chat-container.stories.tsx +47 -0
  136. package/src/components/chat-container.test.tsx +49 -0
  137. package/src/components/chat-container.tsx +222 -0
  138. package/src/components/chat-message.stories.tsx +52 -0
  139. package/src/components/chat-message.test.tsx +36 -0
  140. package/src/components/chat-message.tsx +163 -0
  141. package/src/components/checkbox-card.stories.tsx +27 -0
  142. package/src/components/checkbox-card.tsx +200 -0
  143. package/src/components/checkbox.stories.tsx +26 -0
  144. package/src/components/checkbox.tsx +61 -0
  145. package/src/components/citations.stories.tsx +64 -0
  146. package/src/components/citations.test.tsx +61 -0
  147. package/src/components/citations.tsx +220 -0
  148. package/src/components/combobox.stories.tsx +184 -0
  149. package/src/components/combobox.test.tsx +82 -0
  150. package/src/components/combobox.tsx +407 -0
  151. package/src/components/countdown-pill.stories.tsx +24 -0
  152. package/src/components/countdown-pill.tsx +129 -0
  153. package/src/components/cta.stories.tsx +29 -0
  154. package/src/components/cta.tsx +52 -0
  155. package/src/components/data-list.stories.tsx +50 -0
  156. package/src/components/data-list.test.tsx +35 -0
  157. package/src/components/data-list.tsx +181 -0
  158. package/src/components/data-table.stories.tsx +29 -0
  159. package/src/components/data-table.tsx +200 -0
  160. package/src/components/dialog.stories.tsx +42 -0
  161. package/src/components/dialog.tsx +200 -0
  162. package/src/components/drawer.stories.tsx +48 -0
  163. package/src/components/drawer.tsx +385 -0
  164. package/src/components/dropdown-menu.stories.tsx +41 -0
  165. package/src/components/dropdown-menu.tsx +252 -0
  166. package/src/components/dropzone.stories.tsx +19 -0
  167. package/src/components/dropzone.tsx +250 -0
  168. package/src/components/email-chips-input.stories.tsx +135 -0
  169. package/src/components/email-chips-input.tsx +210 -0
  170. package/src/components/empty-state.stories.tsx +22 -0
  171. package/src/components/empty-state.tsx +35 -0
  172. package/src/components/entity-header.stories.tsx +43 -0
  173. package/src/components/entity-header.test.tsx +35 -0
  174. package/src/components/entity-header.tsx +92 -0
  175. package/src/components/feature-grid.stories.tsx +25 -0
  176. package/src/components/feature-grid.tsx +87 -0
  177. package/src/components/feedback-bar.stories.tsx +25 -0
  178. package/src/components/feedback-bar.test.tsx +24 -0
  179. package/src/components/feedback-bar.tsx +62 -0
  180. package/src/components/footer.stories.tsx +23 -0
  181. package/src/components/footer.tsx +78 -0
  182. package/src/components/heading.stories.tsx +45 -0
  183. package/src/components/heading.test.tsx +22 -0
  184. package/src/components/heading.tsx +77 -0
  185. package/src/components/hero.stories.tsx +38 -0
  186. package/src/components/hero.tsx +498 -0
  187. package/src/components/input-button.stories.tsx +19 -0
  188. package/src/components/input-button.tsx +112 -0
  189. package/src/components/input-group.stories.tsx +38 -0
  190. package/src/components/input-group.tsx +157 -0
  191. package/src/components/input.stories.tsx +31 -0
  192. package/src/components/input.tsx +284 -0
  193. package/src/components/inset.stories.tsx +29 -0
  194. package/src/components/inset.tsx +70 -0
  195. package/src/components/kpi-card.stories.tsx +29 -0
  196. package/src/components/kpi-card.tsx +284 -0
  197. package/src/components/list-nav.stories.tsx +22 -0
  198. package/src/components/list-nav.tsx +145 -0
  199. package/src/components/logo-cloud.stories.tsx +23 -0
  200. package/src/components/logo-cloud.tsx +42 -0
  201. package/src/components/media-gallery.stories.tsx +25 -0
  202. package/src/components/media-gallery.tsx +347 -0
  203. package/src/components/message-actions.stories.tsx +45 -0
  204. package/src/components/message-actions.test.tsx +32 -0
  205. package/src/components/message-actions.tsx +119 -0
  206. package/src/components/nav-sidebar.stories.tsx +58 -0
  207. package/src/components/nav-sidebar.test.tsx +54 -0
  208. package/src/components/nav-sidebar.tsx +462 -0
  209. package/src/components/number-stepper.stories.tsx +19 -0
  210. package/src/components/number-stepper.tsx +158 -0
  211. package/src/components/page-header.stories.tsx +25 -0
  212. package/src/components/page-header.tsx +64 -0
  213. package/src/components/pagination.stories.tsx +110 -0
  214. package/src/components/pagination.test.tsx +46 -0
  215. package/src/components/pagination.tsx +144 -0
  216. package/src/components/popover.stories.tsx +26 -0
  217. package/src/components/popover.tsx +62 -0
  218. package/src/components/pricing.stories.tsx +42 -0
  219. package/src/components/pricing.tsx +130 -0
  220. package/src/components/progress.stories.tsx +22 -0
  221. package/src/components/progress.tsx +189 -0
  222. package/src/components/prompt-input.stories.tsx +62 -0
  223. package/src/components/prompt-input.test.tsx +106 -0
  224. package/src/components/prompt-input.tsx +343 -0
  225. package/src/components/prompt-suggestions.stories.tsx +53 -0
  226. package/src/components/prompt-suggestions.test.tsx +37 -0
  227. package/src/components/prompt-suggestions.tsx +122 -0
  228. package/src/components/quota-bar.stories.tsx +19 -0
  229. package/src/components/quota-bar.tsx +191 -0
  230. package/src/components/quote.stories.tsx +18 -0
  231. package/src/components/quote.tsx +43 -0
  232. package/src/components/radio-card.stories.tsx +27 -0
  233. package/src/components/radio-card.tsx +225 -0
  234. package/src/components/radio-group.stories.tsx +32 -0
  235. package/src/components/radio-group.tsx +68 -0
  236. package/src/components/reasoning.stories.tsx +50 -0
  237. package/src/components/reasoning.test.tsx +48 -0
  238. package/src/components/reasoning.tsx +143 -0
  239. package/src/components/search.stories.tsx +18 -0
  240. package/src/components/search.tsx +133 -0
  241. package/src/components/section-nav.stories.tsx +59 -0
  242. package/src/components/section-nav.test.tsx +36 -0
  243. package/src/components/section-nav.tsx +146 -0
  244. package/src/components/segmented-control.stories.tsx +22 -0
  245. package/src/components/segmented-control.tsx +301 -0
  246. package/src/components/select-button.stories.tsx +27 -0
  247. package/src/components/select-button.tsx +174 -0
  248. package/src/components/select.stories.tsx +27 -0
  249. package/src/components/select.tsx +198 -0
  250. package/src/components/separator.stories.tsx +22 -0
  251. package/src/components/separator.tsx +23 -0
  252. package/src/components/shimmer-text.stories.tsx +23 -0
  253. package/src/components/shimmer-text.test.tsx +35 -0
  254. package/src/components/shimmer-text.tsx +43 -0
  255. package/src/components/sidebar.stories.tsx +25 -0
  256. package/src/components/sidebar.tsx +234 -0
  257. package/src/components/skeleton.stories.tsx +22 -0
  258. package/src/components/skeleton.tsx +96 -0
  259. package/src/components/slider.stories.tsx +20 -0
  260. package/src/components/slider.tsx +176 -0
  261. package/src/components/slideshow.stories.tsx +30 -0
  262. package/src/components/slideshow.tsx +291 -0
  263. package/src/components/source.stories.tsx +32 -0
  264. package/src/components/source.test.tsx +40 -0
  265. package/src/components/source.tsx +161 -0
  266. package/src/components/spinner.stories.tsx +19 -0
  267. package/src/components/spinner.tsx +76 -0
  268. package/src/components/stat-strip.stories.tsx +36 -0
  269. package/src/components/stat-strip.test.tsx +25 -0
  270. package/src/components/stat-strip.tsx +85 -0
  271. package/src/components/stats.stories.tsx +24 -0
  272. package/src/components/stats.tsx +83 -0
  273. package/src/components/step-indicator.stories.tsx +18 -0
  274. package/src/components/step-indicator.test.tsx +18 -0
  275. package/src/components/step-indicator.tsx +286 -0
  276. package/src/components/switch.stories.tsx +26 -0
  277. package/src/components/switch.tsx +32 -0
  278. package/src/components/table.stories.tsx +38 -0
  279. package/src/components/table.tsx +220 -0
  280. package/src/components/tabs.stories.tsx +25 -0
  281. package/src/components/tabs.tsx +276 -0
  282. package/src/components/testimonials.stories.tsx +22 -0
  283. package/src/components/testimonials.tsx +109 -0
  284. package/src/components/text-link.stories.tsx +47 -0
  285. package/src/components/text-link.test.tsx +18 -0
  286. package/src/components/text-link.tsx +88 -0
  287. package/src/components/text.stories.tsx +49 -0
  288. package/src/components/text.tsx +105 -0
  289. package/src/components/thinking-bar.stories.tsx +19 -0
  290. package/src/components/thinking-bar.test.tsx +27 -0
  291. package/src/components/thinking-bar.tsx +64 -0
  292. package/src/components/thinking-steps.stories.tsx +44 -0
  293. package/src/components/thinking-steps.test.tsx +42 -0
  294. package/src/components/thinking-steps.tsx +92 -0
  295. package/src/components/toaster.stories.tsx +80 -0
  296. package/src/components/toaster.tsx +36 -0
  297. package/src/components/toggle.stories.tsx +21 -0
  298. package/src/components/toggle.tsx +103 -0
  299. package/src/components/tool-call-card.stories.tsx +97 -0
  300. package/src/components/tool-call-card.test.tsx +88 -0
  301. package/src/components/tool-call-card.tsx +231 -0
  302. package/src/components/tooltip.stories.tsx +25 -0
  303. package/src/components/tooltip.tsx +43 -0
  304. package/src/components/top-nav.stories.tsx +20 -0
  305. package/src/components/top-nav.tsx +76 -0
  306. package/src/docs/Colors.stories.tsx +192 -0
  307. package/src/docs/GettingStarted.mdx +72 -0
  308. package/src/docs/Mcp.mdx +52 -0
  309. package/src/docs/Typography.stories.tsx +114 -0
  310. package/src/hooks/use-in-view.ts +32 -0
  311. package/src/hooks/use-reduced-motion.ts +26 -0
  312. package/src/index.ts +343 -0
  313. package/src/lib/cn.test.ts +67 -0
  314. package/src/lib/cn.ts +81 -0
  315. package/src/lib/motion.ts +109 -0
  316. package/src/lib/prefix-utilities.test.ts +56 -0
  317. package/src/lib/prefix-utilities.ts +50 -0
  318. package/src/styles/base.css +489 -0
  319. package/src/styles/motion.css +69 -0
  320. package/src/styles/overrides.css +44 -0
  321. package/src/styles/typography.css +173 -0
  322. package/src/theme/theme.css +391 -0
  323. package/src/theme/tokens.ts +29 -0
  324. package/src/theme/types.ts +26 -0
  325. package/README.md +0 -3
@@ -0,0 +1,173 @@
1
+ /*
2
+ * @adres/mgda-ui - typography.css
3
+ *
4
+ * Semantic single-class typography utilities built with @apply.
5
+ * One class covers font-size, font-weight, line-height, and letter-spacing.
6
+ * Color is excluded. Apply it separately:
7
+ *
8
+ * <h1 class="ax:t-display-xl ax:text-foreground">…</h1>
9
+ * <p class="ax:t-body-md ax:text-muted-foreground">…</p>
10
+ *
11
+ * Registered with @utility so Tailwind v4 generates responsive variants
12
+ * (ax:md:t-display-xl, ax:lg:t-h1, etc.) automatically.
13
+ *
14
+ * ─── Scale ────────────────────────────────────────────────────────────────────
15
+ *
16
+ * Display t-display-3xl / 2xl / xl / sm / lg / md Marketing + hero headlines
17
+ * Heading t-h1 → t-h6 Page + section structure
18
+ * Body t-body-lg / md / sm Readable prose
19
+ * Label t-label-lg / md / sm / xs UI controls (buttons, nav, tabs)
20
+ * Caption t-caption Metadata, timestamps
21
+ * Overline t-overline Eyebrow / category badges
22
+ * Code t-code Monospace / technical content
23
+ * Micro t-micro 10px UI annotations (sub-caption)
24
+ */
25
+
26
+ /* ── Display ────────────────────────────────────────────────────────────────
27
+ * Hero headlines and campaign copy.
28
+ * Sub-1 leading requires an arbitrary value: no Tailwind default exists.
29
+ * ─────────────────────────────────────────────────────────────────────────── */
30
+
31
+ @utility t-display-3xl {
32
+ @apply ax:font-sans ax:text-8xl ax:font-semibold ax:leading-24 ax:tracking-tighter ax:text-foreground-strong;
33
+ }
34
+
35
+ @utility t-display-2xl {
36
+ @apply ax:font-sans ax:text-7xl ax:font-semibold ax:leading-18 ax:tracking-tighter ax:text-foreground-strong;
37
+ }
38
+
39
+ @utility t-display-xl {
40
+ /* 64px - explicit so the display ramp stays monotonic regardless of the
41
+ base text-* scale (base.css leaves text-6xl at the Tailwind default 60px). */
42
+ @apply ax:font-sans ax:text-[4rem] ax:font-semibold ax:leading-16 ax:tracking-tighter ax:text-foreground-strong;
43
+ }
44
+
45
+ @utility t-display-lg {
46
+ /* 56px - sits between md (48) and xl (64). */
47
+ @apply ax:font-sans ax:text-[3.5rem] ax:font-semibold ax:leading-14 ax:tracking-tight ax:text-foreground-strong;
48
+ }
49
+
50
+ @utility t-display-md {
51
+ @apply ax:font-sans ax:text-4xl ax:font-semibold ax:leading-10.5 ax:tracking-tight ax:text-foreground-strong;
52
+ }
53
+
54
+ @utility t-display-sm {
55
+ @apply ax:font-sans ax:text-3xl ax:font-semibold ax:leading-8.5 ax:tracking-tight ax:text-foreground-strong;
56
+ }
57
+
58
+ /* ── Heading ────────────────────────────────────────────────────────────────
59
+ * Page titles and document / section hierarchy.
60
+ * ─────────────────────────────────────────────────────────────────────────── */
61
+
62
+ @utility t-h1 {
63
+ @apply ax:text-2xl ax:font-semibold ax:leading-8 ax:tracking-tight ax:text-foreground-strong;
64
+ }
65
+
66
+ @utility t-h2 {
67
+ @apply ax:text-xl ax:font-semibold ax:leading-7 ax:tracking-tight ax:text-foreground-strong;
68
+ }
69
+
70
+ @utility t-h3 {
71
+ @apply ax:text-lg ax:font-semibold ax:leading-6 ax:tracking-tight ax:text-foreground-strong;
72
+ }
73
+
74
+ @utility t-h4 {
75
+ @apply ax:text-base ax:font-semibold ax:leading-5 ax:text-foreground-strong;
76
+ }
77
+
78
+ @utility t-h5 {
79
+ @apply ax:text-sm ax:font-semibold ax:leading-normal ax:text-foreground-strong;
80
+ }
81
+
82
+ @utility t-h6 {
83
+ @apply ax:text-xs ax:font-semibold ax:leading-normal ax:text-foreground-strong;
84
+ }
85
+
86
+ /* ── Body ───────────────────────────────────────────────────────────────────
87
+ * Readable prose. Set max-width separately (max-w-prose ≈ 65ch).
88
+ * ─────────────────────────────────────────────────────────────────────────── */
89
+
90
+ @utility t-body-2xl {
91
+ @apply ax:text-2xl ax:leading-8 ax:font-medium ax:tracking-tight;
92
+ }
93
+
94
+ @utility t-body-xl {
95
+ @apply ax:text-xl ax:leading-7 ax:font-medium ax:tracking-tight;
96
+ }
97
+
98
+ @utility t-body-lg {
99
+ @apply ax:text-lg ax:leading-6.5 ax:font-medium;
100
+ }
101
+
102
+ @utility t-body-md {
103
+ @apply ax:text-base ax:leading-snug;
104
+ }
105
+
106
+ @utility t-body-sm {
107
+ @apply ax:text-sm ax:leading-snug;
108
+ }
109
+
110
+ @utility t-body-xs {
111
+ @apply ax:text-xs ax:leading-snug;
112
+ }
113
+
114
+ /* ── Label ──────────────────────────────────────────────────────────────────
115
+ * UI controls: buttons, tabs, nav items, form labels, badge text.
116
+ * leading-none - labels are single-line by design.
117
+ * ─────────────────────────────────────────────────────────────────────────── */
118
+
119
+ @utility t-label-lg {
120
+ @apply ax:text-lg ax:font-medium ax:leading-none;
121
+ }
122
+
123
+ @utility t-label-md {
124
+ @apply ax:text-base ax:font-medium ax:leading-none;
125
+ }
126
+
127
+ @utility t-label-sm {
128
+ @apply ax:text-sm ax:font-medium ax:leading-none;
129
+ }
130
+
131
+ @utility t-label-xs {
132
+ @apply ax:text-xs ax:font-medium ax:leading-none ax:tracking-wide;
133
+ }
134
+
135
+ @utility t-label-2xs {
136
+ font-size: var(--text-3xs); /* 10px */
137
+ @apply ax:font-medium ax:leading-none ax:tracking-wide;
138
+ }
139
+
140
+ /* ── Caption ────────────────────────────────────────────────────────────────
141
+ * Auxiliary information: timestamps, photo credits, metadata footnotes.
142
+ * ─────────────────────────────────────────────────────────────────────────── */
143
+
144
+ @utility t-caption {
145
+ @apply ax:text-xs ax:font-normal ax:leading-tight;
146
+ }
147
+
148
+ /* ── Overline ───────────────────────────────────────────────────────────────
149
+ * Eyebrow labels, category badges, section markers.
150
+ * Always uppercase with wide tracking.
151
+ * ─────────────────────────────────────────────────────────────────────────── */
152
+
153
+ @utility t-overline {
154
+ font-size: var(--text-3xs);
155
+ @apply ax:font-semibold ax:leading-none ax:tracking-widest ax:uppercase;
156
+ }
157
+
158
+ /* ── Code ───────────────────────────────────────────────────────────────────
159
+ * Monospace content: code snippets, property IDs, API values.
160
+ * ─────────────────────────────────────────────────────────────────────────── */
161
+
162
+ @utility t-code {
163
+ @apply ax:font-mono ax:text-sm ax:font-normal ax:leading-relaxed ax:tracking-tight;
164
+ }
165
+
166
+ /* ── Micro ──────────────────────────────────────────────────────────────────
167
+ * Sub-caption annotations: "Before / After", status micro-labels, dense
168
+ * data badges. 10 px. Use only when truly space-constrained.
169
+ * ─────────────────────────────────────────────────────────────────────────── */
170
+
171
+ @utility t-micro {
172
+ @apply ax:text-[10px] ax:font-medium ax:leading-none ax:tracking-wide;
173
+ }
@@ -0,0 +1,391 @@
1
+ /*
2
+ * MGDA theme - theme.css
3
+ *
4
+ * MGDA brand tokens.
5
+ *
6
+ * Brand identity:
7
+ * Primary Vivid blue hsl(208 100% 50%) - actions, links, the brand spark
8
+ * Secondary Pale cyan hsl(184 100% 64%) - quiet utility surfaces
9
+ * Accent Gold hsl(38 90% 55%) - emphasis highlights (not brief-specified;
10
+ * chosen to complement primary/secondary)
11
+ * Neutrals Cool blue-gray hsl(220 20% 45%)
12
+ *
13
+ * Typography: Gilroy, self-hosted via @adres/fonts/gilroy. Weights 300-700.
14
+ * The consuming app must render the `gilroy` loader's `.variable` className
15
+ * on <html> (or an ancestor) so --font-gilroy resolves below.
16
+ * Radius: architectural - 4 / 6 / 8 / 12px.
17
+ *
18
+ * Layer 1 - primitives (neutrals + primary / secondary / accent / status scales)
19
+ * Layer 2 - semantic tokens (--background, --primary, etc.) consumed by the design system
20
+ *
21
+ * Pulled in by @adres/mgda-ui/styles; apps do not import it directly.
22
+ */
23
+
24
+ :root {
25
+ /* ─── Layer 1 - primitives ──────────────────────────────────────────── */
26
+
27
+ /* Neutrals - cool blue-gray (h:220, s:20%), anchored at 500 = hsl(220 20% 45%) */
28
+ --neutral-50: 220 20% 97%;
29
+ --neutral-100: 220 20% 92%;
30
+ --neutral-200: 220 20% 86%;
31
+ --neutral-300: 220 20% 74%;
32
+ --neutral-400: 220 20% 60%;
33
+ --neutral-500: 220 20% 45%;
34
+ --neutral-600: 220 20% 40%;
35
+ --neutral-700: 220 20% 30%;
36
+ --neutral-800: 220 20% 20%;
37
+ --neutral-900: 220 20% 10%;
38
+ --neutral-950: 220 20% 5%;
39
+
40
+ /* Primary - vivid blue, anchored at 500 = hsl(208 100% 50%) */
41
+ --primary-50: 208 100% 97%;
42
+ --primary-100: 208 100% 92%;
43
+ --primary-200: 208 100% 86%;
44
+ --primary-300: 208 100% 74%;
45
+ --primary-400: 208 100% 59%;
46
+ --primary-500: 208 100% 50%; /* DEFAULT */
47
+ --primary-600: 208 100% 41%;
48
+ --primary-700: 208 100% 32%;
49
+ --primary-800: 208 100% 23%;
50
+ --primary-900: 208 100% 14%;
51
+ --primary-950: 208 100% 5%;
52
+
53
+ /* Secondary - pale cyan, anchored at 500 = hsl(184 100% 64%) */
54
+ --secondary-50: 184 100% 97%;
55
+ --secondary-100: 184 100% 94%;
56
+ --secondary-200: 184 100% 90%;
57
+ --secondary-300: 184 100% 84%;
58
+ --secondary-400: 184 100% 76%;
59
+ --secondary-500: 184 100% 64%; /* DEFAULT */
60
+ --secondary-600: 184 100% 50%;
61
+ --secondary-700: 184 100% 38%;
62
+ --secondary-800: 184 100% 26%;
63
+ --secondary-900: 184 100% 16%;
64
+ --secondary-950: 184 100% 10%;
65
+
66
+ /* Accent - gold, anchored at 500 = hsl(38 90% 55%). Not brief-specified;
67
+ * chosen to pair with the blue/cyan primary + secondary. */
68
+ --accent-50: 38 90% 97%;
69
+ --accent-100: 38 90% 89%;
70
+ --accent-200: 38 90% 80%;
71
+ --accent-300: 38 90% 72%;
72
+ --accent-400: 38 90% 63%;
73
+ --accent-500: 38 90% 55%; /* DEFAULT */
74
+ --accent-600: 38 90% 45%;
75
+ --accent-700: 38 90% 35%;
76
+ --accent-800: 38 90% 25%;
77
+ --accent-900: 38 90% 15%;
78
+ --accent-950: 38 90% 5%;
79
+
80
+ /* Status - destructive / success / warning. Unified palette, identical across
81
+ * all Adres brands (explicit HSL, full 50→950 scale). */
82
+ --destructive-50: 0 80% 97%;
83
+ --destructive-100: 0 80% 94%;
84
+ --destructive-200: 0 80% 88%;
85
+ --destructive-300: 0 80% 80%;
86
+ --destructive-400: 0 80% 75%;
87
+ --destructive-500: 0 80% 62%;
88
+ --destructive-600: 0 80% 44%;
89
+ --destructive-700: 0 80% 32%;
90
+ --destructive-800: 0 80% 18%;
91
+ --destructive-900: 0 80% 10%;
92
+ --destructive-950: 0 80% 6%;
93
+
94
+ --success-50: 158 80% 97%;
95
+ --success-100: 158 80% 94%;
96
+ --success-200: 158 80% 88%;
97
+ --success-300: 158 80% 80%;
98
+ --success-400: 158 80% 75%;
99
+ --success-500: 158 80% 62%;
100
+ --success-600: 158 80% 44%;
101
+ --success-700: 158 80% 32%;
102
+ --success-800: 158 80% 18%;
103
+ --success-900: 158 80% 10%;
104
+ --success-950: 158 80% 6%;
105
+
106
+ --warning-50: 32 92% 97%;
107
+ --warning-100: 32 92% 94%;
108
+ --warning-200: 32 92% 88%;
109
+ --warning-300: 32 92% 80%;
110
+ --warning-400: 32 92% 75%;
111
+ --warning-500: 32 92% 62%;
112
+ --warning-600: 32 92% 44%;
113
+ --warning-700: 32 92% 32%;
114
+ --warning-800: 32 92% 18%;
115
+ --warning-900: 38 55% 10%;
116
+ --warning-950: 32 92% 6%;
117
+
118
+ /* ─── Typography primitives - Gilroy, self-hosted via @adres/fonts/gilroy.
119
+ * --font-gilroy is supplied by the `gilroy.variable` className the
120
+ * consuming app renders on <html>. Storybook (Vite, can't run next/font)
121
+ * does not set that variable; it loads the "Gilroy" family from the
122
+ * Fontshare CDN in preview-head.html. The fallback inside var() uses that
123
+ * family name when the variable is unset. */
124
+ --font-family-sans:
125
+ var(--font-gilroy, "Gilroy"), "Gilroy", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
126
+ "Helvetica Neue", Arial, sans-serif;
127
+
128
+ /* ─── Brand-specific radius - architectural register ───────────────────── */
129
+ --radius-xs: 0.125rem; /* 2px */
130
+ --radius-sm: 0.25rem; /* 4px */
131
+ --radius: 0.375rem; /* 6px - DEFAULT - buttons, inputs */
132
+ --radius-md: 0.5rem; /* 8px - cards */
133
+ --radius-lg: 0.75rem; /* 12px - modals */
134
+ --radius-xl: 1rem; /* 16px */
135
+ --radius-full: 9999px;
136
+ --radius-badge: var(--radius-sm);
137
+ --button-radius: var(--radius);
138
+ --input-radius: var(--radius);
139
+
140
+ --surface-n1: var(--neutral-200);
141
+ --surface-0: var(--neutral-100);
142
+ --surface-1: 0 0% 100%;
143
+ --surface-2: 0 0% 100%;
144
+ --surface-3: var(--neutral-300);
145
+
146
+ /* ─── Layer 2 - semantic tokens (LIGHT theme) ───────────────────────────
147
+ * These are the names the design system consumes.
148
+ * Format: HSL channels only (no hsl() wrapper) - design-system wraps them.
149
+ * ───────────────────────────────────────────────────────────────────── */
150
+
151
+ --background: var(--neutral-50);
152
+ --foreground: var(--neutral-strong);
153
+ --foreground-strong: var(--neutral-strongest);
154
+ --foreground-muted: var(--neutral);
155
+
156
+ --card: var(--white);
157
+ --card-foreground: var(--neutral-strong);
158
+
159
+ --popover: var(--white);
160
+ --popover-foreground: var(--neutral-strong);
161
+
162
+ --primary: var(--primary-500);
163
+ --primary-foreground: var(--primary-600);
164
+
165
+ --secondary: var(--secondary-500);
166
+ --secondary-foreground: var(--secondary-strong);
167
+
168
+ --accent: var(--accent-500);
169
+ --accent-foreground: var(--accent-strong);
170
+
171
+ --muted: var(--neutral-weakest);
172
+ --muted-foreground: var(--neutral);
173
+
174
+ --selected: var(--neutral-weaker);
175
+
176
+ --destructive: var(--destructive-500);
177
+ --destructive-foreground: var(--destructive-strong);
178
+
179
+ --success: var(--success-500);
180
+ --success-foreground: var(--success-strong);
181
+
182
+ --warning: var(--warning-500);
183
+ --warning-foreground: var(--warning-strong);
184
+
185
+ --border: var(--neutral-weaker);
186
+ --border-strong: var(--neutral-weak);
187
+ --input: var(--neutral-weak);
188
+ --ring: var(--primary);
189
+
190
+ /* ─── Named aliases - point at numbered steps so DS @theme inline mapping
191
+ * (--color-primary-weakest, --color-accent-stronger, etc.) resolves to a
192
+ * single edit point per palette: the numbered scale above.
193
+ * ─────────────────────────────────────────────────────────────────────── */
194
+
195
+ --neutral: var(--neutral-500);
196
+ --neutral-muted: var(--neutral-50);
197
+ --neutral-weakest: var(--neutral-100);
198
+ --neutral-weaker: var(--neutral-200);
199
+ --neutral-weak: var(--neutral-300);
200
+ --neutral-strong: var(--neutral-700);
201
+ --neutral-stronger: var(--neutral-800);
202
+ --neutral-strongest: var(--neutral-900);
203
+
204
+ --primary-muted: var(--primary-50);
205
+ --primary-weakest: var(--primary-100);
206
+ --primary-weaker: var(--primary-200);
207
+ --primary-weak: var(--primary-300);
208
+ --primary-strong: var(--primary-700);
209
+ --primary-stronger: var(--primary-800);
210
+ --primary-strongest: var(--primary-900);
211
+
212
+ --secondary-muted: var(--secondary-50);
213
+ --secondary-weakest: var(--secondary-100);
214
+ --secondary-weaker: var(--secondary-200);
215
+ --secondary-weak: var(--secondary-300);
216
+ --secondary-strong: var(--secondary-700);
217
+ --secondary-stronger: var(--secondary-800);
218
+ --secondary-strongest: var(--secondary-900);
219
+
220
+ --accent-muted: var(--accent-50);
221
+ --accent-weakest: var(--accent-100);
222
+ --accent-weaker: var(--accent-200);
223
+ --accent-weak: var(--accent-300);
224
+ --accent-strong: var(--accent-700);
225
+ --accent-stronger: var(--accent-800);
226
+ --accent-strongest: var(--accent-900);
227
+
228
+ --destructive-muted: var(--destructive-50);
229
+ --destructive-weakest: var(--destructive-100);
230
+ --destructive-weaker: var(--destructive-200);
231
+ --destructive-weak: var(--destructive-300);
232
+ --destructive-strong: var(--destructive-700);
233
+ --destructive-stronger: var(--destructive-800);
234
+ --destructive-strongest: var(--destructive-900);
235
+
236
+ --success-muted: var(--success-50);
237
+ --success-weakest: var(--success-100);
238
+ --success-weaker: var(--success-200);
239
+ --success-weak: var(--success-300);
240
+ --success-strong: var(--success-700);
241
+ --success-stronger: var(--success-800);
242
+ --success-strongest: var(--success-900);
243
+
244
+ --warning-muted: var(--warning-50);
245
+ --warning-weakest: var(--warning-100);
246
+ --warning-weaker: var(--warning-200);
247
+ --warning-weak: var(--warning-300);
248
+ --warning-strong: var(--warning-700);
249
+ --warning-stronger: var(--warning-800);
250
+ --warning-strongest: var(--warning-900);
251
+
252
+ /* ─── Data visualisation palette ────────────────────────────────────────────
253
+ * Categorical colours for charts, graphs, and maps ONLY.
254
+ * Source: Tableau 10 (production-tested, perceptually balanced).
255
+ * Do NOT use these for UI chrome - they exist solely for data encoding.
256
+ * ────────────────────────────────────────────────────────────────────────── */
257
+ --chart-1: 211 36% 48%; /* blue #4e79a7 */
258
+ --chart-2: 30 88% 56%; /* orange #f28e2c */
259
+ --chart-3: 359 70% 61%; /* red #e15759 */
260
+ --chart-4: 175 31% 59%; /* teal #76b7b2 */
261
+ --chart-5: 113 34% 47%; /* green #59a14f */
262
+ --chart-6: 47 82% 61%; /* yellow #edc949 */
263
+ --chart-7: 316 25% 58%; /* purple #af7aa1 */
264
+ --chart-8: 354 100% 81%; /* pink #ff9da7 */
265
+ --chart-9: 22 24% 49%; /* brown #9c755f */
266
+ --chart-10: 20 10% 70%; /* grey #bab0ab */
267
+ }
268
+
269
+ /* ─── Layer 2 - semantic tokens (DARK theme) ──────────────────────────────
270
+ * Activated when `.dark` class is present on <html> or any ancestor.
271
+ * ─────────────────────────────────────────────────────────────────────── */
272
+
273
+ :root.dark,
274
+ :root[data-theme="dark"] {
275
+ --background: var(--neutral-weakest);
276
+ --foreground: var(--neutral-strong);
277
+ --foreground-strong: var(--neutral-strongest);
278
+ --foreground-muted: var(--neutral);
279
+
280
+ --card: var(--neutral-muted);
281
+ --card-foreground: var(--neutral-strong);
282
+
283
+ --popover: var(--neutral-muted);
284
+ --popover-foreground: var(--neutral-strong);
285
+
286
+ --primary: var(--primary-500);
287
+ --primary-foreground: var(--primary);
288
+
289
+ --secondary: var(--secondary-500);
290
+ --secondary-foreground: var(--secondary-strong);
291
+
292
+ --accent: var(--accent-500);
293
+ --accent-foreground: var(--accent);
294
+
295
+ --muted: var(--neutral-weaker);
296
+ --muted-foreground: var(--neutral);
297
+
298
+ --selected: var(--neutral-weaker);
299
+
300
+ --destructive: var(--destructive-500);
301
+ --destructive-foreground: var(--destructive);
302
+
303
+ --success: var(--success-500);
304
+ --success-foreground: var(--success);
305
+
306
+ --warning: var(--warning-500);
307
+ --warning-foreground: var(--warning);
308
+
309
+ --border: var(--neutral-weaker);
310
+ --border-strong: var(--neutral-weak);
311
+ --input: var(--neutral-weak);
312
+ --ring: var(--primary);
313
+
314
+ --surface-n1: var(--neutral-900);
315
+ --surface-0: var(--neutral-950);
316
+ --surface-1: var(--neutral-900);
317
+ --surface-2: var(--neutral-800);
318
+ --surface-3: var(--neutral-700);
319
+
320
+ /* Strong-emphasis aliases inverted for dark surfaces - light step reads
321
+ * as a confident brand colour on the dark background. */
322
+
323
+ /* Data visualisation - lightened and more vivid for dark backgrounds */
324
+ --chart-1: 211 70% 65%;
325
+ --chart-2: 30 95% 63%;
326
+ --chart-3: 359 85% 70%;
327
+ --chart-4: 175 55% 65%;
328
+ --chart-5: 113 50% 58%;
329
+ --chart-6: 47 90% 68%;
330
+ --chart-7: 316 50% 68%;
331
+ --chart-8: 354 100% 85%;
332
+ --chart-9: 22 55% 62%;
333
+ --chart-10: 220 15% 72%;
334
+
335
+ /* Emphasis aliases INVERT in dark: weak side -> dark steps, strong side -> light steps. */
336
+ --primary-muted: var(--primary-900);
337
+ --primary-weakest: var(--primary-800);
338
+ --primary-weaker: var(--primary-700);
339
+ --primary-weak: var(--primary-600);
340
+ --primary-strong: var(--primary-300);
341
+ --primary-stronger: var(--primary-200);
342
+ --primary-strongest: var(--primary-100);
343
+
344
+ --secondary-muted: var(--secondary-950);
345
+ --secondary-weakest: var(--secondary-900);
346
+ --secondary-weaker: var(--secondary-800);
347
+ --secondary-weak: var(--secondary-700);
348
+ --secondary-strong: var(--secondary-300);
349
+ --secondary-stronger: var(--secondary-200);
350
+ --secondary-strongest: var(--secondary-100);
351
+
352
+ --accent-muted: var(--accent-900);
353
+ --accent-weakest: var(--accent-800);
354
+ --accent-weaker: var(--accent-700);
355
+ --accent-weak: var(--accent-600);
356
+ --accent-strong: var(--accent-300);
357
+ --accent-stronger: var(--accent-200);
358
+ --accent-strongest: var(--accent-100);
359
+
360
+ --neutral-muted: var(--neutral-950);
361
+ --neutral-weakest: var(--neutral-900);
362
+ --neutral-weaker: var(--neutral-800);
363
+ --neutral-weak: var(--neutral-700);
364
+ --neutral-strong: var(--neutral-300);
365
+ --neutral-stronger: var(--neutral-200);
366
+ --neutral-strongest: var(--neutral-100);
367
+
368
+ --destructive-muted: var(--destructive-900);
369
+ --destructive-weakest: var(--destructive-800);
370
+ --destructive-weaker: var(--destructive-700);
371
+ --destructive-weak: var(--destructive-600);
372
+ --destructive-strong: var(--destructive-300);
373
+ --destructive-stronger: var(--destructive-200);
374
+ --destructive-strongest: var(--destructive-100);
375
+
376
+ --success-muted: var(--success-900);
377
+ --success-weakest: var(--success-800);
378
+ --success-weaker: var(--success-700);
379
+ --success-weak: var(--success-600);
380
+ --success-strong: var(--success-300);
381
+ --success-stronger: var(--success-200);
382
+ --success-strongest: var(--success-100);
383
+
384
+ --warning-muted: var(--warning-900);
385
+ --warning-weakest: var(--warning-800);
386
+ --warning-weaker: var(--warning-700);
387
+ --warning-weak: var(--warning-600);
388
+ --warning-strong: var(--warning-300);
389
+ --warning-stronger: var(--warning-200);
390
+ --warning-strongest: var(--warning-100);
391
+ }
@@ -0,0 +1,29 @@
1
+ import type { BrandMeta, BrandTokens } from "./types"
2
+
3
+ /**
4
+ * @adres/brand-mgda - authored brand facts
5
+ *
6
+ * Palette, type, and radius live in `theme.css`. This file is meta, shape, and voice.
7
+ */
8
+
9
+ export const mgdaBrand = {
10
+ name: "MGDA",
11
+ description:
12
+ "MGDA brand tokens. Vivid blue primary, pale cyan secondary, cool blue-gray neutrals, Gilroy typography.",
13
+ id: "mgda",
14
+ } as const satisfies BrandMeta
15
+
16
+ export const mgdaTokens = {
17
+ shape: {
18
+ softBg: false,
19
+ cardBorderless: false,
20
+ cardElevation: "sm",
21
+ tabsRounded: false,
22
+ },
23
+ voice: {
24
+ personality: ["Clear", "Structured", "Institutional", "Trustworthy"],
25
+ avoid: ["Decorative", "Noisy", "Off-brand whimsy"],
26
+ },
27
+ } as const satisfies BrandTokens
28
+
29
+ export type MgdaTokens = typeof mgdaTokens
@@ -0,0 +1,26 @@
1
+ /** Registry metadata for the theme. */
2
+ export interface BrandMeta {
3
+ id: string
4
+ name: string
5
+ description: string
6
+ }
7
+
8
+ export type BrandCardElevation = "none" | "xs" | "sm" | "md"
9
+
10
+ /** Authored JS facts CSS cannot express. Palette values live in theme.css. */
11
+ export interface BrandTokens {
12
+ shape: BrandTokenShape
13
+ voice: BrandTokenVoice
14
+ }
15
+
16
+ export interface BrandTokenShape {
17
+ softBg: boolean
18
+ cardBorderless: boolean
19
+ cardElevation: BrandCardElevation
20
+ tabsRounded: boolean
21
+ }
22
+
23
+ export interface BrandTokenVoice {
24
+ personality: readonly string[]
25
+ avoid: readonly string[]
26
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.