@luxfi/ui 6.1.3 → 7.0.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 (241) hide show
  1. package/dist/accordion.cjs +213 -0
  2. package/dist/accordion.d.cts +74 -0
  3. package/dist/accordion.d.ts +74 -0
  4. package/dist/accordion.js +186 -0
  5. package/dist/alert.cjs +553 -0
  6. package/dist/alert.d.cts +30 -0
  7. package/dist/alert.d.ts +30 -0
  8. package/dist/alert.js +531 -0
  9. package/dist/avatar.cjs +149 -0
  10. package/dist/avatar.d.cts +25 -0
  11. package/dist/avatar.d.ts +25 -0
  12. package/dist/avatar.js +125 -0
  13. package/dist/badge.cjs +611 -0
  14. package/dist/badge.d.cts +23 -0
  15. package/dist/badge.d.ts +23 -0
  16. package/dist/badge.js +589 -0
  17. package/dist/bank.cjs +272 -0
  18. package/dist/bank.d.cts +76 -0
  19. package/dist/bank.d.ts +76 -0
  20. package/dist/bank.js +258 -0
  21. package/dist/button.cjs +689 -0
  22. package/dist/button.d.cts +52 -0
  23. package/dist/button.d.ts +52 -0
  24. package/dist/button.js +664 -0
  25. package/dist/checkbox.cjs +265 -0
  26. package/dist/checkbox.d.cts +31 -0
  27. package/dist/checkbox.d.ts +31 -0
  28. package/dist/checkbox.js +241 -0
  29. package/dist/close-button.cjs +73 -0
  30. package/dist/close-button.d.cts +9 -0
  31. package/dist/close-button.d.ts +9 -0
  32. package/dist/close-button.js +51 -0
  33. package/dist/collapsible.cjs +702 -0
  34. package/dist/collapsible.d.cts +23 -0
  35. package/dist/collapsible.d.ts +23 -0
  36. package/dist/collapsible.js +679 -0
  37. package/dist/color-mode.cjs +96 -0
  38. package/dist/color-mode.d.cts +25 -0
  39. package/dist/color-mode.d.ts +25 -0
  40. package/dist/color-mode.js +72 -0
  41. package/dist/dialog.cjs +279 -0
  42. package/dist/dialog.d.cts +66 -0
  43. package/dist/dialog.d.ts +66 -0
  44. package/dist/dialog.js +246 -0
  45. package/dist/drawer.cjs +207 -0
  46. package/dist/drawer.d.cts +36 -0
  47. package/dist/drawer.d.ts +36 -0
  48. package/dist/drawer.js +175 -0
  49. package/dist/empty-state.cjs +93 -0
  50. package/dist/empty-state.d.cts +13 -0
  51. package/dist/empty-state.d.ts +13 -0
  52. package/dist/empty-state.js +71 -0
  53. package/dist/expiration-selector.cjs +138 -0
  54. package/dist/expiration-selector.d.cts +16 -0
  55. package/dist/expiration-selector.d.ts +16 -0
  56. package/dist/expiration-selector.js +116 -0
  57. package/dist/field.cjs +183 -0
  58. package/dist/field.d.cts +24 -0
  59. package/dist/field.d.ts +24 -0
  60. package/dist/field.js +160 -0
  61. package/dist/greeks-display.cjs +114 -0
  62. package/dist/greeks-display.d.cts +14 -0
  63. package/dist/greeks-display.d.ts +14 -0
  64. package/dist/greeks-display.js +92 -0
  65. package/dist/heading.cjs +46 -0
  66. package/dist/heading.d.cts +10 -0
  67. package/dist/heading.d.ts +10 -0
  68. package/dist/heading.js +40 -0
  69. package/dist/icon-button.cjs +491 -0
  70. package/dist/icon-button.d.cts +33 -0
  71. package/dist/icon-button.d.ts +33 -0
  72. package/dist/icon-button.js +470 -0
  73. package/dist/image.cjs +572 -0
  74. package/dist/image.d.cts +57 -0
  75. package/dist/image.d.ts +57 -0
  76. package/dist/image.js +551 -0
  77. package/dist/index.cjs +7316 -0
  78. package/dist/index.d.cts +58 -0
  79. package/dist/index.d.ts +58 -0
  80. package/dist/index.js +7137 -0
  81. package/dist/input-group.cjs +155 -0
  82. package/dist/input-group.d.cts +17 -0
  83. package/dist/input-group.d.ts +17 -0
  84. package/dist/input-group.js +133 -0
  85. package/dist/input.cjs +65 -0
  86. package/dist/input.d.cts +11 -0
  87. package/dist/input.d.ts +11 -0
  88. package/dist/input.js +59 -0
  89. package/dist/link.cjs +630 -0
  90. package/dist/link.d.cts +37 -0
  91. package/dist/link.d.ts +37 -0
  92. package/dist/link.js +606 -0
  93. package/dist/menu.cjs +305 -0
  94. package/dist/menu.d.cts +84 -0
  95. package/dist/menu.d.ts +84 -0
  96. package/dist/menu.js +269 -0
  97. package/dist/option-chain.cjs +221 -0
  98. package/dist/option-chain.d.cts +37 -0
  99. package/dist/option-chain.d.ts +37 -0
  100. package/dist/option-chain.js +199 -0
  101. package/dist/option-position.cjs +164 -0
  102. package/dist/option-position.d.cts +29 -0
  103. package/dist/option-position.d.ts +29 -0
  104. package/dist/option-position.js +142 -0
  105. package/dist/pin-input.cjs +182 -0
  106. package/dist/pin-input.d.cts +25 -0
  107. package/dist/pin-input.d.ts +25 -0
  108. package/dist/pin-input.js +160 -0
  109. package/dist/pnl-diagram.cjs +453 -0
  110. package/dist/pnl-diagram.d.cts +11 -0
  111. package/dist/pnl-diagram.d.ts +11 -0
  112. package/dist/pnl-diagram.js +431 -0
  113. package/dist/popover.cjs +327 -0
  114. package/dist/popover.d.cts +73 -0
  115. package/dist/popover.d.ts +73 -0
  116. package/dist/popover.js +294 -0
  117. package/dist/progress-circle.cjs +152 -0
  118. package/dist/progress-circle.d.cts +47 -0
  119. package/dist/progress-circle.d.ts +47 -0
  120. package/dist/progress-circle.js +128 -0
  121. package/dist/progress.cjs +117 -0
  122. package/dist/progress.d.cts +28 -0
  123. package/dist/progress.d.ts +28 -0
  124. package/dist/progress.js +94 -0
  125. package/dist/provider.cjs +62 -0
  126. package/dist/provider.d.cts +7 -0
  127. package/dist/provider.d.ts +7 -0
  128. package/dist/provider.js +40 -0
  129. package/dist/radio.cjs +177 -0
  130. package/dist/radio.d.cts +53 -0
  131. package/dist/radio.d.ts +53 -0
  132. package/dist/radio.js +153 -0
  133. package/dist/rating.cjs +80 -0
  134. package/dist/rating.d.cts +14 -0
  135. package/dist/rating.d.ts +14 -0
  136. package/dist/rating.js +58 -0
  137. package/dist/select.cjs +791 -0
  138. package/dist/select.d.cts +130 -0
  139. package/dist/select.d.ts +130 -0
  140. package/dist/select.js +757 -0
  141. package/dist/separator.cjs +57 -0
  142. package/dist/separator.d.cts +13 -0
  143. package/dist/separator.d.ts +13 -0
  144. package/dist/separator.js +51 -0
  145. package/dist/skeleton.cjs +370 -0
  146. package/dist/skeleton.d.cts +60 -0
  147. package/dist/skeleton.d.ts +60 -0
  148. package/dist/skeleton.js +346 -0
  149. package/dist/slider.cjs +138 -0
  150. package/dist/slider.d.cts +24 -0
  151. package/dist/slider.d.ts +24 -0
  152. package/dist/slider.js +115 -0
  153. package/dist/strategy-builder.cjs +373 -0
  154. package/dist/strategy-builder.d.cts +26 -0
  155. package/dist/strategy-builder.d.ts +26 -0
  156. package/dist/strategy-builder.js +351 -0
  157. package/dist/switch.cjs +163 -0
  158. package/dist/switch.d.cts +27 -0
  159. package/dist/switch.d.ts +27 -0
  160. package/dist/switch.js +140 -0
  161. package/dist/table.cjs +1044 -0
  162. package/dist/table.d.cts +107 -0
  163. package/dist/table.d.ts +107 -0
  164. package/dist/table.js +1013 -0
  165. package/dist/tabs.cjs +240 -0
  166. package/dist/tabs.d.cts +78 -0
  167. package/dist/tabs.d.ts +78 -0
  168. package/dist/tabs.js +213 -0
  169. package/dist/tag.cjs +651 -0
  170. package/dist/tag.d.cts +21 -0
  171. package/dist/tag.d.ts +21 -0
  172. package/dist/tag.js +628 -0
  173. package/dist/textarea.cjs +65 -0
  174. package/dist/textarea.d.cts +11 -0
  175. package/dist/textarea.d.ts +11 -0
  176. package/dist/textarea.js +59 -0
  177. package/dist/toaster.cjs +99 -0
  178. package/dist/toaster.d.cts +29 -0
  179. package/dist/toaster.d.ts +29 -0
  180. package/dist/toaster.js +96 -0
  181. package/dist/tooltip.cjs +171 -0
  182. package/dist/tooltip.d.cts +39 -0
  183. package/dist/tooltip.d.ts +39 -0
  184. package/dist/tooltip.js +148 -0
  185. package/dist/utils.cjs +11 -0
  186. package/dist/utils.d.cts +5 -0
  187. package/dist/utils.d.ts +5 -0
  188. package/dist/utils.js +9 -0
  189. package/package.json +283 -90
  190. package/src/accordion.tsx +285 -0
  191. package/src/alert.tsx +221 -0
  192. package/src/avatar.tsx +174 -0
  193. package/src/badge.tsx +158 -0
  194. package/src/bank.tsx +325 -0
  195. package/src/button.tsx +411 -0
  196. package/src/checkbox.tsx +307 -0
  197. package/src/close-button.tsx +51 -0
  198. package/src/collapsible.tsx +126 -0
  199. package/src/color-mode.tsx +125 -0
  200. package/src/dialog.tsx +356 -0
  201. package/src/drawer.tsx +186 -0
  202. package/src/empty-state.tsx +97 -0
  203. package/src/expiration-selector.tsx +163 -0
  204. package/src/field.tsx +202 -0
  205. package/src/greeks-display.tsx +138 -0
  206. package/src/heading.tsx +55 -0
  207. package/src/icon-button.tsx +192 -0
  208. package/src/image.tsx +280 -0
  209. package/src/index.ts +267 -138
  210. package/src/input-group.tsx +159 -0
  211. package/src/input.tsx +60 -0
  212. package/src/link.tsx +326 -0
  213. package/src/menu.tsx +471 -0
  214. package/src/option-chain.tsx +261 -0
  215. package/src/option-position.tsx +200 -0
  216. package/src/pin-input.tsx +187 -0
  217. package/src/pnl-diagram.tsx +458 -0
  218. package/src/popover.tsx +400 -0
  219. package/src/progress-circle.tsx +180 -0
  220. package/src/progress.tsx +109 -0
  221. package/src/provider.tsx +12 -0
  222. package/src/radio.tsx +175 -0
  223. package/src/rating.tsx +79 -0
  224. package/src/select.tsx +696 -0
  225. package/src/separator.tsx +59 -0
  226. package/src/skeleton.tsx +302 -0
  227. package/src/slider.tsx +152 -0
  228. package/src/strategy-builder.tsx +466 -0
  229. package/src/switch.tsx +158 -0
  230. package/src/table.tsx +621 -0
  231. package/src/tabs.tsx +354 -0
  232. package/src/tag.tsx +159 -0
  233. package/src/textarea.tsx +60 -0
  234. package/src/toaster.tsx +117 -0
  235. package/src/tokens.css +438 -0
  236. package/src/tooltip.tsx +184 -0
  237. package/src/utils/cn.ts +7 -0
  238. package/src/utils.ts +6 -0
  239. package/tokens.css +438 -0
  240. package/LICENSE +0 -122
  241. package/README.md +0 -109
package/tokens.css ADDED
@@ -0,0 +1,438 @@
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/LICENSE DELETED
@@ -1,122 +0,0 @@
1
- Lux Ecosystem License
2
- Version 1.2, December 2025
3
-
4
- Copyright (c) 2020-2025 Lux Industries Inc.
5
- All rights reserved.
6
-
7
- TECHNOLOGY PORTFOLIO - PATENT APPLICATIONS PLANNED
8
- Contact: licensing@lux.network
9
-
10
- ================================================================================
11
- TERMS AND CONDITIONS
12
- ================================================================================
13
-
14
- 1. DEFINITIONS
15
-
16
- "Lux Primary Network" means the official Lux blockchain with Network ID=1
17
- and EVM Chain ID=96369.
18
-
19
- "Authorized Network" means the Lux Primary Network, official testnets/devnets,
20
- and any L1/L2/L3 chain descending from the Lux Primary Network.
21
-
22
- "Descending Chain" means an L1/L2/L3 chain built on, anchored to, or deriving
23
- security from the Lux Primary Network or its authorized testnets.
24
-
25
- "Research Use" means non-commercial academic research, education, personal
26
- study, or evaluation purposes.
27
-
28
- "Commercial Use" means any use in connection with a product or service
29
- offered for sale or fee, internal use by a for-profit entity, or any use
30
- to generate revenue.
31
-
32
- 2. GRANT OF LICENSE
33
-
34
- Subject to these terms, Lux Industries Inc grants you a non-exclusive,
35
- royalty-free license to:
36
-
37
- (a) Use for Research Use without restriction;
38
-
39
- (b) Operate on the Lux Primary Network (Network ID=1, EVM Chain ID=96369);
40
-
41
- (c) Operate on official Lux testnets and devnets;
42
-
43
- (d) Operate L1/L2/L3 chains descending from the Lux Primary Network;
44
-
45
- (e) Build applications within the Lux ecosystem;
46
-
47
- (f) Contribute improvements back to the original repositories.
48
-
49
- 3. RESTRICTIONS
50
-
51
- Without a commercial license from Lux Industries Inc, you may NOT:
52
-
53
- (a) Fork the Lux Network or any Lux software;
54
-
55
- (b) Create competing networks not descending from Lux Primary Network;
56
-
57
- (c) Use for Commercial Use outside the Lux ecosystem;
58
-
59
- (d) Sublicense or transfer rights outside the Lux ecosystem;
60
-
61
- (e) Use to create competing blockchain networks, exchanges, custody
62
- services, or cryptographic systems outside the Lux ecosystem.
63
-
64
- 4. NO FORKS POLICY
65
-
66
- Lux Industries Inc maintains ZERO TOLERANCE for unauthorized forks.
67
- Any fork or deployment on an unauthorized network constitutes:
68
-
69
- (a) Breach of this license;
70
- (b) Grounds for immediate legal action.
71
-
72
- 5. RIGHTS RESERVATION
73
-
74
- All rights not explicitly granted are reserved by Lux Industries Inc.
75
-
76
- We plan to apply for patent protection for the technology in this
77
- repository. Any implementation outside the Lux ecosystem may require
78
- a separate commercial license.
79
-
80
- 6. DISCLAIMER OF WARRANTY
81
-
82
- THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
83
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
84
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
85
-
86
- 7. LIMITATION OF LIABILITY
87
-
88
- IN NO EVENT SHALL LUX INDUSTRIES INC BE LIABLE FOR ANY CLAIM, DAMAGES
89
- OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
90
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE.
91
-
92
- 8. TERMINATION
93
-
94
- This license terminates immediately upon any breach, including but not
95
- limited to deployment on unauthorized networks or creation of forks.
96
-
97
- 9. GOVERNING LAW
98
-
99
- This License shall be governed by the laws of the State of Delaware.
100
-
101
- 10. COMMERCIAL LICENSING
102
-
103
- For commercial use outside the Lux ecosystem:
104
-
105
- Lux Industries Inc.
106
- Email: licensing@lux.network
107
- Subject: Commercial License Request
108
-
109
- ================================================================================
110
- TL;DR
111
- ================================================================================
112
-
113
- - Research/academic use = OK
114
- - Lux Primary Network (Network ID=1, Chain ID=96369) = OK
115
- - L1/L2/L3 chains descending from Lux Primary Network = OK
116
- - Commercial products outside Lux ecosystem = Contact licensing@lux.network
117
- - Forks = Absolutely not
118
-
119
- ================================================================================
120
-
121
- See LP-0012 for full licensing documentation:
122
- https://github.com/luxfi/lps/blob/main/LPs/lp-0012-ecosystem-licensing.md
package/README.md DELETED
@@ -1,109 +0,0 @@
1
- # `ui` Package
2
-
3
- This package holds a component library and themes that can be used across all apps.
4
-
5
- ## UI Package Philosophy
6
-
7
- The `ui` package contains all low level components that are shared between apps. It should *not* contain components that are specific to any one app or Uniswap business logic. Each component should be guided by the following principles:
8
-
9
- - All components should be compatible with all platforms.
10
- - Wrap as many implementation details as possible, including any direct exports from Tamagui.
11
- - Export only what’s needed from `ui/src` or another allowlisted path.
12
- - Only include components that will be used beyond a single feature.
13
-
14
- Components that are shared between all applications but encode Uniswap business logic should most likely be placed in the `uniswap` package!
15
-
16
- ## Icons and Logos
17
-
18
- Icons and logos are placed in `ui/src/components/{icons|logos}`. These files are generated from placing the file in `packages/ui/src/assets/icons` or `packages/ui/src/assets/logos/svg` and running the generate command(s):
19
-
20
- ```bash
21
- # Generate all icons
22
- bun ui build:icons
23
- # Generate any icons that do not yet have an existing TS file
24
- bun ui build:icons:missing
25
- ```
26
-
27
- When adding an SVG, please ensure you replace color references as needed with `currentColor` to ensure the asset respects the color property when used.
28
-
29
- Custom icons that take props can be added to the same icons import by adding the file in `packages/ui/src/components/icons/index.ts`.
30
-
31
- ## Core Components
32
-
33
- Many base components are available in the UI library. While some are customized `tamagui` elements or even fully custom elements, many are simple or direct exposure of `tamagui` elements. If you would like to use any `tamagui` elements, please add them through this library to ensure a layer of abstraction between tamagui and our usage when possible.
34
-
35
- Below are summaries of the most commonly used elements.
36
-
37
- ### Flex
38
-
39
- The `Flex` component is the core organizational element of the UI library, acting as a base of a flexbox styling approach. Shortcuts are available for `row`, `grow`, `shrink`, `fill`, and `centered`. All other styling props can be added directly as needed.
40
-
41
- ### Text
42
-
43
- The `Text` element is the core element for displaying text through the app. The `variant` prop takes in the text variant from our design system (e.g `heading1`, `body2`, etc.) that is desired. All other text styling props can be added directly as needed.
44
-
45
- ## Theme and Platform
46
-
47
- ### Theming
48
-
49
- Theming is applied through two primary methods:
50
-
51
- 1. Any components that take in design systems values (e.g `heading1`, `body2`, etc.) will automatically respect the theme.
52
- 2. In all other cases, `useSporeColors` will return the current theme colors to be used in any component.
53
-
54
- To force a specific theme usage, the `Theme` wrapper will ensure other theme elements pick up the specific theme.
55
-
56
- ```javascript
57
- <Theme name="dark">
58
- ...
59
- </Theme>
60
- ```
61
-
62
- ### Screen Size Differences
63
-
64
- All breakpoints for both vertical and horizontal sizing have been defined in `packages/ui/src/theme/breakpoints.ts`.
65
-
66
- To account for screen size references, components take in props to adapt custom style per breakpoint, like so:
67
-
68
- ```javascript
69
- <Flex
70
- margin="20"
71
- $short={{ margin: 10 }}
72
- >
73
- ...
74
- </Flex>
75
- ```
76
-
77
- When components cannot take in these props or a value needs to be resued multiple times, the `useMedia` hook allows these same breakpoint values to be defined programmatically.
78
-
79
- ### Colors
80
-
81
- We've made a hook `useSporeColors()` which gives you access to the current theme, and you can access the values off it as follows:
82
-
83
- ```tsx
84
- import { useSporeColors } from 'ui/src'
85
-
86
- function MyComponent() {
87
- const colors = useSporeColors()
88
-
89
- colors.accent1.val // returns something like #fff
90
- colors.accent1.get() // returns a "dynamic" color value
91
- }
92
- ```
93
-
94
- #### When to use `.get()` vs `.val`
95
-
96
- After some discussion we've come to prefer `.val` by default. This will always return the raw string color (in our case hex color) on all platforms, whereas `.get()` returns either an Object (iOS) or a string, which can cause issues when used with things like animations, or external components.
97
-
98
- Using .val has some performance downside vs .get in that all usages of .val will re-render when themes change, whereas .get will avoid re-renders on iOS and Web by optimizing to platform-specific constructs. On iOS, it optimizes to [DynamicColorIOS](https://reactnative.dev/docs/dynamiccolorios), on web a CSS variable like `var(--accent1)`.
99
-
100
- So if/when we notice slowness in our light/dark mode change, we'll want to check if our usages of .val are causing expensive re-renders and see if we can convert them to .get.
101
-
102
- In summary:
103
-
104
- - Prefer `.val` which always returns the original color string, like `#fff`.
105
- - Using `.get()` returns a dynamic value depending on the platform and avoids re-rendering when themes change between light and dark. This is nice for fast light/dark mode switching (and in the future if we use sub-themes, it would also avoid re-renders there).
106
- - On Android it returns the same as .val, `#fff`
107
- - On iOS, it returns an object like `{ dynamic: { light: '#fff', dark: '#000' } }`
108
- - On the web, it returns a CSS variable string, `var(--colorName)`
109
- - You can call `.get('web')` to only optimize for web, or `.get('ios')` to only optimize for ios.