@flexkit/studio 0.0.6 → 0.0.8

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 (145) hide show
  1. package/dist/asset-65455B7V.js +2 -0
  2. package/dist/{asset-F2SF5UHA.js.map → asset-65455B7V.js.map} +1 -1
  3. package/dist/astro.d.ts +68 -0
  4. package/dist/astro.js +45 -0
  5. package/dist/boolean-3ZHXDPHB.js +2 -0
  6. package/dist/{boolean-IUJXXA2D.js.map → boolean-3ZHXDPHB.js.map} +1 -1
  7. package/dist/chunk-2RBOTHKE.js +2 -0
  8. package/dist/{chunk-7ZFZY5R4.js.map → chunk-2RBOTHKE.js.map} +1 -1
  9. package/dist/chunk-2WWU4XFO.js +2 -0
  10. package/dist/chunk-2WWU4XFO.js.map +1 -0
  11. package/dist/chunk-4PHVU7DD.js +2 -0
  12. package/dist/{chunk-WEMBNSFH.js.map → chunk-4PHVU7DD.js.map} +1 -1
  13. package/dist/chunk-5ES3TTSY.js +2 -0
  14. package/dist/{chunk-OBWXS7PQ.js.map → chunk-5ES3TTSY.js.map} +1 -1
  15. package/dist/chunk-5MTVN77Y.js +2 -0
  16. package/dist/chunk-5MTVN77Y.js.map +1 -0
  17. package/dist/chunk-64KAF6GA.js +2 -0
  18. package/dist/chunk-64KAF6GA.js.map +1 -0
  19. package/dist/chunk-7YBJLUUE.js +3 -0
  20. package/dist/chunk-7YBJLUUE.js.map +1 -0
  21. package/dist/chunk-AXB7FQV2.js +2 -0
  22. package/dist/{chunk-A6DNMUGW.js.map → chunk-AXB7FQV2.js.map} +1 -1
  23. package/dist/chunk-AYKEFG4H.js +2 -0
  24. package/dist/chunk-AYKEFG4H.js.map +1 -0
  25. package/dist/chunk-D5N42D57.js +2 -0
  26. package/dist/chunk-D5N42D57.js.map +1 -0
  27. package/dist/chunk-HC5NUUAJ.js +2 -0
  28. package/dist/chunk-HC5NUUAJ.js.map +1 -0
  29. package/dist/chunk-HIMN6EYJ.js +2 -0
  30. package/dist/chunk-HIMN6EYJ.js.map +1 -0
  31. package/dist/chunk-K5CEPNVI.js +2 -0
  32. package/dist/{chunk-G3L524HS.js.map → chunk-K5CEPNVI.js.map} +1 -1
  33. package/dist/chunk-M6EIBKCQ.js +2 -0
  34. package/dist/{chunk-GHV46F5V.js.map → chunk-M6EIBKCQ.js.map} +1 -1
  35. package/dist/chunk-MOR653JA.js +2 -0
  36. package/dist/chunk-MOR653JA.js.map +1 -0
  37. package/dist/chunk-NJN7EGGK.js +2 -0
  38. package/dist/{chunk-PAAKWKLA.js.map → chunk-NJN7EGGK.js.map} +1 -1
  39. package/dist/chunk-OOYWOWHR.js +2 -0
  40. package/dist/{chunk-Z37UM6ED.js.map → chunk-OOYWOWHR.js.map} +1 -1
  41. package/dist/chunk-OTQ3BR2A.js +2 -0
  42. package/dist/chunk-OTQ3BR2A.js.map +1 -0
  43. package/dist/chunk-OX6FVDUT.js +2 -0
  44. package/dist/{chunk-UTZ7XOUK.js.map → chunk-OX6FVDUT.js.map} +1 -1
  45. package/dist/chunk-RMSYYUQM.js +2 -0
  46. package/dist/{chunk-OV2SJGU3.js.map → chunk-RMSYYUQM.js.map} +1 -1
  47. package/dist/chunk-TL6JXN6O.js +175 -0
  48. package/dist/chunk-ZOBZU47M.js +2 -0
  49. package/dist/chunk-ZOBZU47M.js.map +1 -0
  50. package/dist/core-handler-XAVVKLhV.d.ts +37 -0
  51. package/dist/datetime-XX4YBITU.js +2 -0
  52. package/dist/{datetime-GOUY7ZJZ.js.map → datetime-XX4YBITU.js.map} +1 -1
  53. package/dist/editor-ZLTDOUPT.js +2 -0
  54. package/dist/{editor-IK2CNBJV.js.map → editor-ZLTDOUPT.js.map} +1 -1
  55. package/dist/index.css +1007 -917
  56. package/dist/index.d.ts +64 -9
  57. package/dist/index.js +347 -14
  58. package/dist/index.js.map +1 -1
  59. package/dist/logo-LB22KTDD.js +3 -0
  60. package/dist/{logo-4JW3ZQGP.js.map → logo-LB22KTDD.js.map} +1 -1
  61. package/dist/{ssr.d.ts → nextjs.d.ts} +2 -15
  62. package/dist/nextjs.js +71 -0
  63. package/dist/project-selector-4G4WL2XQ.js +2 -0
  64. package/dist/{project-selector-6UNKDUFP.js.map → project-selector-4G4WL2XQ.js.map} +1 -1
  65. package/dist/search-CKPEOD77.js +2 -0
  66. package/dist/{search-XZ52MCGA.js.map → search-CKPEOD77.js.map} +1 -1
  67. package/dist/switch-FU7XZ34K.js +2 -0
  68. package/dist/{switch-GWTYDHPW.js.map → switch-FU7XZ34K.js.map} +1 -1
  69. package/dist/tanstack-start.d.ts +99 -0
  70. package/dist/tanstack-start.js +147 -0
  71. package/dist/text-DFG6LLN6.js +2 -0
  72. package/dist/{text-OSJFNY7L.js.map → text-DFG6LLN6.js.map} +1 -1
  73. package/dist/text-LNFBPXBT.js +2 -0
  74. package/dist/{text-Y2ITNUWV.js.map → text-LNFBPXBT.js.map} +1 -1
  75. package/dist/textarea-XFHA5IEI.js +2 -0
  76. package/dist/{textarea-J6THGASV.js.map → textarea-XFHA5IEI.js.map} +1 -1
  77. package/dist/{types-RVyP_Twi.d.ts → types.d-CH6seXQw.d.ts} +108 -1
  78. package/dist/ui.d.ts +10 -11
  79. package/dist/ui.js +1 -1
  80. package/dist/ui.js.map +1 -1
  81. package/dist/user-nav-5LW5USDZ.js +2 -0
  82. package/dist/{user-nav-MAMF3XX5.js.map → user-nav-5LW5USDZ.js.map} +1 -1
  83. package/package.json +39 -16
  84. package/dist/asset-F2SF5UHA.js +0 -2
  85. package/dist/boolean-IUJXXA2D.js +0 -2
  86. package/dist/chunk-2DBX42KN.js +0 -2
  87. package/dist/chunk-2DBX42KN.js.map +0 -1
  88. package/dist/chunk-7ZFZY5R4.js +0 -2
  89. package/dist/chunk-A6DNMUGW.js +0 -2
  90. package/dist/chunk-EQ3526ET.js +0 -2
  91. package/dist/chunk-EQ3526ET.js.map +0 -1
  92. package/dist/chunk-G3L524HS.js +0 -2
  93. package/dist/chunk-GHV46F5V.js +0 -2
  94. package/dist/chunk-GXUHAW3R.js +0 -2
  95. package/dist/chunk-GXUHAW3R.js.map +0 -1
  96. package/dist/chunk-JB2CLKHS.js +0 -2
  97. package/dist/chunk-JB2CLKHS.js.map +0 -1
  98. package/dist/chunk-JNAHBJHF.js +0 -2
  99. package/dist/chunk-JNAHBJHF.js.map +0 -1
  100. package/dist/chunk-LEEJFMT6.js +0 -2
  101. package/dist/chunk-LEEJFMT6.js.map +0 -1
  102. package/dist/chunk-NM3JPB46.js +0 -2
  103. package/dist/chunk-NM3JPB46.js.map +0 -1
  104. package/dist/chunk-OBDHNFM5.js +0 -2
  105. package/dist/chunk-OBDHNFM5.js.map +0 -1
  106. package/dist/chunk-OBWXS7PQ.js +0 -2
  107. package/dist/chunk-OJCXEL7M.js +0 -2
  108. package/dist/chunk-OJCXEL7M.js.map +0 -1
  109. package/dist/chunk-OTLHY3ST.js +0 -2
  110. package/dist/chunk-OTLHY3ST.js.map +0 -1
  111. package/dist/chunk-OV2SJGU3.js +0 -2
  112. package/dist/chunk-PAAKWKLA.js +0 -2
  113. package/dist/chunk-RUXKF224.js +0 -2
  114. package/dist/chunk-RUXKF224.js.map +0 -1
  115. package/dist/chunk-SHVY2WXV.js +0 -3
  116. package/dist/chunk-SHVY2WXV.js.map +0 -1
  117. package/dist/chunk-TKD36DLT.js +0 -2
  118. package/dist/chunk-TKD36DLT.js.map +0 -1
  119. package/dist/chunk-UTZ7XOUK.js +0 -2
  120. package/dist/chunk-UZTABGUM.js +0 -334
  121. package/dist/chunk-UZTABGUM.js.map +0 -1
  122. package/dist/chunk-VVAW7U22.js +0 -2
  123. package/dist/chunk-VVAW7U22.js.map +0 -1
  124. package/dist/chunk-W632YC7D.js +0 -2
  125. package/dist/chunk-W632YC7D.js.map +0 -1
  126. package/dist/chunk-WEMBNSFH.js +0 -2
  127. package/dist/chunk-Z37UM6ED.js +0 -2
  128. package/dist/chunk-ZUOOAEAL.js +0 -2
  129. package/dist/chunk-ZUOOAEAL.js.map +0 -1
  130. package/dist/data-grid/index.d.ts +0 -59
  131. package/dist/data-grid/index.js +0 -4
  132. package/dist/data-grid/index.js.map +0 -1
  133. package/dist/datetime-GOUY7ZJZ.js +0 -2
  134. package/dist/editor-IK2CNBJV.js +0 -2
  135. package/dist/logo-4JW3ZQGP.js +0 -3
  136. package/dist/project-selector-6UNKDUFP.js +0 -2
  137. package/dist/search-XZ52MCGA.js +0 -2
  138. package/dist/ssr.js +0 -3
  139. package/dist/ssr.js.map +0 -1
  140. package/dist/switch-GWTYDHPW.js +0 -2
  141. package/dist/text-OSJFNY7L.js +0 -2
  142. package/dist/text-Y2ITNUWV.js +0 -2
  143. package/dist/textarea-J6THGASV.js +0 -2
  144. package/dist/types.d-DEo8bqfV.d.ts +0 -110
  145. package/dist/user-nav-MAMF3XX5.js +0 -2
@@ -0,0 +1,3 @@
1
+ import'./index.css';import {jsx,jsxs}from'react/jsx-runtime';function L({title:t,theme:i}){return jsx("a",{className:"fk-flex fk-items-center",href:"/",title:t,children:i==="light"?jsxs("svg",{className:"fk-h-8 fk-w-8",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"white"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"#020817"})]}):jsxs("svg",{className:"fk-h-8 fk-w-8",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"#020817"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"white"})]})})}
2
+ export{L as Logo};//# sourceMappingURL=logo-LB22KTDD.js.map
3
+ //# sourceMappingURL=logo-LB22KTDD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/components/logo.tsx"],"names":["Logo","title","theme","jsx","jsxs"],"mappings":"yCAAO,SAASA,CAAAA,CAAK,CAAE,KAAA,CAAAC,CAAAA,CAAO,MAAAC,CAAM,CAAA,CAA8D,CAChG,OACEC,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,yBAAA,CAA0B,IAAA,CAAK,IAAI,KAAA,CAAOF,CAAAA,CACpD,QAAA,CAAAC,CAAAA,GAAU,QACTE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CAAgB,KAAK,MAAA,CAAO,OAAA,CAAQ,YAAY,KAAA,CAAM,4BAAA,CACnE,UAAAD,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,iBAAA,CAAkB,KAAK,OAAA,CAAQ,CAAA,CACvCA,GAAAA,CAAC,MAAA,CAAA,CACC,EAAE,sRAAA,CACF,IAAA,CAAK,SAAA,CACP,CAAA,CAAA,CACF,EAEAC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CAAgB,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAA,CAAY,KAAA,CAAM,6BACnE,QAAA,CAAA,CAAAD,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,kBAAkB,IAAA,CAAK,SAAA,CAAU,CAAA,CACzCA,GAAAA,CAAC,QACC,CAAA,CAAE,sRAAA,CACF,KAAK,OAAA,CACP,CAAA,CAAA,CACF,EAEJ,CAEJ","file":"logo-4JW3ZQGP.js","sourcesContent":["export function Logo({ title, theme }: { title: string; theme: string | undefined }): JSX.Element {\n return (\n <a className=\"fk-flex fk-items-center\" href=\"/\" title={title}>\n {theme === 'light' ? (\n <svg className=\"fk-h-8 fk-w-8\" fill=\"none\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 8H41V40H7V8Z\" fill=\"white\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"#020817\"\n />\n </svg>\n ) : (\n <svg className=\"fk-h-8 fk-w-8\" fill=\"none\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 8H41V40H7V8Z\" fill=\"#020817\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"white\"\n />\n </svg>\n )}\n </a>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/ui/components/logo.tsx"],"names":["Logo","title","theme","jsx","jsxs"],"mappings":"6DAAO,SAASA,CAAAA,CAAK,CAAE,KAAA,CAAAC,CAAAA,CAAO,MAAAC,CAAM,CAAA,CAA8D,CAChG,OACEC,IAAC,GAAA,CAAA,CAAE,SAAA,CAAU,yBAAA,CAA0B,IAAA,CAAK,IAAI,KAAA,CAAOF,CAAAA,CACpD,QAAA,CAAAC,CAAAA,GAAU,QACTE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CAAgB,KAAK,MAAA,CAAO,OAAA,CAAQ,YAAY,KAAA,CAAM,4BAAA,CACnE,UAAAD,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,iBAAA,CAAkB,KAAK,OAAA,CAAQ,CAAA,CACvCA,GAAAA,CAAC,MAAA,CAAA,CACC,EAAE,sRAAA,CACF,IAAA,CAAK,SAAA,CACP,CAAA,CAAA,CACF,EAEAC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CAAgB,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAA,CAAY,KAAA,CAAM,6BACnE,QAAA,CAAA,CAAAD,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,kBAAkB,IAAA,CAAK,SAAA,CAAU,CAAA,CACzCA,GAAAA,CAAC,QACC,CAAA,CAAE,sRAAA,CACF,KAAK,OAAA,CACP,CAAA,CAAA,CACF,EAEJ,CAEJ","file":"logo-LB22KTDD.js","sourcesContent":["export function Logo({ title, theme }: { title: string; theme: string | undefined }): JSX.Element {\n return (\n <a className=\"fk-flex fk-items-center\" href=\"/\" title={title}>\n {theme === 'light' ? (\n <svg className=\"fk-h-8 fk-w-8\" fill=\"none\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 8H41V40H7V8Z\" fill=\"white\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"#020817\"\n />\n </svg>\n ) : (\n <svg className=\"fk-h-8 fk-w-8\" fill=\"none\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 8H41V40H7V8Z\" fill=\"#020817\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"white\"\n />\n </svg>\n )}\n </a>\n );\n}\n"]}
@@ -1,17 +1,4 @@
1
- import { C as Config } from './types.d-DEo8bqfV.js';
2
- import { E as Entity } from './types-RVyP_Twi.js';
3
- import 'react';
4
- import 'react-hook-form';
5
- import 'zod';
6
- import '@apollo/client';
7
-
8
- declare function getToken(code: string): Promise<{
9
- sid: string;
10
- }>;
11
-
12
- declare function defineConfig<T extends Config>(config: T): T;
13
-
14
- declare function defineEntity<T extends Entity>(entity: T): T;
1
+ export { F as FlexkitHandlerContext, a as FlexkitHandlerResult, h as handleFlexkitRequest } from './core-handler-XAVVKLhV.js';
15
2
 
16
3
  /**
17
4
  * Type definitions for the Next.js API handler
@@ -54,4 +41,4 @@ interface NextJsDependencies {
54
41
  */
55
42
  declare function createFlexkitApiHandler(dependencies: NextJsDependencies): FlexkitApiHandler;
56
43
 
57
- export { createFlexkitApiHandler, defineConfig, defineEntity, getToken };
44
+ export { createFlexkitApiHandler };
package/dist/nextjs.js ADDED
@@ -0,0 +1,71 @@
1
+ import {
2
+ handleFlexkitRequest
3
+ } from "./chunk-TL6JXN6O.js";
4
+
5
+ // src/auth/nextjs-api.ts
6
+ function resultToNextResponse(result, NextResponse) {
7
+ const responseHeaders = new Headers(result.headers);
8
+ if (result.setCookie) {
9
+ responseHeaders.set("Set-Cookie", result.setCookie);
10
+ }
11
+ if (result.type === "redirect") {
12
+ return new NextResponse("Redirecting...", {
13
+ status: result.status,
14
+ headers: responseHeaders
15
+ });
16
+ }
17
+ if (result.type === "text") {
18
+ return new NextResponse(result.body, {
19
+ status: result.status,
20
+ headers: responseHeaders
21
+ });
22
+ }
23
+ if (result.type === "response") {
24
+ return new NextResponse(result.body, {
25
+ status: result.status,
26
+ headers: responseHeaders
27
+ });
28
+ }
29
+ return NextResponse.json(result.body, { status: result.status });
30
+ }
31
+ function createFlexkitApiHandler(dependencies) {
32
+ const { NextResponse, cookies, headers } = dependencies;
33
+ const handleRequest = async (request) => {
34
+ const cookieStore = await cookies();
35
+ const headersList = await headers();
36
+ const sessionToken = cookieStore.get("sessionToken")?.value ?? "";
37
+ const contentType = request.headers.get("content-type") ?? headersList.get("content-type");
38
+ const { pathname, search } = request.nextUrl;
39
+ const requestHeaders = new Headers(request.headers);
40
+ if (!requestHeaders.has("Content-Type")) {
41
+ requestHeaders.set("Content-Type", contentType ?? "application/json");
42
+ }
43
+ const standardRequest = new Request(request.url, {
44
+ method: request.method,
45
+ headers: requestHeaders,
46
+ body: request.method !== "GET" && request.method !== "HEAD" ? request.body : void 0,
47
+ // @ts-expect-error - duplex is required for streaming bodies
48
+ duplex: "half"
49
+ });
50
+ const result = await handleFlexkitRequest({
51
+ request: standardRequest,
52
+ pathname,
53
+ search,
54
+ sessionToken,
55
+ contentType
56
+ });
57
+ return resultToNextResponse(result, NextResponse);
58
+ };
59
+ return {
60
+ GET: handleRequest,
61
+ POST: handleRequest,
62
+ PUT: handleRequest,
63
+ PATCH: handleRequest,
64
+ DELETE: handleRequest,
65
+ handler: handleRequest
66
+ };
67
+ }
68
+ export {
69
+ createFlexkitApiHandler,
70
+ handleFlexkitRequest
71
+ };
@@ -0,0 +1,2 @@
1
+ import'./index.css';import {a,d,c,g,i}from'./chunk-2RBOTHKE.js';import'./chunk-AXB7FQV2.js';import {useState}from'react';import {useNavigate}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';function k({projectId:S,projects:t}){let[r,d$1]=useState(t.find(e=>e.projectId===S)??t[0]),m=useNavigate();return jsxs(a,{defaultValue:r.projectId,onValueChange:e=>{let c=t.find(f=>f.projectId===e)??t[0],{basePath:s}=c;d$1(c),m(`${s}/${c.projectId}`);},children:[jsx(d,{className:"fk-w-[12rem] fk-h-9 fk-py-1",id:"project",children:jsx(c,{"aria-label":r.title,children:r.title})}),jsx(g,{children:t.map(e=>jsx(i,{value:e.projectId,children:e.title},e.projectId))})]})}export{k as ProjectSelector};//# sourceMappingURL=project-selector-4G4WL2XQ.js.map
2
+ //# sourceMappingURL=project-selector-4G4WL2XQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/components/project-selector.tsx"],"names":["ProjectSelector","projectId","projects","selectedProject","setSelectedProject","useState","project","navigate","useNavigate","jsxs","Select","id","currentProject","basePath","jsx","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"yLAUO,SAASA,CAAAA,CAAgB,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAuB,CAC3E,GAAM,CAACC,CAAAA,CAAiBC,GAAkB,CAAA,CAAIC,QAAAA,CAC5CH,CAAAA,CAAS,IAAA,CAAMI,CAAAA,EAAYA,CAAAA,CAAQ,SAAA,GAAcL,CAAS,CAAA,EAAKC,CAAAA,CAAS,CAAC,CAC3E,CAAA,CACMK,CAAAA,CAAWC,WAAAA,EAAY,CAE7B,OACEC,IAAAA,CAACC,CAAAA,CAAA,CACC,YAAA,CAAcP,CAAAA,CAAgB,SAAA,CAC9B,aAAA,CAAgBQ,CAAAA,EAAO,CACrB,IAAMC,CAAAA,CAAiBV,CAAAA,CAAS,IAAA,CAAMI,CAAAA,EAAYA,CAAAA,CAAQ,SAAA,GAAcK,CAAE,CAAA,EAAKT,EAAS,CAAC,CAAA,CACnF,CAAE,QAAA,CAAAW,CAAS,CAAA,CAAID,CAAAA,CAErBR,GAAAA,CAAmBQ,CAAc,CAAA,CACjCL,CAAAA,CAAS,CAAA,EAAGM,CAAQ,CAAA,CAAA,EAAID,CAAAA,CAAe,SAAS,CAAA,CAAE,EACpD,CAAA,CAEA,QAAA,CAAA,CAAAE,GAAAA,CAACC,CAAAA,CAAA,CAAc,SAAA,CAAU,6BAAA,CAA8B,EAAA,CAAG,SAAA,CACxD,QAAA,CAAAD,GAAAA,CAACE,CAAAA,CAAA,CAAY,YAAA,CAAYb,CAAAA,CAAgB,KAAA,CAAQ,QAAA,CAAAA,CAAAA,CAAgB,KAAA,CAAM,CAAA,CACzE,CAAA,CACAW,GAAAA,CAACG,CAAAA,CAAA,CACE,QAAA,CAAAf,CAAAA,CAAS,GAAA,CAAKI,CAAAA,EACbQ,GAAAA,CAACI,CAAAA,CAAA,CAAmC,KAAA,CAAOZ,CAAAA,CAAQ,SAAA,CAChD,QAAA,CAAAA,CAAAA,CAAQ,KAAA,CAAA,CADMA,CAAAA,CAAQ,SAEzB,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAEJ","file":"project-selector-6UNKDUFP.js","sourcesContent":["import { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../primitives/select';\nimport type { ProjectOptions } from '../../core/config/types';\n\ntype Props = {\n projectId: string;\n projects: ProjectOptions[];\n};\n\nexport function ProjectSelector({ projectId, projects }: Props): JSX.Element {\n const [selectedProject, setSelectedProject] = useState(\n projects.find((project) => project.projectId === projectId) ?? projects[0]\n );\n const navigate = useNavigate();\n\n return (\n <Select\n defaultValue={selectedProject.projectId}\n onValueChange={(id) => {\n const currentProject = projects.find((project) => project.projectId === id) ?? projects[0];\n const { basePath } = currentProject;\n\n setSelectedProject(currentProject);\n navigate(`${basePath}/${currentProject.projectId}`);\n }}\n >\n <SelectTrigger className=\"fk-w-[12rem] fk-h-9 fk-py-1\" id=\"project\">\n <SelectValue aria-label={selectedProject.title}>{selectedProject.title}</SelectValue>\n </SelectTrigger>\n <SelectContent>\n {projects.map((project) => (\n <SelectItem key={project.projectId} value={project.projectId}>\n {project.title}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/ui/components/project-selector.tsx"],"names":["ProjectSelector","projectId","projects","selectedProject","setSelectedProject","useState","project","navigate","useNavigate","jsxs","Select","id","currentProject","basePath","jsx","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"6MAUO,SAASA,CAAAA,CAAgB,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAuB,CAC3E,GAAM,CAACC,CAAAA,CAAiBC,GAAkB,CAAA,CAAIC,QAAAA,CAC5CH,CAAAA,CAAS,IAAA,CAAMI,CAAAA,EAAYA,CAAAA,CAAQ,SAAA,GAAcL,CAAS,CAAA,EAAKC,CAAAA,CAAS,CAAC,CAC3E,CAAA,CACMK,CAAAA,CAAWC,WAAAA,EAAY,CAE7B,OACEC,IAAAA,CAACC,CAAAA,CAAA,CACC,YAAA,CAAcP,CAAAA,CAAgB,SAAA,CAC9B,aAAA,CAAgBQ,CAAAA,EAAO,CACrB,IAAMC,CAAAA,CAAiBV,CAAAA,CAAS,IAAA,CAAMI,CAAAA,EAAYA,CAAAA,CAAQ,SAAA,GAAcK,CAAE,CAAA,EAAKT,EAAS,CAAC,CAAA,CACnF,CAAE,QAAA,CAAAW,CAAS,CAAA,CAAID,CAAAA,CAErBR,GAAAA,CAAmBQ,CAAc,CAAA,CACjCL,CAAAA,CAAS,CAAA,EAAGM,CAAQ,CAAA,CAAA,EAAID,CAAAA,CAAe,SAAS,CAAA,CAAE,EACpD,CAAA,CAEA,QAAA,CAAA,CAAAE,GAAAA,CAACC,CAAAA,CAAA,CAAc,SAAA,CAAU,6BAAA,CAA8B,EAAA,CAAG,SAAA,CACxD,QAAA,CAAAD,GAAAA,CAACE,CAAAA,CAAA,CAAY,YAAA,CAAYb,CAAAA,CAAgB,KAAA,CAAQ,QAAA,CAAAA,CAAAA,CAAgB,KAAA,CAAM,CAAA,CACzE,CAAA,CACAW,GAAAA,CAACG,CAAAA,CAAA,CACE,QAAA,CAAAf,CAAAA,CAAS,GAAA,CAAKI,CAAAA,EACbQ,GAAAA,CAACI,CAAAA,CAAA,CAAmC,KAAA,CAAOZ,CAAAA,CAAQ,SAAA,CAChD,QAAA,CAAAA,CAAAA,CAAQ,KAAA,CAAA,CADMA,CAAAA,CAAQ,SAEzB,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAEJ","file":"project-selector-4G4WL2XQ.js","sourcesContent":["import { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../primitives/select';\nimport type { ProjectOptions } from '../../core/config/types';\n\ntype Props = {\n projectId: string;\n projects: ProjectOptions[];\n};\n\nexport function ProjectSelector({ projectId, projects }: Props): JSX.Element {\n const [selectedProject, setSelectedProject] = useState(\n projects.find((project) => project.projectId === projectId) ?? projects[0]\n );\n const navigate = useNavigate();\n\n return (\n <Select\n defaultValue={selectedProject.projectId}\n onValueChange={(id) => {\n const currentProject = projects.find((project) => project.projectId === id) ?? projects[0];\n const { basePath } = currentProject;\n\n setSelectedProject(currentProject);\n navigate(`${basePath}/${currentProject.projectId}`);\n }}\n >\n <SelectTrigger className=\"fk-w-[12rem] fk-h-9 fk-py-1\" id=\"project\">\n <SelectValue aria-label={selectedProject.title}>{selectedProject.title}</SelectValue>\n </SelectTrigger>\n <SelectContent>\n {projects.map((project) => (\n <SelectItem key={project.projectId} value={project.projectId}>\n {project.title}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import'./index.css';import {j}from'./chunk-MOR653JA.js';import {m,v,q,p,r,t,b}from'./chunk-ZOBZU47M.js';import'./chunk-7YBJLUUE.js';import {a}from'./chunk-AXB7FQV2.js';import {useState,useMemo,useRef}from'react';import {LoaderCircle,Search,X}from'lucide-react';import {Command}from'cmdk';import {useNavigate}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';var z=f=>({searchRequests:{searches:f.filter(a=>a.attributes.some(i=>i.isSearchable)).map(a=>a.plural).map(a=>({collection:a}))},commonParams:{q:""}});function Y({onSelect:f,searchPlaceholder:k="Search...",noResultsMsg:a$1="Nothing found",className:i,onSearchChange:u,projectId:P,schema:d}){let[I,o]=useState(false),[p$1,h]=useState(""),l=useMemo(()=>z(d),[d]),[R,g]=useState(l),r$1=useRef(null),{results:y,isLoading:E}=j(P,R),L=useNavigate();function B(e){h(e),e.length>0&&(o(true),g({...l,commonParams:{q:e}})),e.length===0&&o(false),u&&u(e);}function _(){h(""),o(false),g(l),r$1.current&&(r$1.current.value="");let e=new URL(window.location.href);e.searchParams.has("id")&&(e.searchParams.delete("id"),L(e.pathname+e.search));}return jsxs(m,{className:"fk-relative fk-overflow-visible fk-h-auto",onBlur:()=>{setTimeout(()=>{o(false);},300);},onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),o(false));},shouldFilter:false,children:[jsxs("div",{className:a("fk-flex fk-items-center fk-border fk-border-border fk-rounded-md fk-px-3 fk-h-9 md:fk-w-[100px] lg:fk-w-[300px] fk-ring-offset-background","focus-within:fk-outline-none focus-within:fk-ring-2 focus-within:fk-ring-ring focus-within:fk-ring-offset-2"),children:[E?jsx(LoaderCircle,{className:"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50 fk-animate-spin"}):jsx(Search,{className:"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50"}),jsx(Command.Input,{className:a("fk-flex fk-h-9 fk-w-full fk-rounded-md fk-bg-transparent fk-py-1 fk-text-sm fk-outline-none placeholder:fk-text-muted-foreground disabled:fk-cursor-not-allowed disabled:fk-opacity-50",i),placeholder:k,onMouseDown:()=>{(r$1.current?.value.length??0)>0&&o(true);},onValueChange:B,ref:r$1,value:p$1}),p$1&&jsx("button",{className:"fk-flex fk-items-center fk-justify-center fk-ml-2 fk-text-muted-foreground hover:fk-text-foreground",onClick:_,type:"button",children:jsx(X,{className:"fk-h-4 fk-w-4"})})]}),jsx("div",{className:"fk-relative fk-max-w-[600px]",children:jsx("div",{className:a("fk-mt-1 fk-animate-in fk-fade-in-0 fk-zoom-in-95 fk-absolute fk-top-0 fk-z-10 fk-w-full fk-rounded-md fk-bg-popover fk-outline-none fk-drop-shadow-md fk-border fk-border-border",I?"fk-block":"fk-hidden"),children:jsxs(v,{className:"fk-max-h-[220px] fk-overflow-auto",children:[jsx(q,{children:a$1}),jsx(p,{children:jsxs(r,{children:[y.length>0&&jsx(t,{className:"fk-hidden",value:"-"}),y.map(e=>jsxs(t,{className:"fk-flex",value:e._id,onSelect:M=>{f({entityName:e._entityName,entityNamePlural:e._entityNamePlural,entityId:M});},children:[jsx("span",{className:"fk-basis-full",children:e[Object.keys(e)[3]]}),jsx(b,{className:"fk-py-px fk-text-[0.6875rem] fk-leading-3 fk-bg-teal-400",children:e._entityName})]},e._id))]})})]})})})]})}export{Y as Search};//# sourceMappingURL=search-CKPEOD77.js.map
2
+ //# sourceMappingURL=search-CKPEOD77.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/components/search.tsx"],"names":["getBaseSearchRequest","schema","entity","attr","collection","Search","onSelect","searchPlaceholder","noResultsMsg","className","onSearchChange","projectId","isOpen","setIsOpen","useState","inputValue","setInputValue","searchRequest","useMemo","searchQuery","setSearchQuery","inputRef","useRef","results","isLoading","useSearch","navigate","useNavigate","handleOnSearchChange","q","handleClear","url","jsxs","Command","cn","jsx","LoaderCircle","SearchIcon","CommandPrimitive","XIcon","ScrollArea","CommandEmpty","CommandList","CommandGroup","CommandItem","item","entityId","Badge"],"mappings":"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","file":"search-XZ52MCGA.js","sourcesContent":["'use client';\n\nimport { useRef, useState, useMemo } from 'react';\nimport { LoaderCircle, Search as SearchIcon, X as XIcon } from 'lucide-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { useNavigate } from 'react-router-dom';\nimport { useSearch } from '../../core/use-search';\nimport { cn } from '../lib/utils';\nimport { Badge } from '../primitives/badge';\nimport { Command, CommandEmpty, CommandGroup, CommandItem, CommandList } from '../primitives/command';\nimport { ScrollArea } from '../primitives/scroll-area';\nimport type { Entity, SearchRequestProps } from '../../core/types';\n\nexport type ComboBoxItemType = {\n value: string;\n label: string;\n};\n\nexport interface SearchProps {\n onSelect: ({\n entityName,\n entityNamePlural,\n entityId,\n }: {\n entityName: string;\n entityNamePlural: string;\n entityId: string;\n }) => void;\n searchPlaceholder?: string;\n noResultsMsg?: string;\n className?: string;\n onSearchChange?: (e: string) => void;\n projectId: string;\n schema: Entity[];\n}\n\nconst getBaseSearchRequest = (schema: Entity[]): SearchRequestProps => {\n const collections = schema\n .filter((entity) => entity.attributes.some((attr) => attr.isSearchable))\n .map((entity) => entity.plural);\n\n return {\n searchRequests: {\n searches: collections.map((collection) => ({\n collection,\n })),\n },\n commonParams: {\n q: '',\n },\n };\n};\n\nexport function Search({\n onSelect,\n searchPlaceholder = 'Search...',\n noResultsMsg = 'Nothing found',\n className,\n onSearchChange,\n projectId,\n schema,\n}: SearchProps): JSX.Element {\n const [isOpen, setIsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const searchRequest = useMemo(() => getBaseSearchRequest(schema), [schema]);\n const [searchQuery, setSearchQuery] = useState(searchRequest);\n const inputRef = useRef<HTMLInputElement>(null);\n const { results, isLoading } = useSearch(projectId, searchQuery);\n const navigate = useNavigate();\n\n function handleOnSearchChange(q: string): void {\n setInputValue(q);\n // TODO: Add debounce\n if (q.length > 0) {\n setIsOpen(true);\n setSearchQuery({ ...searchRequest, commonParams: { q } });\n }\n\n if (q.length === 0) setIsOpen(false);\n\n if (onSearchChange) {\n onSearchChange(q);\n }\n }\n\n function handleClear(): void {\n setInputValue('');\n setIsOpen(false);\n setSearchQuery(searchRequest);\n\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n\n // Remove id from URL if present\n const url = new URL(window.location.href);\n\n if (url.searchParams.has('id')) {\n url.searchParams.delete('id');\n navigate(url.pathname + url.search);\n }\n }\n\n // TODO: handle error\n\n return (\n <Command\n className=\"fk-relative fk-overflow-visible fk-h-auto\"\n onBlur={() => {\n // close after a delay to allow any click event from the results list to be handled\n setTimeout(() => {\n setIsOpen(false);\n }, 300);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setIsOpen(false);\n }\n }}\n shouldFilter={false}\n >\n <div\n className={cn(\n 'fk-flex fk-items-center fk-border fk-border-border fk-rounded-md fk-px-3 fk-h-9 md:fk-w-[100px] lg:fk-w-[300px] fk-ring-offset-background',\n 'focus-within:fk-outline-none focus-within:fk-ring-2 focus-within:fk-ring-ring focus-within:fk-ring-offset-2'\n )}\n >\n {isLoading ? (\n <LoaderCircle className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50 fk-animate-spin\" />\n ) : (\n <SearchIcon className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50\" />\n )}\n <CommandPrimitive.Input\n className={cn(\n 'fk-flex fk-h-9 fk-w-full fk-rounded-md fk-bg-transparent fk-py-1 fk-text-sm fk-outline-none placeholder:fk-text-muted-foreground disabled:fk-cursor-not-allowed disabled:fk-opacity-50',\n className\n )}\n placeholder={searchPlaceholder}\n onMouseDown={() => {\n if ((inputRef.current?.value.length ?? 0) > 0) setIsOpen(true);\n }}\n onValueChange={handleOnSearchChange}\n ref={inputRef}\n value={inputValue}\n />\n {inputValue && (\n <button\n className=\"fk-flex fk-items-center fk-justify-center fk-ml-2 fk-text-muted-foreground hover:fk-text-foreground\"\n onClick={handleClear}\n type=\"button\"\n >\n <XIcon className=\"fk-h-4 fk-w-4\" />\n </button>\n )}\n </div>\n <div className=\"fk-relative fk-max-w-[600px]\">\n <div\n className={cn(\n 'fk-mt-1 fk-animate-in fk-fade-in-0 fk-zoom-in-95 fk-absolute fk-top-0 fk-z-10 fk-w-full fk-rounded-md fk-bg-popover fk-outline-none fk-drop-shadow-md fk-border fk-border-border',\n isOpen ? 'fk-block' : 'fk-hidden'\n )}\n >\n <ScrollArea className=\"fk-max-h-[220px] fk-overflow-auto\">\n <CommandEmpty>{noResultsMsg}</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {results.length > 0 && <CommandItem className=\"fk-hidden\" value=\"-\" />}\n {results.map((item) => (\n <CommandItem\n className=\"fk-flex\"\n key={item._id}\n value={item._id}\n onSelect={(entityId) => {\n onSelect({ entityName: item._entityName, entityNamePlural: item._entityNamePlural, entityId });\n }}\n >\n <span className=\"fk-basis-full\">{item[Object.keys(item)[3]]}</span>\n <Badge className=\"fk-py-px fk-text-[0.6875rem] fk-leading-3 fk-bg-teal-400\">\n {item._entityName}\n </Badge>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </ScrollArea>\n </div>\n </div>\n </Command>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/ui/components/search.tsx"],"names":["getBaseSearchRequest","schema","entity","attr","collection","Search","onSelect","searchPlaceholder","noResultsMsg","className","onSearchChange","projectId","isOpen","setIsOpen","useState","inputValue","setInputValue","searchRequest","useMemo","searchQuery","setSearchQuery","inputRef","useRef","results","isLoading","useSearch","navigate","useNavigate","handleOnSearchChange","q","handleClear","url","jsxs","Command","cn","jsx","LoaderCircle","SearchIcon","CommandPrimitive","XIcon","ScrollArea","CommandEmpty","CommandList","CommandGroup","CommandItem","item","entityId","Badge"],"mappings":"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","file":"search-CKPEOD77.js","sourcesContent":["'use client';\n\nimport { useRef, useState, useMemo } from 'react';\nimport { LoaderCircle, Search as SearchIcon, X as XIcon } from 'lucide-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { useNavigate } from 'react-router-dom';\nimport { useSearch } from '../../core/use-search';\nimport { cn } from '../lib/utils';\nimport { Badge } from '../primitives/badge';\nimport { Command, CommandEmpty, CommandGroup, CommandItem, CommandList } from '../primitives/command';\nimport { ScrollArea } from '../primitives/scroll-area';\nimport type { Entity, SearchRequestProps } from '../../core/types';\n\nexport type ComboBoxItemType = {\n value: string;\n label: string;\n};\n\nexport interface SearchProps {\n onSelect: ({\n entityName,\n entityNamePlural,\n entityId,\n }: {\n entityName: string;\n entityNamePlural: string;\n entityId: string;\n }) => void;\n searchPlaceholder?: string;\n noResultsMsg?: string;\n className?: string;\n onSearchChange?: (e: string) => void;\n projectId: string;\n schema: Entity[];\n}\n\nconst getBaseSearchRequest = (schema: Entity[]): SearchRequestProps => {\n const collections = schema\n .filter((entity) => entity.attributes.some((attr) => attr.isSearchable))\n .map((entity) => entity.plural);\n\n return {\n searchRequests: {\n searches: collections.map((collection) => ({\n collection,\n })),\n },\n commonParams: {\n q: '',\n },\n };\n};\n\nexport function Search({\n onSelect,\n searchPlaceholder = 'Search...',\n noResultsMsg = 'Nothing found',\n className,\n onSearchChange,\n projectId,\n schema,\n}: SearchProps): JSX.Element {\n const [isOpen, setIsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const searchRequest = useMemo(() => getBaseSearchRequest(schema), [schema]);\n const [searchQuery, setSearchQuery] = useState(searchRequest);\n const inputRef = useRef<HTMLInputElement>(null);\n const { results, isLoading } = useSearch(projectId, searchQuery);\n const navigate = useNavigate();\n\n function handleOnSearchChange(q: string): void {\n setInputValue(q);\n // TODO: Add debounce\n if (q.length > 0) {\n setIsOpen(true);\n setSearchQuery({ ...searchRequest, commonParams: { q } });\n }\n\n if (q.length === 0) setIsOpen(false);\n\n if (onSearchChange) {\n onSearchChange(q);\n }\n }\n\n function handleClear(): void {\n setInputValue('');\n setIsOpen(false);\n setSearchQuery(searchRequest);\n\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n\n // Remove id from URL if present\n const url = new URL(window.location.href);\n\n if (url.searchParams.has('id')) {\n url.searchParams.delete('id');\n navigate(url.pathname + url.search);\n }\n }\n\n // TODO: handle error\n\n return (\n <Command\n className=\"fk-relative fk-overflow-visible fk-h-auto\"\n onBlur={() => {\n // close after a delay to allow any click event from the results list to be handled\n setTimeout(() => {\n setIsOpen(false);\n }, 300);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setIsOpen(false);\n }\n }}\n shouldFilter={false}\n >\n <div\n className={cn(\n 'fk-flex fk-items-center fk-border fk-border-border fk-rounded-md fk-px-3 fk-h-9 md:fk-w-[100px] lg:fk-w-[300px] fk-ring-offset-background',\n 'focus-within:fk-outline-none focus-within:fk-ring-2 focus-within:fk-ring-ring focus-within:fk-ring-offset-2'\n )}\n >\n {isLoading ? (\n <LoaderCircle className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50 fk-animate-spin\" />\n ) : (\n <SearchIcon className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50\" />\n )}\n <CommandPrimitive.Input\n className={cn(\n 'fk-flex fk-h-9 fk-w-full fk-rounded-md fk-bg-transparent fk-py-1 fk-text-sm fk-outline-none placeholder:fk-text-muted-foreground disabled:fk-cursor-not-allowed disabled:fk-opacity-50',\n className\n )}\n placeholder={searchPlaceholder}\n onMouseDown={() => {\n if ((inputRef.current?.value.length ?? 0) > 0) setIsOpen(true);\n }}\n onValueChange={handleOnSearchChange}\n ref={inputRef}\n value={inputValue}\n />\n {inputValue && (\n <button\n className=\"fk-flex fk-items-center fk-justify-center fk-ml-2 fk-text-muted-foreground hover:fk-text-foreground\"\n onClick={handleClear}\n type=\"button\"\n >\n <XIcon className=\"fk-h-4 fk-w-4\" />\n </button>\n )}\n </div>\n <div className=\"fk-relative fk-max-w-[600px]\">\n <div\n className={cn(\n 'fk-mt-1 fk-animate-in fk-fade-in-0 fk-zoom-in-95 fk-absolute fk-top-0 fk-z-10 fk-w-full fk-rounded-md fk-bg-popover fk-outline-none fk-drop-shadow-md fk-border fk-border-border',\n isOpen ? 'fk-block' : 'fk-hidden'\n )}\n >\n <ScrollArea className=\"fk-max-h-[220px] fk-overflow-auto\">\n <CommandEmpty>{noResultsMsg}</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {results.length > 0 && <CommandItem className=\"fk-hidden\" value=\"-\" />}\n {results.map((item) => (\n <CommandItem\n className=\"fk-flex\"\n key={item._id}\n value={item._id}\n onSelect={(entityId) => {\n onSelect({ entityName: item._entityName, entityNamePlural: item._entityNamePlural, entityId });\n }}\n >\n <span className=\"fk-basis-full\">{item[Object.keys(item)[3]]}</span>\n <Badge className=\"fk-py-px fk-text-[0.6875rem] fk-leading-3 fk-bg-teal-400\">\n {item._entityName}\n </Badge>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </ScrollArea>\n </div>\n </div>\n </Command>\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import'./index.css';export{a as Switch}from'./chunk-OOYWOWHR.js';import'./chunk-AYKEFG4H.js';import'./chunk-OTQ3BR2A.js';import'./chunk-AXB7FQV2.js';//# sourceMappingURL=switch-FU7XZ34K.js.map
2
+ //# sourceMappingURL=switch-FU7XZ34K.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"switch-GWTYDHPW.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"switch-FU7XZ34K.js"}
@@ -0,0 +1,99 @@
1
+ export { F as FlexkitHandlerContext, a as FlexkitHandlerResult, h as handleFlexkitRequest } from './core-handler-XAVVKLhV.js';
2
+
3
+ /**
4
+ * Types for TanStack Start / Nitro / Vinxi event handling
5
+ * These are minimal types compatible with H3 event objects used by Nitro
6
+ */
7
+ interface H3Event {
8
+ node: {
9
+ req: {
10
+ url?: string;
11
+ method?: string;
12
+ headers: Record<string, string | string[] | undefined>;
13
+ };
14
+ res: {
15
+ statusCode: number;
16
+ setHeader: (name: string, value: string) => void;
17
+ end: (data?: string) => void;
18
+ };
19
+ };
20
+ path: string;
21
+ method: string;
22
+ }
23
+ type EventHandler = (event: H3Event) => Promise<unknown>;
24
+ /**
25
+ * Creates a TanStack Start / Nitro / Vinxi event handler for Flexkit integration.
26
+ *
27
+ * TanStack Start uses Nitro under the hood, which uses H3 for event handling.
28
+ * This handler is compatible with the H3 event interface.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * // app/api/flexkit/[...path].ts (or .tsx)
33
+ * import { createAPIFileRoute } from '@tanstack/react-start/api';
34
+ * import { createFlexkitTanStackHandler } from '@flexkit/studio/tanstack-start';
35
+ *
36
+ * const handler = createFlexkitTanStackHandler();
37
+ *
38
+ * export const APIRoute = createAPIFileRoute('/api/flexkit/$')({
39
+ * GET: handler,
40
+ * POST: handler,
41
+ * PUT: handler,
42
+ * PATCH: handler,
43
+ * DELETE: handler,
44
+ * });
45
+ * ```
46
+ *
47
+ * Alternative using Nitro directly:
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * // server/api/flexkit/[...path].ts
52
+ * import { defineEventHandler } from 'h3';
53
+ * import { createFlexkitTanStackHandler } from '@flexkit/studio/tanstack-start';
54
+ *
55
+ * export default defineEventHandler(createFlexkitTanStackHandler());
56
+ * ```
57
+ *
58
+ * With Vinxi (Vite + Nitro):
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * // app.config.ts
63
+ * import { createApp } from 'vinxi';
64
+ *
65
+ * export default createApp({
66
+ * server: {
67
+ * // Your server configuration
68
+ * },
69
+ * });
70
+ *
71
+ * // Then in your API route:
72
+ * // server/api/flexkit/[...path].ts
73
+ * import { eventHandler } from 'vinxi/http';
74
+ * import { createFlexkitTanStackHandler } from '@flexkit/studio/tanstack-start';
75
+ *
76
+ * export default eventHandler(createFlexkitTanStackHandler());
77
+ * ```
78
+ */
79
+ declare function createFlexkitTanStackHandler(): EventHandler;
80
+ /**
81
+ * Creates a Web-standard fetch handler for TanStack Start.
82
+ * Use this when you need a handler that works with the Web Fetch API directly.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * // For use with TanStack Start's server functions or custom routing
87
+ * import { createFlexkitFetchHandler } from '@flexkit/studio/tanstack-start';
88
+ *
89
+ * const handler = createFlexkitFetchHandler();
90
+ *
91
+ * // In your route handler:
92
+ * export async function handleRequest(request: Request): Promise<Response> {
93
+ * return handler(request);
94
+ * }
95
+ * ```
96
+ */
97
+ declare function createFlexkitFetchHandler(): (request: Request) => Promise<Response>;
98
+
99
+ export { createFlexkitFetchHandler, createFlexkitTanStackHandler };
@@ -0,0 +1,147 @@
1
+ import {
2
+ handleFlexkitRequest
3
+ } from "./chunk-TL6JXN6O.js";
4
+
5
+ // src/auth/tanstack-start-api.ts
6
+ function getCookieValue(cookieHeader, name) {
7
+ const header = Array.isArray(cookieHeader) ? cookieHeader[0] : cookieHeader;
8
+ if (!header) {
9
+ return "";
10
+ }
11
+ const cookies = header.split(";").map((c) => c.trim());
12
+ for (const cookie of cookies) {
13
+ const [cookieName, ...rest] = cookie.split("=");
14
+ if (cookieName === name) {
15
+ return rest.join("=");
16
+ }
17
+ }
18
+ return "";
19
+ }
20
+ async function readBody(event) {
21
+ const req = event.node.req;
22
+ return new Promise((resolve) => {
23
+ const chunks = [];
24
+ req.on("data", (chunk) => {
25
+ chunks.push(chunk);
26
+ });
27
+ req.on("end", () => {
28
+ if (chunks.length === 0) {
29
+ resolve(void 0);
30
+ } else {
31
+ resolve(Buffer.concat(chunks).toString("utf-8"));
32
+ }
33
+ });
34
+ req.on("error", () => {
35
+ resolve(void 0);
36
+ });
37
+ });
38
+ }
39
+ function applyResultToResponse(result, event) {
40
+ const res = event.node.res;
41
+ res.statusCode = result.status;
42
+ if (result.setCookie) {
43
+ res.setHeader("Set-Cookie", result.setCookie);
44
+ }
45
+ if (result.headers) {
46
+ for (const [key, value] of Object.entries(result.headers)) {
47
+ res.setHeader(key, value);
48
+ }
49
+ }
50
+ if (result.type === "redirect") {
51
+ return "Redirecting...";
52
+ }
53
+ if (result.type === "text") {
54
+ res.setHeader("Content-Type", "text/plain");
55
+ return result.body;
56
+ }
57
+ res.setHeader("Content-Type", "application/json");
58
+ return result.body;
59
+ }
60
+ function createFlexkitTanStackHandler() {
61
+ return async (event) => {
62
+ const req = event.node.req;
63
+ const method = event.method || req.method || "GET";
64
+ const host = req.headers.host || "localhost";
65
+ const protocol = "https";
66
+ const fullUrl = `${protocol}://${host}${req.url || event.path}`;
67
+ const url = new URL(fullUrl);
68
+ const headers = new Headers();
69
+ for (const [key, value] of Object.entries(req.headers)) {
70
+ if (typeof value === "string") {
71
+ headers.set(key, value);
72
+ } else if (Array.isArray(value)) {
73
+ headers.set(key, value.join(", "));
74
+ }
75
+ }
76
+ let body;
77
+ if (method !== "GET" && method !== "HEAD") {
78
+ body = await readBody(event);
79
+ }
80
+ const contentType = req.headers["content-type"] || null;
81
+ const request = new Request(fullUrl, {
82
+ method,
83
+ headers,
84
+ body
85
+ });
86
+ const sessionToken = getCookieValue(req.headers.cookie, "sessionToken");
87
+ const result = await handleFlexkitRequest({
88
+ request,
89
+ pathname: url.pathname,
90
+ search: url.search,
91
+ sessionToken,
92
+ contentType
93
+ });
94
+ if (result.type === "response") {
95
+ const headers2 = new Headers(result.headers);
96
+ if (result.setCookie) {
97
+ headers2.set("Set-Cookie", result.setCookie);
98
+ }
99
+ return new Response(result.body, { status: result.status, headers: headers2 });
100
+ }
101
+ return applyResultToResponse(result, event);
102
+ };
103
+ }
104
+ function createFlexkitFetchHandler() {
105
+ return async (request) => {
106
+ const url = new URL(request.url);
107
+ const cookieHeader = request.headers.get("cookie");
108
+ let sessionToken = "";
109
+ if (cookieHeader) {
110
+ const cookies = cookieHeader.split(";").map((c) => c.trim());
111
+ for (const cookie of cookies) {
112
+ const [name, ...rest] = cookie.split("=");
113
+ if (name === "sessionToken") {
114
+ sessionToken = rest.join("=");
115
+ break;
116
+ }
117
+ }
118
+ }
119
+ const result = await handleFlexkitRequest({
120
+ request,
121
+ pathname: url.pathname,
122
+ search: url.search,
123
+ sessionToken,
124
+ contentType: request.headers.get("content-type")
125
+ });
126
+ const headers = new Headers(result.headers);
127
+ if (result.setCookie) {
128
+ headers.set("Set-Cookie", result.setCookie);
129
+ }
130
+ if (result.type === "redirect") {
131
+ return new Response("Redirecting...", { status: result.status, headers });
132
+ }
133
+ if (result.type === "text") {
134
+ return new Response(result.body, { status: result.status, headers });
135
+ }
136
+ if (result.type === "response") {
137
+ return new Response(result.body, { status: result.status, headers });
138
+ }
139
+ headers.set("Content-Type", "application/json");
140
+ return new Response(JSON.stringify(result.body), { status: result.status, headers });
141
+ };
142
+ }
143
+ export {
144
+ createFlexkitFetchHandler,
145
+ createFlexkitTanStackHandler,
146
+ handleFlexkitRequest
147
+ };
@@ -0,0 +1,2 @@
1
+ import'./index.css';export{a as Text}from'./chunk-2WWU4XFO.js';import'./chunk-OX6FVDUT.js';import'./chunk-AYKEFG4H.js';import'./chunk-OTQ3BR2A.js';import'./chunk-AXB7FQV2.js';//# sourceMappingURL=text-DFG6LLN6.js.map
2
+ //# sourceMappingURL=text-DFG6LLN6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"text-OSJFNY7L.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"text-DFG6LLN6.js"}
@@ -0,0 +1,2 @@
1
+ import'./index.css';export{a as Text}from'./chunk-4PHVU7DD.js';//# sourceMappingURL=text-LNFBPXBT.js.map
2
+ //# sourceMappingURL=text-LNFBPXBT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"text-Y2ITNUWV.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"text-LNFBPXBT.js"}
@@ -0,0 +1,2 @@
1
+ import'./index.css';export{a as Textarea}from'./chunk-HIMN6EYJ.js';import'./chunk-AYKEFG4H.js';import'./chunk-OTQ3BR2A.js';import'./chunk-AXB7FQV2.js';//# sourceMappingURL=textarea-XFHA5IEI.js.map
2
+ //# sourceMappingURL=textarea-XFHA5IEI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"textarea-J6THGASV.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"textarea-XFHA5IEI.js"}
@@ -1,5 +1,7 @@
1
+ import { ComponentType, ReactNode } from 'react';
1
2
  import { z, ZodTypeAny } from 'zod';
2
3
  import { OperationVariables } from '@apollo/client';
4
+ import { Control, UseFormSetValue, FieldValues } from 'react-hook-form';
3
5
 
4
6
  type AttributeValue = {
5
7
  _id: string;
@@ -184,4 +186,109 @@ interface SearchRequestProps {
184
186
  };
185
187
  }
186
188
 
187
- export type { AppContextType as A, DataType as D, Entity as E, FormEntityItem as F, ImageValue as I, MappedEntityItem as M, SearchRequestProps as S, UseEntityQueryParams as U, ActionSetRelationship as a, ActionSetScope as b, SearchResultItem as c, Schema as d, EntityData as e, Attribute as f, ScopeType as g, AttributeValue as h, FormFieldValue as i, AttributeOptions as j, Scopes as k, MultipleRelationshipConnection as l };
189
+ type FormFieldParams<T extends keyof AttributeOptions> = {
190
+ control: Control | undefined;
191
+ defaultScope: string;
192
+ defaultValue: FormFieldValue;
193
+ entityId?: string;
194
+ entityName: string;
195
+ entityNamePlural: string;
196
+ fieldSchema: Omit<Attribute, 'options'> & {
197
+ options: AttributeOptions[T];
198
+ };
199
+ getValues: (_payload?: string | string[]) => FormFieldValue | undefined;
200
+ relationshipEntityName?: string;
201
+ schema: Schema;
202
+ scope: string;
203
+ setValue: UseFormSetValue<FieldValues>;
204
+ };
205
+
206
+ interface LogoProps {
207
+ theme: string | undefined;
208
+ title: string;
209
+ }
210
+
211
+ interface ProjectSelectorProps {
212
+ projectId: string;
213
+ projects: ProjectOptions[];
214
+ }
215
+
216
+ interface SearchProps {
217
+ onSelect: (item: { entityName: string; entityNamePlural: string; entityId: string }) => void;
218
+ projectId: string;
219
+ schema: Entity[];
220
+ }
221
+
222
+ interface FormFieldProps extends FormFieldParams<keyof AttributeOptions> {}
223
+
224
+ interface AppOptions {
225
+ name: string;
226
+ title: string;
227
+ icon?: JSX.Element;
228
+ component: ReactNode;
229
+ routes?: AppRoute[];
230
+ }
231
+
232
+ interface AppRoute {
233
+ path: string;
234
+ component: ReactNode;
235
+ children?: AppRoute[];
236
+ }
237
+
238
+ interface PluginOptions {
239
+ name: string;
240
+ title?: string;
241
+ contributes?: {
242
+ apps?: AppOptions[];
243
+ formFields?: {
244
+ [key: string]: {
245
+ component: (Props: FormFieldProps) => JSX.Element;
246
+ description?: string;
247
+ };
248
+ };
249
+ previewFields?: {
250
+ [key: string]: {
251
+ component: ({ value }: { value: string | boolean | number | null | Date | Image }) => JSX.Element | null;
252
+ description?: string;
253
+ };
254
+ };
255
+ commands?: CommandOptions[];
256
+ navbar?: {
257
+ logo?: {
258
+ component: (Props: LogoProps) => JSX.Element;
259
+ };
260
+ projectSelector?: {
261
+ component: (Props: ProjectSelectorProps) => JSX.Element;
262
+ };
263
+ search?: {
264
+ component: (Props: SearchProps) => JSX.Element;
265
+ };
266
+ };
267
+ };
268
+ plugins?: PluginOptions[];
269
+ }
270
+
271
+ interface ProjectOptions {
272
+ title?: string;
273
+ projectId: string;
274
+ basePath: string;
275
+ icon?: ComponentType;
276
+ menuGroups?: {
277
+ title: string;
278
+ name: string;
279
+ }[];
280
+ plugins?: PluginOptions[];
281
+ scopes?: Scopes;
282
+ schema: Entity[];
283
+ }
284
+
285
+ /**
286
+ * If a single project is used, not specifying a basePath is acceptable
287
+ */
288
+ type SingleProject = Omit<ProjectOptions, 'basePath'> & {
289
+ basePath?: string;
290
+ };
291
+
292
+ type Config = SingleProject | ProjectOptions[];
293
+
294
+ export type { AppContextType as A, Config as C, DataType as D, Entity as E, FormEntityItem as F, ImageValue as I, LogoProps as L, MappedEntityItem as M, PluginOptions as P, SearchRequestProps as S, UseEntityQueryParams as U, ActionSetRelationship as a, ActionSetScope as b, AppOptions as c, ProjectOptions as d, SearchResultItem as e, Schema as f, EntityData as g, AttributeValue as h, Attribute as i, MultipleRelationshipConnection as j, FormFieldProps as k, SingleProject as l, ScopeType as m, FormFieldParams as n, FormFieldValue as o };