@flexkit/studio 0.0.28 → 0.0.30

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 (61) hide show
  1. package/dist/asset-TS7J5GA5.js +2 -0
  2. package/dist/{asset-REAMGMQL.js.map → asset-TS7J5GA5.js.map} +1 -1
  3. package/dist/chunk-73RMWG53.js +2 -0
  4. package/dist/{chunk-X3S7TRCM.js.map → chunk-73RMWG53.js.map} +1 -1
  5. package/dist/chunk-DWK4NNLB.js +2 -0
  6. package/dist/chunk-DWK4NNLB.js.map +1 -0
  7. package/dist/chunk-FVFRTCEB.js +2 -0
  8. package/dist/chunk-FVFRTCEB.js.map +1 -0
  9. package/dist/chunk-HAQICAOQ.js +2 -0
  10. package/dist/chunk-HAQICAOQ.js.map +1 -0
  11. package/dist/chunk-IXO2LU47.js +2 -0
  12. package/dist/{chunk-TBCSVE5L.js.map → chunk-IXO2LU47.js.map} +1 -1
  13. package/dist/{chunk-NNRD7YZU.js → chunk-LL2Z4TD3.js} +2 -2
  14. package/dist/{chunk-NNRD7YZU.js.map → chunk-LL2Z4TD3.js.map} +1 -1
  15. package/dist/chunk-MC6VZLKC.js +2 -0
  16. package/dist/chunk-MC6VZLKC.js.map +1 -0
  17. package/dist/chunk-N52AF6GE.js +2 -0
  18. package/dist/chunk-N52AF6GE.js.map +1 -0
  19. package/dist/chunk-WXMCINGZ.js +2 -0
  20. package/dist/{chunk-27Y2SQ67.js.map → chunk-WXMCINGZ.js.map} +1 -1
  21. package/dist/chunk-YA4ACPM5.js +2 -0
  22. package/dist/{chunk-KR7CLPY2.js.map → chunk-YA4ACPM5.js.map} +1 -1
  23. package/dist/index.css +814 -42
  24. package/dist/index.d.ts +39 -4
  25. package/dist/index.js +196 -194
  26. package/dist/index.js.map +1 -1
  27. package/dist/{search-YRDOJUQO.js → search-UFFZBRQV.js} +2 -2
  28. package/dist/{search-YRDOJUQO.js.map → search-UFFZBRQV.js.map} +1 -1
  29. package/dist/switch-AFZGXSR3.js +2 -0
  30. package/dist/{switch-KVO3JRNX.js.map → switch-AFZGXSR3.js.map} +1 -1
  31. package/dist/text-2RL2L5FT.js +2 -0
  32. package/dist/{text-ODG7ABSW.js.map → text-2RL2L5FT.js.map} +1 -1
  33. package/dist/textarea-2A4TLWZS.js +2 -0
  34. package/dist/{textarea-M4YPSJEC.js.map → textarea-2A4TLWZS.js.map} +1 -1
  35. package/dist/{types.d-DiQPwK_q.d.ts → types.d-CX3kDxFZ.d.ts} +45 -4
  36. package/dist/ui.d.ts +467 -4
  37. package/dist/ui.js +6 -1
  38. package/dist/ui.js.map +1 -1
  39. package/dist/user-nav-4JKIFZLB.js +2 -0
  40. package/dist/user-nav-4JKIFZLB.js.map +1 -0
  41. package/package.json +17 -1
  42. package/dist/asset-REAMGMQL.js +0 -2
  43. package/dist/chunk-27Y2SQ67.js +0 -2
  44. package/dist/chunk-AALMEPYG.js +0 -2
  45. package/dist/chunk-AALMEPYG.js.map +0 -1
  46. package/dist/chunk-CWHDJ7Q4.js +0 -2
  47. package/dist/chunk-CWHDJ7Q4.js.map +0 -1
  48. package/dist/chunk-KR7CLPY2.js +0 -2
  49. package/dist/chunk-M5AH5ERI.js +0 -2
  50. package/dist/chunk-M5AH5ERI.js.map +0 -1
  51. package/dist/chunk-QXCD5JR4.js +0 -2
  52. package/dist/chunk-QXCD5JR4.js.map +0 -1
  53. package/dist/chunk-TBCSVE5L.js +0 -2
  54. package/dist/chunk-X3S7TRCM.js +0 -2
  55. package/dist/chunk-ZSJAPCIZ.js +0 -2
  56. package/dist/chunk-ZSJAPCIZ.js.map +0 -1
  57. package/dist/switch-KVO3JRNX.js +0 -2
  58. package/dist/text-ODG7ABSW.js +0 -2
  59. package/dist/textarea-M4YPSJEC.js +0 -2
  60. package/dist/user-nav-QYO4X7CQ.js +0 -2
  61. package/dist/user-nav-QYO4X7CQ.js.map +0 -1
@@ -0,0 +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
@@ -0,0 +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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flexkit/studio",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
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",
@@ -88,12 +88,22 @@
88
88
  "@lexical/selection": "^0.12.2",
89
89
  "@lexical/table": "^0.12.2",
90
90
  "@lexical/utils": "^0.12.2",
91
+ "@radix-ui/react-collapsible": "1.1.20",
92
+ "@radix-ui/react-scroll-area": "1.2.18",
93
+ "@radix-ui/react-select": "2.3.7",
94
+ "@radix-ui/react-slot": "1.3.3",
95
+ "@radix-ui/react-use-controllable-state": "1.2.6",
96
+ "@streamdown/cjk": "1.0.3",
97
+ "@streamdown/code": "1.1.1",
98
+ "@streamdown/math": "1.0.2",
99
+ "@streamdown/mermaid": "1.0.2",
91
100
  "@tanstack/react-table": "^8.11.7",
92
101
  "@tanstack/react-virtual": "^3.8.3",
93
102
  "@tiptap/core": "2.27.1",
94
103
  "@tiptap/html": "2.27.1",
95
104
  "@tiptap/pm": "2.27.1",
96
105
  "ai": "6.0.116",
106
+ "boring-avatars": "2.0.4",
97
107
  "bytes": "^3.1.2",
98
108
  "class-variance-authority": "^0.7.0",
99
109
  "clsx": "^2.0.0",
@@ -105,6 +115,8 @@
105
115
  "lexical": "^0.12.2",
106
116
  "lowlight": "3.1.0",
107
117
  "lucide-react": "0.577.0",
118
+ "motion": "13.1.0",
119
+ "nanoid": "6.0.1",
108
120
  "novel": "1.0.2",
109
121
  "radix-ui": "1.4.3",
110
122
  "ramda": "^0.29.1",
@@ -114,11 +126,15 @@
114
126
  "react-markdown": "9.0.1",
115
127
  "react-resizable-panels": "^4",
116
128
  "react-router-dom": "^6.21.0",
129
+ "shadcn": "4.16.1",
130
+ "shiki": "4.4.3",
117
131
  "sonner": "^2.0.0",
132
+ "streamdown": "2.5.0",
118
133
  "swr": "^2.4.1",
119
134
  "tailwind-merge": "^3.4.1",
120
135
  "tiptap-markdown": "0.8.10",
121
136
  "use-debounce": "10.0.3",
137
+ "use-stick-to-bottom": "1.1.6",
122
138
  "uuid": "^9.0.1",
123
139
  "vaul": "1.1.2",
124
140
  "zod": "4.4.3"
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Asset}from'./chunk-CWHDJ7Q4.js';import'./chunk-YW2EEXMV.js';import'./chunk-WDRCARCP.js';import'./chunk-WIUPQHZ5.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=asset-REAMGMQL.js.map
2
- //# sourceMappingURL=asset-REAMGMQL.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a}from'./chunk-7GBAYC7G.js';import {b}from'./chunk-QXCD5JR4.js';import {c,e,f,h,g,i}from'./chunk-AALMEPYG.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$1,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$1}),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(b,{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-27Y2SQ67.js.map
2
- //# sourceMappingURL=chunk-27Y2SQ67.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a as a$1}from'./chunk-O2QMYUPS.js';import {Label,Slot}from'radix-ui';import {jsx}from'react/jsx-runtime';import*as a from'react';import {FormProvider,Controller,useFormContext,useFormState}from'react-hook-form';function d({className:e,...t}){return jsx(Label.Root,{"data-slot":"label",className:a$1("fk:flex fk:items-center fk:gap-2 fk:text-sm fk:leading-none fk:font-medium fk:select-none fk:group-data-[disabled=true]:pointer-events-none fk:group-data-[disabled=true]:opacity-50 fk:peer-disabled:cursor-not-allowed fk:peer-disabled:opacity-50",e),...t})}var L=FormProvider,c=a.createContext({}),N=({...e})=>jsx(c.Provider,{value:{name:e.name},children:jsx(Controller,{...e})}),l=()=>{let e=a.useContext(c),t=a.useContext(f),{getFieldState:o}=useFormContext(),r=useFormState({name:e.name}),m=o(e.name,r);if(!e)throw new Error("useFormField should be used within <FormField>");let{id:s}=t;return {id:s,name:e.name,formItemId:`${s}-form-item`,formDescriptionId:`${s}-form-item-description`,formMessageId:`${s}-form-item-message`,...m}},f=a.createContext({});function S({className:e,...t}){let o=a.useId();return jsx(f.Provider,{value:{id:o},children:jsx("div",{"data-slot":"form-item",className:a$1("fk:grid fk:gap-2",e),...t})})}function $({className:e,...t}){let{error:o,formItemId:r}=l();return jsx(d,{"data-slot":"form-label","data-error":!!o,className:a$1("fk:data-[error=true]:text-destructive",e),htmlFor:r,...t})}function w({...e}){let{error:t,formItemId:o,formDescriptionId:r,formMessageId:m}=l();return jsx(Slot.Root,{"data-slot":"form-control",id:o,"aria-describedby":t?`${r} ${m}`:`${r}`,"aria-invalid":!!t,...e})}function D({className:e,...t}){let{formDescriptionId:o}=l();return jsx("p",{"data-slot":"form-description",id:o,className:a$1("fk:text-sm fk:text-muted-foreground",e),...t})}function M({className:e,...t}){let{error:o,formMessageId:r}=l(),m=o?String(o?.message??""):t.children;return m?jsx("p",{"data-slot":"form-message",id:r,className:a$1("fk:text-sm fk:text-destructive",e),...t,children:m}):null}export{d as a,L as b,N as c,l as d,S as e,$ as f,w as g,D as h,M as i};//# sourceMappingURL=chunk-AALMEPYG.js.map
2
- //# sourceMappingURL=chunk-AALMEPYG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/primitives/label.tsx","../src/ui/primitives/form.tsx"],"names":["Label","className","props","jsx","LabelPrimitive","cn","Form","FormProvider","FormFieldContext","FormField","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","id","FormItem","FormLabel","error","formItemId","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","body"],"mappings":"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","file":"chunk-AALMEPYG.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Label as LabelPrimitive } from 'radix-ui';\nimport { cn } from '../lib/utils';\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n 'fk:flex fk:items-center fk:gap-2 fk:text-sm fk:leading-none fk:font-medium fk:select-none fk:group-data-[disabled=true]:pointer-events-none fk:group-data-[disabled=true]:opacity-50 fk:peer-disabled:cursor-not-allowed fk:peer-disabled:opacity-50',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import * as React from 'react';\nimport { Label as LabelPrimitive, Slot } from 'radix-ui';\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from 'react-hook-form';\nimport { cn } from '../lib/utils';\nimport { Label } from './label';\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div data-slot=\"form-item\" className={cn('fk:grid fk:gap-2', className)} {...props} />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn('fk:data-[error=true]:text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot.Root>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot.Root\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn('fk:text-sm fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn('fk:text-sm fk:text-destructive', className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a,b as b$1,c,d as d$1,e}from'./chunk-YW2EEXMV.js';import {b}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,I=25e5,i=new Map,v=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=i.get(e);t&&i.set(e,{...t,lastUsedAt:Date.now()});}function j(){if(i.size<=_)return;let e=Array.from(i.entries()).sort((n,r)=>n[1].lastUsedAt-r[1].lastUsedAt),t=Math.max(1,Math.ceil(_*.1));for(let n=0;n<t&&n<e.length;n+=1){let[r,o]=e[n];i.delete(r),URL.revokeObjectURL(o.objectUrl);}}async function N(e){if(w.has(e)){d(e);return}if(i.has(e)){g(e);return}let t=v.get(e);if(t){await t;return}let n=(async()=>{try{let r=await fetch(e,{mode:"cors",cache:"force-cache"});if(!r.ok){d(e);return}let o=await r.blob();if(o.size>I)return;let a=URL.createObjectURL(o);i.set(e,{objectUrl:a,byteSize:o.size,lastUsedAt:Date.now()}),j();}catch(r){r instanceof TypeError&&w.add(e),d(e);}})();v.set(e,n),await n,v.delete(e);}function U(e){let t=useMemo(()=>{if(!e)return null;let o=i.get(e);return o?(g(e),o.objectUrl):null},[e]),[n,r]=useState(t);return useEffect(()=>{if(!e){r(null);return}if(w.has(e)){d(e),r(null);return}let o=i.get(e);if(o){g(e),r(o.objectUrl);return}r(null);let a=false;return N(e).then(()=>{let f=i.get(e);f&&(a||(g(e),r(f.objectUrl)));}),()=>{a=true;}},[e]),n}var y="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(M,{value:e})}function M({value:e$1}){let t=e$1?.path??"",n=!!t,r=n&&/\.(png|jpe?g|gif|webp|avif|svg)$/i.test(t),o=l=>{let[m]=l.split("?"),x=m.split(".");return x.length>1?x.pop().toLowerCase():"file"},a$1=n?t.endsWith(".svg")?`${b}${t}`:`${b}${t}?w=84&h=84&f=webp`:null,f=n?t.endsWith(".svg")?`${b}${t}`:`${b}${t}?w=624&h=624&f=webp`:"",S=U(a$1);return n?jsx("div",{className:"fk:z-10",children:jsx(a,{children:r?jsxs(b$1,{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 ${y}`,decoding:"async",src:S??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 ${y}`,decoding:"async",src:f})})})]}):jsxs(b$1,{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=o(t),m=defaultStyles[l];return jsx(FileIcon,{extension:l,...m||{}})})()})}),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(n=>!!n.path).slice(0,3);return t.length===0?null:jsxs("div",{className:"fk:flex fk:items-center",children:[jsx("div",{className:"fk:flex fk:-space-x-2",children:t.map(n=>jsx("img",{alt:"asset",className:`fk:h-7 fk:w-7 fk:overflow-hidden fk:rounded-md fk:object-contain ${y}`,decoding:"async",src:`${b}${n.path}?w=84&h=84&f=webp`},n._id))}),e.length>3?jsxs("span",{className:"fk:ml-2 fk:text-xs fk:text-muted-foreground",children:["+",e.length-3]}):null]})}export{G as a};//# sourceMappingURL=chunk-CWHDJ7Q4.js.map
2
- //# sourceMappingURL=chunk-CWHDJ7Q4.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"],"mappings":"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","file":"chunk-CWHDJ7Q4.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};\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\n if (assets.length === 0) {\n return null;\n }\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 {value.length > 3 ? (\n <span className=\"fk:ml-2 fk:text-xs fk:text-muted-foreground\">+{value.length - 3}</span>\n ) : null}\n </div>\n );\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a}from'./chunk-OEWYLKO7.js';import {b}from'./chunk-QXCD5JR4.js';import {c,e,f,h,g,i}from'./chunk-AALMEPYG.js';import {jsx,jsxs}from'react/jsx-runtime';function y({control:v,fieldSchema:F,setValue:m}){let{name:l,label:k,isEditable:b$1,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$1===false||e$1.value?.disabled,...e$1,onChange:o=>{h$1(o,e$1.value);},value:e$1.value?.value||""})}),jsx(b,{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-KR7CLPY2.js.map
2
- //# sourceMappingURL=chunk-KR7CLPY2.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {d}from'./chunk-V6R4AWQS.js';import {c}from'./chunk-WDRCARCP.js';import {createContext,useContext}from'react';import l from'swr';import {useParams}from'react-router-dom';import {jsx}from'react/jsx-runtime';function s(){let{projectId:e}=useParams(),{projects:t}=d(),o=t.find(r=>r.projectId===e)??t[0],{data:c$1,isLoading:a}=l(c(e??"").currentUser,r=>fetch(r,{mode:"cors",credentials:"include"}).then(d=>d.json()));return [a,{user:c$1,logout:async()=>{await fetch(c(e??"").logout(o?.basePath??"/"),{method:"POST",mode:"cors",credentials:"include"}),await fetch("/api/flexkit/logout",{method:"GET",credentials:"include"}),window.location.reload();}}]}var u=createContext([true,{user:null,logout:()=>Promise.resolve()}]);function L({children:e}){let[t,o]=s();return jsx(u.Provider,{value:[t,o],children:e})}function j(){return useContext(u)}export{L as a,j as b};//# sourceMappingURL=chunk-M5AH5ERI.js.map
2
- //# sourceMappingURL=chunk-M5AH5ERI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/auth/use-auth-service.ts","../src/auth/auth-context.tsx"],"names":["useAuthService","projectId","useParams","projects","useConfig","currentProject","project","user","isLoadingUser","useSWR","apiPaths","url","res","AuthContext","createContext","AuthProvider","children","isLoading","auth","jsx","useAuth","useContext"],"mappings":"yOAQe,SAARA,GAA+C,CACpD,GAAM,CAAE,SAAA,CAAAC,CAAU,CAAA,CAAIC,SAAAA,GAChB,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAIC,CAAAA,GACfC,CAAAA,CAAiBF,CAAAA,CAAS,IAAA,CAAMG,CAAAA,EAAYA,EAAQ,SAAA,GAAcL,CAAS,GAAKE,CAAAA,CAAS,CAAC,EAC1F,CAAE,IAAA,CAAMI,GAAAA,CAAM,SAAA,CAAWC,CAAc,CAAA,CAAIC,CAAAA,CAAOC,CAAAA,CAAST,CAAAA,EAAa,EAAE,CAAA,CAAE,WAAA,CAAcU,CAAAA,EAC9F,KAAA,CAAMA,EAAK,CAAE,IAAA,CAAM,OAAQ,WAAA,CAAa,SAAU,CAAC,CAAA,CAAE,IAAA,CAAMC,CAAAA,EAAQA,CAAAA,CAAI,MAAuB,CAChG,EAGA,OAAO,CAFWJ,EAIhB,CACE,IAAA,CAAAD,GAAAA,CACA,MAAA,CAAQ,SAAY,CAElB,MAAM,MAAMG,CAAAA,CAAST,CAAAA,EAAa,EAAE,CAAA,CAAE,MAAA,CAAOI,CAAAA,EAAgB,QAAA,EAAY,GAAG,CAAA,CAAG,CAC7E,MAAA,CAAQ,MAAA,CACR,KAAM,MAAA,CACN,WAAA,CAAa,SACf,CAAC,EAGD,MAAM,KAAA,CAAM,sBAAuB,CAAE,MAAA,CAAQ,MAAO,WAAA,CAAa,SAAU,CAAC,CAAA,CAE5E,OAAO,QAAA,CAAS,MAAA,GAClB,CACF,CACF,CACF,CC9BA,IAAMQ,CAAAA,CAAcC,aAAAA,CAAc,CAChC,IAAA,CACA,CACE,KAAM,IAAA,CACN,MAAA,CAAQ,IAAM,OAAA,CAAQ,SACxB,CACF,CAAC,CAAA,CAEM,SAASC,CAAAA,CAAa,CAAE,QAAA,CAAAC,CAAS,EAA+C,CACrF,GAAM,CAACC,CAAAA,CAAWC,CAAI,EAAIlB,CAAAA,EAAe,CAEzC,OAAOmB,GAAAA,CAACN,EAAY,QAAA,CAAZ,CAAqB,MAAO,CAACI,CAAAA,CAAWC,CAAI,CAAA,CAAI,QAAA,CAAAF,CAAAA,CAAS,CACnE,CAEO,SAASI,CAAAA,EAAuB,CACrC,OAAOC,UAAAA,CAAWR,CAAW,CAC/B","file":"chunk-M5AH5ERI.js","sourcesContent":["'use client';\n\nimport useSWR from 'swr';\nimport { useParams } from 'react-router-dom';\nimport { apiPaths } from '../core/api-paths';\nimport { useConfig } from '../core/config/config-context';\nimport type { AuthService, User } from './types';\n\nexport default function useAuthService(): AuthService {\n const { projectId } = useParams();\n const { projects } = useConfig();\n const currentProject = projects.find((project) => project.projectId === projectId) ?? projects[0];\n const { data: user, isLoading: isLoadingUser } = useSWR(apiPaths(projectId ?? '').currentUser, (url: string) =>\n fetch(url, { mode: 'cors', credentials: 'include' }).then((res) => res.json() as Promise<User>)\n );\n const isLoading = isLoadingUser;\n\n return [\n isLoading,\n {\n user,\n logout: async () => {\n // wipe remote session\n await fetch(apiPaths(projectId ?? '').logout(currentProject?.basePath ?? '/'), {\n method: 'POST',\n mode: 'cors',\n credentials: 'include',\n });\n\n // delete first-party auth cookie\n await fetch('/api/flexkit/logout', { method: 'GET', credentials: 'include' });\n\n window.location.reload();\n },\n },\n ];\n}\n","'use client';\n\nimport { createContext, JSX, useContext } from 'react';\nimport useAuthService from './use-auth-service';\nimport type { Auth, AuthService, User } from './types';\n\nconst AuthContext = createContext([\n true,\n {\n user: null as User | null,\n logout: () => Promise.resolve(),\n } as Auth,\n]);\n\nexport function AuthProvider({ children }: { children: React.ReactNode }): JSX.Element {\n const [isLoading, auth] = useAuthService();\n\n return <AuthContext.Provider value={[isLoading, auth]}>{children}</AuthContext.Provider>;\n}\n\nexport function useAuth(): AuthService {\n return useContext(AuthContext) as AuthService;\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a}from'./chunk-O2QMYUPS.js';import {useId}from'react';import {Checkbox}from'radix-ui';import {CheckIcon}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function n({className:e,...o}){return jsx(Checkbox.Root,{"data-slot":"checkbox",className:a("fk:peer fk:size-4 fk:shrink-0 fk:rounded-[4px] fk:border fk:border-input fk:shadow-xs fk:transition-shadow fk:outline-none fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:disabled:cursor-not-allowed fk:disabled:opacity-50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:data-[state=checked]:border-primary fk:data-[state=checked]:bg-primary fk:data-[state=checked]:text-primary-foreground fk:dark:bg-input/30 fk:dark:aria-invalid:ring-destructive/40 fk:dark:data-[state=checked]:bg-primary",e),...o,children:jsx(Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"fk:grid fk:place-content-center fk:text-current fk:transition-none",children:jsx(CheckIcon,{className:"fk:size-3.5"})})})}function x({scope:e,checked:o,onChange:d}){let t=useId();return !e||e==="default"?null:jsxs("div",{className:"fk:flex fk:items-center fk:space-x-2 fk:mb-2",children:[jsx(n,{checked:o,id:t,onCheckedChange:d}),jsx("label",{className:"fk:text-xs fk:font-normal fk:leading-none fk:peer-disabled:cursor-not-allowed fk:peer-disabled:opacity-70",htmlFor:t,children:"Use default value"})]})}export{n as a,x as b};//# sourceMappingURL=chunk-QXCD5JR4.js.map
2
- //# sourceMappingURL=chunk-QXCD5JR4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/primitives/checkbox.tsx","../src/form/fields/default-value-switch.tsx"],"names":["Checkbox","className","props","jsx","CheckboxPrimitive","cn","CheckIcon","DefaultValueSwitch","scope","checked","onChange","elementId","useId","jsxs"],"mappings":"gMAOA,SAASA,CAAAA,CAAS,CAAE,SAAA,CAAAC,EAAW,GAAGC,CAAM,CAAA,CAAwD,CAC9F,OACEC,GAAAA,CAACC,SAAkB,IAAA,CAAlB,CACC,WAAA,CAAU,UAAA,CACV,SAAA,CAAWC,CAAAA,CACT,gjBACAJ,CACF,CAAA,CACC,GAAGC,CAAAA,CAEJ,QAAA,CAAAC,GAAAA,CAACC,SAAkB,SAAA,CAAlB,CACC,WAAA,CAAU,oBAAA,CACV,SAAA,CAAU,oEAAA,CAEV,SAAAD,GAAAA,CAACG,SAAAA,CAAA,CAAU,SAAA,CAAU,aAAA,CAAc,CAAA,CACrC,EACF,CAEJ,CCfO,SAASC,CAAAA,CAAmB,CAAE,KAAA,CAAAC,EAAO,OAAA,CAAAC,CAAAA,CAAS,QAAA,CAAAC,CAAS,CAAA,CAA8B,CAC1F,IAAMC,CAAAA,CAAYC,KAAAA,EAAM,CAExB,OAAI,CAACJ,CAAAA,EAASA,IAAU,SAAA,CACf,IAAA,CAIPK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8CAAA,CACb,UAAAV,GAAAA,CAACH,CAAAA,CAAA,CAAS,OAAA,CAASS,CAAAA,CAAS,EAAA,CAAIE,EAAW,eAAA,CAAiBD,CAAAA,CAAwB,CAAA,CACpFP,GAAAA,CAAC,OAAA,CAAA,CACC,SAAA,CAAU,4GACV,OAAA,CAASQ,CAAAA,CACV,QAAA,CAAA,mBAAA,CAED,CAAA,CAAA,CACF,CAEJ","file":"chunk-QXCD5JR4.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\nimport { CheckIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'fk:peer fk:size-4 fk:shrink-0 fk:rounded-[4px] fk:border fk:border-input fk:shadow-xs fk:transition-shadow fk:outline-none fk:focus-visible:border-ring fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:disabled:cursor-not-allowed fk:disabled:opacity-50 fk:aria-invalid:border-destructive fk:aria-invalid:ring-destructive/20 fk:data-[state=checked]:border-primary fk:data-[state=checked]:bg-primary fk:data-[state=checked]:text-primary-foreground fk:dark:bg-input/30 fk:dark:aria-invalid:ring-destructive/40 fk:dark:data-[state=checked]:bg-primary',\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"fk:grid fk:place-content-center fk:text-current fk:transition-none\"\n >\n <CheckIcon className=\"fk:size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","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 {a}from'./chunk-O2QMYUPS.js';import {createContext,useState,useCallback,useEffect,useMemo,useContext}from'react';import {jsx,jsxs}from'react/jsx-runtime';import {DropdownMenu}from'radix-ui';import {CheckIcon,CircleIcon,ChevronRightIcon}from'lucide-react';var U=["light","dark"],C="(prefers-color-scheme: dark)",R=createContext(void 0);function Y({attribute:e="data-theme",children:t,defaultTheme:o,disableTransitionOnChange:a=false,enableColorScheme:h=true,enableSystem:d=true,forcedTheme:f,storageKey:g="theme",themes:m=U,value:l}){let[c,I]=useState(()=>A(g,o,d)),[p,b]=useState(()=>Q()),P=T(f??c,d,p),x=useCallback(s=>{if(!f&&(I(s),!!k()))try{window.localStorage.setItem(g,s);}catch{}},[f,g]);useEffect(()=>{if(!k()||!d)return;let s=window.matchMedia(C);function v(u){b(u.matches?"dark":"light");}return b(s.matches?"dark":"light"),s.addEventListener("change",v),()=>{s.removeEventListener("change",v);}},[d]),useEffect(()=>{if(!k())return;let s=window.document.documentElement,u=T(f??c??o,d,p);if(!u)return;let z=a?V():void 0,N=l?Object.values(l):m,y=l?.[u]??u;e==="class"&&(s.classList.remove(...N),s.classList.add(y)),e!=="class"&&s.setAttribute(e,y),h&&(u==="dark"||u==="light")&&(s.style.colorScheme=u),z?.();},[e,o,a,h,d,f,p,c,m,l]);let S=useMemo(()=>({forcedTheme:f,resolvedTheme:P,setTheme:x,systemTheme:p,theme:f??c,themes:d?[...m,"system"]:m}),[d,f,P,x,p,c,m]);return jsx(R.Provider,{value:S,children:t})}function j(){let e=useContext(R);if(!e)throw new Error("useTheme must be used within ThemeProvider");return e}function V(){let e=window.document.createElement("style");return e.appendChild(window.document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),window.document.head.appendChild(e),()=>{window.getComputedStyle(window.document.body),window.setTimeout(()=>{e.remove();},0);}}function A(e,t,o){if(!k())return t??(o?"system":"light");try{let a=window.localStorage.getItem(e);if(a)return a}catch{}return t??(o?"system":"light")}function Q(){if(k())return window.matchMedia(C).matches?"dark":"light"}function k(){return typeof window<"u"}function T(e,t,o){if(e)return e!=="system"?e:t?o??"light":"light"}function ee({...e}){return jsx(DropdownMenu.Root,{"data-slot":"dropdown-menu",...e})}function te({...e}){return jsx(DropdownMenu.Portal,{"data-slot":"dropdown-menu-portal",...e})}function oe({...e}){return jsx(DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function ne({className:e,sideOffset:t=4,...o}){return jsx(DropdownMenu.Portal,{children:jsx(DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:t,className:a("fk:z-50 fk:max-h-(--radix-dropdown-menu-content-available-height) fk:min-w-32 fk:origin-(--radix-dropdown-menu-content-transform-origin) fk:overflow-x-hidden fk:overflow-y-auto fk:rounded-md fk:border fk:bg-popover fk:p-1 fk:text-popover-foreground fk:shadow-md fk:data-[side=bottom]:slide-in-from-top-2 fk:data-[side=left]:slide-in-from-right-2 fk:data-[side=right]:slide-in-from-left-2 fk:data-[side=top]:slide-in-from-bottom-2 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",e),...o})})}function re({...e}){return jsx(DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...e})}function ie({className:e,inset:t,variant:o="default",...a$1}){return jsx(DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":o,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:focus:bg-accent fk:focus:text-accent-foreground fk:data-[disabled]:pointer-events-none fk:data-[disabled]:opacity-50 fk:data-[inset]:pl-8 fk:data-[variant=destructive]:text-destructive fk:data-[variant=destructive]:focus:bg-destructive/10 fk:data-[variant=destructive]:focus:text-destructive fk:dark:data-[variant=destructive]:focus:bg-destructive/20 fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4 fk:[&_svg:not([class*='text-'])]:text-muted-foreground fk:data-[variant=destructive]:*:[svg]:text-destructive!",e),...a$1})}function ae({className:e,children:t,checked:o,...a$1}){return jsxs(DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item",className:a("fk:relative fk:flex fk:cursor-default fk:items-center fk:gap-2 fk:rounded-sm fk:py-1.5 fk:pr-2 fk:pl-8 fk:text-sm fk:outline-hidden fk:select-none fk:focus:bg-accent fk:focus:text-accent-foreground fk:data-[disabled]:pointer-events-none fk:data-[disabled]:opacity-50 fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4",e),checked:o,...a$1,children:[jsx("span",{className:"fk:pointer-events-none fk:absolute fk:left-2 fk:flex fk:size-3.5 fk:items-center fk:justify-center",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(CheckIcon,{className:"size-4"})})}),t]})}function se({...e}){return jsx(DropdownMenu.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...e})}function de({className:e,children:t,...o}){return jsxs(DropdownMenu.RadioItem,{"data-slot":"dropdown-menu-radio-item",className:a("fk:relative fk:flex fk:cursor-default fk:items-center fk:gap-2 fk:rounded-sm fk:py-1.5 fk:pr-2 fk:pl-8 fk:text-sm fk:outline-hidden fk:select-none fk:focus:bg-accent fk:focus:text-accent-foreground fk:data-[disabled]:pointer-events-none fk:data-[disabled]:opacity-50 fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4",e),...o,children:[jsx("span",{className:"fk:pointer-events-none fk:absolute fk:left-2 fk:flex fk:size-3.5 fk:items-center fk:justify-center",children:jsx(DropdownMenu.ItemIndicator,{children:jsx(CircleIcon,{className:"size-2 fill-current"})})}),t]})}function fe({className:e,inset:t,...o}){return jsx(DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":t,className:a("fk:px-2 fk:py-1.5 fk:text-sm fk:font-medium fk:data-[inset]:pl-8",e),...o})}function ue({className:e,...t}){return jsx(DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:a("fk:-mx-1 fk:my-1 fk:h-px fk:bg-border",e),...t})}function me({className:e,...t}){return jsx("span",{"data-slot":"dropdown-menu-shortcut",className:a("fk:ml-auto fk:text-xs fk:tracking-widest fk:text-muted-foreground",e),...t})}function ce({...e}){return jsx(DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...e})}function pe({className:e,inset:t,children:o,...a$1}){return jsxs(DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:a("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:focus:bg-accent fk:focus:text-accent-foreground fk:data-[inset]:pl-8 fk:data-[state=open]:bg-accent fk:data-[state=open]: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",e),...a$1,children:[o,jsx(ChevronRightIcon,{className:"fk:ml-auto fk:size-4"})]})}function ke({className:e,...t}){return jsx(DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:a("fk:z-50 fk:min-w-32 fk:origin-(--radix-dropdown-menu-content-transform-origin) fk:overflow-hidden fk:rounded-md fk:border fk:bg-popover fk:p-1 fk:text-popover-foreground fk:shadow-lg fk:data-[side=bottom]:slide-in-from-top-2 fk:data-[side=left]:slide-in-from-right-2 fk:data-[side=right]:slide-in-from-left-2 fk:data-[side=top]:slide-in-from-bottom-2 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",e),...t})}function we({className:e,...t}){return jsx("div",{"data-slot":"skeleton",className:a("fk:animate-pulse fk:rounded-md fk:bg-accent",e),...t})}export{Y as a,j as b,ee as c,te as d,oe as e,ne as f,re as g,ie as h,ae as i,se as j,de as k,fe as l,ue as m,me as n,ce as o,pe as p,ke as q,we as r};//# sourceMappingURL=chunk-TBCSVE5L.js.map
2
- //# sourceMappingURL=chunk-TBCSVE5L.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {b}from'./chunk-QXCD5JR4.js';import {a}from'./chunk-KGYH74NA.js';import {c,e,f,h,g,i}from'./chunk-AALMEPYG.js';import {jsx,jsxs}from'react/jsx-runtime';function S({control:k,fieldSchema:p,setValue:a$1}){let{name:l,label:h$1,isEditable:v,options:n}=p;function b$1(e,o){a$1(l,{...o,value:e});}function w(e,o){a$1(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$1(o,e$1.value);}})})]}),jsx(b,{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-X3S7TRCM.js.map
2
- //# sourceMappingURL=chunk-X3S7TRCM.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {b}from'./chunk-TBCSVE5L.js';import {a}from'./chunk-O2QMYUPS.js';import {Toggle,ToggleGroup,Separator}from'radix-ui';import {cva}from'class-variance-authority';import {jsx}from'react/jsx-runtime';import*as l from'react';import {Loader2Icon,OctagonXIcon,TriangleAlertIcon,InfoIcon,CircleCheckIcon}from'lucide-react';import {Toaster}from'sonner';export{toast as e}from'sonner';var p=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 V({className:e,variant:t,size:r,...a$1}){return jsx(Toggle.Root,{"data-slot":"toggle",className:a(p({variant:t,size:r,className:e})),...a$1})}var m=l.createContext({size:"default",variant:"default",spacing:0});function L({className:e,variant:t,size:r,spacing:a$1=0,children:f,...i}){return jsx(ToggleGroup.Root,{"data-slot":"toggle-group","data-variant":t,"data-size":r,"data-spacing":a$1,style:{"--gap":a$1},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",e),...i,children:jsx(m.Provider,{value:{variant:t,size:r,spacing:a$1},children:f})})}function O({className:e,children:t,variant:r,size:a$1,...f}){let i=l.useContext(m);return jsx(ToggleGroup.Item,{"data-slot":"toggle-group-item","data-variant":i.variant||r,"data-size":i.size||a$1,"data-spacing":i.spacing,className:a(p({variant:i.variant||r,size:i.size||a$1}),"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",e),...f,children:t})}var X=({richColors:e=true,style:t,...r})=>{let{theme:a="system"}=b();return jsx(Toaster,{theme:a,richColors:e,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)",...t},...r})};function U({className:e,orientation:t="horizontal",decorative:r=true,...a$1}){return jsx(Separator.Root,{"data-slot":"separator",decorative:r,orientation:t,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",e),...a$1})}function $({className:e,containerClassName:t,onScroll:r,ref:a$1,...f}){return jsx("div",{ref:a$1,"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",t),onScroll:r,children:jsx("table",{"data-slot":"table",className:a("fk:w-full fk:caption-bottom fk:text-sm",e),...f})})}function j({className:e,...t}){return jsx("thead",{"data-slot":"table-header",className:a("fk:[&_tr]:border-b fk:bg-muted fk:dark:bg-muted",e),...t})}function tt({className:e,...t}){return jsx("tbody",{"data-slot":"table-body",className:a("fk:[&_tr:last-child]:border-0",e),...t})}function et({className:e,...t}){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",e),...t})}function ot({className:e,...t}){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",e),...t})}function at({className:e,...t}){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]",e),...t})}function rt({className:e,...t}){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]",e),...t})}function nt({className:e,...t}){return jsx("caption",{"data-slot":"table-caption",className:a("fk:mt-4 fk:text-sm fk:text-muted-foreground",e),...t})}export{p as a,V as b,L as c,O as d,X as f,U as g,$ as h,j as i,tt as j,et as k,ot as l,at as m,rt as n,nt as o};//# sourceMappingURL=chunk-ZSJAPCIZ.js.map
2
- //# sourceMappingURL=chunk-ZSJAPCIZ.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/table.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","Table","containerClassName","onScroll","ref","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":"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","file":"chunk-ZSJAPCIZ.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","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"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Switch}from'./chunk-X3S7TRCM.js';import'./chunk-QXCD5JR4.js';import'./chunk-KGYH74NA.js';import'./chunk-AALMEPYG.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=switch-KVO3JRNX.js.map
2
- //# sourceMappingURL=switch-KVO3JRNX.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Text}from'./chunk-27Y2SQ67.js';import'./chunk-7GBAYC7G.js';import'./chunk-QXCD5JR4.js';import'./chunk-AALMEPYG.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=text-ODG7ABSW.js.map
2
- //# sourceMappingURL=text-ODG7ABSW.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Textarea}from'./chunk-KR7CLPY2.js';import'./chunk-OEWYLKO7.js';import'./chunk-QXCD5JR4.js';import'./chunk-AALMEPYG.js';import'./chunk-O2QMYUPS.js';//# sourceMappingURL=textarea-M4YPSJEC.js.map
2
- //# sourceMappingURL=textarea-M4YPSJEC.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {b as b$1}from'./chunk-M5AH5ERI.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-TBCSVE5L.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 {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function _({projectId:D}){let{theme:a$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:[jsx(b$3,{alt:"@shadcn",src:n$1.user?.avatar_url}),jsx(c$1,{children:n$1.user?.display_name.charAt(0).toUpperCase()??""})]})})}),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:a$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:a$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:a$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{_ as UserNav};//# sourceMappingURL=user-nav-QYO4X7CQ.js.map
2
- //# sourceMappingURL=user-nav-QYO4X7CQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/components/user-nav.tsx"],"names":["UserNav","projectId","theme","setTheme","useTheme","isLoading","auth","useAuth","jsx","Skeleton","jsxs","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","Monitor","Moon","Sun","DropdownMenuItem","DropdownMenuShortcut"],"mappings":"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","file":"user-nav-QYO4X7CQ.js","sourcesContent":["import type { JSX } from 'react';\nimport { useTheme } from '../theme-context';\nimport { Monitor, Moon, Sun } from 'lucide-react';\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\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 <AvatarImage alt=\"@shadcn\" src={auth.user?.avatar_url} />\n <AvatarFallback>{auth.user?.display_name.charAt(0).toUpperCase() ?? ''}</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"]}