@geenius/adapters 0.1.0 → 0.3.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 (185) hide show
  1. package/README.md +79 -42
  2. package/package.json +23 -4
  3. package/packages/convex/README.md +1 -1
  4. package/packages/convex/dist/index.cjs +300 -0
  5. package/packages/convex/dist/index.cjs.map +1 -0
  6. package/packages/convex/dist/index.d.cts +231 -0
  7. package/packages/convex/dist/index.d.ts +231 -0
  8. package/packages/convex/dist/index.js +263 -0
  9. package/packages/convex/dist/index.js.map +1 -0
  10. package/packages/react/README.md +1 -1
  11. package/packages/react/dist/index.d.mts +106 -0
  12. package/packages/react/dist/index.d.ts +106 -0
  13. package/packages/react/dist/index.js +611 -0
  14. package/packages/react/dist/index.js.map +1 -0
  15. package/packages/react/dist/index.mjs +570 -0
  16. package/packages/react/dist/index.mjs.map +1 -0
  17. package/packages/react-css/README.md +1 -1
  18. package/packages/react-css/dist/index.cjs +515 -0
  19. package/packages/react-css/dist/index.cjs.map +1 -0
  20. package/packages/react-css/dist/index.d.cts +105 -0
  21. package/packages/react-css/dist/index.d.ts +105 -0
  22. package/packages/react-css/dist/index.js +467 -0
  23. package/packages/react-css/dist/index.js.map +1 -0
  24. package/packages/shared/README.md +1 -1
  25. package/packages/shared/dist/index.d.mts +625 -0
  26. package/packages/shared/dist/index.d.ts +625 -0
  27. package/packages/shared/dist/index.js +1567 -0
  28. package/packages/shared/dist/index.js.map +1 -0
  29. package/packages/shared/dist/index.mjs +1489 -0
  30. package/packages/shared/dist/index.mjs.map +1 -0
  31. package/packages/solidjs/README.md +1 -1
  32. package/packages/solidjs/dist/index.d.mts +97 -0
  33. package/packages/solidjs/dist/index.d.ts +97 -0
  34. package/packages/solidjs/dist/index.js +250 -0
  35. package/packages/solidjs/dist/index.js.map +1 -0
  36. package/packages/solidjs/dist/index.mjs +202 -0
  37. package/packages/solidjs/dist/index.mjs.map +1 -0
  38. package/packages/solidjs-css/README.md +1 -1
  39. package/packages/solidjs-css/dist/index.cjs +343 -0
  40. package/packages/solidjs-css/dist/index.cjs.map +1 -0
  41. package/packages/solidjs-css/dist/index.d.cts +67 -0
  42. package/packages/solidjs-css/dist/index.d.ts +67 -0
  43. package/packages/solidjs-css/dist/index.js +326 -0
  44. package/packages/solidjs-css/dist/index.js.map +1 -0
  45. package/.changeset/config.json +0 -11
  46. package/.github/CODEOWNERS +0 -1
  47. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
  48. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
  49. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  50. package/.github/dependabot.yml +0 -11
  51. package/.github/workflows/ci.yml +0 -23
  52. package/.github/workflows/release.yml +0 -29
  53. package/.nvmrc +0 -1
  54. package/.project/ACCOUNT.yaml +0 -4
  55. package/.project/IDEAS.yaml +0 -7
  56. package/.project/PROJECT.yaml +0 -11
  57. package/.project/ROADMAP.yaml +0 -15
  58. package/CODE_OF_CONDUCT.md +0 -16
  59. package/CONTRIBUTING.md +0 -26
  60. package/SECURITY.md +0 -15
  61. package/SUPPORT.md +0 -8
  62. package/packages/convex/package.json +0 -42
  63. package/packages/convex/src/adapter.ts +0 -39
  64. package/packages/convex/src/index.ts +0 -19
  65. package/packages/convex/src/mutations.ts +0 -142
  66. package/packages/convex/src/queries.ts +0 -106
  67. package/packages/convex/src/schema.ts +0 -54
  68. package/packages/convex/src/types.ts +0 -20
  69. package/packages/convex/tsconfig.json +0 -11
  70. package/packages/convex/tsup.config.ts +0 -10
  71. package/packages/react/package.json +0 -45
  72. package/packages/react/src/components/AdapterCard.tsx +0 -49
  73. package/packages/react/src/components/AdapterConfigForm.tsx +0 -118
  74. package/packages/react/src/components/AdapterList.tsx +0 -84
  75. package/packages/react/src/components/AdapterStatusBadge.tsx +0 -30
  76. package/packages/react/src/components/index.ts +0 -4
  77. package/packages/react/src/hooks/index.ts +0 -75
  78. package/packages/react/src/index.tsx +0 -44
  79. package/packages/react/src/pages/AdapterDetailPage.tsx +0 -133
  80. package/packages/react/src/pages/AdaptersPage.tsx +0 -111
  81. package/packages/react/src/pages/index.ts +0 -2
  82. package/packages/react/src/provider/AdapterProvider.tsx +0 -115
  83. package/packages/react/src/provider/index.ts +0 -2
  84. package/packages/react/tsconfig.json +0 -18
  85. package/packages/react/tsup.config.ts +0 -10
  86. package/packages/react-css/package.json +0 -44
  87. package/packages/react-css/src/adapters.css +0 -1576
  88. package/packages/react-css/src/components/AdapterCard.tsx +0 -34
  89. package/packages/react-css/src/components/AdapterConfigForm.tsx +0 -63
  90. package/packages/react-css/src/components/AdapterList.tsx +0 -40
  91. package/packages/react-css/src/components/AdapterStatusBadge.tsx +0 -21
  92. package/packages/react-css/src/components/index.ts +0 -4
  93. package/packages/react-css/src/hooks/index.ts +0 -75
  94. package/packages/react-css/src/index.tsx +0 -25
  95. package/packages/react-css/src/pages/AdapterDetailPage.tsx +0 -133
  96. package/packages/react-css/src/pages/AdaptersPage.tsx +0 -111
  97. package/packages/react-css/src/pages/index.ts +0 -2
  98. package/packages/react-css/src/provider/AdapterProvider.tsx +0 -115
  99. package/packages/react-css/src/provider/index.ts +0 -2
  100. package/packages/react-css/src/styles.css +0 -494
  101. package/packages/react-css/tsconfig.json +0 -19
  102. package/packages/react-css/tsup.config.ts +0 -2
  103. package/packages/shared/package.json +0 -39
  104. package/packages/shared/src/__tests__/adapters.test.ts +0 -545
  105. package/packages/shared/src/admin/index.ts +0 -2
  106. package/packages/shared/src/admin/interface.ts +0 -34
  107. package/packages/shared/src/admin/localStorage.ts +0 -109
  108. package/packages/shared/src/ai/anthropic.ts +0 -123
  109. package/packages/shared/src/ai/cloudflare-gateway.ts +0 -130
  110. package/packages/shared/src/ai/gemini.ts +0 -181
  111. package/packages/shared/src/ai/index.ts +0 -14
  112. package/packages/shared/src/ai/interface.ts +0 -11
  113. package/packages/shared/src/ai/localStorage.ts +0 -78
  114. package/packages/shared/src/ai/ollama.ts +0 -143
  115. package/packages/shared/src/ai/openai.ts +0 -120
  116. package/packages/shared/src/ai/vercel-ai.ts +0 -101
  117. package/packages/shared/src/auth/better-auth.ts +0 -118
  118. package/packages/shared/src/auth/clerk.ts +0 -151
  119. package/packages/shared/src/auth/convex-auth.ts +0 -125
  120. package/packages/shared/src/auth/index.ts +0 -10
  121. package/packages/shared/src/auth/interface.ts +0 -17
  122. package/packages/shared/src/auth/localStorage.ts +0 -125
  123. package/packages/shared/src/auth/supabase-auth.ts +0 -136
  124. package/packages/shared/src/config.ts +0 -57
  125. package/packages/shared/src/constants.ts +0 -122
  126. package/packages/shared/src/db/convex.ts +0 -146
  127. package/packages/shared/src/db/index.ts +0 -10
  128. package/packages/shared/src/db/interface.ts +0 -13
  129. package/packages/shared/src/db/localStorage.ts +0 -91
  130. package/packages/shared/src/db/mongodb.ts +0 -125
  131. package/packages/shared/src/db/neon.ts +0 -171
  132. package/packages/shared/src/db/supabase.ts +0 -158
  133. package/packages/shared/src/index.ts +0 -117
  134. package/packages/shared/src/payments/index.ts +0 -4
  135. package/packages/shared/src/payments/interface.ts +0 -11
  136. package/packages/shared/src/payments/localStorage.ts +0 -81
  137. package/packages/shared/src/payments/stripe.ts +0 -177
  138. package/packages/shared/src/storage/convex.ts +0 -113
  139. package/packages/shared/src/storage/index.ts +0 -14
  140. package/packages/shared/src/storage/interface.ts +0 -11
  141. package/packages/shared/src/storage/localStorage.ts +0 -95
  142. package/packages/shared/src/storage/minio.ts +0 -47
  143. package/packages/shared/src/storage/r2.ts +0 -123
  144. package/packages/shared/src/storage/s3.ts +0 -128
  145. package/packages/shared/src/storage/supabase-storage.ts +0 -116
  146. package/packages/shared/src/storage/uploadthing.ts +0 -126
  147. package/packages/shared/src/styles/adapters.css +0 -494
  148. package/packages/shared/src/tier-gate.ts +0 -119
  149. package/packages/shared/src/types.ts +0 -162
  150. package/packages/shared/tsconfig.json +0 -18
  151. package/packages/shared/tsup.config.ts +0 -9
  152. package/packages/shared/vitest.config.ts +0 -14
  153. package/packages/solidjs/package.json +0 -44
  154. package/packages/solidjs/src/components/AdapterCard.tsx +0 -24
  155. package/packages/solidjs/src/components/AdapterConfigForm.tsx +0 -54
  156. package/packages/solidjs/src/components/AdapterList.tsx +0 -28
  157. package/packages/solidjs/src/components/AdapterStatusBadge.tsx +0 -20
  158. package/packages/solidjs/src/components/index.ts +0 -4
  159. package/packages/solidjs/src/index.tsx +0 -17
  160. package/packages/solidjs/src/pages/AdapterDetailPage.tsx +0 -38
  161. package/packages/solidjs/src/pages/AdaptersPage.tsx +0 -39
  162. package/packages/solidjs/src/pages/index.ts +0 -2
  163. package/packages/solidjs/src/primitives/index.ts +0 -78
  164. package/packages/solidjs/src/provider/AdapterProvider.tsx +0 -62
  165. package/packages/solidjs/src/provider/index.ts +0 -2
  166. package/packages/solidjs/tsconfig.json +0 -20
  167. package/packages/solidjs/tsup.config.ts +0 -10
  168. package/packages/solidjs-css/package.json +0 -43
  169. package/packages/solidjs-css/src/adapters.css +0 -1576
  170. package/packages/solidjs-css/src/components/AdapterCard.tsx +0 -43
  171. package/packages/solidjs-css/src/components/AdapterConfigForm.tsx +0 -119
  172. package/packages/solidjs-css/src/components/AdapterList.tsx +0 -68
  173. package/packages/solidjs-css/src/components/AdapterStatusBadge.tsx +0 -24
  174. package/packages/solidjs-css/src/components/index.ts +0 -8
  175. package/packages/solidjs-css/src/index.tsx +0 -30
  176. package/packages/solidjs-css/src/pages/AdapterDetailPage.tsx +0 -107
  177. package/packages/solidjs-css/src/pages/AdaptersPage.tsx +0 -94
  178. package/packages/solidjs-css/src/pages/index.ts +0 -4
  179. package/packages/solidjs-css/src/primitives/index.ts +0 -1
  180. package/packages/solidjs-css/src/provider/AdapterProvider.tsx +0 -61
  181. package/packages/solidjs-css/src/provider/index.ts +0 -2
  182. package/packages/solidjs-css/tsconfig.json +0 -20
  183. package/packages/solidjs-css/tsup.config.ts +0 -2
  184. package/pnpm-workspace.yaml +0 -2
  185. package/tsconfig.json +0 -17
@@ -1,494 +0,0 @@
1
- /* @geenius-adapters — Vanilla CSS Design System
2
- OKLCH colors · BEM naming · CSS custom properties
3
- Import: @import '@geenius-adapters/react-css/styles.css';
4
- */
5
-
6
- /* ─── Theme Variables ──────────────────────────────────────────────────────── */
7
-
8
- :root {
9
- --adapter-bg: oklch(0.13 0.02 260);
10
- --adapter-bg-subtle: oklch(0.16 0.02 260);
11
- --adapter-bg-card: oklch(0.15 0.015 260);
12
- --adapter-bg-hover: oklch(0.18 0.02 260);
13
- --adapter-border: oklch(0.25 0.02 260);
14
- --adapter-border-hover: oklch(0.35 0.02 260);
15
- --adapter-text: oklch(0.95 0.01 260);
16
- --adapter-text-muted: oklch(0.55 0.01 260);
17
- --adapter-text-faint: oklch(0.40 0.01 260);
18
- --adapter-brand: oklch(0.55 0.20 270);
19
- --adapter-brand-light: oklch(0.45 0.15 270 / 0.15);
20
-
21
- --adapter-connected: oklch(0.70 0.18 155);
22
- --adapter-connected-bg: oklch(0.70 0.18 155 / 0.08);
23
- --adapter-disconnected: oklch(0.50 0.01 260);
24
- --adapter-error: oklch(0.65 0.22 25);
25
- --adapter-error-bg: oklch(0.65 0.22 25 / 0.08);
26
- --adapter-warning: oklch(0.75 0.16 75);
27
- --adapter-warning-bg: oklch(0.75 0.16 75 / 0.08);
28
-
29
- --adapter-radius-sm: 0.5rem;
30
- --adapter-radius-md: 0.75rem;
31
- --adapter-radius-lg: 1rem;
32
- --adapter-radius-xl: 1.25rem;
33
- }
34
-
35
- /* ─── Layout ───────────────────────────────────────────────────────────────── */
36
-
37
- .adapter-page {
38
- max-width: 56rem;
39
- margin: 0 auto;
40
- }
41
-
42
- .adapter-page__header {
43
- margin-bottom: 2rem;
44
- }
45
-
46
- .adapter-page__title {
47
- font-size: 1.5rem;
48
- font-weight: 800;
49
- color: var(--adapter-text);
50
- letter-spacing: -0.02em;
51
- }
52
-
53
- .adapter-page__subtitle {
54
- margin-top: 0.25rem;
55
- font-size: 0.875rem;
56
- color: var(--adapter-text-muted);
57
- }
58
-
59
- /* ─── Status Summary ───────────────────────────────────────────────────────── */
60
-
61
- .adapter-summary {
62
- display: grid;
63
- gap: 0.75rem;
64
- grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
65
- margin-bottom: 2rem;
66
- }
67
-
68
- .adapter-summary__card {
69
- border: 1px solid var(--adapter-border);
70
- border-radius: var(--adapter-radius-xl);
71
- background: var(--adapter-bg-card);
72
- padding: 1rem 1.25rem;
73
- backdrop-filter: blur(8px);
74
- }
75
-
76
- .adapter-summary__card--success {
77
- border-color: oklch(0.70 0.18 155 / 0.15);
78
- background: var(--adapter-connected-bg);
79
- }
80
-
81
- .adapter-summary__card--error {
82
- border-color: oklch(0.65 0.22 25 / 0.15);
83
- background: var(--adapter-error-bg);
84
- }
85
-
86
- .adapter-summary__label {
87
- font-size: 0.625rem;
88
- font-weight: 700;
89
- text-transform: uppercase;
90
- letter-spacing: 0.08em;
91
- color: var(--adapter-text-faint);
92
- }
93
-
94
- .adapter-summary__value {
95
- font-size: 1.5rem;
96
- font-weight: 800;
97
- color: var(--adapter-text);
98
- margin-top: 0.25rem;
99
- }
100
-
101
- .adapter-summary__card--success .adapter-summary__value { color: var(--adapter-connected); }
102
- .adapter-summary__card--error .adapter-summary__value { color: var(--adapter-error); }
103
-
104
- .adapter-summary__desc {
105
- font-size: 0.625rem;
106
- color: var(--adapter-text-faint);
107
- }
108
-
109
- /* ─── Status Badge ─────────────────────────────────────────────────────────── */
110
-
111
- .adapter-badge {
112
- display: inline-flex;
113
- align-items: center;
114
- gap: 0.375rem;
115
- border-radius: 9999px;
116
- padding: 0.125rem 0.5rem;
117
- font-size: 0.625rem;
118
- font-weight: 700;
119
- text-transform: uppercase;
120
- letter-spacing: 0.05em;
121
- }
122
-
123
- .adapter-badge__dot {
124
- width: 0.375rem;
125
- height: 0.375rem;
126
- border-radius: 50%;
127
- }
128
-
129
- .adapter-badge--connected { background: var(--adapter-connected-bg); color: var(--adapter-connected); }
130
- .adapter-badge--connected .adapter-badge__dot { background: var(--adapter-connected); }
131
-
132
- .adapter-badge--disconnected { background: oklch(0.50 0.01 260 / 0.08); color: var(--adapter-disconnected); }
133
- .adapter-badge--disconnected .adapter-badge__dot { background: var(--adapter-disconnected); }
134
-
135
- .adapter-badge--error { background: var(--adapter-error-bg); color: var(--adapter-error); }
136
- .adapter-badge--error .adapter-badge__dot { background: var(--adapter-error); }
137
-
138
- .adapter-badge--initializing { background: var(--adapter-warning-bg); color: var(--adapter-warning); }
139
- .adapter-badge--initializing .adapter-badge__dot { background: var(--adapter-warning); animation: adapter-pulse 1.5s ease-in-out infinite; }
140
-
141
- @keyframes adapter-pulse {
142
- 0%, 100% { opacity: 1; }
143
- 50% { opacity: 0.3; }
144
- }
145
-
146
- /* ─── Adapter Card ─────────────────────────────────────────────────────────── */
147
-
148
- .adapter-card {
149
- display: flex;
150
- gap: 1rem;
151
- align-items: flex-start;
152
- width: 100%;
153
- border: 1px solid var(--adapter-border);
154
- border-radius: var(--adapter-radius-xl);
155
- background: var(--adapter-bg-card);
156
- padding: 1.25rem;
157
- text-align: left;
158
- cursor: pointer;
159
- transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
160
- backdrop-filter: blur(8px);
161
- }
162
-
163
- .adapter-card:hover {
164
- border-color: var(--adapter-border-hover);
165
- background: var(--adapter-bg-hover);
166
- box-shadow: 0 4px 24px oklch(0.1 0.02 260 / 0.2);
167
- }
168
-
169
- .adapter-card__icon {
170
- flex-shrink: 0;
171
- width: 3rem; height: 3rem;
172
- display: flex; align-items: center; justify-content: center;
173
- border-radius: var(--adapter-radius-md);
174
- background: oklch(0.20 0.02 260);
175
- font-size: 1.5rem;
176
- transition: transform 0.2s;
177
- }
178
-
179
- .adapter-card:hover .adapter-card__icon { transform: scale(1.05); }
180
-
181
- .adapter-card__body { flex: 1; min-width: 0; }
182
-
183
- .adapter-card__header {
184
- display: flex;
185
- align-items: center;
186
- justify-content: space-between;
187
- gap: 0.5rem;
188
- }
189
-
190
- .adapter-card__name {
191
- font-size: 0.875rem;
192
- font-weight: 700;
193
- color: var(--adapter-text);
194
- overflow: hidden;
195
- text-overflow: ellipsis;
196
- white-space: nowrap;
197
- }
198
-
199
- .adapter-card__desc {
200
- margin-top: 0.25rem;
201
- font-size: 0.75rem;
202
- color: var(--adapter-text-faint);
203
- display: -webkit-box;
204
- -webkit-line-clamp: 2;
205
- -webkit-box-orient: vertical;
206
- overflow: hidden;
207
- }
208
-
209
- .adapter-card__meta {
210
- display: flex;
211
- align-items: center;
212
- gap: 0.5rem;
213
- margin-top: 0.5rem;
214
- }
215
-
216
- .adapter-card__provider {
217
- font-size: 0.625rem;
218
- font-weight: 600;
219
- color: var(--adapter-text-muted);
220
- background: oklch(0.20 0.02 260);
221
- padding: 0.125rem 0.5rem;
222
- border-radius: var(--adapter-radius-sm);
223
- }
224
-
225
- .adapter-card__latency {
226
- font-size: 0.625rem;
227
- color: var(--adapter-text-faint);
228
- }
229
-
230
- .adapter-card__error {
231
- margin-top: 0.375rem;
232
- font-size: 0.625rem;
233
- color: var(--adapter-error);
234
- overflow: hidden;
235
- text-overflow: ellipsis;
236
- white-space: nowrap;
237
- }
238
-
239
- /* ─── Adapter Grid ─────────────────────────────────────────────────────────── */
240
-
241
- .adapter-grid {
242
- display: grid;
243
- gap: 0.75rem;
244
- grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
245
- }
246
-
247
- /* ─── Search Input ─────────────────────────────────────────────────────────── */
248
-
249
- .adapter-search {
250
- width: 100%;
251
- border: 1px solid var(--adapter-border);
252
- border-radius: var(--adapter-radius-lg);
253
- background: oklch(0.12 0.02 260);
254
- padding: 0.625rem 1rem;
255
- font-size: 0.875rem;
256
- color: var(--adapter-text);
257
- margin-bottom: 1rem;
258
- transition: border-color 0.2s;
259
- }
260
-
261
- .adapter-search::placeholder { color: var(--adapter-text-faint); }
262
- .adapter-search:focus { outline: none; border-color: var(--adapter-brand); box-shadow: 0 0 0 3px var(--adapter-brand-light); }
263
-
264
- /* ─── Filter Bar ───────────────────────────────────────────────────────────── */
265
-
266
- .adapter-filters {
267
- display: flex;
268
- align-items: center;
269
- gap: 0.5rem;
270
- margin-bottom: 1.5rem;
271
- flex-wrap: wrap;
272
- }
273
-
274
- .adapter-filter-btn {
275
- padding: 0.375rem 0.75rem;
276
- font-size: 0.75rem;
277
- font-weight: 600;
278
- border-radius: var(--adapter-radius-sm);
279
- color: var(--adapter-text-faint);
280
- cursor: pointer;
281
- transition: background 0.15s, color 0.15s;
282
- background: none;
283
- border: none;
284
- }
285
-
286
- .adapter-filter-btn:hover { color: var(--adapter-text-muted); }
287
- .adapter-filter-btn--active { background: oklch(0.25 0.02 260); color: var(--adapter-text); }
288
-
289
- /* ─── Config Form ──────────────────────────────────────────────────────────── */
290
-
291
- .adapter-form {
292
- border: 1px solid var(--adapter-border);
293
- border-radius: var(--adapter-radius-xl);
294
- background: var(--adapter-bg-card);
295
- padding: 1.5rem;
296
- backdrop-filter: blur(8px);
297
- }
298
-
299
- .adapter-form__title {
300
- font-size: 1.125rem;
301
- font-weight: 700;
302
- color: var(--adapter-text);
303
- }
304
-
305
- .adapter-form__subtitle {
306
- font-size: 0.75rem;
307
- color: var(--adapter-text-faint);
308
- margin-top: 0.25rem;
309
- }
310
-
311
- .adapter-field { margin-top: 1.25rem; }
312
-
313
- .adapter-field__label {
314
- display: block;
315
- font-size: 0.625rem;
316
- font-weight: 700;
317
- text-transform: uppercase;
318
- letter-spacing: 0.08em;
319
- color: var(--adapter-text-faint);
320
- margin-bottom: 0.375rem;
321
- }
322
-
323
- .adapter-field__input {
324
- width: 100%;
325
- border: 1px solid var(--adapter-border);
326
- border-radius: var(--adapter-radius-lg);
327
- background: oklch(0.12 0.02 260);
328
- padding: 0.75rem 1rem;
329
- font-size: 0.875rem;
330
- color: var(--adapter-text);
331
- transition: border-color 0.2s;
332
- }
333
-
334
- .adapter-field__input:focus { outline: none; border-color: var(--adapter-brand); box-shadow: 0 0 0 3px var(--adapter-brand-light); }
335
-
336
- /* ─── Provider Selector Grid ──────────────────────────────────────────────── */
337
-
338
- .adapter-provider-grid {
339
- display: grid;
340
- gap: 0.5rem;
341
- grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
342
- }
343
-
344
- .adapter-provider-option {
345
- display: flex;
346
- flex-direction: column;
347
- border: 1px solid var(--adapter-border);
348
- border-radius: var(--adapter-radius-lg);
349
- padding: 0.75rem;
350
- text-align: left;
351
- cursor: pointer;
352
- transition: border-color 0.15s, background 0.15s;
353
- background: none;
354
- }
355
-
356
- .adapter-provider-option:hover { background: var(--adapter-bg-hover); }
357
-
358
- .adapter-provider-option--selected {
359
- border-color: var(--adapter-brand);
360
- background: var(--adapter-brand-light);
361
- }
362
-
363
- .adapter-provider-option__name {
364
- font-size: 0.75rem;
365
- font-weight: 700;
366
- color: var(--adapter-text);
367
- }
368
-
369
- .adapter-provider-option__desc {
370
- font-size: 0.625rem;
371
- color: var(--adapter-text-faint);
372
- margin-top: 0.125rem;
373
- }
374
-
375
- .adapter-tier-badge {
376
- display: inline-block;
377
- margin-top: 0.375rem;
378
- font-size: 0.5625rem;
379
- font-weight: 700;
380
- text-transform: uppercase;
381
- padding: 0.125rem 0.375rem;
382
- border-radius: 0.25rem;
383
- }
384
-
385
- .adapter-tier-badge--pronto { background: var(--adapter-connected-bg); color: var(--adapter-connected); }
386
- .adapter-tier-badge--mvp { background: oklch(0.55 0.18 240 / 0.12); color: oklch(0.65 0.18 240); }
387
- .adapter-tier-badge--paid { background: oklch(0.55 0.18 300 / 0.12); color: oklch(0.65 0.18 300); }
388
-
389
- /* ─── Buttons ──────────────────────────────────────────────────────────────── */
390
-
391
- .adapter-btn {
392
- display: inline-flex;
393
- align-items: center;
394
- justify-content: center;
395
- gap: 0.5rem;
396
- border-radius: var(--adapter-radius-lg);
397
- padding: 0.625rem 1.5rem;
398
- font-size: 0.875rem;
399
- font-weight: 600;
400
- cursor: pointer;
401
- transition: background 0.15s, opacity 0.15s;
402
- border: none;
403
- }
404
-
405
- .adapter-btn:disabled { opacity: 0.5; cursor: not-allowed; }
406
-
407
- .adapter-btn--primary { background: var(--adapter-brand); color: white; }
408
- .adapter-btn--primary:hover:not(:disabled) { background: oklch(0.60 0.20 270); }
409
-
410
- .adapter-btn--ghost { background: none; color: var(--adapter-text-muted); padding: 0.5rem 1rem; }
411
- .adapter-btn--ghost:hover { color: var(--adapter-text); }
412
-
413
- .adapter-btn--sm { font-size: 0.75rem; padding: 0.375rem 0.75rem; }
414
-
415
- /* ─── Alert ────────────────────────────────────────────────────────────────── */
416
-
417
- .adapter-alert {
418
- border-radius: var(--adapter-radius-md);
419
- padding: 0.75rem 1rem;
420
- font-size: 0.875rem;
421
- }
422
-
423
- .adapter-alert--error { border: 1px solid oklch(0.65 0.22 25 / 0.2); background: var(--adapter-error-bg); color: var(--adapter-error); }
424
- .adapter-alert--warning { border: 1px solid oklch(0.75 0.16 75 / 0.2); background: var(--adapter-warning-bg); color: var(--adapter-warning); }
425
-
426
- /* ─── Detail Page ──────────────────────────────────────────────────────────── */
427
-
428
- .adapter-detail__icon {
429
- width: 4rem; height: 4rem;
430
- display: flex; align-items: center; justify-content: center;
431
- border-radius: var(--adapter-radius-xl);
432
- background: oklch(0.18 0.02 260);
433
- font-size: 2rem;
434
- }
435
-
436
- .adapter-detail__status-grid {
437
- display: grid;
438
- gap: 1rem;
439
- grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
440
- }
441
-
442
- .adapter-detail__label {
443
- font-size: 0.625rem;
444
- text-transform: uppercase;
445
- color: var(--adapter-text-faint);
446
- }
447
-
448
- .adapter-detail__value {
449
- font-size: 0.875rem;
450
- font-weight: 600;
451
- color: var(--adapter-text);
452
- margin-top: 0.125rem;
453
- }
454
-
455
- .adapter-provider-list { border-top: 1px solid oklch(0.25 0.02 260); }
456
- .adapter-provider-list > div { padding: 0.75rem 0; border-bottom: 1px solid oklch(0.20 0.015 260); }
457
- .adapter-provider-list > div:last-child { border-bottom: none; }
458
-
459
- /* ─── Skeletons ────────────────────────────────────────────────────────────── */
460
-
461
- .adapter-skeleton {
462
- background: linear-gradient(90deg, oklch(0.18 0.02 260) 25%, oklch(0.22 0.02 260) 50%, oklch(0.18 0.02 260) 75%);
463
- background-size: 200% 100%;
464
- animation: adapter-shimmer 1.5s ease-in-out infinite;
465
- border-radius: var(--adapter-radius-lg);
466
- }
467
-
468
- @keyframes adapter-shimmer {
469
- 0% { background-position: -200% 0; }
470
- 100% { background-position: 200% 0; }
471
- }
472
-
473
- /* ─── Empty State ──────────────────────────────────────────────────────────── */
474
-
475
- .adapter-empty {
476
- border: 1px solid oklch(0.20 0.015 260);
477
- border-radius: var(--adapter-radius-lg);
478
- background: oklch(0.14 0.015 260);
479
- padding: 2rem;
480
- text-align: center;
481
- }
482
-
483
- .adapter-empty__text { font-size: 0.875rem; color: var(--adapter-text-faint); }
484
-
485
- /* ─── Modal Overlay ────────────────────────────────────────────────────────── */
486
-
487
- .adapter-modal-overlay {
488
- position: fixed; inset: 0; z-index: 50;
489
- display: flex; align-items: center; justify-content: center;
490
- background: oklch(0.05 0.02 260 / 0.6);
491
- backdrop-filter: blur(8px);
492
- }
493
-
494
- .adapter-modal { max-width: 32rem; width: 100%; margin: 1rem; }
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "./dist",
5
- "rootDir": "./src",
6
- "strict": true,
7
- "skipLibCheck": true,
8
- "forceConsistentCasingInFileNames": true,
9
- "resolveJsonModule": true,
10
- "isolatedModules": true,
11
- "target": "ES2022",
12
- "module": "ESNext",
13
- "moduleResolution": "bundler",
14
- "jsx": "react-jsx"
15
- },
16
- "include": [
17
- "src"
18
- ]
19
- }
@@ -1,2 +0,0 @@
1
- import { defineConfig } from 'tsup'
2
- export default defineConfig({ entry: ['src/index.tsx'], format: ['cjs', 'esm'], dts: true, clean: true, sourcemap: true, external: ['react'] })
@@ -1,39 +0,0 @@
1
- {
2
- "name": "@geenius-adapters/shared",
3
- "version": "0.1.0",
4
- "description": "Geenius Adapters \u2014 Core types, interfaces, and implementations",
5
- "main": "./dist/index.js",
6
- "module": "./dist/index.mjs",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": "./dist/index.mjs",
11
- "require": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
13
- }
14
- },
15
- "scripts": {
16
- "build": "tsup",
17
- "lint": "tsc --noEmit",
18
- "test": "vitest run",
19
- "clean": "rm -rf dist",
20
- "test:watch": "vitest",
21
- "test:coverage": "vitest run --coverage"
22
- },
23
- "files": [
24
- "dist"
25
- ],
26
- "publishConfig": {
27
- "access": "public"
28
- },
29
- "devDependencies": {
30
- "tsup": "^8.5.1",
31
- "typescript": "~6.0.2",
32
- "vitest": "^4.0.0"
33
- },
34
- "author": "Antigravity HQ",
35
- "license": "MIT",
36
- "engines": {
37
- "node": ">=20.0.0"
38
- }
39
- }