@flexkit/studio 0.0.31 → 0.0.32

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 (110) hide show
  1. package/README.md +2 -2
  2. package/dist/asset-ZVPFS73O.js +2 -0
  3. package/dist/{asset-TS7J5GA5.js.map → asset-ZVPFS73O.js.map} +1 -1
  4. package/dist/astro.d.ts +5 -3
  5. package/dist/astro.js +8 -3
  6. package/dist/chunk-5FHCSAK2.js +2 -0
  7. package/dist/chunk-5FHCSAK2.js.map +1 -0
  8. package/dist/{chunk-R7N3MDOP.js → chunk-AEBTHXEP.js} +2 -2
  9. package/dist/{chunk-R7N3MDOP.js.map → chunk-AEBTHXEP.js.map} +1 -1
  10. package/dist/{chunk-W3TUEJJL.js → chunk-CCI3FGPF.js} +2 -2
  11. package/dist/{chunk-W3TUEJJL.js.map → chunk-CCI3FGPF.js.map} +1 -1
  12. package/dist/chunk-D62TAYLI.js +2 -0
  13. package/dist/chunk-D62TAYLI.js.map +1 -0
  14. package/dist/{chunk-UKLE7J3K.js → chunk-E7G46743.js} +139 -16
  15. package/dist/chunk-F2ILIHAU.js +2 -0
  16. package/dist/chunk-F2ILIHAU.js.map +1 -0
  17. package/dist/{chunk-EOCJR5EY.js → chunk-FPH4YETF.js} +2 -2
  18. package/dist/{chunk-EOCJR5EY.js.map → chunk-FPH4YETF.js.map} +1 -1
  19. package/dist/chunk-GFDWGYUR.js +2 -0
  20. package/dist/chunk-GFDWGYUR.js.map +1 -0
  21. package/dist/{chunk-CPUC4QXH.js → chunk-JAARDXQZ.js} +2 -2
  22. package/dist/{chunk-CPUC4QXH.js.map → chunk-JAARDXQZ.js.map} +1 -1
  23. package/dist/{chunk-IXO2LU47.js → chunk-JCHD4EGB.js} +2 -2
  24. package/dist/{chunk-IXO2LU47.js.map → chunk-JCHD4EGB.js.map} +1 -1
  25. package/dist/chunk-KHPTVIYT.js +2 -0
  26. package/dist/chunk-KHPTVIYT.js.map +1 -0
  27. package/dist/{chunk-DWK4NNLB.js → chunk-LKBCPAXQ.js} +2 -2
  28. package/dist/{chunk-DWK4NNLB.js.map → chunk-LKBCPAXQ.js.map} +1 -1
  29. package/dist/chunk-MGXHZDFZ.js +2 -0
  30. package/dist/chunk-MGXHZDFZ.js.map +1 -0
  31. package/dist/chunk-N2T6MKPV.js +2 -0
  32. package/dist/chunk-N2T6MKPV.js.map +1 -0
  33. package/dist/chunk-PXB5QSHN.js +2 -0
  34. package/dist/chunk-PXB5QSHN.js.map +1 -0
  35. package/dist/chunk-QSROLDUU.js +2 -0
  36. package/dist/chunk-QSROLDUU.js.map +1 -0
  37. package/dist/chunk-VHNQDP7Q.js +616 -0
  38. package/dist/chunk-VUAFNQK7.js +2 -0
  39. package/dist/chunk-VUAFNQK7.js.map +1 -0
  40. package/dist/chunk-XFY7MZJN.js +2 -0
  41. package/dist/chunk-XFY7MZJN.js.map +1 -0
  42. package/dist/{core-handler-XAVVKLhV.d.ts → core-handler-C3xC98bN.d.ts} +3 -0
  43. package/dist/datetime-DDEWTNLB.js +2 -0
  44. package/dist/{datetime-NQTYGZIC.js.map → datetime-DDEWTNLB.js.map} +1 -1
  45. package/dist/editor-HAYTKNMY.js +2 -0
  46. package/dist/{editor-YIRZQR3D.js.map → editor-HAYTKNMY.js.map} +1 -1
  47. package/dist/index.css +151 -38
  48. package/dist/index.d.ts +22 -21
  49. package/dist/index.js +157 -210
  50. package/dist/index.js.map +1 -1
  51. package/dist/logo-B6ZKLGM7.js +3 -0
  52. package/dist/logo-B6ZKLGM7.js.map +1 -0
  53. package/dist/nextjs.d.ts +40 -12
  54. package/dist/nextjs.js +8 -3
  55. package/dist/search-X5V3YOTZ.js +2 -0
  56. package/dist/search-X5V3YOTZ.js.map +1 -0
  57. package/dist/select-H3JHOCWR.js +2 -0
  58. package/dist/{select-A6I27JQU.js.map → select-H3JHOCWR.js.map} +1 -1
  59. package/dist/switch-TACKLQJH.js +2 -0
  60. package/dist/{switch-AFZGXSR3.js.map → switch-TACKLQJH.js.map} +1 -1
  61. package/dist/tanstack-start.d.ts +6 -4
  62. package/dist/tanstack-start.js +17 -12
  63. package/dist/text-M3DRK7LU.js +2 -0
  64. package/dist/{text-2RL2L5FT.js.map → text-M3DRK7LU.js.map} +1 -1
  65. package/dist/text-SQXG7XJT.js +2 -0
  66. package/dist/{text-6F4QTCNT.js.map → text-SQXG7XJT.js.map} +1 -1
  67. package/dist/textarea-YF4K2VBM.js +2 -0
  68. package/dist/{textarea-2A4TLWZS.js.map → textarea-YF4K2VBM.js.map} +1 -1
  69. package/dist/tools.d.ts +78 -0
  70. package/dist/tools.js +60 -0
  71. package/dist/types-U28Ppixq.d.ts +56 -0
  72. package/dist/{types.d-CX3kDxFZ.d.ts → types.d-710RgZFw.d.ts} +85 -7
  73. package/dist/ui.d.ts +21 -5
  74. package/dist/ui.js +5 -5
  75. package/dist/ui.js.map +1 -1
  76. package/dist/{user-nav-4JKIFZLB.js → user-nav-XVY7JTX6.js} +2 -2
  77. package/dist/{user-nav-4JKIFZLB.js.map → user-nav-XVY7JTX6.js.map} +1 -1
  78. package/package.json +8 -4
  79. package/dist/asset-TS7J5GA5.js +0 -2
  80. package/dist/chunk-73RMWG53.js +0 -2
  81. package/dist/chunk-73RMWG53.js.map +0 -1
  82. package/dist/chunk-HAQICAOQ.js +0 -2
  83. package/dist/chunk-HAQICAOQ.js.map +0 -1
  84. package/dist/chunk-LL2Z4TD3.js +0 -2
  85. package/dist/chunk-LL2Z4TD3.js.map +0 -1
  86. package/dist/chunk-MC6VZLKC.js +0 -2
  87. package/dist/chunk-MC6VZLKC.js.map +0 -1
  88. package/dist/chunk-N52AF6GE.js +0 -2
  89. package/dist/chunk-N52AF6GE.js.map +0 -1
  90. package/dist/chunk-V6R4AWQS.js +0 -2
  91. package/dist/chunk-V6R4AWQS.js.map +0 -1
  92. package/dist/chunk-WXMCINGZ.js +0 -2
  93. package/dist/chunk-WXMCINGZ.js.map +0 -1
  94. package/dist/chunk-WZ533Y4O.js +0 -2
  95. package/dist/chunk-WZ533Y4O.js.map +0 -1
  96. package/dist/chunk-YA4ACPM5.js +0 -2
  97. package/dist/chunk-YA4ACPM5.js.map +0 -1
  98. package/dist/chunk-ZEZ6TRCO.js +0 -2
  99. package/dist/chunk-ZEZ6TRCO.js.map +0 -1
  100. package/dist/datetime-NQTYGZIC.js +0 -2
  101. package/dist/editor-YIRZQR3D.js +0 -2
  102. package/dist/logo-GCKKZP62.js +0 -3
  103. package/dist/logo-GCKKZP62.js.map +0 -1
  104. package/dist/search-UFFZBRQV.js +0 -2
  105. package/dist/search-UFFZBRQV.js.map +0 -1
  106. package/dist/select-A6I27JQU.js +0 -2
  107. package/dist/switch-AFZGXSR3.js +0 -2
  108. package/dist/text-2RL2L5FT.js +0 -2
  109. package/dist/text-6F4QTCNT.js +0 -2
  110. package/dist/textarea-2A4TLWZS.js +0 -2
@@ -1,2 +1,2 @@
1
- import'./index.css';import {b as b$1}from'./chunk-DWK4NNLB.js';import {a,b as b$3,c as c$1}from'./chunk-2FFSI7IK.js';import {b,r,c,e,f,l,m,i,h,n}from'./chunk-IXO2LU47.js';import'./chunk-V6R4AWQS.js';import'./chunk-WDRCARCP.js';import {b as b$2}from'./chunk-EYGOJ2ZN.js';import'./chunk-WIUPQHZ5.js';import'./chunk-O2QMYUPS.js';import v from'boring-avatars';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';var A=["#06d9b6","#a4f479","#d4d323","#fb468f","#0ec4f1"];function F({projectId:D}){let{theme:r$1,setTheme:t}=b(),[C,n$1]=b$1();return C?jsx(r,{className:"fk:h-8 fk:w-8 fk:rounded-full"}):jsxs(c,{children:[jsx(e,{asChild:true,children:jsx(b$2,{className:"fk:relative fk:h-8 fk:w-8 fk:rounded-full",variant:"ghost",children:jsxs(a,{className:"fk:h-8 fk:w-8",children:[n$1.user?.avatar_url?jsx(b$3,{alt:n$1.user.display_name,src:n$1.user.avatar_url}):null,jsx(c$1,{className:"fk:bg-transparent",children:jsx(v,{className:"fk:size-8",colors:A,name:n$1.user?.id??"user",size:32,variant:"marble"})})]})})}),jsxs(f,{align:"end",className:"fk:w-56",forceMount:true,children:[jsx(l,{className:"font-normal",children:jsxs("div",{className:"fk:flex fk:flex-col fk:space-y-1",children:[jsx("p",{className:"fk:text-sm fk:font-medium fk:leading-none",children:n$1.user?.display_name}),jsx("p",{className:"fk:text-xs fk:leading-none fk:text-muted-foreground",children:n$1.user?.email})]})}),jsx(m,{}),jsx(l,{children:"Theme"}),jsxs(i,{checked:r$1==="system",onCheckedChange:()=>{t("system");},children:[jsx(Monitor,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"System"})]}),jsxs(i,{checked:r$1==="dark",onCheckedChange:()=>{t("dark");},children:[jsx(Moon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Dark"})]}),jsxs(i,{checked:r$1==="light",onCheckedChange:()=>{t("light");},children:[jsx(Sun,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Light"})]}),jsx(m,{}),jsxs(h,{onClick:()=>{n$1.logout(D).then(()=>{}).catch(()=>{});},children:["Log out",jsx(n,{children:"\u21E7\u2318Q"})]})]})]})}export{F as UserNav};//# sourceMappingURL=user-nav-4JKIFZLB.js.map
2
- //# sourceMappingURL=user-nav-4JKIFZLB.js.map
1
+ import'./index.css';import {b as b$1}from'./chunk-LKBCPAXQ.js';import {a,b as b$3,c as c$1}from'./chunk-2FFSI7IK.js';import {b,r,c,e,f,l,m,i,h,n}from'./chunk-JCHD4EGB.js';import'./chunk-5FHCSAK2.js';import'./chunk-WDRCARCP.js';import {b as b$2}from'./chunk-EYGOJ2ZN.js';import'./chunk-WIUPQHZ5.js';import'./chunk-O2QMYUPS.js';import v from'boring-avatars';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';var A=["#06d9b6","#a4f479","#d4d323","#fb468f","#0ec4f1"];function F({projectId:D}){let{theme:r$1,setTheme:t}=b(),[C,n$1]=b$1();return C?jsx(r,{className:"fk:h-8 fk:w-8 fk:rounded-full"}):jsxs(c,{children:[jsx(e,{asChild:true,children:jsx(b$2,{className:"fk:relative fk:h-8 fk:w-8 fk:rounded-full",variant:"ghost",children:jsxs(a,{className:"fk:h-8 fk:w-8",children:[n$1.user?.avatar_url?jsx(b$3,{alt:n$1.user.display_name,src:n$1.user.avatar_url}):null,jsx(c$1,{className:"fk:bg-transparent",children:jsx(v,{className:"fk:size-8",colors:A,name:n$1.user?.id??"user",size:32,variant:"marble"})})]})})}),jsxs(f,{align:"end",className:"fk:w-56",forceMount:true,children:[jsx(l,{className:"font-normal",children:jsxs("div",{className:"fk:flex fk:flex-col fk:space-y-1",children:[jsx("p",{className:"fk:text-sm fk:font-medium fk:leading-none",children:n$1.user?.display_name}),jsx("p",{className:"fk:text-xs fk:leading-none fk:text-muted-foreground",children:n$1.user?.email})]})}),jsx(m,{}),jsx(l,{children:"Theme"}),jsxs(i,{checked:r$1==="system",onCheckedChange:()=>{t("system");},children:[jsx(Monitor,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"System"})]}),jsxs(i,{checked:r$1==="dark",onCheckedChange:()=>{t("dark");},children:[jsx(Moon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Dark"})]}),jsxs(i,{checked:r$1==="light",onCheckedChange:()=>{t("light");},children:[jsx(Sun,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Light"})]}),jsx(m,{}),jsxs(h,{onClick:()=>{n$1.logout(D).then(()=>{}).catch(()=>{});},children:["Log out",jsx(n,{children:"\u21E7\u2318Q"})]})]})]})}export{F as UserNav};//# sourceMappingURL=user-nav-XVY7JTX6.js.map
2
+ //# sourceMappingURL=user-nav-XVY7JTX6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/components/user-nav.tsx"],"names":["AVATAR_COLORS","UserNav","projectId","theme","setTheme","useTheme","isLoading","auth","useAuth","jsx","Skeleton","jsxs","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","BoringAvatar","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","Monitor","Moon","Sun","DropdownMenuItem","DropdownMenuShortcut"],"mappings":"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","file":"user-nav-4JKIFZLB.js","sourcesContent":["import type { JSX } from 'react';\nimport BoringAvatar from 'boring-avatars';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { useTheme } from '../theme-context';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/avatar';\nimport { Button } from '../primitives/button';\nimport { Skeleton } from '../primitives/skeleton';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../primitives/dropdown-menu';\nimport { useAuth } from '../../auth/auth-context';\n\nconst AVATAR_COLORS = ['#06d9b6', '#a4f479', '#d4d323', '#fb468f', '#0ec4f1'];\n\ntype Props = {\n projectId: string;\n};\n\nexport function UserNav({ projectId }: Props): JSX.Element {\n const { theme, setTheme } = useTheme();\n const [isLoading, auth] = useAuth();\n\n if (isLoading) {\n return <Skeleton className=\"fk:h-8 fk:w-8 fk:rounded-full\" />;\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:relative fk:h-8 fk:w-8 fk:rounded-full\" variant=\"ghost\">\n <Avatar className=\"fk:h-8 fk:w-8\">\n {auth.user?.avatar_url ? <AvatarImage alt={auth.user.display_name} src={auth.user.avatar_url} /> : null}\n <AvatarFallback className=\"fk:bg-transparent\">\n <BoringAvatar\n className=\"fk:size-8\"\n colors={AVATAR_COLORS}\n name={auth.user?.id ?? 'user'}\n size={32}\n variant=\"marble\"\n />\n </AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk:w-56\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"fk:flex fk:flex-col fk:space-y-1\">\n <p className=\"fk:text-sm fk:font-medium fk:leading-none\">{auth.user?.display_name}</p>\n <p className=\"fk:text-xs fk:leading-none fk:text-muted-foreground\">{auth.user?.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuLabel>Theme</DropdownMenuLabel>\n <DropdownMenuCheckboxItem\n checked={theme === 'system'}\n onCheckedChange={() => {\n setTheme('system');\n }}\n >\n <Monitor className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>System</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'dark'}\n onCheckedChange={() => {\n setTheme('dark');\n }}\n >\n <Moon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>Dark</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'light'}\n onCheckedChange={() => {\n setTheme('light');\n }}\n >\n <Sun className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>Light</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n auth\n .logout(projectId)\n .then(() => {\n //\n })\n .catch(() => {\n //\n });\n }}\n >\n Log out\n <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/ui/components/user-nav.tsx"],"names":["AVATAR_COLORS","UserNav","projectId","theme","setTheme","useTheme","isLoading","auth","useAuth","jsx","Skeleton","jsxs","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","BoringAvatar","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","Monitor","Moon","Sun","DropdownMenuItem","DropdownMenuShortcut"],"mappings":"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","file":"user-nav-XVY7JTX6.js","sourcesContent":["import type { JSX } from 'react';\nimport BoringAvatar from 'boring-avatars';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { useTheme } from '../theme-context';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/avatar';\nimport { Button } from '../primitives/button';\nimport { Skeleton } from '../primitives/skeleton';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../primitives/dropdown-menu';\nimport { useAuth } from '../../auth/auth-context';\n\nconst AVATAR_COLORS = ['#06d9b6', '#a4f479', '#d4d323', '#fb468f', '#0ec4f1'];\n\ntype Props = {\n projectId: string;\n};\n\nexport function UserNav({ projectId }: Props): JSX.Element {\n const { theme, setTheme } = useTheme();\n const [isLoading, auth] = useAuth();\n\n if (isLoading) {\n return <Skeleton className=\"fk:h-8 fk:w-8 fk:rounded-full\" />;\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:relative fk:h-8 fk:w-8 fk:rounded-full\" variant=\"ghost\">\n <Avatar className=\"fk:h-8 fk:w-8\">\n {auth.user?.avatar_url ? <AvatarImage alt={auth.user.display_name} src={auth.user.avatar_url} /> : null}\n <AvatarFallback className=\"fk:bg-transparent\">\n <BoringAvatar\n className=\"fk:size-8\"\n colors={AVATAR_COLORS}\n name={auth.user?.id ?? 'user'}\n size={32}\n variant=\"marble\"\n />\n </AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk:w-56\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"fk:flex fk:flex-col fk:space-y-1\">\n <p className=\"fk:text-sm fk:font-medium fk:leading-none\">{auth.user?.display_name}</p>\n <p className=\"fk:text-xs fk:leading-none fk:text-muted-foreground\">{auth.user?.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuLabel>Theme</DropdownMenuLabel>\n <DropdownMenuCheckboxItem\n checked={theme === 'system'}\n onCheckedChange={() => {\n setTheme('system');\n }}\n >\n <Monitor className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>System</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'dark'}\n onCheckedChange={() => {\n setTheme('dark');\n }}\n >\n <Moon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>Dark</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'light'}\n onCheckedChange={() => {\n setTheme('light');\n }}\n >\n <Sun className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>Light</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n auth\n .logout(projectId)\n .then(() => {\n //\n })\n .catch(() => {\n //\n });\n }}\n >\n Log out\n <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flexkit/studio",
3
- "version": "0.0.31",
3
+ "version": "0.0.32",
4
4
  "description": "Flexkit Studio - Build custom internal tools like PIMs, CRMs, and ERPs with a flexible React UI and a graph-backed API",
5
5
  "keywords": [
6
6
  "flexkit",
@@ -28,6 +28,7 @@
28
28
  "./nextjs": "./dist/nextjs.js",
29
29
  "./astro": "./dist/astro.js",
30
30
  "./tanstack-start": "./dist/tanstack-start.js",
31
+ "./tools": "./dist/tools.js",
31
32
  "./icons": "./dist/icons.js",
32
33
  "./ui": "./dist/ui.js",
33
34
  "./tailwind.config": "./tailwind.config.ts",
@@ -44,6 +45,9 @@
44
45
  "tanstack-start": [
45
46
  "./dist/tanstack-start.d.ts"
46
47
  ],
48
+ "tools": [
49
+ "./dist/tools.d.ts"
50
+ ],
47
51
  "icons": [
48
52
  "./dist/icons.d.ts"
49
53
  ]
@@ -70,8 +74,8 @@
70
74
  "tailwindcss-animate": "1.0.7",
71
75
  "tsup": "8.5.1",
72
76
  "typescript": "^5.3.3",
73
- "tailwind-config": "0.0.1",
74
77
  "eslint-config-custom": "0.0.0",
78
+ "tailwind-config": "0.0.1",
75
79
  "tsconfig": "0.0.0"
76
80
  },
77
81
  "dependencies": {
@@ -158,8 +162,8 @@
158
162
  "node": ">=20.9.0"
159
163
  },
160
164
  "scripts": {
161
- "build": "tailwindcss -i ./src/styles.css -o dist/index.css && tsup --config tsup.config.ts && tsup src/nextjs.ts src/astro.ts src/tanstack-start.ts --format esm --dts --external react --external react-dom --no-config",
162
- "dev": "tailwindcss -i ./src/styles.css -o ./dist/index.css --watch=always & tsup --config tsup.config.ts --watch & tsup src/nextjs.ts src/astro.ts src/tanstack-start.ts --format esm --dts --external react --external react-dom --no-config --watch",
165
+ "build": "tailwindcss -i ./src/styles.css -o dist/index.css && tsup --config tsup.config.ts && tsup src/nextjs.ts src/astro.ts src/tanstack-start.ts src/tools.ts --format esm --dts --external react --external react-dom --no-config",
166
+ "dev": "tailwindcss -i ./src/styles.css -o ./dist/index.css --watch=always & tsup --config tsup.config.ts --watch & tsup src/nextjs.ts src/astro.ts src/tanstack-start.ts src/tools.ts --format esm --dts --external react --external react-dom --no-config --watch",
163
167
  "lint": "eslint \"src/**/*.ts*\"",
164
168
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
165
169
  "ui:add": "pnpm dlx shadcn@latest add"
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Asset}from'./chunk-N52AF6GE.js';import'./chunk-YW2EEXMV.js';import'./chunk-WDRCARCP.js';import'./chunk-WIUPQHZ5.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=asset-TS7J5GA5.js.map
2
- //# sourceMappingURL=asset-TS7J5GA5.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a as a$1}from'./chunk-HAQICAOQ.js';import {a}from'./chunk-KGYH74NA.js';import {c,e,f,h,g,i}from'./chunk-FVFRTCEB.js';import {jsx,jsxs}from'react/jsx-runtime';function S({control:k,fieldSchema:p,setValue:a$2}){let{name:l,label:h$1,isEditable:v,options:n}=p;function b(e,o){a$2(l,{...o,value:e});}function w(e,o){a$2(l,{...o,disabled:e});}return jsx(c,{control:k,name:l,render:({field:e$1})=>jsxs(e,{children:[jsxs("div",{className:"fk:flex fk:flex-row fk:items-center fk:justify-between fk:rounded-lg fk:border fk:border-input fk:p-3 fk:ring-offset-background fk:focus-within:outline-hidden fk:focus-within:ring-2 fk:focus-within:ring-ring fk:focus-within:ring-offset-2 fk:disabled:cursor-not-allowed fk:disabled:opacity-50",children:[jsxs("div",{className:"fk:space-y-0.5",children:[jsx(f,{children:h$1}),n?.comment?jsx(h,{children:n.comment}):null]}),jsx(g,{children:jsx(a,{checked:e$1.value?.value?!!e$1.value.value:false,disabled:v===false||e$1.value?.disabled,onCheckedChange:o=>{b(o,e$1.value);}})})]}),jsx(a$1,{checked:e$1.value?.disabled??false,onChange:o=>{w(o,e$1.value);},scope:e$1.value?.scope}),jsx(i,{})]})})}export{S as a};//# sourceMappingURL=chunk-73RMWG53.js.map
2
- //# sourceMappingURL=chunk-73RMWG53.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/fields/switch.tsx"],"names":["Switch","control","fieldSchema","setValue","name","label","isEditable","options","handleInput","checked","previousValue","handleCheckbox","value","jsx","FormField","field","jsxs","FormItem","FormLabel","FormDescription","FormControl","DefaultValueSwitch","FormMessage"],"mappings":"0LAMO,SAASA,CAAAA,CAAO,CAAE,OAAA,CAAAC,CAAAA,CAAS,YAAAC,CAAAA,CAAa,QAAA,CAAAC,GAAS,CAAA,CAA2C,CACjG,GAAM,CAAE,IAAA,CAAAC,CAAAA,CAAM,KAAA,CAAAC,IAAO,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAQ,EAAIL,CAAAA,CAE7C,SAASM,CAAAA,CAAYC,CAAAA,CAAkBC,EAAiD,CACtFP,GAAAA,CAASC,EAAM,CACb,GAAGM,EACH,KAAA,CAAOD,CACT,CAAC,EACH,CAEA,SAASE,CAAAA,CAAeF,CAAAA,CAAkBG,CAAAA,CAAyC,CACjFT,GAAAA,CAASC,CAAAA,CAAM,CACb,GAAGQ,EACH,QAAA,CAAUH,CACZ,CAAC,EACH,CAEA,OACEI,GAAAA,CAACC,CAAAA,CAAA,CACC,OAAA,CAASb,EACT,IAAA,CAAMG,CAAAA,CACN,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAW,GAAM,CAAA,GACfC,IAAAA,CAACC,EAAA,CACC,QAAA,CAAA,CAAAD,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sSACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBACb,QAAA,CAAA,CAAAH,GAAAA,CAACK,CAAAA,CAAA,CAAW,SAAAb,GAAAA,CAAM,CAAA,CACjBE,CAAAA,EAAS,OAAA,CAAUM,IAACM,CAAAA,CAAA,CAAiB,SAAAZ,CAAAA,CAAQ,OAAA,CAAQ,EAAqB,IAAA,CAAA,CAC7E,CAAA,CACAM,GAAAA,CAACO,CAAAA,CAAA,CACC,QAAA,CAAAP,GAAAA,CAACb,CAAAA,CAAA,CACC,QAASe,GAAAA,CAAM,KAAA,EAAO,KAAA,CAAQ,CAAA,CAAQA,IAAM,KAAA,CAAM,KAAA,CAAS,MAC3D,QAAA,CAAUT,CAAAA,GAAe,OAASS,GAAAA,CAAM,KAAA,EAAO,QAAA,CAC/C,eAAA,CAAkBN,GAAY,CAC5BD,CAAAA,CAAYC,CAAAA,CAASM,GAAAA,CAAM,KAAK,EAClC,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,EACAF,GAAAA,CAACQ,GAAAA,CAAA,CACC,OAAA,CAASN,GAAAA,CAAM,OAAO,QAAA,EAAY,KAAA,CAClC,QAAA,CAAWN,CAAAA,EAAY,CACrBE,CAAAA,CAAeF,CAAAA,CAASM,GAAAA,CAAM,KAAK,EACrC,CAAA,CACA,KAAA,CAAOA,GAAAA,CAAM,KAAA,EAAO,MACtB,CAAA,CACAF,GAAAA,CAACS,EAAA,EAAY,CAAA,CAAA,CACf,EAEJ,CAEJ","file":"chunk-73RMWG53.js","sourcesContent":["import type { FormFieldValue } from '../../graphql-client/types';\nimport { FormControl, FormDescription, FormField, FormLabel, FormMessage, FormItem } from '../../ui/primitives/form';\nimport { Switch as SwitchPrimitive } from '../../ui/primitives/switch';\nimport type { FormFieldParams } from '../types';\nimport { DefaultValueSwitch } from './default-value-switch';\n\nexport function Switch({ control, fieldSchema, setValue }: FormFieldParams<'switch'>): JSX.Element {\n const { name, label, isEditable, options } = fieldSchema;\n\n function handleInput(checked: boolean, previousValue: FormFieldValue | undefined): void {\n setValue(name, {\n ...previousValue,\n value: checked,\n });\n }\n\n function handleCheckbox(checked: boolean, value: FormFieldValue | undefined): void {\n setValue(name, {\n ...value,\n disabled: checked,\n });\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field }: { field: { value?: FormFieldValue } }) => (\n <FormItem>\n <div className=\"fk:flex fk:flex-row fk:items-center fk:justify-between fk:rounded-lg fk:border fk:border-input fk:p-3 fk:ring-offset-background fk:focus-within:outline-hidden fk:focus-within:ring-2 fk:focus-within:ring-ring fk:focus-within:ring-offset-2 fk:disabled:cursor-not-allowed fk:disabled:opacity-50\">\n <div className=\"fk:space-y-0.5\">\n <FormLabel>{label}</FormLabel>\n {options?.comment ? <FormDescription>{options.comment}</FormDescription> : null}\n </div>\n <FormControl>\n <SwitchPrimitive\n checked={field.value?.value ? Boolean(field.value.value) : false}\n disabled={isEditable === false || field.value?.disabled}\n onCheckedChange={(checked) => {\n handleInput(checked, field.value);\n }}\n />\n </FormControl>\n </div>\n <DefaultValueSwitch\n checked={field.value?.disabled ?? false}\n onChange={(checked) => {\n handleCheckbox(checked, field.value);\n }}\n scope={field.value?.scope}\n />\n <FormMessage />\n </FormItem>\n )}\n />\n );\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {j}from'./chunk-FVFRTCEB.js';import {useId}from'react';import {jsxs,jsx}from'react/jsx-runtime';function i({scope:e,checked:t,onChange:a}){let o=useId();return !e||e==="default"?null:jsxs("div",{className:"fk:flex fk:items-center fk:space-x-2 fk:mb-2",children:[jsx(j,{checked:t,id:o,onCheckedChange:a}),jsx("label",{className:"fk:text-xs fk:font-normal fk:leading-none fk:peer-disabled:cursor-not-allowed fk:peer-disabled:opacity-70",htmlFor:o,children:"Use default value"})]})}export{i as a};//# sourceMappingURL=chunk-HAQICAOQ.js.map
2
- //# sourceMappingURL=chunk-HAQICAOQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/fields/default-value-switch.tsx"],"names":["DefaultValueSwitch","scope","checked","onChange","elementId","useId","jsxs","jsx","Checkbox"],"mappings":"2HAUO,SAASA,CAAAA,CAAmB,CAAE,MAAAC,CAAAA,CAAO,OAAA,CAAAC,CAAAA,CAAS,QAAA,CAAAC,CAAS,CAAA,CAA8B,CAC1F,IAAMC,CAAAA,CAAYC,KAAAA,EAAM,CAExB,OAAI,CAACJ,GAASA,CAAAA,GAAU,SAAA,CACf,IAAA,CAIPK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+CACb,QAAA,CAAA,CAAAC,GAAAA,CAACC,CAAAA,CAAA,CAAS,OAAA,CAASN,CAAAA,CAAS,GAAIE,CAAAA,CAAW,eAAA,CAAiBD,CAAAA,CAAwB,CAAA,CACpFI,GAAAA,CAAC,OAAA,CAAA,CACC,SAAA,CAAU,2GAAA,CACV,OAAA,CAASH,CAAAA,CACV,QAAA,CAAA,mBAAA,CAED,CAAA,CAAA,CACF,CAEJ","file":"chunk-HAQICAOQ.js","sourcesContent":["import { useId } from 'react';\nimport type { JSX } from 'react';\nimport { Checkbox } from '../../ui/primitives/checkbox';\n\ntype Props = {\n scope: string | undefined;\n checked: boolean;\n onChange: (checked: boolean) => void;\n};\n\nexport function DefaultValueSwitch({ scope, checked, onChange }: Props): JSX.Element | null {\n const elementId = useId();\n\n if (!scope || scope === 'default') {\n return null;\n }\n\n return (\n <div className=\"fk:flex fk:items-center fk:space-x-2 fk:mb-2\">\n <Checkbox checked={checked} id={elementId} onCheckedChange={onChange as () => void} />\n <label\n className=\"fk:text-xs fk:font-normal fk:leading-none fk:peer-disabled:cursor-not-allowed fk:peer-disabled:opacity-70\"\n htmlFor={elementId}\n >\n Use default value\n </label>\n </div>\n );\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {b}from'./chunk-EYGOJ2ZN.js';import {a}from'./chunk-O2QMYUPS.js';import {Slot,Dialog,ScrollArea}from'radix-ui';import {cva}from'class-variance-authority';import {jsx,jsxs}from'react/jsx-runtime';import {XIcon,SearchIcon}from'lucide-react';import {Command}from'cmdk';var P=cva("fk:inline-flex fk:w-fit fk:shrink-0 fk:items-center fk:justify-center fk:gap-1 fk:overflow-hidden fk:rounded-full fk:border fk:border-transparent fk:px-2 fk:py-0.5 fk:text-xs fk:font-medium fk:whitespace-nowrap fk:transition-[color,box-shadow] fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:dark:aria-invalid:ring-destructive/40 fk:[&>svg]:pointer-events-none fk:[&>svg]:size-3",{variants:{variant:{default:"fk:bg-primary fk:text-primary-foreground fk:[a&]:hover:bg-primary/90",secondary:"fk:bg-secondary fk:text-secondary-foreground fk:[a&]:hover:bg-secondary/90",destructive:"fk:bg-destructive fk:text-white fk:focus-visible:ring-destructive/20 fk:dark:bg-destructive/60 fk:dark:focus-visible:ring-destructive/40 fk:[a&]:hover:bg-destructive/90",outline:"fk:border-border fk:text-foreground fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground",ghost:"fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground",link:"fk:text-primary fk:underline-offset-4 fk:[a&]:hover:underline"}},defaultVariants:{variant:"default"}});function V({className:o,variant:e="default",asChild:n=false,...f}){let k=n?Slot.Root:"span";return jsx(k,{"data-slot":"badge","data-variant":e,className:a(P({variant:e}),o),...f})}function u({...o}){return jsx(Dialog.Root,{"data-slot":"dialog",...o})}function X({...o}){return jsx(Dialog.Trigger,{"data-slot":"dialog-trigger",...o})}function R({...o}){return jsx(Dialog.Portal,{"data-slot":"dialog-portal",...o})}function q({...o}){return jsx(Dialog.Close,{"data-slot":"dialog-close",...o})}function N({className:o,...e}){return jsx(Dialog.Overlay,{"data-slot":"dialog-overlay",className:a("fk:fixed fk:inset-0 fk:z-50 fk:bg-black/50 fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0",o),...e})}function g({className:o,children:e,showCloseButton:n=true,...f}){return jsxs(R,{"data-slot":"dialog-portal",children:[jsx(N,{}),jsxs(Dialog.Content,{"data-slot":"dialog-content",className:a("fk:fixed fk:top-[50%] fk:left-[50%] fk:z-50 fk:grid fk:w-full fk:max-w-[calc(100%-2rem)] fk:translate-x-[-50%] fk:translate-y-[-50%] fk:gap-4 fk:rounded-lg fk:border fk:bg-background fk:p-6 fk:shadow-lg fk:duration-200 fk:outline-none fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=closed]:zoom-out-95 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0 fk:data-[state=open]:zoom-in-95 fk:sm:max-w-lg",o),...f,children:[e,n&&jsxs(Dialog.Close,{"data-slot":"dialog-close",className:"fk:absolute fk:top-4 fk:right-4 fk:rounded-xs fk:opacity-70 fk:ring-offset-background fk:transition-opacity fk:hover:opacity-100 fk:focus:ring-2 fk:focus:ring-ring fk:focus:ring-offset-2 fk:focus:outline-hidden fk:disabled:pointer-events-none fk:data-[state=open]:bg-accent fk:data-[state=open]:text-muted-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4",children:[jsx(XIcon,{}),jsx("span",{className:"fk:sr-only",children:"Close"})]})]})]})}function v({className:o,...e}){return jsx("div",{"data-slot":"dialog-header",className:a("fk:flex fk:flex-col fk:gap-2 fk:text-center fk:sm:text-left",o),...e})}function J({className:o,showCloseButton:e=false,children:n,...f}){return jsxs("div",{"data-slot":"dialog-footer",className:a("fk:flex fk:flex-col-reverse fk:gap-2 fk:sm:flex-row fk:sm:justify-end",o),...f,children:[n,e&&jsx(Dialog.Close,{asChild:true,children:jsx(b,{variant:"outline",children:"Close"})})]})}function C({className:o,...e}){return jsx(Dialog.Title,{"data-slot":"dialog-title",className:a("fk:text-lg fk:leading-none fk:font-semibold",o),...e})}function x({className:o,...e}){return jsx(Dialog.Description,{"data-slot":"dialog-description",className:a("fk:text-sm fk:text-muted-foreground",o),...e})}function _({className:o,...e}){return jsx(Command,{"data-slot":"command",className:a("fk:flex fk:h-full fk:w-full fk:flex-col fk:rounded-md fk:bg-popover fk:text-popover-foreground",o),...e})}function Z({title:o="Command Palette",description:e="Search for a command to run...",children:n,className:f,showCloseButton:k=true,...h}){return jsxs(u,{...h,children:[jsxs(v,{className:"fk:sr-only",children:[jsx(C,{children:o}),jsx(x,{children:e})]}),jsx(g,{className:a("fk:overflow-hidden fk:p-0",f),showCloseButton:k,children:jsx(_,{className:"fk:**:data-[slot=command-input-wrapper]:h-12 fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground fk:**:[[cmdk-group]]:px-2 fk:[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 fk:[&_[cmdk-input-wrapper]_svg]:h-5 fk:[&_[cmdk-input-wrapper]_svg]:w-5 fk:**:[[cmdk-input]]:h-12 fk:**:[[cmdk-item]]:px-2 fk:**:[[cmdk-item]]:py-3 fk:[&_[cmdk-item]_svg]:h-5 fk:[&_[cmdk-item]_svg]:w-5",children:n})})]})}function $({className:o,...e}){return jsxs("div",{"data-slot":"command-input-wrapper",className:"fk:flex fk:h-9 fk:items-center fk:gap-2 fk:border-b fk:px-3",children:[jsx(SearchIcon,{className:"fk:size-4 fk:shrink-0 fk:opacity-50"}),jsx(Command.Input,{"data-slot":"command-input",className:a("fk:flex fk:h-10 fk:w-full fk:rounded-md fk:bg-transparent fk:py-3 fk:text-sm fk:outline-hidden fk:placeholder:text-muted-foreground fk:disabled:cursor-not-allowed fk:disabled:opacity-50",o),...e})]})}function j({className:o,...e}){return jsx(Command.List,{"data-slot":"command-list",className:a("fk:max-h-[300px] fk:scroll-py-1 fk:overflow-x-hidden fk:overflow-y-auto",o),...e})}function oo({...o}){return jsx(Command.Empty,{"data-slot":"command-empty",className:"fk:py-6 fk:text-center fk:text-sm",...o})}function eo({className:o,...e}){return jsx(Command.Group,{"data-slot":"command-group",className:a("fk:overflow-hidden fk:p-1 fk:text-foreground fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:py-1.5 fk:**:[[cmdk-group-heading]]:text-xs fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground",o),...e})}function to({className:o,...e}){return jsx(Command.Separator,{"data-slot":"command-separator",className:a("fk:-mx-1 fk:h-px fk:bg-border",o),...e})}function ao({className:o,...e}){return jsx(Command.Item,{"data-slot":"command-item",className:a("fk:relative fk:flex fk:cursor-default fk:items-center fk:gap-2 fk:rounded-sm fk:px-2 fk:py-1.5 fk:text-sm fk:outline-hidden fk:select-none fk:data-[disabled=true]:pointer-events-none fk:data-[disabled=true]:opacity-50 fk:data-[selected=true]:bg-accent fk:data-[selected=true]:text-accent-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4 fk:[&_svg:not([class*='text-'])]:text-muted-foreground",o),...e})}function ro({className:o,...e}){return jsx("span",{"data-slot":"command-shortcut",className:a("fk:ml-auto fk:text-xs fk:tracking-widest fk:text-muted-foreground",o),...e})}function so({className:o,children:e,...n}){return jsxs(ScrollArea.Root,{"data-slot":"scroll-area",className:a("fk:relative",o),...n,children:[jsx(ScrollArea.Viewport,{"data-slot":"scroll-area-viewport",className:"fk:size-full fk:rounded-[inherit] fk:transition-[color,box-shadow] fk:outline-none fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:focus-visible:outline-1",children:e}),jsx(z,{}),jsx(ScrollArea.Corner,{})]})}function z({className:o,orientation:e="vertical",...n}){return jsx(ScrollArea.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:e,className:a("fk:flex fk:touch-none fk:p-px fk:transition-colors fk:select-none",e==="vertical"&&"fk:h-full fk:w-2.5 fk:border-l fk:border-l-transparent",e==="horizontal"&&"fk:h-2.5 fk:flex-col fk:border-t fk:border-t-transparent",o),...n,children:jsx(ScrollArea.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"fk:relative fk:flex-1 fk:rounded-full fk:bg-border"})})}export{P as a,V as b,u as c,X as d,R as e,q as f,N as g,g as h,v as i,J as j,C as k,x as l,_ as m,Z as n,$ as o,j as p,oo as q,eo as r,to as s,ao as t,ro as u,so as v,z as w};//# sourceMappingURL=chunk-LL2Z4TD3.js.map
2
- //# sourceMappingURL=chunk-LL2Z4TD3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/primitives/badge.tsx","../src/ui/primitives/dialog.tsx","../src/ui/primitives/command.tsx","../src/ui/primitives/scroll-area.tsx"],"names":["badgeVariants","cva","Badge","className","variant","asChild","props","Comp","Slot","jsx","cn","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","children","showCloseButton","jsxs","XIcon","DialogHeader","DialogFooter","Button","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandDialog","title","description","CommandInput","SearchIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut","ScrollArea","ScrollAreaPrimitive","ScrollBar","orientation"],"mappings":"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","file":"chunk-LL2Z4TD3.js","sourcesContent":["import * as React from 'react';\nimport { Slot } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/utils';\n\nconst badgeVariants = cva(\n 'fk:inline-flex fk:w-fit fk:shrink-0 fk:items-center fk:justify-center fk:gap-1 fk:overflow-hidden fk:rounded-full fk:border fk:border-transparent fk:px-2 fk:py-0.5 fk:text-xs fk:font-medium fk:whitespace-nowrap fk:transition-[color,box-shadow] fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:dark:aria-invalid:ring-destructive/40 fk:[&>svg]:pointer-events-none fk:[&>svg]:size-3',\n {\n variants: {\n variant: {\n default: 'fk:bg-primary fk:text-primary-foreground fk:[a&]:hover:bg-primary/90',\n secondary: 'fk:bg-secondary fk:text-secondary-foreground fk:[a&]:hover:bg-secondary/90',\n destructive:\n 'fk:bg-destructive fk:text-white fk:focus-visible:ring-destructive/20 fk:dark:bg-destructive/60 fk:dark:focus-visible:ring-destructive/40 fk:[a&]:hover:bg-destructive/90',\n outline: 'fk:border-border fk:text-foreground fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground',\n ghost: 'fk:[a&]:hover:bg-accent fk:[a&]:hover:text-accent-foreground',\n link: 'fk:text-primary fk:underline-offset-4 fk:[a&]:hover:underline',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nfunction Badge({\n className,\n variant = 'default',\n asChild = false,\n ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'span';\n\n return (\n <Comp data-slot=\"badge\" data-variant={variant} className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport * as React from 'react';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\nimport { XIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'fk:fixed fk:inset-0 fk:z-50 fk:bg-black/50 fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'fk:fixed fk:top-[50%] fk:left-[50%] fk:z-50 fk:grid fk:w-full fk:max-w-[calc(100%-2rem)] fk:translate-x-[-50%] fk:translate-y-[-50%] fk:gap-4 fk:rounded-lg fk:border fk:bg-background fk:p-6 fk:shadow-lg fk:duration-200 fk:outline-none fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=closed]:zoom-out-95 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0 fk:data-[state=open]:zoom-in-95 fk:sm:max-w-lg',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"fk:absolute fk:top-4 fk:right-4 fk:rounded-xs fk:opacity-70 fk:ring-offset-background fk:transition-opacity fk:hover:opacity-100 fk:focus:ring-2 fk:focus:ring-ring fk:focus:ring-offset-2 fk:focus:outline-hidden fk:disabled:pointer-events-none fk:data-[state=open]:bg-accent fk:data-[state=open]:text-muted-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"fk:sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('fk:flex fk:flex-col fk:gap-2 fk:text-center fk:sm:text-left', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n showCloseButton?: boolean;\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('fk:flex fk:flex-col-reverse fk:gap-2 fk:sm:flex-row fk:sm:justify-end', className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('fk:text-lg fk:leading-none fk:font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('fk:text-sm fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\n\ntype CommandChildren = React.ComponentProps<typeof CommandPrimitive>['children'];\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'fk:flex fk:h-full fk:w-full fk:flex-col fk:rounded-md fk:bg-popover fk:text-popover-foreground',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"fk:sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn('fk:overflow-hidden fk:p-0', className)} showCloseButton={showCloseButton}>\n <Command className=\"fk:**:data-[slot=command-input-wrapper]:h-12 fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground fk:**:[[cmdk-group]]:px-2 fk:[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 fk:[&_[cmdk-input-wrapper]_svg]:h-5 fk:[&_[cmdk-input-wrapper]_svg]:w-5 fk:**:[[cmdk-input]]:h-12 fk:**:[[cmdk-item]]:px-2 fk:**:[[cmdk-item]]:py-3 fk:[&_[cmdk-item]_svg]:h-5 fk:[&_[cmdk-item]_svg]:w-5\">\n {children as CommandChildren}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"fk:flex fk:h-9 fk:items-center fk:gap-2 fk:border-b fk:px-3\">\n <SearchIcon className=\"fk:size-4 fk:shrink-0 fk:opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'fk:flex fk:h-10 fk:w-full fk:rounded-md fk:bg-transparent fk:py-3 fk:text-sm fk:outline-hidden fk:placeholder:text-muted-foreground fk:disabled:cursor-not-allowed fk:disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('fk:max-h-[300px] fk:scroll-py-1 fk:overflow-x-hidden fk:overflow-y-auto', className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return <CommandPrimitive.Empty data-slot=\"command-empty\" className=\"fk:py-6 fk:text-center fk:text-sm\" {...props} />;\n}\n\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'fk:overflow-hidden fk:p-1 fk:text-foreground fk:**:[[cmdk-group-heading]]:px-2 fk:**:[[cmdk-group-heading]]:py-1.5 fk:**:[[cmdk-group-heading]]:text-xs fk:**:[[cmdk-group-heading]]:font-medium fk:**:[[cmdk-group-heading]]:text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('fk:-mx-1 fk:h-px fk:bg-border', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"fk:relative fk:flex fk:cursor-default fk:items-center fk:gap-2 fk:rounded-sm fk:px-2 fk:py-1.5 fk:text-sm fk:outline-hidden fk:select-none fk:data-[disabled=true]:pointer-events-none fk:data-[disabled=true]:opacity-50 fk:data-[selected=true]:bg-accent fk:data-[selected=true]:text-accent-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4 fk:[&_svg:not([class*='text-'])]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn('fk:ml-auto fk:text-xs fk:tracking-widest fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\nimport { cn } from '../lib/utils';\n\nfunction ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root data-slot=\"scroll-area\" className={cn('fk:relative', className)} {...props}>\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"fk:size-full fk:rounded-[inherit] fk:transition-[color,box-shadow] fk:outline-none fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n 'fk:flex fk:touch-none fk:p-px fk:transition-colors fk:select-none',\n orientation === 'vertical' && 'fk:h-full fk:w-2.5 fk:border-l fk:border-l-transparent',\n orientation === 'horizontal' && 'fk:h-2.5 fk:flex-col fk:border-t fk:border-t-transparent',\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"fk:relative fk:flex-1 fk:rounded-full fk:bg-border\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {e,a as a$1,b as b$2,c}from'./chunk-YW2EEXMV.js';import {b,r}from'./chunk-IXO2LU47.js';import {b as b$1}from'./chunk-EYGOJ2ZN.js';import {a}from'./chunk-O2QMYUPS.js';import {Toggle,ToggleGroup,Separator,Collapsible}from'radix-ui';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import*as u from'react';import {useState,useCallback,useEffect}from'react';import {Loader2Icon,OctagonXIcon,TriangleAlertIcon,InfoIcon,CircleCheckIcon,X as X$1,Info}from'lucide-react';import {Toaster}from'sonner';export{toast as e}from'sonner';import {Drawer}from'vaul';var v=cva("fk:inline-flex fk:items-center fk:justify-center fk:gap-2 fk:rounded-md fk:text-sm fk:font-medium fk:whitespace-nowrap fk:transition-[color,box-shadow] fk:outline-none fk:hover:bg-muted fk:hover:text-muted-foreground fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:disabled:pointer-events-none fk:disabled:opacity-50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:data-[state=on]:bg-accent fk:data-[state=on]:text-accent-foreground fk:dark:aria-invalid:ring-destructive/40 fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"fk:bg-transparent",outline:"fk:border fk:border-input fk:bg-transparent fk:shadow-xs fk:hover:bg-accent fk:hover:text-accent-foreground"},size:{default:"fk:h-9 fk:min-w-9 fk:px-2",sm:"fk:h-8 fk:min-w-8 fk:px-1.5",lg:"fk:h-10 fk:min-w-10 fk:px-2.5"}},defaultVariants:{variant:"default",size:"default"}});function ut({className:t,variant:e,size:a$1,...o}){return jsx(Toggle.Root,{"data-slot":"toggle",className:a(v({variant:e,size:a$1,className:t})),...o})}var G=u.createContext({size:"default",variant:"default",spacing:0});function Pt({className:t,variant:e,size:a$1,spacing:o=0,children:n,...d}){return jsx(ToggleGroup.Root,{"data-slot":"toggle-group","data-variant":e,"data-size":a$1,"data-spacing":o,style:{"--gap":o},className:a("fk:group/toggle-group fk:flex fk:w-fit fk:items-center fk:gap-[--spacing(var(--gap))] fk:rounded-md fk:data-[spacing=default]:data-[variant=outline]:shadow-xs",t),...d,children:jsx(G.Provider,{value:{variant:e,size:a$1,spacing:o},children:n})})}function xt({className:t,children:e,variant:a$1,size:o,...n}){let d=u.useContext(G);return jsx(ToggleGroup.Item,{"data-slot":"toggle-group-item","data-variant":d.variant||a$1,"data-size":d.size||o,"data-spacing":d.spacing,className:a(v({variant:d.variant||a$1,size:d.size||o}),"fk:w-auto fk:min-w-0 fk:shrink-0 fk:px-3 fk:focus:z-10 fk:focus-visible:z-10","fk:data-[spacing=0]:rounded-none fk:data-[spacing=0]:shadow-none fk:data-[spacing=0]:first:rounded-l-md fk:data-[spacing=0]:last:rounded-r-md fk:data-[spacing=0]:data-[variant=outline]:border-l-0 fk:data-[spacing=0]:data-[variant=outline]:first:border-l",t),...n,children:e})}var St=({richColors:t=true,style:e,...a})=>{let{theme:o="system"}=b();return jsx(Toaster,{theme:o,richColors:t,className:"toaster group",icons:{success:jsx(CircleCheckIcon,{className:"fk:size-4"}),info:jsx(InfoIcon,{className:"fk:size-4"}),warning:jsx(TriangleAlertIcon,{className:"fk:size-4"}),error:jsx(OctagonXIcon,{className:"fk:size-4"}),loading:jsx(Loader2Icon,{className:"fk:size-4 fk:animate-spin"})},style:{"--normal-bg":"hsl(var(--popover))","--normal-text":"hsl(var(--popover-foreground))","--normal-border":"hsl(var(--border))","--border-radius":"var(--radius)",...e},...a})};function H({className:t,orientation:e="horizontal",decorative:a$1=true,...o}){return jsx(Separator.Root,{"data-slot":"separator",decorative:a$1,orientation:e,className:a("fk:shrink-0 fk:bg-border fk:data-[orientation=horizontal]:h-px fk:data-[orientation=horizontal]:w-full fk:data-[orientation=vertical]:h-full fk:data-[orientation=vertical]:w-px",t),...o})}var at=Drawer.Portal;function O({...t}){return jsx(Drawer.Root,{"data-slot":"drawer",...t})}function ot({...t}){return jsx(at,{...t})}function nt({className:t,...e}){return jsx(Drawer.Overlay,{"data-slot":"drawer-overlay",className:a("fk:fixed fk:inset-0 fk:z-50 fk:bg-overlay/75 fk:backdrop-blur-[1px] fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0",t),...e})}function X({className:t,children:e,...a$1}){return jsxs(ot,{children:[jsx(nt,{}),jsxs(Drawer.Content,{"data-slot":"drawer-content",className:a("fk:group/drawer-content fk:fixed fk:z-50 fk:flex fk:h-auto fk:flex-col fk:bg-background","fk:data-[vaul-drawer-direction=top]:inset-x-0 fk:data-[vaul-drawer-direction=top]:top-0 fk:data-[vaul-drawer-direction=top]:mb-24 fk:data-[vaul-drawer-direction=top]:max-h-[80vh] fk:data-[vaul-drawer-direction=top]:rounded-b-lg fk:data-[vaul-drawer-direction=top]:border-b","fk:data-[vaul-drawer-direction=bottom]:inset-x-0 fk:data-[vaul-drawer-direction=bottom]:bottom-0 fk:data-[vaul-drawer-direction=bottom]:mt-24 fk:data-[vaul-drawer-direction=bottom]:max-h-[80vh] fk:data-[vaul-drawer-direction=bottom]:rounded-t-lg fk:data-[vaul-drawer-direction=bottom]:border-t","fk:data-[vaul-drawer-direction=right]:inset-y-0 fk:data-[vaul-drawer-direction=right]:right-0 fk:data-[vaul-drawer-direction=right]:w-full fk:data-[vaul-drawer-direction=right]:max-w-[clamp(40vw,95vw,60rem)] fk:data-[vaul-drawer-direction=right]:border-l fk:rounded-l-[20px]","fk:data-[vaul-drawer-direction=left]:inset-y-0 fk:data-[vaul-drawer-direction=left]:left-0 fk:data-[vaul-drawer-direction=left]:w-3/4 fk:data-[vaul-drawer-direction=left]:border-r fk:data-[vaul-drawer-direction=left]:sm:max-w-sm",t),...a$1,children:[jsx("div",{className:a("fk:absolute fk:z-10 fk:hidden fk:shrink-0 fk:rounded-full fk:bg-muted","fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:top-4 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:left-1/2 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:block fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:h-2 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:w-[100px] fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:-translate-x-1/2","fk:group-data-[vaul-drawer-direction=top]/drawer-content:bottom-4 fk:group-data-[vaul-drawer-direction=top]/drawer-content:left-1/2 fk:group-data-[vaul-drawer-direction=top]/drawer-content:block fk:group-data-[vaul-drawer-direction=top]/drawer-content:h-2 fk:group-data-[vaul-drawer-direction=top]/drawer-content:w-[100px] fk:group-data-[vaul-drawer-direction=top]/drawer-content:-translate-x-1/2","fk:group-data-[vaul-drawer-direction=right]/drawer-content:left-3 fk:group-data-[vaul-drawer-direction=right]/drawer-content:top-1/2 fk:group-data-[vaul-drawer-direction=right]/drawer-content:block fk:group-data-[vaul-drawer-direction=right]/drawer-content:h-[100px] fk:group-data-[vaul-drawer-direction=right]/drawer-content:w-2 fk:group-data-[vaul-drawer-direction=right]/drawer-content:-translate-y-1/2","fk:group-data-[vaul-drawer-direction=left]/drawer-content:right-4 fk:group-data-[vaul-drawer-direction=left]/drawer-content:top-1/2 fk:group-data-[vaul-drawer-direction=left]/drawer-content:block fk:group-data-[vaul-drawer-direction=left]/drawer-content:h-[100px] fk:group-data-[vaul-drawer-direction=left]/drawer-content:w-2 fk:group-data-[vaul-drawer-direction=left]/drawer-content:-translate-y-1/2")}),e]})]})}function _({className:t,...e}){return jsx("div",{"data-slot":"drawer-header",className:a("fk:flex fk:gap-2.5 fk:p-4 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center fk:group-data-[vaul-drawer-direction=top]/drawer-content:text-center fk:md:text-left",t),...e})}function J({className:t,...e}){return jsx(Drawer.Title,{"data-slot":"drawer-title",className:a("fk:flex fk:items-center fk:text-lg fk:font-semibold fk:leading-none fk:tracking-tight",t),...e})}function F({className:t,...e}){return jsx(Drawer.Description,{"data-slot":"drawer-description",className:a("fk:text-sm fk:text-muted-foreground",t),...e})}function dt({actions:t,beforeClose:e,children:a,depth:o,isFocused:n,onFormChange:d,onClose:y,title:k}){let[M,g]=useState(false),K=o*(50/o),m=useCallback(()=>{(!e||e())&&(g(false),setTimeout(()=>{y();},150));},[e,y,g]),w=useCallback(T=>{T.key==="Escape"&&n&&m();},[m,n]);return useEffect(()=>{g(true),globalThis.document.body.classList.add("fk-drawer-fix");},[]),useEffect(()=>(globalThis.document.addEventListener("keydown",w,false),()=>{globalThis.document.removeEventListener("keydown",w,false);}),[w]),jsx(O,{direction:"right",dismissible:false,onClose:()=>{m();},open:M,children:jsxs(X,{style:n?{}:{maxWidth:`calc(100% - ${K.toString()}px)`},children:[jsxs(_,{className:"fk:px-10",children:[jsx(J,{className:"fk:w-full",children:k||jsx(r,{className:"fk:h-5 fk:w-[120px]"})}),jsx(F,{className:"fk:sr-only",children:k||"Loading form"}),t,jsxs(b$1,{className:"",onClick:m,size:"icon",variant:"ghost",children:[jsx(X$1,{className:"fk:h-4 fk:w-4"}),jsx("span",{className:"fk:sr-only",children:"Close"})]})]}),jsx(H,{}),jsx("div",{className:"fk:min-h-0 fk:px-10 fk:pt-6 fk:h-full fk:overflow-y-auto fk:pb-16","data-vaul-no-drag":true,children:a})]})})}function qt({className:t,containerClassName:e,onScroll:a$1,ref:o,...n}){return jsx("div",{ref:o,"data-slot":"table-container",className:a("fk:relative fk:h-full fk:w-full fk:min-w-0 fk:overflow-auto fk:rounded-t-md fk:border-border fk:border",e),onScroll:a$1,children:jsx("table",{"data-slot":"table",className:a("fk:w-full fk:caption-bottom fk:text-sm",t),...n})})}function Qt({className:t,...e}){return jsx("thead",{"data-slot":"table-header",className:a("fk:[&_tr]:border-b fk:bg-muted fk:dark:bg-muted",t),...e})}function Ut({className:t,...e}){return jsx("tbody",{"data-slot":"table-body",className:a("fk:[&_tr:last-child]:border-0",t),...e})}function Zt({className:t,...e}){return jsx("tfoot",{"data-slot":"table-footer",className:a("fk:border-t fk:bg-muted/50 fk:font-medium fk:[&>tr]:last:border-b-0",t),...e})}function jt({className:t,...e}){return jsx("tr",{"data-slot":"table-row",className:a("fk:border-b fk:transition-colors fk:hover:bg-muted/50 fk:has-aria-expanded:bg-muted/50 fk:data-[state=selected]:bg-muted",t),...e})}function te({className:t,...e}){return jsx("th",{"data-slot":"table-head",className:a("fk:h-10 fk:px-4 fk:text-left fk:align-middle fk:font-medium fk:whitespace-nowrap fk:text-foreground fk:[&:has([role=checkbox])]:pr-0 fk:*:[[role=checkbox]]:translate-y-[2px]",t),...e})}function ee({className:t,...e}){return jsx("td",{"data-slot":"table-cell",className:a("fk:px-4 fk:py-1 fk:align-middle fk:whitespace-nowrap fk:[&:has([role=checkbox])]:pr-0 fk:*:[[role=checkbox]]:translate-y-[2px]",t),...e})}function re({className:t,...e}){return jsx("caption",{"data-slot":"table-caption",className:a("fk:mt-4 fk:text-sm fk:text-muted-foreground",t),...e})}function st(){return jsx(e,{className:"fk:max-w-64 fk:p-3",children:jsxs("div",{className:"fk:flex fk:gap-2.5",children:[jsx(Info,{className:"fk:mt-0.5 fk:h-4 fk:w-4 fk:shrink-0 fk:opacity-70"}),jsxs("div",{className:"fk:flex fk:flex-col fk:gap-1",children:[jsx("p",{className:"fk:text-sm fk:font-semibold fk:leading-none",children:"Insufficient permissions"}),jsx("p",{className:"fk:text-xs fk:opacity-70 fk:leading-snug",children:"Your member role cannot perform this action"})]})]})})}function le({disabled:t,children:e}){return t?jsx(a$1,{children:jsxs(b$2,{children:[jsx(c,{asChild:true,children:jsx("span",{className:"fk:inline-flex",children:e})}),jsx(st,{})]})}):jsx(Fragment,{children:e})}function ce({...t}){return jsx(Collapsible.Root,{"data-slot":"collapsible",...t})}function pe({...t}){return jsx(Collapsible.CollapsibleTrigger,{"data-slot":"collapsible-trigger",...t})}function ke({...t}){return jsx(Collapsible.CollapsibleContent,{"data-slot":"collapsible-content",...t})}export{v as a,ut as b,Pt as c,xt as d,St as f,H as g,dt as h,ce as i,pe as j,ke as k,qt as l,Qt as m,Ut as n,Zt as o,jt as p,te as q,ee as r,re as s,st as t,le as u};//# sourceMappingURL=chunk-MC6VZLKC.js.map
2
- //# sourceMappingURL=chunk-MC6VZLKC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/primitives/toggle.tsx","../src/ui/primitives/toggle-group.tsx","../src/ui/primitives/sonner.tsx","../src/ui/primitives/separator.tsx","../src/ui/primitives/drawer.tsx","../src/ui/components/drawer-modal.tsx","../src/ui/primitives/table.tsx","../src/ui/components/permission-tooltip.tsx","../src/ui/primitives/collapsible.tsx"],"names":["toggleVariants","cva","Toggle","className","variant","size","props","jsx","TogglePrimitive","cn","ToggleGroupContext","ToggleGroup","spacing","children","ToggleGroupPrimitive","ToggleGroupItem","context","Toaster","richColors","style","theme","useTheme","Sonner","CircleCheckIcon","InfoIcon","TriangleAlertIcon","OctagonXIcon","Loader2Icon","Separator","orientation","decorative","SeparatorPrimitive","DrawerPrimitivePortal","DrawerPrimitive","Drawer","DrawerPortal","DrawerOverlay","DrawerContent","jsxs","DrawerHeader","DrawerTitle","DrawerDescription","DrawerModal","actions","beforeClose","depth","isFocused","_onFormChange","onClose","title","isOpen","setIsOpen","useState","gutter","handleClose","useCallback","onEscapeKeyPressed","event","useEffect","Skeleton","Button","CloseIcon","Table","containerClassName","onScroll","ref","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","InsufficientPermissionsTooltipContent","TooltipContent","Info","PermissionTooltip","disabled","TooltipProvider","Tooltip","TooltipTrigger","Fragment","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent"],"mappings":"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","file":"chunk-MC6VZLKC.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Toggle as TogglePrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/utils';\n\nconst toggleVariants = cva(\n \"fk:inline-flex fk:items-center fk:justify-center fk:gap-2 fk:rounded-md fk:text-sm fk:font-medium fk:whitespace-nowrap fk:transition-[color,box-shadow] fk:outline-none fk:hover:bg-muted fk:hover:text-muted-foreground fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:disabled:pointer-events-none fk:disabled:opacity-50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:data-[state=on]:bg-accent fk:data-[state=on]:text-accent-foreground fk:dark:aria-invalid:ring-destructive/40 fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: 'fk:bg-transparent',\n outline:\n 'fk:border fk:border-input fk:bg-transparent fk:shadow-xs fk:hover:bg-accent fk:hover:text-accent-foreground',\n },\n size: {\n default: 'fk:h-9 fk:min-w-9 fk:px-2',\n sm: 'fk:h-8 fk:min-w-8 fk:px-1.5',\n lg: 'fk:h-10 fk:min-w-10 fk:px-2.5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root data-slot=\"toggle\" className={cn(toggleVariants({ variant, size, className }))} {...props} />\n );\n}\n\nexport { Toggle, toggleVariants };\n","'use client';\n\nimport * as React from 'react';\nimport { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/utils';\nimport { toggleVariants } from './toggle';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }\n>({\n size: 'default',\n variant: 'default',\n spacing: 0,\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ '--gap': spacing } as React.CSSProperties}\n className={cn(\n 'fk:group/toggle-group fk:flex fk:w-fit fk:items-center fk:gap-[--spacing(var(--gap))] fk:rounded-md fk:data-[spacing=default]:data-[variant=outline]:shadow-xs',\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>{children}</ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n 'fk:w-auto fk:min-w-0 fk:shrink-0 fk:px-3 fk:focus:z-10 fk:focus-visible:z-10',\n 'fk:data-[spacing=0]:rounded-none fk:data-[spacing=0]:shadow-none fk:data-[spacing=0]:first:rounded-l-md fk:data-[spacing=0]:last:rounded-r-md fk:data-[spacing=0]:data-[variant=outline]:border-l-0 fk:data-[spacing=0]:data-[variant=outline]:first:border-l',\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","'use client';\n\nimport { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon } from 'lucide-react';\nimport { useTheme } from '../theme-context';\nimport { toast, Toaster as Sonner, type ToasterProps } from 'sonner';\n\nconst Toaster = ({ richColors = true, style, ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n richColors={richColors}\n className=\"toaster group\"\n icons={{\n success: <CircleCheckIcon className=\"fk:size-4\" />,\n info: <InfoIcon className=\"fk:size-4\" />,\n warning: <TriangleAlertIcon className=\"fk:size-4\" />,\n error: <OctagonXIcon className=\"fk:size-4\" />,\n loading: <Loader2Icon className=\"fk:size-4 fk:animate-spin\" />,\n }}\n style={\n {\n '--normal-bg': 'hsl(var(--popover))',\n '--normal-text': 'hsl(var(--popover-foreground))',\n '--normal-border': 'hsl(var(--border))',\n '--border-radius': 'var(--radius)',\n ...style,\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { toast, Toaster };\n","'use client';\n\nimport * as React from 'react';\nimport { Separator as SeparatorPrimitive } from 'radix-ui';\nimport { cn } from '../lib/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'fk:shrink-0 fk:bg-border fk:data-[orientation=horizontal]:h-px fk:data-[orientation=horizontal]:w-full fk:data-[orientation=vertical]:h-full fk:data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","'use client';\n\nimport * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\nimport { cn } from '../lib/utils';\n\ntype DrawerPortalProps = React.PropsWithChildren<{\n container?: HTMLElement | null;\n}>;\n\nconst DrawerPrimitivePortal = DrawerPrimitive.Portal as React.ComponentType<DrawerPortalProps>;\n\nfunction Drawer({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({ ...props }: DrawerPortalProps) {\n return <DrawerPrimitivePortal {...props} />;\n}\n\nfunction DrawerClose({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n 'fk:fixed fk:inset-0 fk:z-50 fk:bg-overlay/75 fk:backdrop-blur-[1px] fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({ className, children, ...props }: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n return (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'fk:group/drawer-content fk:fixed fk:z-50 fk:flex fk:h-auto fk:flex-col fk:bg-background',\n 'fk:data-[vaul-drawer-direction=top]:inset-x-0 fk:data-[vaul-drawer-direction=top]:top-0 fk:data-[vaul-drawer-direction=top]:mb-24 fk:data-[vaul-drawer-direction=top]:max-h-[80vh] fk:data-[vaul-drawer-direction=top]:rounded-b-lg fk:data-[vaul-drawer-direction=top]:border-b',\n 'fk:data-[vaul-drawer-direction=bottom]:inset-x-0 fk:data-[vaul-drawer-direction=bottom]:bottom-0 fk:data-[vaul-drawer-direction=bottom]:mt-24 fk:data-[vaul-drawer-direction=bottom]:max-h-[80vh] fk:data-[vaul-drawer-direction=bottom]:rounded-t-lg fk:data-[vaul-drawer-direction=bottom]:border-t',\n 'fk:data-[vaul-drawer-direction=right]:inset-y-0 fk:data-[vaul-drawer-direction=right]:right-0 fk:data-[vaul-drawer-direction=right]:w-full fk:data-[vaul-drawer-direction=right]:max-w-[clamp(40vw,95vw,60rem)] fk:data-[vaul-drawer-direction=right]:border-l fk:rounded-l-[20px]',\n 'fk:data-[vaul-drawer-direction=left]:inset-y-0 fk:data-[vaul-drawer-direction=left]:left-0 fk:data-[vaul-drawer-direction=left]:w-3/4 fk:data-[vaul-drawer-direction=left]:border-r fk:data-[vaul-drawer-direction=left]:sm:max-w-sm',\n className\n )}\n {...props}\n >\n <div\n className={cn(\n 'fk:absolute fk:z-10 fk:hidden fk:shrink-0 fk:rounded-full fk:bg-muted',\n 'fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:top-4 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:left-1/2 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:block fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:h-2 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:w-[100px] fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:-translate-x-1/2',\n 'fk:group-data-[vaul-drawer-direction=top]/drawer-content:bottom-4 fk:group-data-[vaul-drawer-direction=top]/drawer-content:left-1/2 fk:group-data-[vaul-drawer-direction=top]/drawer-content:block fk:group-data-[vaul-drawer-direction=top]/drawer-content:h-2 fk:group-data-[vaul-drawer-direction=top]/drawer-content:w-[100px] fk:group-data-[vaul-drawer-direction=top]/drawer-content:-translate-x-1/2',\n 'fk:group-data-[vaul-drawer-direction=right]/drawer-content:left-3 fk:group-data-[vaul-drawer-direction=right]/drawer-content:top-1/2 fk:group-data-[vaul-drawer-direction=right]/drawer-content:block fk:group-data-[vaul-drawer-direction=right]/drawer-content:h-[100px] fk:group-data-[vaul-drawer-direction=right]/drawer-content:w-2 fk:group-data-[vaul-drawer-direction=right]/drawer-content:-translate-y-1/2',\n 'fk:group-data-[vaul-drawer-direction=left]/drawer-content:right-4 fk:group-data-[vaul-drawer-direction=left]/drawer-content:top-1/2 fk:group-data-[vaul-drawer-direction=left]/drawer-content:block fk:group-data-[vaul-drawer-direction=left]/drawer-content:h-[100px] fk:group-data-[vaul-drawer-direction=left]/drawer-content:w-2 fk:group-data-[vaul-drawer-direction=left]/drawer-content:-translate-y-1/2'\n )}\n />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'fk:flex fk:gap-2.5 fk:p-4 fk:group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center fk:group-data-[vaul-drawer-direction=top]/drawer-content:text-center fk:md:text-left',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('fk:mt-auto fk:flex fk:flex-col fk:gap-2 fk:p-4', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('fk:flex fk:items-center fk:text-lg fk:font-semibold fk:leading-none fk:tracking-tight', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('fk:text-sm fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","'use client';\n\nimport type { JSX } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport type { Dispatch, ReactNode, SetStateAction } from 'react';\nimport { X as CloseIcon } from 'lucide-react';\nimport { Button } from '../primitives/button';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle } from '../primitives/drawer';\nimport { Separator } from '../primitives/separator';\nimport { Skeleton } from '../primitives/skeleton';\n\ntype Props = {\n actions: ReactNode;\n beforeClose?: () => boolean;\n children: ReactNode;\n depth: number; // how many drawers are open, to control the width of the drawers\n isFocused: boolean; // whether the drawer is the last one open\n onFormChange?: Dispatch<SetStateAction<boolean>>; // a callback executed everyt time the form changes its state\n onClose: () => void;\n title: string;\n};\n\nexport default function DrawerModal({\n actions,\n beforeClose,\n children,\n depth,\n isFocused,\n onFormChange: _onFormChange,\n onClose,\n title,\n}: Props): JSX.Element {\n const [isOpen, setIsOpen] = useState(false);\n const gutter = depth * (50 / depth);\n\n const handleClose = useCallback(() => {\n const shouldClose = beforeClose ? beforeClose() : true;\n\n if (!shouldClose) return;\n\n setIsOpen(false);\n setTimeout(() => {\n onClose();\n }, 150);\n }, [beforeClose, onClose, setIsOpen]);\n\n const onEscapeKeyPressed = useCallback(\n (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && isFocused) {\n handleClose();\n }\n },\n [handleClose, isFocused]\n );\n\n useEffect(() => {\n setIsOpen(true);\n // overwrite \"background: black\" set by Vaul in the body, and add missing bottom: 0 style\n globalThis.document.body.classList.add('fk-drawer-fix');\n }, []);\n\n useEffect(() => {\n globalThis.document.addEventListener('keydown', onEscapeKeyPressed, false);\n\n return () => {\n globalThis.document.removeEventListener('keydown', onEscapeKeyPressed, false);\n };\n }, [onEscapeKeyPressed]);\n\n return (\n <Drawer\n direction=\"right\"\n dismissible={false}\n onClose={() => {\n handleClose();\n }}\n open={isOpen}\n >\n <DrawerContent style={isFocused ? {} : { maxWidth: `calc(100% - ${gutter.toString()}px)` }}>\n <DrawerHeader className=\"fk:px-10\">\n <DrawerTitle className=\"fk:w-full\">\n {title ? title : <Skeleton className=\"fk:h-5 fk:w-[120px]\" />}\n </DrawerTitle>\n <DrawerDescription className=\"fk:sr-only\">{title ? title : 'Loading form'}</DrawerDescription>\n {actions}\n <Button className=\"\" onClick={handleClose} size=\"icon\" variant=\"ghost\">\n <CloseIcon className=\"fk:h-4 fk:w-4\" />\n <span className=\"fk:sr-only\">Close</span>\n </Button>\n </DrawerHeader>\n <Separator />\n <div className=\"fk:min-h-0 fk:px-10 fk:pt-6 fk:h-full fk:overflow-y-auto fk:pb-16\" data-vaul-no-drag>\n {children}\n </div>\n </DrawerContent>\n </Drawer>\n );\n}\n","import * as React from 'react';\nimport { cn } from '../lib/utils';\n\ntype TableProps = Omit<React.ComponentProps<'table'>, 'ref'> & {\n containerClassName?: string;\n ref?: React.Ref<HTMLDivElement>;\n};\n\nfunction Table({ className, containerClassName, onScroll, ref, ...props }: TableProps) {\n return (\n <div\n ref={ref}\n data-slot=\"table-container\"\n className={cn(\n 'fk:relative fk:h-full fk:w-full fk:min-w-0 fk:overflow-auto fk:rounded-t-md fk:border-border fk:border',\n containerClassName\n )}\n onScroll={onScroll}\n >\n <table data-slot=\"table\" className={cn('fk:w-full fk:caption-bottom fk:text-sm', className)} {...props} />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return <thead data-slot=\"table-header\" className={cn('fk:[&_tr]:border-b fk:bg-muted fk:dark:bg-muted', className)} {...props} />;\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return <tbody data-slot=\"table-body\" className={cn('fk:[&_tr:last-child]:border-0', className)} {...props} />;\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('fk:border-t fk:bg-muted/50 fk:font-medium fk:[&>tr]:last:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'fk:border-b fk:transition-colors fk:hover:bg-muted/50 fk:has-aria-expanded:bg-muted/50 fk:data-[state=selected]:bg-muted',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'fk:h-10 fk:px-4 fk:text-left fk:align-middle fk:font-medium fk:whitespace-nowrap fk:text-foreground fk:[&:has([role=checkbox])]:pr-0 fk:*:[[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'fk:px-4 fk:py-1 fk:align-middle fk:whitespace-nowrap fk:[&:has([role=checkbox])]:pr-0 fk:*:[[role=checkbox]]:translate-y-[2px]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('fk:mt-4 fk:text-sm fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","'use client';\n\nimport { Info } from 'lucide-react';\nimport type { JSX, ReactNode } from 'react';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../primitives/tooltip';\n\nexport function InsufficientPermissionsTooltipContent(): JSX.Element {\n return (\n <TooltipContent className=\"fk:max-w-64 fk:p-3\">\n <div className=\"fk:flex fk:gap-2.5\">\n <Info className=\"fk:mt-0.5 fk:h-4 fk:w-4 fk:shrink-0 fk:opacity-70\" />\n <div className=\"fk:flex fk:flex-col fk:gap-1\">\n <p className=\"fk:text-sm fk:font-semibold fk:leading-none\">Insufficient permissions</p>\n <p className=\"fk:text-xs fk:opacity-70 fk:leading-snug\">Your member role cannot perform this action</p>\n </div>\n </div>\n </TooltipContent>\n );\n}\n\n/**\n * Wraps a disabled control so it still shows an \"Insufficient permissions\"\n * tooltip on hover (disabled buttons swallow pointer events, hence the span).\n */\nexport function PermissionTooltip({ disabled, children }: { disabled: boolean; children: ReactNode }): JSX.Element {\n if (!disabled) {\n return <>{children}</>;\n }\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"fk:inline-flex\">{children}</span>\n </TooltipTrigger>\n <InsufficientPermissionsTooltipContent />\n </Tooltip>\n </TooltipProvider>\n );\n}\n","'use client';\n\nimport { Collapsible as CollapsiblePrimitive } from 'radix-ui';\n\nfunction Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return <CollapsiblePrimitive.CollapsibleTrigger data-slot=\"collapsible-trigger\" {...props} />;\n}\n\nfunction CollapsibleContent({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return <CollapsiblePrimitive.CollapsibleContent data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a as a$1,b as b$2,c,d as d$1,e}from'./chunk-YW2EEXMV.js';import {b as b$1}from'./chunk-WDRCARCP.js';import {defaultStyles,FileIcon}from'react-file-icon';import {useMemo,useState,useEffect}from'react';import {jsx,jsxs}from'react/jsx-runtime';var _=250,N=25e5,a=new Map,b=new Map,w=new Set,A=new Map;function d(e){if(A.has(e))return;let t=new Image;t.decoding="async",t.src=e,A.set(e,t);}function g(e){let t=a.get(e);t&&a.set(e,{...t,lastUsedAt:Date.now()});}function I(){if(a.size<=_)return;let e=Array.from(a.entries()).sort((n,s)=>n[1].lastUsedAt-s[1].lastUsedAt),t=Math.max(1,Math.ceil(_*.1));for(let n=0;n<t&&n<e.length;n+=1){let[s,r]=e[n];a.delete(s),URL.revokeObjectURL(r.objectUrl);}}async function j(e){if(w.has(e)){d(e);return}if(a.has(e)){g(e);return}let t=b.get(e);if(t){await t;return}let n=(async()=>{try{let s=await fetch(e,{mode:"cors",cache:"force-cache"});if(!s.ok){d(e);return}let r=await s.blob();if(r.size>N)return;let i=URL.createObjectURL(r);a.set(e,{objectUrl:i,byteSize:r.size,lastUsedAt:Date.now()}),I();}catch(s){s instanceof TypeError&&w.add(e),d(e);}})();b.set(e,n),await n,b.delete(e);}function U(e){let t=useMemo(()=>{if(!e)return null;let r=a.get(e);return r?(g(e),r.objectUrl):null},[e]),[n,s]=useState(t);return useEffect(()=>{if(!e){s(null);return}if(w.has(e)){d(e),s(null);return}let r=a.get(e);if(r){g(e),s(r.objectUrl);return}s(null);let i=false;return j(e).then(()=>{let f=a.get(e);f&&(i||(g(e),s(f.objectUrl)));}),()=>{i=true;}},[e]),n}var x="fk:bg-[#fafafa] [--asset-checker:#f0f0f0] [background-image:linear-gradient(45deg,var(--asset-checker)_25%,transparent_25%),linear-gradient(-45deg,var(--asset-checker)_25%,transparent_25%),linear-gradient(45deg,transparent_75%,var(--asset-checker)_75%),linear-gradient(-45deg,transparent_75%,var(--asset-checker)_75%)] [background-position:0_0,0_4px,4px_-4px,-4px_0px] [background-size:8px_8px] fk:dark:bg-[#222] dark:[--asset-checker:#2a2a2a]";function G({value:e}){return Array.isArray(e)?jsx(z,{value:e}):jsx(L,{value:e})}function L({value:e$1}){let t=e$1?.path??"",n=!!t,s=n&&/\.(png|jpe?g|gif|webp|avif|svg)$/i.test(t),r=l=>{let[u]=l.split("?"),y=u.split(".");return y.length>1?y.pop().toLowerCase():"file"},i=n?t.endsWith(".svg")?`${b$1}${t}`:`${b$1}${t}?w=84&h=84&f=webp`:null,f=n?t.endsWith(".svg")?`${b$1}${t}`:`${b$1}${t}?w=624&h=624&f=webp`:"",C=U(i);return n?jsx("div",{className:"fk:z-10",children:jsx(a$1,{children:s?jsxs(b$2,{children:[jsx(c,{asChild:true,children:jsx("img",{alt:"asset",className:`fk:w-7 fk:h-7 fk:cursor-zoom-in fk:overflow-hidden fk:rounded-md fk:object-contain ${x}`,decoding:"async",src:C??void 0})}),jsx(d$1,{children:jsx(e,{children:jsx("img",{alt:"asset",className:`fk:w-52 fk:h-52 fk:overflow-hidden fk:rounded-md fk:object-contain ${x}`,decoding:"async",src:f})})})]}):jsxs(b$2,{children:[jsx(c,{asChild:true,children:jsx("div",{className:"fk:w-7 fk:h-7 fk:rounded-sm fk:bg-transparent fk:flex fk:items-center fk:justify-center fk:[&>svg]:h-full fk:[&>svg]:w-auto",children:(()=>{let l=r(t),u=defaultStyles[l];return jsx(FileIcon,{extension:l,...u||{}})})()})}),jsx(d$1,{children:jsx(e,{children:jsx("div",{className:"fk:text-sm fk:text-muted-foreground",children:"Preview not available"})})})]})})}):null}function z({value:e}){let t=e.filter(r=>!!r.path).slice(0,3),n=Math.max(e[0]?.totalCount??0,e.length);if(t.length===0)return n>0?jsx("div",{className:"fk:flex fk:items-center",children:jsx("span",{className:"fk:text-xs fk:text-muted-foreground",children:n===1?"1 asset":`${n} assets`})}):null;let s=n-t.length;return jsxs("div",{className:"fk:flex fk:items-center",children:[jsx("div",{className:"fk:flex fk:-space-x-2",children:t.map(r=>jsx("img",{alt:"asset",className:`fk:h-7 fk:w-7 fk:overflow-hidden fk:rounded-md fk:object-contain ${x}`,decoding:"async",src:`${b$1}${r.path}?w=84&h=84&f=webp`},r._id))}),s>0?jsxs("span",{className:"fk:ml-2 fk:text-xs fk:text-muted-foreground",children:["+",s]}):null]})}export{G as a};//# sourceMappingURL=chunk-N52AF6GE.js.map
2
- //# sourceMappingURL=chunk-N52AF6GE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/hooks/use-cached-image-src.ts","../src/data-grid/preview-components/asset.tsx"],"names":["MAX_CACHE_ENTRIES","MAX_SINGLE_BLOB_BYTES","blobUrlCache","inFlightLoads","corsBlockedUrls","preloadedImages","ensurePreloaded","url","img","touch","entry","evictIfNeeded","entries","a","b","evictCount","i","loadToCache","existing","promise","res","blob","objectUrl","err","useCachedImageSrc","initial","useMemo","cached","src","setSrc","useState","useEffect","isStale","next","transparentImageBackground","Asset","value","jsx","AssetStack","SingleAsset","path","hasPath","isImage","getExtensionFromPath","p","clean","parts","thumbnaillUrl","IMAGES_BASE_URL","fullUrl","cachedThumbnailSrc","TooltipProvider","jsxs","Tooltip","TooltipTrigger","TooltipPortal","TooltipContent","ext","style","defaultStyles","FileTypeIcon","assets","asset","totalCount","overflowCount"],"mappings":"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","file":"chunk-N52AF6GE.js","sourcesContent":["import { useEffect, useMemo, useState } from 'react';\n\ntype CacheEntry = {\n objectUrl: string;\n byteSize: number;\n lastUsedAt: number;\n};\n\nconst MAX_CACHE_ENTRIES = 250;\nconst MAX_SINGLE_BLOB_BYTES = 2_500_000; // ~2.5MB\n\nconst blobUrlCache = new Map<string, CacheEntry>();\nconst inFlightLoads = new Map<string, Promise<void>>();\nconst corsBlockedUrls = new Set<string>();\nconst preloadedImages = new Map<string, HTMLImageElement>();\n\nfunction ensurePreloaded(url: string): void {\n if (preloadedImages.has(url)) {\n return;\n }\n\n const img = new Image();\n img.decoding = 'async';\n img.src = url;\n preloadedImages.set(url, img);\n}\n\nfunction touch(url: string): void {\n const entry = blobUrlCache.get(url);\n\n if (!entry) {\n return;\n }\n\n blobUrlCache.set(url, { ...entry, lastUsedAt: Date.now() });\n}\n\nfunction evictIfNeeded(): void {\n if (blobUrlCache.size <= MAX_CACHE_ENTRIES) {\n return;\n }\n\n const entries = Array.from(blobUrlCache.entries()).sort((a, b) => a[1].lastUsedAt - b[1].lastUsedAt);\n const evictCount = Math.max(1, Math.ceil(MAX_CACHE_ENTRIES * 0.1));\n\n for (let i = 0; i < evictCount && i < entries.length; i += 1) {\n const [url, entry] = entries[i];\n blobUrlCache.delete(url);\n\n URL.revokeObjectURL(entry.objectUrl);\n }\n}\n\nasync function loadToCache(url: string): Promise<void> {\n if (corsBlockedUrls.has(url)) {\n ensurePreloaded(url);\n\n return;\n }\n\n if (blobUrlCache.has(url)) {\n touch(url);\n\n return;\n }\n\n const existing = inFlightLoads.get(url);\n\n if (existing) {\n await existing;\n\n return;\n }\n\n const promise = (async () => {\n try {\n const res = await fetch(url, {\n mode: 'cors',\n cache: 'force-cache',\n });\n\n if (!res.ok) {\n ensurePreloaded(url);\n\n return;\n }\n\n const blob = await res.blob();\n\n if (blob.size > MAX_SINGLE_BLOB_BYTES) {\n return;\n }\n\n const objectUrl = URL.createObjectURL(blob);\n blobUrlCache.set(url, { objectUrl, byteSize: blob.size, lastUsedAt: Date.now() });\n evictIfNeeded();\n } catch (err: unknown) {\n // Most common failure is CORS (TypeError: Failed to fetch). If so, avoid retrying.\n if (err instanceof TypeError) {\n corsBlockedUrls.add(url);\n }\n\n ensurePreloaded(url);\n }\n })();\n\n inFlightLoads.set(url, promise);\n\n await promise;\n\n inFlightLoads.delete(url);\n}\n\n/**\n * Keeps a stable, in-memory cached image src across virtualized unmount/remount cycles.\n * Falls back to the original URL if the image can’t be fetched (e.g. due to CORS).\n */\nexport function useCachedImageSrc(url: string | null | undefined): string | null {\n const initial = useMemo(() => {\n if (!url) {\n return null;\n }\n\n const cached = blobUrlCache.get(url);\n\n if (!cached) {\n return null;\n }\n\n touch(url);\n\n return cached.objectUrl;\n }, [url]);\n\n const [src, setSrc] = useState<string | null>(initial);\n\n useEffect(() => {\n if (!url) {\n setSrc(null);\n\n return;\n }\n\n if (corsBlockedUrls.has(url)) {\n ensurePreloaded(url);\n setSrc(null);\n\n return;\n }\n\n const cached = blobUrlCache.get(url);\n\n if (cached) {\n touch(url);\n setSrc(cached.objectUrl);\n\n return;\n }\n\n setSrc(null);\n let isStale = false;\n\n loadToCache(url).then(() => {\n const next = blobUrlCache.get(url);\n\n if (!next) {\n return;\n }\n\n if (isStale) {\n return;\n }\n\n touch(url);\n setSrc(next.objectUrl);\n });\n\n return () => {\n isStale = true;\n };\n }, [url]);\n\n return src;\n}\n","import type { JSX } from 'react';\nimport { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger } from '../../ui/primitives/tooltip';\nimport { IMAGES_BASE_URL } from '../../core/api-paths';\nimport { FileIcon as FileTypeIcon, defaultStyles } from 'react-file-icon';\nimport { useCachedImageSrc } from '../../ui/hooks/use-cached-image-src';\n\nexport type Asset = {\n _id: string;\n path: string;\n /** Total connected assets; the fetched array is bounded by the query's `first`. */\n totalCount?: number;\n};\n\nconst transparentImageBackground =\n 'fk:bg-[#fafafa] [--asset-checker:#f0f0f0] [background-image:linear-gradient(45deg,var(--asset-checker)_25%,transparent_25%),linear-gradient(-45deg,var(--asset-checker)_25%,transparent_25%),linear-gradient(45deg,transparent_75%,var(--asset-checker)_75%),linear-gradient(-45deg,transparent_75%,var(--asset-checker)_75%)] [background-position:0_0,0_4px,4px_-4px,-4px_0px] [background-size:8px_8px] fk:dark:bg-[#222] dark:[--asset-checker:#2a2a2a]';\n\nexport function Asset({ value }: { value: Asset | Asset[] }) {\n if (Array.isArray(value)) {\n return <AssetStack value={value} />;\n }\n\n return <SingleAsset value={value} />;\n}\n\nfunction SingleAsset({ value }: { value: Asset }) {\n const path = value?.path ?? '';\n const hasPath = Boolean(path);\n const isImage = hasPath && /\\.(png|jpe?g|gif|webp|avif|svg)$/i.test(path);\n\n const getExtensionFromPath = (p: string): string => {\n const [clean] = p.split('?');\n const parts = clean.split('.');\n\n if (parts.length > 1) {\n return parts.pop()!.toLowerCase();\n }\n\n return 'file';\n };\n\n const thumbnaillUrl = hasPath\n ? path.endsWith('.svg')\n ? `${IMAGES_BASE_URL}${path}`\n : `${IMAGES_BASE_URL}${path}?w=84&h=84&f=webp`\n : null;\n\n const fullUrl = hasPath\n ? path.endsWith('.svg')\n ? `${IMAGES_BASE_URL}${path}`\n : `${IMAGES_BASE_URL}${path}?w=624&h=624&f=webp`\n : '';\n\n const cachedThumbnailSrc = useCachedImageSrc(thumbnaillUrl);\n\n if (!hasPath) {\n return null;\n }\n\n return (\n <div className=\"fk:z-10\">\n <TooltipProvider>\n {isImage ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <img\n alt=\"asset\"\n className={`fk:w-7 fk:h-7 fk:cursor-zoom-in fk:overflow-hidden fk:rounded-md fk:object-contain ${transparentImageBackground}`}\n decoding=\"async\"\n src={cachedThumbnailSrc ?? undefined}\n />\n </TooltipTrigger>\n <TooltipPortal>\n <TooltipContent>\n <img\n alt=\"asset\"\n className={`fk:w-52 fk:h-52 fk:overflow-hidden fk:rounded-md fk:object-contain ${transparentImageBackground}`}\n decoding=\"async\"\n src={fullUrl}\n />\n </TooltipContent>\n </TooltipPortal>\n </Tooltip>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"fk:w-7 fk:h-7 fk:rounded-sm fk:bg-transparent fk:flex fk:items-center fk:justify-center fk:[&>svg]:h-full fk:[&>svg]:w-auto\">\n {(() => {\n const ext = getExtensionFromPath(path);\n const style = (\n defaultStyles as Record<string, Record<string, string | number | boolean | undefined>>\n )[ext];\n\n return <FileTypeIcon extension={ext} {...(style || {})} />;\n })()}\n </div>\n </TooltipTrigger>\n <TooltipPortal>\n <TooltipContent>\n <div className=\"fk:text-sm fk:text-muted-foreground\">Preview not available</div>\n </TooltipContent>\n </TooltipPortal>\n </Tooltip>\n )}\n </TooltipProvider>\n </div>\n );\n}\n\nfunction AssetStack({ value }: { value: Asset[] }): JSX.Element | null {\n const assets = value.filter((asset) => Boolean(asset.path)).slice(0, 3);\n // Queries bound connection edges, so the array length undercounts; the\n // aggregate total travels on each item as totalCount.\n const totalCount = Math.max(value[0]?.totalCount ?? 0, value.length);\n\n // All fetched edges can lack `path` (still-processing uploads, incomplete\n // nodes) while totalCount > 0 — especially likely now that list queries\n // only fetch the first 3 edges. Show a count so the cell is not blank.\n if (assets.length === 0) {\n if (totalCount > 0) {\n return (\n <div className=\"fk:flex fk:items-center\">\n <span className=\"fk:text-xs fk:text-muted-foreground\">\n {totalCount === 1 ? '1 asset' : `${totalCount} assets`}\n </span>\n </div>\n );\n }\n\n return null;\n }\n\n const overflowCount = totalCount - assets.length;\n\n return (\n <div className=\"fk:flex fk:items-center\">\n <div className=\"fk:flex fk:-space-x-2\">\n {assets.map((asset) => (\n <img\n alt=\"asset\"\n className={`fk:h-7 fk:w-7 fk:overflow-hidden fk:rounded-md fk:object-contain ${transparentImageBackground}`}\n decoding=\"async\"\n key={asset._id}\n src={`${IMAGES_BASE_URL}${asset.path}?w=84&h=84&f=webp`}\n />\n ))}\n </div>\n {overflowCount > 0 ? (\n <span className=\"fk:ml-2 fk:text-xs fk:text-muted-foreground\">+{overflowCount}</span>\n ) : null}\n </div>\n );\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {createContext,useMemo,useContext}from'react';import {path,has}from'ramda';import {useParams}from'react-router-dom';import {jsx}from'react/jsx-runtime';var c={name:"_asset",plural:"_assets",menu:{hidden:true},attributes:[{name:"path",label:"Asset",scope:"global",options:{size:140},isEditable:true,dataType:"string",inputType:"text",previewType:"assetPreviewField",defaultValue:""},{name:"originalFilename",label:"Filename",scope:"global",options:{size:320},isEditable:true,dataType:"string",inputType:"text",previewType:"text",isPrimary:true,defaultValue:""},{name:"size",label:"Size",scope:"global",options:{size:120},isEditable:true,dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"width",label:"Width",scope:"global",options:{size:90},isEditable:true,dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"height",label:"Height",scope:"global",options:{size:100},isEditable:true,dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"mimeType",label:"Mime Type",scope:"global",options:{size:160},isEditable:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"lqip",label:"lqip",scope:"global",isHidden:true,isEditable:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"_updatedAt",label:"Updated At",scope:"global",options:{size:220},isEditable:false,isHidden:true,dataType:"datetime",inputType:"datetime",previewType:"datetime",defaultValue:""},{name:"tags",label:"Tags",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",previewType:"tags",options:{size:300},relationship:{mode:"multiple",field:"name",entity:"_tag"}}]};var d={name:"_tag",plural:"_tags",menu:{hidden:true},attributes:[{name:"name",label:"Tag Name",scope:"global",options:{size:220},isEditable:true,dataType:"string",inputType:"text",previewType:"text",isPrimary:true,defaultValue:""},{name:"_updatedAt",label:"Updated At",scope:"global",options:{size:220},isEditable:false,isHidden:true,dataType:"datetime",inputType:"datetime",previewType:"datetime",defaultValue:""},{name:"assets",label:"Assets",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",relationship:{mode:"multiple",field:"originalFilename",entity:"_asset"}}]};var T=createContext({contributions:{apps:[]},currentProjectId:void 0,currentProjectSchema:[],getContributionPointConfig:()=>[],plugins:[],projects:[]}),l=i=>Object.prototype.hasOwnProperty.call(i,"projectId"),g=i=>Object.prototype.hasOwnProperty.call(i,"contributes");function F({config:i,children:o}){let{projectId:n}=useParams(),t=useMemo(()=>{let e=p=>[...p.filter(b=>b.name!==c.name&&b.name!==d.name),c,d];return i.map(p=>({...p,schema:e(p.schema)}))},[i]),s=useMemo(()=>r(["plugins"],t),[t]),y=useMemo(()=>r(["plugins"],t.filter(e=>e.projectId===n)),[t,n]),f=useMemo(()=>s.filter(e=>!l(e)&&g(e)),[s]),u=useMemo(()=>y.filter(e=>!l(e)&&g(e)),[y]),O=useMemo(()=>({contributions:{apps:m("apps",[],u)},currentProjectId:n,currentProjectSchema:t.find(e=>e.projectId===n)?.schema??[],getContributionPointConfig:(e,p=[])=>m(e,p,u),plugins:f,projects:s.filter(e=>l(e))}),[f,n,u,t,s]);return jsx(T.Provider,{value:O,children:o})}function R(){return useContext(T)}function r(i,o){return Array.isArray(o)?o.reduce((n,t)=>path(i,t)?[...n,t,...r(i,path(i,t)??[])]:[...n,t],[]):[o]}function m(i,o=[],n){let t=["contributes",i,...o];return r(t.flat(),n).filter(s=>has("component",s))}function H(i){let n=r(["plugins"],i).filter(t=>!l(t)&&g(t));return m("apps",[],n)}export{c as a,d as b,F as c,R as d,H as e};//# sourceMappingURL=chunk-V6R4AWQS.js.map
2
- //# sourceMappingURL=chunk-V6R4AWQS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/entities/assets-schema.ts","../src/entities/tags-schema.ts","../src/core/config/config-context.tsx"],"names":["assetSchema","tagSchema","ConfigContext","createContext","hasProjectIdProperty","configItem","hasContributesProperty","ConfigProvider","config","children","currentProjectId","useParams","enhancedConfig","useMemo","upsertReservedEntities","schema","entity","project","globalFlattenedConfig","flattenConfigByProperty","currentProjectFlattenedConfig","item","allPlugins","currentProjectPlugins","globalConfig","_getContributionPointConfig","contributionPoint","subPath","jsx","useConfig","useContext","property","acc","curr","path","pathArray","has","getApps","plugins"],"mappings":"mLAEO,IAAMA,EAAsB,CACjC,IAAA,CAAM,QAAA,CACN,MAAA,CAAQ,UACR,IAAA,CAAM,CACJ,MAAA,CAAQ,IACV,EACA,UAAA,CAAY,CACV,CACE,IAAA,CAAM,MAAA,CACN,MAAO,OAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,EACA,UAAA,CAAY,IAAA,CACZ,SAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,oBACb,YAAA,CAAc,EAChB,EACA,CACE,IAAA,CAAM,mBACN,KAAA,CAAO,UAAA,CACP,KAAA,CAAO,QAAA,CACP,QAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,UAAA,CAAY,KACZ,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,YAAa,MAAA,CACb,SAAA,CAAW,KACX,YAAA,CAAc,EAChB,EACA,CACE,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,OACP,KAAA,CAAO,QAAA,CACP,QAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,MACV,SAAA,CAAW,MAAA,CACX,YAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,OAAA,CACN,MAAO,OAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,EACR,CAAA,CACA,UAAA,CAAY,KACZ,QAAA,CAAU,KAAA,CACV,UAAW,MAAA,CACX,WAAA,CAAa,OACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,QAAA,CACN,KAAA,CAAO,SACP,KAAA,CAAO,QAAA,CACP,QAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,WAAY,IAAA,CACZ,QAAA,CAAU,MACV,SAAA,CAAW,MAAA,CACX,YAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,UAAA,CACN,MAAO,WAAA,CACP,KAAA,CAAO,SACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,EACA,UAAA,CAAY,IAAA,CACZ,SAAU,QAAA,CACV,SAAA,CAAW,OACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,EACA,CACE,IAAA,CAAM,OACN,KAAA,CAAO,MAAA,CACP,MAAO,QAAA,CACP,QAAA,CAAU,IAAA,CACV,UAAA,CAAY,KACZ,QAAA,CAAU,QAAA,CACV,UAAW,MAAA,CACX,WAAA,CAAa,OACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,YAAA,CACN,KAAA,CAAO,YAAA,CACP,KAAA,CAAO,SACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,EACA,UAAA,CAAY,KAAA,CACZ,SAAU,IAAA,CACV,QAAA,CAAU,WACV,SAAA,CAAW,UAAA,CACX,WAAA,CAAa,UAAA,CACb,aAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,MAAA,CACN,MAAO,MAAA,CACP,KAAA,CAAO,cAAA,CACP,QAAA,CAAU,SACV,SAAA,CAAW,cAAA,CACX,aAAc,EAAA,CACd,WAAA,CAAa,OACb,OAAA,CAAS,CACP,IAAA,CAAM,GACR,EACA,YAAA,CAAc,CACZ,KAAM,UAAA,CACN,KAAA,CAAO,OACP,MAAA,CAAQ,MACV,CACF,CACF,CACF,ECjIO,IAAMC,EAAoB,CAC/B,IAAA,CAAM,OACN,MAAA,CAAQ,OAAA,CACR,IAAA,CAAM,CACJ,OAAQ,IACV,CAAA,CACA,WAAY,CACV,CACE,KAAM,MAAA,CACN,KAAA,CAAO,UAAA,CACP,KAAA,CAAO,SACP,OAAA,CAAS,CACP,KAAM,GACR,CAAA,CACA,WAAY,IAAA,CACZ,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,OACX,WAAA,CAAa,MAAA,CACb,UAAW,IAAA,CACX,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,YAAA,CACN,MAAO,YAAA,CACP,KAAA,CAAO,SACP,OAAA,CAAS,CACP,KAAM,GACR,CAAA,CACA,UAAA,CAAY,KAAA,CACZ,SAAU,IAAA,CACV,QAAA,CAAU,WACV,SAAA,CAAW,UAAA,CACX,YAAa,UAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,QAAA,CACN,MAAO,QAAA,CACP,KAAA,CAAO,eACP,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,cAAA,CACX,aAAc,EAAA,CACd,YAAA,CAAc,CACZ,IAAA,CAAM,UAAA,CACN,MAAO,kBAAA,CACP,MAAA,CAAQ,QACV,CACF,CACF,CACF,ECzBA,IAAMC,EAAgBC,aAAAA,CAA6B,CACjD,cAAe,CACb,IAAA,CAAM,EACR,EACA,gBAAA,CAAkB,MAAA,CAClB,oBAAA,CAAsB,GACtB,0BAAA,CAA4B,IAAM,EAAC,CACnC,QAAS,EAAC,CACV,SAAU,EACZ,CAAC,CAAA,CACKC,CAAAA,CAAwBC,CAAAA,EAC5B,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAKA,EAAY,WAAW,CAAA,CACxDC,EAA0BD,CAAAA,EAC9B,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,KAAKA,CAAAA,CAAY,aAAa,EAEzD,SAASE,CAAAA,CAAe,CAC7B,MAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CACF,EAGgB,CAKd,GAAM,CAAE,SAAA,CAAWC,CAAiB,EAAIC,SAAAA,EAAiC,CACnEC,CAAAA,CAAiBC,OAAAA,CAAQ,IAAM,CACnC,IAAMC,EAA0BC,CAAAA,EAKvB,CAAC,GAJgBA,CAAAA,CAAO,MAAA,CAC5BC,CAAAA,EAAWA,CAAAA,CAAO,OAAShB,CAAAA,CAAY,IAAA,EAAQgB,EAAO,IAAA,GAASf,CAAAA,CAAU,IAC5E,CAAA,CAE4BD,CAAAA,CAAaC,CAAS,CAAA,CAGpD,OAAOO,CAAAA,CAAO,GAAA,CAAKS,IAAa,CAC9B,GAAGA,EACH,MAAA,CAAQH,CAAAA,CAAuBG,CAAAA,CAAQ,MAAM,CAC/C,CAAA,CAAE,CACJ,CAAA,CAAG,CAACT,CAAM,CAAC,CAAA,CAELU,CAAAA,CAAwBL,OAAAA,CAAQ,IAAMM,CAAAA,CAAwB,CAAC,SAAS,CAAA,CAAGP,CAAc,EAAG,CAACA,CAAc,CAAC,CAAA,CAC5GQ,EAAgCP,OAAAA,CACpC,IACEM,EACE,CAAC,SAAS,EACVP,CAAAA,CAAe,MAAA,CAAQS,CAAAA,EAASA,CAAAA,CAAK,YAAcX,CAAgB,CACrE,EACF,CAACE,CAAAA,CAAgBF,CAAgB,CACnC,CAAA,CACMY,CAAAA,CAAaT,OAAAA,CACjB,IACEK,CAAAA,CAAsB,MAAA,CACnBG,GAAyC,CAACjB,CAAAA,CAAqBiB,CAAI,CAAA,EAAKf,CAAAA,CAAuBe,CAAI,CACtG,EACF,CAACH,CAAqB,CACxB,CAAA,CACMK,CAAAA,CAAwBV,QAC5B,IACEO,CAAAA,CAA8B,MAAA,CAC3BC,CAAAA,EAAyC,CAACjB,CAAAA,CAAqBiB,CAAI,GAAKf,CAAAA,CAAuBe,CAAI,CACtG,CAAA,CACF,CAACD,CAA6B,CAChC,EAEMI,CAAAA,CAAeX,OAAAA,CACnB,KAAO,CACL,aAAA,CAAe,CACb,IAAA,CAAMY,CAAAA,CAA4B,MAAA,CAAQ,GAAIF,CAAqB,CACrE,CAAA,CACA,gBAAA,CAAAb,EACA,oBAAA,CAAsBE,CAAAA,CAAe,IAAA,CAAMS,CAAAA,EAASA,EAAK,SAAA,GAAcX,CAAgB,GAAG,MAAA,EAAU,GACpG,0BAAA,CAA4B,CAC1BgB,CAAAA,CACAC,CAAAA,CAAoB,EAAC,GAErBF,CAAAA,CAA4BC,EAAmBC,CAAAA,CAASJ,CAAqB,EAC/E,OAAA,CAASD,CAAAA,CACT,QAAA,CAAUJ,CAAAA,CAAsB,OAAQG,CAAAA,EACtCjB,CAAAA,CAAqBiB,CAAI,CAC3B,CACF,GACA,CAACC,CAAAA,CAAYZ,CAAAA,CAAkBa,CAAAA,CAAuBX,EAAgBM,CAAqB,CAC7F,EAEA,OAAOU,GAAAA,CAAC1B,EAAc,QAAA,CAAd,CAAuB,KAAA,CAAOsB,CAAAA,CAAe,SAAAf,CAAAA,CAAS,CAChE,CAEO,SAASoB,CAAAA,EAA2B,CACzC,OAAOC,UAAAA,CAAW5B,CAAa,CACjC,CAEA,SAASiB,CAAAA,CACPY,EACAvB,CAAAA,CACyC,CACzC,OAAK,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,CAIlBA,EAAO,MAAA,CAA2C,CAACwB,EAAKC,CAAAA,GACzDC,IAAAA,CAAKH,EAAUE,CAAI,CAAA,CACd,CAAC,GAAGD,EAAKC,CAAAA,CAAM,GAAGd,EAAwBY,CAAAA,CAAUG,IAAAA,CAAKH,EAAUE,CAAI,CAAA,EAAK,EAAE,CAAC,CAAA,CAGjF,CAAC,GAAGD,CAAAA,CAAKC,CAAI,EACnB,EAAE,CAAA,CATI,CAACzB,CAAM,CAUlB,CAEA,SAASiB,CAAAA,CACPC,CAAAA,CACAC,EAAoB,EAAC,CACrBnB,CAAAA,CACgB,CAChB,IAAM2B,CAAAA,CAAY,CAAC,cAAeT,CAAAA,CAAmB,GAAGC,CAAO,CAAA,CAE/D,OAAOR,CAAAA,CAAwBgB,CAAAA,CAAU,MAAK,CAAG3B,CAAM,EAAE,MAAA,CAAQa,CAAAA,EAASe,IAAI,WAAA,CAAaf,CAAI,CAAC,CAClG,CAEO,SAASgB,CAAAA,CAAQ7B,EAA6C,CAEnE,IAAM8B,EADkBnB,CAAAA,CAAwB,CAAC,SAAS,CAAA,CAAGX,CAAM,CAAA,CACnC,MAAA,CAC7Ba,GAAyC,CAACjB,CAAAA,CAAqBiB,CAAI,CAAA,EAAKf,CAAAA,CAAuBe,CAAI,CACtG,EACA,OAAOI,CAAAA,CAA4B,OAAQ,EAAC,CAAGa,CAAO,CACxD","file":"chunk-V6R4AWQS.js","sourcesContent":["import type { Entity } from '../core/types';\n\nexport const assetSchema: Entity = {\n name: '_asset',\n plural: '_assets',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'path',\n label: 'Asset',\n scope: 'global',\n options: {\n size: 140,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'assetPreviewField',\n defaultValue: '',\n },\n {\n name: 'originalFilename',\n label: 'Filename',\n scope: 'global',\n options: {\n size: 320,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n isPrimary: true,\n defaultValue: '',\n },\n {\n name: 'size',\n label: 'Size',\n scope: 'global',\n options: {\n size: 120,\n },\n isEditable: true,\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'width',\n label: 'Width',\n scope: 'global',\n options: {\n size: 90,\n },\n isEditable: true,\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'height',\n label: 'Height',\n scope: 'global',\n options: {\n size: 100,\n },\n isEditable: true,\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'mimeType',\n label: 'Mime Type',\n scope: 'global',\n options: {\n size: 160,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'lqip',\n label: 'lqip',\n scope: 'global',\n isHidden: true,\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Updated At',\n scope: 'global',\n options: {\n size: 220,\n },\n isEditable: false,\n isHidden: true,\n dataType: 'datetime',\n inputType: 'datetime',\n previewType: 'datetime',\n defaultValue: '',\n },\n {\n name: 'tags',\n label: 'Tags',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n previewType: 'tags',\n options: {\n size: 300,\n },\n relationship: {\n mode: 'multiple',\n field: 'name',\n entity: '_tag',\n },\n },\n ],\n};\n","import type { Entity } from '../core/types';\n\nexport const tagSchema: Entity = {\n name: '_tag',\n plural: '_tags',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'name',\n label: 'Tag Name',\n scope: 'global',\n options: {\n size: 220,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n isPrimary: true,\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Updated At',\n scope: 'global',\n options: {\n size: 220,\n },\n isEditable: false,\n isHidden: true,\n dataType: 'datetime',\n inputType: 'datetime',\n previewType: 'datetime',\n defaultValue: '',\n },\n {\n name: 'assets',\n label: 'Assets',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n relationship: {\n mode: 'multiple',\n field: 'originalFilename',\n entity: '_asset',\n },\n },\n ],\n};\n","'use client';\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { JSX } from 'react';\nimport { has, path } from 'ramda';\nimport { useParams } from 'react-router-dom';\nimport { assetSchema } from '../../entities/assets-schema';\nimport { tagSchema } from '../../entities/tags-schema';\nimport type { AppOptions, PluginOptions, ProjectOptions } from './types';\nimport type { Entity } from '../types';\n\ntype Contributes = NonNullable<PluginOptions['contributes']>;\nexport interface ConfigContext {\n contributions: {\n apps: AppOptions[] | [];\n };\n currentProjectId?: string;\n currentProjectSchema: Entity[];\n getContributionPointConfig: <T extends keyof Contributes>(\n contributionPoint: T,\n subPath?: string[]\n ) => Contributes[T][] | [];\n plugins: PluginOptions[];\n projects: ProjectOptions[];\n}\n\nconst ConfigContext = createContext<ConfigContext>({\n contributions: {\n apps: [],\n },\n currentProjectId: undefined,\n currentProjectSchema: [],\n getContributionPointConfig: () => [],\n plugins: [] as PluginOptions[],\n projects: [] as ProjectOptions[],\n});\nconst hasProjectIdProperty = (configItem: ProjectOptions | PluginOptions): boolean =>\n Object.prototype.hasOwnProperty.call(configItem, 'projectId');\nconst hasContributesProperty = (configItem: ProjectOptions | PluginOptions): boolean =>\n Object.prototype.hasOwnProperty.call(configItem, 'contributes');\n\nexport function ConfigProvider({\n config,\n children,\n}: {\n config: ProjectOptions[];\n children: React.ReactNode;\n}): JSX.Element {\n /**\n * Getting the projectId from the URL via react-router-dom's useParams hook triggers a rerender of this Context\n * every time the URL changes.\n */\n const { projectId: currentProjectId } = useParams<{ projectId: string }>();\n const enhancedConfig = useMemo(() => {\n const upsertReservedEntities = (schema: Entity[]): Entity[] => {\n const withoutReserved = schema.filter(\n (entity) => entity.name !== assetSchema.name && entity.name !== tagSchema.name\n );\n\n return [...withoutReserved, assetSchema, tagSchema];\n };\n\n return config.map((project) => ({\n ...project,\n schema: upsertReservedEntities(project.schema),\n }));\n }, [config]);\n\n const globalFlattenedConfig = useMemo(() => flattenConfigByProperty(['plugins'], enhancedConfig), [enhancedConfig]);\n const currentProjectFlattenedConfig = useMemo(\n () =>\n flattenConfigByProperty(\n ['plugins'],\n enhancedConfig.filter((item) => item.projectId === currentProjectId)\n ),\n [enhancedConfig, currentProjectId]\n );\n const allPlugins = useMemo(\n () =>\n globalFlattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[],\n [globalFlattenedConfig]\n );\n const currentProjectPlugins = useMemo(\n () =>\n currentProjectFlattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[],\n [currentProjectFlattenedConfig]\n );\n\n const globalConfig = useMemo(\n () => ({\n contributions: {\n apps: _getContributionPointConfig('apps', [], currentProjectPlugins) as AppOptions[] | [],\n },\n currentProjectId,\n currentProjectSchema: enhancedConfig.find((item) => item.projectId === currentProjectId)?.schema ?? [],\n getContributionPointConfig: <T extends keyof Contributes>(\n contributionPoint: T,\n subPath: string[] = []\n ): Contributes[T][] =>\n _getContributionPointConfig(contributionPoint, subPath, currentProjectPlugins) as Contributes[T][],\n plugins: allPlugins,\n projects: globalFlattenedConfig.filter((item: ProjectOptions | PluginOptions) =>\n hasProjectIdProperty(item)\n ) as ProjectOptions[],\n }),\n [allPlugins, currentProjectId, currentProjectPlugins, enhancedConfig, globalFlattenedConfig]\n );\n\n return <ConfigContext.Provider value={globalConfig}>{children}</ConfigContext.Provider>;\n}\n\nexport function useConfig(): ConfigContext {\n return useContext(ConfigContext);\n}\n\nfunction flattenConfigByProperty(\n property: string[],\n config: (ProjectOptions | PluginOptions)[]\n): (ProjectOptions | PluginOptions)[] | [] {\n if (!Array.isArray(config)) {\n return [config];\n }\n\n return config.reduce<(ProjectOptions | PluginOptions)[]>((acc, curr) => {\n if (path(property, curr)) {\n return [...acc, curr, ...flattenConfigByProperty(property, path(property, curr) ?? [])];\n }\n\n return [...acc, curr];\n }, []);\n}\n\nfunction _getContributionPointConfig<T extends keyof Contributes>(\n contributionPoint: T,\n subPath: string[] = [],\n config: PluginOptions[]\n): Contributes[T] {\n const pathArray = ['contributes', contributionPoint, ...subPath];\n\n return flattenConfigByProperty(pathArray.flat(), config).filter((item) => has('component', item)) as Contributes[T];\n}\n\nexport function getApps(config: ProjectOptions[]): AppOptions[] | [] {\n const flattenedConfig = flattenConfigByProperty(['plugins'], config);\n const plugins = flattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[];\n return _getContributionPointConfig('apps', [], plugins) as AppOptions[] | [];\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a}from'./chunk-7GBAYC7G.js';import {a as a$1}from'./chunk-HAQICAOQ.js';import {c,e,f,h,g,i}from'./chunk-FVFRTCEB.js';import {useId}from'react';import {jsx,jsxs}from'react/jsx-runtime';function L({control:v,fieldSchema:f$1,setValue:t}){let{name:r,label:b,isEditable:h$1,options:l}=f$1,m=useId();function g$1(e,o){t(r,{...o,value:e.currentTarget.value});}function C(e,o){t(r,{...o,disabled:e});}return jsx(c,{control:v,name:r,render:({field:e$1})=>jsxs(e,{children:[jsx(f,{htmlFor:m,children:b}),l?.comment?jsx(h,{children:l.comment}):null,jsx(g,{children:jsx(a,{className:`fk:w-full fk:mt-[0.1875rem] ${!e$1.value?.scope||e$1.value.scope==="default"?"fk:mb-3":""}`,disabled:h$1===false||e$1.value?.disabled,id:m,...e$1,onChange:o=>{g$1(o,e$1.value);},value:e$1.value?.value||""})}),jsx(a$1,{checked:e$1.value?.disabled??false,onChange:o=>{C(o,e$1.value);},scope:e$1.value?.scope}),jsx(i,{})]})})}export{L as a};//# sourceMappingURL=chunk-WXMCINGZ.js.map
2
- //# sourceMappingURL=chunk-WXMCINGZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/fields/text.tsx"],"names":["Text","control","fieldSchema","setValue","name","label","isEditable","options","id","useId","handleInput","event","previousValue","handleCheckbox","checked","value","jsx","FormField","field","jsxs","FormItem","FormLabel","FormDescription","FormControl","Input","DefaultValueSwitch","FormMessage"],"mappings":"oNAQO,SAASA,CAAAA,CAAK,CAAE,OAAA,CAAAC,CAAAA,CAAS,YAAAC,GAAAA,CAAa,QAAA,CAAAC,CAAS,CAAA,CAAyC,CAC7F,GAAM,CAAE,KAAAC,CAAAA,CAAM,KAAA,CAAAC,EAAO,UAAA,CAAAC,GAAAA,CAAY,QAAAC,CAAQ,CAAA,CAAIL,IACvCM,CAAAA,CAAKC,KAAAA,GAEX,SAASC,GAAAA,CACPC,EACAC,CAAAA,CACM,CACNT,EAASC,CAAAA,CAAM,CACb,GAAGQ,CAAAA,CACH,MAAOD,CAAAA,CAAM,aAAA,CAAc,KAC7B,CAAC,EACH,CAEA,SAASE,CAAAA,CAAeC,CAAAA,CAAkBC,CAAAA,CAAyC,CACjFZ,CAAAA,CAASC,CAAAA,CAAM,CACb,GAAGW,CAAAA,CACH,SAAUD,CACZ,CAAC,EACH,CAEA,OACEE,GAAAA,CAACC,CAAAA,CAAA,CACC,OAAA,CAAShB,CAAAA,CACT,KAAMG,CAAAA,CACN,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAc,GAAM,CAAA,GACfC,IAAAA,CAACC,EAAA,CACC,QAAA,CAAA,CAAAJ,IAACK,CAAAA,CAAA,CAAU,OAAA,CAASb,CAAAA,CAAK,SAAAH,CAAAA,CAAM,CAAA,CAC9BE,GAAS,OAAA,CAAUS,GAAAA,CAACM,EAAA,CAAiB,QAAA,CAAAf,CAAAA,CAAQ,OAAA,CAAQ,EAAqB,IAAA,CAC3ES,GAAAA,CAACO,EAAA,CACC,QAAA,CAAAP,IAACQ,CAAAA,CAAA,CACC,SAAA,CAAW,CAAA,4BAAA,EACT,CAACN,GAAAA,CAAM,KAAA,EAAO,OAASA,GAAAA,CAAM,KAAA,CAAM,QAAU,SAAA,CAAY,SAAA,CAAY,EACvE,CAAA,CAAA,CACA,QAAA,CAAUZ,MAAe,KAAA,EAASY,GAAAA,CAAM,OAAO,QAAA,CAC/C,EAAA,CAAIV,EACH,GAAGU,GAAAA,CACJ,QAAA,CAAWP,CAAAA,EAAU,CACnBD,GAAAA,CAAYC,CAAAA,CAAOO,IAAM,KAAK,EAChC,EACA,KAAA,CAAQA,GAAAA,CAAM,KAAA,EAAO,KAAA,EAAoB,GAC3C,CAAA,CACF,CAAA,CAEAF,IAACS,GAAAA,CAAA,CACC,QAASP,GAAAA,CAAM,KAAA,EAAO,QAAA,EAAY,KAAA,CAClC,SAAWJ,CAAAA,EAAY,CACrBD,EAAeC,CAAAA,CAASI,GAAAA,CAAM,KAAK,EACrC,CAAA,CACA,MAAOA,GAAAA,CAAM,KAAA,EAAO,MACtB,CAAA,CACAF,GAAAA,CAACU,EAAA,EAAY,CAAA,CAAA,CACf,EAEJ,CAEJ","file":"chunk-WXMCINGZ.js","sourcesContent":["import { useId } from 'react';\nimport type { JSX } from 'react';\nimport type { FormFieldValue } from '../../graphql-client/types';\nimport { FormControl, FormDescription, FormField, FormLabel, FormMessage, FormItem } from '../../ui/primitives/form';\nimport { Input } from '../../ui/primitives/input';\nimport type { FormFieldParams } from '../types';\nimport { DefaultValueSwitch } from './default-value-switch';\n\nexport function Text({ control, fieldSchema, setValue }: FormFieldParams<'text'>): JSX.Element {\n const { name, label, isEditable, options } = fieldSchema;\n const id = useId();\n\n function handleInput(\n event: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>,\n previousValue: FormFieldValue | undefined\n ): void {\n setValue(name, {\n ...previousValue,\n value: event.currentTarget.value,\n });\n }\n\n function handleCheckbox(checked: boolean, value: FormFieldValue | undefined): void {\n setValue(name, {\n ...value,\n disabled: checked,\n });\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field }: { field: { value?: FormFieldValue } }) => (\n <FormItem>\n <FormLabel htmlFor={id}>{label}</FormLabel>\n {options?.comment ? <FormDescription>{options.comment}</FormDescription> : null}\n <FormControl>\n <Input\n className={`fk:w-full fk:mt-[0.1875rem] ${\n !field.value?.scope || field.value.scope === 'default' ? 'fk:mb-3' : ''\n }`}\n disabled={isEditable === false || field.value?.disabled}\n id={id}\n {...field}\n onChange={(event) => {\n handleInput(event, field.value);\n }}\n value={(field.value?.value as string) || ''}\n />\n </FormControl>\n\n <DefaultValueSwitch\n checked={field.value?.disabled ?? false}\n onChange={(checked) => {\n handleCheckbox(checked, field.value);\n }}\n scope={field.value?.scope}\n />\n <FormMessage />\n </FormItem>\n )}\n />\n );\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {d}from'./chunk-V6R4AWQS.js';import {c}from'./chunk-WDRCARCP.js';import {createContext,useReducer,useContext,useMemo}from'react';import {jsx}from'react/jsx-runtime';import v from'swr';import {find,propEq}from'ramda';var D="core.context.scope:",x={breadcrumbs:[],isRouteLoading:false,pageTitle:"",scope:"",relationships:{}},C=createContext(x),b=createContext(()=>{});function O(t,e){let{type:o,payload:r}=e;switch(o){case "setScope":return typeof localStorage<"u"&&r.projectId&&localStorage.setItem(`${D}${r.projectId}`,r.scope),{...t,scope:r.scope};case "setRelationship":return {...t,relationships:{...t.relationships,...r}};default:throw Error(`Unknown action: ${o}`)}}function K({children:t}){let[e,o]=useReducer(O,x);return jsx(C.Provider,{value:e,children:jsx(b.Provider,{value:o,children:t})})}function I(){return useContext(C)}function V(){return useContext(b)}function F(t,e){let{scope:o}=I(),{projects:r,currentProjectId:u}=d(),{schema:i,scopes:l}=find(propEq(u??"","projectId"))(r),s=l?.find(m=>m.isDefault)?.name??"default",a=e?.commonParams.q?JSON.stringify(e):null,{data:n,error:S,isLoading:p}=v(a,()=>fetch(c(t).search,{headers:{"Content-Type":"application/json"},body:JSON.stringify(e),method:"POST",mode:"cors"}).then(m=>m.json()));return {results:useMemo(()=>L(n?.results??[],t,i,o,s)??[],[n,s,t,i,o]),error:S,isLoading:p}}function J(t){return t.find(e=>e.isPrimary)?.name??t[0]?.name}function L(t,e,o,r,u){return t?.filter(i=>i?.hits?.length>0).map(i=>{let l=i,s=l.collection.replace(`${e}_`,"").replace(/_\d+$/,""),a=find(propEq(s,"plural"))(o);if(!a)return [];let n=J(a?.attributes??[]),S=a?.name??s;return l.hits.map(({document:p})=>{let c=p[n],w=(c&&typeof c!="string"?c[r]??c[u]:null)??p[n],E=Object.entries(p).reduce((h,[d,f])=>{if(d!==n&&d!=="id"&&d!=="_updatedAt"){let T=typeof f!="string"?f[r]??f[u]:f;h[d]=T;}return h},{});return {_id:p.id,_entityName:S,_entityNamePlural:s,[n]:w,...E}})}).flat()}export{D as a,K as b,I as c,V as d,F as e};//# sourceMappingURL=chunk-WZ533Y4O.js.map
2
- //# sourceMappingURL=chunk-WZ533Y4O.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/app-context.tsx","../src/core/use-search.tsx"],"names":["SCOPE_STORAGE_KEY","initialState","AppContext","createContext","AppDispatchContext","reducer","state","action","type","payload","AppProvider","children","dispatch","useReducer","jsx","useAppContext","useContext","useAppDispatch","useSearch","projectId","searchRequest","scope","projects","currentProjectId","useConfig","schema","scopes","find","propEq","defaultScope","s","swrKey","data","error","isLoading","useSWR","apiPaths","res","useMemo","mapResults","getPrimaryAttributeName","schemaAttributes","attr","results","result","item","entityNamePlural","entitySchema","primaryAttributeName","entityName","document","primaryAttribute","primaryAttributeValue","attributes","acc","key","value","scopedValue"],"mappings":"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","file":"chunk-WZ533Y4O.js","sourcesContent":["'use client';\n\nimport { createContext, useContext, useReducer } from 'react';\nimport type { Dispatch, JSX, ReactNode } from 'react';\nimport type { ActionSetRelationship, ActionSetScope, AppContextType } from './types';\n\nexport const SCOPE_STORAGE_KEY = 'core.context.scope:';\n\nconst initialState = {\n breadcrumbs: [],\n isRouteLoading: false,\n pageTitle: '',\n scope: '',\n relationships: {},\n};\n\nconst AppContext = createContext<AppContextType>(initialState);\n\nconst AppDispatchContext = createContext<Dispatch<ActionSetRelationship | ActionSetScope>>(() => {\n /* void */\n});\n\nfunction reducer(state: AppContextType, action: ActionSetRelationship | ActionSetScope): AppContextType {\n const { type, payload } = action;\n\n switch (type) {\n case 'setScope':\n if (typeof localStorage !== 'undefined' && payload.projectId) {\n localStorage.setItem(`${SCOPE_STORAGE_KEY}${payload.projectId}`, payload.scope);\n }\n\n return {\n ...state,\n scope: payload.scope,\n };\n case 'setRelationship':\n return {\n ...state,\n relationships: { ...state.relationships, ...payload },\n };\n default:\n throw Error(`Unknown action: ${type as string}`);\n }\n}\n\nexport function AppProvider({ children }: { children: ReactNode }): JSX.Element {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n <AppContext.Provider value={state}>\n <AppDispatchContext.Provider value={dispatch}>{children}</AppDispatchContext.Provider>\n </AppContext.Provider>\n );\n}\n\nexport function useAppContext(): AppContextType {\n return useContext(AppContext);\n}\n\nexport function useAppDispatch(): Dispatch<ActionSetRelationship | ActionSetScope> {\n return useContext(AppDispatchContext);\n}\n","'use client';\n\nimport { useMemo } from 'react';\nimport useSWR from 'swr';\nimport { find, propEq } from 'ramda';\nimport { apiPaths } from './api-paths';\nimport { useAppContext } from './app-context';\nimport { useConfig } from './config/config-context';\nimport type { SingleProject } from './config/types';\nimport type {\n Attribute,\n Entity,\n RawResultItem,\n RawSearchResultItems,\n SearchRequestProps,\n SearchResultItem,\n} from './types';\n\nexport function useSearch(\n projectId: string,\n searchRequest: SearchRequestProps | null\n): { results: SearchResultItem[] | []; error: Error; isLoading: boolean } {\n const { scope } = useAppContext();\n const { projects, currentProjectId } = useConfig();\n const { schema, scopes } = find(propEq(currentProjectId ?? '', 'projectId'))(projects) as SingleProject;\n const defaultScope = scopes?.find((s) => s.isDefault)?.name ?? 'default';\n const swrKey = searchRequest?.commonParams.q ? JSON.stringify(searchRequest) : null;\n const { data, error, isLoading } = useSWR(swrKey, () =>\n fetch(apiPaths(projectId).search, {\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(searchRequest),\n method: 'POST',\n mode: 'cors',\n }).then((res) => res.json() as Promise<{ results: RawSearchResultItems }>)\n );\n const results = useMemo(\n () => mapResults(data?.results ?? [], projectId, schema, scope, defaultScope) ?? [],\n [data, defaultScope, projectId, schema, scope]\n );\n\n return { results, error, isLoading };\n}\n\n/**\n * Find the name of the attribute of an entity with isPrimary === true.\n * The value of that attribute is returned as the value for the relationship attribute\n */\nfunction getPrimaryAttributeName(schemaAttributes: Attribute[]): string {\n return schemaAttributes.find((attr) => attr.isPrimary)?.name ?? schemaAttributes[0]?.name;\n}\n\nfunction mapResults(\n results: RawSearchResultItems | undefined,\n projectId: string,\n schema: Entity[],\n scope: string,\n defaultScope: string\n): SearchResultItem[] | undefined {\n return results\n ?.filter((result) => (result as RawResultItem)?.hits?.length > 0)\n .map((result) => {\n const item = result as RawResultItem;\n const entityNamePlural = item.collection.replace(`${projectId}_`, '').replace(/_\\d+$/, '');\n const entitySchema = find<Entity>(propEq(entityNamePlural, 'plural'))(schema);\n\n if (!entitySchema) {\n return [];\n }\n\n const primaryAttributeName = getPrimaryAttributeName(entitySchema?.attributes ?? []);\n const entityName = entitySchema?.name ?? entityNamePlural;\n\n // iterate over the hits and return an object with the primary attribute value first and then the rest of the attributes.\n return item.hits.map(({ document }) => {\n const primaryAttribute = document[primaryAttributeName];\n const scopedPrimaryAttribute =\n primaryAttribute && typeof primaryAttribute !== 'string'\n ? (primaryAttribute[scope] ?? primaryAttribute[defaultScope])\n : null;\n const primaryAttributeValue = scopedPrimaryAttribute ?? document[primaryAttributeName];\n const attributes = Object.entries(document).reduce(\n (acc: Omit<SearchResultItem, '_id' | '_entityName' | '_entityNamePlural'>, [key, value]) => {\n if (key !== primaryAttributeName && key !== 'id' && key !== '_updatedAt') {\n const scopedValue = typeof value !== 'string' ? (value[scope] ?? value[defaultScope]) : value;\n\n acc[key] = scopedValue;\n }\n\n return acc;\n },\n {}\n );\n\n return {\n _id: document.id,\n _entityName: entityName,\n _entityNamePlural: entityNamePlural,\n [primaryAttributeName]: primaryAttributeValue as string,\n ...attributes,\n };\n });\n })\n .flat();\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a}from'./chunk-OEWYLKO7.js';import {a as a$1}from'./chunk-HAQICAOQ.js';import {c,e,f,h,g,i}from'./chunk-FVFRTCEB.js';import {jsx,jsxs}from'react/jsx-runtime';function y({control:v,fieldSchema:F,setValue:m}){let{name:l,label:k,isEditable:b,options:t}=F;function h$1(e,o){m(l,{...o,value:e.currentTarget.value});}function g$1(e,o){m(l,{...o,disabled:e});}return jsx(c,{control:v,name:l,render:({field:e$1})=>jsxs(e,{children:[jsxs("div",{className:"fk:flex",children:[jsxs("div",{className:"fk:full-w fk:grid fk:gap-2",children:[jsx(f,{children:k}),t?.comment?jsx(h,{children:t.comment}):null]}),jsx("div",{className:"fk:h-full fk:self-end fk:ml-auto"})]}),jsx(g,{children:jsx(a,{className:`fk:w-full fk:mt-[0.1875rem] ${!e$1.value?.scope||e$1.value.scope==="default"?"fk:mb-3":""}`,disabled:b===false||e$1.value?.disabled,...e$1,onChange:o=>{h$1(o,e$1.value);},value:e$1.value?.value||""})}),jsx(a$1,{checked:e$1.value?.disabled??false,onChange:o=>{g$1(o,e$1.value);},scope:e$1.value?.scope}),jsx(i,{})]})})}export{y as a};//# sourceMappingURL=chunk-YA4ACPM5.js.map
2
- //# sourceMappingURL=chunk-YA4ACPM5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/form/fields/textarea.tsx"],"names":["Textarea","control","fieldSchema","setValue","name","label","isEditable","options","handleInput","event","previousValue","handleCheckbox","checked","value","jsx","FormField","field","jsxs","FormItem","FormLabel","FormDescription","FormControl","DefaultValueSwitch","FormMessage"],"mappings":"0LAOO,SAASA,EAAS,CAAE,OAAA,CAAAC,EAAS,WAAA,CAAAC,CAAAA,CAAa,SAAAC,CAAS,CAAA,CAA6C,CACrG,GAAM,CAAE,KAAAC,CAAAA,CAAM,KAAA,CAAAC,CAAAA,CAAO,UAAA,CAAAC,EAAY,OAAA,CAAAC,CAAQ,EAAIL,CAAAA,CAE7C,SAASM,IACPC,CAAAA,CACAC,CAAAA,CACM,CACNP,CAAAA,CAASC,CAAAA,CAAM,CACb,GAAGM,CAAAA,CACH,MAAOD,CAAAA,CAAM,aAAA,CAAc,KAC7B,CAAC,EACH,CAEA,SAASE,IAAeC,CAAAA,CAAkBC,CAAAA,CAAyC,CACjFV,CAAAA,CAASC,CAAAA,CAAM,CACb,GAAGS,CAAAA,CACH,SAAUD,CACZ,CAAC,EACH,CAEA,OACEE,IAACC,CAAAA,CAAA,CACC,QAASd,CAAAA,CACT,IAAA,CAAMG,EACN,MAAA,CAAQ,CAAC,CAAE,KAAA,CAAAY,GAAM,IACfC,IAAAA,CAACC,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAD,IAAAA,CAAC,OAAI,SAAA,CAAU,SAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,4BAAA,CACb,QAAA,CAAA,CAAAH,IAACK,CAAAA,CAAA,CAAW,QAAA,CAAAd,CAAAA,CAAM,EACjBE,CAAAA,EAAS,OAAA,CAAUO,IAACM,CAAAA,CAAA,CAAiB,SAAAb,CAAAA,CAAQ,OAAA,CAAQ,EAAqB,IAAA,CAAA,CAC7E,CAAA,CACAO,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCAEf,CAAA,CAAA,CACF,CAAA,CACAA,IAACO,CAAAA,CAAA,CACC,QAAA,CAAAP,GAAAA,CAACd,EAAA,CACC,SAAA,CAAW,+BACT,CAACgB,GAAAA,CAAM,OAAO,KAAA,EAASA,GAAAA,CAAM,MAAM,KAAA,GAAU,SAAA,CAAY,UAAY,EACvE,CAAA,CAAA,CACA,SAAUV,CAAAA,GAAe,KAAA,EAASU,IAAM,KAAA,EAAO,QAAA,CAC9C,GAAGA,GAAAA,CACJ,SAAWP,CAAAA,EAAU,CACnBD,IAAYC,CAAAA,CAAOO,GAAAA,CAAM,KAAK,EAChC,CAAA,CACA,MAAQA,GAAAA,CAAM,KAAA,EAAO,OAAoB,EAAA,CAC3C,CAAA,CACF,EACAF,GAAAA,CAACQ,GAAAA,CAAA,CACC,OAAA,CAASN,GAAAA,CAAM,OAAO,QAAA,EAAY,KAAA,CAClC,SAAWJ,CAAAA,EAAY,CACrBD,IAAeC,CAAAA,CAASI,GAAAA,CAAM,KAAK,EACrC,CAAA,CACA,MAAOA,GAAAA,CAAM,KAAA,EAAO,MACtB,CAAA,CACAF,GAAAA,CAACS,EAAA,EAAY,CAAA,CAAA,CACf,EAEJ,CAEJ","file":"chunk-YA4ACPM5.js","sourcesContent":["import type { JSX } from 'react';\nimport type { FormFieldValue } from '../../graphql-client/types';\nimport { FormControl, FormDescription, FormField, FormLabel, FormMessage, FormItem } from '../../ui/primitives/form';\nimport { Textarea as TextareaPrimitive } from '../../ui/primitives/textarea';\nimport type { FormFieldParams } from '../types';\nimport { DefaultValueSwitch } from './default-value-switch';\n\nexport function Textarea({ control, fieldSchema, setValue }: FormFieldParams<'textarea'>): JSX.Element {\n const { name, label, isEditable, options } = fieldSchema;\n\n function handleInput(\n event: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>,\n previousValue: FormFieldValue | undefined\n ): void {\n setValue(name, {\n ...previousValue,\n value: event.currentTarget.value,\n });\n }\n\n function handleCheckbox(checked: boolean, value: FormFieldValue | undefined): void {\n setValue(name, {\n ...value,\n disabled: checked,\n });\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field }: { field: { value?: FormFieldValue } }) => (\n <FormItem>\n <div className=\"fk:flex\">\n <div className=\"fk:full-w fk:grid fk:gap-2\">\n <FormLabel>{label}</FormLabel>\n {options?.comment ? <FormDescription>{options.comment}</FormDescription> : null}\n </div>\n <div className=\"fk:h-full fk:self-end fk:ml-auto\">\n {/* TODO: this should be a slot that can receive user-defined components and system components like Presence and AI Writting Tools */}\n </div>\n </div>\n <FormControl>\n <TextareaPrimitive\n className={`fk:w-full fk:mt-[0.1875rem] ${\n !field.value?.scope || field.value.scope === 'default' ? 'fk:mb-3' : ''\n }`}\n disabled={isEditable === false || field.value?.disabled}\n {...field}\n onChange={(event) => {\n handleInput(event, field.value);\n }}\n value={(field.value?.value as string) || ''}\n />\n </FormControl>\n <DefaultValueSwitch\n checked={field.value?.disabled ?? false}\n onChange={(checked) => {\n handleCheckbox(checked, field.value);\n }}\n scope={field.value?.scope}\n />\n <FormMessage />\n </FormItem>\n )}\n />\n );\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a,b,c,e}from'./chunk-YW2EEXMV.js';import {a as a$1}from'./chunk-O2QMYUPS.js';import {useRef,useState,useEffect}from'react';import {Check,Copy}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';var g=500,P=3e3;function D({value:e$1}){let r=useRef(null),n=useRef(null),[h,v]=useState(false),[i,c$1]=useState(false),[x,f]=useState(false);useEffect(()=>{let o=r.current;if(!o)return;function l(){r.current&&v(r.current.scrollWidth>r.current.clientWidth);}l();let u=new ResizeObserver(l);return u.observe(o),()=>{u.disconnect();}},[e$1]),useEffect(()=>()=>{n.current&&clearTimeout(n.current);},[]);async function C(o){if(o.preventDefault(),o.stopPropagation(),!!e$1){try{await navigator.clipboard.writeText(e$1);}catch{return}c$1(true),f(true),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{c$1(false),f(false);},P);}}function w(o){i||f(o&&h);}if(!e$1)return jsx("div",{className:"fk:truncate"});let E=e$1.length>g?`${e$1.slice(0,g)}\u2026`:e$1;return jsx(a,{delayDuration:400,children:jsxs(b,{open:x,onOpenChange:w,children:[jsx(c,{asChild:true,children:jsxs("button",{"aria-label":"Copy value",className:a$1("fk:group/copyable fk:relative fk:flex fk:w-full fk:min-w-0 fk:items-center fk:rounded-sm fk:border-0 fk:bg-transparent fk:px-0.5 fk:-mx-0.5 fk:py-0.5 fk:text-left fk:text-inherit fk:font-inherit","fk:cursor-pointer fk:transition-[transform,background-color] fk:duration-75 fk:ease-out","fk:hover:bg-muted/50 fk:active:translate-y-px fk:active:scale-[0.98] fk:active:bg-muted/70","fk:focus-visible:outline-hidden fk:focus-visible:ring-1 fk:focus-visible:ring-ring"),onClick:C,type:"button",children:[jsx("span",{className:"fk:min-w-0 fk:flex-1 fk:truncate fk:pr-4",ref:r,children:e$1}),jsx("span",{"aria-hidden":true,className:a$1("fk:pointer-events-none fk:absolute fk:right-0.5 fk:top-1/2 fk:flex fk:-translate-y-1/2 fk:items-center fk:justify-center","fk:rounded-sm fk:bg-muted/80 fk:p-0.5 fk:text-muted-foreground fk:shadow-sm fk:ring-1 fk:ring-border/60","fk:transition-opacity fk:duration-100",i?"fk:opacity-100 fk:text-foreground":"fk:opacity-0 fk:group-hover/copyable:opacity-100 fk:group-focus-visible/copyable:opacity-100"),children:i?jsx(Check,{className:"fk:size-3"}):jsx(Copy,{className:"fk:size-3"})})]})}),jsx(e,{className:"fk:max-w-xs fk:wrap-break-word",children:i?"Copied to clipboard":E})]})})}export{D as a};//# sourceMappingURL=chunk-ZEZ6TRCO.js.map
2
- //# sourceMappingURL=chunk-ZEZ6TRCO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/data-grid/preview-components/copyable-truncated-text.tsx"],"names":["TOOLTIP_MAX_LENGTH","COPIED_DISMISS_MS","CopyableTruncatedText","value","textRef","useRef","dismissTimeoutRef","isTruncated","setIsTruncated","useState","copied","setCopied","tooltipOpen","setTooltipOpen","useEffect","element","updateTruncation","observer","handleClick","event","handleTooltipOpenChange","open","jsx","tooltipText","TooltipProvider","jsxs","Tooltip","TooltipTrigger","cn","CheckIcon","CopyIcon","TooltipContent"],"mappings":"sOAQA,IAAMA,CAAAA,CAAqB,GAAA,CACrBC,CAAAA,CAAoB,IAMnB,SAASC,CAAAA,CAAsB,CAAE,KAAA,CAAAC,GAAM,CAAA,CAA4C,CACxF,IAAMC,CAAAA,CAAUC,OAAwB,IAAI,CAAA,CACtCC,CAAAA,CAAoBD,MAAAA,CAA6C,IAAI,CAAA,CACrE,CAACE,CAAAA,CAAaC,CAAc,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAC9C,CAACC,CAAAA,CAAQC,GAAS,CAAA,CAAIF,SAAS,KAAK,CAAA,CACpC,CAACG,CAAAA,CAAaC,CAAc,CAAA,CAAIJ,QAAAA,CAAS,KAAK,EAEpDK,SAAAA,CAAU,IAAM,CACd,IAAMC,EAAUX,CAAAA,CAAQ,OAAA,CAExB,GAAI,CAACW,EACH,OAGF,SAASC,CAAAA,EAAyB,CAC3BZ,CAAAA,CAAQ,OAAA,EAIbI,CAAAA,CAAeJ,CAAAA,CAAQ,QAAQ,WAAA,CAAcA,CAAAA,CAAQ,OAAA,CAAQ,WAAW,EAC1E,CAEAY,CAAAA,EAAiB,CAEjB,IAAMC,CAAAA,CAAW,IAAI,cAAA,CAAeD,CAAgB,CAAA,CACpD,OAAAC,CAAAA,CAAS,OAAA,CAAQF,CAAO,CAAA,CAEjB,IAAM,CACXE,CAAAA,CAAS,aACX,CACF,CAAA,CAAG,CAACd,GAAK,CAAC,CAAA,CAEVW,SAAAA,CAAU,IACD,IAAM,CACPR,CAAAA,CAAkB,OAAA,EACpB,aAAaA,CAAAA,CAAkB,OAAO,EAE1C,CAAA,CACC,EAAE,CAAA,CAEL,eAAeY,CAAAA,CAAYC,EAAqD,CAI9E,GAHAA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,eAAA,EAAgB,CAElB,EAAChB,GAAAA,CAIL,CAAA,GAAI,CACF,MAAM,UAAU,SAAA,CAAU,SAAA,CAAUA,GAAK,EAC3C,MAAQ,CACN,MACF,CAEAQ,GAAAA,CAAU,IAAI,CAAA,CACdE,CAAAA,CAAe,IAAI,EAEfP,CAAAA,CAAkB,OAAA,EACpB,YAAA,CAAaA,CAAAA,CAAkB,OAAO,CAAA,CAGxCA,CAAAA,CAAkB,OAAA,CAAU,WAAW,IAAM,CAC3CK,GAAAA,CAAU,KAAK,CAAA,CACfE,CAAAA,CAAe,KAAK,EACtB,EAAGZ,CAAiB,EAAA,CACtB,CAEA,SAASmB,EAAwBC,CAAAA,CAAqB,CAChDX,CAAAA,EAIJG,CAAAA,CAAeQ,GAAQd,CAAW,EACpC,CAEA,GAAI,CAACJ,GAAAA,CACH,OAAOmB,GAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CAAc,CAAA,CAGtC,IAAMC,CAAAA,CACJpB,GAAAA,CAAM,MAAA,CAASH,CAAAA,CAAqB,GAAGG,GAAAA,CAAM,KAAA,CAAM,CAAA,CAAGH,CAAkB,CAAC,CAAA,MAAA,CAAA,CAAMG,GAAAA,CAEjF,OACEmB,IAACE,CAAAA,CAAA,CAAgB,aAAA,CAAe,GAAA,CAC9B,SAAAC,IAAAA,CAACC,CAAAA,CAAA,CAAQ,IAAA,CAAMd,EAAa,YAAA,CAAcQ,CAAAA,CACxC,QAAA,CAAA,CAAAE,GAAAA,CAACK,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CACrB,SAAAF,IAAAA,CAAC,QAAA,CAAA,CACC,YAAA,CAAW,YAAA,CACX,SAAA,CAAWG,GAAAA,CACT,oMAAA,CACA,yFAAA,CACA,6FACA,oFACF,CAAA,CACA,OAAA,CAASV,CAAAA,CACT,IAAA,CAAK,QAAA,CAEL,QAAA,CAAA,CAAAI,GAAAA,CAAC,QAAK,SAAA,CAAU,0CAAA,CAA2C,GAAA,CAAKlB,CAAAA,CAC7D,SAAAD,GAAAA,CACH,CAAA,CACAmB,GAAAA,CAAC,MAAA,CAAA,CACC,cAAW,IAAA,CACX,SAAA,CAAWM,GAAAA,CACT,0HAAA,CACA,yGAAA,CACA,uCAAA,CACAlB,CAAAA,CACI,mCAAA,CACA,8FACN,CAAA,CAEC,QAAA,CAAAA,CAAAA,CAASY,GAAAA,CAACO,MAAA,CAAU,SAAA,CAAU,WAAA,CAAY,CAAA,CAAKP,IAACQ,IAAAA,CAAA,CAAS,SAAA,CAAU,WAAA,CAAY,CAAA,CAClF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACAR,IAACS,CAAAA,CAAA,CAAe,SAAA,CAAU,gCAAA,CACvB,SAAArB,CAAAA,CAAS,qBAAA,CAAwBa,CAAAA,CACpC,CAAA,CAAA,CACF,EACF,CAEJ","file":"chunk-ZEZ6TRCO.js","sourcesContent":["'use client';\n\nimport { useEffect, useRef, useState } from 'react';\nimport type { JSX, MouseEvent } from 'react';\nimport { Check as CheckIcon, Copy as CopyIcon } from 'lucide-react';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../ui/primitives/tooltip';\nimport { cn } from '../../ui/lib/utils';\n\nconst TOOLTIP_MAX_LENGTH = 500;\nconst COPIED_DISMISS_MS = 3000;\n\ntype CopyableTruncatedTextProps = {\n value: string;\n};\n\nexport function CopyableTruncatedText({ value }: CopyableTruncatedTextProps): JSX.Element {\n const textRef = useRef<HTMLSpanElement>(null);\n const dismissTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [copied, setCopied] = useState(false);\n const [tooltipOpen, setTooltipOpen] = useState(false);\n\n useEffect(() => {\n const element = textRef.current;\n\n if (!element) {\n return;\n }\n\n function updateTruncation(): void {\n if (!textRef.current) {\n return;\n }\n\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n\n updateTruncation();\n\n const observer = new ResizeObserver(updateTruncation);\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [value]);\n\n useEffect(() => {\n return () => {\n if (dismissTimeoutRef.current) {\n clearTimeout(dismissTimeoutRef.current);\n }\n };\n }, []);\n\n async function handleClick(event: MouseEvent<HTMLButtonElement>): Promise<void> {\n event.preventDefault();\n event.stopPropagation();\n\n if (!value) {\n return;\n }\n\n try {\n await navigator.clipboard.writeText(value);\n } catch {\n return;\n }\n\n setCopied(true);\n setTooltipOpen(true);\n\n if (dismissTimeoutRef.current) {\n clearTimeout(dismissTimeoutRef.current);\n }\n\n dismissTimeoutRef.current = setTimeout(() => {\n setCopied(false);\n setTooltipOpen(false);\n }, COPIED_DISMISS_MS);\n }\n\n function handleTooltipOpenChange(open: boolean): void {\n if (copied) {\n return;\n }\n\n setTooltipOpen(open && isTruncated);\n }\n\n if (!value) {\n return <div className=\"fk:truncate\" />;\n }\n\n const tooltipText =\n value.length > TOOLTIP_MAX_LENGTH ? `${value.slice(0, TOOLTIP_MAX_LENGTH)}…` : value;\n\n return (\n <TooltipProvider delayDuration={400}>\n <Tooltip open={tooltipOpen} onOpenChange={handleTooltipOpenChange}>\n <TooltipTrigger asChild>\n <button\n aria-label=\"Copy value\"\n className={cn(\n 'fk:group/copyable fk:relative fk:flex fk:w-full fk:min-w-0 fk:items-center fk:rounded-sm fk:border-0 fk:bg-transparent fk:px-0.5 fk:-mx-0.5 fk:py-0.5 fk:text-left fk:text-inherit fk:font-inherit',\n 'fk:cursor-pointer fk:transition-[transform,background-color] fk:duration-75 fk:ease-out',\n 'fk:hover:bg-muted/50 fk:active:translate-y-px fk:active:scale-[0.98] fk:active:bg-muted/70',\n 'fk:focus-visible:outline-hidden fk:focus-visible:ring-1 fk:focus-visible:ring-ring'\n )}\n onClick={handleClick}\n type=\"button\"\n >\n <span className=\"fk:min-w-0 fk:flex-1 fk:truncate fk:pr-4\" ref={textRef}>\n {value}\n </span>\n <span\n aria-hidden\n className={cn(\n 'fk:pointer-events-none fk:absolute fk:right-0.5 fk:top-1/2 fk:flex fk:-translate-y-1/2 fk:items-center fk:justify-center',\n 'fk:rounded-sm fk:bg-muted/80 fk:p-0.5 fk:text-muted-foreground fk:shadow-sm fk:ring-1 fk:ring-border/60',\n 'fk:transition-opacity fk:duration-100',\n copied\n ? 'fk:opacity-100 fk:text-foreground'\n : 'fk:opacity-0 fk:group-hover/copyable:opacity-100 fk:group-focus-visible/copyable:opacity-100'\n )}\n >\n {copied ? <CheckIcon className=\"fk:size-3\" /> : <CopyIcon className=\"fk:size-3\" />}\n </span>\n </button>\n </TooltipTrigger>\n <TooltipContent className=\"fk:max-w-xs fk:wrap-break-word\">\n {copied ? 'Copied to clipboard' : tooltipText}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as DateTime}from'./chunk-R7N3MDOP.js';import'./chunk-ZEZ6TRCO.js';import'./chunk-YW2EEXMV.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=datetime-NQTYGZIC.js.map
2
- //# sourceMappingURL=datetime-NQTYGZIC.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{b as Editor}from'./chunk-EOCJR5EY.js';import'./chunk-ZEZ6TRCO.js';import'./chunk-YW2EEXMV.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=editor-YIRZQR3D.js.map
2
- //# sourceMappingURL=editor-YIRZQR3D.js.map