@enderfall/ui 0.1.0 → 0.1.2

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 (42) hide show
  1. package/assets/brand/enderfall-lockup.png +0 -0
  2. package/assets/brand/enderfall-lockup.svg +8 -0
  3. package/assets/brand/enderfall-mark.png +0 -0
  4. package/assets/brand/enderfall-mark.svg +8 -0
  5. package/dist/components/Button.d.ts +2 -1
  6. package/dist/components/Button.d.ts.map +1 -1
  7. package/dist/components/Button.js +8 -1
  8. package/dist/components/Dropdown.d.ts.map +1 -1
  9. package/dist/components/Dropdown.js +2 -2
  10. package/package.json +5 -2
  11. package/src/base.css +160 -0
  12. package/src/components/AccessGate.css +24 -0
  13. package/src/components/AccessGate.tsx +61 -0
  14. package/src/components/BookmarkDropdown.css +220 -0
  15. package/src/components/Button.css +183 -0
  16. package/src/components/Button.tsx +20 -0
  17. package/src/components/Dropdown.tsx +570 -0
  18. package/src/components/FloatingFooter.css +49 -0
  19. package/src/components/FloatingFooter.tsx +27 -0
  20. package/src/components/FormField.tsx +29 -0
  21. package/src/components/HeaderMenu.css +280 -0
  22. package/src/components/Input.css +68 -0
  23. package/src/components/Input.tsx +23 -0
  24. package/src/components/MainHeader.css +167 -0
  25. package/src/components/MainHeader.tsx +51 -0
  26. package/src/components/Modal.css +282 -0
  27. package/src/components/Modal.tsx +142 -0
  28. package/src/components/Panel.css +71 -0
  29. package/src/components/Panel.tsx +31 -0
  30. package/src/components/PreferencesModal.tsx +67 -0
  31. package/src/components/SideMenu.tsx +239 -0
  32. package/src/components/Slider.css +114 -0
  33. package/src/components/Slider.tsx +33 -0
  34. package/src/components/StackedCard.css +180 -0
  35. package/src/components/StackedCard.tsx +125 -0
  36. package/src/components/StatDots.css +122 -0
  37. package/src/components/StatDots.tsx +53 -0
  38. package/src/components/Toggle.css +161 -0
  39. package/src/components/Toggle.tsx +38 -0
  40. package/src/components/UserMenu.css +273 -0
  41. package/src/index.ts +44 -0
  42. package/src/theme.css +353 -0
package/src/theme.css ADDED
@@ -0,0 +1,353 @@
1
+ :root {
2
+ color-scheme: dark;
3
+ --ef-surface: #0b0c1a;
4
+ --ef-surface-soft: rgba(10, 13, 22, 0.78);
5
+ --ef-control-radius: 12px;
6
+ --ef-border-gradient: linear-gradient(135deg, #00e5ff, #7c4dff, #ff4dd2, #ffb74d);
7
+ --ef-border-gradient-reverse: linear-gradient(315deg, #00e5ff, #7c4dff, #ff4dd2, #ffb74d);
8
+ --ef-border-gradient-soft: linear-gradient(
9
+ 135deg,
10
+ rgba(0, 229, 255, 0.6),
11
+ rgba(124, 77, 255, 0.6),
12
+ rgba(255, 77, 210, 0.6),
13
+ rgba(255, 183, 77, 0.6)
14
+ );
15
+ --ef-button-surface: var(--ef-surface);
16
+ --ef-button-border: var(--ef-border-gradient);
17
+ --ef-button-border-soft: var(--ef-border-gradient-soft);
18
+ --ef-button-text: var(--text-strong);
19
+ --ef-button-glow-shadow: 0 0 24px rgba(124, 77, 255, 0.45);
20
+ --ef-button-locked-bg: rgba(15, 18, 28, 0.7);
21
+ --ef-button-locked-border: rgba(255, 255, 255, 0.15);
22
+ --ef-button-locked-text: rgba(255, 255, 255, 0.7);
23
+ --ef-button-danger-border: linear-gradient(135deg, rgba(255, 92, 92, 0.8), rgba(255, 170, 170, 0.7));
24
+ --ef-button-danger-text: #ffd6d6;
25
+ --ef-button-warning-border: linear-gradient(135deg, rgba(255, 183, 77, 0.85), rgba(255, 221, 128, 0.7));
26
+ --ef-button-warning-text: #2b1a00;
27
+ --ef-button-info-border: linear-gradient(135deg, rgba(0, 229, 255, 0.7), rgba(124, 220, 255, 0.7));
28
+ --ef-button-info-text: #021823;
29
+ --ef-button-success-border: linear-gradient(135deg, rgba(76, 255, 200, 0.7), rgba(140, 255, 220, 0.7));
30
+ --ef-button-success-text: #041a10;
31
+ --ef-slider-surface: var(--ef-surface);
32
+ --ef-slider-border-color: var(--line-strong);
33
+ --ef-slider-track-radius: 6px;
34
+ --ef-slider-thumb-radius: 6px;
35
+ --ef-slider-thumb-clip: inset(0);
36
+ --ef-slider-thumb-mask: none;
37
+ --ef-toggle-track-radius: 6px;
38
+ --ef-toggle-thumb-radius: 6px;
39
+ --ef-toggle-box-radius: 6px;
40
+ --ef-toggle-check-radius: 2px;
41
+ --ef-toggle-check-bg: var(--ef-slider-border-color);
42
+ --ef-field-label: rgba(255, 255, 255, 0.7);
43
+ --ef-field-required: rgba(255, 183, 77, 0.95);
44
+ --ef-field-helper: rgba(255, 255, 255, 0.6);
45
+ --ef-field-error: #ff8a8a;
46
+ --ef-input-surface: #0b0c1a;
47
+ --ef-input-border: var(--ef-border-gradient);
48
+ --ef-input-text: #eef1f6;
49
+ --ef-input-placeholder: rgba(246, 245, 255, 0.45);
50
+ --ef-input-focus: rgba(124, 77, 255, 0.55);
51
+ --ef-input-shadow: 0 0 0 2px rgba(124, 77, 255, 0.2);
52
+ --ef-stacked-card-bg: rgba(10, 12, 22, 0.92);
53
+ --ef-stacked-card-shadow: 0 14px 35px rgba(10, 12, 24, 0.6);
54
+ --ef-stacked-card-shadow-hover: 0 20px 45px rgba(10, 12, 24, 0.7);
55
+ --ef-stacked-frame-shadow: 0 18px 40px rgba(10, 12, 24, 0.55);
56
+ --ef-stacked-tag-bg: rgba(15, 18, 28, 0.7);
57
+ --ef-stacked-tag-text: rgba(238, 241, 246, 0.75);
58
+ --ef-stacked-body-muted: rgba(255, 255, 255, 0.7);
59
+ --ef-stacked-action-shadow: 0 0 24px rgba(124, 77, 255, 0.45);
60
+ --ef-stacked-image-gradient: linear-gradient(
61
+ 135deg,
62
+ rgba(0, 229, 255, 0.35),
63
+ rgba(124, 77, 255, 0.35),
64
+ rgba(255, 77, 210, 0.25)
65
+ );
66
+ --text-strong: #f6f5ff;
67
+ --text-soft: rgba(238, 241, 246, 0.75);
68
+ --text-muted: rgba(247, 248, 251, 0.6);
69
+ --card: rgba(10, 13, 22, 0.78);
70
+ --card-border: rgba(124, 77, 255, 0.4);
71
+ --accent: #7c4dff;
72
+ --accent-bright: #00e5ff;
73
+ --accent-warm: #ff4dd2;
74
+ --accent-gold: #ffb74d;
75
+ --shadow: 0 24px 60px rgba(0, 0, 0, 0.35);
76
+ --font-main: "Inter", "Segoe UI", Arial, sans-serif;
77
+ --text: var(--text-strong);
78
+ --muted: var(--text-muted);
79
+ --line: var(--card-border);
80
+ --bg: #0b0f15;
81
+ --bg-soft: #141b26;
82
+ --accent-dark: #5e35ff;
83
+ --accent-alt: var(--accent-gold);
84
+ --accent-soft: rgba(255, 183, 77, 0.18);
85
+ --danger: #e06c6c;
86
+ --radius: 18px;
87
+ --row-odd: rgba(10, 13, 22, 0.9);
88
+ --scrollbar-track: rgba(255, 255, 255, 0.12);
89
+ --bg-glow: rgba(124, 77, 255, 0.18);
90
+ --panel: var(--card);
91
+ --panel-2: rgba(12, 16, 26, 0.9);
92
+ --ink: var(--text-strong);
93
+ --line-strong: var(--accent);
94
+ --accent-2: var(--accent-gold);
95
+ --frame-bg: linear-gradient(180deg, #0b0c1a 0%, #0a0d16 100%);
96
+ --bio-bg: linear-gradient(180deg, #0e101c, #0b0f15 85%);
97
+ --section-bg: linear-gradient(180deg, rgba(15, 18, 28, 0.92), rgba(12, 16, 24, 0.95));
98
+ --note-bg: rgba(10, 13, 22, 0.6);
99
+ --portrait-bg: #0c1322;
100
+ --chip-bg: rgba(12, 16, 26, 0.8);
101
+ --placeholder-bg:
102
+ linear-gradient(135deg, rgba(28, 38, 64, 0.9), rgba(12, 18, 32, 0.95)),
103
+ repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.05) 0px, rgba(255, 255, 255, 0.05) 1px, transparent 1px, transparent 8px);
104
+ --placeholder-ink: #dde6f2;
105
+ --menu-card: var(--card);
106
+ --menu-line: var(--card-border);
107
+ --menu-shadow: var(--shadow);
108
+ --menu-bg-soft: rgba(124, 77, 255, 0.12);
109
+ --menu-radius: 18px;
110
+ --menu-muted: var(--text-muted);
111
+ }
112
+
113
+ :root[data-theme="light"],
114
+ :root[data-theme="plain-light"] {
115
+ color-scheme: light;
116
+ --ef-control-radius: 12px;
117
+ --ef-surface: #ffffff;
118
+ --ef-surface-soft: rgba(255, 255, 255, 0.92);
119
+ --ef-border-gradient: linear-gradient(135deg, #00e5ff, #7c4dff, #ff4dd2, #ffb74d);
120
+ --ef-border-gradient-reverse: linear-gradient(315deg, #00e5ff, #7c4dff, #ff4dd2, #ffb74d);
121
+ --ef-border-gradient-soft: linear-gradient(
122
+ 135deg,
123
+ rgba(0, 229, 255, 0.6),
124
+ rgba(124, 77, 255, 0.6),
125
+ rgba(255, 77, 210, 0.6),
126
+ rgba(255, 183, 77, 0.6)
127
+ );
128
+ --ef-button-text: #1d232a;
129
+ --ef-button-glow-shadow: 0 0 20px rgba(124, 77, 255, 0.32);
130
+ --ef-button-locked-bg: rgba(255, 255, 255, 0.8);
131
+ --ef-button-locked-border: rgba(24, 32, 40, 0.18);
132
+ --ef-button-locked-text: rgba(24, 32, 40, 0.6);
133
+ --ef-button-danger-border: linear-gradient(135deg, rgba(200, 76, 76, 0.7), rgba(255, 138, 138, 0.65));
134
+ --ef-button-danger-text: #5a0f0f;
135
+ --ef-button-warning-border: linear-gradient(135deg, rgba(242, 159, 69, 0.75), rgba(255, 210, 128, 0.7));
136
+ --ef-button-warning-text: #4a2c00;
137
+ --ef-button-info-border: linear-gradient(135deg, rgba(0, 180, 210, 0.6), rgba(124, 180, 255, 0.6));
138
+ --ef-button-info-text: #0b2a3a;
139
+ --ef-button-success-border: linear-gradient(135deg, rgba(46, 170, 130, 0.65), rgba(130, 220, 180, 0.65));
140
+ --ef-button-success-text: #0b2b1d;
141
+ --ef-slider-surface: var(--ef-surface);
142
+ --ef-slider-border-color: var(--line-strong);
143
+ --ef-slider-track-radius: 6px;
144
+ --ef-slider-thumb-radius: 6px;
145
+ --ef-slider-thumb-clip: inset(0);
146
+ --ef-slider-thumb-mask: none;
147
+ --ef-toggle-track-radius: 6px;
148
+ --ef-toggle-thumb-radius: 6px;
149
+ --ef-toggle-box-radius: 6px;
150
+ --ef-toggle-check-radius: 2px;
151
+ --ef-toggle-check-bg: var(--ef-slider-border-color);
152
+ --ef-field-label: rgba(29, 35, 42, 0.7);
153
+ --ef-field-required: rgba(242, 159, 69, 0.9);
154
+ --ef-field-helper: rgba(29, 35, 42, 0.6);
155
+ --ef-field-error: #b83a3a;
156
+ --ef-input-surface: #ffffff;
157
+ --ef-input-border: var(--ef-border-gradient);
158
+ --ef-input-text: #1d232a;
159
+ --ef-input-placeholder: rgba(29, 35, 42, 0.45);
160
+ --ef-input-focus: rgba(31, 122, 140, 0.3);
161
+ --ef-input-shadow: 0 0 0 2px rgba(31, 122, 140, 0.14);
162
+ --ef-field-label: rgba(29, 35, 42, 0.7);
163
+ --ef-field-helper: rgba(29, 35, 42, 0.55);
164
+ --ef-field-error: #b34a4a;
165
+ --ef-stacked-card-bg: rgba(10, 12, 22, 0.92);
166
+ --ef-stacked-card-shadow: 0 14px 35px rgba(10, 12, 24, 0.6);
167
+ --ef-stacked-card-shadow-hover: 0 20px 45px rgba(10, 12, 24, 0.7);
168
+ --ef-stacked-frame-shadow: 0 18px 40px rgba(10, 12, 24, 0.55);
169
+ --ef-stacked-tag-bg: rgba(15, 18, 28, 0.7);
170
+ --ef-stacked-tag-text: rgba(238, 241, 246, 0.75);
171
+ --ef-stacked-body-muted: rgba(255, 255, 255, 0.7);
172
+ --ef-stacked-action-shadow: 0 0 24px rgba(124, 77, 255, 0.45);
173
+ --ef-stacked-image-gradient: linear-gradient(
174
+ 135deg,
175
+ rgba(0, 229, 255, 0.35),
176
+ rgba(124, 77, 255, 0.35),
177
+ rgba(255, 77, 210, 0.25)
178
+ );
179
+ --text-strong: #1d232a;
180
+ --text-soft: rgba(29, 35, 42, 0.75);
181
+ --text-muted: rgba(29, 35, 42, 0.6);
182
+ --card: rgba(255, 255, 255, 0.9);
183
+ --card-border: rgba(24, 32, 40, 0.12);
184
+ --shadow: 0 20px 50px rgba(24, 32, 40, 0.12);
185
+ --text: var(--text-strong);
186
+ --muted: var(--text-muted);
187
+ --line: rgba(24, 32, 40, 0.18);
188
+ --bg: #f4f1ea;
189
+ --bg-soft: #fbf7f0;
190
+ --accent-dark: #1f7a8c;
191
+ --accent-alt: #f29f45;
192
+ --accent-soft: rgba(242, 159, 69, 0.18);
193
+ --danger: #c84c4c;
194
+ --row-odd: rgba(255, 255, 255, 0.95);
195
+ --scrollbar-track: rgba(24, 32, 40, 0.08);
196
+ --bg-glow: rgba(31, 122, 140, 0.16);
197
+ --panel: var(--card);
198
+ --panel-2: rgba(255, 255, 255, 0.94);
199
+ --ink: var(--text-strong);
200
+ --line-strong: var(--accent);
201
+ --accent-2: var(--accent-alt);
202
+ --frame-bg: linear-gradient(180deg, #ffffff 0%, #f6ede1 100%);
203
+ --bio-bg: linear-gradient(180deg, #ffffff, #f9f6f0 85%);
204
+ --section-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(249, 246, 240, 0.96));
205
+ --note-bg: rgba(255, 255, 255, 0.8);
206
+ --portrait-bg: #e7ecf2;
207
+ --chip-bg: rgba(255, 255, 255, 0.9);
208
+ --placeholder-bg:
209
+ linear-gradient(135deg, rgba(210, 225, 245, 0.9), rgba(240, 244, 248, 0.95)),
210
+ repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.04) 0px, rgba(0, 0, 0, 0.04) 1px, transparent 1px, transparent 8px);
211
+ --placeholder-ink: #2b3440;
212
+ --menu-card: rgba(255, 255, 255, 0.88);
213
+ --menu-line: rgba(24, 32, 40, 0.12);
214
+ --menu-shadow: 0 16px 40px rgba(23, 28, 33, 0.12);
215
+ --menu-bg-soft: #f9f6f0;
216
+ --menu-radius: 18px;
217
+ --menu-muted: var(--text-muted);
218
+ }
219
+
220
+ :root[data-theme="plain-light"] {
221
+ --ef-border-gradient: linear-gradient(135deg, var(--line), var(--line));
222
+ --ef-border-gradient-reverse: linear-gradient(315deg, var(--line), var(--line));
223
+ --ef-border-gradient-soft: linear-gradient(
224
+ 135deg,
225
+ rgba(24, 32, 40, 0.18),
226
+ rgba(24, 32, 40, 0.18)
227
+ );
228
+ --ef-button-border: var(--ef-border-gradient);
229
+ --ef-button-border-soft: var(--ef-border-gradient-soft);
230
+ --ef-input-border: var(--ef-border-gradient);
231
+ --ef-stacked-image-gradient: linear-gradient(135deg, rgba(24, 32, 40, 0.08), rgba(24, 32, 40, 0.15));
232
+ }
233
+
234
+ :root[data-theme="plain-dark"] {
235
+ color-scheme: dark;
236
+ --card-border: rgba(255, 255, 255, 0.16);
237
+ --line: rgba(255, 255, 255, 0.2);
238
+ --line-strong: rgba(255, 255, 255, 0.35);
239
+ --ef-border-gradient: linear-gradient(135deg, var(--line-strong), var(--line-strong));
240
+ --ef-border-gradient-reverse: linear-gradient(315deg, var(--line-strong), var(--line-strong));
241
+ --ef-border-gradient-soft: linear-gradient(
242
+ 135deg,
243
+ rgba(255, 255, 255, 0.18),
244
+ rgba(255, 255, 255, 0.18)
245
+ );
246
+ --ef-button-border: var(--ef-border-gradient);
247
+ --ef-button-border-soft: var(--ef-border-gradient-soft);
248
+ --ef-input-border: var(--ef-border-gradient);
249
+ --menu-line: var(--line);
250
+ --menu-bg-soft: rgba(255, 255, 255, 0.06);
251
+ --ef-stacked-image-gradient: linear-gradient(135deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.12));
252
+ }
253
+
254
+
255
+
256
+ :root[data-theme="atelier"] {
257
+ color-scheme: dark;
258
+ --ef-control-radius: 0px;
259
+ --ef-surface: #1b0b18;
260
+ --ef-surface-soft: rgba(27, 11, 24, 0.92);
261
+ --ef-border-gradient: linear-gradient(135deg, #ff86c8, #e255a1, #7dd6f6);
262
+ --ef-border-gradient-reverse: linear-gradient(315deg, #ff86c8, #e255a1, #7dd6f6);
263
+ --ef-border-gradient-soft: linear-gradient(
264
+ 135deg,
265
+ rgba(255, 134, 200, 0.5),
266
+ rgba(226, 85, 161, 0.5),
267
+ rgba(125, 214, 246, 0.5)
268
+ );
269
+ --ef-slider-surface: var(--ef-surface);
270
+ --ef-slider-border-color: var(--line-strong);
271
+ --ef-slider-track-radius: 0px;
272
+ --ef-slider-thumb-radius: 0px;
273
+ --ef-slider-thumb-clip: inset(0);
274
+ --ef-slider-thumb-mask: none;
275
+ --ef-toggle-track-radius: 0px;
276
+ --ef-toggle-thumb-radius: 0px;
277
+ --ef-toggle-box-radius: 0px;
278
+ --ef-toggle-check-radius: 0px;
279
+ --ef-toggle-check-bg: var(--ef-slider-border-color);
280
+ --ef-button-surface: var(--ef-surface);
281
+ --ef-button-border: var(--ef-border-gradient);
282
+ --ef-button-border-soft: var(--ef-border-gradient-soft);
283
+ --ef-button-text: #f6eaf2;
284
+ --ef-button-glow-shadow: 0 0 24px rgba(226, 85, 161, 0.42);
285
+ --ef-input-surface: #1b0b18;
286
+ --ef-input-border: var(--ef-border-gradient);
287
+ --ef-input-text: #f6eaf2;
288
+ --ef-input-placeholder: rgba(246, 234, 242, 0.6);
289
+ --ef-input-focus: rgba(226, 85, 161, 0.45);
290
+ --ef-input-shadow: 0 0 0 2px rgba(226, 85, 161, 0.2);
291
+ --text-strong: #f6eaf2;
292
+ --text-soft: rgba(246, 234, 242, 0.8);
293
+ --text-muted: #dbc7d7;
294
+ --card: #1b0b18;
295
+ --card-border: rgba(192, 59, 132, 0.6);
296
+ --accent: #ff86c8;
297
+ --accent-bright: #7dd6f6;
298
+ --accent-warm: #e255a1;
299
+ --accent-gold: #ff86c8;
300
+ --shadow: rgba(0, 0, 0, 0.6);
301
+ --text: #f6eaf2;
302
+ --muted: #dbc7d7;
303
+ --line: #c03b84;
304
+ --bg: #130810;
305
+ --bg-soft: #241028;
306
+ --accent-dark: #c03b84;
307
+ --accent-alt: #7dd6f6;
308
+ --accent-soft: rgba(255, 134, 200, 0.18);
309
+ --danger: #e06c6c;
310
+ --radius: 18px;
311
+ --row-odd: rgba(27, 11, 24, 0.85);
312
+ --scrollbar-track: rgba(255, 255, 255, 0.08);
313
+ --bg-glow: #2a0f21;
314
+ --panel: #1b0b18;
315
+ --panel-2: #241028;
316
+ --ink: #f6eaf2;
317
+ --line-strong: #e255a1;
318
+ --accent-2: #7dd6f6;
319
+ --frame-bg: linear-gradient(180deg, #220b1a 0%, #12070f 100%);
320
+ --bio-bg: linear-gradient(180deg, #1a0b1b, #12070f 85%);
321
+ --section-bg: linear-gradient(180deg, rgba(35, 14, 32, 0.94), rgba(20, 9, 18, 0.95));
322
+ --note-bg: rgba(16, 7, 14, 0.6);
323
+ --portrait-bg: #131a2c;
324
+ --chip-bg: rgba(17, 9, 20, 0.8);
325
+ --placeholder-bg:
326
+ linear-gradient(135deg, rgba(60, 78, 108, 0.9), rgba(20, 30, 50, 0.95)),
327
+ repeating-linear-gradient(
328
+ 0deg,
329
+ rgba(255, 255, 255, 0.06) 0px,
330
+ rgba(255, 255, 255, 0.06) 1px,
331
+ transparent 1px,
332
+ transparent 8px
333
+ );
334
+ --placeholder-ink: #dde6f2;
335
+ --menu-card: #1b0b18;
336
+ --menu-line: rgba(192, 59, 132, 0.5);
337
+ --menu-shadow: 0 16px 40px rgba(0, 0, 0, 0.5);
338
+ --menu-bg-soft: rgba(255, 134, 200, 0.12);
339
+ --menu-radius: 18px;
340
+ --menu-muted: #dbc7d7;
341
+ }
342
+
343
+ :root[data-theme="galaxy"] {
344
+ --ef-slider-track-radius: 6px;
345
+ --ef-slider-thumb-radius: 6px;
346
+ --ef-slider-thumb-clip: inset(0);
347
+ --ef-slider-thumb-mask: none;
348
+ --ef-toggle-track-radius: 6px;
349
+ --ef-toggle-thumb-radius: 6px;
350
+ --ef-toggle-box-radius: 6px;
351
+ --ef-toggle-check-radius: 2px;
352
+ }
353
+