@dreamtree-org/twreact-ui 1.2.1 → 1.3.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 (215) hide show
  1. package/DESIGN.md +118 -0
  2. package/README.md +231 -44
  3. package/ai-skills/dreamtree-ui.md +98 -12
  4. package/dist/ai-schema.json +452 -17
  5. package/dist/components/blocks/AppShell.d.ts +4 -0
  6. package/dist/components/blocks/AppShell.d.ts.map +1 -0
  7. package/dist/components/blocks/ConfirmDialog.d.ts +4 -0
  8. package/dist/components/blocks/ConfirmDialog.d.ts.map +1 -0
  9. package/dist/components/blocks/EmptyState.d.ts +4 -0
  10. package/dist/components/blocks/EmptyState.d.ts.map +1 -0
  11. package/dist/components/blocks/ErrorState.d.ts +4 -0
  12. package/dist/components/blocks/ErrorState.d.ts.map +1 -0
  13. package/dist/components/blocks/LoadingState.d.ts +9 -0
  14. package/dist/components/blocks/LoadingState.d.ts.map +1 -0
  15. package/dist/components/blocks/PageHeader.d.ts +4 -0
  16. package/dist/components/blocks/PageHeader.d.ts.map +1 -0
  17. package/dist/components/blocks/StatCard.d.ts +4 -0
  18. package/dist/components/blocks/StatCard.d.ts.map +1 -0
  19. package/dist/components/blocks/StatusPill.d.ts +5 -0
  20. package/dist/components/blocks/StatusPill.d.ts.map +1 -0
  21. package/dist/components/core/Accordion.d.ts.map +1 -1
  22. package/dist/components/core/Button.d.ts.map +1 -1
  23. package/dist/components/core/Checkbox.d.ts.map +1 -1
  24. package/dist/components/core/ColorPicker.d.ts.map +1 -1
  25. package/dist/components/core/DatePicker.d.ts.map +1 -1
  26. package/dist/components/core/DateRangePicker.d.ts.map +1 -1
  27. package/dist/components/core/Form.d.ts.map +1 -1
  28. package/dist/components/core/Input.d.ts.map +1 -1
  29. package/dist/components/core/LocationPicker.d.ts.map +1 -1
  30. package/dist/components/core/Popover.d.ts +4 -0
  31. package/dist/components/core/Popover.d.ts.map +1 -0
  32. package/dist/components/core/PriceRangePicker.d.ts.map +1 -1
  33. package/dist/components/core/ProgressBar.d.ts.map +1 -1
  34. package/dist/components/core/Radio.d.ts.map +1 -1
  35. package/dist/components/core/Rate.d.ts.map +1 -1
  36. package/dist/components/core/Select.d.ts.map +1 -1
  37. package/dist/components/core/Skeleton.d.ts.map +1 -1
  38. package/dist/components/core/Slider.d.ts +4 -0
  39. package/dist/components/core/Slider.d.ts.map +1 -0
  40. package/dist/components/core/SpeechToText.d.ts.map +1 -1
  41. package/dist/components/core/Switch.d.ts.map +1 -1
  42. package/dist/components/core/Table/ActionMenu.d.ts.map +1 -1
  43. package/dist/components/core/Table/ColumnMenu.d.ts +2 -1
  44. package/dist/components/core/Table/ColumnMenu.d.ts.map +1 -1
  45. package/dist/components/core/Table/MobileCard.d.ts +2 -2
  46. package/dist/components/core/Table/MobileCard.d.ts.map +1 -1
  47. package/dist/components/core/Table/Table.d.ts.map +1 -1
  48. package/dist/components/core/Table/TableRow.d.ts +4 -2
  49. package/dist/components/core/Table/TableRow.d.ts.map +1 -1
  50. package/dist/components/core/Tabs.d.ts.map +1 -1
  51. package/dist/components/core/Textarea.d.ts +4 -0
  52. package/dist/components/core/Textarea.d.ts.map +1 -0
  53. package/dist/components/core/ThreeDotPopover.d.ts.map +1 -1
  54. package/dist/components/core/Tooltip.d.ts.map +1 -1
  55. package/dist/components/feedback/Dialog.d.ts.map +1 -1
  56. package/dist/components/feedback/Drawer.d.ts +4 -0
  57. package/dist/components/feedback/Drawer.d.ts.map +1 -0
  58. package/dist/components/feedback/Toast.d.ts +14 -5
  59. package/dist/components/feedback/Toast.d.ts.map +1 -1
  60. package/dist/components/feedback/Tour.d.ts +4 -0
  61. package/dist/components/feedback/Tour.d.ts.map +1 -0
  62. package/dist/components/feedback/TourSpotlight.d.ts +9 -0
  63. package/dist/components/feedback/TourSpotlight.d.ts.map +1 -0
  64. package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -1
  65. package/dist/components/navigation/FootNav.d.ts.map +1 -1
  66. package/dist/components/navigation/Navbar.d.ts.map +1 -1
  67. package/dist/components/navigation/Sidebar.d.ts +8 -2
  68. package/dist/components/navigation/Sidebar.d.ts.map +1 -1
  69. package/dist/components/utility/Badge.d.ts.map +1 -1
  70. package/dist/components/utility/FileUpload.d.ts.map +1 -1
  71. package/dist/components/utility/Sortable.d.ts +4 -0
  72. package/dist/components/utility/Sortable.d.ts.map +1 -0
  73. package/dist/esm/_vendor/object-assign/index.js +99 -0
  74. package/dist/esm/_vendor/prop-types/_vendor/react-is/cjs/react-is.development.js +190 -0
  75. package/dist/esm/_vendor/prop-types/_vendor/react-is/cjs/react-is.production.min.js +26 -0
  76. package/dist/esm/_vendor/prop-types/_vendor/react-is/index.js +19 -0
  77. package/dist/esm/_vendor/prop-types/checkPropTypes.js +115 -0
  78. package/dist/esm/_vendor/prop-types/factoryWithThrowingShims.js +74 -0
  79. package/dist/esm/_vendor/prop-types/factoryWithTypeCheckers.js +625 -0
  80. package/dist/esm/_vendor/prop-types/index.js +30 -0
  81. package/dist/esm/_vendor/prop-types/lib/ReactPropTypesSecret.js +21 -0
  82. package/dist/esm/_vendor/prop-types/lib/has.js +11 -0
  83. package/dist/esm/_virtual/_commonjsHelpers.js +5 -0
  84. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +329 -0
  85. package/dist/esm/_virtual/index.js +3 -0
  86. package/dist/esm/_virtual/index2.js +3 -0
  87. package/dist/esm/_virtual/react-is.development.js +3 -0
  88. package/dist/esm/_virtual/react-is.production.min.js +3 -0
  89. package/dist/esm/components/blocks/AppShell.js +205 -0
  90. package/dist/esm/components/blocks/ConfirmDialog.js +57 -0
  91. package/dist/esm/components/blocks/EmptyState.js +44 -0
  92. package/dist/esm/components/blocks/ErrorState.js +53 -0
  93. package/dist/esm/components/blocks/LoadingState.js +134 -0
  94. package/dist/esm/components/blocks/PageHeader.js +51 -0
  95. package/dist/esm/components/blocks/StatCard.js +79 -0
  96. package/dist/esm/components/blocks/StatusPill.js +55 -0
  97. package/dist/esm/components/core/Accordion.js +260 -0
  98. package/dist/esm/components/core/Button.js +59 -0
  99. package/dist/esm/components/core/Checkbox.js +188 -0
  100. package/dist/esm/components/core/ColorPicker.js +348 -0
  101. package/dist/esm/components/core/DatePicker.js +436 -0
  102. package/dist/esm/components/core/DateRangePicker.js +494 -0
  103. package/dist/esm/components/core/Form.js +522 -0
  104. package/dist/esm/components/core/Input.js +179 -0
  105. package/dist/esm/components/core/Loader.js +141 -0
  106. package/dist/esm/components/core/LocationPicker.js +161 -0
  107. package/dist/esm/components/core/Popover.js +171 -0
  108. package/dist/esm/components/core/PriceRangePicker.js +376 -0
  109. package/dist/esm/components/core/ProgressBar.js +152 -0
  110. package/dist/esm/components/core/Radio.js +156 -0
  111. package/dist/esm/components/core/Rate.js +197 -0
  112. package/dist/esm/components/core/RoundedTag.js +118 -0
  113. package/dist/esm/components/core/Select.js +857 -0
  114. package/dist/esm/components/core/Skeleton.js +100 -0
  115. package/dist/esm/components/core/Slider.js +134 -0
  116. package/dist/esm/components/core/SpeechToText.js +226 -0
  117. package/dist/esm/components/core/Switch.js +207 -0
  118. package/dist/esm/components/core/Table/ActionMenu.js +251 -0
  119. package/dist/esm/components/core/Table/ColumnMenu.js +55 -0
  120. package/dist/esm/components/core/Table/FieldInput.js +157 -0
  121. package/dist/esm/components/core/Table/MobileCard.js +187 -0
  122. package/dist/esm/components/core/Table/MobileFilters.js +72 -0
  123. package/dist/esm/components/core/Table/Pagination.js +157 -0
  124. package/dist/esm/components/core/Table/Table.js +1533 -0
  125. package/dist/esm/components/core/Table/TableRow.js +254 -0
  126. package/dist/esm/components/core/Table/constants.js +35 -0
  127. package/dist/esm/components/core/Table/helpers.js +124 -0
  128. package/dist/esm/components/core/Table/useClickOutside.js +26 -0
  129. package/dist/esm/components/core/Tabs.js +289 -0
  130. package/dist/esm/components/core/TextToSpeech.js +52 -0
  131. package/dist/esm/components/core/Textarea.js +125 -0
  132. package/dist/esm/components/core/ThreeDotPopover.js +160 -0
  133. package/dist/esm/components/core/Tooltip.js +372 -0
  134. package/dist/esm/components/feedback/Alert.js +96 -0
  135. package/dist/esm/components/feedback/Dialog.js +200 -0
  136. package/dist/esm/components/feedback/Drawer.js +171 -0
  137. package/dist/esm/components/feedback/Toast.js +362 -0
  138. package/dist/esm/components/feedback/Tour.js +214 -0
  139. package/dist/esm/components/feedback/TourSpotlight.js +71 -0
  140. package/dist/esm/components/navigation/Breadcrumbs.js +75 -0
  141. package/dist/esm/components/navigation/Dropdown.js +53 -0
  142. package/dist/esm/components/navigation/FootNav.js +51 -0
  143. package/dist/esm/components/navigation/Navbar.js +437 -0
  144. package/dist/esm/components/navigation/Sidebar.js +567 -0
  145. package/dist/esm/components/utility/Avatar.js +89 -0
  146. package/dist/esm/components/utility/Badge.js +47 -0
  147. package/dist/esm/components/utility/Card.js +85 -0
  148. package/dist/esm/components/utility/Carousel.js +97 -0
  149. package/dist/esm/components/utility/Condition.js +9 -0
  150. package/dist/esm/components/utility/FileUpload.js +177 -0
  151. package/dist/esm/components/utility/Pagination.js +111 -0
  152. package/dist/esm/components/utility/Sortable.js +190 -0
  153. package/dist/esm/components/utility/Stepper.js +101 -0
  154. package/dist/esm/hooks/useApi.js +169 -0
  155. package/dist/esm/hooks/useControllableState.js +32 -0
  156. package/dist/esm/hooks/useFocusTrap.js +85 -0
  157. package/dist/esm/hooks/useLatestRef.js +20 -0
  158. package/dist/esm/hooks/useMixins.js +100 -0
  159. package/dist/esm/hooks/useScrollLock.js +26 -0
  160. package/dist/esm/hooks/useSliderValues.js +135 -0
  161. package/dist/esm/hooks/useSortable.js +188 -0
  162. package/dist/esm/hooks/useTheme.js +53 -0
  163. package/dist/esm/hooks/useTourTarget.js +92 -0
  164. package/dist/esm/index.js +65 -0
  165. package/dist/esm/store/index.js +26 -0
  166. package/dist/esm/store/store.js +107 -0
  167. package/dist/esm/store/storeSlice.js +45 -0
  168. package/dist/esm/utils/cn.js +11 -0
  169. package/dist/esm/utils/emitter.js +169 -0
  170. package/dist/esm/utils/helpers.js +161 -0
  171. package/dist/esm/utils/position.js +134 -0
  172. package/dist/hooks/useApi.d.ts +2 -1
  173. package/dist/hooks/useApi.d.ts.map +1 -1
  174. package/dist/hooks/useControllableState.d.ts +11 -0
  175. package/dist/hooks/useControllableState.d.ts.map +1 -0
  176. package/dist/hooks/useFocusTrap.d.ts +15 -0
  177. package/dist/hooks/useFocusTrap.d.ts.map +1 -0
  178. package/dist/hooks/useLatestRef.d.ts +8 -0
  179. package/dist/hooks/useLatestRef.d.ts.map +1 -0
  180. package/dist/hooks/useMixins.d.ts.map +1 -1
  181. package/dist/hooks/useScrollLock.d.ts +2 -0
  182. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  183. package/dist/hooks/useSliderValues.d.ts +43 -0
  184. package/dist/hooks/useSliderValues.d.ts.map +1 -0
  185. package/dist/hooks/useSortable.d.ts +32 -0
  186. package/dist/hooks/useSortable.d.ts.map +1 -0
  187. package/dist/hooks/useTheme.d.ts.map +1 -1
  188. package/dist/hooks/useTourTarget.d.ts +15 -0
  189. package/dist/hooks/useTourTarget.d.ts.map +1 -0
  190. package/dist/index.css +1 -1
  191. package/dist/index.d.ts +55 -39
  192. package/dist/index.esm.css +1 -1
  193. package/dist/index.esm.js +7937 -4659
  194. package/dist/index.js +7950 -4657
  195. package/dist/tokens/brands/default.css +1 -0
  196. package/dist/tokens/brands/default.json +5 -0
  197. package/dist/tokens/brands/practicepro.css +17 -0
  198. package/dist/tokens/brands/practicepro.json +27 -0
  199. package/dist/tokens/tailwind3-preset.cjs +214 -0
  200. package/dist/tokens/theme.css +193 -0
  201. package/dist/tokens/tokens.json +373 -0
  202. package/dist/tokens/vars.css +98 -0
  203. package/dist/types/blocks.d.ts +109 -0
  204. package/dist/types/blocks.d.ts.map +1 -0
  205. package/dist/types/index.d.ts +194 -5
  206. package/dist/types/index.d.ts.map +1 -1
  207. package/dist/utils/position.d.ts +30 -0
  208. package/dist/utils/position.d.ts.map +1 -0
  209. package/doc/README.md +26 -1
  210. package/mcp/catalog.snapshot.json +1643 -549
  211. package/package.json +24 -6
  212. package/tokens/brands/default.json +5 -0
  213. package/tokens/brands/practicepro.json +27 -0
  214. package/tokens/lib.cjs +128 -0
  215. package/tokens/tokens.json +133 -0
@@ -0,0 +1 @@
1
+ /* Brand "default": only the variables it overrides. Load after twreact-ui's CSS. */
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "default",
3
+ "label": "Dreamtree default",
4
+ "$description": "No overrides: the shared tokens as shipped (Tailwind blue primary, slate shell)."
5
+ }
@@ -0,0 +1,17 @@
1
+ /* Brand "practicepro": only the variables it overrides. Load after twreact-ui's CSS. */
2
+ :root {
3
+ --dt-primary-50: 236 251 248;
4
+ --dt-primary-100: 209 243 238;
5
+ --dt-primary-200: 166 230 220;
6
+ --dt-primary-300: 111 209 196;
7
+ --dt-primary-400: 52 179 166;
8
+ --dt-primary-500: 15 138 138;
9
+ --dt-primary-600: 13 115 119;
10
+ --dt-primary-700: 11 93 96;
11
+ --dt-primary-800: 11 74 77;
12
+ --dt-primary-900: 10 61 64;
13
+ --dt-primary-950: 5 36 38;
14
+ --dt-background: 246 248 251;
15
+ --dt-shell: 15 43 61;
16
+ --dt-shell-active: 19 96 106;
17
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "practicepro",
3
+ "label": "PracticePro",
4
+ "$description": "Teal primary and navy shell, taken from PracticePro/app/globals.css (brand-50/100/500/600/700, shell, shell-active). Steps PracticePro does not define are interpolated on the same hue. PracticePro's own muted grey (#64748b) is not carried over: on the #f6f8fb background it is about 4.4:1, below WCAG AA, so the shared muted token (#475569, 7.5:1) is used.",
5
+ "color": {
6
+ "primary": {
7
+ "50": "#ecfbf8",
8
+ "100": "#d1f3ee",
9
+ "200": "#a6e6dc",
10
+ "300": "#6fd1c4",
11
+ "400": "#34b3a6",
12
+ "500": "#0f8a8a",
13
+ "600": "#0d7377",
14
+ "700": "#0b5d60",
15
+ "800": "#0b4a4d",
16
+ "900": "#0a3d40",
17
+ "950": "#052426"
18
+ }
19
+ },
20
+ "role": {
21
+ "background": "#f6f8fb",
22
+ "foreground": "#0f172a",
23
+ "line": "#e2e8f0",
24
+ "shell": "#0f2b3d",
25
+ "shell-active": "#13606a"
26
+ }
27
+ }
@@ -0,0 +1,214 @@
1
+ // Tailwind 3 preset for Dreamtree tokens. Generated by scripts/build-tokens.mjs — do not edit.
2
+ // Usage: module.exports = { presets: [require('@dreamtree-org/twreact-ui/dist/tokens/tailwind3-preset.cjs')], ... }
3
+ const plugin = require('tailwindcss/plugin');
4
+ const colors = {
5
+ "primary": {
6
+ "50": "rgb(var(--dt-primary-50) / <alpha-value>)",
7
+ "100": "rgb(var(--dt-primary-100) / <alpha-value>)",
8
+ "200": "rgb(var(--dt-primary-200) / <alpha-value>)",
9
+ "300": "rgb(var(--dt-primary-300) / <alpha-value>)",
10
+ "400": "rgb(var(--dt-primary-400) / <alpha-value>)",
11
+ "500": "rgb(var(--dt-primary-500) / <alpha-value>)",
12
+ "600": "rgb(var(--dt-primary-600) / <alpha-value>)",
13
+ "700": "rgb(var(--dt-primary-700) / <alpha-value>)",
14
+ "800": "rgb(var(--dt-primary-800) / <alpha-value>)",
15
+ "900": "rgb(var(--dt-primary-900) / <alpha-value>)",
16
+ "950": "rgb(var(--dt-primary-950) / <alpha-value>)"
17
+ },
18
+ "secondary": {
19
+ "50": "rgb(var(--dt-secondary-50) / <alpha-value>)",
20
+ "100": "rgb(var(--dt-secondary-100) / <alpha-value>)",
21
+ "200": "rgb(var(--dt-secondary-200) / <alpha-value>)",
22
+ "300": "rgb(var(--dt-secondary-300) / <alpha-value>)",
23
+ "400": "rgb(var(--dt-secondary-400) / <alpha-value>)",
24
+ "500": "rgb(var(--dt-secondary-500) / <alpha-value>)",
25
+ "600": "rgb(var(--dt-secondary-600) / <alpha-value>)",
26
+ "700": "rgb(var(--dt-secondary-700) / <alpha-value>)",
27
+ "800": "rgb(var(--dt-secondary-800) / <alpha-value>)",
28
+ "900": "rgb(var(--dt-secondary-900) / <alpha-value>)",
29
+ "950": "rgb(var(--dt-secondary-950) / <alpha-value>)"
30
+ },
31
+ "success": {
32
+ "50": "rgb(var(--dt-success-50) / <alpha-value>)",
33
+ "100": "rgb(var(--dt-success-100) / <alpha-value>)",
34
+ "200": "rgb(var(--dt-success-200) / <alpha-value>)",
35
+ "300": "rgb(var(--dt-success-300) / <alpha-value>)",
36
+ "400": "rgb(var(--dt-success-400) / <alpha-value>)",
37
+ "500": "rgb(var(--dt-success-500) / <alpha-value>)",
38
+ "600": "rgb(var(--dt-success-600) / <alpha-value>)",
39
+ "700": "rgb(var(--dt-success-700) / <alpha-value>)",
40
+ "800": "rgb(var(--dt-success-800) / <alpha-value>)",
41
+ "900": "rgb(var(--dt-success-900) / <alpha-value>)",
42
+ "950": "rgb(var(--dt-success-950) / <alpha-value>)"
43
+ },
44
+ "warning": {
45
+ "50": "rgb(var(--dt-warning-50) / <alpha-value>)",
46
+ "100": "rgb(var(--dt-warning-100) / <alpha-value>)",
47
+ "200": "rgb(var(--dt-warning-200) / <alpha-value>)",
48
+ "300": "rgb(var(--dt-warning-300) / <alpha-value>)",
49
+ "400": "rgb(var(--dt-warning-400) / <alpha-value>)",
50
+ "500": "rgb(var(--dt-warning-500) / <alpha-value>)",
51
+ "600": "rgb(var(--dt-warning-600) / <alpha-value>)",
52
+ "700": "rgb(var(--dt-warning-700) / <alpha-value>)",
53
+ "800": "rgb(var(--dt-warning-800) / <alpha-value>)",
54
+ "900": "rgb(var(--dt-warning-900) / <alpha-value>)",
55
+ "950": "rgb(var(--dt-warning-950) / <alpha-value>)"
56
+ },
57
+ "error": {
58
+ "50": "rgb(var(--dt-error-50) / <alpha-value>)",
59
+ "100": "rgb(var(--dt-error-100) / <alpha-value>)",
60
+ "200": "rgb(var(--dt-error-200) / <alpha-value>)",
61
+ "300": "rgb(var(--dt-error-300) / <alpha-value>)",
62
+ "400": "rgb(var(--dt-error-400) / <alpha-value>)",
63
+ "500": "rgb(var(--dt-error-500) / <alpha-value>)",
64
+ "600": "rgb(var(--dt-error-600) / <alpha-value>)",
65
+ "700": "rgb(var(--dt-error-700) / <alpha-value>)",
66
+ "800": "rgb(var(--dt-error-800) / <alpha-value>)",
67
+ "900": "rgb(var(--dt-error-900) / <alpha-value>)",
68
+ "950": "rgb(var(--dt-error-950) / <alpha-value>)"
69
+ },
70
+ "info": {
71
+ "50": "rgb(var(--dt-info-50) / <alpha-value>)",
72
+ "100": "rgb(var(--dt-info-100) / <alpha-value>)",
73
+ "200": "rgb(var(--dt-info-200) / <alpha-value>)",
74
+ "300": "rgb(var(--dt-info-300) / <alpha-value>)",
75
+ "400": "rgb(var(--dt-info-400) / <alpha-value>)",
76
+ "500": "rgb(var(--dt-info-500) / <alpha-value>)",
77
+ "600": "rgb(var(--dt-info-600) / <alpha-value>)",
78
+ "700": "rgb(var(--dt-info-700) / <alpha-value>)",
79
+ "800": "rgb(var(--dt-info-800) / <alpha-value>)",
80
+ "900": "rgb(var(--dt-info-900) / <alpha-value>)",
81
+ "950": "rgb(var(--dt-info-950) / <alpha-value>)"
82
+ },
83
+ "gray": {
84
+ "50": "rgb(var(--dt-gray-50) / <alpha-value>)",
85
+ "100": "rgb(var(--dt-gray-100) / <alpha-value>)",
86
+ "200": "rgb(var(--dt-gray-200) / <alpha-value>)",
87
+ "300": "rgb(var(--dt-gray-300) / <alpha-value>)",
88
+ "400": "rgb(var(--dt-gray-400) / <alpha-value>)",
89
+ "500": "rgb(var(--dt-gray-500) / <alpha-value>)",
90
+ "600": "rgb(var(--dt-gray-600) / <alpha-value>)",
91
+ "700": "rgb(var(--dt-gray-700) / <alpha-value>)",
92
+ "800": "rgb(var(--dt-gray-800) / <alpha-value>)",
93
+ "900": "rgb(var(--dt-gray-900) / <alpha-value>)",
94
+ "950": "rgb(var(--dt-gray-950) / <alpha-value>)"
95
+ },
96
+ "background": "rgb(var(--dt-background) / <alpha-value>)",
97
+ "surface": "rgb(var(--dt-surface) / <alpha-value>)",
98
+ "foreground": "rgb(var(--dt-foreground) / <alpha-value>)",
99
+ "muted": "rgb(var(--dt-muted) / <alpha-value>)",
100
+ "line": "rgb(var(--dt-line) / <alpha-value>)",
101
+ "shell": "rgb(var(--dt-shell) / <alpha-value>)",
102
+ "shell-foreground": "rgb(var(--dt-shell-foreground) / <alpha-value>)",
103
+ "shell-active": "rgb(var(--dt-shell-active) / <alpha-value>)"
104
+ };
105
+ const vars = {
106
+ "light": {
107
+ "--dt-primary-50": "239 246 255",
108
+ "--dt-primary-100": "219 234 254",
109
+ "--dt-primary-200": "191 219 254",
110
+ "--dt-primary-300": "147 197 253",
111
+ "--dt-primary-400": "96 165 250",
112
+ "--dt-primary-500": "59 130 246",
113
+ "--dt-primary-600": "37 99 235",
114
+ "--dt-primary-700": "29 78 216",
115
+ "--dt-primary-800": "30 64 175",
116
+ "--dt-primary-900": "30 58 138",
117
+ "--dt-primary-950": "23 37 84",
118
+ "--dt-secondary-50": "248 250 252",
119
+ "--dt-secondary-100": "241 245 249",
120
+ "--dt-secondary-200": "226 232 240",
121
+ "--dt-secondary-300": "203 213 225",
122
+ "--dt-secondary-400": "148 163 184",
123
+ "--dt-secondary-500": "100 116 139",
124
+ "--dt-secondary-600": "71 85 105",
125
+ "--dt-secondary-700": "51 65 85",
126
+ "--dt-secondary-800": "30 41 59",
127
+ "--dt-secondary-900": "15 23 42",
128
+ "--dt-secondary-950": "2 6 23",
129
+ "--dt-success-50": "240 253 244",
130
+ "--dt-success-100": "220 252 231",
131
+ "--dt-success-200": "187 247 208",
132
+ "--dt-success-300": "134 239 172",
133
+ "--dt-success-400": "74 222 128",
134
+ "--dt-success-500": "34 197 94",
135
+ "--dt-success-600": "22 163 74",
136
+ "--dt-success-700": "21 128 61",
137
+ "--dt-success-800": "22 101 52",
138
+ "--dt-success-900": "20 83 45",
139
+ "--dt-success-950": "5 46 22",
140
+ "--dt-warning-50": "255 251 235",
141
+ "--dt-warning-100": "254 243 199",
142
+ "--dt-warning-200": "253 230 138",
143
+ "--dt-warning-300": "252 211 77",
144
+ "--dt-warning-400": "251 191 36",
145
+ "--dt-warning-500": "245 158 11",
146
+ "--dt-warning-600": "217 119 6",
147
+ "--dt-warning-700": "180 83 9",
148
+ "--dt-warning-800": "146 64 14",
149
+ "--dt-warning-900": "120 53 15",
150
+ "--dt-warning-950": "69 26 3",
151
+ "--dt-error-50": "254 242 242",
152
+ "--dt-error-100": "254 226 226",
153
+ "--dt-error-200": "254 202 202",
154
+ "--dt-error-300": "252 165 165",
155
+ "--dt-error-400": "248 113 113",
156
+ "--dt-error-500": "239 68 68",
157
+ "--dt-error-600": "220 38 38",
158
+ "--dt-error-700": "185 28 28",
159
+ "--dt-error-800": "153 27 27",
160
+ "--dt-error-900": "127 29 29",
161
+ "--dt-error-950": "69 10 10",
162
+ "--dt-info-50": "240 249 255",
163
+ "--dt-info-100": "224 242 254",
164
+ "--dt-info-200": "186 230 253",
165
+ "--dt-info-300": "125 211 252",
166
+ "--dt-info-400": "56 189 248",
167
+ "--dt-info-500": "14 165 233",
168
+ "--dt-info-600": "2 132 199",
169
+ "--dt-info-700": "3 105 161",
170
+ "--dt-info-800": "7 89 133",
171
+ "--dt-info-900": "12 74 110",
172
+ "--dt-info-950": "8 47 73",
173
+ "--dt-gray-50": "249 250 251",
174
+ "--dt-gray-100": "243 244 246",
175
+ "--dt-gray-200": "229 231 235",
176
+ "--dt-gray-300": "209 213 219",
177
+ "--dt-gray-400": "156 163 175",
178
+ "--dt-gray-500": "107 114 128",
179
+ "--dt-gray-600": "75 85 99",
180
+ "--dt-gray-700": "55 65 81",
181
+ "--dt-gray-800": "31 41 55",
182
+ "--dt-gray-900": "17 24 39",
183
+ "--dt-gray-950": "3 7 18",
184
+ "--dt-background": "248 250 252",
185
+ "--dt-surface": "255 255 255",
186
+ "--dt-foreground": "15 23 42",
187
+ "--dt-muted": "71 85 105",
188
+ "--dt-line": "226 232 240",
189
+ "--dt-shell": "15 23 42",
190
+ "--dt-shell-foreground": "203 213 225",
191
+ "--dt-shell-active": "30 41 59"
192
+ },
193
+ "dark": {
194
+ "--dt-background": "11 17 32",
195
+ "--dt-surface": "17 24 39",
196
+ "--dt-foreground": "229 231 235",
197
+ "--dt-muted": "148 163 184",
198
+ "--dt-line": "31 41 55",
199
+ "--dt-shell": "2 6 23",
200
+ "--dt-shell-foreground": "203 213 225",
201
+ "--dt-shell-active": "30 41 59"
202
+ }
203
+ };
204
+ module.exports = {
205
+ theme: {
206
+ extend: {
207
+ colors,
208
+ fontSize: { micro: ['0.6875rem', { lineHeight: '1rem' }] },
209
+ borderRadius: { control: '0.5rem', card: '0.75rem' },
210
+ fontFamily: { sans: ["Inter","system-ui","-apple-system","Segoe UI","Roboto","Arial","sans-serif"], mono: ["JetBrains Mono","ui-monospace","SFMono-Regular","Menlo","monospace"] },
211
+ },
212
+ },
213
+ plugins: [plugin(({ addBase }) => addBase({ ':root': vars.light, ".dark, [data-theme=\"dark\"]": vars.dark }))],
214
+ };
@@ -0,0 +1,193 @@
1
+ /* Tailwind 4 theme for Dreamtree tokens. @import after "tailwindcss". */
2
+ :root {
3
+ --dt-primary-50: 239 246 255;
4
+ --dt-primary-100: 219 234 254;
5
+ --dt-primary-200: 191 219 254;
6
+ --dt-primary-300: 147 197 253;
7
+ --dt-primary-400: 96 165 250;
8
+ --dt-primary-500: 59 130 246;
9
+ --dt-primary-600: 37 99 235;
10
+ --dt-primary-700: 29 78 216;
11
+ --dt-primary-800: 30 64 175;
12
+ --dt-primary-900: 30 58 138;
13
+ --dt-primary-950: 23 37 84;
14
+ --dt-secondary-50: 248 250 252;
15
+ --dt-secondary-100: 241 245 249;
16
+ --dt-secondary-200: 226 232 240;
17
+ --dt-secondary-300: 203 213 225;
18
+ --dt-secondary-400: 148 163 184;
19
+ --dt-secondary-500: 100 116 139;
20
+ --dt-secondary-600: 71 85 105;
21
+ --dt-secondary-700: 51 65 85;
22
+ --dt-secondary-800: 30 41 59;
23
+ --dt-secondary-900: 15 23 42;
24
+ --dt-secondary-950: 2 6 23;
25
+ --dt-success-50: 240 253 244;
26
+ --dt-success-100: 220 252 231;
27
+ --dt-success-200: 187 247 208;
28
+ --dt-success-300: 134 239 172;
29
+ --dt-success-400: 74 222 128;
30
+ --dt-success-500: 34 197 94;
31
+ --dt-success-600: 22 163 74;
32
+ --dt-success-700: 21 128 61;
33
+ --dt-success-800: 22 101 52;
34
+ --dt-success-900: 20 83 45;
35
+ --dt-success-950: 5 46 22;
36
+ --dt-warning-50: 255 251 235;
37
+ --dt-warning-100: 254 243 199;
38
+ --dt-warning-200: 253 230 138;
39
+ --dt-warning-300: 252 211 77;
40
+ --dt-warning-400: 251 191 36;
41
+ --dt-warning-500: 245 158 11;
42
+ --dt-warning-600: 217 119 6;
43
+ --dt-warning-700: 180 83 9;
44
+ --dt-warning-800: 146 64 14;
45
+ --dt-warning-900: 120 53 15;
46
+ --dt-warning-950: 69 26 3;
47
+ --dt-error-50: 254 242 242;
48
+ --dt-error-100: 254 226 226;
49
+ --dt-error-200: 254 202 202;
50
+ --dt-error-300: 252 165 165;
51
+ --dt-error-400: 248 113 113;
52
+ --dt-error-500: 239 68 68;
53
+ --dt-error-600: 220 38 38;
54
+ --dt-error-700: 185 28 28;
55
+ --dt-error-800: 153 27 27;
56
+ --dt-error-900: 127 29 29;
57
+ --dt-error-950: 69 10 10;
58
+ --dt-info-50: 240 249 255;
59
+ --dt-info-100: 224 242 254;
60
+ --dt-info-200: 186 230 253;
61
+ --dt-info-300: 125 211 252;
62
+ --dt-info-400: 56 189 248;
63
+ --dt-info-500: 14 165 233;
64
+ --dt-info-600: 2 132 199;
65
+ --dt-info-700: 3 105 161;
66
+ --dt-info-800: 7 89 133;
67
+ --dt-info-900: 12 74 110;
68
+ --dt-info-950: 8 47 73;
69
+ --dt-gray-50: 249 250 251;
70
+ --dt-gray-100: 243 244 246;
71
+ --dt-gray-200: 229 231 235;
72
+ --dt-gray-300: 209 213 219;
73
+ --dt-gray-400: 156 163 175;
74
+ --dt-gray-500: 107 114 128;
75
+ --dt-gray-600: 75 85 99;
76
+ --dt-gray-700: 55 65 81;
77
+ --dt-gray-800: 31 41 55;
78
+ --dt-gray-900: 17 24 39;
79
+ --dt-gray-950: 3 7 18;
80
+ --dt-background: 248 250 252;
81
+ --dt-surface: 255 255 255;
82
+ --dt-foreground: 15 23 42;
83
+ --dt-muted: 71 85 105;
84
+ --dt-line: 226 232 240;
85
+ --dt-shell: 15 23 42;
86
+ --dt-shell-foreground: 203 213 225;
87
+ --dt-shell-active: 30 41 59;
88
+ }
89
+
90
+ .dark, [data-theme="dark"] {
91
+ --dt-background: 11 17 32;
92
+ --dt-surface: 17 24 39;
93
+ --dt-foreground: 229 231 235;
94
+ --dt-muted: 148 163 184;
95
+ --dt-line: 31 41 55;
96
+ --dt-shell: 2 6 23;
97
+ --dt-shell-foreground: 203 213 225;
98
+ --dt-shell-active: 30 41 59;
99
+ }
100
+
101
+ @theme inline {
102
+ --color-primary-50: rgb(var(--dt-primary-50));
103
+ --color-primary-100: rgb(var(--dt-primary-100));
104
+ --color-primary-200: rgb(var(--dt-primary-200));
105
+ --color-primary-300: rgb(var(--dt-primary-300));
106
+ --color-primary-400: rgb(var(--dt-primary-400));
107
+ --color-primary-500: rgb(var(--dt-primary-500));
108
+ --color-primary-600: rgb(var(--dt-primary-600));
109
+ --color-primary-700: rgb(var(--dt-primary-700));
110
+ --color-primary-800: rgb(var(--dt-primary-800));
111
+ --color-primary-900: rgb(var(--dt-primary-900));
112
+ --color-primary-950: rgb(var(--dt-primary-950));
113
+ --color-secondary-50: rgb(var(--dt-secondary-50));
114
+ --color-secondary-100: rgb(var(--dt-secondary-100));
115
+ --color-secondary-200: rgb(var(--dt-secondary-200));
116
+ --color-secondary-300: rgb(var(--dt-secondary-300));
117
+ --color-secondary-400: rgb(var(--dt-secondary-400));
118
+ --color-secondary-500: rgb(var(--dt-secondary-500));
119
+ --color-secondary-600: rgb(var(--dt-secondary-600));
120
+ --color-secondary-700: rgb(var(--dt-secondary-700));
121
+ --color-secondary-800: rgb(var(--dt-secondary-800));
122
+ --color-secondary-900: rgb(var(--dt-secondary-900));
123
+ --color-secondary-950: rgb(var(--dt-secondary-950));
124
+ --color-success-50: rgb(var(--dt-success-50));
125
+ --color-success-100: rgb(var(--dt-success-100));
126
+ --color-success-200: rgb(var(--dt-success-200));
127
+ --color-success-300: rgb(var(--dt-success-300));
128
+ --color-success-400: rgb(var(--dt-success-400));
129
+ --color-success-500: rgb(var(--dt-success-500));
130
+ --color-success-600: rgb(var(--dt-success-600));
131
+ --color-success-700: rgb(var(--dt-success-700));
132
+ --color-success-800: rgb(var(--dt-success-800));
133
+ --color-success-900: rgb(var(--dt-success-900));
134
+ --color-success-950: rgb(var(--dt-success-950));
135
+ --color-warning-50: rgb(var(--dt-warning-50));
136
+ --color-warning-100: rgb(var(--dt-warning-100));
137
+ --color-warning-200: rgb(var(--dt-warning-200));
138
+ --color-warning-300: rgb(var(--dt-warning-300));
139
+ --color-warning-400: rgb(var(--dt-warning-400));
140
+ --color-warning-500: rgb(var(--dt-warning-500));
141
+ --color-warning-600: rgb(var(--dt-warning-600));
142
+ --color-warning-700: rgb(var(--dt-warning-700));
143
+ --color-warning-800: rgb(var(--dt-warning-800));
144
+ --color-warning-900: rgb(var(--dt-warning-900));
145
+ --color-warning-950: rgb(var(--dt-warning-950));
146
+ --color-error-50: rgb(var(--dt-error-50));
147
+ --color-error-100: rgb(var(--dt-error-100));
148
+ --color-error-200: rgb(var(--dt-error-200));
149
+ --color-error-300: rgb(var(--dt-error-300));
150
+ --color-error-400: rgb(var(--dt-error-400));
151
+ --color-error-500: rgb(var(--dt-error-500));
152
+ --color-error-600: rgb(var(--dt-error-600));
153
+ --color-error-700: rgb(var(--dt-error-700));
154
+ --color-error-800: rgb(var(--dt-error-800));
155
+ --color-error-900: rgb(var(--dt-error-900));
156
+ --color-error-950: rgb(var(--dt-error-950));
157
+ --color-info-50: rgb(var(--dt-info-50));
158
+ --color-info-100: rgb(var(--dt-info-100));
159
+ --color-info-200: rgb(var(--dt-info-200));
160
+ --color-info-300: rgb(var(--dt-info-300));
161
+ --color-info-400: rgb(var(--dt-info-400));
162
+ --color-info-500: rgb(var(--dt-info-500));
163
+ --color-info-600: rgb(var(--dt-info-600));
164
+ --color-info-700: rgb(var(--dt-info-700));
165
+ --color-info-800: rgb(var(--dt-info-800));
166
+ --color-info-900: rgb(var(--dt-info-900));
167
+ --color-info-950: rgb(var(--dt-info-950));
168
+ --color-gray-50: rgb(var(--dt-gray-50));
169
+ --color-gray-100: rgb(var(--dt-gray-100));
170
+ --color-gray-200: rgb(var(--dt-gray-200));
171
+ --color-gray-300: rgb(var(--dt-gray-300));
172
+ --color-gray-400: rgb(var(--dt-gray-400));
173
+ --color-gray-500: rgb(var(--dt-gray-500));
174
+ --color-gray-600: rgb(var(--dt-gray-600));
175
+ --color-gray-700: rgb(var(--dt-gray-700));
176
+ --color-gray-800: rgb(var(--dt-gray-800));
177
+ --color-gray-900: rgb(var(--dt-gray-900));
178
+ --color-gray-950: rgb(var(--dt-gray-950));
179
+ --color-background: rgb(var(--dt-background));
180
+ --color-surface: rgb(var(--dt-surface));
181
+ --color-foreground: rgb(var(--dt-foreground));
182
+ --color-muted: rgb(var(--dt-muted));
183
+ --color-line: rgb(var(--dt-line));
184
+ --color-shell: rgb(var(--dt-shell));
185
+ --color-shell-foreground: rgb(var(--dt-shell-foreground));
186
+ --color-shell-active: rgb(var(--dt-shell-active));
187
+ --font-sans: Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
188
+ --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
189
+ --text-micro: 0.6875rem;
190
+ --text-micro--line-height: 1rem;
191
+ --radius-control: 0.5rem;
192
+ --radius-card: 0.75rem;
193
+ }