@tetherto/dev-websites-core 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/README.md +62 -9
  2. package/dist/cms/index.d.mts +3 -0
  3. package/dist/cms/index.mjs +3 -0
  4. package/dist/cms.mjs +1419 -0
  5. package/dist/cms.mjs.map +1 -0
  6. package/dist/i18n/index.d.mts +2 -0
  7. package/dist/i18n/index.mjs +2 -0
  8. package/dist/i18n.mjs +10 -0
  9. package/dist/i18n.mjs.map +1 -0
  10. package/dist/index.d.mts +214 -0
  11. package/dist/index.d.mts.map +1 -0
  12. package/dist/index.mjs +7 -0
  13. package/dist/index2.d.mts +8 -0
  14. package/dist/index2.d.mts.map +1 -0
  15. package/dist/index3.d.mts +63 -0
  16. package/dist/index3.d.mts.map +1 -0
  17. package/dist/index4.d.mts +23 -0
  18. package/dist/index4.d.mts.map +1 -0
  19. package/dist/index5.d.mts +6 -0
  20. package/dist/logger.mjs +44 -0
  21. package/dist/logger.mjs.map +1 -0
  22. package/dist/readMediaBuffer.d.mts +15 -0
  23. package/dist/readMediaBuffer.d.mts.map +1 -0
  24. package/dist/readMediaBuffer.mjs +62 -0
  25. package/dist/readMediaBuffer.mjs.map +1 -0
  26. package/dist/seo/index.d.mts +2 -0
  27. package/dist/seo/index.mjs +2 -0
  28. package/dist/seo.mjs +124 -0
  29. package/dist/seo.mjs.map +1 -0
  30. package/dist/ui/a11y/focus.d.mts +6 -0
  31. package/dist/ui/a11y/focus.d.mts.map +1 -0
  32. package/dist/ui/a11y/focus.mjs +7 -0
  33. package/dist/ui/a11y/focus.mjs.map +1 -0
  34. package/dist/ui/a11y/index.d.mts +4 -0
  35. package/dist/ui/a11y/index.mjs +4 -0
  36. package/dist/ui/carousel/index.d.mts +3 -0
  37. package/dist/ui/carousel/index.mjs +3 -0
  38. package/dist/ui/components/Accordion/Accordion.d.mts +16 -0
  39. package/dist/ui/components/Accordion/Accordion.d.mts.map +1 -0
  40. package/dist/ui/components/Accordion/Accordion.mjs +51 -0
  41. package/dist/ui/components/Accordion/Accordion.mjs.map +1 -0
  42. package/dist/ui/components/Accordion/index.d.mts +2 -0
  43. package/dist/ui/components/Accordion/index.mjs +2 -0
  44. package/dist/ui/components/Avatar/Avatar.d.mts +9 -0
  45. package/dist/ui/components/Avatar/Avatar.d.mts.map +1 -0
  46. package/dist/ui/components/Avatar/Avatar.mjs +15 -0
  47. package/dist/ui/components/Avatar/Avatar.mjs.map +1 -0
  48. package/dist/ui/components/Avatar/index.d.mts +2 -0
  49. package/dist/ui/components/Avatar/index.mjs +2 -0
  50. package/dist/ui/components/Badge/Badge.d.mts +14 -0
  51. package/dist/ui/components/Badge/Badge.d.mts.map +1 -0
  52. package/dist/ui/components/Badge/Badge.mjs +30 -0
  53. package/dist/ui/components/Badge/Badge.mjs.map +1 -0
  54. package/dist/ui/components/Badge/index.d.mts +2 -0
  55. package/dist/ui/components/Badge/index.mjs +2 -0
  56. package/dist/ui/components/BadgeVersion/BadgeVersion.d.mts +24 -0
  57. package/dist/ui/components/BadgeVersion/BadgeVersion.d.mts.map +1 -0
  58. package/dist/ui/components/BadgeVersion/BadgeVersion.mjs +66 -0
  59. package/dist/ui/components/BadgeVersion/BadgeVersion.mjs.map +1 -0
  60. package/dist/ui/components/BadgeVersion/index.d.mts +2 -0
  61. package/dist/ui/components/BadgeVersion/index.mjs +2 -0
  62. package/dist/ui/components/Button/Button.d.mts +14 -0
  63. package/dist/ui/components/Button/Button.d.mts.map +1 -0
  64. package/dist/ui/components/Button/Button.mjs +48 -0
  65. package/dist/ui/components/Button/Button.mjs.map +1 -0
  66. package/dist/ui/components/Button/index.d.mts +2 -0
  67. package/dist/ui/components/Button/index.mjs +2 -0
  68. package/dist/ui/components/Card/Card.d.mts +14 -0
  69. package/dist/ui/components/Card/Card.d.mts.map +1 -0
  70. package/dist/ui/components/Card/Card.mjs +40 -0
  71. package/dist/ui/components/Card/Card.mjs.map +1 -0
  72. package/dist/ui/components/Card/index.d.mts +2 -0
  73. package/dist/ui/components/Card/index.mjs +2 -0
  74. package/dist/ui/components/Carousel/Carousel.d.mts +42 -0
  75. package/dist/ui/components/Carousel/Carousel.d.mts.map +1 -0
  76. package/dist/ui/components/Carousel/Carousel.mjs +164 -0
  77. package/dist/ui/components/Carousel/Carousel.mjs.map +1 -0
  78. package/dist/ui/components/Carousel/index.d.mts +2 -0
  79. package/dist/ui/components/Carousel/index.mjs +2 -0
  80. package/dist/ui/components/Checkbox/Checkbox.d.mts +8 -0
  81. package/dist/ui/components/Checkbox/Checkbox.d.mts.map +1 -0
  82. package/dist/ui/components/Checkbox/Checkbox.mjs +39 -0
  83. package/dist/ui/components/Checkbox/Checkbox.mjs.map +1 -0
  84. package/dist/ui/components/Checkbox/index.d.mts +2 -0
  85. package/dist/ui/components/Checkbox/index.mjs +2 -0
  86. package/dist/ui/components/CodeBlock/CodeBlock.d.mts +22 -0
  87. package/dist/ui/components/CodeBlock/CodeBlock.d.mts.map +1 -0
  88. package/dist/ui/components/CodeBlock/CodeBlock.mjs +66 -0
  89. package/dist/ui/components/CodeBlock/CodeBlock.mjs.map +1 -0
  90. package/dist/ui/components/CodeBlock/index.d.mts +2 -0
  91. package/dist/ui/components/CodeBlock/index.mjs +2 -0
  92. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.d.mts +19 -0
  93. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.d.mts.map +1 -0
  94. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.mjs +59 -0
  95. package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.mjs.map +1 -0
  96. package/dist/ui/components/CodeBlockTabs/index.d.mts +2 -0
  97. package/dist/ui/components/CodeBlockTabs/index.mjs +2 -0
  98. package/dist/ui/components/CollapsibleSection/CollapsibleSection.d.mts +13 -0
  99. package/dist/ui/components/CollapsibleSection/CollapsibleSection.d.mts.map +1 -0
  100. package/dist/ui/components/CollapsibleSection/CollapsibleSection.mjs +55 -0
  101. package/dist/ui/components/CollapsibleSection/CollapsibleSection.mjs.map +1 -0
  102. package/dist/ui/components/CollapsibleSection/index.d.mts +2 -0
  103. package/dist/ui/components/CollapsibleSection/index.mjs +2 -0
  104. package/dist/ui/components/CopyButton/CopyButton.d.mts +12 -0
  105. package/dist/ui/components/CopyButton/CopyButton.d.mts.map +1 -0
  106. package/dist/ui/components/CopyButton/CopyButton.mjs +45 -0
  107. package/dist/ui/components/CopyButton/CopyButton.mjs.map +1 -0
  108. package/dist/ui/components/CopyButton/index.d.mts +2 -0
  109. package/dist/ui/components/CopyButton/index.mjs +2 -0
  110. package/dist/ui/components/Dialog/Dialog.d.mts +26 -0
  111. package/dist/ui/components/Dialog/Dialog.d.mts.map +1 -0
  112. package/dist/ui/components/Dialog/Dialog.mjs +79 -0
  113. package/dist/ui/components/Dialog/Dialog.mjs.map +1 -0
  114. package/dist/ui/components/Dialog/index.d.mts +2 -0
  115. package/dist/ui/components/Dialog/index.mjs +2 -0
  116. package/dist/ui/components/EmptyState/EmptyState.d.mts +18 -0
  117. package/dist/ui/components/EmptyState/EmptyState.d.mts.map +1 -0
  118. package/dist/ui/components/EmptyState/EmptyState.mjs +36 -0
  119. package/dist/ui/components/EmptyState/EmptyState.mjs.map +1 -0
  120. package/dist/ui/components/EmptyState/index.d.mts +2 -0
  121. package/dist/ui/components/EmptyState/index.mjs +2 -0
  122. package/dist/ui/components/FieldError/FieldError.d.mts +14 -0
  123. package/dist/ui/components/FieldError/FieldError.d.mts.map +1 -0
  124. package/dist/ui/components/FieldError/FieldError.mjs +19 -0
  125. package/dist/ui/components/FieldError/FieldError.mjs.map +1 -0
  126. package/dist/ui/components/FieldError/index.d.mts +2 -0
  127. package/dist/ui/components/FieldError/index.mjs +2 -0
  128. package/dist/ui/components/FormattedDate/FormattedDate.d.mts +15 -0
  129. package/dist/ui/components/FormattedDate/FormattedDate.d.mts.map +1 -0
  130. package/dist/ui/components/FormattedDate/FormattedDate.mjs +23 -0
  131. package/dist/ui/components/FormattedDate/FormattedDate.mjs.map +1 -0
  132. package/dist/ui/components/FormattedDate/index.d.mts +2 -0
  133. package/dist/ui/components/FormattedDate/index.mjs +2 -0
  134. package/dist/ui/components/IconButton/IconButton.d.mts +10 -0
  135. package/dist/ui/components/IconButton/IconButton.d.mts.map +1 -0
  136. package/dist/ui/components/IconButton/IconButton.mjs +19 -0
  137. package/dist/ui/components/IconButton/IconButton.mjs.map +1 -0
  138. package/dist/ui/components/IconButton/index.d.mts +2 -0
  139. package/dist/ui/components/IconButton/index.mjs +2 -0
  140. package/dist/ui/components/Input/Input.d.mts +12 -0
  141. package/dist/ui/components/Input/Input.d.mts.map +1 -0
  142. package/dist/ui/components/Input/Input.mjs +43 -0
  143. package/dist/ui/components/Input/Input.mjs.map +1 -0
  144. package/dist/ui/components/Input/index.d.mts +2 -0
  145. package/dist/ui/components/Input/index.mjs +2 -0
  146. package/dist/ui/components/Label/Label.d.mts +11 -0
  147. package/dist/ui/components/Label/Label.d.mts.map +1 -0
  148. package/dist/ui/components/Label/Label.mjs +18 -0
  149. package/dist/ui/components/Label/Label.mjs.map +1 -0
  150. package/dist/ui/components/Label/index.d.mts +2 -0
  151. package/dist/ui/components/Label/index.mjs +2 -0
  152. package/dist/ui/components/LazyVideo/LazyVideo.d.mts +23 -0
  153. package/dist/ui/components/LazyVideo/LazyVideo.d.mts.map +1 -0
  154. package/dist/ui/components/LazyVideo/LazyVideo.mjs +57 -0
  155. package/dist/ui/components/LazyVideo/LazyVideo.mjs.map +1 -0
  156. package/dist/ui/components/LazyVideo/index.d.mts +2 -0
  157. package/dist/ui/components/LazyVideo/index.mjs +2 -0
  158. package/dist/ui/components/Pagination/Pagination.d.mts +38 -0
  159. package/dist/ui/components/Pagination/Pagination.d.mts.map +1 -0
  160. package/dist/ui/components/Pagination/Pagination.mjs +110 -0
  161. package/dist/ui/components/Pagination/Pagination.mjs.map +1 -0
  162. package/dist/ui/components/Pagination/index.d.mts +2 -0
  163. package/dist/ui/components/Pagination/index.mjs +2 -0
  164. package/dist/ui/components/PaginationItem/PaginationItem.d.mts +15 -0
  165. package/dist/ui/components/PaginationItem/PaginationItem.d.mts.map +1 -0
  166. package/dist/ui/components/PaginationItem/PaginationItem.mjs +34 -0
  167. package/dist/ui/components/PaginationItem/PaginationItem.mjs.map +1 -0
  168. package/dist/ui/components/PaginationItem/index.d.mts +2 -0
  169. package/dist/ui/components/PaginationItem/index.mjs +2 -0
  170. package/dist/ui/components/PasswordInput/PasswordInput.d.mts +10 -0
  171. package/dist/ui/components/PasswordInput/PasswordInput.d.mts.map +1 -0
  172. package/dist/ui/components/PasswordInput/PasswordInput.mjs +39 -0
  173. package/dist/ui/components/PasswordInput/PasswordInput.mjs.map +1 -0
  174. package/dist/ui/components/PasswordInput/index.d.mts +2 -0
  175. package/dist/ui/components/PasswordInput/index.mjs +2 -0
  176. package/dist/ui/components/ProgressStepper/ProgressStepper.d.mts +20 -0
  177. package/dist/ui/components/ProgressStepper/ProgressStepper.d.mts.map +1 -0
  178. package/dist/ui/components/ProgressStepper/ProgressStepper.mjs +39 -0
  179. package/dist/ui/components/ProgressStepper/ProgressStepper.mjs.map +1 -0
  180. package/dist/ui/components/ProgressStepper/index.d.mts +2 -0
  181. package/dist/ui/components/ProgressStepper/index.mjs +2 -0
  182. package/dist/ui/components/Prose/Prose.d.mts +10 -0
  183. package/dist/ui/components/Prose/Prose.d.mts.map +1 -0
  184. package/dist/ui/components/Prose/Prose.mjs +19 -0
  185. package/dist/ui/components/Prose/Prose.mjs.map +1 -0
  186. package/dist/ui/components/Prose/index.d.mts +2 -0
  187. package/dist/ui/components/Prose/index.mjs +2 -0
  188. package/dist/ui/components/Radio/Radio.d.mts +8 -0
  189. package/dist/ui/components/Radio/Radio.d.mts.map +1 -0
  190. package/dist/ui/components/Radio/Radio.mjs +25 -0
  191. package/dist/ui/components/Radio/Radio.mjs.map +1 -0
  192. package/dist/ui/components/Radio/index.d.mts +2 -0
  193. package/dist/ui/components/Radio/index.mjs +2 -0
  194. package/dist/ui/components/Reveal/Reveal.d.mts +10 -0
  195. package/dist/ui/components/Reveal/Reveal.d.mts.map +1 -0
  196. package/dist/ui/components/Reveal/Reveal.mjs +18 -0
  197. package/dist/ui/components/Reveal/Reveal.mjs.map +1 -0
  198. package/dist/ui/components/Reveal/index.d.mts +2 -0
  199. package/dist/ui/components/Reveal/index.mjs +2 -0
  200. package/dist/ui/components/SearchInput/SearchInput.d.mts +15 -0
  201. package/dist/ui/components/SearchInput/SearchInput.d.mts.map +1 -0
  202. package/dist/ui/components/SearchInput/SearchInput.mjs +28 -0
  203. package/dist/ui/components/SearchInput/SearchInput.mjs.map +1 -0
  204. package/dist/ui/components/SearchInput/index.d.mts +2 -0
  205. package/dist/ui/components/SearchInput/index.mjs +2 -0
  206. package/dist/ui/components/Select/Select.d.mts +34 -0
  207. package/dist/ui/components/Select/Select.d.mts.map +1 -0
  208. package/dist/ui/components/Select/Select.mjs +167 -0
  209. package/dist/ui/components/Select/Select.mjs.map +1 -0
  210. package/dist/ui/components/Select/index.d.mts +2 -0
  211. package/dist/ui/components/Select/index.mjs +2 -0
  212. package/dist/ui/components/Sheet/Sheet.d.mts +19 -0
  213. package/dist/ui/components/Sheet/Sheet.d.mts.map +1 -0
  214. package/dist/ui/components/Sheet/Sheet.mjs +59 -0
  215. package/dist/ui/components/Sheet/Sheet.mjs.map +1 -0
  216. package/dist/ui/components/Sheet/index.d.mts +2 -0
  217. package/dist/ui/components/Sheet/index.mjs +2 -0
  218. package/dist/ui/components/StaggerReveal/StaggerReveal.d.mts +10 -0
  219. package/dist/ui/components/StaggerReveal/StaggerReveal.d.mts.map +1 -0
  220. package/dist/ui/components/StaggerReveal/StaggerReveal.mjs +31 -0
  221. package/dist/ui/components/StaggerReveal/StaggerReveal.mjs.map +1 -0
  222. package/dist/ui/components/StaggerReveal/index.d.mts +2 -0
  223. package/dist/ui/components/StaggerReveal/index.mjs +2 -0
  224. package/dist/ui/components/Stepper/Stepper.d.mts +15 -0
  225. package/dist/ui/components/Stepper/Stepper.d.mts.map +1 -0
  226. package/dist/ui/components/Stepper/Stepper.mjs +38 -0
  227. package/dist/ui/components/Stepper/Stepper.mjs.map +1 -0
  228. package/dist/ui/components/Stepper/index.d.mts +2 -0
  229. package/dist/ui/components/Stepper/index.mjs +2 -0
  230. package/dist/ui/components/Switch/Switch.d.mts +12 -0
  231. package/dist/ui/components/Switch/Switch.d.mts.map +1 -0
  232. package/dist/ui/components/Switch/Switch.mjs +34 -0
  233. package/dist/ui/components/Switch/Switch.mjs.map +1 -0
  234. package/dist/ui/components/Switch/index.d.mts +2 -0
  235. package/dist/ui/components/Switch/index.mjs +2 -0
  236. package/dist/ui/components/TextButton/TextButton.d.mts +9 -0
  237. package/dist/ui/components/TextButton/TextButton.d.mts.map +1 -0
  238. package/dist/ui/components/TextButton/TextButton.mjs +16 -0
  239. package/dist/ui/components/TextButton/TextButton.mjs.map +1 -0
  240. package/dist/ui/components/TextButton/index.d.mts +2 -0
  241. package/dist/ui/components/TextButton/index.mjs +2 -0
  242. package/dist/ui/components/Textarea/Textarea.d.mts +9 -0
  243. package/dist/ui/components/Textarea/Textarea.d.mts.map +1 -0
  244. package/dist/ui/components/Textarea/Textarea.mjs +27 -0
  245. package/dist/ui/components/Textarea/Textarea.mjs.map +1 -0
  246. package/dist/ui/components/Textarea/index.d.mts +2 -0
  247. package/dist/ui/components/Textarea/index.mjs +2 -0
  248. package/dist/ui/components/Toast/Toast.d.mts +20 -0
  249. package/dist/ui/components/Toast/Toast.d.mts.map +1 -0
  250. package/dist/ui/components/Toast/Toast.mjs +128 -0
  251. package/dist/ui/components/Toast/Toast.mjs.map +1 -0
  252. package/dist/ui/components/Toast/index.d.mts +2 -0
  253. package/dist/ui/components/Toast/index.mjs +2 -0
  254. package/dist/ui/components/Tooltip/Tooltip.d.mts +11 -0
  255. package/dist/ui/components/Tooltip/Tooltip.d.mts.map +1 -0
  256. package/dist/ui/components/Tooltip/Tooltip.mjs +20 -0
  257. package/dist/ui/components/Tooltip/Tooltip.mjs.map +1 -0
  258. package/dist/ui/components/Tooltip/index.d.mts +2 -0
  259. package/dist/ui/components/Tooltip/index.mjs +2 -0
  260. package/dist/ui/components/VisuallyHidden/VisuallyHidden.d.mts +7 -0
  261. package/dist/ui/components/VisuallyHidden/VisuallyHidden.d.mts.map +1 -0
  262. package/dist/ui/components/VisuallyHidden/VisuallyHidden.mjs +13 -0
  263. package/dist/ui/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -0
  264. package/dist/ui/components/VisuallyHidden/index.d.mts +2 -0
  265. package/dist/ui/components/VisuallyHidden/index.mjs +2 -0
  266. package/dist/ui/hooks/index.d.mts +2 -0
  267. package/dist/ui/hooks/index.mjs +2 -0
  268. package/dist/ui/hooks/useInView.d.mts +13 -0
  269. package/dist/ui/hooks/useInView.d.mts.map +1 -0
  270. package/dist/ui/hooks/useInView.mjs +37 -0
  271. package/dist/ui/hooks/useInView.mjs.map +1 -0
  272. package/dist/ui/index.d.mts +81 -0
  273. package/dist/ui/index.mjs +40 -0
  274. package/dist/ui/theme/preset.d.mts +170 -0
  275. package/dist/ui/theme/preset.d.mts.map +1 -0
  276. package/dist/ui/theme/preset.mjs +143 -0
  277. package/dist/ui/theme/preset.mjs.map +1 -0
  278. package/dist/ui/utils/cn.d.mts +6 -0
  279. package/dist/ui/utils/cn.d.mts.map +1 -0
  280. package/dist/ui/utils/cn.mjs +42 -0
  281. package/dist/ui/utils/cn.mjs.map +1 -0
  282. package/dist/ui/utils/index.d.mts +2 -0
  283. package/dist/ui/utils/index.mjs +2 -0
  284. package/dist/utils/index.d.mts +2 -0
  285. package/dist/utils/index.mjs +3 -0
  286. package/dist/utils.mjs +18 -0
  287. package/dist/utils.mjs.map +1 -0
  288. package/package.json +66 -7
  289. package/src/ui/theme/preset.css +53 -0
  290. package/src/ui/theme/preset.ts +131 -0
  291. package/src/ui/theme/theme.css +12 -0
  292. package/src/ui/theme/tokens.css +57 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tetherto/dev-websites-core",
3
- "version": "0.2.0",
4
- "description": "Shared non-UI libraries (Payload CMS, SEO, i18n, utils) for the WDK / QVAC websites.",
3
+ "version": "0.3.0",
4
+ "description": "Shared CMS, SEO, i18n, utils, and UI primitives for the WDK / QVAC websites.",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
7
7
  "access": "public",
@@ -12,7 +12,9 @@
12
12
  "url": "git+https://github.com/tetherto/dev-websites-core.git"
13
13
  },
14
14
  "type": "module",
15
- "sideEffects": false,
15
+ "sideEffects": [
16
+ "**/*.css"
17
+ ],
16
18
  "main": "./dist/index.mjs",
17
19
  "types": "./dist/index.d.mts",
18
20
  "exports": {
@@ -40,19 +42,41 @@
40
42
  "types": "./dist/utils/index.d.mts",
41
43
  "import": "./dist/utils/index.mjs",
42
44
  "default": "./dist/utils/index.mjs"
43
- }
45
+ },
46
+ "./ui": {
47
+ "types": "./dist/ui/index.d.mts",
48
+ "import": "./dist/ui/index.mjs",
49
+ "default": "./dist/ui/index.mjs"
50
+ },
51
+ "./ui/a11y": {
52
+ "types": "./dist/ui/a11y/index.d.mts",
53
+ "import": "./dist/ui/a11y/index.mjs",
54
+ "default": "./dist/ui/a11y/index.mjs"
55
+ },
56
+ "./ui/carousel": {
57
+ "types": "./dist/ui/carousel/index.d.mts",
58
+ "import": "./dist/ui/carousel/index.mjs",
59
+ "default": "./dist/ui/carousel/index.mjs"
60
+ },
61
+ "./ui/theme.css": "./src/ui/theme/theme.css",
62
+ "./ui/theme/tokens.css": "./src/ui/theme/tokens.css",
63
+ "./ui/theme/preset.css": "./src/ui/theme/preset.css",
64
+ "./ui/theme/preset": "./src/ui/theme/preset.ts",
65
+ "./package.json": "./package.json"
44
66
  },
45
67
  "files": [
46
- "dist"
68
+ "dist",
69
+ "src/ui/theme"
47
70
  ],
48
71
  "scripts": {
49
72
  "build": "tsdown",
50
73
  "dev": "tsdown --watch",
51
74
  "prepare": "tsdown",
75
+ "prepublishOnly": "npm run typecheck && npm run build",
52
76
  "typecheck": "tsc --noEmit",
53
77
  "lint": "eslint",
54
78
  "lint:fix": "eslint --fix",
55
- "format": "prettier --write \"src/**/*.ts\" \"*.{json,mjs,md}\""
79
+ "format": "prettier --write \"src/**/*.{ts,tsx,css}\" \"*.{json,mjs,md}\""
56
80
  },
57
81
  "engines": {
58
82
  "node": ">=20"
@@ -61,22 +85,57 @@
61
85
  "@aws-sdk/client-s3": "^3.0.0",
62
86
  "@payloadcms/richtext-lexical": "^3.85.1",
63
87
  "@payloadcms/storage-s3": "^3.85.1",
88
+ "@radix-ui/react-dialog": "^1.1.0",
89
+ "@radix-ui/react-dropdown-menu": "^2.1.0",
90
+ "@radix-ui/react-primitive": "^2.0.0",
91
+ "@radix-ui/react-slot": "^1.1.0",
92
+ "@radix-ui/react-tooltip": "^1.1.0",
93
+ "class-variance-authority": "^0.7.0",
94
+ "clsx": "^2.1.0",
95
+ "embla-carousel-react": "^8.0.0",
64
96
  "next": ">=15",
65
- "payload": "^3.85.1"
97
+ "payload": "^3.85.1",
98
+ "react": ">=19",
99
+ "react-dom": ">=19",
100
+ "react-icons": "^5.0.0",
101
+ "tailwind-merge": "^3.0.0"
102
+ },
103
+ "peerDependenciesMeta": {
104
+ "embla-carousel-react": {
105
+ "optional": true
106
+ },
107
+ "react-icons": {
108
+ "optional": true
109
+ }
66
110
  },
67
111
  "devDependencies": {
68
112
  "@aws-sdk/client-s3": "^3.787.0",
69
113
  "@eslint/js": "^9.39.0",
70
114
  "@payloadcms/richtext-lexical": "3.88.0",
71
115
  "@payloadcms/storage-s3": "3.88.0",
116
+ "@radix-ui/react-dialog": "^1.1.15",
117
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
118
+ "@radix-ui/react-primitive": "^2.1.4",
119
+ "@radix-ui/react-slot": "^1.2.4",
120
+ "@radix-ui/react-tooltip": "^1.2.16",
72
121
  "@types/node": "^22.20.1",
122
+ "@types/react": "^19.2.0",
123
+ "@types/react-dom": "^19.2.0",
124
+ "class-variance-authority": "^0.7.1",
125
+ "clsx": "^2.1.1",
126
+ "embla-carousel-react": "^8.6.0",
73
127
  "eslint": "9.39.4",
74
128
  "eslint-config-prettier": "^10.1.8",
75
129
  "eslint-plugin-import": "^2.32.0",
76
130
  "eslint-plugin-prettier": "^5.5.5",
131
+ "eslint-plugin-react-hooks": "^5.2.0",
77
132
  "next": "^16.2.6",
78
133
  "payload": "3.88.0",
79
134
  "prettier": "^3.8.1",
135
+ "react": "^19.2.0",
136
+ "react-dom": "^19.2.0",
137
+ "react-icons": "^5.5.0",
138
+ "tailwind-merge": "^3.3.1",
80
139
  "tsdown": "^0.22.14",
81
140
  "typescript": "^5.8.0",
82
141
  "typescript-eslint": "^8.67.0",
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Tailwind v4 theme preset for `@tetherto/dev-websites-core/ui`.
3
+ *
4
+ * Maps CSS variables from `tokens.css` → utilities (`bg-accent`, `rounded-btn`, …).
5
+ *
6
+ * One-shot (CSS):
7
+ * @import '@tetherto/dev-websites-core/ui/theme.css';
8
+ *
9
+ * Or stepwise:
10
+ * @import '@tetherto/dev-websites-core/ui/theme/tokens.css';
11
+ * @import './my-brand.css'; // override --accent, etc.
12
+ * @import '@tetherto/dev-websites-core/ui/theme/preset.css';
13
+ *
14
+ * If the app already defines the same utilities in `tailwind.config.ts`
15
+ * (WDK / QVAC today), you do NOT need this file — just keep your config.
16
+ */
17
+
18
+ @theme inline {
19
+ /* Colors */
20
+ --color-background: hsl(var(--background) / <alpha-value>);
21
+ --color-surface: hsl(var(--surface) / <alpha-value>);
22
+ --color-surface-elevated: hsl(var(--surface-elevated) / <alpha-value>);
23
+ --color-card: hsl(var(--card) / <alpha-value>);
24
+ --color-card-elevated: hsl(var(--card-elevated) / <alpha-value>);
25
+
26
+ --color-foreground: hsl(var(--foreground) / <alpha-value>);
27
+ --color-secondary: hsl(var(--secondary) / <alpha-value>);
28
+ --color-muted: hsl(var(--muted) / <alpha-value>);
29
+
30
+ --color-accent: hsl(var(--accent) / <alpha-value>);
31
+ --color-accent-foreground: hsl(var(--accent-foreground) / <alpha-value>);
32
+ --color-accent-hover: hsl(var(--accent-hover) / <alpha-value>);
33
+ --color-accent-dim: hsl(var(--accent-dim) / <alpha-value>);
34
+
35
+ --color-border: hsl(var(--border) / <alpha-value>);
36
+ --color-border-subtle: hsl(var(--border-subtle) / <alpha-value>);
37
+ --color-destructive: hsl(var(--destructive) / <alpha-value>);
38
+ --color-success: hsl(var(--success) / <alpha-value>);
39
+ --color-warning: hsl(var(--warning) / <alpha-value>);
40
+ --color-ring: hsl(var(--ring) / <alpha-value>);
41
+
42
+ /* Radius → rounded-btn | rounded-control | rounded-card */
43
+ --radius-btn: var(--btn-radius);
44
+ --radius-control: var(--control-radius);
45
+ --radius-card: var(--card-radius);
46
+
47
+ /* Sizing → h-btn | h-btn-sm | px-btn | px-btn-sm | size-btn-sm */
48
+ --height-btn: var(--btn-h);
49
+ --height-btn-sm: var(--btn-h-sm);
50
+ --spacing-btn: var(--btn-px);
51
+ --spacing-btn-sm: var(--btn-px-sm);
52
+ --size-btn-sm: var(--btn-h-sm);
53
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Shared websites UI Tailwind preset — full theme contract, WDK defaults.
3
+ *
4
+ * Same utility names everywhere (`bg-accent`, `text-foreground`, `text-display-1`,
5
+ * `rounded-btn`, `h-btn`, …). Apps point CSS variables at their brand palette.
6
+ *
7
+ * // WDK — defaults already match site tokens
8
+ * presets: [uiPreset]
9
+ *
10
+ * // QVAC — same keys, override color (and any other) values
11
+ * presets: [uiPreset]
12
+ * theme: { extend: { colors: { accent: { DEFAULT: '…' }, … } } }
13
+ *
14
+ * CSS: define the `--color-*` / `--primitive-*` / `--btn-*` vars the preset
15
+ * references (see WDK `globals.css`), or remap them in the app `:root`.
16
+ */
17
+
18
+ const hsl = (name: string) => `hsl(var(${name}) / <alpha-value>)`
19
+ const cssVar = (name: string) => `var(${name})`
20
+
21
+ const preset = {
22
+ theme: {
23
+ extend: {
24
+ colors: {
25
+ 'background': hsl('--color-bg-base'),
26
+ 'recessed': hsl('--color-bg-recessed'),
27
+ 'surface': hsl('--color-bg-surface'),
28
+ 'surface-elevated': hsl('--color-bg-card-elevated'),
29
+ 'card': hsl('--color-bg-card'),
30
+ 'card-elevated': hsl('--color-bg-card-elevated'),
31
+ 'foreground': hsl('--color-text-primary'),
32
+ 'secondary': hsl('--color-text-secondary'),
33
+ 'muted': hsl('--color-text-muted'),
34
+ 'landing-text': hsl('--color-landing-text'),
35
+ 'landing-text-light': hsl('--color-landing-text-light'),
36
+ 'landing-text-light-30': cssVar('--landing-text-light-30'),
37
+
38
+ 'accent': {
39
+ DEFAULT: hsl('--color-accent'),
40
+ foreground: hsl('--color-text-primary'),
41
+ hover: hsl('--color-accent-hover'),
42
+ dim: hsl('--color-accent-dim'),
43
+ },
44
+ 'border': {
45
+ DEFAULT: hsl('--color-border-default'),
46
+ subtle: hsl('--color-border-subtle'),
47
+ },
48
+ 'success': hsl('--color-success'),
49
+ 'warning': hsl('--color-warning'),
50
+ 'error': hsl('--color-error'),
51
+ 'destructive': hsl('--color-error'),
52
+ 'info': hsl('--color-info'),
53
+ 'ring': hsl('--color-accent'),
54
+
55
+ 'teal': hsl('--color-teal'),
56
+ 'amber': hsl('--color-amber'),
57
+ 'purple': hsl('--color-purple'),
58
+ 'green': hsl('--color-green'),
59
+
60
+ 'blog-primary': hsl('--color-blog-primary'),
61
+ 'blog-body': hsl('--color-blog-body'),
62
+ 'blog-meta': hsl('--color-blog-meta'),
63
+
64
+ 'primitive': {
65
+ 'black': hsl('--primitive-black'),
66
+ 'dark-grey': hsl('--primitive-dark-grey'),
67
+ 'grey': hsl('--primitive-grey'),
68
+ 'light-grey': hsl('--primitive-light-grey'),
69
+ 'white': hsl('--primitive-white'),
70
+ 'orange': hsl('--primitive-orange'),
71
+ 'orange-dark': hsl('--primitive-orange-dark'),
72
+ 'purple': hsl('--primitive-purple'),
73
+ },
74
+ },
75
+
76
+ fontFamily: {
77
+ sans: ['var(--font-sans)', 'sans-serif'],
78
+ display: ['var(--font-sharp)', 'sans-serif'],
79
+ mono: ['var(--font-mono)', 'monospace'],
80
+ },
81
+
82
+ fontSize: {
83
+ 'display-1': ['60px', { lineHeight: '1.05', letterSpacing: '0' }],
84
+ 'display-2': ['50px', { lineHeight: '1.05', letterSpacing: '0' }],
85
+ 'heading-3': ['38px', { lineHeight: '40px', letterSpacing: '0' }],
86
+ 'subhead-1': ['28px', { lineHeight: '32px', letterSpacing: '0' }],
87
+ 'subhead-2': ['22px', { lineHeight: '26px', letterSpacing: '0' }],
88
+ 'subhead-3': ['13px', { lineHeight: '1', letterSpacing: '2px' }],
89
+ 'body-1': ['22px', { lineHeight: '32px' }],
90
+ 'body-2': ['18px', { lineHeight: '28px' }],
91
+ 'body-sm': ['15px', { lineHeight: '20px' }],
92
+ 'body-md': ['14px', { lineHeight: '20px' }],
93
+ 'body-xs': ['13px', { lineHeight: '18px' }],
94
+ 'btn': ['14px', { lineHeight: '19px', letterSpacing: '0.5px' }],
95
+ 'btn-cta': ['15px', { lineHeight: '1' }],
96
+ 'code': ['17px', { lineHeight: '20px' }],
97
+ 'label': ['11px', { lineHeight: '16px', letterSpacing: '0.3px' }],
98
+ 'badge': ['10px', { lineHeight: '1', letterSpacing: '0.4px' }],
99
+ 'caption': ['12px', { lineHeight: '16px' }],
100
+ 'inter-h1': ['50px', { lineHeight: '60px' }],
101
+ 'inter-h2': ['30px', { lineHeight: '38px' }],
102
+ 'inter-h3': ['26px', { lineHeight: '36px' }],
103
+ 'blog-mob': ['16px', { lineHeight: '24px' }],
104
+ },
105
+
106
+ borderRadius: {
107
+ btn: '5px',
108
+ card: '10px',
109
+ badge: '5px',
110
+ control: 'var(--control-radius)',
111
+ pill: '9999px',
112
+ },
113
+
114
+ height: {
115
+ 'btn': 'var(--btn-primary-height)',
116
+ 'btn-sm': 'var(--btn-sm-height)',
117
+ },
118
+
119
+ size: {
120
+ 'btn-sm': 'var(--btn-sm-height)',
121
+ },
122
+
123
+ padding: {
124
+ 'btn': 'var(--btn-primary-px)',
125
+ 'btn-sm': 'var(--btn-sm-px)',
126
+ },
127
+ },
128
+ },
129
+ }
130
+
131
+ export default preset
@@ -0,0 +1,12 @@
1
+ /**
2
+ * One-shot theme bootstrap for Tailwind v4 CSS pipelines.
3
+ *
4
+ * @import 'tailwindcss';
5
+ * @import '@tetherto/dev-websites-core/ui/theme.css';
6
+ *
7
+ * Then override brand in your own CSS:
8
+ * :root { --accent: 180 100% 40%; }
9
+ */
10
+
11
+ @import './tokens.css';
12
+ @import './preset.css';
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Shared UI semantic tokens — CSS custom properties (HSL channels, no `hsl()` wrapper).
3
+ *
4
+ * Used by `@tetherto/dev-websites-core/ui/theme/preset.css` (Tailwind v4 `@theme`)
5
+ * and `@tetherto/dev-websites-core/ui/theme/preset` (JS Tailwind preset).
6
+ *
7
+ * Apps own brand: override any of these in your `:root` (or import this file
8
+ * first, then set brand values). Values below are neutral dark defaults so the
9
+ * package can be previewed without a host app.
10
+ *
11
+ * Utilities that components expect (via the preset):
12
+ * bg-background | bg-surface | bg-surface-elevated | bg-card | bg-card-elevated
13
+ * text-foreground | text-secondary | text-muted
14
+ * bg-accent | text-accent-foreground | accent-hover | accent-dim
15
+ * border-border | border-border-subtle | destructive | success | ring
16
+ * rounded-btn | rounded-control | rounded-card
17
+ * h-btn | h-btn-sm | px-btn | px-btn-sm | size-btn-sm
18
+ */
19
+
20
+ :root {
21
+ /* ── Surfaces ─────────────────────────────────────────────── */
22
+ --background: 40 12% 5%; /* page */
23
+ --surface: 30 8% 9%;
24
+ --surface-elevated: 33 11% 16%;
25
+ --card: 24 7% 14%;
26
+ --card-elevated: 33 11% 16%;
27
+
28
+ /* ── Text ────────────────────────────────────────────────── */
29
+ --foreground: 0 0% 100%;
30
+ --secondary: 37 10% 65%;
31
+ --muted: 38 8% 41%;
32
+
33
+ /* ── Brand ────────────────────────────────────────────────── */
34
+ --accent: 18 100% 50%;
35
+ --accent-foreground: 0 0% 100%;
36
+ --accent-hover: 18 100% 45%;
37
+ --accent-dim: 18 100% 50%;
38
+
39
+ /* ── Borders & feedback ───────────────────────────────────── */
40
+ --border: 30 10% 15%;
41
+ --border-subtle: 24 7% 18%;
42
+ --destructive: 0 100% 64%;
43
+ --success: 160 60% 45%;
44
+ --warning: 38 92% 50%;
45
+ --ring: var(--accent);
46
+
47
+ /* ── Radius (raw) → mapped to rounded-* in the preset ─────── */
48
+ --btn-radius: 0.3125rem; /* 5px */
49
+ --control-radius: 0.375rem; /* 6px */
50
+ --card-radius: 0.625rem; /* 10px */
51
+
52
+ /* ── Control sizing ───────────────────────────────────────── */
53
+ --btn-h: 2.25rem; /* 36px */
54
+ --btn-h-sm: 1.875rem; /* 30px */
55
+ --btn-px: 1.5rem; /* 24px */
56
+ --btn-px-sm: 0.75rem; /* 12px */
57
+ }