@dxos/ui-theme 0.8.4-main.c85a9c8dae → 0.8.4-main.d05539e30a

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 (164) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/index.mjs +423 -499
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/node-esm/index.mjs +423 -499
  7. package/dist/lib/node-esm/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/meta.json +1 -1
  9. package/dist/plugin/node-cjs/{theme.css → main.css} +204 -125
  10. package/dist/plugin/node-cjs/main.css.map +7 -0
  11. package/dist/plugin/node-cjs/meta.json +1 -1
  12. package/dist/plugin/node-cjs/plugins/ThemePlugin.cjs +8 -15
  13. package/dist/plugin/node-cjs/plugins/ThemePlugin.cjs.map +3 -3
  14. package/dist/plugin/node-esm/{theme.css → main.css} +204 -125
  15. package/dist/plugin/node-esm/main.css.map +7 -0
  16. package/dist/plugin/node-esm/meta.json +1 -1
  17. package/dist/plugin/node-esm/plugins/ThemePlugin.mjs +8 -15
  18. package/dist/plugin/node-esm/plugins/ThemePlugin.mjs.map +3 -3
  19. package/dist/types/src/Theme.stories.d.ts.map +1 -1
  20. package/dist/types/src/defs.d.ts +2 -2
  21. package/dist/types/src/defs.d.ts.map +1 -1
  22. package/dist/types/src/fragments/density.d.ts +1 -4
  23. package/dist/types/src/fragments/density.d.ts.map +1 -1
  24. package/dist/types/src/fragments/hover.d.ts +0 -1
  25. package/dist/types/src/fragments/hover.d.ts.map +1 -1
  26. package/dist/types/src/fragments/index.d.ts +0 -5
  27. package/dist/types/src/fragments/index.d.ts.map +1 -1
  28. package/dist/types/src/fragments/text.d.ts +0 -5
  29. package/dist/types/src/fragments/text.d.ts.map +1 -1
  30. package/dist/types/src/index.d.ts +1 -1
  31. package/dist/types/src/index.d.ts.map +1 -1
  32. package/dist/types/src/plugins/ThemePlugin.d.ts +1 -1
  33. package/dist/types/src/plugins/ThemePlugin.d.ts.map +1 -1
  34. package/dist/types/src/theme/components/avatar.d.ts.map +1 -1
  35. package/dist/types/src/theme/components/button.d.ts +2 -2
  36. package/dist/types/src/theme/components/button.d.ts.map +1 -1
  37. package/dist/types/src/theme/components/card.d.ts +3 -2
  38. package/dist/types/src/theme/components/card.d.ts.map +1 -1
  39. package/dist/types/src/theme/components/dialog.d.ts.map +1 -1
  40. package/dist/types/src/theme/components/focus.d.ts +6 -0
  41. package/dist/types/src/theme/components/focus.d.ts.map +1 -0
  42. package/dist/types/src/theme/components/icon-button.d.ts +1 -0
  43. package/dist/types/src/theme/components/icon-button.d.ts.map +1 -1
  44. package/dist/types/src/theme/components/icon.d.ts +3 -0
  45. package/dist/types/src/theme/components/icon.d.ts.map +1 -1
  46. package/dist/types/src/theme/components/index.d.ts +1 -0
  47. package/dist/types/src/theme/components/index.d.ts.map +1 -1
  48. package/dist/types/src/theme/components/input.d.ts +8 -8
  49. package/dist/types/src/theme/components/input.d.ts.map +1 -1
  50. package/dist/types/src/theme/components/link.d.ts.map +1 -1
  51. package/dist/types/src/theme/components/list.d.ts.map +1 -1
  52. package/dist/types/src/theme/components/main.d.ts.map +1 -1
  53. package/dist/types/src/theme/components/message.d.ts.map +1 -1
  54. package/dist/types/src/theme/components/popover.d.ts.map +1 -1
  55. package/dist/types/src/theme/components/scroll-area.d.ts +12 -2
  56. package/dist/types/src/theme/components/scroll-area.d.ts.map +1 -1
  57. package/dist/types/src/theme/components/select.d.ts.map +1 -1
  58. package/dist/types/src/theme/components/status.d.ts +1 -1
  59. package/dist/types/src/theme/components/status.d.ts.map +1 -1
  60. package/dist/types/src/theme/components/toast.d.ts.map +1 -1
  61. package/dist/types/src/theme/components/toolbar.d.ts +0 -1
  62. package/dist/types/src/theme/components/toolbar.d.ts.map +1 -1
  63. package/dist/types/src/theme/components/tooltip.d.ts.map +1 -1
  64. package/dist/types/src/theme/components/treegrid.d.ts.map +1 -1
  65. package/dist/types/src/theme/index.d.ts +1 -0
  66. package/dist/types/src/theme/index.d.ts.map +1 -1
  67. package/dist/types/src/theme/primitives/column.d.ts +25 -3
  68. package/dist/types/src/theme/primitives/column.d.ts.map +1 -1
  69. package/dist/types/src/theme/primitives/panel.d.ts +9 -5
  70. package/dist/types/src/theme/primitives/panel.d.ts.map +1 -1
  71. package/dist/types/src/theme/theme.d.ts.map +1 -1
  72. package/dist/types/src/util/elevation.d.ts.map +1 -0
  73. package/dist/types/src/util/hash-styles.d.ts +1 -1
  74. package/dist/types/src/util/hash-styles.d.ts.map +1 -1
  75. package/dist/types/src/util/index.d.ts +3 -0
  76. package/dist/types/src/util/index.d.ts.map +1 -1
  77. package/dist/types/src/util/mx.d.ts +52 -4
  78. package/dist/types/src/util/mx.d.ts.map +1 -1
  79. package/dist/types/src/util/size.d.ts +27 -0
  80. package/dist/types/src/util/size.d.ts.map +1 -0
  81. package/dist/types/src/util/valence.d.ts +4 -0
  82. package/dist/types/src/util/valence.d.ts.map +1 -0
  83. package/dist/types/tsconfig.tsbuildinfo +1 -1
  84. package/package.json +15 -18
  85. package/src/Theme.stories.tsx +5 -5
  86. package/src/css/DESIGN_SYSTEM.md +159 -0
  87. package/src/css/base/base.css +2 -2
  88. package/src/css/components/button.css +4 -3
  89. package/src/css/components/checkbox.css +1 -1
  90. package/src/css/components/{focus-ring.css → focus.css} +27 -13
  91. package/src/css/components/icon.css +9 -0
  92. package/src/css/components/link.css +3 -0
  93. package/src/css/components/panel.css +45 -45
  94. package/src/css/components/selected.css +76 -0
  95. package/src/css/components/selected.md +101 -0
  96. package/src/css/components/surface.css +4 -4
  97. package/src/css/components/tag.css +25 -23
  98. package/src/css/integrations/codemirror.css +5 -3
  99. package/src/css/integrations/tldraw.css +1 -0
  100. package/src/css/layout/main.css +0 -7
  101. package/src/css/layout/size.css +19 -27
  102. package/src/css/theme/animation.css +31 -0
  103. package/src/css/theme/palette.css +8 -0
  104. package/src/css/theme/semantic.css +48 -36
  105. package/src/css/theme/spacing.css +37 -20
  106. package/src/css/theme/styles.css +22 -22
  107. package/src/css/utilities.css +114 -3
  108. package/src/defs.ts +2 -2
  109. package/src/fragments/AUDIT.md +55 -0
  110. package/src/fragments/density.ts +8 -5
  111. package/src/fragments/hover.ts +0 -2
  112. package/src/fragments/index.ts +1 -6
  113. package/src/fragments/text.ts +1 -6
  114. package/src/index.ts +1 -1
  115. package/src/{theme.css → main.css} +48 -10
  116. package/src/plugins/ThemePlugin.ts +12 -24
  117. package/src/plugins/main.css +45 -0
  118. package/src/theme/components/avatar.ts +3 -4
  119. package/src/theme/components/button.ts +3 -3
  120. package/src/theme/components/card.ts +19 -11
  121. package/src/theme/components/dialog.ts +4 -3
  122. package/src/theme/components/focus.ts +33 -0
  123. package/src/theme/components/icon-button.ts +6 -5
  124. package/src/theme/components/icon.ts +13 -4
  125. package/src/theme/components/index.ts +1 -0
  126. package/src/theme/components/input.ts +18 -33
  127. package/src/theme/components/link.ts +1 -2
  128. package/src/theme/components/list.ts +4 -4
  129. package/src/theme/components/menu.ts +4 -4
  130. package/src/theme/components/message.ts +6 -7
  131. package/src/theme/components/popover.ts +4 -5
  132. package/src/theme/components/scroll-area.ts +58 -46
  133. package/src/theme/components/select.ts +3 -4
  134. package/src/theme/components/status.ts +5 -5
  135. package/src/theme/components/toast.ts +2 -3
  136. package/src/theme/components/toolbar.ts +1 -7
  137. package/src/theme/components/tooltip.ts +2 -3
  138. package/src/theme/components/treegrid.ts +1 -1
  139. package/src/theme/index.ts +1 -0
  140. package/src/theme/primitives/column.ts +49 -8
  141. package/src/theme/primitives/panel.ts +19 -23
  142. package/src/theme/theme.ts +2 -0
  143. package/src/typings.d.ts +3 -0
  144. package/src/util/hash-styles.ts +19 -19
  145. package/src/util/index.ts +3 -0
  146. package/src/util/mx.ts +119 -8
  147. package/src/util/size.ts +103 -0
  148. package/dist/plugin/node-cjs/theme.css.map +0 -7
  149. package/dist/plugin/node-esm/theme.css.map +0 -7
  150. package/dist/types/src/fragments/elevation.d.ts.map +0 -1
  151. package/dist/types/src/fragments/focus.d.ts +0 -4
  152. package/dist/types/src/fragments/focus.d.ts.map +0 -1
  153. package/dist/types/src/fragments/selected.d.ts +0 -4
  154. package/dist/types/src/fragments/selected.d.ts.map +0 -1
  155. package/dist/types/src/fragments/size.d.ts +0 -7
  156. package/dist/types/src/fragments/size.d.ts.map +0 -1
  157. package/dist/types/src/fragments/valence.d.ts +0 -4
  158. package/dist/types/src/fragments/valence.d.ts.map +0 -1
  159. package/src/fragments/focus.ts +0 -11
  160. package/src/fragments/selected.ts +0 -12
  161. package/src/fragments/size.ts +0 -117
  162. /package/dist/types/src/{fragments → util}/elevation.d.ts +0 -0
  163. /package/src/{fragments → util}/elevation.ts +0 -0
  164. /package/src/{fragments → util}/valence.ts +0 -0
@@ -1,99 +1,111 @@
1
1
  /**
2
2
  * Tokens
3
+ *
4
+ * Naming convention: --color-{name}-{part}[-{state}]
5
+ * part : surface | foreground | border | fill | text
6
+ * state : hover | active (optional)
7
+ *
8
+ * See DESIGN_SYSTEM.md.
3
9
  */
4
10
 
5
11
  @theme {
6
12
  /**
7
- * Surfaces
8
- *
9
- * TODO(burdon): Align suffix with styles.css?
10
- * -xxx-surface
11
- * -xxx-surface-text
13
+ * Surfaces
12
14
  */
13
15
 
14
16
  --color-base-surface: light-dark(var(--color-neutral-50), var(--color-neutral-950));
15
- --color-base-surface-text: light-dark(var(--color-neutral-950), var(--color-neutral-50));
17
+ --color-base-foreground: light-dark(var(--color-neutral-950), var(--color-neutral-50));
16
18
 
17
19
  --color-inverse-surface: light-dark(var(--color-neutral-800), var(--color-neutral-200));
18
- --color-inverse-surface-text: light-dark(var(--color-neutral-50), var(--color-neutral-950));
20
+ --color-inverse-foreground: light-dark(var(--color-neutral-50), var(--color-neutral-950));
19
21
 
20
- --color-input-surface: light-dark(var(--color-neutral-200), var(--color-neutral-800));
21
- --color-input-surface-text: light-dark(var(--color-neutral-950), var(--color-neutral-50));
22
+ --color-focus-surface: light-dark(var(--color-neutral-50), var(--color-neutral-950));
22
23
 
23
24
  --color-deck-surface: light-dark(var(--color-neutral-50), var(--color-neutral-950));
24
25
  --color-scrim-surface: light-dark(
25
26
  oklch(from var(--color-neutral-50) l c h / 0.5),
26
27
  oklch(from var(--color-neutral-950) l c h / 0.25)
27
28
  );
29
+
28
30
  --color-toolbar-surface: light-dark(var(--color-neutral-75), var(--color-neutral-925));
31
+ --color-card-surface: light-dark(var(--color-neutral-75), var(--color-neutral-925));
32
+
29
33
  --color-group-surface: light-dark(var(--color-neutral-100), var(--color-neutral-900));
30
34
  --color-modal-surface: light-dark(var(--color-neutral-100), var(--color-neutral-900));
31
- --color-card-surface: light-dark(var(--color-neutral-100), var(--color-neutral-900));
32
35
  --color-sidebar-surface: light-dark(var(--color-neutral-100), var(--color-neutral-900));
33
36
  --color-header-surface: light-dark(var(--color-neutral-100), var(--color-neutral-900));
34
37
 
35
- /** TODO(burdon): current vs active vs selected */
38
+ /* input */
39
+ --color-input-surface: light-dark(var(--color-neutral-200), var(--color-neutral-800));
40
+ --color-input-foreground: light-dark(var(--color-neutral-950), var(--color-neutral-50));
41
+
42
+ /* current (aria-current) */
36
43
  --color-current-surface: light-dark(var(--color-neutral-200), var(--color-neutral-800));
37
- --color-active-surface: light-dark(var(--color-neutral-200), var(--color-neutral-800));
38
- --color-active-text: light-dark(var(--color-neutral-950), var(--color-neutral-50));
39
- /** TODO(burdon): Merge overlay/surface? */
40
- --color-hover-overlay: light-dark(var(--color-neutral-250), var(--color-neutral-750));
44
+ --color-current-surface-hover: light-dark(var(--color-neutral-300), var(--color-neutral-700));
45
+ --color-current-foreground: light-dark(var(--color-neutral-950), var(--color-neutral-50));
46
+
47
+ /* selected (aria-selected) */
48
+ --color-selected-surface: light-dark(var(--color-neutral-150), var(--color-neutral-850));
49
+ --color-selected-surface-hover: light-dark(var(--color-neutral-250), var(--color-neutral-750));
50
+ --color-selected-foreground: light-dark(var(--color-neutral-950), var(--color-neutral-50));
51
+
52
+ /* hover (:hover, data-highlighted) */
41
53
  --color-hover-surface: light-dark(var(--color-neutral-250), var(--color-neutral-750));
42
- --color-hover-surface-text: light-dark(var(--color-neutral-950), var(--color-neutral-50));
54
+ --color-hover-foreground: light-dark(var(--color-neutral-950), var(--color-neutral-50));
43
55
 
44
56
  /* Map attention to focus-surface logic so that elements acting as active attention zones highlight correctly on focus. */
45
57
  --color-attention-surface: var(--color-focus-surface);
46
- --color-focus-surface: light-dark(var(--color-neutral-50), var(--color-neutral-950));
47
- --color-neutral-focus-indicator: light-dark(var(--color-neutral-400), var(--color-neutral-600));
48
-
49
- /* Accent */
58
+ --color-attention-contains: oklch(from var(--color-accent-surface) l c h / 0.3);
50
59
 
51
- --color-accent-surface: light-dark(var(--color-blue-600), var(--color-blue-600));
60
+ /* Accent (primary) */
61
+ --color-accent-surface: light-dark(var(--color-blue-500), var(--color-blue-700));
52
62
  --color-accent-surface-hover: light-dark(var(--color-blue-800), var(--color-blue-800));
53
- --color-accent-surface-text: var(--color-blue-100);
54
- --color-accent-text: light-dark(var(--color-blue-600), var(--color-blue-600));
63
+ --color-accent-foreground: var(--color-blue-100);
64
+ --color-accent-text: light-dark(var(--color-blue-600), var(--color-blue-400));
55
65
  --color-accent-text-hover: light-dark(var(--color-blue-500), var(--color-blue-500));
56
- --color-accent-focus-indicator: light-dark(var(--color-blue-600), var(--color-blue-600));
57
66
 
58
67
  --color-un-accent: var(--color-neutral-400);
59
68
  --color-un-accent-hover: var(--color-neutral-500);
60
69
 
61
- /* Separator */
70
+ /* Focus rings (global) */
71
+ --color-focus-ring: light-dark(var(--color-blue-600), var(--color-blue-600));
72
+ --color-focus-ring-subtle: light-dark(var(--color-neutral-400), var(--color-neutral-600));
62
73
 
74
+ /* Separator */
63
75
  --color-separator: light-dark(var(--color-neutral-200), var(--color-neutral-800));
64
- --color-primary-separator: light-dark(var(--color-neutral-400), var(--color-neutral-800));
65
- --color-subdued-separator: light-dark(var(--color-neutral-300), var(--color-neutral-900));
76
+ --color-subdued-separator: light-dark(var(--color-neutral-150), var(--color-neutral-850));
77
+ --color-primary-separator: light-dark(var(--color-neutral-500), var(--color-neutral-700));
78
+ --color-active-separator: light-dark(var(--color-blue-500), var(--color-blue-500));
66
79
 
67
80
  /* Scrollbar */
68
-
69
81
  --color-scrollbar-track: light-dark(var(--color-neutral-50), var(--color-neutral-950));
70
82
  --color-scrollbar-thumb: light-dark(var(--color-neutral-200), var(--color-neutral-700));
71
83
  --color-scrollbar-thumb-active: light-dark(var(--color-neutral-200), var(--color-neutral-600));
72
84
  --color-scrollbar-thumb-hover: light-dark(var(--color-neutral-200), var(--color-neutral-600));
73
85
 
74
86
  /* Sheet */
75
-
76
87
  --color-axis-selected-surface: light-dark(var(--color-neutral-100), var(--color-neutral-900));
77
88
  --color-axis-selected-text: light-dark(var(--color-neutral-100), var(--color-neutral-900));
78
89
  --color-axis-surface: light-dark(var(--color-neutral-50), var(--color-neutral-800));
79
90
  --color-axis-text: light-dark(var(--color-neutral-800), var(--color-neutral-200));
80
91
 
81
- /* Grid */
82
-
92
+ /*
93
+ * Grid
94
+ * NOTE: Update main.css when changing grid tokens (and restart dev server).
95
+ */
83
96
  --color-grid-surface: light-dark(var(--color-neutral-50), var(--color-neutral-950));
97
+ --color-grid-foreground: light-dark(var(--color-neutral-950), var(--color-neutral-50));
98
+ --color-grid-line: light-dark(var(--color-neutral-200), var(--color-neutral-800));
84
99
  --color-grid-highlight: oklch(from var(--color-emerald-500) l c h / 0.5);
100
+ --color-grid-selection-surface: light-dark(var(--color-blue-500), var(--color-blue-400));
101
+ --color-grid-selection-foreground: light-dark(var(--color-neutral-50), var(--color-neutral-950));
85
102
  --color-grid-comment: light-dark(var(--color-green-400), var(--color-green-600));
86
103
  --color-grid-comment-active: light-dark(
87
104
  oklch(from var(--color-green-400) l c h / 0.5),
88
105
  oklch(from var(--color-green-600) l c h / 0.5)
89
106
  );
90
- --color-grid-hover-overlay: oklch(from var(--color-neutral-500) l c h / 0.1);
91
- --color-grid-selection-overlay: var(--color-blue-500);
92
- --color-grid-line: light-dark(var(--color-neutral-200), var(--color-neutral-800));
93
- --color-grid-focus-indicator: light-dark(var(--color-primary-600), var(--color-primary-600));
94
107
 
95
108
  /* Text */
96
-
97
109
  --color-placeholder: light-dark(var(--color-neutral-400), var(--color-neutral-600));
98
110
  --color-subdued: light-dark(var(--color-neutral-500), var(--color-neutral-500));
99
111
  --color-description: light-dark(var(--color-neutral-600), var(--color-neutral-400));
@@ -2,14 +2,18 @@
2
2
  * Tokens
3
3
  */
4
4
 
5
+ /**
6
+ * Utility classes
7
+ */
5
8
  @theme {
6
9
  /** Minimum inset from the viewport edge for floating surfaces. */
7
- --spacing-screen-border: 1rem;
10
+ --spacing-screen-border: 2rem;
8
11
 
9
- --spacing-article-max-width: 50rem;
10
- --spacing-prose-max-width: 50rem;
12
+ --spacing-popover-default-width: 20rem;
13
+ --spacing-popover-min-width: 16rem;
11
14
 
12
- --spacing-popover-min-width: 12rem;
15
+ --spacing-document-max-width: 50rem;
16
+ --spacing-document-width: calc(50rem - env(safe-area-inset-left) - env(safe-area-inset-right));
13
17
 
14
18
  --spacing-card-default-width: 20rem;
15
19
  --spacing-card-min-width: 18rem;
@@ -17,16 +21,17 @@
17
21
  --spacing-card-min-height: 18rem;
18
22
  --spacing-card-max-height: 30rem;
19
23
 
20
- --spacing-trim-xs: 0.375rem;
24
+ --spacing-tag-padding-block: 0.125rem;
25
+
26
+ --spacing-trim-xs: 0.25rem;
21
27
  --spacing-trim-sm: 0.5rem;
22
28
  --spacing-trim-md: 0.75rem;
23
29
  --spacing-trim-lg: 1.5rem;
24
30
 
25
- --spacing-tag-padding-block: 0.125rem;
26
- --spacing-text-content: calc(50rem - env(safe-area-inset-left) - env(safe-area-inset-right));
27
-
28
31
  /** Minimal trim to allow for ring/outline. */
29
32
  --spacing-form-chrome: var(--spacing-trim-xs);
33
+ --spacing-form-gap: var(--spacing-trim-sm);
34
+ --spacing-form-section-gap: var(--spacing-trim-lg);
30
35
 
31
36
  /**
32
37
  * Density: fine
@@ -38,15 +43,20 @@
38
43
 
39
44
  @layer dx-tokens {
40
45
  /**
41
- * Density: coarse
46
+ * TODO(burdon): Density: coarse
42
47
  */
48
+ /*
43
49
  .dx-density-coarse {
44
50
  --spacing-form-padding: var(--spacing-trim-md);
45
51
  --spacing-icon-button-padding: var(--spacing-trim-sm);
46
52
  --spacing-scroll-padding: 8px;
47
53
  }
54
+ */
48
55
  }
49
56
 
57
+ /**
58
+ * CSS variables.
59
+ */
50
60
  @layer dx-tokens {
51
61
  :root {
52
62
  --dx-line-0: 0px;
@@ -58,10 +68,10 @@
58
68
  --dx-lacuna-4: 0.5rem;
59
69
  --dx-lacuna-6: 0.75rem;
60
70
 
61
- --dx-gutter-xs: 0.125rem;
62
- --dx-gutter-sm: 0.5rem;
63
- --dx-gutter-md: 1rem;
64
- --dx-gutter-lg: 2rem;
71
+ --dx-gutter-xs: 0.25rem; /* Input rings */
72
+ --dx-gutter-sm: 1rem;
73
+ --dx-gutter-md: 2rem; /* 32px (fine card) */
74
+ --dx-gutter-lg: 2.5rem; /* 40px (dialog, coarse card) */
65
75
  }
66
76
 
67
77
  :root {
@@ -83,6 +93,8 @@
83
93
 
84
94
  --dx-input-fine: var(--dx-lacuna-3);
85
95
  --dx-input-coarse: var(--dx-lacuna-4);
96
+
97
+ --dx-default-icons-size: 1rem; /* size=4 */
86
98
  }
87
99
 
88
100
  [data-grid-focus-indicator-variant='stack'] {
@@ -91,23 +103,28 @@
91
103
 
92
104
  :root {
93
105
  --dx-rail-content: 3rem;
106
+ /** TODO(burdon): Audit. */
107
+ /** TODO(burdon): Density (2 sizes). */
94
108
  --dx-rail-size: calc(var(--dx-rail-content) + 1px);
95
109
  --dx-rail-item: calc(var(--dx-rail-content) - 1rem);
96
- --dx-rail-action: calc(var(--dx-rail-content) - 0.5rem + 1px);
110
+ /* TODO(burdon): Added 1px for border. */
111
+ /* TODO(burdon): Remove direct usage. */
112
+ --dx-rail-action: calc(var(--dx-rail-content) - 0.5rem);
97
113
 
98
- --dx-topbar-size: var(--dx-rail-size);
99
- --dx-toolbar-size: var(--dx-rail-content);
100
- --dx-statusbar-size: var(--dx-rail-content);
114
+ --dx-topbar-size: var(--dx-rail-size); /* 50px */
115
+ --dx-toolbar-size: var(--dx-rail-action); /* 40px */
116
+ --dx-statusbar-size: var(--dx-rail-item); /* 32px */
101
117
 
102
- --dx-nav-sidebar-size: 23rem;
118
+ /** NOTE: Sidebar optimized to show plank + companion with sidebar open on 16" MBP. */
119
+ --dx-nav-sidebar-size: 350px;
103
120
  --dx-complementary-sidebar-size: 25rem;
104
121
  --dx-drawer-size: 50dvh;
105
122
 
106
- --dx-l0-size: 74px; /* MacOS windowing controls. */
123
+ --dx-l0-size: 72px;
107
124
  --dx-l0-avatar-size: 3rem;
108
125
  --dx-l1-size: calc(var(--dx-nav-sidebar-size) - var(--dx-l0-size));
109
126
  --dx-r0-size: var(--dx-rail-size);
110
- --dx-r1-size: calc(var(--dx-complementary-sidebar-size) - var(--dx-r0-size));
127
+ --dx-r1-size: calc(var(--dx-complementary-sidebar-size) - var(--dx-r0-size) - 1px);
111
128
  }
112
129
 
113
130
  :root {
@@ -9,25 +9,25 @@
9
9
 
10
10
  --color-info-fill: var(--color-cyan-fill);
11
11
  --color-info-surface: var(--color-cyan-surface);
12
- --color-info-surface-text: var(--color-cyan-surface-text);
12
+ --color-info-foreground: var(--color-cyan-foreground);
13
13
  --color-info-text: var(--color-cyan-text);
14
14
  --color-info-border: var(--color-cyan-border);
15
15
 
16
16
  --color-success-fill: var(--color-emerald-fill);
17
17
  --color-success-surface: var(--color-emerald-surface);
18
- --color-success-surface-text: var(--color-emerald-surface-text);
18
+ --color-success-foreground: var(--color-emerald-foreground);
19
19
  --color-success-text: var(--color-emerald-text);
20
20
  --color-success-border: var(--color-emerald-border);
21
21
 
22
22
  --color-warning-fill: var(--color-amber-fill);
23
23
  --color-warning-surface: var(--color-amber-surface);
24
- --color-warning-surface-text: var(--color-amber-surface-text);
24
+ --color-warning-foreground: var(--color-amber-foreground);
25
25
  --color-warning-text: var(--color-amber-text);
26
26
  --color-warning-border: var(--color-amber-border);
27
27
 
28
28
  --color-error-fill: var(--color-rose-fill);
29
29
  --color-error-surface: var(--color-rose-surface);
30
- --color-error-surface-text: var(--color-rose-surface-text);
30
+ --color-error-foreground: var(--color-rose-foreground);
31
31
  --color-error-text: var(--color-rose-text);
32
32
  --color-error-border: var(--color-rose-border);
33
33
 
@@ -37,109 +37,109 @@
37
37
 
38
38
  --color-neutral-fill: light-dark(var(--color-neutral-300), var(--color-neutral-700));
39
39
  --color-neutral-surface: light-dark(var(--color-neutral-200), var(--color-neutral-800));
40
- --color-neutral-surface-text: light-dark(var(--color-neutral-800), var(--color-neutral-200));
40
+ --color-neutral-foreground: light-dark(var(--color-neutral-800), var(--color-neutral-200));
41
41
  --color-neutral-text: light-dark(var(--color-neutral-700), var(--color-neutral-300));
42
42
  --color-neutral-border: light-dark(var(--color-neutral-400), var(--color-neutral-600));
43
43
 
44
44
  --color-red-fill: light-dark(var(--color-red-300), var(--color-red-700));
45
45
  --color-red-surface: light-dark(var(--color-red-200), var(--color-red-800));
46
- --color-red-surface-text: light-dark(var(--color-red-800), var(--color-red-200));
46
+ --color-red-foreground: light-dark(var(--color-red-800), var(--color-red-200));
47
47
  --color-red-text: light-dark(var(--color-red-700), var(--color-red-300));
48
48
  --color-red-border: light-dark(var(--color-red-400), var(--color-red-600));
49
49
 
50
50
  --color-orange-fill: light-dark(var(--color-orange-300), var(--color-orange-700));
51
51
  --color-orange-surface: light-dark(var(--color-orange-200), var(--color-orange-800));
52
- --color-orange-surface-text: light-dark(var(--color-orange-800), var(--color-orange-200));
52
+ --color-orange-foreground: light-dark(var(--color-orange-800), var(--color-orange-200));
53
53
  --color-orange-text: light-dark(var(--color-orange-700), var(--color-orange-300));
54
54
  --color-orange-border: light-dark(var(--color-orange-400), var(--color-orange-600));
55
55
 
56
56
  --color-amber-fill: light-dark(var(--color-amber-300), var(--color-amber-700));
57
57
  --color-amber-surface: light-dark(var(--color-amber-200), var(--color-amber-800));
58
- --color-amber-surface-text: light-dark(var(--color-amber-800), var(--color-amber-200));
58
+ --color-amber-foreground: light-dark(var(--color-amber-800), var(--color-amber-200));
59
59
  --color-amber-text: light-dark(var(--color-amber-700), var(--color-amber-300));
60
60
  --color-amber-border: light-dark(var(--color-amber-400), var(--color-amber-600));
61
61
 
62
62
  --color-yellow-fill: light-dark(var(--color-yellow-300), var(--color-yellow-700));
63
63
  --color-yellow-surface: light-dark(var(--color-yellow-200), var(--color-yellow-800));
64
- --color-yellow-surface-text: light-dark(var(--color-yellow-800), var(--color-yellow-200));
64
+ --color-yellow-foreground: light-dark(var(--color-yellow-800), var(--color-yellow-200));
65
65
  --color-yellow-text: light-dark(var(--color-yellow-700), var(--color-yellow-300));
66
66
  --color-yellow-border: light-dark(var(--color-yellow-400), var(--color-yellow-600));
67
67
 
68
68
  --color-lime-fill: light-dark(var(--color-lime-300), var(--color-lime-700));
69
69
  --color-lime-surface: light-dark(var(--color-lime-200), var(--color-lime-800));
70
- --color-lime-surface-text: light-dark(var(--color-lime-800), var(--color-lime-200));
70
+ --color-lime-foreground: light-dark(var(--color-lime-800), var(--color-lime-200));
71
71
  --color-lime-text: light-dark(var(--color-lime-700), var(--color-lime-300));
72
72
  --color-lime-border: light-dark(var(--color-lime-400), var(--color-lime-600));
73
73
 
74
74
  --color-green-fill: light-dark(var(--color-green-300), var(--color-green-700));
75
75
  --color-green-surface: light-dark(var(--color-green-200), var(--color-green-800));
76
- --color-green-surface-text: light-dark(var(--color-green-800), var(--color-green-200));
76
+ --color-green-foreground: light-dark(var(--color-green-800), var(--color-green-200));
77
77
  --color-green-text: light-dark(var(--color-green-700), var(--color-green-300));
78
78
  --color-green-border: light-dark(var(--color-green-400), var(--color-green-600));
79
79
 
80
80
  --color-emerald-fill: light-dark(var(--color-emerald-300), var(--color-emerald-700));
81
81
  --color-emerald-surface: light-dark(var(--color-emerald-200), var(--color-emerald-800));
82
- --color-emerald-surface-text: light-dark(var(--color-emerald-800), var(--color-emerald-200));
82
+ --color-emerald-foreground: light-dark(var(--color-emerald-800), var(--color-emerald-200));
83
83
  --color-emerald-text: light-dark(var(--color-emerald-700), var(--color-emerald-300));
84
84
  --color-emerald-border: light-dark(var(--color-emerald-400), var(--color-emerald-600));
85
85
 
86
86
  --color-teal-fill: light-dark(var(--color-teal-300), var(--color-teal-700));
87
87
  --color-teal-surface: light-dark(var(--color-teal-200), var(--color-teal-800));
88
- --color-teal-surface-text: light-dark(var(--color-teal-800), var(--color-teal-200));
88
+ --color-teal-foreground: light-dark(var(--color-teal-800), var(--color-teal-200));
89
89
  --color-teal-text: light-dark(var(--color-teal-700), var(--color-teal-300));
90
90
  --color-teal-border: light-dark(var(--color-teal-400), var(--color-teal-600));
91
91
 
92
92
  --color-cyan-fill: light-dark(var(--color-cyan-300), var(--color-cyan-700));
93
93
  --color-cyan-surface: light-dark(var(--color-cyan-200), var(--color-cyan-800));
94
- --color-cyan-surface-text: light-dark(var(--color-cyan-800), var(--color-cyan-200));
94
+ --color-cyan-foreground: light-dark(var(--color-cyan-800), var(--color-cyan-200));
95
95
  --color-cyan-text: light-dark(var(--color-cyan-700), var(--color-cyan-300));
96
96
  --color-cyan-border: light-dark(var(--color-cyan-400), var(--color-cyan-600));
97
97
 
98
98
  --color-sky-fill: light-dark(var(--color-sky-300), var(--color-sky-700));
99
99
  --color-sky-surface: light-dark(var(--color-sky-200), var(--color-sky-800));
100
- --color-sky-surface-text: light-dark(var(--color-sky-800), var(--color-sky-200));
100
+ --color-sky-foreground: light-dark(var(--color-sky-800), var(--color-sky-200));
101
101
  --color-sky-text: light-dark(var(--color-sky-700), var(--color-sky-300));
102
102
  --color-sky-border: light-dark(var(--color-sky-400), var(--color-sky-600));
103
103
 
104
104
  --color-blue-fill: light-dark(var(--color-blue-300), var(--color-blue-700));
105
105
  --color-blue-surface: light-dark(var(--color-blue-200), var(--color-blue-800));
106
- --color-blue-surface-text: light-dark(var(--color-blue-800), var(--color-blue-200));
106
+ --color-blue-foreground: light-dark(var(--color-blue-800), var(--color-blue-200));
107
107
  --color-blue-text: light-dark(var(--color-blue-700), var(--color-blue-300));
108
108
  --color-blue-border: light-dark(var(--color-blue-400), var(--color-blue-600));
109
109
 
110
110
  --color-indigo-fill: light-dark(var(--color-indigo-300), var(--color-indigo-700));
111
111
  --color-indigo-surface: light-dark(var(--color-indigo-200), var(--color-indigo-800));
112
- --color-indigo-surface-text: light-dark(var(--color-indigo-800), var(--color-indigo-200));
112
+ --color-indigo-foreground: light-dark(var(--color-indigo-800), var(--color-indigo-200));
113
113
  --color-indigo-text: light-dark(var(--color-indigo-700), var(--color-indigo-300));
114
114
  --color-indigo-border: light-dark(var(--color-indigo-400), var(--color-indigo-600));
115
115
 
116
116
  --color-violet-fill: light-dark(var(--color-violet-300), var(--color-violet-700));
117
117
  --color-violet-surface: light-dark(var(--color-violet-200), var(--color-violet-800));
118
- --color-violet-surface-text: light-dark(var(--color-violet-800), var(--color-violet-200));
118
+ --color-violet-foreground: light-dark(var(--color-violet-800), var(--color-violet-200));
119
119
  --color-violet-text: light-dark(var(--color-violet-700), var(--color-violet-300));
120
120
  --color-violet-border: light-dark(var(--color-violet-400), var(--color-violet-600));
121
121
 
122
122
  --color-purple-fill: light-dark(var(--color-purple-300), var(--color-purple-700));
123
123
  --color-purple-surface: light-dark(var(--color-purple-200), var(--color-purple-800));
124
- --color-purple-surface-text: light-dark(var(--color-purple-800), var(--color-purple-200));
124
+ --color-purple-foreground: light-dark(var(--color-purple-800), var(--color-purple-200));
125
125
  --color-purple-text: light-dark(var(--color-purple-700), var(--color-purple-300));
126
126
  --color-purple-border: light-dark(var(--color-purple-400), var(--color-purple-600));
127
127
 
128
128
  --color-fuchsia-fill: light-dark(var(--color-fuchsia-300), var(--color-fuchsia-700));
129
129
  --color-fuchsia-surface: light-dark(var(--color-fuchsia-200), var(--color-fuchsia-800));
130
- --color-fuchsia-surface-text: light-dark(var(--color-fuchsia-800), var(--color-fuchsia-200));
130
+ --color-fuchsia-foreground: light-dark(var(--color-fuchsia-800), var(--color-fuchsia-200));
131
131
  --color-fuchsia-text: light-dark(var(--color-fuchsia-700), var(--color-fuchsia-300));
132
132
  --color-fuchsia-border: light-dark(var(--color-fuchsia-400), var(--color-fuchsia-600));
133
133
 
134
134
  --color-pink-fill: light-dark(var(--color-pink-300), var(--color-pink-700));
135
135
  --color-pink-surface: light-dark(var(--color-pink-200), var(--color-pink-800));
136
- --color-pink-surface-text: light-dark(var(--color-pink-800), var(--color-pink-200));
136
+ --color-pink-foreground: light-dark(var(--color-pink-800), var(--color-pink-200));
137
137
  --color-pink-text: light-dark(var(--color-pink-700), var(--color-pink-300));
138
138
  --color-pink-border: light-dark(var(--color-pink-400), var(--color-pink-600));
139
139
 
140
140
  --color-rose-fill: light-dark(var(--color-rose-300), var(--color-rose-700));
141
141
  --color-rose-surface: light-dark(var(--color-rose-200), var(--color-rose-800));
142
- --color-rose-surface-text: light-dark(var(--color-rose-800), var(--color-rose-200));
142
+ --color-rose-foreground: light-dark(var(--color-rose-800), var(--color-rose-200));
143
143
  --color-rose-text: light-dark(var(--color-rose-700), var(--color-rose-300));
144
144
  --color-rose-border: light-dark(var(--color-rose-400), var(--color-rose-600));
145
145
  }
@@ -1,7 +1,118 @@
1
1
  /**
2
- * Misc
2
+ * Tailwind utility classes.
3
3
  */
4
4
 
5
- @utility dx-icon-inline {
6
- @apply inline-block align-[-0.125em];
5
+ /**
6
+ * Layout rules for flex-based scroll containment:
7
+ * `flex flex-col`
8
+ * On a container: makes it a flex column so children stack and can use `flex-1`.
9
+ * `flex-1`
10
+ * On a child: grows to fill the flex parent. Requires the parent to be `flex`.
11
+ * `min-h-0` (alongside `flex-1`):
12
+ * Overrides default flex children: `min-height:auto` (sized to content), which prevents shrinking.
13
+ * Allows element to shrink and trigger overflow/scrolling.
14
+ * Always pair with `flex-1` when scroll is needed.
15
+ * `h-full`:
16
+ * Fills 100% of the parent's *computed* height.
17
+ * Use when the parent has a definite height but is not a flex container (e.g. `overflow:hidden` wrapper).
18
+ * Unlike `flex-1`, does not require the parent to be flex.
19
+ *
20
+ * Pattern for a scrollable region inside a flex ancestor:
21
+ * ancestor → `flex flex-col` (or `flex flex-row`)
22
+ * scroll root → `flex-1 min-h-0` (fills ancestor, can shrink)
23
+ * scroll viewport → `h-full overflow-y-scroll` (fills root, scrolls)
24
+ */
25
+
26
+ /**
27
+ * Fills the available space.
28
+ */
29
+ @utility dx-expander {
30
+ @apply flex-1 min-h-0 min-w-0 h-full w-full;
31
+ }
32
+
33
+ /**
34
+ * Container that fills the available space (extends dx-expander with overflow clipping).
35
+ */
36
+ @utility dx-container {
37
+ @apply dx-expander overflow-hidden;
38
+ }
39
+
40
+ /**
41
+ * Column that fills the available space (extends dx-expander with overflow clipping).
42
+ */
43
+ @utility dx-column {
44
+ @apply flex-1 min-w-0 w-full;
45
+ }
46
+
47
+ /**
48
+ * Fullscreen
49
+ */
50
+ @utility dx-fullscreen {
51
+ @apply absolute inset-0;
52
+ }
53
+
54
+ /**
55
+ * Visual warning to indicate incorrect usage of `slottable`.
56
+ */
57
+ @utility dx-slot-warning {
58
+ @apply border border-rose-500 border-dashed;
59
+ }
60
+
61
+ /**
62
+ * Pseudo-element overlay for ring indicators (focus, current, etc.).
63
+ *
64
+ * A standard CSS `box-shadow` ring is painted behind child content, so children with
65
+ * opaque backgrounds (e.g., cards, avatars) obscure it. By painting the ring on an
66
+ * absolutely-positioned `::after` pseudo-element that sits above the element's children
67
+ * in stacking order, the ring is always visible regardless of child backgrounds.
68
+ *
69
+ * The pseudo-element inherits `border-radius` from its parent and is `pointer-events-none`
70
+ * so it doesn't interfere with interactions. The ring starts transparent; consumers
71
+ * activate it conditionally (e.g., `focus:after:ring-*`, `aria-[current=true]:after:ring-*`).
72
+ */
73
+ @utility dx-ring-pseudo {
74
+ @apply relative after:content-[""] after:absolute after:inset-0 after:rounded-[inherit]
75
+ after:pointer-events-none after:ring after:ring-inset after:ring-transparent;
76
+ }
77
+
78
+ /**
79
+ * Shimmer text — animates opacity left → right across the contained text.
80
+ * See @keyframes shimmer-text in theme/animation.css for the keyframe definition.
81
+ * Geometry: mask-size 200% 100% with mask-repeat: repeat-x means each tile is
82
+ * 2× the element width; the keyframe slides mask-position-x by 200% (one full
83
+ * tile period), giving a seamless loop. The 5-stop gradient (0.4 → 1.0 → 0.4)
84
+ * produces a single bright pulse per cycle that traverses left → right during
85
+ * the first half, with a brief calm interval during the second half.
86
+ */
87
+ @utility shimmer-text {
88
+ mask-image: linear-gradient(
89
+ 90deg,
90
+ rgba(0, 0, 0, 0.4) 0%,
91
+ rgba(0, 0, 0, 0.4) 30%,
92
+ rgba(0, 0, 0, 1) 50%,
93
+ rgba(0, 0, 0, 0.4) 70%,
94
+ rgba(0, 0, 0, 0.4) 100%
95
+ );
96
+ -webkit-mask-image: linear-gradient(
97
+ 90deg,
98
+ rgba(0, 0, 0, 0.4) 0%,
99
+ rgba(0, 0, 0, 0.4) 30%,
100
+ rgba(0, 0, 0, 1) 50%,
101
+ rgba(0, 0, 0, 0.4) 70%,
102
+ rgba(0, 0, 0, 0.4) 100%
103
+ );
104
+ mask-size: 200% 100%;
105
+ -webkit-mask-size: 200% 100%;
106
+ mask-repeat: repeat-x;
107
+ -webkit-mask-repeat: repeat-x;
108
+ animation: shimmer-text 2s linear infinite;
109
+ }
110
+
111
+ @media (prefers-reduced-motion: reduce) {
112
+ .shimmer-text {
113
+ animation: none;
114
+ mask-image: none;
115
+ -webkit-mask-image: none;
116
+ opacity: 0.6;
117
+ }
7
118
  }
package/src/defs.ts CHANGED
@@ -7,7 +7,7 @@ import { type ChromaticPalette } from '@dxos/ui-types';
7
7
  /**
8
8
  * Translation namespace for OS-level translations.
9
9
  */
10
- export const osTranslations = 'dxos.org/i18n/os';
10
+ export const osTranslations = 'org.dxos.i18n.os';
11
11
 
12
12
  /**
13
13
  * Available color hues for UI components.
@@ -34,7 +34,7 @@ export const hues: ChromaticPalette[] = [
34
34
 
35
35
  export const hueShades = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;
36
36
 
37
- export const roles = ['fill', 'surface', 'surface-text', 'text', 'border'] as const;
37
+ export const roles = ['fill', 'surface', 'foreground', 'text', 'border'] as const;
38
38
 
39
39
  /**
40
40
  * Card size constants (Tailwind spacing units).
@@ -0,0 +1,55 @@
1
+ # Fragment Definitions Audit
2
+
3
+ External packages importing fragment definitions from `ui-theme/src/fragments`.
4
+
5
+ ## Current Fragment Exports
6
+
7
+ | File | Definition | External | Internal |
8
+ | ------------- | ------------------------------------- | -------- | -------- |
9
+ | `density.ts` | `densityBlockSize` | - | 1 |
10
+ | `density.ts` | `coarseBlockSize` | - | 1 |
11
+ | `density.ts` | `coarseDimensions` | - | 1 |
12
+ | `density.ts` | `fineBlockSize` | - | 1 |
13
+ | `density.ts` | `fineDimensions` | - | 1 |
14
+ | `disabled.ts` | `staticDisabled` | - | 1 |
15
+ | `disabled.ts` | `dataDisabled` | - | 1 |
16
+ | `focus.ts` | `focusRing` | 2 | 5 |
17
+ | `focus.ts` | `subduedFocus` | - | 2 |
18
+ | `focus.ts` | `staticFocusRing` | - | 1 |
19
+ | `hover.ts` | `ghostHover` | 8 | 2 |
20
+ | `hover.ts` | `ghostFocusWithin` | 1 | - |
21
+ | `hover.ts` | `hoverableControls` | 9 | - |
22
+ | `hover.ts` | `groupHoverControlItemWithTransition` | 2 | - |
23
+ | `hover.ts` | `hoverableFocusedKeyboardControls` | 1 | - |
24
+ | `hover.ts` | `hoverableFocusedWithinControls` | 9 | - |
25
+ | `hover.ts` | `hoverableOpenControlItem` | 3 | - |
26
+ | `hover.ts` | `hoverableControlItem` | 7 | - |
27
+ | `text.ts` | `descriptionTextPrimary` | 1 | - |
28
+ | `text.ts` | `descriptionMessage` | 5 | - |
29
+
30
+ ## Summary
31
+
32
+ **Total fragments:** 21
33
+ **Total imports (external + internal):** 96
34
+
35
+ - **External:** 63
36
+ - **Internal:** 33
37
+
38
+ **Most imported overall:**
39
+
40
+ - `hoverableControls` (9 external)
41
+ - `hoverableFocusedWithinControls` (9 external)
42
+ - `ghostHover` (8 external + 2 internal = 10 total)
43
+ - `hoverableControlItem` (7 external)
44
+ - `focusRing` (2 external + 5 internal = 7 total)
45
+
46
+ **Internal imports by file:**
47
+
48
+ - `input.ts`: 8 definitions (coarseBlockSize, coarseDimensions, fineBlockSize, fineDimensions, focusRing, staticDisabled, staticFocusRing, subduedFocus)
49
+ - `list.ts`: 3 definitions (densityBlockSize, focusRing, ghostHover)
50
+ - `menu.ts`: 2 definitions (dataDisabled, subduedFocus)
51
+ - `button.ts`, `link.ts`, `popover.ts`, `toast.ts`: 1 definition each (ghostHover, focusRing, focusRing, focusRing)
52
+
53
+ **Completely unused:** 7 fragments
54
+
55
+ - `hoverableOpenControlItem`, `groupHoverControlItemWithTransition` from `hover.ts` (only 2-3 uses)
@@ -4,10 +4,13 @@
4
4
 
5
5
  import { type Density } from '@dxos/ui-types';
6
6
 
7
- export const coarseBlockSize = 'min-h-[2.5rem]';
8
- export const coarseDimensions = `${coarseBlockSize} px-3`;
7
+ const fineBlockSize = 'min-h-[2.5rem] pointer-fine:min-h-[2rem]';
8
+ const coarseBlockSize = 'min-h-[2.5rem]';
9
9
 
10
- export const fineBlockSize = 'min-h-[2.5rem] pointer-fine:min-h-[2rem]';
11
- export const fineDimensions = `${fineBlockSize} px-2`;
10
+ const fineDimensions = `${fineBlockSize} px-2`;
11
+ const coarseDimensions = `${coarseBlockSize} px-3`;
12
12
 
13
- export const densityBlockSize = (density: Density = 'coarse') => (density === 'fine' ? fineBlockSize : coarseBlockSize);
13
+ export const densityDimensions = (density: Density = 'fine') =>
14
+ density === 'fine' ? fineDimensions : coarseDimensions;
15
+
16
+ export const densityBlockSize = (density: Density = 'fine') => (density === 'fine' ? fineBlockSize : coarseBlockSize);
@@ -2,8 +2,6 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- export const subtleHover = 'hover:bg-hover-overlay';
6
-
7
5
  export const ghostHover = 'hover:bg-hover-surface';
8
6
  export const ghostFocusWithin = 'focus-within:bg-hover-surface';
9
7