@hyperbridge/ui 0.0.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.
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@hyperbridge/ui",
3
+ "version": "0.0.2",
4
+ "sideEffects": false,
5
+ "license": "MIT",
6
+ "private": false,
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.mts",
10
+ "import": "./dist/index.mjs"
11
+ },
12
+ "./base": "./styles/base.css",
13
+ "./icons": {
14
+ "types": "./dist/icons/index.d.mts",
15
+ "import": "./dist/icons/index.mjs"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist/*",
20
+ "styles/*"
21
+ ],
22
+ "devDependencies": {
23
+ "@svgr/cli": "^6.5.1",
24
+ "@testing-library/jest-dom": "^6.6.3",
25
+ "@testing-library/react": "^16.3.0",
26
+ "@types/react": "^19.1.8",
27
+ "@types/react-dom": "^19.1.3",
28
+ "@vitejs/plugin-react": "^4.4.1",
29
+ "@vitest/ui": "^3.1.2",
30
+ "eslint": "^8.57.0",
31
+ "jsdom": "^26.1.0",
32
+ "tsup": "^8.0.2",
33
+ "typescript": "5.8.3",
34
+ "vite": "^6.3.4",
35
+ "vitest": "^3.1.2",
36
+ "@repo/typescript-config": "0.0.0",
37
+ "@repo/eslint-config": "0.0.0"
38
+ },
39
+ "dependencies": {
40
+ "@radix-ui/react-dialog": "^1.1.14",
41
+ "@radix-ui/react-progress": "^1.1.7",
42
+ "@radix-ui/react-scroll-area": "^1.2.9",
43
+ "@radix-ui/react-slot": "^1.2.2",
44
+ "@radix-ui/react-tabs": "^1.1.12",
45
+ "@radix-ui/react-tooltip": "^1.2.7",
46
+ "@unpic/react": "^1.0.1",
47
+ "class-variance-authority": "^0.7.1",
48
+ "clsx": "^2.1.1",
49
+ "lucide-react": "^0.507.0",
50
+ "motion": "^12.17.0",
51
+ "react": "^19.1.0",
52
+ "tailwind-merge": "^3.3.0",
53
+ "tw-animate-css": "^1.2.9",
54
+ "vaul": "^1.1.2",
55
+ "viem": "^2.31.6"
56
+ },
57
+ "peerDependencies": {
58
+ "tailwindcss": "^4"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "scripts": {
64
+ "build": "tsup",
65
+ "dev": "tsup --watch",
66
+ "lint": "eslint . --max-warnings 0",
67
+ "clean": "rm -rf .turbo node_modules dist",
68
+ "test": "vitest run",
69
+ "test:watch": "vitest",
70
+ "test:ui": "vitest --ui",
71
+ "test:coverage": "vitest run --coverage",
72
+ "svg:convert": "svgr --icon --typescript --ignore-existing --memo --out-dir ./src/components/icons -- ./src/assets",
73
+ "prepublish": "pnpm tsc --noEmit && pnpm run build"
74
+ }
75
+ }
@@ -0,0 +1,292 @@
1
+ @import "./shadcn.css";
2
+ @import "tailwindcss";
3
+
4
+ @source "../src/";
5
+
6
+ @theme {
7
+ /* Fonts */
8
+ --font-heading: "Novatica", "sans-serif";
9
+ --font-heading-alt: "Aeonik", "sans-serif";
10
+
11
+ /* Colors */
12
+ --color-primary: oklch(57.27% 0.222 263);
13
+ --color-foreground: #ffffff;
14
+ --color-muted-foreground: #929daa;
15
+
16
+ --color-background: #131417;
17
+
18
+ --color-brand-neutral-200: #c3c6cc;
19
+ --color-brand-white-400: oklch(0.9551 0 0);
20
+ --color-brand-white-500: oklch(1 0 0);
21
+
22
+ --color-brand-black-100: oklch(0.6914 0.0229 252.57);
23
+ --color-brand-black-200: oklch(0.3772 0.0245 272.64);
24
+ --color-brand-black-300: oklch(0.3227 0.02 273.23);
25
+ --color-brand-black-350: oklch(0.2593 0.0144 261.67);
26
+ --color-brand-black-500: oklch(0.243 0.0123 264.31);
27
+ --color-brand-black-550: oklch(0.2212 0.0108 260.68);
28
+ --color-brand-black-600: oklch(0.1915 0.0062 271.08);
29
+
30
+ --color-brand-success-400: oklch(0.8939 0.2249 141.13);
31
+
32
+ --color-brand-danger-200: oklch(0.2351 0.0411 340.53);
33
+ --color-brand-danger-500: oklch(0.6586 0.231 15.83);
34
+
35
+ --color-brand-warning-500: oklch(0.8372 0.171 85.15);
36
+
37
+ --color-brand-card-100: oklch(0.2939 0.0169 270.78);
38
+
39
+ /* Text */
40
+ /*
41
+ --text-tiny: 0.625rem;
42
+ --text-tiny--font-weight: 500;
43
+ --text-tiny--line-height: 1.5rem;
44
+ --text-tiny--letter-spacing: 0.125rem;
45
+ */
46
+ --text-display: 4.5rem;
47
+ --text-display--line-height: 120%;
48
+
49
+ --text-h1: 3.5rem;
50
+ --text-h1--line-height: 110%;
51
+
52
+ --text-h2: 3rem;
53
+ --text-h2--line-height: 120%;
54
+
55
+ --text-h3: 2.375rem;
56
+ --text-h3--line-height: 120%;
57
+
58
+ --text-h4: 2rem;
59
+ --text-h4--line-height: 120%;
60
+
61
+ --text-h5: 1.75rem;
62
+ --text-h5--line-height: 2.25rem;
63
+
64
+ --text-h6: 1.5rem;
65
+ --text-h6--line-height: 2rem;
66
+
67
+ --text-h7: 1.25rem;
68
+
69
+ --text-body: 1rem;
70
+ --text-body--line-height: 1.25rem;
71
+
72
+ --text-body-2: 0.875rem;
73
+
74
+ --text-caption: 0.75rem;
75
+ --text-caption--line-height: 1rem;
76
+
77
+ --text-caption-2: 0.6875rem;
78
+ --text-caption-2--line-height: 1rem;
79
+ /* End Text */
80
+
81
+ /* Breakpoints */
82
+ --breakpoint-3xl: 120rem;
83
+
84
+ /* Gradients */
85
+ --gradient-brand: linear-gradient(
86
+ 90deg,
87
+ #ffffff 0%,
88
+ #ffffff 10%,
89
+ #4adeff 29.71%,
90
+ #ff35eb 78.68%,
91
+ #ffed4a 100%
92
+ );
93
+
94
+ /* Breakpoints */
95
+ --breakpoint-3xl: 120rem;
96
+
97
+ /* Animations */
98
+ --ease-fluid: cubic-bezier(0.3, 0, 0, 1);
99
+ --ease-snappy: cubic-bezier(0.2, 0, 0, 1);
100
+ }
101
+
102
+ @keyframes gradient-slide {
103
+ 0% {
104
+ background: linear-gradient(
105
+ 90deg,
106
+ #ffffff 0%,
107
+ #4adeff 29.71%,
108
+ #ff35eb 78.68%,
109
+ #ffed4a 100%
110
+ );
111
+ background-size: 200% 100%;
112
+ background-position: 0% 0%;
113
+ }
114
+
115
+ 50% {
116
+ background-position: 100% 0%;
117
+ }
118
+
119
+ 100% {
120
+ background-image: linear-gradient(
121
+ 90deg,
122
+ #ffffff 0%,
123
+ #4adeff 29.71%,
124
+ #ff35eb 78.68%,
125
+ #ffed4a 100%
126
+ );
127
+ background-size: 200% 100%;
128
+ background-position: 0% 0%;
129
+ }
130
+ }
131
+
132
+ @keyframes brand-gradient-flow {
133
+ 0% {
134
+ background-position: 0% 50%;
135
+ }
136
+
137
+ 50% {
138
+ background-position: 100% 50%;
139
+ }
140
+
141
+ 100% {
142
+ background-position: 0% 50%;
143
+ }
144
+ }
145
+
146
+ /* Superellipse */
147
+ .superellipse {
148
+ border-radius: var(--superellipse-radius);
149
+ }
150
+
151
+ .superellipse-base {
152
+ --superellipse-radius: 1rem;
153
+ }
154
+
155
+ .superellipse-sm {
156
+ --superellipse-radius: 0.75rem;
157
+ }
158
+
159
+ @supports (mask-image: paint(superellipse)) {
160
+ .superellipse.loaded {
161
+ mask-image: paint(superellipse);
162
+ border-radius: 0;
163
+ }
164
+ }
165
+
166
+ /* End Superellipse */
167
+
168
+ .animated-gradient-border:focus-within {
169
+ --superellipse-radius: 0.75rem;
170
+ }
171
+
172
+ .bridge-form-border {
173
+ background: var(--color-brand-black-200);
174
+ transition: all 200ms ease-out;
175
+ }
176
+
177
+ .bridge-form-border:hover {
178
+ background: var(--color-brand-black-100);
179
+ }
180
+
181
+ .bridge-form-border:focus-within {
182
+ background: linear-gradient(
183
+ 90deg,
184
+ #ffffff 0%,
185
+ #4adeff 25%,
186
+ #ff35eb 50%,
187
+ #ffed4a 75%,
188
+ #ffffff 100%
189
+ );
190
+ background-size: 200% 100%;
191
+ animation: gradient-slide 2s ease-in-out infinite;
192
+ }
193
+
194
+ .animated-gradient-border {
195
+ background: linear-gradient(
196
+ 90deg,
197
+ #ffffff 0%,
198
+ #4adeff 25%,
199
+ #ff35eb 50%,
200
+ #ffed4a 75%,
201
+ #ffffff 100%
202
+ );
203
+ background-size: 200% 100%;
204
+ animation: gradient-slide 3s ease-in-out infinite;
205
+ }
206
+
207
+ .border-dashed-wide {
208
+ background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='16' ry='16' stroke='%232F333EFF' stroke-width='3.5' stroke-dasharray='11' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e");
209
+ border-radius: 16px;
210
+ }
211
+
212
+ input[type="number"] {
213
+ appearance: textfield;
214
+ }
215
+
216
+ input[type="number"]::-webkit-outer-spin-button,
217
+ input[type="number"]::-webkit-inner-spin-button {
218
+ appearance: none;
219
+ margin: 0;
220
+ }
221
+
222
+ @layer base {
223
+ .hb-wall {
224
+ font-family: var(--hbr-font-family);
225
+ background-color: var(--color-primary);
226
+ }
227
+
228
+ .bg-gradient-brand {
229
+ background-image: var(--gradient-brand);
230
+ }
231
+
232
+ .bg-gradient-brand-animated {
233
+ background: linear-gradient(
234
+ 90deg,
235
+ #ffffff 0%,
236
+ #ffffff 10%,
237
+ #4adeff 29.71%,
238
+ #ff35eb 78.68%,
239
+ #ffed4a 100%
240
+ );
241
+ background-size: 200% 100%;
242
+ animation: brand-gradient-flow 4s ease-in-out infinite;
243
+ }
244
+
245
+ .gradient-spinner {
246
+ background: conic-gradient(
247
+ from 0deg,
248
+ #ffffff00 0%,
249
+ #ffffff00 10%,
250
+ #4adeff 29.71%,
251
+ #ff35eb 78.68%,
252
+ #ffed4a 100%,
253
+ #ffffff00 100%
254
+ );
255
+ position: relative;
256
+ }
257
+
258
+ .gradient-spinner::before {
259
+ content: "";
260
+ position: absolute;
261
+ top: 1px;
262
+ left: 1px;
263
+ right: 1px;
264
+ bottom: 1px;
265
+ background: var(--color-brand-black-500);
266
+ border-radius: 50%;
267
+ }
268
+ }
269
+
270
+ @utility no-scrollbar {
271
+ @apply [scrollbar-width:none] [&::-webkit-scrollbar]:hidden;
272
+ }
273
+
274
+ /* Dialog */
275
+ .responsive-fullscren-dialog {
276
+ @apply top-0 flex flex-col left-0 w-full h-full data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:slide-out-to-bottom-25 data-[state=open]:slide-in-from-bottom-25;
277
+ }
278
+
279
+ .responsive-card-dialog {
280
+ @apply top-[50%] shadow-lg left-[50%] translate-x-[-50%] translate-y-[-50%] sm:max-w-[28rem] data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95;
281
+ }
282
+
283
+ @layer utilities {
284
+ .tile-bg {
285
+ background-color: transparent;
286
+ background-image: radial-gradient(transparent 1px, #0000006e 1px);
287
+ background-size: 8px 8px;
288
+ backdrop-filter: brightness(1) blur(6px);
289
+ }
290
+ }
291
+
292
+ /* End Dialog */
@@ -0,0 +1,123 @@
1
+ @import "tw-animate-css";
2
+
3
+ @custom-variant dark (&:is(.dark *));
4
+
5
+ :root {
6
+ --background: oklch(1 0 0);
7
+ --foreground: oklch(0.145 0 0);
8
+ --card: oklch(1 0 0);
9
+ --card-foreground: oklch(0.145 0 0);
10
+ --popover: oklch(1 0 0);
11
+ --popover-foreground: oklch(0.145 0 0);
12
+ --primary: oklch(0.205 0 0);
13
+ --primary-foreground: oklch(0.985 0 0);
14
+ --secondary: oklch(0.97 0 0);
15
+ --secondary-foreground: oklch(0.205 0 0);
16
+ --muted: oklch(0.97 0 0);
17
+ --muted-foreground: oklch(0.556 0 0);
18
+ --accent: oklch(0.97 0 0);
19
+ --accent-foreground: oklch(0.205 0 0);
20
+ --destructive: oklch(0.577 0.245 27.325);
21
+ --destructive-foreground: oklch(0.577 0.245 27.325);
22
+ --border: oklch(0.922 0 0);
23
+ --input: oklch(0.922 0 0);
24
+ --ring: oklch(0.708 0 0);
25
+ --chart-1: oklch(0.646 0.222 41.116);
26
+ --chart-2: oklch(0.6 0.118 184.704);
27
+ --chart-3: oklch(0.398 0.07 227.392);
28
+ --chart-4: oklch(0.828 0.189 84.429);
29
+ --chart-5: oklch(0.769 0.188 70.08);
30
+ --radius: 0.625rem;
31
+ --sidebar: oklch(0.985 0 0);
32
+ --sidebar-foreground: oklch(0.145 0 0);
33
+ --sidebar-primary: oklch(0.205 0 0);
34
+ --sidebar-primary-foreground: oklch(0.985 0 0);
35
+ --sidebar-accent: oklch(0.97 0 0);
36
+ --sidebar-accent-foreground: oklch(0.205 0 0);
37
+ --sidebar-border: oklch(0.922 0 0);
38
+ --sidebar-ring: oklch(0.708 0 0);
39
+ }
40
+
41
+ .dark {
42
+ --background: oklch(0.145 0 0);
43
+ --foreground: oklch(0.985 0 0);
44
+ --card: oklch(0.145 0 0);
45
+ --card-foreground: oklch(0.985 0 0);
46
+ --popover: oklch(0.145 0 0);
47
+ --popover-foreground: oklch(0.985 0 0);
48
+ --primary: oklch(0.985 0 0);
49
+ --primary-foreground: oklch(0.205 0 0);
50
+ --secondary: oklch(0.269 0 0);
51
+ --secondary-foreground: oklch(0.985 0 0);
52
+ --muted: oklch(0.269 0 0);
53
+ --muted-foreground: oklch(0.708 0 0);
54
+ --accent: oklch(0.269 0 0);
55
+ --accent-foreground: oklch(0.985 0 0);
56
+ --destructive: oklch(0.396 0.141 25.723);
57
+ --destructive-foreground: oklch(0.637 0.237 25.331);
58
+ --border: oklch(0.269 0 0);
59
+ --input: oklch(0.269 0 0);
60
+ --ring: oklch(0.439 0 0);
61
+ --chart-1: oklch(0.488 0.243 264.376);
62
+ --chart-2: oklch(0.696 0.17 162.48);
63
+ --chart-3: oklch(0.769 0.188 70.08);
64
+ --chart-4: oklch(0.627 0.265 303.9);
65
+ --chart-5: oklch(0.645 0.246 16.439);
66
+ --sidebar: oklch(0.205 0 0);
67
+ --sidebar-foreground: oklch(0.985 0 0);
68
+ --sidebar-primary: oklch(0.488 0.243 264.376);
69
+ --sidebar-primary-foreground: oklch(0.985 0 0);
70
+ --sidebar-accent: oklch(0.269 0 0);
71
+ --sidebar-accent-foreground: oklch(0.985 0 0);
72
+ --sidebar-border: oklch(0.269 0 0);
73
+ --sidebar-ring: oklch(0.439 0 0);
74
+ }
75
+
76
+ @theme inline {
77
+ --color-background: var(--background);
78
+ --color-foreground: var(--foreground);
79
+ --color-card: var(--card);
80
+ --color-card-foreground: var(--card-foreground);
81
+ --color-popover: var(--popover);
82
+ --color-popover-foreground: var(--popover-foreground);
83
+ --color-primary: var(--primary);
84
+ --color-primary-foreground: var(--primary-foreground);
85
+ --color-secondary: var(--secondary);
86
+ --color-secondary-foreground: var(--secondary-foreground);
87
+ --color-muted: var(--muted);
88
+ --color-muted-foreground: var(--muted-foreground);
89
+ --color-accent: var(--accent);
90
+ --color-accent-foreground: var(--accent-foreground);
91
+ --color-destructive: var(--destructive);
92
+ --color-destructive-foreground: var(--destructive-foreground);
93
+ --color-border: var(--border);
94
+ --color-input: var(--input);
95
+ --color-ring: var(--ring);
96
+ --color-chart-1: var(--chart-1);
97
+ --color-chart-2: var(--chart-2);
98
+ --color-chart-3: var(--chart-3);
99
+ --color-chart-4: var(--chart-4);
100
+ --color-chart-5: var(--chart-5);
101
+ --radius-sm: calc(var(--radius) - 4px);
102
+ --radius-md: calc(var(--radius) - 2px);
103
+ --radius-lg: var(--radius);
104
+ --radius-xl: calc(var(--radius) + 4px);
105
+ --color-sidebar: var(--sidebar);
106
+ --color-sidebar-foreground: var(--sidebar-foreground);
107
+ --color-sidebar-primary: var(--sidebar-primary);
108
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
109
+ --color-sidebar-accent: var(--sidebar-accent);
110
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
111
+ --color-sidebar-border: var(--sidebar-border);
112
+ --color-sidebar-ring: var(--sidebar-ring);
113
+ }
114
+
115
+ @layer base {
116
+ * {
117
+ @apply border-border outline-ring/50;
118
+ }
119
+
120
+ body {
121
+ @apply bg-background text-foreground;
122
+ }
123
+ }