@dxos/ui-theme 0.0.0 → 0.8.4-main.52d7546f51

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 (224) hide show
  1. package/dist/lib/browser/index.mjs +3499 -0
  2. package/dist/lib/browser/index.mjs.map +7 -0
  3. package/dist/lib/browser/meta.json +1 -0
  4. package/dist/lib/node-esm/index.mjs +3501 -0
  5. package/dist/lib/node-esm/index.mjs.map +7 -0
  6. package/dist/lib/node-esm/meta.json +1 -0
  7. package/dist/plugin/node-cjs/chunk-TH5YZMTA.cjs +1633 -0
  8. package/dist/plugin/node-cjs/chunk-TH5YZMTA.cjs.map +7 -0
  9. package/dist/plugin/node-cjs/chunk-UUMDOU7E.cjs +79 -0
  10. package/dist/plugin/node-cjs/chunk-UUMDOU7E.cjs.map +7 -0
  11. package/dist/plugin/node-cjs/config/tailwind.cjs +29 -0
  12. package/dist/plugin/node-cjs/config/tailwind.cjs.map +7 -0
  13. package/dist/plugin/node-cjs/meta.json +1 -0
  14. package/dist/plugin/node-cjs/plugins/esbuild-plugin.cjs +90 -0
  15. package/dist/plugin/node-cjs/plugins/esbuild-plugin.cjs.map +7 -0
  16. package/dist/plugin/node-cjs/plugins/plugin.cjs +124 -0
  17. package/dist/plugin/node-cjs/plugins/plugin.cjs.map +7 -0
  18. package/dist/plugin/node-cjs/theme.css +1378 -0
  19. package/dist/plugin/node-cjs/theme.css.map +7 -0
  20. package/dist/plugin/node-esm/chunk-6EGZAB2N.mjs +1628 -0
  21. package/dist/plugin/node-esm/chunk-6EGZAB2N.mjs.map +7 -0
  22. package/dist/plugin/node-esm/chunk-AFRHJHP4.mjs +49 -0
  23. package/dist/plugin/node-esm/chunk-AFRHJHP4.mjs.map +7 -0
  24. package/dist/plugin/node-esm/config/tailwind.mjs +8 -0
  25. package/dist/plugin/node-esm/config/tailwind.mjs.map +7 -0
  26. package/dist/plugin/node-esm/meta.json +1 -0
  27. package/dist/plugin/node-esm/plugins/esbuild-plugin.mjs +63 -0
  28. package/dist/plugin/node-esm/plugins/esbuild-plugin.mjs.map +7 -0
  29. package/dist/plugin/node-esm/plugins/plugin.mjs +98 -0
  30. package/dist/plugin/node-esm/plugins/plugin.mjs.map +7 -0
  31. package/dist/plugin/node-esm/theme.css +1378 -0
  32. package/dist/plugin/node-esm/theme.css.map +7 -0
  33. package/dist/types/src/Tokens.stories.d.ts +10 -0
  34. package/dist/types/src/Tokens.stories.d.ts.map +1 -0
  35. package/dist/types/src/config/index.d.ts +3 -0
  36. package/dist/types/src/config/index.d.ts.map +1 -0
  37. package/dist/types/src/config/tailwind.d.ts +9 -0
  38. package/dist/types/src/config/tailwind.d.ts.map +1 -0
  39. package/dist/types/src/config/tokens/colors/alias-colors.d.ts +21 -0
  40. package/dist/types/src/config/tokens/colors/alias-colors.d.ts.map +1 -0
  41. package/dist/types/src/config/tokens/colors/index.d.ts +5 -0
  42. package/dist/types/src/config/tokens/colors/index.d.ts.map +1 -0
  43. package/dist/types/src/config/tokens/colors/physical-colors.d.ts +23 -0
  44. package/dist/types/src/config/tokens/colors/physical-colors.d.ts.map +1 -0
  45. package/dist/types/src/config/tokens/colors/semantic-colors.d.ts +192 -0
  46. package/dist/types/src/config/tokens/colors/semantic-colors.d.ts.map +1 -0
  47. package/dist/types/src/config/tokens/colors/sememes-calls.d.ts +3 -0
  48. package/dist/types/src/config/tokens/colors/sememes-calls.d.ts.map +1 -0
  49. package/dist/types/src/config/tokens/colors/sememes-codemirror.d.ts +43 -0
  50. package/dist/types/src/config/tokens/colors/sememes-codemirror.d.ts.map +1 -0
  51. package/dist/types/src/config/tokens/colors/sememes-hue.d.ts +4 -0
  52. package/dist/types/src/config/tokens/colors/sememes-hue.d.ts.map +1 -0
  53. package/dist/types/src/config/tokens/colors/sememes-sheet.d.ts +58 -0
  54. package/dist/types/src/config/tokens/colors/sememes-sheet.d.ts.map +1 -0
  55. package/dist/types/src/config/tokens/colors/sememes-system.d.ts +104 -0
  56. package/dist/types/src/config/tokens/colors/sememes-system.d.ts.map +1 -0
  57. package/dist/types/src/config/tokens/colors/types.d.ts +5 -0
  58. package/dist/types/src/config/tokens/colors/types.d.ts.map +1 -0
  59. package/dist/types/src/config/tokens/index.d.ts +3 -0
  60. package/dist/types/src/config/tokens/index.d.ts.map +1 -0
  61. package/dist/types/src/config/tokens/lengths.d.ts +142 -0
  62. package/dist/types/src/config/tokens/lengths.d.ts.map +1 -0
  63. package/dist/types/src/config/tokens/sizes.d.ts +9 -0
  64. package/dist/types/src/config/tokens/sizes.d.ts.map +1 -0
  65. package/dist/types/src/config/tokens/tokens.d.ts +498 -0
  66. package/dist/types/src/config/tokens/tokens.d.ts.map +1 -0
  67. package/dist/types/src/index.d.ts +13 -0
  68. package/dist/types/src/index.d.ts.map +1 -0
  69. package/dist/types/src/plugins/esbuild-plugin.d.ts +9 -0
  70. package/dist/types/src/plugins/esbuild-plugin.d.ts.map +1 -0
  71. package/dist/types/src/plugins/plugin.d.ts +20 -0
  72. package/dist/types/src/plugins/plugin.d.ts.map +1 -0
  73. package/dist/types/src/plugins/resolveContent.d.ts +2 -0
  74. package/dist/types/src/plugins/resolveContent.d.ts.map +1 -0
  75. package/dist/types/src/styles/components/anchored-overflow.d.ts +6 -0
  76. package/dist/types/src/styles/components/anchored-overflow.d.ts.map +1 -0
  77. package/dist/types/src/styles/components/avatar.d.ts +21 -0
  78. package/dist/types/src/styles/components/avatar.d.ts.map +1 -0
  79. package/dist/types/src/styles/components/breadcrumb.d.ts +9 -0
  80. package/dist/types/src/styles/components/breadcrumb.d.ts.map +1 -0
  81. package/dist/types/src/styles/components/button.d.ts +19 -0
  82. package/dist/types/src/styles/components/button.d.ts.map +1 -0
  83. package/dist/types/src/styles/components/dialog.d.ts +17 -0
  84. package/dist/types/src/styles/components/dialog.d.ts.map +1 -0
  85. package/dist/types/src/styles/components/icon-button.d.ts +8 -0
  86. package/dist/types/src/styles/components/icon-button.d.ts.map +1 -0
  87. package/dist/types/src/styles/components/icon.d.ts +7 -0
  88. package/dist/types/src/styles/components/icon.d.ts.map +1 -0
  89. package/dist/types/src/styles/components/index.d.ts +25 -0
  90. package/dist/types/src/styles/components/index.d.ts.map +1 -0
  91. package/dist/types/src/styles/components/input.d.ts +110 -0
  92. package/dist/types/src/styles/components/input.d.ts.map +1 -0
  93. package/dist/types/src/styles/components/link.d.ts +7 -0
  94. package/dist/types/src/styles/components/link.d.ts.map +1 -0
  95. package/dist/types/src/styles/components/list.d.ts +14 -0
  96. package/dist/types/src/styles/components/list.d.ts.map +1 -0
  97. package/dist/types/src/styles/components/main.d.ts +28 -0
  98. package/dist/types/src/styles/components/main.d.ts.map +1 -0
  99. package/dist/types/src/styles/components/menu.d.ts +13 -0
  100. package/dist/types/src/styles/components/menu.d.ts.map +1 -0
  101. package/dist/types/src/styles/components/message.d.ts +11 -0
  102. package/dist/types/src/styles/components/message.d.ts.map +1 -0
  103. package/dist/types/src/styles/components/popover.d.ts +11 -0
  104. package/dist/types/src/styles/components/popover.d.ts.map +1 -0
  105. package/dist/types/src/styles/components/scroll-area.d.ts +16 -0
  106. package/dist/types/src/styles/components/scroll-area.d.ts.map +1 -0
  107. package/dist/types/src/styles/components/select.d.ts +13 -0
  108. package/dist/types/src/styles/components/select.d.ts.map +1 -0
  109. package/dist/types/src/styles/components/separator.d.ts +8 -0
  110. package/dist/types/src/styles/components/separator.d.ts.map +1 -0
  111. package/dist/types/src/styles/components/skeleton.d.ts +7 -0
  112. package/dist/types/src/styles/components/skeleton.d.ts.map +1 -0
  113. package/dist/types/src/styles/components/status.d.ts +9 -0
  114. package/dist/types/src/styles/components/status.d.ts.map +1 -0
  115. package/dist/types/src/styles/components/tag.d.ts +7 -0
  116. package/dist/types/src/styles/components/tag.d.ts.map +1 -0
  117. package/dist/types/src/styles/components/toast.d.ts +12 -0
  118. package/dist/types/src/styles/components/toast.d.ts.map +1 -0
  119. package/dist/types/src/styles/components/toolbar.d.ts +11 -0
  120. package/dist/types/src/styles/components/toolbar.d.ts.map +1 -0
  121. package/dist/types/src/styles/components/tooltip.d.ts +8 -0
  122. package/dist/types/src/styles/components/tooltip.d.ts.map +1 -0
  123. package/dist/types/src/styles/components/treegrid.d.ts +10 -0
  124. package/dist/types/src/styles/components/treegrid.d.ts.map +1 -0
  125. package/dist/types/src/styles/fragments/density.d.ts +13 -0
  126. package/dist/types/src/styles/fragments/density.d.ts.map +1 -0
  127. package/dist/types/src/styles/fragments/dimension.d.ts +5 -0
  128. package/dist/types/src/styles/fragments/dimension.d.ts.map +1 -0
  129. package/dist/types/src/styles/fragments/disabled.d.ts +3 -0
  130. package/dist/types/src/styles/fragments/disabled.d.ts.map +1 -0
  131. package/dist/types/src/styles/fragments/elevation.d.ts +15 -0
  132. package/dist/types/src/styles/fragments/elevation.d.ts.map +1 -0
  133. package/dist/types/src/styles/fragments/focus.d.ts +6 -0
  134. package/dist/types/src/styles/fragments/focus.d.ts.map +1 -0
  135. package/dist/types/src/styles/fragments/group.d.ts +5 -0
  136. package/dist/types/src/styles/fragments/group.d.ts.map +1 -0
  137. package/dist/types/src/styles/fragments/hover.d.ts +17 -0
  138. package/dist/types/src/styles/fragments/hover.d.ts.map +1 -0
  139. package/dist/types/src/styles/fragments/index.d.ts +17 -0
  140. package/dist/types/src/styles/fragments/index.d.ts.map +1 -0
  141. package/dist/types/src/styles/fragments/layout.d.ts +3 -0
  142. package/dist/types/src/styles/fragments/layout.d.ts.map +1 -0
  143. package/dist/types/src/styles/fragments/motion.d.ts +2 -0
  144. package/dist/types/src/styles/fragments/motion.d.ts.map +1 -0
  145. package/dist/types/src/styles/fragments/ornament.d.ts +5 -0
  146. package/dist/types/src/styles/fragments/ornament.d.ts.map +1 -0
  147. package/dist/types/src/styles/fragments/selected.d.ts +13 -0
  148. package/dist/types/src/styles/fragments/selected.d.ts.map +1 -0
  149. package/dist/types/src/styles/fragments/shimmer.d.ts +3 -0
  150. package/dist/types/src/styles/fragments/shimmer.d.ts.map +1 -0
  151. package/dist/types/src/styles/fragments/size.d.ts +9 -0
  152. package/dist/types/src/styles/fragments/size.d.ts.map +1 -0
  153. package/dist/types/src/styles/fragments/surface.d.ts +9 -0
  154. package/dist/types/src/styles/fragments/surface.d.ts.map +1 -0
  155. package/dist/types/src/styles/fragments/text.d.ts +7 -0
  156. package/dist/types/src/styles/fragments/text.d.ts.map +1 -0
  157. package/dist/types/src/styles/fragments/valence.d.ts +13 -0
  158. package/dist/types/src/styles/fragments/valence.d.ts.map +1 -0
  159. package/dist/types/src/styles/index.d.ts +5 -0
  160. package/dist/types/src/styles/index.d.ts.map +1 -0
  161. package/dist/types/src/styles/primitives/container.d.ts +15 -0
  162. package/dist/types/src/styles/primitives/container.d.ts.map +1 -0
  163. package/dist/types/src/styles/primitives/index.d.ts +2 -0
  164. package/dist/types/src/styles/primitives/index.d.ts.map +1 -0
  165. package/dist/types/src/styles/theme.d.ts +5 -0
  166. package/dist/types/src/styles/theme.d.ts.map +1 -0
  167. package/dist/types/src/tailwind.d.ts +3 -0
  168. package/dist/types/src/tailwind.d.ts.map +1 -0
  169. package/dist/types/src/types.d.ts +3 -0
  170. package/dist/types/src/types.d.ts.map +1 -0
  171. package/dist/types/src/util/hash-styles.d.ts +15 -0
  172. package/dist/types/src/util/hash-styles.d.ts.map +1 -0
  173. package/dist/types/src/util/index.d.ts +3 -0
  174. package/dist/types/src/util/index.d.ts.map +1 -0
  175. package/dist/types/src/util/mx.d.ts +2 -0
  176. package/dist/types/src/util/mx.d.ts.map +1 -0
  177. package/dist/types/src/util/withLogical.d.ts +164 -0
  178. package/dist/types/src/util/withLogical.d.ts.map +1 -0
  179. package/dist/types/tsconfig.tsbuildinfo +1 -0
  180. package/package.json +10 -6
  181. package/src/Tokens.stories.tsx +2 -2
  182. package/src/config/index.ts +1 -1
  183. package/src/config/tailwind.ts +79 -64
  184. package/src/config/tokens/colors/index.ts +8 -0
  185. package/src/config/tokens/{sememes-system.ts → colors/sememes-system.ts} +79 -70
  186. package/src/config/tokens/index.ts +2 -88
  187. package/src/config/tokens/lengths.ts +18 -10
  188. package/src/config/tokens/sizes.ts +7 -2
  189. package/src/config/tokens/tokens.ts +87 -0
  190. package/src/index.ts +4 -3
  191. package/src/styles/components/dialog.ts +27 -3
  192. package/src/styles/components/index.ts +1 -0
  193. package/src/styles/components/input.ts +2 -2
  194. package/src/styles/components/main.ts +7 -9
  195. package/src/styles/components/menu.ts +2 -10
  196. package/src/styles/components/popover.ts +3 -3
  197. package/src/styles/components/scroll-area.ts +70 -23
  198. package/src/styles/components/skeleton.ts +23 -0
  199. package/src/styles/components/tag.ts +1 -1
  200. package/src/styles/components/toolbar.ts +16 -9
  201. package/src/styles/components/tooltip.ts +2 -2
  202. package/src/styles/fragments/motion.ts +1 -1
  203. package/src/styles/fragments/size.ts +2 -2
  204. package/src/styles/index.ts +2 -1
  205. package/src/styles/layers/dialog.css +52 -21
  206. package/src/styles/layers/index.css +1 -0
  207. package/src/styles/layers/main.css +30 -7
  208. package/src/styles/layers/scrollbar.css +11 -0
  209. package/src/styles/layers/size.css +26 -21
  210. package/src/styles/layers/tokens.css +3 -1
  211. package/src/styles/layers/typography.css +22 -2
  212. package/src/styles/primitives/container.ts +33 -0
  213. package/src/styles/primitives/index.ts +5 -0
  214. package/src/styles/theme.ts +18 -5
  215. package/src/tailwind.ts +3 -1
  216. package/src/types.ts +1 -1
  217. /package/src/config/tokens/{alias-colors.ts → colors/alias-colors.ts} +0 -0
  218. /package/src/config/tokens/{physical-colors.ts → colors/physical-colors.ts} +0 -0
  219. /package/src/config/tokens/{semantic-colors.ts → colors/semantic-colors.ts} +0 -0
  220. /package/src/config/tokens/{sememes-calls.ts → colors/sememes-calls.ts} +0 -0
  221. /package/src/config/tokens/{sememes-codemirror.ts → colors/sememes-codemirror.ts} +0 -0
  222. /package/src/config/tokens/{sememes-hue.ts → colors/sememes-hue.ts} +0 -0
  223. /package/src/config/tokens/{sememes-sheet.ts → colors/sememes-sheet.ts} +0 -0
  224. /package/src/config/tokens/{types.ts → colors/types.ts} +0 -0
@@ -14,7 +14,7 @@ const Swatch = ({ variableName, value, semantic, physical }: TokenAudit<HelicalA
14
14
  const [luminosity, alpha] = parseAlphaLuminosity(value);
15
15
 
16
16
  return (
17
- <div className='shrink-0 is-40 flex flex-col rounded overflow-hidden'>
17
+ <div className='shrink-0 is-48 flex flex-col rounded overflow-hidden'>
18
18
  <dd className='aspect-video' style={{ background: `var(${variableName})` }}></dd>
19
19
  <dt className='text-xs bg-baseSurface grow pli-2 plb-1'>
20
20
  <p className='text-sm'>
@@ -26,7 +26,7 @@ const Swatch = ({ variableName, value, semantic, physical }: TokenAudit<HelicalA
26
26
  {semantic.length > 0 && (
27
27
  <ul>
28
28
  {semantic.map(({ sememeName, conditionId }) => {
29
- const sememeCondition = `${sememeName} / ${conditionId}`;
29
+ const sememeCondition = `${conditionId}:${sememeName}`;
30
30
  return <li key={sememeCondition}>{sememeCondition}</li>;
31
31
  })}
32
32
  </ul>
@@ -2,5 +2,5 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export * from './tokens';
6
5
  export * from './tailwind';
6
+ export * from './tokens';
@@ -36,13 +36,15 @@ export const tailwindConfig = ({
36
36
  },
37
37
  extend: merge(
38
38
  {
39
+ // Generates is-card-default-width, is-card-min-width, etc.
39
40
  spacing: {
40
- prose: 'var(--dx-prose)',
41
- containerMaxWidth: 'var(--dx-containerMaxWidth)',
42
- cardDefaultWidth: 'var(--dx-cardDefaultWidth)',
43
- cardMinWidth: 'var(--dx-cardMinWidth)',
44
- cardMaxWidth: 'var(--dx-cardMaxWidth)',
45
- popoverMaxWidth: 'var(--dx-popoverMaxWidth)',
41
+ 'prose-max-width': 'var(--dx-prose-max-width)',
42
+ 'container-max-width': 'var(--dx-container-max-width)',
43
+ 'card-default-width': 'var(--dx-card-default-width)',
44
+ 'card-min-width': 'var(--dx-card-min-width)',
45
+ 'card-max-width': 'var(--dx-card-max-width)',
46
+ 'card-min-height': 'var(--dx-card-min-height)',
47
+ 'card-max-height': 'var(--dx-card-max-height)',
46
48
  },
47
49
  backgroundImage: {
48
50
  'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
@@ -52,23 +54,23 @@ export const tailwindConfig = ({
52
54
  none: '0',
53
55
  sm: '0.25rem',
54
56
  DEFAULT: '0.5rem',
55
- md: '.75rem',
57
+ md: '0.75rem',
56
58
  lg: '1rem',
57
59
  },
58
60
  screens: {
59
61
  'pointer-fine': { raw: '(pointer: fine)' },
60
62
  'hover-hover': { raw: '(hover: hover)' },
61
- md: '768px',
62
- lg: '1024px',
63
+ 'md': '768px',
64
+ 'lg': '1024px',
63
65
  },
64
66
  fontSize: {
65
67
  // Base size 16px
66
68
  // Scale 1.125
67
- xs: ['0.790rem', { lineHeight: '1rem' }],
68
- sm: ['0.889rem', { lineHeight: '1.25rem' }],
69
- base: ['1rem', { lineHeight: '1.5rem' }],
70
- lg: ['1.125rem', { lineHeight: '1.75rem' }],
71
- xl: ['1.266rem', { lineHeight: '1.75rem' }],
69
+ 'xs': ['0.790rem', { lineHeight: '1rem' }],
70
+ 'sm': ['0.889rem', { lineHeight: '1.25rem' }],
71
+ 'base': ['1rem', { lineHeight: '1.5rem' }],
72
+ 'lg': ['1.125rem', { lineHeight: '1.75rem' }],
73
+ 'xl': ['1.266rem', { lineHeight: '1.75rem' }],
72
74
  '2xl': ['1.424rem', { lineHeight: '2rem' }],
73
75
  '3xl': ['1.602rem', { lineHeight: '2.25rem' }],
74
76
  '4xl': ['1.802rem', { lineHeight: '2.5rem' }],
@@ -79,46 +81,42 @@ export const tailwindConfig = ({
79
81
  '9xl': ['3.247rem', { lineHeight: '3.25rem' }],
80
82
  },
81
83
  boxShadow: {
82
- slider: '0 0 0 5px rgba(0, 0, 0, 0.3)',
84
+ 'slider': '0 0 0 5px rgba(0, 0, 0, 0.3)',
83
85
  },
84
86
  transitionProperty: {
85
87
  'max-height': 'max-height',
86
88
  },
87
89
  transitionTimingFunction: {
88
- 'in-out-symmetric': 'cubic-bezier(0.5,0,0.5,1)',
90
+ 'in-out-symmetric': 'cubic-bezier(0.5, 0, 0.5, 1)',
89
91
  },
90
92
  keyframes: {
93
+ // Fade
94
+ 'fade-in': {
95
+ from: { opacity: 0 },
96
+ to: { opacity: 1 },
97
+ },
98
+ 'fade-out': {
99
+ from: { opacity: 1 },
100
+ to: { opacity: 0 },
101
+ },
102
+
91
103
  // Popper chrome
92
- slideDownAndFade: {
93
- from: { opacity: 0, transform: 'translateY(-2px)' },
94
- to: { opacity: 1, transform: 'translateY(0)' },
104
+ 'slide-down-and-fade': {
105
+ from: { opacity: 1, transform: 'translateY(0)' },
106
+ to: { opacity: 0, transform: 'translateY(16px)' },
95
107
  },
96
- slideLeftAndFade: {
97
- from: { opacity: 0, transform: 'translateX(2px)' },
108
+ 'slide-left-and-fade': {
109
+ from: { opacity: 0, transform: 'translateX(-16px)' },
98
110
  to: { opacity: 1, transform: 'translateX(0)' },
99
111
  },
100
- slideUpAndFade: {
101
- from: { opacity: 0, transform: 'translateY(2px)' },
112
+ 'slide-up-and-fade': {
113
+ from: { opacity: 0, transform: 'translateY(16px)' },
102
114
  to: { opacity: 1, transform: 'translateY(0)' },
103
115
  },
104
- slideRightAndFade: {
105
- from: { opacity: 0, transform: 'translateX(-2px)' },
116
+ 'slide-right-and-fade': {
117
+ from: { opacity: 0, transform: 'translateX(16px)' },
106
118
  to: { opacity: 1, transform: 'translateX(0)' },
107
119
  },
108
- fadeIn: {
109
- from: { opacity: 0 },
110
- to: { opacity: 1 },
111
- },
112
-
113
- // Accordion
114
- slideDown: {
115
- from: { height: '0px' },
116
- to: { height: 'var(--radix-accordion-content-height)' },
117
- },
118
- slideUp: {
119
- from: { height: 'var(--radix-accordion-content-height)' },
120
- to: { height: '0px' },
121
- },
122
120
 
123
121
  // Toast
124
122
  'toast-hide': {
@@ -142,6 +140,16 @@ export const tailwindConfig = ({
142
140
  },
143
141
  },
144
142
 
143
+ // Accordion
144
+ 'slide-down': {
145
+ from: { height: '0px' },
146
+ to: { height: 'var(--radix-accordion-content-height)' },
147
+ },
148
+ 'slide-up': {
149
+ from: { height: 'var(--radix-accordion-content-height)' },
150
+ to: { height: '0px' },
151
+ },
152
+
145
153
  // Shimmer
146
154
  'shimmer-loop': {
147
155
  '100%': {
@@ -149,6 +157,7 @@ export const tailwindConfig = ({
149
157
  },
150
158
  },
151
159
 
160
+ // HALO
152
161
  'halo-pulse': {
153
162
  '0%': {
154
163
  opacity: 0.3,
@@ -161,6 +170,7 @@ export const tailwindConfig = ({
161
170
  },
162
171
  },
163
172
 
173
+ // Progress
164
174
  'progress-indeterminate': {
165
175
  '0%': {
166
176
  left: 0,
@@ -180,45 +190,47 @@ export const tailwindConfig = ({
180
190
  },
181
191
  },
182
192
 
183
- // Border trail
184
- ['trail']: {
193
+ // Border trail effect
194
+ 'trail': {
185
195
  to: { 'offset-distance': '100%' },
186
196
  },
187
- ['trail-offset']: {
197
+ 'trail-offset': {
188
198
  '0%': { 'offset-distance': '50%' },
189
199
  '100%': { 'offset-distance': '150%' },
190
200
  },
191
201
  },
192
202
  animation: {
193
- ['fade-in']: 'fadeIn 100ms ease-in forwards',
194
-
195
- // Border trail
196
- ['trail']: 'trail 6s linear infinite',
197
- ['trail-offset']: 'trail-offset 6s linear infinite',
203
+ // Fade
204
+ 'fade-in': 'fade-in 200ms ease-out',
205
+ 'fade-out': 'fade-out 400ms ease-out',
198
206
 
199
207
  // Popper chrome
200
- ['slideDownAndFade']: 'slideDownAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
201
- ['slideLeftAndFade']: 'slideLeftAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
202
- ['slideUpAndFade']: 'slideUpAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
203
- ['slideRightAndFade']: 'slideRightAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
208
+ 'slide-down-and-fade': 'slide-down-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
209
+ 'slide-left-and-fade': 'slide-left-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
210
+ 'slide-up-and-fade': 'slide-up-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
211
+ 'slide-right-and-fade': 'slide-right-and-fade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
204
212
 
205
213
  // Toast
206
- ['toast-hide']: 'toast-hide 100ms ease-in forwards',
207
- ['toast-slide-in-right']: 'toast-slide-in-right 150ms cubic-bezier(0.16, 1, 0.3, 1)',
208
- ['toast-slide-in-bottom']: 'toast-slide-in-bottom 150ms cubic-bezier(0.16, 1, 0.3, 1)',
209
- ['toast-swipe-out']: 'toast-swipe-out 100ms ease-out forwards',
214
+ 'toast-hide': 'toast-hide 100ms ease-in forwards',
215
+ 'toast-slide-in-right': 'toast-slide-in-right 150ms cubic-bezier(0.16, 1, 0.3, 1)',
216
+ 'toast-slide-in-bottom': 'toast-slide-in-bottom 150ms cubic-bezier(0.16, 1, 0.3, 1)',
217
+ 'toast-swipe-out': 'toast-swipe-out 100ms ease-out forwards',
210
218
 
211
219
  // Accordion
212
- ['slideDown']: 'slideDown 300ms cubic-bezier(0.87, 0, 0.13, 1)',
213
- ['slideUp']: 'slideUp 300ms cubic-bezier(0.87, 0, 0.13, 1)',
220
+ 'slide-down': 'slide-down 300ms cubic-bezier(0.87, 0, 0.13, 1)',
221
+ 'slide-up': 'slide-up 300ms cubic-bezier(0.87, 0, 0.13, 1)',
214
222
 
215
- ['spin']: 'spin 1.5s linear infinite',
216
- ['spin-slow']: 'spin 3s linear infinite',
223
+ // Border trail effect
224
+ 'trail': 'trail 6s linear infinite',
225
+ 'trail-offset': 'trail-offset 6s linear infinite',
217
226
 
218
- ['shimmer']: 'shimmer-loop 2s infinite',
219
- ['halo-pulse']: 'halo-pulse 2s ease-out infinite',
220
- ['progress-indeterminate']: 'progress-indeterminate 2s ease-out infinite',
221
- ['progress-linear']: 'progress-linear 2s ease-out infinite',
227
+ // Progress effects
228
+ 'spin': 'spin 1.5s linear infinite',
229
+ 'spin-slow': 'spin 3s linear infinite',
230
+ 'shimmer': 'shimmer-loop 2s infinite',
231
+ 'halo-pulse': 'halo-pulse 2s ease-out infinite',
232
+ 'progress-indeterminate': 'progress-indeterminate 2s ease-out infinite',
233
+ 'progress-linear': 'progress-linear 2s ease-out infinite',
222
234
  },
223
235
  },
224
236
  extendTokens,
@@ -240,7 +252,10 @@ export const tailwindConfig = ({
240
252
  tailwindcssLogical,
241
253
  tailwindcssRadix(),
242
254
  // https://adoxography.github.io/tailwind-scrollbar/utilities
243
- tailwindScrollbar,
255
+ tailwindScrollbar({
256
+ nocompatible: true,
257
+ preferredStrategy: 'pseudoelements',
258
+ }),
244
259
  ],
245
260
  ...(env === 'development' && { mode: 'jit' }),
246
261
  content,
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export * from './alias-colors';
6
+ export * from './physical-colors';
7
+ export * from './semantic-colors';
8
+ export * from './sememes-system';
@@ -8,7 +8,6 @@ import * as _colors from '@ch-ui/colors';
8
8
 
9
9
  import { type ColorAliases, type ColorSememes } from './types';
10
10
 
11
- // TODO(burdon): Move to util.
12
11
  const getMapValue = <T>(map: Record<string, T>, key: string, defaultValue: () => T): T => {
13
12
  let value = map[key];
14
13
  if (!value) {
@@ -85,6 +84,79 @@ const contrastCadence = (lightDepth: number, darkDepth: number = lightDepth, alp
85
84
  alpha,
86
85
  );
87
86
 
87
+ type SememeName = keyof typeof systemSememes;
88
+ type SememeKey = 'root' | 'group' | 'modal';
89
+
90
+ /**
91
+ * Alias map.
92
+ */
93
+ const aliasDefs: Record<string, Partial<Record<SememeKey, SememeName>>> = {
94
+ // Selected items, current items, other surfaces needing special contrast against baseSurface.
95
+ activeSurface: {
96
+ root: 'inputSurfaceBase',
97
+ },
98
+
99
+ // Main sidebar panel.
100
+ sidebarSurface: {
101
+ root: 'groupSurface',
102
+ },
103
+
104
+ // Plank header.
105
+ headerSurface: {
106
+ root: 'groupSurface',
107
+ },
108
+
109
+ // Toolbars, table/sheet headers, etc.
110
+ toolbarSurface: {
111
+ root: 'groupSurface',
112
+ },
113
+
114
+ // Forms, cards, etc.
115
+ cardSurface: {
116
+ root: 'groupSurface',
117
+ },
118
+
119
+ // Secondary aliases.
120
+ textInputSurface: {
121
+ root: 'textInputSurfaceBase',
122
+ group: 'textInputSurfaceGroup',
123
+ modal: 'textInputSurfaceModal',
124
+ },
125
+ inputSurface: {
126
+ root: 'inputSurfaceBase',
127
+ group: 'inputSurfaceGroup',
128
+ modal: 'inputSurfaceModal',
129
+ },
130
+ hoverSurface: {
131
+ root: 'hoverSurfaceBase',
132
+ group: 'hoverSurfaceGroup',
133
+ modal: 'hoverSurfaceModal',
134
+ },
135
+
136
+ // TODO(thure): Rename uses of this token to `focusSurface` and remove this alias.
137
+ attention: {
138
+ root: 'focusSurface',
139
+ },
140
+
141
+ // In “master-detail” patterns, the background of the item in the list which is enumerated in the adjacent view.
142
+ // TODO(burdon): Review tokens.
143
+ currentRelated: {
144
+ root: 'modalSurface',
145
+ },
146
+
147
+ // Borders and dividers.
148
+ separator: {
149
+ root: 'separatorBase',
150
+ group: 'separatorGroup',
151
+ modal: 'separatorModal',
152
+ },
153
+ };
154
+
155
+ //
156
+ // Exports
157
+ //
158
+
159
+ // TODO(burdon): Separate definitions from utils.
88
160
  export const systemSememes = {
89
161
  //
90
162
  // Elevation cadence tokens
@@ -113,9 +185,14 @@ export const systemSememes = {
113
185
  separatorBase: contrastCadence(3, 2),
114
186
  separatorGroup: contrastCadence(3, 2.5),
115
187
  separatorModal: contrastCadence(3, 3),
116
-
117
188
  subduedSeparator: contrastCadence(3, 1),
118
189
 
190
+ scrollbarTrack: contrastCadence(0),
191
+ scrollbarThumbSubdued: contrastCadence(1, 1),
192
+ scrollbarThumb: contrastCadence(2.5, 2.5),
193
+ scrollbarThumbHover: contrastCadence(3.5, 3.5),
194
+ scrollbarThumbActive: contrastCadence(4.5, 4.5),
195
+
119
196
  unAccent: {
120
197
  light: ['neutral', 400],
121
198
  dark: ['neutral', 400],
@@ -223,74 +300,6 @@ export const systemSememes = {
223
300
  },
224
301
  } satisfies ColorSememes;
225
302
 
226
- type SememeName = keyof typeof systemSememes;
227
- type SememeKey = 'root' | 'group' | 'modal';
228
-
229
- /**
230
- * Alias map.
231
- */
232
- const aliasDefs: Record<string, Partial<Record<SememeKey, SememeName>>> = {
233
- // Selected items, current items, other surfaces needing special contrast against baseSurface.
234
- activeSurface: {
235
- root: 'inputSurfaceBase',
236
- },
237
-
238
- // Main sidebar panel.
239
- sidebarSurface: {
240
- root: 'groupSurface',
241
- },
242
-
243
- // Plank header.
244
- headerSurface: {
245
- root: 'groupSurface',
246
- },
247
-
248
- // Toolbars, table/sheet headers, etc.
249
- toolbarSurface: {
250
- root: 'groupSurface',
251
- },
252
-
253
- // Forms, cards, etc.
254
- cardSurface: {
255
- root: 'groupSurface',
256
- },
257
-
258
- // Secondary aliases.
259
- textInputSurface: {
260
- root: 'textInputSurfaceBase',
261
- group: 'textInputSurfaceGroup',
262
- modal: 'textInputSurfaceModal',
263
- },
264
- inputSurface: {
265
- root: 'inputSurfaceBase',
266
- group: 'inputSurfaceGroup',
267
- modal: 'inputSurfaceModal',
268
- },
269
- hoverSurface: {
270
- root: 'hoverSurfaceBase',
271
- group: 'hoverSurfaceGroup',
272
- modal: 'hoverSurfaceModal',
273
- },
274
-
275
- // TODO(thure): Rename uses of this token to `focusSurface` and remove this alias.
276
- attention: {
277
- root: 'focusSurface',
278
- },
279
-
280
- // In “master-detail” patterns, the background of the item in the list which is enumerated in the adjacent view.
281
- // TODO(burdon): Review tokens.
282
- currentRelated: {
283
- root: 'modalSurface',
284
- },
285
-
286
- // Borders and dividers.
287
- separator: {
288
- root: 'separatorBase',
289
- group: 'separatorGroup',
290
- modal: 'separatorModal',
291
- },
292
- };
293
-
294
303
  export const systemAliases: ColorAliases = Object.entries(aliasDefs).reduce((aliases, [alias, values]) => {
295
304
  Object.entries(values).forEach(([key, sememe]) => {
296
305
  const record = getMapValue(aliases, sememe, () => ({}));
@@ -1,92 +1,6 @@
1
1
  //
2
- // Copyright 2024 DXOS.org
2
+ // Copyright 2026 DXOS.org
3
3
  //
4
4
 
5
- import { type TailwindAdapterConfig } from '@ch-ui/tailwind-tokens';
6
- import adapter from '@ch-ui/tailwind-tokens';
7
- import { type TokenSet } from '@ch-ui/tokens';
8
-
9
- import { aliasColors } from './alias-colors';
10
- import { lengthsFacet, maxSizesFacet } from './lengths';
11
- import { huePalettes, physicalColors } from './physical-colors';
12
- import { semanticColors } from './semantic-colors';
13
- import { systemAliases, systemSememes } from './sememes-system';
14
-
15
5
  export * from './sizes';
16
-
17
- export const hues = Object.keys(huePalettes);
18
-
19
- export const tokenSet = {
20
- colors: {
21
- physical: physicalColors,
22
- semantic: semanticColors,
23
- alias: aliasColors,
24
- },
25
- lengths: lengthsFacet,
26
- maxSizes: maxSizesFacet,
27
- } satisfies TokenSet;
28
-
29
- const adapterConfig: TailwindAdapterConfig = {
30
- colors: {
31
- facet: 'colors',
32
- disposition: 'overwrite',
33
- tokenization: 'recursive',
34
- },
35
- borderWidth: {
36
- facet: 'lengths',
37
- disposition: 'extend',
38
- tokenization: 'omit-series',
39
- },
40
- ringWidth: {
41
- facet: 'lengths',
42
- disposition: 'extend',
43
- tokenization: 'omit-series',
44
- },
45
- ringOffsetWidth: {
46
- facet: 'lengths',
47
- disposition: 'extend',
48
- tokenization: 'omit-series',
49
- },
50
- outlineWidth: {
51
- facet: 'lengths',
52
- disposition: 'extend',
53
- tokenization: 'omit-series',
54
- },
55
- spacing: {
56
- facet: 'lengths',
57
- disposition: 'extend',
58
- tokenization: 'keep-series',
59
- },
60
- };
61
-
62
- export const userDefaultTokenSet = {
63
- colors: {
64
- physical: {
65
- definitions: {
66
- series: {
67
- neutral: physicalColors.definitions!.series!.neutral,
68
- primary: physicalColors.definitions!.series!.primary,
69
- },
70
- accompanyingSeries: physicalColors.definitions!.accompanyingSeries,
71
- },
72
- conditions: physicalColors.conditions,
73
- series: {
74
- neutral: physicalColors.series.neutral,
75
- primary: physicalColors.series.primary,
76
- },
77
- namespace: physicalColors.namespace,
78
- },
79
- semantic: {
80
- conditions: semanticColors.conditions,
81
- sememes: systemSememes,
82
- namespace: semanticColors.namespace,
83
- },
84
- alias: {
85
- conditions: aliasColors.conditions,
86
- aliases: systemAliases,
87
- namespace: aliasColors.namespace,
88
- },
89
- },
90
- } satisfies TokenSet;
91
-
92
- export const tokensTailwindConfig = adapter(tokenSet, adapterConfig);
6
+ export * from './tokens';
@@ -5,7 +5,13 @@
5
5
 
6
6
  import { type Facet, type LinearPhysicalLayer } from '@ch-ui/tokens';
7
7
 
8
- import { cardDefaultInlineSize, cardMaxInlineSize, cardMinInlineSize } from './sizes';
8
+ import {
9
+ cardDefaultInlineSize,
10
+ cardMaxBlockSize,
11
+ cardMaxInlineSize,
12
+ cardMinBlockSize,
13
+ cardMinInlineSize,
14
+ } from './sizes';
9
15
 
10
16
  export const lengthsFacet = {
11
17
  physical: {
@@ -58,11 +64,12 @@ export const lengthsFacet = {
58
64
  noLine: { fine: ['focusOffset'] },
59
65
  hairLine: { fine: ['modalLine', 'landmarkLine', 'positionedLine', 'gridGap', 'gridFocusIndicatorWidth'] },
60
66
  thickLine: { fine: ['focusLine'], gridFocusStack: ['gridFocusIndicatorWidth'] },
61
- trimXs: { fine: ['cardSpacingChrome', 'labelSpacingBlock', 'inputSpacingBlock'] }, // TODO(burdon): Remove need for this.
62
- trimSm: { fine: ['cardSpacingInline', 'cardSpacingBlock', 'cardSpacingGap'] },
63
- trimMd: { coarse: ['cardSpacingInline', 'cardSpacingBlock', 'cardSpacingGap'] },
64
67
  inputFine: { fine: ['iconButtonPadding'] },
65
68
  inputCoarse: { coarse: ['iconButtonPadding'] },
69
+
70
+ trimXs: { fine: ['cardSpacingChrome', 'labelSpacingBlock', 'inputSpacingBlock'] },
71
+ trimSm: { fine: ['cardSpacingInline', 'cardSpacingBlock', 'cardSpacingGap'] },
72
+ trimMd: { coarse: ['cardSpacingInline', 'cardSpacingBlock', 'cardSpacingGap'] },
66
73
  },
67
74
  },
68
75
  } satisfies Facet;
@@ -86,12 +93,13 @@ export const maxSizesFacet = {
86
93
  namespace: 'dx-',
87
94
  conditions: { root: [':root'] },
88
95
  sememes: {
89
- prose: { root: ['size', 50] },
90
- containerMaxWidth: { root: ['size', 50] },
91
- popoverMaxWidth: { root: ['size', cardDefaultInlineSize] },
92
- cardDefaultWidth: { root: ['size', cardDefaultInlineSize] },
93
- cardMinWidth: { root: ['size', cardMinInlineSize] },
94
- cardMaxWidth: { root: ['size', cardMaxInlineSize] },
96
+ 'prose-max-width': { root: ['size', 50] },
97
+ 'container-max-width': { root: ['size', 50] },
98
+ 'card-default-width': { root: ['size', cardDefaultInlineSize] },
99
+ 'card-min-width': { root: ['size', cardMinInlineSize] },
100
+ 'card-max-width': { root: ['size', cardMaxInlineSize] },
101
+ 'card-min-height': { root: ['size', cardMinBlockSize] },
102
+ 'card-max-height': { root: ['size', cardMaxBlockSize] },
95
103
  },
96
104
  },
97
105
  } satisfies Facet;
@@ -2,6 +2,11 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ /**
6
+ * Cards should be no larger than 320px per WCAG 2.1 SC 1.4.10.
7
+ */
5
8
  export const cardMinInlineSize = 18;
6
- export const cardDefaultInlineSize = 20;
7
- export const cardMaxInlineSize = 25;
9
+ export const cardDefaultInlineSize = 20; // 320px
10
+ export const cardMaxInlineSize = 22;
11
+ export const cardMinBlockSize = 18;
12
+ export const cardMaxBlockSize = 30;