@luxfi/ui 5.6.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/components/Badge.d.ts.map +1 -0
  2. package/dist/components/Badge.js +91 -0
  3. package/dist/components/Button.d.ts.map +1 -0
  4. package/dist/components/Button.js +137 -0
  5. package/dist/components/Card.d.ts.map +1 -0
  6. package/dist/components/Card.js +86 -0
  7. package/dist/components/IconButton.d.ts.map +1 -0
  8. package/dist/components/IconButton.js +64 -0
  9. package/dist/components/Input.d.ts.map +1 -0
  10. package/dist/components/Input.js +71 -0
  11. package/dist/components/Modal.d.ts.map +1 -0
  12. package/dist/components/Modal.js +98 -0
  13. package/dist/components/Skeleton.d.ts.map +1 -0
  14. package/dist/components/Skeleton.js +44 -0
  15. package/dist/components/Spinner.d.ts.map +1 -0
  16. package/dist/components/Spinner.js +42 -0
  17. package/dist/components/Switch.d.ts.map +1 -0
  18. package/dist/components/Switch.js +10 -0
  19. package/dist/components/TokenLogo.d.ts.map +1 -0
  20. package/dist/components/TokenLogo.js +57 -0
  21. package/dist/components/Tooltip.d.ts.map +1 -0
  22. package/dist/components/Tooltip.js +34 -0
  23. package/dist/components/index.d.ts.map +1 -0
  24. package/dist/components/index.js +19 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +35 -5618
  27. package/dist/theme/index.d.ts.map +1 -0
  28. package/dist/theme/index.js +6 -0
  29. package/dist/theme/themes.d.ts.map +1 -0
  30. package/dist/theme/themes.js +73 -0
  31. package/dist/theme/tokens.d.ts.map +1 -0
  32. package/dist/theme/tokens.js +101 -0
  33. package/package.json +81 -278
  34. package/dist/accordion.cjs +0 -213
  35. package/dist/accordion.js +0 -186
  36. package/dist/alert.cjs +0 -553
  37. package/dist/alert.js +0 -531
  38. package/dist/avatar.cjs +0 -149
  39. package/dist/avatar.js +0 -125
  40. package/dist/badge.cjs +0 -611
  41. package/dist/badge.js +0 -589
  42. package/dist/button.cjs +0 -689
  43. package/dist/button.js +0 -664
  44. package/dist/checkbox.cjs +0 -265
  45. package/dist/checkbox.js +0 -241
  46. package/dist/close-button.cjs +0 -73
  47. package/dist/close-button.js +0 -51
  48. package/dist/collapsible.cjs +0 -702
  49. package/dist/collapsible.js +0 -679
  50. package/dist/color-mode.cjs +0 -96
  51. package/dist/color-mode.js +0 -72
  52. package/dist/dialog.cjs +0 -279
  53. package/dist/dialog.js +0 -246
  54. package/dist/drawer.cjs +0 -207
  55. package/dist/drawer.js +0 -175
  56. package/dist/empty-state.cjs +0 -93
  57. package/dist/empty-state.js +0 -71
  58. package/dist/field.cjs +0 -183
  59. package/dist/field.js +0 -160
  60. package/dist/heading.cjs +0 -46
  61. package/dist/heading.js +0 -40
  62. package/dist/icon-button.cjs +0 -491
  63. package/dist/icon-button.js +0 -470
  64. package/dist/image.cjs +0 -572
  65. package/dist/image.js +0 -551
  66. package/dist/index.cjs +0 -5779
  67. package/dist/input-group.cjs +0 -155
  68. package/dist/input-group.js +0 -133
  69. package/dist/input.cjs +0 -65
  70. package/dist/input.js +0 -59
  71. package/dist/link.cjs +0 -630
  72. package/dist/link.js +0 -606
  73. package/dist/menu.cjs +0 -305
  74. package/dist/menu.js +0 -269
  75. package/dist/pin-input.cjs +0 -182
  76. package/dist/pin-input.js +0 -160
  77. package/dist/popover.cjs +0 -327
  78. package/dist/popover.js +0 -294
  79. package/dist/progress-circle.cjs +0 -152
  80. package/dist/progress-circle.js +0 -128
  81. package/dist/progress.cjs +0 -117
  82. package/dist/progress.js +0 -94
  83. package/dist/provider.cjs +0 -62
  84. package/dist/provider.js +0 -40
  85. package/dist/radio.cjs +0 -177
  86. package/dist/radio.js +0 -153
  87. package/dist/rating.cjs +0 -80
  88. package/dist/rating.js +0 -58
  89. package/dist/select.cjs +0 -791
  90. package/dist/select.js +0 -757
  91. package/dist/separator.cjs +0 -57
  92. package/dist/separator.js +0 -51
  93. package/dist/skeleton.cjs +0 -370
  94. package/dist/skeleton.js +0 -346
  95. package/dist/slider.cjs +0 -138
  96. package/dist/slider.js +0 -115
  97. package/dist/switch.cjs +0 -163
  98. package/dist/switch.js +0 -140
  99. package/dist/table.cjs +0 -1044
  100. package/dist/table.js +0 -1013
  101. package/dist/tabs.cjs +0 -240
  102. package/dist/tabs.js +0 -213
  103. package/dist/tag.cjs +0 -651
  104. package/dist/tag.js +0 -628
  105. package/dist/textarea.cjs +0 -65
  106. package/dist/textarea.js +0 -59
  107. package/dist/toaster.cjs +0 -99
  108. package/dist/toaster.js +0 -96
  109. package/dist/tooltip.cjs +0 -171
  110. package/dist/tooltip.js +0 -148
  111. package/dist/utils.cjs +0 -11
  112. package/dist/utils.js +0 -9
  113. package/src/accordion.tsx +0 -285
  114. package/src/alert.tsx +0 -221
  115. package/src/avatar.tsx +0 -174
  116. package/src/badge.tsx +0 -158
  117. package/src/button.tsx +0 -411
  118. package/src/checkbox.tsx +0 -307
  119. package/src/close-button.tsx +0 -51
  120. package/src/collapsible.tsx +0 -126
  121. package/src/color-mode.tsx +0 -125
  122. package/src/dialog.tsx +0 -356
  123. package/src/drawer.tsx +0 -186
  124. package/src/empty-state.tsx +0 -97
  125. package/src/field.tsx +0 -202
  126. package/src/heading.tsx +0 -55
  127. package/src/icon-button.tsx +0 -192
  128. package/src/image.tsx +0 -280
  129. package/src/index.ts +0 -192
  130. package/src/input-group.tsx +0 -159
  131. package/src/input.tsx +0 -60
  132. package/src/link.tsx +0 -326
  133. package/src/menu.tsx +0 -471
  134. package/src/pin-input.tsx +0 -187
  135. package/src/popover.tsx +0 -400
  136. package/src/progress-circle.tsx +0 -180
  137. package/src/progress.tsx +0 -109
  138. package/src/provider.tsx +0 -12
  139. package/src/radio.tsx +0 -175
  140. package/src/rating.tsx +0 -79
  141. package/src/select.tsx +0 -696
  142. package/src/separator.tsx +0 -59
  143. package/src/skeleton.tsx +0 -302
  144. package/src/slider.tsx +0 -152
  145. package/src/switch.tsx +0 -158
  146. package/src/table.tsx +0 -621
  147. package/src/tabs.tsx +0 -354
  148. package/src/tag.tsx +0 -159
  149. package/src/textarea.tsx +0 -60
  150. package/src/toaster.tsx +0 -117
  151. package/src/tokens.css +0 -438
  152. package/src/tooltip.tsx +0 -184
  153. package/src/utils/cn.ts +0 -7
  154. package/src/utils.ts +0 -6
  155. package/tokens.css +0 -438
package/src/tokens.css DELETED
@@ -1,438 +0,0 @@
1
- /*
2
- * Design tokens — CSS custom properties
3
- *
4
- * These mirror the Chakra semantic tokens defined in
5
- * toolkit/theme/foundations/semanticTokens.ts and
6
- * toolkit/theme/foundations/colors.ts (DEFAULT_THEME_COLORS).
7
- *
8
- * Light mode is the default (:root). Dark mode activates via .dark class
9
- * (applied by next-themes with the "class" strategy).
10
- *
11
- * Palette reference (true neutral grays):
12
- * gray.50 = #FAFAFA gray.500 = #737373
13
- * gray.100 = #F5F5F5 gray.600 = #525252
14
- * gray.200 = #E5E5E5 gray.700 = #404040
15
- * gray.300 = #D4D4D4 gray.800 = #262626
16
- * gray.400 = #A3A3A3 gray.900 = #171717
17
- *
18
- * blackAlpha.50 = rgba(16,17,18,0.04) whiteAlpha.50 = rgba(255,255,255,0.04)
19
- * blackAlpha.100 = rgba(16,17,18,0.06) whiteAlpha.100 = rgba(255,255,255,0.06)
20
- * blackAlpha.200 = rgba(16,17,18,0.08) whiteAlpha.200 = rgba(255,255,255,0.08)
21
- * blackAlpha.300 = rgba(16,17,18,0.16) whiteAlpha.300 = rgba(255,255,255,0.16)
22
- * blackAlpha.400 = rgba(16,17,18,0.24) whiteAlpha.400 = rgba(255,255,255,0.24)
23
- * blackAlpha.500 = rgba(16,17,18,0.36) whiteAlpha.500 = rgba(255,255,255,0.36)
24
- * blackAlpha.600 = rgba(16,17,18,0.48) whiteAlpha.600 = rgba(255,255,255,0.48)
25
- * blackAlpha.700 = rgba(16,17,18,0.64) whiteAlpha.700 = rgba(255,255,255,0.64)
26
- * blackAlpha.800 = rgba(16,17,18,0.80) whiteAlpha.800 = rgba(255,255,255,0.80)
27
- * blackAlpha.900 = rgba(16,17,18,0.92) whiteAlpha.900 = rgba(255,255,255,0.92)
28
- */
29
-
30
- /* ================================================================
31
- LIGHT MODE (default)
32
- ================================================================ */
33
- :root {
34
- /* --- Backgrounds --- */
35
- --color-bg-primary: #FFFFFF;
36
- --color-bg-info: #FAFAFA;
37
- --color-bg-body: #FFFFFF;
38
-
39
- /* --- Foregrounds --- */
40
- --color-fg-info: #525252;
41
-
42
- /* --- Text --- */
43
- --color-text-primary: rgba(16, 17, 18, 0.80);
44
- --color-text-secondary: #737373;
45
- --color-text-error: #E53E3E;
46
- --color-text-success: #38A169;
47
-
48
- /* --- Headings --- */
49
- --color-heading: rgba(16, 17, 18, 0.80);
50
-
51
- /* --- Icons --- */
52
- --color-icon-primary: #737373;
53
- --color-icon-secondary: #A3A3A3;
54
-
55
- /* --- Borders --- */
56
- --color-border-divider: rgba(16, 17, 18, 0.06);
57
- --color-border-error: #E53E3E;
58
- --color-border-info: #A3A3A3;
59
-
60
- /* --- Links --- */
61
- --color-link-primary: #404040;
62
- --color-link-primary-hover: #525252;
63
- --color-link-secondary: #737373;
64
- --color-link-subtle: rgba(16, 17, 18, 0.80);
65
- --color-link-subtle-hover: rgba(16, 17, 18, 0.80);
66
- --color-link-menu: rgba(16, 17, 18, 0.80);
67
- --color-link-underlaid-bg: #F5F5F5;
68
- --color-link-nav-fg: rgba(16, 17, 18, 0.80);
69
- --color-link-nav-fg-hover: #525252;
70
- --color-link-nav-fg-selected: #171717;
71
- --color-link-nav-fg-active: #525252;
72
- --color-link-nav-bg-selected: #F5F5F5;
73
-
74
- /* --- Buttons --- */
75
- --color-button-solid-bg: #171717;
76
- --color-button-solid-text: #FFFFFF;
77
- --color-button-outline-fg: #171717;
78
- --color-button-subtle-fg: rgba(16, 17, 18, 0.80);
79
- --color-button-subtle-bg: rgba(16, 17, 18, 0.08);
80
- --color-button-dropdown-fg: rgba(16, 17, 18, 0.80);
81
- --color-button-dropdown-border: #F5F5F5;
82
- --color-button-header-fg: rgba(16, 17, 18, 0.80);
83
- --color-button-header-fg-selected: rgba(16, 17, 18, 0.80);
84
- --color-button-header-fg-highlighted: rgba(16, 17, 18, 0.80);
85
- --color-button-header-border: #F5F5F5;
86
- --color-button-header-bg-selected: rgba(16, 17, 18, 0.04);
87
- --color-button-header-bg-highlighted: #FEEBCB;
88
- --color-button-pagination-fg: rgba(16, 17, 18, 0.80);
89
- --color-button-pagination-border: #F5F5F5;
90
- --color-button-icon-background-bg: #FAFAFA;
91
- --color-button-hero-bg: #171717;
92
- --color-button-hero-fg: #FFFFFF;
93
- --color-button-hero-bg-hover: #525252;
94
- --color-button-hero-fg-hover: #FFFFFF;
95
- --color-button-hero-bg-selected: rgba(255, 255, 255, 0.06);
96
- --color-button-hero-fg-selected: rgba(16, 17, 18, 0.80);
97
- --color-button-segmented-fg: rgba(16, 17, 18, 0.80);
98
- --color-button-icon-bg: rgba(16, 17, 18, 0.04);
99
-
100
- /* --- Hover / Selected --- */
101
- --color-hover: #525252;
102
- --color-selected-control-bg: #F5F5F5;
103
- --color-selected-control-text: #171717;
104
- --color-selected-option-bg: #404040;
105
-
106
- /* --- Navigation --- */
107
- --color-nav-bg-selected: #F5F5F5;
108
- --color-nav-text-selected: #171717;
109
-
110
- /* --- Inputs --- */
111
- --color-input-fg: #262626;
112
- --color-input-bg: #FFFFFF;
113
- --color-input-bg-readonly: #E5E5E5;
114
- --color-input-border: #F5F5F5;
115
- --color-input-border-hover: #E5E5E5;
116
- --color-input-border-focus: #525252;
117
- --color-input-placeholder: #A3A3A3;
118
-
119
- /* --- Tags --- */
120
- --color-tag-subtle-bg: rgba(16, 17, 18, 0.04);
121
- --color-tag-subtle-fg: rgba(16, 17, 18, 0.80);
122
- --color-tag-clickable-bg: #F5F5F5;
123
- --color-tag-clickable-fg: rgba(16, 17, 18, 0.80);
124
- --color-tag-filter-bg: #F5F5F5;
125
- --color-tag-select-bg: #F5F5F5;
126
- --color-tag-select-fg: #737373;
127
- --color-tag-select-selected-bg: #404040;
128
- --color-tag-select-selected-fg: rgba(255, 255, 255, 0.80);
129
-
130
- /* --- Badges --- */
131
- --color-badge-gray-bg: rgba(16, 17, 18, 0.04);
132
- --color-badge-gray-fg: rgba(16, 17, 18, 0.80);
133
- --color-badge-green-bg: #F0FFF4;
134
- --color-badge-green-fg: #38A169;
135
- --color-badge-red-bg: #FFF5F5;
136
- --color-badge-red-fg: #E53E3E;
137
- --color-badge-purple-bg: #F5F5F5;
138
- --color-badge-purple-fg: #525252;
139
- --color-badge-orange-bg: #FFFAF0;
140
- --color-badge-orange-fg: #DD6B20;
141
- --color-badge-blue-bg: #F5F5F5;
142
- --color-badge-blue-fg: #525252;
143
- --color-badge-yellow-bg: #FFFFF0;
144
- --color-badge-yellow-fg: #D69E2E;
145
- --color-badge-teal-bg: #F5F5F5;
146
- --color-badge-teal-fg: #525252;
147
- --color-badge-cyan-bg: #F5F5F5;
148
- --color-badge-cyan-fg: #525252;
149
- --color-badge-pink-bg: #FFF5F7;
150
- --color-badge-pink-fg: #D53F8C;
151
- --color-badge-purple-alt-bg: #F5F5F5;
152
- --color-badge-purple-alt-fg: rgba(16, 17, 18, 0.80);
153
- --color-badge-blue-alt-bg: #F5F5F5;
154
- --color-badge-blue-alt-fg: rgba(16, 17, 18, 0.80);
155
- --color-badge-bright-gray-bg: #F5F5F5;
156
- --color-badge-bright-gray-fg: #525252;
157
- --color-badge-bright-green-bg: #C6F6D5;
158
- --color-badge-bright-green-fg: #25855A;
159
- --color-badge-bright-red-bg: #FED7D7;
160
- --color-badge-bright-red-fg: #C53030;
161
- --color-badge-bright-blue-bg: #E5E5E5;
162
- --color-badge-bright-blue-fg: #404040;
163
- --color-badge-bright-yellow-bg: #FEFCBF;
164
- --color-badge-bright-yellow-fg: #B7791F;
165
- --color-badge-bright-teal-bg: #E5E5E5;
166
- --color-badge-bright-teal-fg: #404040;
167
- --color-badge-bright-cyan-bg: #E5E5E5;
168
- --color-badge-bright-cyan-fg: #404040;
169
- --color-badge-bright-orange-bg: #FEEBCB;
170
- --color-badge-bright-orange-fg: #C05621;
171
- --color-badge-bright-purple-bg: #E5E5E5;
172
- --color-badge-bright-purple-fg: #404040;
173
- --color-badge-bright-pink-bg: #FFF5F7;
174
- --color-badge-bright-pink-fg: #B83280;
175
-
176
- /* --- Alerts --- */
177
- --color-alert-fg: rgba(16, 17, 18, 0.80);
178
- --color-alert-bg-info: rgba(16, 17, 18, 0.04);
179
- --color-alert-bg-warning: #FEEBCB;
180
- --color-alert-bg-warning-table: #FFFAF0;
181
- --color-alert-bg-success: #C6F6D5;
182
- --color-alert-bg-error: #FED7D7;
183
-
184
- /* --- Dialogs / Popovers / Drawers --- */
185
- --color-dialog-bg: #FFFFFF;
186
- --color-dialog-fg: rgba(16, 17, 18, 0.80);
187
- --color-popover-bg: #FFFFFF;
188
- --color-popover-shadow: rgba(16, 17, 18, 0.08);
189
- --color-drawer-bg: #FFFFFF;
190
-
191
- /* --- Tooltip --- */
192
- --color-tooltip-bg: #171717;
193
- --color-tooltip-fg: #FFFFFF;
194
-
195
- /* --- Table --- */
196
- --color-table-header-bg: rgba(16, 17, 18, 0.06);
197
- --color-table-header-fg: rgba(16, 17, 18, 0.64);
198
-
199
- /* --- Tabs --- */
200
- --color-tabs-solid-fg: #171717;
201
- --color-tabs-secondary-fg: rgba(16, 17, 18, 0.80);
202
- --color-tabs-secondary-border: #D4D4D4;
203
-
204
- /* --- Switch --- */
205
- --color-switch-bg: #D4D4D4;
206
-
207
- /* --- Skeleton --- */
208
- --color-skeleton-start: rgba(16, 17, 18, 0.04);
209
- --color-skeleton-end: rgba(16, 17, 18, 0.06);
210
-
211
- /* --- Progress --- */
212
- --color-progress-track: #F5F5F5;
213
-
214
- /* --- Stats / Topbar --- */
215
- --color-stats-bg: #FAFAFA;
216
- --color-topbar-bg: #FAFAFA;
217
-
218
- /* --- Graph --- */
219
- --color-graph-line: #737373;
220
- --color-graph-gradient-start: rgba(163, 163, 163, 0.3);
221
- --color-graph-gradient-stop: rgba(163, 163, 163, 0);
222
-
223
- /* --- Scrollbar --- */
224
- --color-scrollbar-thumb: rgba(16, 17, 18, 0.16);
225
-
226
- /* --- Selection --- */
227
- --color-selection-bg: #E3CFE7;
228
-
229
- /* --- Shadows --- */
230
- --shadow-action-bar: 0 4px 4px -4px rgb(0 0 0 / 10%), 0 2px 4px -4px rgb(0 0 0 / 6%);
231
- --shadow-popover: 0px 15px 50px -12px rgba(0, 0, 0, 0.25);
232
- --shadow-drawer: 0px 4px 6px -2px rgba(0, 0, 0, 0.05), 0px 10px 15px -3px rgba(0, 0, 0, 0.1);
233
- }
234
-
235
- /* ================================================================
236
- DARK MODE
237
- ================================================================ */
238
- .dark {
239
- /* --- Backgrounds --- */
240
- --color-bg-primary: #000000;
241
- --color-bg-info: #171717;
242
- --color-bg-body: #000000;
243
-
244
- /* --- Foregrounds --- */
245
- --color-fg-info: #D4D4D4;
246
-
247
- /* --- Text --- */
248
- --color-text-primary: rgba(255, 255, 255, 0.80);
249
- --color-text-secondary: #A3A3A3;
250
- --color-text-error: #E53E3E;
251
- --color-text-success: #9AE6B4;
252
-
253
- /* --- Headings --- */
254
- --color-heading: rgba(255, 255, 255, 0.80);
255
-
256
- /* --- Icons --- */
257
- --color-icon-primary: #A3A3A3;
258
- --color-icon-secondary: #737373;
259
-
260
- /* --- Borders --- */
261
- --color-border-divider: rgba(255, 255, 255, 0.06);
262
- --color-border-error: #E53E3E;
263
- --color-border-info: #737373;
264
-
265
- /* --- Links --- */
266
- --color-link-primary: rgba(255, 255, 255, 0.64);
267
- --color-link-primary-hover: rgba(255, 255, 255, 0.64);
268
- --color-link-secondary: #A3A3A3;
269
- --color-link-subtle: #A3A3A3;
270
- --color-link-subtle-hover: #A3A3A3;
271
- --color-link-menu: rgba(255, 255, 255, 0.80);
272
- --color-link-underlaid-bg: #262626;
273
- --color-link-nav-fg: rgba(255, 255, 255, 0.80);
274
- --color-link-nav-fg-hover: rgba(255, 255, 255, 0.64);
275
- --color-link-nav-fg-selected: #FAFAFA;
276
- --color-link-nav-fg-active: rgba(255, 255, 255, 0.64);
277
- --color-link-nav-bg-selected: rgba(255, 255, 255, 0.06);
278
-
279
- /* --- Buttons --- */
280
- --color-button-solid-bg: rgba(255, 255, 255, 0.92);
281
- --color-button-solid-text: #000000;
282
- --color-button-outline-fg: rgba(255, 255, 255, 0.92);
283
- --color-button-subtle-fg: rgba(255, 255, 255, 0.80);
284
- --color-button-subtle-bg: rgba(255, 255, 255, 0.08);
285
- --color-button-dropdown-fg: rgba(255, 255, 255, 0.80);
286
- --color-button-dropdown-border: #525252;
287
- --color-button-header-fg: #A3A3A3;
288
- --color-button-header-fg-selected: rgba(255, 255, 255, 0.80);
289
- --color-button-header-fg-highlighted: rgba(255, 255, 255, 0.80);
290
- --color-button-header-border: #525252;
291
- --color-button-header-bg-selected: rgba(255, 255, 255, 0.06);
292
- --color-button-header-bg-highlighted: #7B341E;
293
- --color-button-pagination-fg: #FAFAFA;
294
- --color-button-pagination-border: rgba(255, 255, 255, 0.06);
295
- --color-button-icon-background-bg: rgba(255, 255, 255, 0.04);
296
- --color-button-hero-bg: rgba(255, 255, 255, 0.92);
297
- --color-button-hero-fg: #FFFFFF;
298
- --color-button-hero-bg-hover: rgba(255, 255, 255, 0.64);
299
- --color-button-hero-fg-hover: #FFFFFF;
300
- --color-button-hero-bg-selected: rgba(255, 255, 255, 0.06);
301
- --color-button-hero-fg-selected: rgba(16, 17, 18, 0.80);
302
- --color-button-segmented-fg: rgba(255, 255, 255, 0.80);
303
- --color-button-icon-bg: rgba(255, 255, 255, 0.04);
304
-
305
- /* --- Hover / Selected --- */
306
- --color-hover: rgba(255, 255, 255, 0.64);
307
- --color-selected-control-bg: rgba(255, 255, 255, 0.06);
308
- --color-selected-control-text: #FAFAFA;
309
- --color-selected-option-bg: rgba(255, 255, 255, 0.16);
310
-
311
- /* --- Navigation --- */
312
- --color-nav-bg-selected: rgba(255, 255, 255, 0.06);
313
- --color-nav-text-selected: #FAFAFA;
314
-
315
- /* --- Inputs --- */
316
- --color-input-fg: #FAFAFA;
317
- --color-input-bg: #000000;
318
- --color-input-bg-readonly: #262626;
319
- --color-input-border: #525252;
320
- --color-input-border-hover: #737373;
321
- --color-input-border-focus: rgba(255, 255, 255, 0.64);
322
- --color-input-placeholder: #737373;
323
-
324
- /* --- Tags --- */
325
- --color-tag-subtle-bg: rgba(255, 255, 255, 0.06);
326
- --color-tag-subtle-fg: rgba(255, 255, 255, 0.80);
327
- --color-tag-clickable-bg: #262626;
328
- --color-tag-clickable-fg: rgba(255, 255, 255, 0.80);
329
- --color-tag-filter-bg: rgba(255, 255, 255, 0.08);
330
- --color-tag-select-bg: #262626;
331
- --color-tag-select-fg: rgba(255, 255, 255, 0.80);
332
- --color-tag-select-selected-bg: rgba(255, 255, 255, 0.16);
333
- --color-tag-select-selected-fg: rgba(255, 255, 255, 0.80);
334
-
335
- /* --- Badges --- */
336
- --color-badge-gray-bg: rgba(255, 255, 255, 0.06);
337
- --color-badge-gray-fg: rgba(255, 255, 255, 0.80);
338
- --color-badge-green-bg: #22543D;
339
- --color-badge-green-fg: #9AE6B4;
340
- --color-badge-red-bg: #822727;
341
- --color-badge-red-fg: #FEB2B2;
342
- --color-badge-purple-bg: #262626;
343
- --color-badge-purple-fg: #D4D4D4;
344
- --color-badge-orange-bg: #7B341E;
345
- --color-badge-orange-fg: #FEEBCB;
346
- --color-badge-blue-bg: #262626;
347
- --color-badge-blue-fg: #D4D4D4;
348
- --color-badge-yellow-bg: #744210;
349
- --color-badge-yellow-fg: #FEFCBF;
350
- --color-badge-teal-bg: #262626;
351
- --color-badge-teal-fg: #D4D4D4;
352
- --color-badge-cyan-bg: #262626;
353
- --color-badge-cyan-fg: #D4D4D4;
354
- --color-badge-pink-bg: #702459;
355
- --color-badge-pink-fg: #FED7E2;
356
- --color-badge-purple-alt-bg: #262626;
357
- --color-badge-purple-alt-fg: rgba(255, 255, 255, 0.80);
358
- --color-badge-blue-alt-bg: #262626;
359
- --color-badge-blue-alt-fg: rgba(255, 255, 255, 0.80);
360
- --color-badge-bright-gray-bg: #262626;
361
- --color-badge-bright-gray-fg: #E5E5E5;
362
- --color-badge-bright-green-bg: #22543D;
363
- --color-badge-bright-green-fg: #9AE6B4;
364
- --color-badge-bright-red-bg: #822727;
365
- --color-badge-bright-red-fg: #FEB2B2;
366
- --color-badge-bright-blue-bg: #404040;
367
- --color-badge-bright-blue-fg: #E5E5E5;
368
- --color-badge-bright-yellow-bg: #744210;
369
- --color-badge-bright-yellow-fg: #FAF089;
370
- --color-badge-bright-teal-bg: #404040;
371
- --color-badge-bright-teal-fg: #E5E5E5;
372
- --color-badge-bright-cyan-bg: #404040;
373
- --color-badge-bright-cyan-fg: #E5E5E5;
374
- --color-badge-bright-orange-bg: #C05621;
375
- --color-badge-bright-orange-fg: #FEEBCB;
376
- --color-badge-bright-purple-bg: #404040;
377
- --color-badge-bright-purple-fg: #E5E5E5;
378
- --color-badge-bright-pink-bg: #B83280;
379
- --color-badge-bright-pink-fg: #FFF5F7;
380
-
381
- /* --- Alerts --- */
382
- --color-alert-fg: rgba(255, 255, 255, 0.80);
383
- --color-alert-bg-info: rgba(255, 255, 255, 0.06);
384
- --color-alert-bg-warning: rgba(124, 67, 16, 0.44);
385
- --color-alert-bg-warning-table: rgba(123, 52, 30, 0.44);
386
- --color-alert-bg-success: #1C4532;
387
- --color-alert-bg-error: #63171B;
388
-
389
- /* --- Dialogs / Popovers / Drawers --- */
390
- --color-dialog-bg: #171717;
391
- --color-dialog-fg: rgba(255, 255, 255, 0.80);
392
- --color-popover-bg: #171717;
393
- --color-popover-shadow: rgba(255, 255, 255, 0.16);
394
- --color-drawer-bg: #171717;
395
-
396
- /* --- Tooltip --- */
397
- --color-tooltip-bg: #171717;
398
- --color-tooltip-fg: #FFFFFF;
399
-
400
- /* --- Table --- */
401
- --color-table-header-bg: rgba(255, 255, 255, 0.08);
402
- --color-table-header-fg: rgba(255, 255, 255, 0.64);
403
-
404
- /* --- Tabs --- */
405
- --color-tabs-solid-fg: rgba(255, 255, 255, 0.80);
406
- --color-tabs-secondary-fg: rgba(255, 255, 255, 0.80);
407
- --color-tabs-secondary-border: #525252;
408
-
409
- /* --- Switch --- */
410
- --color-switch-bg: rgba(255, 255, 255, 0.24);
411
-
412
- /* --- Skeleton --- */
413
- --color-skeleton-start: rgba(255, 255, 255, 0.04);
414
- --color-skeleton-end: rgba(255, 255, 255, 0.06);
415
-
416
- /* --- Progress --- */
417
- --color-progress-track: rgba(255, 255, 255, 0.06);
418
-
419
- /* --- Stats / Topbar --- */
420
- --color-stats-bg: rgba(255, 255, 255, 0.04);
421
- --color-topbar-bg: rgba(255, 255, 255, 0.04);
422
-
423
- /* --- Graph --- */
424
- --color-graph-line: rgba(255, 255, 255, 0.48);
425
- --color-graph-gradient-start: rgba(255, 255, 255, 0.15);
426
- --color-graph-gradient-stop: rgba(255, 255, 255, 0);
427
-
428
- /* --- Scrollbar --- */
429
- --color-scrollbar-thumb: rgba(255, 255, 255, 0.16);
430
-
431
- /* --- Selection --- */
432
- --color-selection-bg: #754B7D;
433
-
434
- /* --- Shadows --- */
435
- --shadow-action-bar: 0 4px 4px -4px rgb(0 0 0 / 10%), 0 2px 4px -4px rgb(0 0 0 / 6%);
436
- --shadow-popover: 0px 15px 40px 0px rgba(0, 0, 0, 0.4), 0px 5px 10px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
437
- --shadow-drawer: 0px 15px 40px 0px rgba(0, 0, 0, 0.4), 0px 5px 10px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 1px rgba(0, 0, 0, 0.1);
438
- }
package/src/tooltip.tsx DELETED
@@ -1,184 +0,0 @@
1
- import * as RadixTooltip from '@radix-ui/react-tooltip';
2
- import { useClickAway } from '@uidotdev/usehooks';
3
- import * as React from 'react';
4
-
5
- import { cn } from './utils';
6
-
7
- // Inline useIsMobile hook (matches lg breakpoint = 1024px)
8
- const LG_BREAKPOINT = 1024;
9
-
10
- function useIsMobile(): boolean {
11
- const [ isMobile, setIsMobile ] = React.useState(() => {
12
- if (typeof window === 'undefined') return false;
13
- return window.innerWidth < LG_BREAKPOINT;
14
- });
15
-
16
- React.useEffect(() => {
17
- const mql = window.matchMedia(`(max-width: ${ LG_BREAKPOINT - 1 }px)`);
18
- const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);
19
- setIsMobile(mql.matches);
20
- mql.addEventListener('change', handler);
21
- return () => mql.removeEventListener('change', handler);
22
- }, []);
23
-
24
- return isMobile;
25
- }
26
-
27
- export interface TooltipProps {
28
- selected?: boolean;
29
- showArrow?: boolean;
30
- portalled?: boolean;
31
- portalRef?: React.RefObject<HTMLElement>;
32
- content: React.ReactNode;
33
- contentProps?: React.ComponentPropsWithoutRef<typeof RadixTooltip.Content>;
34
- triggerProps?: React.ComponentPropsWithoutRef<typeof RadixTooltip.Trigger>;
35
- disabled?: boolean;
36
- disableOnMobile?: boolean;
37
- children?: React.ReactNode;
38
- variant?: string;
39
- open?: boolean;
40
- defaultOpen?: boolean;
41
- onOpenChange?: (details: { open: boolean }) => void;
42
- closeDelay?: number;
43
- openDelay?: number;
44
- interactive?: boolean;
45
- lazyMount?: boolean;
46
- unmountOnExit?: boolean;
47
- positioning?: {
48
- placement?: 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';
49
- overflowPadding?: number;
50
- offset?: { mainAxis?: number; crossAxis?: number };
51
- };
52
- closeOnClick?: boolean;
53
- closeOnPointerDown?: boolean;
54
- }
55
-
56
- export const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(
57
- function Tooltip(props, ref) {
58
- const {
59
- showArrow: showArrowProp,
60
- onOpenChange,
61
- variant,
62
- selected,
63
- children,
64
- disabled,
65
- disableOnMobile,
66
- portalled = true,
67
- content,
68
- contentProps,
69
- portalRef,
70
- defaultOpen = false,
71
- triggerProps,
72
- closeDelay = 100,
73
- openDelay = 100,
74
- interactive,
75
- positioning,
76
- } = props;
77
-
78
- const [ open, setOpen ] = React.useState<boolean>(defaultOpen);
79
- const timeoutRef = React.useRef<number | null>(null);
80
-
81
- const isMobile = useIsMobile();
82
-
83
- const handleOpenChange = React.useCallback((nextOpen: boolean) => {
84
- setOpen(nextOpen);
85
- onOpenChange?.({ open: nextOpen });
86
- }, [ onOpenChange ]);
87
-
88
- const handleOpenChangeManual = React.useCallback((nextOpen: boolean) => {
89
- timeoutRef.current && window.clearTimeout(timeoutRef.current);
90
- timeoutRef.current = window.setTimeout(() => {
91
- setOpen(nextOpen);
92
- onOpenChange?.({ open: nextOpen });
93
- }, nextOpen ? openDelay : closeDelay);
94
- }, [ closeDelay, openDelay, onOpenChange ]);
95
-
96
- const handleClickAway = React.useCallback(() => {
97
- handleOpenChangeManual(false);
98
- }, [ handleOpenChangeManual ]);
99
-
100
- const triggerRef = useClickAway<HTMLButtonElement>(handleClickAway);
101
-
102
- const handleTriggerClick = React.useCallback(() => {
103
- handleOpenChangeManual(!open);
104
- }, [ handleOpenChangeManual, open ]);
105
-
106
- const handleContentClick = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {
107
- event.stopPropagation();
108
-
109
- if (interactive) {
110
- const closestLink = (event.target as HTMLElement)?.closest('a');
111
- if (closestLink) {
112
- handleOpenChangeManual(false);
113
- }
114
- }
115
- }, [ interactive, handleOpenChangeManual ]);
116
-
117
- React.useEffect(() => {
118
- return () => {
119
- if (timeoutRef.current) {
120
- clearTimeout(timeoutRef.current);
121
- }
122
- };
123
- }, []);
124
-
125
- if (disabled || (disableOnMobile && isMobile)) return children;
126
-
127
- const defaultShowArrow = variant === 'popover' ? false : true;
128
- const showArrow = showArrowProp !== undefined ? showArrowProp : defaultShowArrow;
129
-
130
- const placement = positioning?.placement ?? 'top';
131
- const side = placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right';
132
- const align = placement.includes('-') ? (placement.split('-')[1] as 'start' | 'end') : undefined;
133
- const sideOffset = positioning?.offset?.mainAxis ?? 4;
134
-
135
- const isPopover = variant === 'popover';
136
-
137
- return (
138
- <RadixTooltip.Provider delayDuration={ openDelay } skipDelayDuration={ 0 }>
139
- <RadixTooltip.Root
140
- open={ open }
141
- onOpenChange={ handleOpenChange }
142
- delayDuration={ openDelay }
143
- >
144
- <RadixTooltip.Trigger
145
- ref={ open ? triggerRef : undefined }
146
- asChild
147
- onClick={ isMobile ? handleTriggerClick : undefined }
148
- { ...triggerProps }
149
- >
150
- { children }
151
- </RadixTooltip.Trigger>
152
- <RadixTooltip.Portal container={ portalled ? (portalRef?.current ?? undefined) : undefined }>
153
- <RadixTooltip.Content
154
- ref={ ref }
155
- side={ side }
156
- align={ align }
157
- sideOffset={ sideOffset }
158
- onClick={ interactive ? handleContentClick : undefined }
159
- className={ cn(
160
- 'z-[9999] overflow-hidden rounded-lg px-3 py-2 text-sm',
161
- 'animate-in fade-in-0 zoom-in-95',
162
- isPopover && 'bg-[var(--color-popover-bg)] text-[var(--color-text-primary)]',
163
- isPopover && 'shadow-[var(--shadow-popover)] border border-[var(--color-border-divider)] max-w-sm',
164
- !isPopover && 'bg-[var(--color-tooltip-bg)] text-[var(--color-tooltip-fg)] max-w-xs',
165
- contentProps?.className,
166
- ) }
167
- { ...(selected ? { 'data-selected': true } : {}) }
168
- { ...contentProps }
169
- >
170
- { showArrow && (
171
- <RadixTooltip.Arrow
172
- className={ cn(
173
- isPopover ? 'fill-[var(--color-popover-bg)]' : 'fill-[var(--color-tooltip-bg)]',
174
- ) }
175
- />
176
- ) }
177
- { content }
178
- </RadixTooltip.Content>
179
- </RadixTooltip.Portal>
180
- </RadixTooltip.Root>
181
- </RadixTooltip.Provider>
182
- );
183
- },
184
- );
package/src/utils/cn.ts DELETED
@@ -1,7 +0,0 @@
1
- import type { ClassValue } from 'clsx';
2
- import { clsx } from 'clsx';
3
- import { twMerge } from 'tailwind-merge';
4
-
5
- export function cn(...inputs: Array<ClassValue>): string {
6
- return twMerge(clsx(inputs));
7
- }
package/src/utils.ts DELETED
@@ -1,6 +0,0 @@
1
- import { type ClassValue, clsx } from 'clsx';
2
- import { twMerge } from 'tailwind-merge';
3
-
4
- export function cn(...inputs: ClassValue[]): string {
5
- return twMerge(clsx(inputs));
6
- }