@flexkit/studio 0.0.17 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asset-TJGJREGN.js +2 -0
- package/dist/{asset-GMXBEENP.js.map → asset-TJGJREGN.js.map} +1 -1
- package/dist/astro.js +1 -1
- package/dist/chunk-665E4UDZ.js +2 -0
- package/dist/chunk-665E4UDZ.js.map +1 -0
- package/dist/chunk-6TSWBOSZ.js +2 -0
- package/dist/{chunk-5MTVN77Y.js.map → chunk-6TSWBOSZ.js.map} +1 -1
- package/dist/chunk-7TF7ZVID.js +2 -0
- package/dist/chunk-7TF7ZVID.js.map +1 -0
- package/dist/chunk-EELTSHST.js +2 -0
- package/dist/chunk-EELTSHST.js.map +1 -0
- package/dist/{chunk-QOSBN65B.js → chunk-NZI5JL7Y.js} +26 -1
- package/dist/chunk-R4MPNNRN.js +2 -0
- package/dist/chunk-R4MPNNRN.js.map +1 -0
- package/dist/chunk-TMK5LKFR.js +3 -0
- package/dist/chunk-TMK5LKFR.js.map +1 -0
- package/dist/chunk-WIUPQHZ5.js +2 -0
- package/dist/chunk-WIUPQHZ5.js.map +1 -0
- package/dist/index.css +78 -14
- package/dist/index.d.ts +13 -5
- package/dist/index.js +191 -145
- package/dist/index.js.map +1 -1
- package/dist/nextjs.js +1 -1
- package/dist/project-selector-FWU4PAAK.js +2 -0
- package/dist/project-selector-FWU4PAAK.js.map +1 -0
- package/dist/search-IM4OTYLW.js +2 -0
- package/dist/{search-JJI6BIRU.js.map → search-IM4OTYLW.js.map} +1 -1
- package/dist/tanstack-start.js +1 -1
- package/dist/{types.d-D7S0yibv.d.ts → types.d-DLhjvcTC.d.ts} +13 -5
- package/dist/ui.d.ts +2 -2
- package/dist/ui.js +1 -1
- package/dist/user-nav-UHNUTEUZ.js +2 -0
- package/dist/{user-nav-7U3KULA6.js.map → user-nav-UHNUTEUZ.js.map} +1 -1
- package/package.json +5 -5
- package/dist/asset-GMXBEENP.js +0 -2
- package/dist/chunk-5MTVN77Y.js +0 -2
- package/dist/chunk-7DMOGZE6.js +0 -2
- package/dist/chunk-7DMOGZE6.js.map +0 -1
- package/dist/chunk-7YBJLUUE.js +0 -3
- package/dist/chunk-7YBJLUUE.js.map +0 -1
- package/dist/chunk-WA4EGOM4.js +0 -2
- package/dist/chunk-WA4EGOM4.js.map +0 -1
- package/dist/chunk-WB6HSMJT.js +0 -2
- package/dist/chunk-WB6HSMJT.js.map +0 -1
- package/dist/project-selector-4G4WL2XQ.js +0 -2
- package/dist/project-selector-4G4WL2XQ.js.map +0 -1
- package/dist/search-JJI6BIRU.js +0 -2
- package/dist/user-nav-7U3KULA6.js +0 -2
package/dist/nextjs.js
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {a,d,c,g,i}from'./chunk-2RBOTHKE.js';import {b}from'./chunk-WIUPQHZ5.js';import'./chunk-AXB7FQV2.js';import {useState}from'react';import {useNavigate}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';function V({projectId:s,projects:t}){let[r,S]=useState(t.find(e=>e.projectId===s)??t[0]),d$1=useNavigate();return jsxs(a,{defaultValue:r.projectId,onValueChange:e=>{let c=t.find(u=>u.projectId===e)??t[0],{basePath:f}=c;S(c),d$1(b(f,c.projectId));},children:[jsx(d,{className:"fk-w-[12rem] fk-h-9 fk-py-1",id:"project",children:jsx(c,{"aria-label":r.title,children:r.title})}),jsx(g,{children:t.map(e=>jsx(i,{value:e.projectId,children:e.title},e.projectId))})]})}export{V as ProjectSelector};//# sourceMappingURL=project-selector-FWU4PAAK.js.map
|
|
2
|
+
//# sourceMappingURL=project-selector-FWU4PAAK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/components/project-selector.tsx"],"names":["ProjectSelector","projectId","projects","selectedProject","setSelectedProject","useState","project","navigate","useNavigate","jsxs","Select","id","currentProject","basePath","joinBasePath","jsx","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"iPAWO,SAASA,CAAAA,CAAgB,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAuB,CAC3E,GAAM,CAACC,CAAAA,CAAiBC,CAAkB,CAAA,CAAIC,QAAAA,CAC5CH,CAAAA,CAAS,KAAMI,CAAAA,EAAYA,CAAAA,CAAQ,SAAA,GAAcL,CAAS,CAAA,EAAKC,CAAAA,CAAS,CAAC,CAC3E,CAAA,CACMK,GAAAA,CAAWC,WAAAA,EAAY,CAE7B,OACEC,IAAAA,CAACC,CAAAA,CAAA,CACC,YAAA,CAAcP,CAAAA,CAAgB,SAAA,CAC9B,aAAA,CAAgBQ,CAAAA,EAAO,CACrB,IAAMC,CAAAA,CAAiBV,CAAAA,CAAS,IAAA,CAAMI,CAAAA,EAAYA,CAAAA,CAAQ,SAAA,GAAcK,CAAE,GAAKT,CAAAA,CAAS,CAAC,CAAA,CACnF,CAAE,QAAA,CAAAW,CAAS,CAAA,CAAID,CAAAA,CAErBR,CAAAA,CAAmBQ,CAAc,CAAA,CACjCL,GAAAA,CAASO,CAAAA,CAAaD,CAAAA,CAAUD,CAAAA,CAAe,SAAS,CAAC,EAC3D,CAAA,CAEA,QAAA,CAAA,CAAAG,GAAAA,CAACC,CAAAA,CAAA,CAAc,SAAA,CAAU,6BAAA,CAA8B,EAAA,CAAG,SAAA,CACxD,QAAA,CAAAD,GAAAA,CAACE,CAAAA,CAAA,CAAY,YAAA,CAAYd,CAAAA,CAAgB,KAAA,CAAQ,QAAA,CAAAA,CAAAA,CAAgB,KAAA,CAAM,CAAA,CACzE,CAAA,CACAY,GAAAA,CAACG,CAAAA,CAAA,CACE,QAAA,CAAAhB,CAAAA,CAAS,GAAA,CAAKI,CAAAA,EACbS,GAAAA,CAACI,CAAAA,CAAA,CAAmC,KAAA,CAAOb,CAAAA,CAAQ,SAAA,CAChD,QAAA,CAAAA,CAAAA,CAAQ,KAAA,CAAA,CADMA,CAAAA,CAAQ,SAEzB,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAEJ","file":"project-selector-FWU4PAAK.js","sourcesContent":["import { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { joinBasePath } from '../../core/base-path';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../primitives/select';\nimport type { ProjectOptions } from '../../core/config/types';\n\ntype Props = {\n projectId: string;\n projects: ProjectOptions[];\n};\n\nexport function ProjectSelector({ projectId, projects }: Props): JSX.Element {\n const [selectedProject, setSelectedProject] = useState(\n projects.find((project) => project.projectId === projectId) ?? projects[0]\n );\n const navigate = useNavigate();\n\n return (\n <Select\n defaultValue={selectedProject.projectId}\n onValueChange={(id) => {\n const currentProject = projects.find((project) => project.projectId === id) ?? projects[0];\n const { basePath } = currentProject;\n\n setSelectedProject(currentProject);\n navigate(joinBasePath(basePath, currentProject.projectId));\n }}\n >\n <SelectTrigger className=\"fk-w-[12rem] fk-h-9 fk-py-1\" id=\"project\">\n <SelectValue aria-label={selectedProject.title}>{selectedProject.title}</SelectValue>\n </SelectTrigger>\n <SelectContent>\n {projects.map((project) => (\n <SelectItem key={project.projectId} value={project.projectId}>\n {project.title}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {e}from'./chunk-7TF7ZVID.js';import {m,v,q,p,r,t,b}from'./chunk-ZOBZU47M.js';import'./chunk-EELTSHST.js';import'./chunk-TMK5LKFR.js';import'./chunk-WIUPQHZ5.js';import {a}from'./chunk-AXB7FQV2.js';import {useState,useMemo,useRef}from'react';import {LoaderCircle,Search,X}from'lucide-react';import {Command}from'cmdk';import {useNavigate}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';var z=f=>({searchRequests:{searches:f.filter(a=>a.attributes.some(i=>i.isSearchable)).map(a=>a.plural).map(a=>({collection:a}))},commonParams:{q:""}});function Y({onSelect:f,searchPlaceholder:k="Search...",noResultsMsg:a$1="Nothing found",className:i,onSearchChange:u,projectId:P,schema:d}){let[I,o]=useState(false),[p$1,h]=useState(""),l=useMemo(()=>z(d),[d]),[R,g]=useState(l),r$1=useRef(null),{results:y,isLoading:E}=e(P,R),L=useNavigate();function B(e){h(e),e.length>0&&(o(true),g({...l,commonParams:{q:e}})),e.length===0&&o(false),u&&u(e);}function _(){h(""),o(false),g(l),r$1.current&&(r$1.current.value="");let e=new URL(window.location.href);e.searchParams.has("id")&&(e.searchParams.delete("id"),L(e.pathname+e.search));}return jsxs(m,{className:"fk-relative fk-overflow-visible fk-h-auto",onBlur:()=>{setTimeout(()=>{o(false);},300);},onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),o(false));},shouldFilter:false,children:[jsxs("div",{className:a("fk-flex fk-items-center fk-border fk-border-border fk-rounded-md fk-px-3 fk-h-9 md:fk-w-[100px] lg:fk-w-[300px] fk-ring-offset-background","focus-within:fk-outline-none focus-within:fk-ring-2 focus-within:fk-ring-ring focus-within:fk-ring-offset-2"),children:[E?jsx(LoaderCircle,{className:"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50 fk-animate-spin"}):jsx(Search,{className:"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50"}),jsx(Command.Input,{className:a("fk-flex fk-h-9 fk-w-full fk-rounded-md fk-bg-transparent fk-py-1 fk-text-sm fk-outline-none placeholder:fk-text-muted-foreground disabled:fk-cursor-not-allowed disabled:fk-opacity-50",i),placeholder:k,onMouseDown:()=>{(r$1.current?.value.length??0)>0&&o(true);},onValueChange:B,ref:r$1,value:p$1}),p$1&&jsx("button",{className:"fk-flex fk-items-center fk-justify-center fk-ml-2 fk-text-muted-foreground hover:fk-text-foreground",onClick:_,type:"button",children:jsx(X,{className:"fk-h-4 fk-w-4"})})]}),jsx("div",{className:"fk-relative fk-max-w-[600px]",children:jsx("div",{className:a("fk-mt-1 fk-animate-in fk-fade-in-0 fk-zoom-in-95 fk-absolute fk-top-0 fk-z-10 fk-w-full fk-rounded-md fk-bg-popover fk-outline-none fk-drop-shadow-md fk-border fk-border-border",I?"fk-block":"fk-hidden"),children:jsxs(v,{className:"fk-max-h-[220px] fk-overflow-auto",children:[jsx(q,{children:a$1}),jsx(p,{children:jsxs(r,{children:[y.length>0&&jsx(t,{className:"fk-hidden",value:"-"}),y.map(e=>jsxs(t,{className:"fk-flex",value:e._id,onSelect:M=>{f({entityName:e._entityName,entityNamePlural:e._entityNamePlural,entityId:M});},children:[jsx("span",{className:"fk-basis-full",children:e[Object.keys(e)[3]]}),jsx(b,{className:"fk-py-px fk-text-[0.6875rem] fk-leading-3 fk-bg-teal-400",children:e._entityName})]},e._id))]})})]})})})]})}export{Y as Search};//# sourceMappingURL=search-IM4OTYLW.js.map
|
|
2
|
+
//# sourceMappingURL=search-IM4OTYLW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/components/search.tsx"],"names":["getBaseSearchRequest","schema","entity","attr","collection","Search","onSelect","searchPlaceholder","noResultsMsg","className","onSearchChange","projectId","isOpen","setIsOpen","useState","inputValue","setInputValue","searchRequest","useMemo","searchQuery","setSearchQuery","inputRef","useRef","results","isLoading","useSearch","navigate","useNavigate","handleOnSearchChange","q","handleClear","url","jsxs","Command","cn","jsx","LoaderCircle","SearchIcon","CommandPrimitive","XIcon","ScrollArea","CommandEmpty","CommandList","CommandGroup","CommandItem","item","entityId","Badge"],"mappings":"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","file":"search-JJI6BIRU.js","sourcesContent":["'use client';\n\nimport { useRef, useState, useMemo } from 'react';\nimport { LoaderCircle, Search as SearchIcon, X as XIcon } from 'lucide-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { useNavigate } from 'react-router-dom';\nimport { useSearch } from '../../core/use-search';\nimport { cn } from '../lib/utils';\nimport { Badge } from '../primitives/badge';\nimport { Command, CommandEmpty, CommandGroup, CommandItem, CommandList } from '../primitives/command';\nimport { ScrollArea } from '../primitives/scroll-area';\nimport type { Entity, SearchRequestProps } from '../../core/types';\n\nexport type ComboBoxItemType = {\n value: string;\n label: string;\n};\n\nexport interface SearchProps {\n onSelect: ({\n entityName,\n entityNamePlural,\n entityId,\n }: {\n entityName: string;\n entityNamePlural: string;\n entityId: string;\n }) => void;\n searchPlaceholder?: string;\n noResultsMsg?: string;\n className?: string;\n onSearchChange?: (e: string) => void;\n projectId: string;\n schema: Entity[];\n}\n\nconst getBaseSearchRequest = (schema: Entity[]): SearchRequestProps => {\n const collections = schema\n .filter((entity) => entity.attributes.some((attr) => attr.isSearchable))\n .map((entity) => entity.plural);\n\n return {\n searchRequests: {\n searches: collections.map((collection) => ({\n collection,\n })),\n },\n commonParams: {\n q: '',\n },\n };\n};\n\nexport function Search({\n onSelect,\n searchPlaceholder = 'Search...',\n noResultsMsg = 'Nothing found',\n className,\n onSearchChange,\n projectId,\n schema,\n}: SearchProps): JSX.Element {\n const [isOpen, setIsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const searchRequest = useMemo(() => getBaseSearchRequest(schema), [schema]);\n const [searchQuery, setSearchQuery] = useState(searchRequest);\n const inputRef = useRef<HTMLInputElement>(null);\n const { results, isLoading } = useSearch(projectId, searchQuery);\n const navigate = useNavigate();\n\n function handleOnSearchChange(q: string): void {\n setInputValue(q);\n // TODO: Add debounce\n if (q.length > 0) {\n setIsOpen(true);\n setSearchQuery({ ...searchRequest, commonParams: { q } });\n }\n\n if (q.length === 0) setIsOpen(false);\n\n if (onSearchChange) {\n onSearchChange(q);\n }\n }\n\n function handleClear(): void {\n setInputValue('');\n setIsOpen(false);\n setSearchQuery(searchRequest);\n\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n\n // Remove id from URL if present\n const url = new URL(window.location.href);\n\n if (url.searchParams.has('id')) {\n url.searchParams.delete('id');\n navigate(url.pathname + url.search);\n }\n }\n\n // TODO: handle error\n\n return (\n <Command\n className=\"fk-relative fk-overflow-visible fk-h-auto\"\n onBlur={() => {\n // close after a delay to allow any click event from the results list to be handled\n setTimeout(() => {\n setIsOpen(false);\n }, 300);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setIsOpen(false);\n }\n }}\n shouldFilter={false}\n >\n <div\n className={cn(\n 'fk-flex fk-items-center fk-border fk-border-border fk-rounded-md fk-px-3 fk-h-9 md:fk-w-[100px] lg:fk-w-[300px] fk-ring-offset-background',\n 'focus-within:fk-outline-none focus-within:fk-ring-2 focus-within:fk-ring-ring focus-within:fk-ring-offset-2'\n )}\n >\n {isLoading ? (\n <LoaderCircle className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50 fk-animate-spin\" />\n ) : (\n <SearchIcon className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50\" />\n )}\n <CommandPrimitive.Input\n className={cn(\n 'fk-flex fk-h-9 fk-w-full fk-rounded-md fk-bg-transparent fk-py-1 fk-text-sm fk-outline-none placeholder:fk-text-muted-foreground disabled:fk-cursor-not-allowed disabled:fk-opacity-50',\n className\n )}\n placeholder={searchPlaceholder}\n onMouseDown={() => {\n if ((inputRef.current?.value.length ?? 0) > 0) setIsOpen(true);\n }}\n onValueChange={handleOnSearchChange}\n ref={inputRef}\n value={inputValue}\n />\n {inputValue && (\n <button\n className=\"fk-flex fk-items-center fk-justify-center fk-ml-2 fk-text-muted-foreground hover:fk-text-foreground\"\n onClick={handleClear}\n type=\"button\"\n >\n <XIcon className=\"fk-h-4 fk-w-4\" />\n </button>\n )}\n </div>\n <div className=\"fk-relative fk-max-w-[600px]\">\n <div\n className={cn(\n 'fk-mt-1 fk-animate-in fk-fade-in-0 fk-zoom-in-95 fk-absolute fk-top-0 fk-z-10 fk-w-full fk-rounded-md fk-bg-popover fk-outline-none fk-drop-shadow-md fk-border fk-border-border',\n isOpen ? 'fk-block' : 'fk-hidden'\n )}\n >\n <ScrollArea className=\"fk-max-h-[220px] fk-overflow-auto\">\n <CommandEmpty>{noResultsMsg}</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {results.length > 0 && <CommandItem className=\"fk-hidden\" value=\"-\" />}\n {results.map((item) => (\n <CommandItem\n className=\"fk-flex\"\n key={item._id}\n value={item._id}\n onSelect={(entityId) => {\n onSelect({ entityName: item._entityName, entityNamePlural: item._entityNamePlural, entityId });\n }}\n >\n <span className=\"fk-basis-full\">{item[Object.keys(item)[3]]}</span>\n <Badge className=\"fk-py-px fk-text-[0.6875rem] fk-leading-3 fk-bg-teal-400\">\n {item._entityName}\n </Badge>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </ScrollArea>\n </div>\n </div>\n </Command>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/components/search.tsx"],"names":["getBaseSearchRequest","schema","entity","attr","collection","Search","onSelect","searchPlaceholder","noResultsMsg","className","onSearchChange","projectId","isOpen","setIsOpen","useState","inputValue","setInputValue","searchRequest","useMemo","searchQuery","setSearchQuery","inputRef","useRef","results","isLoading","useSearch","navigate","useNavigate","handleOnSearchChange","q","handleClear","url","jsxs","Command","cn","jsx","LoaderCircle","SearchIcon","CommandPrimitive","XIcon","ScrollArea","CommandEmpty","CommandList","CommandGroup","CommandItem","item","entityId","Badge"],"mappings":"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","file":"search-IM4OTYLW.js","sourcesContent":["'use client';\n\nimport { useRef, useState, useMemo } from 'react';\nimport { LoaderCircle, Search as SearchIcon, X as XIcon } from 'lucide-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { useNavigate } from 'react-router-dom';\nimport { useSearch } from '../../core/use-search';\nimport { cn } from '../lib/utils';\nimport { Badge } from '../primitives/badge';\nimport { Command, CommandEmpty, CommandGroup, CommandItem, CommandList } from '../primitives/command';\nimport { ScrollArea } from '../primitives/scroll-area';\nimport type { Entity, SearchRequestProps } from '../../core/types';\n\nexport type ComboBoxItemType = {\n value: string;\n label: string;\n};\n\nexport interface SearchProps {\n onSelect: ({\n entityName,\n entityNamePlural,\n entityId,\n }: {\n entityName: string;\n entityNamePlural: string;\n entityId: string;\n }) => void;\n searchPlaceholder?: string;\n noResultsMsg?: string;\n className?: string;\n onSearchChange?: (e: string) => void;\n projectId: string;\n schema: Entity[];\n}\n\nconst getBaseSearchRequest = (schema: Entity[]): SearchRequestProps => {\n const collections = schema\n .filter((entity) => entity.attributes.some((attr) => attr.isSearchable))\n .map((entity) => entity.plural);\n\n return {\n searchRequests: {\n searches: collections.map((collection) => ({\n collection,\n })),\n },\n commonParams: {\n q: '',\n },\n };\n};\n\nexport function Search({\n onSelect,\n searchPlaceholder = 'Search...',\n noResultsMsg = 'Nothing found',\n className,\n onSearchChange,\n projectId,\n schema,\n}: SearchProps): JSX.Element {\n const [isOpen, setIsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const searchRequest = useMemo(() => getBaseSearchRequest(schema), [schema]);\n const [searchQuery, setSearchQuery] = useState(searchRequest);\n const inputRef = useRef<HTMLInputElement>(null);\n const { results, isLoading } = useSearch(projectId, searchQuery);\n const navigate = useNavigate();\n\n function handleOnSearchChange(q: string): void {\n setInputValue(q);\n // TODO: Add debounce\n if (q.length > 0) {\n setIsOpen(true);\n setSearchQuery({ ...searchRequest, commonParams: { q } });\n }\n\n if (q.length === 0) setIsOpen(false);\n\n if (onSearchChange) {\n onSearchChange(q);\n }\n }\n\n function handleClear(): void {\n setInputValue('');\n setIsOpen(false);\n setSearchQuery(searchRequest);\n\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n\n // Remove id from URL if present\n const url = new URL(window.location.href);\n\n if (url.searchParams.has('id')) {\n url.searchParams.delete('id');\n navigate(url.pathname + url.search);\n }\n }\n\n // TODO: handle error\n\n return (\n <Command\n className=\"fk-relative fk-overflow-visible fk-h-auto\"\n onBlur={() => {\n // close after a delay to allow any click event from the results list to be handled\n setTimeout(() => {\n setIsOpen(false);\n }, 300);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setIsOpen(false);\n }\n }}\n shouldFilter={false}\n >\n <div\n className={cn(\n 'fk-flex fk-items-center fk-border fk-border-border fk-rounded-md fk-px-3 fk-h-9 md:fk-w-[100px] lg:fk-w-[300px] fk-ring-offset-background',\n 'focus-within:fk-outline-none focus-within:fk-ring-2 focus-within:fk-ring-ring focus-within:fk-ring-offset-2'\n )}\n >\n {isLoading ? (\n <LoaderCircle className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50 fk-animate-spin\" />\n ) : (\n <SearchIcon className=\"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50\" />\n )}\n <CommandPrimitive.Input\n className={cn(\n 'fk-flex fk-h-9 fk-w-full fk-rounded-md fk-bg-transparent fk-py-1 fk-text-sm fk-outline-none placeholder:fk-text-muted-foreground disabled:fk-cursor-not-allowed disabled:fk-opacity-50',\n className\n )}\n placeholder={searchPlaceholder}\n onMouseDown={() => {\n if ((inputRef.current?.value.length ?? 0) > 0) setIsOpen(true);\n }}\n onValueChange={handleOnSearchChange}\n ref={inputRef}\n value={inputValue}\n />\n {inputValue && (\n <button\n className=\"fk-flex fk-items-center fk-justify-center fk-ml-2 fk-text-muted-foreground hover:fk-text-foreground\"\n onClick={handleClear}\n type=\"button\"\n >\n <XIcon className=\"fk-h-4 fk-w-4\" />\n </button>\n )}\n </div>\n <div className=\"fk-relative fk-max-w-[600px]\">\n <div\n className={cn(\n 'fk-mt-1 fk-animate-in fk-fade-in-0 fk-zoom-in-95 fk-absolute fk-top-0 fk-z-10 fk-w-full fk-rounded-md fk-bg-popover fk-outline-none fk-drop-shadow-md fk-border fk-border-border',\n isOpen ? 'fk-block' : 'fk-hidden'\n )}\n >\n <ScrollArea className=\"fk-max-h-[220px] fk-overflow-auto\">\n <CommandEmpty>{noResultsMsg}</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {results.length > 0 && <CommandItem className=\"fk-hidden\" value=\"-\" />}\n {results.map((item) => (\n <CommandItem\n className=\"fk-flex\"\n key={item._id}\n value={item._id}\n onSelect={(entityId) => {\n onSelect({ entityName: item._entityName, entityNamePlural: item._entityNamePlural, entityId });\n }}\n >\n <span className=\"fk-basis-full\">{item[Object.keys(item)[3]]}</span>\n <Badge className=\"fk-py-px fk-text-[0.6875rem] fk-leading-3 fk-bg-teal-400\">\n {item._entityName}\n </Badge>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </ScrollArea>\n </div>\n </div>\n </Command>\n );\n}\n"]}
|
package/dist/tanstack-start.js
CHANGED
|
@@ -16,7 +16,7 @@ type EntityData = {
|
|
|
16
16
|
};
|
|
17
17
|
type MappedEntityItem = {
|
|
18
18
|
_id: string;
|
|
19
|
-
[attributeName: string]: string;
|
|
19
|
+
[attributeName: string]: string | OrderedAssetValue[];
|
|
20
20
|
};
|
|
21
21
|
type ImageValue = {
|
|
22
22
|
_id: string;
|
|
@@ -28,6 +28,9 @@ type ImageValue = {
|
|
|
28
28
|
width: number;
|
|
29
29
|
height: number;
|
|
30
30
|
};
|
|
31
|
+
type OrderedAssetValue = ImageValue & {
|
|
32
|
+
sortOrder?: number;
|
|
33
|
+
};
|
|
31
34
|
type FormEntityItem = {
|
|
32
35
|
[attributeName: string]: FormFieldValue;
|
|
33
36
|
};
|
|
@@ -47,16 +50,17 @@ type FormFieldValue = {
|
|
|
47
50
|
disconnect?: string[];
|
|
48
51
|
};
|
|
49
52
|
scope: string;
|
|
50
|
-
value: string | MappedEntityItem | EntityItem | AttributeValue | ImageValue | undefined | null;
|
|
53
|
+
value: string | MappedEntityItem | MappedEntityItem[] | EntityItem | EntityItem[] | AttributeValue | AttributeValue[] | ImageValue | OrderedAssetValue[] | undefined | null;
|
|
51
54
|
};
|
|
52
55
|
|
|
53
56
|
type SingleRelationshipConnection = {
|
|
54
57
|
_id: string;
|
|
55
|
-
value: string | MappedEntityItem | EntityItem | AttributeValue | ImageValue | undefined | null;
|
|
58
|
+
value: string | MappedEntityItem | MappedEntityItem[] | EntityItem | EntityItem[] | AttributeValue | AttributeValue[] | ImageValue | OrderedAssetValue[] | undefined | null;
|
|
56
59
|
};
|
|
57
60
|
type MultipleRelationshipConnection = {
|
|
58
61
|
_id: string;
|
|
59
|
-
|
|
62
|
+
sortOrder?: number;
|
|
63
|
+
value: string | MappedEntityItem | MappedEntityItem[] | EntityItem | EntityItem[] | AttributeValue | AttributeValue[] | ImageValue | OrderedAssetValue[] | undefined | null;
|
|
60
64
|
}[];
|
|
61
65
|
type Relationships = {
|
|
62
66
|
[relationshipId: string]: {
|
|
@@ -110,6 +114,9 @@ type SelectOptions = CommonOptions & {
|
|
|
110
114
|
type AssetOptions = CommonOptions & {
|
|
111
115
|
accept?: string;
|
|
112
116
|
};
|
|
117
|
+
type RelationshipOptions = CommonOptions & {
|
|
118
|
+
accept?: string;
|
|
119
|
+
};
|
|
113
120
|
type DateTimeOptions = CommonOptions & {
|
|
114
121
|
format?: string;
|
|
115
122
|
};
|
|
@@ -122,6 +129,7 @@ type AttributeOptions = {
|
|
|
122
129
|
asset: AssetOptions;
|
|
123
130
|
datetime: DateTimeOptions;
|
|
124
131
|
number: NumberOptions;
|
|
132
|
+
relationship: RelationshipOptions;
|
|
125
133
|
text: CommonOptions;
|
|
126
134
|
textarea: CommonOptions;
|
|
127
135
|
switch: CommonOptions;
|
|
@@ -291,4 +299,4 @@ type SingleProject = Omit<ProjectOptions, 'basePath'> & {
|
|
|
291
299
|
|
|
292
300
|
type Config = SingleProject | ProjectOptions[];
|
|
293
301
|
|
|
294
|
-
export type { AppContextType as A, Config as C, DataType as D, Entity as E, FormEntityItem as F, ImageValue as I, LogoProps as L, MappedEntityItem as M, PluginOptions as P, SingleProject as S, UseEntityQueryParams as U, ActionSetRelationship as a, ActionSetScope as b, AppOptions as c, ProjectOptions as d, SearchRequestProps as e, SearchResultItem as f, Schema as g, EntityData as h, AttributeValue as i, Attribute as j, MultipleRelationshipConnection as k,
|
|
302
|
+
export type { AppContextType as A, Config as C, DataType as D, Entity as E, FormEntityItem as F, ImageValue as I, LogoProps as L, MappedEntityItem as M, OrderedAssetValue as O, PluginOptions as P, SingleProject as S, UseEntityQueryParams as U, ActionSetRelationship as a, ActionSetScope as b, AppOptions as c, ProjectOptions as d, SearchRequestProps as e, SearchResultItem as f, Schema as g, EntityData as h, AttributeValue as i, Attribute as j, MultipleRelationshipConnection as k, SingleRelationshipConnection as l, FormFieldParams as m, FormFieldProps as n, FormFieldValue as o, ScopeType as p };
|
package/dist/ui.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { ImperativePanelHandle } from 'react-resizable-panels';
|
|
|
13
13
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
14
14
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
15
15
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
16
|
-
import { S as SingleProject } from './types.d-
|
|
16
|
+
import { S as SingleProject } from './types.d-DLhjvcTC.js';
|
|
17
17
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
18
18
|
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
19
19
|
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
@@ -34,7 +34,7 @@ declare function Badge({ className, variant, ...props }: BadgeProps): JSX.Elemen
|
|
|
34
34
|
|
|
35
35
|
declare const buttonVariants: (props?: ({
|
|
36
36
|
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
37
|
-
size?: "
|
|
37
|
+
size?: "icon" | "default" | "sm" | "lg" | null | undefined;
|
|
38
38
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
39
39
|
interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
40
40
|
asChild?: boolean;
|
package/dist/ui.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {e}from'./chunk-5MTVN77Y.js';export{e as Separator,f as Table,h as TableBody,m as TableCaption,l as TableCell,i as TableFooter,k as TableHead,g as TableHeader,j as TableRow,b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-5MTVN77Y.js';import {a as a$2}from'./chunk-OX6FVDUT.js';export{a as Input}from'./chunk-OX6FVDUT.js';import {a as a$1,b as b$1,c,e as e$1}from'./chunk-RMSYYUQM.js';export{b as Tooltip,e as TooltipContent,d as TooltipPortal,a as TooltipProvider,c as TooltipTrigger}from'./chunk-RMSYYUQM.js';export{a as Select,g as SelectContent,b as SelectGroup,i as SelectItem,h as SelectLabel,f as SelectScrollDownButton,e as SelectScrollUpButton,j as SelectSeparator,d as SelectTrigger,c as SelectValue}from'./chunk-2RBOTHKE.js';export{b as Badge,m as Command,n as CommandDialog,q as CommandEmpty,r as CommandGroup,o as CommandInput,t as CommandItem,p as CommandList,s as CommandSeparator,u as CommandShortcut,c as Dialog,f as DialogClose,h as DialogContent,l as DialogDescription,j as DialogFooter,i as DialogHeader,g as DialogOverlay,e as DialogPortal,k as DialogTitle,d as DialogTrigger,v as ScrollArea,w as ScrollBar,a as badgeVariants}from'./chunk-ZOBZU47M.js';export{a as Avatar,c as AvatarFallback,b as AvatarImage}from'./chunk-K5CEPNVI.js';import {b,r as r$1}from'./chunk-64KAF6GA.js';export{b as Button,c as DropdownMenu,m as DropdownMenuCheckboxItem,k as DropdownMenuContent,e as DropdownMenuGroup,l as DropdownMenuItem,o as DropdownMenuLabel,f as DropdownMenuPortal,h as DropdownMenuRadioGroup,n as DropdownMenuRadioItem,p as DropdownMenuSeparator,q as DropdownMenuShortcut,g as DropdownMenuSub,j as DropdownMenuSubContent,i as DropdownMenuSubTrigger,d as DropdownMenuTrigger,r as Skeleton,a as buttonVariants}from'./chunk-64KAF6GA.js';export{b as Form,g as FormControl,h as FormDescription,c as FormField,e as FormItem,f as FormLabel,i as FormMessage,a as Label,d as useFormField}from'./chunk-SPWSXOXS.js';import {a}from'./chunk-AXB7FQV2.js';import*as G from'lucide-react';import {X,Menu,PanelLeft,GripVertical}from'lucide-react';import*as S from'react-resizable-panels';import {jsx,jsxs}from'react/jsx-runtime';import*as r from'react';import {createElement}from'react';import*as l from'@radix-ui/react-dialog';import {cva}from'class-variance-authority';import ha from'fuse.js';import {NavLink}from'react-router-dom';import {Slot}from'@radix-ui/react-slot';import {groupBy}from'ramda';import*as k from'@radix-ui/react-tabs';function Wt({className:t,...e}){return jsx(S.PanelGroup,{className:a("fk-flex fk-h-full fk-w-full data-[panel-group-direction=vertical]:fk-flex-col",t),...e})}var $t=S.Panel;function jt({withHandle:t,className:e,...a$1}){return jsx(S.PanelResizeHandle,{className:a("fk-relative fk-flex fk-w-px fk-items-center fk-justify-center fk-bg-border after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-1 after:fk--translate-x-1/2 focus-visible:fk-outline-none focus-visible:fk-ring-1 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-1 data-[panel-group-direction=vertical]:fk-h-px data-[panel-group-direction=vertical]:fk-w-full data-[panel-group-direction=vertical]:after:fk-left-0 data-[panel-group-direction=vertical]:after:fk-h-1 data-[panel-group-direction=vertical]:after:fk-w-full data-[panel-group-direction=vertical]:after:fk--translate-y-1/2 data-[panel-group-direction=vertical]:after:fk-translate-x-0 [&[data-panel-group-direction=vertical]>div]:fk-rotate-90",e),...a$1,children:!!t&&jsx("div",{className:"fk-z-10 fk-flex fk-h-4 fk-w-3 fk-items-center fk-justify-center fk-rounded-sm fk-border fk-bg-border",children:jsx(GripVertical,{className:"fk-h-2.5 fk-w-2.5"})})})}var U=l.Root,Jt=l.Trigger,Ut=l.Close,re=l.Portal,q=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Overlay,{className:a("fk-fixed fk-inset-0 fk-z-50 fk-bg-overlay/75 fk-backdrop-blur-[1px] data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0",t),...e,ref:a$1}));q.displayName=l.Overlay.displayName;var qt=cva("fk-fixed fk-z-50 fk-gap-4 fk-bg-background fk-p-6 fk-shadow-lg fk-transition fk-ease-in-out data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-duration-300 data-[state=open]:fk-duration-500",{variants:{side:{top:"fk-inset-x-0 fk-top-0 fk-border-b data-[state=closed]:fk-slide-out-to-top data-[state=open]:fk-slide-in-from-top",bottom:"fk-inset-x-0 fk-bottom-0 fk-border-t data-[state=closed]:fk-slide-out-to-bottom data-[state=open]:fk-slide-in-from-bottom",left:"fk-inset-y-0 fk-left-0 fk-h-full fk-w-3/4 fk-border-r fk-border-r-sidebar-border data-[state=closed]:fk-slide-out-to-left data-[state=open]:fk-slide-in-from-left sm:fk-max-w-sm",right:"fk-inset-y-0 fk-right-0 fk-h-full fk-w-3/4 fk- fk-border-l data-[state=closed]:fk-slide-out-to-right data-[state=open]:fk-slide-in-from-right sm:fk-max-w-sm"}},defaultVariants:{side:"right"}}),D=r.forwardRef(({side:t="right",className:e,children:a$1,...f},s)=>jsxs(re,{children:[jsx(q,{}),jsxs(l.Content,{className:a(qt({side:t}),e),ref:s,...f,children:[a$1,jsxs(l.Close,{className:"fk-absolute fk-right-4 fk-top-4 fk-rounded-sm fk-opacity-70 fk-ring-offset-background fk-transition-opacity hover:fk-opacity-100 focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-pointer-events-none data-[state=open]:fk-bg-secondary",children:[jsx(X,{className:"fk-h-4 fk-w-4"}),jsx("span",{className:"fk-sr-only",children:"Close"})]})]})]}));D.displayName=l.Content.displayName;function ie({className:t,...e}){return jsx("div",{className:a("fk-flex fk-flex-col fk-space-y-2 fk-text-center sm:fk-text-left",t),...e})}ie.displayName="SheetHeader";function ne({className:t,...e}){return jsx("div",{className:a("fk-flex fk-flex-col-reverse sm:fk-flex-row sm:fk-justify-end sm:fk-space-x-2",t),...e})}ne.displayName="SheetFooter";var fe=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Title,{className:a("fk-text-lg fk-font-semibold fk-text-foreground",t),ref:a$1,...e}));fe.displayName=l.Title.displayName;var se=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Description,{className:a("fk-text-sm fk-text-muted-foreground",t),ref:a$1,...e}));se.displayName=l.Description.displayName;var Y=768;function le(){let[t,e]=r.useState(void 0);return r.useEffect(()=>{let a=window.matchMedia(`(max-width: ${Y-1}px)`),f=()=>{e(window.innerWidth<Y);};return a.addEventListener("change",f),e(window.innerWidth<Y),()=>a.removeEventListener("change",f)},[]),!!t}var ea="flexkit:sidebar:state",ta=3600*24*7,aa="16rem",oa="18rem",ra="2rem",ia="b",de=r.createContext(null);function y(){let t=r.useContext(de);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}var ce=r.forwardRef(({defaultOpen:t=true,open:e,onOpenChange:a$2,className:f,style:s,children:c,...n},d)=>{let u=le(),[h,b]=r.useState(false),[C,Se]=r.useState(t),R=e??C,T=r.useCallback(m=>{let g=typeof m=="function"?m(R):m;a$2?a$2(g):Se(g),document.cookie=`${ea}=${g}; path=/; max-age=${ta}`;},[a$2,R]),M=r.useCallback(()=>u?b(m=>!m):T(m=>!m),[u,T,b]);r.useEffect(()=>{let m=g=>{g.key===ia&&(g.metaKey||g.ctrlKey)&&(g.preventDefault(),M());};return window.addEventListener("keydown",m),()=>window.removeEventListener("keydown",m)},[M]);let oe=R?"expanded":"collapsed",Re=r.useMemo(()=>({state:oe,open:R,setOpen:T,isMobile:u,openMobile:h,setOpenMobile:b,toggleSidebar:M}),[oe,R,T,u,h,b,M]);return jsx(de.Provider,{value:Re,children:jsx(a$1,{delayDuration:0,children:jsx("div",{style:{"--sidebar-width":aa,"--sidebar-width-icon":ra,...s},className:a("fk-group/sidebar-wrapper fk-flex fk-w-full has-[[data-variant=inset]]:fk-bg-sidebar fk-overflow-hidden",f),ref:d,...n,children:c})})})});ce.displayName="SidebarProvider";var Z=r.forwardRef(({side:t="left",variant:e="sidebar",collapsible:a$1="offcanvas",className:f,children:s,...c},n)=>{let{isMobile:d,state:u,openMobile:h,setOpenMobile:b}=y();return a$1==="none"?jsx("div",{className:a("fk-flex fk-h-full fk-w-[--sidebar-width] fk-flex-col fk-bg-sidebar fk-text-sidebar-foreground",f),ref:n,...c,children:s}):d?jsx(U,{open:h,onOpenChange:b,...c,children:jsx(D,{"data-sidebar":"sidebar","data-mobile":"true",className:"fk-w-[--sidebar-width] fk-bg-sidebar fk-p-0 fk-text-sidebar-foreground [&>button]:fk-hidden",style:{"--sidebar-width":oa},side:t,children:jsx("div",{className:"fk-flex fk-h-full fk-w-full fk-flex-col",children:s})})}):jsxs("div",{ref:n,className:"fk-relative fk-group fk-peer fk-hidden md:fk-block fk-text-sidebar-foreground","data-state":u,"data-collapsible":u==="collapsed"?a$1:"","data-variant":e,"data-side":t,children:[jsx("div",{className:a("fk-duration-200 fk-relative fk-h-svh fk-w-[--sidebar-width] fk-bg-transparent fk-transition-[width] fk-ease-linear","group-data-[collapsible=offcanvas]:fk-w-0","group-data-[side=right]:fk-rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon]")}),jsx("div",{className:a("fk-duration-200 fk-absolute fk-inset-y-0 fk-z-10 fk-hidden fk-h-[calc(100svh-3.5rem)] fk-w-[--sidebar-width] fk-transition-[left,right,width] fk-ease-linear md:fk-flex",t==="left"?"fk-left-0 group-data-[collapsible=offcanvas]:fk-left-[calc(var(--sidebar-width)*-1)]":"fk-right-0 group-data-[collapsible=offcanvas]:fk-right-[calc(var(--sidebar-width)*-1)]",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l":"group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l",f),...c,children:jsx("div",{"data-sidebar":"sidebar",className:"fk-flex fk-h-full fk-w-full fk-flex-col fk-bg-sidebar group-data-[variant=floating]:fk-rounded-lg group-data-[variant=floating]:fk-border group-data-[variant=floating]:fk-border-sidebar-border group-data-[variant=floating]:fk-shadow",children:s})})]})});Z.displayName="Sidebar";var pe=r.forwardRef(({className:t,onClick:e,...a$1},f)=>{let{isMobile:s,toggleSidebar:c}=y();return jsxs(b,{ref:f,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:a("fk-h-7 fk-w-7",t),onClick:n=>{e?.(n),c();},...a$1,children:[s?jsx(Menu,{}):jsx(PanelLeft,{}),jsx("span",{className:"fk-sr-only",children:"Toggle Sidebar"})]})});pe.displayName="SidebarTrigger";var Q=r.forwardRef(({className:t,...e},a$1)=>{let{toggleSidebar:f}=y();return jsx("button",{ref:a$1,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:f,title:"Toggle Sidebar",className:a("fk-absolute fk-inset-y-0 fk-z-20 fk-hidden fk-w-4 fk--translate-x-1/2 fk-transition-all fk-ease-linear after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-[2px] after:fk-bg-sidebar-border hover:after:fk-bg-muted-foreground group-data-[side=left]:fk--right-4 group-data-[side=right]:fk-left-0 sm:fk-flex","[[data-side=left]_&]:fk-cursor-w-resize [[data-side=right]_&]:fk-cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:fk-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:fk-cursor-w-resize","group-data-[collapsible=offcanvas]:fk-translate-x-0 group-data-[collapsible=offcanvas]:after:fk-left-full group-data-[collapsible=offcanvas]:hover:fk-bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:fk--right-2","[[data-side=right][data-collapsible=offcanvas]_&]:fk--left-2",t),...e})});Q.displayName="SidebarRail";var ke=r.forwardRef(({className:t,...e},a$1)=>jsx("main",{ref:a$1,className:a("fk-relative fk-flex fk-flex-1 fk-flex-col fk-bg-background fk-overflow-hidden","peer-data-[variant=inset]:fk-h-[calc(100svh-4rem)]",t),...e}));ke.displayName="SidebarInset";var na=r.forwardRef(({className:t,...e},a$1)=>jsx(a$2,{ref:a$1,"data-sidebar":"input",className:a("fk-h-8 fk-w-full fk-bg-background fk-shadow-none focus-visible:fk-ring-2 focus-visible:fk-ring-sidebar-ring",t),...e}));na.displayName="SidebarInput";var fa=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"header",className:a("fk-flex fk-flex-col fk-gap-2 fk-p-2",t),...e}));fa.displayName="SidebarHeader";var sa=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"footer",className:a("fk-flex fk-flex-col fk-gap-2 fk-p-2",t),...e}));sa.displayName="SidebarFooter";var la=r.forwardRef(({className:t,...e$1},a$1)=>jsx(e,{ref:a$1,"data-sidebar":"separator",className:a("fk-mx-2 fk-w-auto fk-bg-sidebar-border",t),...e$1}));la.displayName="SidebarSeparator";var ee=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"content",className:a("fk-flex fk-min-h-0 fk-flex-1 fk-flex-col fk-overflow-auto group-data-[collapsible=icon]:fk-overflow-hidden",t),...e}));ee.displayName="SidebarContent";var L=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"group",className:a("fk-relative fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-p-2",t),...e}));L.displayName="SidebarGroup";var te=r.forwardRef(({className:t,asChild:e=false,...a$1},f)=>jsx(e?Slot:"div",{ref:f,"data-sidebar":"group-label",className:a("fk-duration-200 fk-flex fk-h-8 fk-shrink-0 fk-items-center fk-rounded-md fk-px-2 fk-text-xs fk-font-medium fk-text-sidebar-foreground/70 fk-outline-none fk-ring-sidebar-ring fk-transition-[margin,opa] fk-ease-linear focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","group-data-[collapsible=icon]:fk--mt-8 group-data-[collapsible=icon]:fk-opacity-0",t),...a$1}));te.displayName="SidebarGroupLabel";var da=r.forwardRef(({className:t,asChild:e=false,...a$1},f)=>jsx(e?Slot:"button",{ref:f,"data-sidebar":"group-action",className:a("fk-absolute fk-right-3 fk-top-3.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","after:fk-absolute after:fk--inset-2 after:md:fk-hidden","group-data-[collapsible=icon]:fk-hidden",t),...a$1}));da.displayName="SidebarGroupAction";var ca=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"group-content",className:a("fk-w-full fk-text-sm",t),...e}));ca.displayName="SidebarGroupContent";var H=r.forwardRef(({className:t,...e},a$1)=>jsx("ul",{ref:a$1,"data-sidebar":"menu",className:a("fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-gap-1 fk-z-10",t),...e}));H.displayName="SidebarMenu";var z=r.forwardRef(({className:t,...e},a$1)=>jsx("li",{ref:a$1,"data-sidebar":"menu-item",className:a("fk-group/menu-item fk-relative",t),...e}));z.displayName="SidebarMenuItem";var pa=cva("peer/menu-button fk-flex fk-w-full fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-p-2 fk-text-left fk-text-sm fk-outline-none fk-ring-sidebar-ring fk-transition-[width,height,padding] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:fk-pr-8 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-font-medium data-[active=true]:fk-text-sidebar-accent-foreground data-[state=open]:hover:fk-bg-sidebar-accent data-[state=open]:hover:fk-text-sidebar-accent-foreground group-data-[collapsible=icon]:fk-!size-8 group-data-[collapsible=icon]:fk-!p-2 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0",{variants:{variant:{default:"hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground",outline:"fk-bg-background fk-shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground hover:fk-shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"fk-h-8 fk-text-sm",sm:"fk-h-7 fk-text-xs",lg:"fk-h-12 fk-text-sm group-data-[collapsible=icon]:fk-!p-0"}},defaultVariants:{variant:"default",size:"default"}}),B=r.forwardRef(({asChild:t=false,isActive:e=false,variant:a$1="default",size:f="default",tooltip:s,className:c$1,...n},d)=>{let u=t?Slot:"button",{isMobile:h,state:b}=y(),C=jsx(u,{ref:d,"data-sidebar":"menu-button","data-size":f,"data-active":e,className:a(pa({variant:a$1,size:f}),c$1),...n});return s?(typeof s=="string"&&(s={children:s}),jsxs(b$1,{children:[jsx(c,{asChild:true,children:C}),jsx(e$1,{side:"right",align:"center",hidden:b!=="collapsed"||h,...s})]})):C});B.displayName="SidebarMenuButton";var ka=r.forwardRef(({className:t,asChild:e=false,showOnHover:a$1=false,...f},s)=>jsx(e?Slot:"button",{ref:s,"data-sidebar":"menu-action",className:a("fk-absolute fk-right-1 fk-top-1.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 peer-hover/menu-button:fk-text-sidebar-accent-foreground [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","after:fk-absolute after:fk--inset-2 after:md:fk-hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:fk-hidden",a$1&&"group-focus-within/menu-item:fk-opacity-100 group-hover/menu-item:fk-opacity-100 data-[state=open]:fk-opacity-100 peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground md:fk-opacity-0",t),...f}));ka.displayName="SidebarMenuAction";var ma=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"menu-badge",className:a("fk-absolute fk-right-1 fk-flex fk-h-5 fk-min-w-5 fk-items-center fk-justify-center fk-rounded-md fk-px-1 fk-text-xs fk-font-medium fk-tabular-nums fk-text-sidebar-foreground fk-select-none fk-pointer-events-none","peer-hover/menu-button:fk-text-sidebar-accent-foreground peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:fk-hidden",t),...e}));ma.displayName="SidebarMenuBadge";var ua=r.forwardRef(({className:t,showIcon:e=false,...a$1},f)=>{let s=r.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return jsxs("div",{ref:f,"data-sidebar":"menu-skeleton",className:a("fk-rounded-md fk-h-8 fk-flex fk-gap-2 fk-px-2 fk-items-center",t),...a$1,children:[e&&jsx(r$1,{className:"fk-size-4 fk-rounded-md","data-sidebar":"menu-skeleton-icon"}),jsx(r$1,{className:"fk-h-4 fk-flex-1 fk-max-w-[--skeleton-width]","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});ua.displayName="SidebarMenuSkeleton";var ba=r.forwardRef(({className:t,...e},a$1)=>jsx("ul",{ref:a$1,"data-sidebar":"menu-sub",className:a("fk-mx-3.5 fk-flex fk-min-w-0 fk-translate-x-px fk-flex-col fk-gap-1 fk-border-l fk-border-sidebar-border fk-px-2.5 fk-py-0.5","group-data-[collapsible=icon]:fk-hidden",t),...e}));ba.displayName="SidebarMenuSub";var ga=r.forwardRef(({...t},e)=>jsx("li",{ref:e,...t}));ga.displayName="SidebarMenuSubItem";var va=r.forwardRef(({asChild:t=false,size:e="md",isActive:a$1,className:f,...s},c)=>jsx(t?Slot:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":e,"data-active":a$1,className:a("fk-flex fk-h-7 fk-min-w-0 fk--translate-x-px fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-px-2 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0 [&>svg]:fk-text-sidebar-accent-foreground","data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-text-sidebar-accent-foreground",e==="sm"&&"fk-text-xs",e==="md"&&"fk-text-sm","group-data-[collapsible=icon]:fk-hidden",f),...s}));va.displayName="SidebarMenuSubButton";var Ra=Object.keys(G).map(t=>({name:t,icon:G[t]})),xa=new ha(Ra,{keys:["name"],threshold:.5});function wa({className:t,menuGroups:e,schema:a}){let f=a.filter(n=>!(n.menu&&"hidden"in n.menu)),s=groupBy(n=>n.menu?.group&&e?.find(d=>d.name===n.menu?.group)?.name||"ungrouped",f),c=e?.filter(n=>s[n.name]?.length);return jsxs(Z,{className:t,collapsible:"icon",variant:"inset",children:[jsxs(ee,{children:[c?.map(n=>jsxs(L,{children:[jsx(te,{children:n.title}),jsx(H,{children:s[n.name]?.map(d=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${d.plural}`),tooltip:A(d.menu?.label??d.plural),children:jsxs(NavLink,{to:`list/${d.plural}`,children:[d.menu?.icon??createElement(G[be(d.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(d.menu?.label??d.plural)})]})})},d.plural))})]},n.name)),jsx(L,{children:jsx(H,{children:s.ungrouped?.map(n=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${n.plural}`),tooltip:A(n.menu?.label??n.plural),children:jsxs(NavLink,{to:`list/${n.plural}`,children:[createElement(G[be(n.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(n.menu?.label??n.plural)})]})})},n.plural))})})]}),jsx(Q,{})]})}function A(t){let e=t.replace(/([A-Z])/g," $1");return e.charAt(0).toUpperCase()+e.slice(1).trim()}function be(t){let e=xa.search(t);return e.length>0?e[0].item.name:"Dock"}var ya=k.Root,ge=r.forwardRef(({className:t,...e},a$1)=>jsx(k.List,{className:a("fk-inline-flex fk-h-10 fk-items-center fk-justify-center fk-rounded-md fk-bg-muted fk-p-1 fk-text-muted-foreground",t),ref:a$1,...e}));ge.displayName=k.List.displayName;var ve=r.forwardRef(({className:t,...e},a$1)=>jsx(k.Trigger,{className:a("fk-inline-flex fk-items-center fk-justify-center fk-whitespace-nowrap fk-rounded-sm fk-px-3 fk-py-1.5 fk-text-sm fk-font-medium fk-ring-offset-background fk-transition-all focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2 disabled:fk-pointer-events-none disabled:fk-opacity-50 data-[state=active]:fk-bg-background data-[state=active]:fk-text-foreground data-[state=active]:fk-shadow-sm",t),ref:a$1,...e}));ve.displayName=k.Trigger.displayName;var he=r.forwardRef(({className:t,...e},a$1)=>jsx(k.Content,{className:a("fk-mt-2 fk-ring-offset-background focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2",t),ref:a$1,...e}));he.displayName=k.Content.displayName;export{jt as ResizableHandle,$t as ResizablePanel,Wt as ResizablePanelGroup,U as Sheet,Ut as SheetClose,D as SheetContent,se as SheetDescription,ne as SheetFooter,ie as SheetHeader,q as SheetOverlay,re as SheetPortal,fe as SheetTitle,Jt as SheetTrigger,wa as Sidebar,ke as SidebarInset,ce as SidebarProvider,pe as SidebarTrigger,ya as Tabs,he as TabsContent,ge as TabsList,ve as TabsTrigger,y as useSidebar};//# sourceMappingURL=ui.js.map
|
|
1
|
+
import'./index.css';import {e}from'./chunk-6TSWBOSZ.js';export{e as Separator,f as Table,h as TableBody,m as TableCaption,l as TableCell,i as TableFooter,k as TableHead,g as TableHeader,j as TableRow,b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-6TSWBOSZ.js';import {a as a$2}from'./chunk-OX6FVDUT.js';export{a as Input}from'./chunk-OX6FVDUT.js';import {a as a$1,b as b$1,c,e as e$1}from'./chunk-RMSYYUQM.js';export{b as Tooltip,e as TooltipContent,d as TooltipPortal,a as TooltipProvider,c as TooltipTrigger}from'./chunk-RMSYYUQM.js';export{a as Select,g as SelectContent,b as SelectGroup,i as SelectItem,h as SelectLabel,f as SelectScrollDownButton,e as SelectScrollUpButton,j as SelectSeparator,d as SelectTrigger,c as SelectValue}from'./chunk-2RBOTHKE.js';export{b as Badge,m as Command,n as CommandDialog,q as CommandEmpty,r as CommandGroup,o as CommandInput,t as CommandItem,p as CommandList,s as CommandSeparator,u as CommandShortcut,c as Dialog,f as DialogClose,h as DialogContent,l as DialogDescription,j as DialogFooter,i as DialogHeader,g as DialogOverlay,e as DialogPortal,k as DialogTitle,d as DialogTrigger,v as ScrollArea,w as ScrollBar,a as badgeVariants}from'./chunk-ZOBZU47M.js';export{a as Avatar,c as AvatarFallback,b as AvatarImage}from'./chunk-K5CEPNVI.js';import {b,r as r$1}from'./chunk-64KAF6GA.js';export{b as Button,c as DropdownMenu,m as DropdownMenuCheckboxItem,k as DropdownMenuContent,e as DropdownMenuGroup,l as DropdownMenuItem,o as DropdownMenuLabel,f as DropdownMenuPortal,h as DropdownMenuRadioGroup,n as DropdownMenuRadioItem,p as DropdownMenuSeparator,q as DropdownMenuShortcut,g as DropdownMenuSub,j as DropdownMenuSubContent,i as DropdownMenuSubTrigger,d as DropdownMenuTrigger,r as Skeleton,a as buttonVariants}from'./chunk-64KAF6GA.js';export{b as Form,g as FormControl,h as FormDescription,c as FormField,e as FormItem,f as FormLabel,i as FormMessage,a as Label,d as useFormField}from'./chunk-SPWSXOXS.js';import {a}from'./chunk-AXB7FQV2.js';import*as G from'lucide-react';import {X,Menu,PanelLeft,GripVertical}from'lucide-react';import*as S from'react-resizable-panels';import {jsx,jsxs}from'react/jsx-runtime';import*as r from'react';import {createElement}from'react';import*as l from'@radix-ui/react-dialog';import {cva}from'class-variance-authority';import ha from'fuse.js';import {NavLink}from'react-router-dom';import {Slot}from'@radix-ui/react-slot';import {groupBy}from'ramda';import*as k from'@radix-ui/react-tabs';function Wt({className:t,...e}){return jsx(S.PanelGroup,{className:a("fk-flex fk-h-full fk-w-full data-[panel-group-direction=vertical]:fk-flex-col",t),...e})}var $t=S.Panel;function jt({withHandle:t,className:e,...a$1}){return jsx(S.PanelResizeHandle,{className:a("fk-relative fk-flex fk-w-px fk-items-center fk-justify-center fk-bg-border after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-1 after:fk--translate-x-1/2 focus-visible:fk-outline-none focus-visible:fk-ring-1 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-1 data-[panel-group-direction=vertical]:fk-h-px data-[panel-group-direction=vertical]:fk-w-full data-[panel-group-direction=vertical]:after:fk-left-0 data-[panel-group-direction=vertical]:after:fk-h-1 data-[panel-group-direction=vertical]:after:fk-w-full data-[panel-group-direction=vertical]:after:fk--translate-y-1/2 data-[panel-group-direction=vertical]:after:fk-translate-x-0 [&[data-panel-group-direction=vertical]>div]:fk-rotate-90",e),...a$1,children:!!t&&jsx("div",{className:"fk-z-10 fk-flex fk-h-4 fk-w-3 fk-items-center fk-justify-center fk-rounded-sm fk-border fk-bg-border",children:jsx(GripVertical,{className:"fk-h-2.5 fk-w-2.5"})})})}var U=l.Root,Jt=l.Trigger,Ut=l.Close,re=l.Portal,q=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Overlay,{className:a("fk-fixed fk-inset-0 fk-z-50 fk-bg-overlay/75 fk-backdrop-blur-[1px] data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0",t),...e,ref:a$1}));q.displayName=l.Overlay.displayName;var qt=cva("fk-fixed fk-z-50 fk-gap-4 fk-bg-background fk-p-6 fk-shadow-lg fk-transition fk-ease-in-out data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-duration-300 data-[state=open]:fk-duration-500",{variants:{side:{top:"fk-inset-x-0 fk-top-0 fk-border-b data-[state=closed]:fk-slide-out-to-top data-[state=open]:fk-slide-in-from-top",bottom:"fk-inset-x-0 fk-bottom-0 fk-border-t data-[state=closed]:fk-slide-out-to-bottom data-[state=open]:fk-slide-in-from-bottom",left:"fk-inset-y-0 fk-left-0 fk-h-full fk-w-3/4 fk-border-r fk-border-r-sidebar-border data-[state=closed]:fk-slide-out-to-left data-[state=open]:fk-slide-in-from-left sm:fk-max-w-sm",right:"fk-inset-y-0 fk-right-0 fk-h-full fk-w-3/4 fk- fk-border-l data-[state=closed]:fk-slide-out-to-right data-[state=open]:fk-slide-in-from-right sm:fk-max-w-sm"}},defaultVariants:{side:"right"}}),D=r.forwardRef(({side:t="right",className:e,children:a$1,...f},s)=>jsxs(re,{children:[jsx(q,{}),jsxs(l.Content,{className:a(qt({side:t}),e),ref:s,...f,children:[a$1,jsxs(l.Close,{className:"fk-absolute fk-right-4 fk-top-4 fk-rounded-sm fk-opacity-70 fk-ring-offset-background fk-transition-opacity hover:fk-opacity-100 focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-pointer-events-none data-[state=open]:fk-bg-secondary",children:[jsx(X,{className:"fk-h-4 fk-w-4"}),jsx("span",{className:"fk-sr-only",children:"Close"})]})]})]}));D.displayName=l.Content.displayName;function ie({className:t,...e}){return jsx("div",{className:a("fk-flex fk-flex-col fk-space-y-2 fk-text-center sm:fk-text-left",t),...e})}ie.displayName="SheetHeader";function ne({className:t,...e}){return jsx("div",{className:a("fk-flex fk-flex-col-reverse sm:fk-flex-row sm:fk-justify-end sm:fk-space-x-2",t),...e})}ne.displayName="SheetFooter";var fe=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Title,{className:a("fk-text-lg fk-font-semibold fk-text-foreground",t),ref:a$1,...e}));fe.displayName=l.Title.displayName;var se=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Description,{className:a("fk-text-sm fk-text-muted-foreground",t),ref:a$1,...e}));se.displayName=l.Description.displayName;var Y=768;function le(){let[t,e]=r.useState(void 0);return r.useEffect(()=>{let a=window.matchMedia(`(max-width: ${Y-1}px)`),f=()=>{e(window.innerWidth<Y);};return a.addEventListener("change",f),e(window.innerWidth<Y),()=>a.removeEventListener("change",f)},[]),!!t}var ea="flexkit:sidebar:state",ta=3600*24*7,aa="16rem",oa="18rem",ra="2rem",ia="b",de=r.createContext(null);function y(){let t=r.useContext(de);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}var ce=r.forwardRef(({defaultOpen:t=true,open:e,onOpenChange:a$2,className:f,style:s,children:c,...n},d)=>{let u=le(),[h,b]=r.useState(false),[C,Se]=r.useState(t),R=e??C,T=r.useCallback(m=>{let g=typeof m=="function"?m(R):m;a$2?a$2(g):Se(g),document.cookie=`${ea}=${g}; path=/; max-age=${ta}`;},[a$2,R]),M=r.useCallback(()=>u?b(m=>!m):T(m=>!m),[u,T,b]);r.useEffect(()=>{let m=g=>{g.key===ia&&(g.metaKey||g.ctrlKey)&&(g.preventDefault(),M());};return window.addEventListener("keydown",m),()=>window.removeEventListener("keydown",m)},[M]);let oe=R?"expanded":"collapsed",Re=r.useMemo(()=>({state:oe,open:R,setOpen:T,isMobile:u,openMobile:h,setOpenMobile:b,toggleSidebar:M}),[oe,R,T,u,h,b,M]);return jsx(de.Provider,{value:Re,children:jsx(a$1,{delayDuration:0,children:jsx("div",{style:{"--sidebar-width":aa,"--sidebar-width-icon":ra,...s},className:a("fk-group/sidebar-wrapper fk-flex fk-w-full has-[[data-variant=inset]]:fk-bg-sidebar fk-overflow-hidden",f),ref:d,...n,children:c})})})});ce.displayName="SidebarProvider";var Z=r.forwardRef(({side:t="left",variant:e="sidebar",collapsible:a$1="offcanvas",className:f,children:s,...c},n)=>{let{isMobile:d,state:u,openMobile:h,setOpenMobile:b}=y();return a$1==="none"?jsx("div",{className:a("fk-flex fk-h-full fk-w-[--sidebar-width] fk-flex-col fk-bg-sidebar fk-text-sidebar-foreground",f),ref:n,...c,children:s}):d?jsx(U,{open:h,onOpenChange:b,...c,children:jsx(D,{"data-sidebar":"sidebar","data-mobile":"true",className:"fk-w-[--sidebar-width] fk-bg-sidebar fk-p-0 fk-text-sidebar-foreground [&>button]:fk-hidden",style:{"--sidebar-width":oa},side:t,children:jsx("div",{className:"fk-flex fk-h-full fk-w-full fk-flex-col",children:s})})}):jsxs("div",{ref:n,className:"fk-relative fk-group fk-peer fk-hidden md:fk-block fk-text-sidebar-foreground","data-state":u,"data-collapsible":u==="collapsed"?a$1:"","data-variant":e,"data-side":t,children:[jsx("div",{className:a("fk-duration-200 fk-relative fk-h-svh fk-w-[--sidebar-width] fk-bg-transparent fk-transition-[width] fk-ease-linear","group-data-[collapsible=offcanvas]:fk-w-0","group-data-[side=right]:fk-rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon]")}),jsx("div",{className:a("fk-duration-200 fk-absolute fk-inset-y-0 fk-z-10 fk-hidden fk-h-[calc(100svh-3.5rem)] fk-w-[--sidebar-width] fk-transition-[left,right,width] fk-ease-linear md:fk-flex",t==="left"?"fk-left-0 group-data-[collapsible=offcanvas]:fk-left-[calc(var(--sidebar-width)*-1)]":"fk-right-0 group-data-[collapsible=offcanvas]:fk-right-[calc(var(--sidebar-width)*-1)]",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l":"group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l",f),...c,children:jsx("div",{"data-sidebar":"sidebar",className:"fk-flex fk-h-full fk-w-full fk-flex-col fk-bg-sidebar group-data-[variant=floating]:fk-rounded-lg group-data-[variant=floating]:fk-border group-data-[variant=floating]:fk-border-sidebar-border group-data-[variant=floating]:fk-shadow",children:s})})]})});Z.displayName="Sidebar";var pe=r.forwardRef(({className:t,onClick:e,...a$1},f)=>{let{isMobile:s,toggleSidebar:c}=y();return jsxs(b,{ref:f,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:a("fk-h-7 fk-w-7",t),onClick:n=>{e?.(n),c();},...a$1,children:[s?jsx(Menu,{}):jsx(PanelLeft,{}),jsx("span",{className:"fk-sr-only",children:"Toggle Sidebar"})]})});pe.displayName="SidebarTrigger";var Q=r.forwardRef(({className:t,...e},a$1)=>{let{toggleSidebar:f}=y();return jsx("button",{ref:a$1,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:f,title:"Toggle Sidebar",className:a("fk-absolute fk-inset-y-0 fk-z-20 fk-hidden fk-w-4 fk--translate-x-1/2 fk-transition-all fk-ease-linear after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-[2px] after:fk-bg-sidebar-border hover:after:fk-bg-muted-foreground group-data-[side=left]:fk--right-4 group-data-[side=right]:fk-left-0 sm:fk-flex","[[data-side=left]_&]:fk-cursor-w-resize [[data-side=right]_&]:fk-cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:fk-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:fk-cursor-w-resize","group-data-[collapsible=offcanvas]:fk-translate-x-0 group-data-[collapsible=offcanvas]:after:fk-left-full group-data-[collapsible=offcanvas]:hover:fk-bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:fk--right-2","[[data-side=right][data-collapsible=offcanvas]_&]:fk--left-2",t),...e})});Q.displayName="SidebarRail";var ke=r.forwardRef(({className:t,...e},a$1)=>jsx("main",{ref:a$1,className:a("fk-relative fk-flex fk-flex-1 fk-flex-col fk-bg-background fk-overflow-hidden","peer-data-[variant=inset]:fk-h-[calc(100svh-4rem)]",t),...e}));ke.displayName="SidebarInset";var na=r.forwardRef(({className:t,...e},a$1)=>jsx(a$2,{ref:a$1,"data-sidebar":"input",className:a("fk-h-8 fk-w-full fk-bg-background fk-shadow-none focus-visible:fk-ring-2 focus-visible:fk-ring-sidebar-ring",t),...e}));na.displayName="SidebarInput";var fa=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"header",className:a("fk-flex fk-flex-col fk-gap-2 fk-p-2",t),...e}));fa.displayName="SidebarHeader";var sa=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"footer",className:a("fk-flex fk-flex-col fk-gap-2 fk-p-2",t),...e}));sa.displayName="SidebarFooter";var la=r.forwardRef(({className:t,...e$1},a$1)=>jsx(e,{ref:a$1,"data-sidebar":"separator",className:a("fk-mx-2 fk-w-auto fk-bg-sidebar-border",t),...e$1}));la.displayName="SidebarSeparator";var ee=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"content",className:a("fk-flex fk-min-h-0 fk-flex-1 fk-flex-col fk-overflow-auto group-data-[collapsible=icon]:fk-overflow-hidden",t),...e}));ee.displayName="SidebarContent";var L=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"group",className:a("fk-relative fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-p-2",t),...e}));L.displayName="SidebarGroup";var te=r.forwardRef(({className:t,asChild:e=false,...a$1},f)=>jsx(e?Slot:"div",{ref:f,"data-sidebar":"group-label",className:a("fk-duration-200 fk-flex fk-h-8 fk-shrink-0 fk-items-center fk-rounded-md fk-px-2 fk-text-xs fk-font-medium fk-text-sidebar-foreground/70 fk-outline-none fk-ring-sidebar-ring fk-transition-[margin,opa] fk-ease-linear focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","group-data-[collapsible=icon]:fk--mt-8 group-data-[collapsible=icon]:fk-opacity-0",t),...a$1}));te.displayName="SidebarGroupLabel";var da=r.forwardRef(({className:t,asChild:e=false,...a$1},f)=>jsx(e?Slot:"button",{ref:f,"data-sidebar":"group-action",className:a("fk-absolute fk-right-3 fk-top-3.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","after:fk-absolute after:fk--inset-2 after:md:fk-hidden","group-data-[collapsible=icon]:fk-hidden",t),...a$1}));da.displayName="SidebarGroupAction";var ca=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"group-content",className:a("fk-w-full fk-text-sm",t),...e}));ca.displayName="SidebarGroupContent";var H=r.forwardRef(({className:t,...e},a$1)=>jsx("ul",{ref:a$1,"data-sidebar":"menu",className:a("fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-gap-1 fk-z-10",t),...e}));H.displayName="SidebarMenu";var z=r.forwardRef(({className:t,...e},a$1)=>jsx("li",{ref:a$1,"data-sidebar":"menu-item",className:a("fk-group/menu-item fk-relative",t),...e}));z.displayName="SidebarMenuItem";var pa=cva("peer/menu-button fk-flex fk-w-full fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-p-2 fk-text-left fk-text-sm fk-outline-none fk-ring-sidebar-ring fk-transition-[width,height,padding] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:fk-pr-8 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-font-medium data-[active=true]:fk-text-sidebar-accent-foreground data-[state=open]:hover:fk-bg-sidebar-accent data-[state=open]:hover:fk-text-sidebar-accent-foreground group-data-[collapsible=icon]:fk-!size-8 group-data-[collapsible=icon]:fk-!p-2 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0",{variants:{variant:{default:"hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground",outline:"fk-bg-background fk-shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground hover:fk-shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"fk-h-8 fk-text-sm",sm:"fk-h-7 fk-text-xs",lg:"fk-h-12 fk-text-sm group-data-[collapsible=icon]:fk-!p-0"}},defaultVariants:{variant:"default",size:"default"}}),B=r.forwardRef(({asChild:t=false,isActive:e=false,variant:a$1="default",size:f="default",tooltip:s,className:c$1,...n},d)=>{let u=t?Slot:"button",{isMobile:h,state:b}=y(),C=jsx(u,{ref:d,"data-sidebar":"menu-button","data-size":f,"data-active":e,className:a(pa({variant:a$1,size:f}),c$1),...n});return s?(typeof s=="string"&&(s={children:s}),jsxs(b$1,{children:[jsx(c,{asChild:true,children:C}),jsx(e$1,{side:"right",align:"center",hidden:b!=="collapsed"||h,...s})]})):C});B.displayName="SidebarMenuButton";var ka=r.forwardRef(({className:t,asChild:e=false,showOnHover:a$1=false,...f},s)=>jsx(e?Slot:"button",{ref:s,"data-sidebar":"menu-action",className:a("fk-absolute fk-right-1 fk-top-1.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 peer-hover/menu-button:fk-text-sidebar-accent-foreground [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","after:fk-absolute after:fk--inset-2 after:md:fk-hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:fk-hidden",a$1&&"group-focus-within/menu-item:fk-opacity-100 group-hover/menu-item:fk-opacity-100 data-[state=open]:fk-opacity-100 peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground md:fk-opacity-0",t),...f}));ka.displayName="SidebarMenuAction";var ma=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"menu-badge",className:a("fk-absolute fk-right-1 fk-flex fk-h-5 fk-min-w-5 fk-items-center fk-justify-center fk-rounded-md fk-px-1 fk-text-xs fk-font-medium fk-tabular-nums fk-text-sidebar-foreground fk-select-none fk-pointer-events-none","peer-hover/menu-button:fk-text-sidebar-accent-foreground peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:fk-hidden",t),...e}));ma.displayName="SidebarMenuBadge";var ua=r.forwardRef(({className:t,showIcon:e=false,...a$1},f)=>{let s=r.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return jsxs("div",{ref:f,"data-sidebar":"menu-skeleton",className:a("fk-rounded-md fk-h-8 fk-flex fk-gap-2 fk-px-2 fk-items-center",t),...a$1,children:[e&&jsx(r$1,{className:"fk-size-4 fk-rounded-md","data-sidebar":"menu-skeleton-icon"}),jsx(r$1,{className:"fk-h-4 fk-flex-1 fk-max-w-[--skeleton-width]","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});ua.displayName="SidebarMenuSkeleton";var ba=r.forwardRef(({className:t,...e},a$1)=>jsx("ul",{ref:a$1,"data-sidebar":"menu-sub",className:a("fk-mx-3.5 fk-flex fk-min-w-0 fk-translate-x-px fk-flex-col fk-gap-1 fk-border-l fk-border-sidebar-border fk-px-2.5 fk-py-0.5","group-data-[collapsible=icon]:fk-hidden",t),...e}));ba.displayName="SidebarMenuSub";var ga=r.forwardRef(({...t},e)=>jsx("li",{ref:e,...t}));ga.displayName="SidebarMenuSubItem";var va=r.forwardRef(({asChild:t=false,size:e="md",isActive:a$1,className:f,...s},c)=>jsx(t?Slot:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":e,"data-active":a$1,className:a("fk-flex fk-h-7 fk-min-w-0 fk--translate-x-px fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-px-2 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0 [&>svg]:fk-text-sidebar-accent-foreground","data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-text-sidebar-accent-foreground",e==="sm"&&"fk-text-xs",e==="md"&&"fk-text-sm","group-data-[collapsible=icon]:fk-hidden",f),...s}));va.displayName="SidebarMenuSubButton";var Ra=Object.keys(G).map(t=>({name:t,icon:G[t]})),xa=new ha(Ra,{keys:["name"],threshold:.5});function wa({className:t,menuGroups:e,schema:a}){let f=a.filter(n=>!(n.menu&&"hidden"in n.menu)),s=groupBy(n=>n.menu?.group&&e?.find(d=>d.name===n.menu?.group)?.name||"ungrouped",f),c=e?.filter(n=>s[n.name]?.length);return jsxs(Z,{className:t,collapsible:"icon",variant:"inset",children:[jsxs(ee,{children:[c?.map(n=>jsxs(L,{children:[jsx(te,{children:n.title}),jsx(H,{children:s[n.name]?.map(d=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${d.plural}`),tooltip:A(d.menu?.label??d.plural),children:jsxs(NavLink,{to:`list/${d.plural}`,children:[d.menu?.icon??createElement(G[be(d.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(d.menu?.label??d.plural)})]})})},d.plural))})]},n.name)),jsx(L,{children:jsx(H,{children:s.ungrouped?.map(n=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${n.plural}`),tooltip:A(n.menu?.label??n.plural),children:jsxs(NavLink,{to:`list/${n.plural}`,children:[createElement(G[be(n.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(n.menu?.label??n.plural)})]})})},n.plural))})})]}),jsx(Q,{})]})}function A(t){let e=t.replace(/([A-Z])/g," $1");return e.charAt(0).toUpperCase()+e.slice(1).trim()}function be(t){let e=xa.search(t);return e.length>0?e[0].item.name:"Dock"}var ya=k.Root,ge=r.forwardRef(({className:t,...e},a$1)=>jsx(k.List,{className:a("fk-inline-flex fk-h-10 fk-items-center fk-justify-center fk-rounded-md fk-bg-muted fk-p-1 fk-text-muted-foreground",t),ref:a$1,...e}));ge.displayName=k.List.displayName;var ve=r.forwardRef(({className:t,...e},a$1)=>jsx(k.Trigger,{className:a("fk-inline-flex fk-items-center fk-justify-center fk-whitespace-nowrap fk-rounded-sm fk-px-3 fk-py-1.5 fk-text-sm fk-font-medium fk-ring-offset-background fk-transition-all focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2 disabled:fk-pointer-events-none disabled:fk-opacity-50 data-[state=active]:fk-bg-background data-[state=active]:fk-text-foreground data-[state=active]:fk-shadow-sm",t),ref:a$1,...e}));ve.displayName=k.Trigger.displayName;var he=r.forwardRef(({className:t,...e},a$1)=>jsx(k.Content,{className:a("fk-mt-2 fk-ring-offset-background focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2",t),ref:a$1,...e}));he.displayName=k.Content.displayName;export{jt as ResizableHandle,$t as ResizablePanel,Wt as ResizablePanelGroup,U as Sheet,Ut as SheetClose,D as SheetContent,se as SheetDescription,ne as SheetFooter,ie as SheetHeader,q as SheetOverlay,re as SheetPortal,fe as SheetTitle,Jt as SheetTrigger,wa as Sidebar,ke as SidebarInset,ce as SidebarProvider,pe as SidebarTrigger,ya as Tabs,he as TabsContent,ge as TabsList,ve as TabsTrigger,y as useSidebar};//# sourceMappingURL=ui.js.map
|
|
2
2
|
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {b,d}from'./chunk-665E4UDZ.js';import {a,b as b$2,c as c$1}from'./chunk-K5CEPNVI.js';import {r,c,d as d$1,b as b$1,k,o,p,m,l,q}from'./chunk-64KAF6GA.js';import'./chunk-EELTSHST.js';import'./chunk-TMK5LKFR.js';import'./chunk-WIUPQHZ5.js';import'./chunk-AXB7FQV2.js';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function _({projectId:D}){let{theme:r$1,setTheme:t}=b(),[C,n]=d();return C?jsx(r,{className:"fk-h-8 fk-w-8 fk-rounded-full"}):jsxs(c,{children:[jsx(d$1,{asChild:true,children:jsx(b$1,{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$2,{alt:"@shadcn",src:n.user?.avatar_url}),jsx(c$1,{children:n.user?.display_name.charAt(0).toUpperCase()??""})]})})}),jsxs(k,{align:"end",className:"fk-w-56",forceMount:true,children:[jsx(o,{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.user?.display_name}),jsx("p",{className:"fk-text-xs fk-leading-none fk-text-muted-foreground",children:n.user?.email})]})}),jsx(p,{}),jsx(o,{children:"Theme"}),jsxs(m,{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(m,{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(m,{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(p,{}),jsxs(l,{onClick:()=>{n.logout(D).then(()=>{}).catch(()=>{});},children:["Log out",jsx(q,{children:"\u21E7\u2318Q"})]})]})]})}export{_ as UserNav};//# sourceMappingURL=user-nav-UHNUTEUZ.js.map
|
|
2
|
+
//# sourceMappingURL=user-nav-UHNUTEUZ.js.map
|
|
@@ -1 +1 @@
|
|
|
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":"
|
|
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-UHNUTEUZ.js","sourcesContent":["import { 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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flexkit/studio",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
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",
|
|
@@ -60,13 +60,13 @@
|
|
|
60
60
|
"@types/debug": "^4.1.12",
|
|
61
61
|
"@types/node": "^20.5.2",
|
|
62
62
|
"@types/ramda": "^0.29.7",
|
|
63
|
-
"@types/react": "^18.
|
|
64
|
-
"@types/react-dom": "^18.
|
|
63
|
+
"@types/react": "^18.0.0",
|
|
64
|
+
"@types/react-dom": "^18.0.0",
|
|
65
65
|
"@types/uuid": "^9.0.6",
|
|
66
66
|
"autoprefixer": "^10.4.16",
|
|
67
67
|
"postcss": "^8.4.31",
|
|
68
|
-
"react": "^18.
|
|
69
|
-
"react-dom": "^18.
|
|
68
|
+
"react": "^18.0.0",
|
|
69
|
+
"react-dom": "^18.0.0",
|
|
70
70
|
"tailwindcss": "3.4.10",
|
|
71
71
|
"tailwindcss-animate": "1.0.7",
|
|
72
72
|
"tsup": "8.5.1",
|
package/dist/asset-GMXBEENP.js
DELETED
package/dist/chunk-5MTVN77Y.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import'./index.css';import {a}from'./chunk-AXB7FQV2.js';import*as f from'react';import*as c from'@radix-ui/react-toggle';import {cva}from'class-variance-authority';import {jsx}from'react/jsx-runtime';import*as s from'@radix-ui/react-toggle-group';import*as k from'@radix-ui/react-separator';var p=cva("fk-inline-flex fk-items-center fk-justify-center fk-rounded-md fk-text-sm fk-font-medium fk-ring-offset-background fk-transition-colors hover:fk-bg-muted hover:fk-text-muted-foreground focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2 disabled:fk-pointer-events-none disabled:fk-opacity-50 data-[state=on]:fk-bg-accent data-[state=on]:fk-text-accent-foreground",{variants:{variant:{default:"fk-bg-transparent",outline:"fk-border fk-border-input fk-bg-transparent hover:fk-bg-accent hover:fk-text-accent-foreground"},size:{default:"fk-h-10 fk-px-3",sm:"fk-h-9 fk-px-2.5",lg:"fk-h-11 fk-px-5"}},defaultVariants:{variant:"default",size:"default"}}),v=f.forwardRef(({className:t,variant:e,size:o,...a$1},l)=>jsx(c.Root,{className:a(p({variant:e,size:o,className:t})),ref:l,...a$1}));v.displayName=c.Root.displayName;var T=f.createContext({size:"default",variant:"default"}),P=f.forwardRef(({className:t,variant:e,size:o,children:a$1,...l},m)=>jsx(s.Root,{className:a("fk-flex fk-items-center fk-justify-center fk-gap-1",t),ref:m,...l,children:jsx(T.Provider,{value:{variant:e,size:o},children:a$1})}));P.displayName=s.Root.displayName;var N=f.forwardRef(({className:t,children:e,variant:o,size:a$1,...l},m)=>{let b=f.useContext(T);return jsx(s.Item,{className:a(p({variant:b.variant||o,size:b.size||a$1}),t),ref:m,...l,children:e})});N.displayName=s.Item.displayName;var h=f.forwardRef(({className:t,orientation:e="horizontal",decorative:o=true,...a$1},l)=>jsx(k.Root,{className:a("fk-shrink-0 fk-bg-border",e==="horizontal"?"fk-h-[1px] fk-w-full":"fk-h-full fk-w-[1px]",t),decorative:o,orientation:e,ref:l,...a$1}));h.displayName=k.Root.displayName;var x=f.forwardRef(({className:t,onScroll:e,...o},a$1)=>jsx("div",{className:"fk-relative fk-h-full fk-w-full fk-overflow-x-auto fk-rounded-md fk-border-border fk-border",onScroll:e,ref:a$1,children:jsx("table",{className:a("fk-w-full fk-caption-bottom fk-text-sm",t),...o})}));x.displayName="Table";var L=f.forwardRef(({className:t,...e},o)=>jsx("thead",{className:a("fk-sticky fk-z-[1] fk-top-0 fk-bg-background/90 fk-backdrop-blur-[1px] [&_tr]:fk-border-border [&_tr]:fk-border-border [&_tr]:fk-border-b",t),ref:o,...e}));L.displayName="TableHeader";var M=f.forwardRef(({className:t,...e},o)=>jsx("tbody",{className:a("[&_tr:last-child]:fk-border-0",t),ref:o,...e}));M.displayName="TableBody";var w=f.forwardRef(({className:t,...e},o)=>jsx("tfoot",{className:a("fk-border-border fk-border-t fk-bg-muted/50 fk-font-medium [&>tr]:last:fk-border-b-0",t),ref:o,...e}));w.displayName="TableFooter";var E=f.forwardRef(({className:t,...e},o)=>jsx("tr",{className:a("fk-border-border fk-border-b fk-transition-colors hover:fk-bg-muted/50 data-[state=selected]:fk-bg-muted",t),ref:o,...e}));E.displayName="TableRow";var C=f.forwardRef(({className:t,style:e,...o},a$1)=>jsx("th",{className:a("fk-h-10 fk-px-4 fk-text-left fk-align-middle fk-font-medium fk-text-muted-foreground [&:has([role=checkbox])]:fk-pr-0",t),ref:a$1,...o,style:e}));C.displayName="TableHead";var G=f.forwardRef(({className:t,...e},o)=>jsx("td",{className:a("fk-px-4 fk-py-1 fk-align-middle [&:has([role=checkbox])]:fk-pr-0",t),ref:o,...e}));G.displayName="TableCell";var S=f.forwardRef(({className:t,...e},o)=>jsx("caption",{className:a("fk-mt-4 fk-text-sm fk-text-muted-foreground",t),ref:o,...e}));S.displayName="TableCaption";export{p as a,v as b,P as c,N as d,h as e,x as f,L as g,M as h,w as i,E as j,C as k,G as l,S as m};//# sourceMappingURL=chunk-5MTVN77Y.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-5MTVN77Y.js.map
|
package/dist/chunk-7DMOGZE6.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import'./index.css';import {c}from'./chunk-7YBJLUUE.js';import {createContext,useReducer,useContext,useMemo}from'react';import {jsx}from'react/jsx-runtime';import {path,has,find,propEq}from'ramda';import {useParams}from'react-router-dom';import k from'swr';var J="core.context.scope:",E={breadcrumbs:[],isRouteLoading:false,pageTitle:"",scope:"",relationships:{}},w=createContext(E),v=createContext(()=>{});function U(t,o){let{type:n,payload:e}=o;switch(n){case "setScope":return typeof localStorage<"u"&&e.projectId&&localStorage.setItem(`${J}${e.projectId}`,e.scope),{...t,scope:e.scope};case "setRelationship":return {...t,relationships:{...t.relationships,...e}};default:throw Error(`Unknown action: ${n}`)}}function Q({children:t}){let[o,n]=useReducer(U,E);return jsx(w.Provider,{value:o,children:jsx(v.Provider,{value:n,children:t})})}function I(){return useContext(w)}function Z(){return useContext(v)}var h={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:280},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:80},isEditable:true,dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"height",label:"Height",scope:"global",options:{size:80},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:"Last Updated",scope:"global",options:{size:140},isEditable:true,dataType:"string",inputType:"text",previewType:"text",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 T={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:"Last Updated",scope:"global",options:{size:140},isEditable:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"assets",label:"Assets",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",relationship:{mode:"multiple",field:"originalFilename",entity:"_asset"}}]};var N=createContext({contributions:{apps:[]},currentProjectId:void 0,currentProjectSchema:[],getContributionPointConfig:()=>[],plugins:[],projects:[]}),b=t=>Object.prototype.hasOwnProperty.call(t,"projectId"),C=t=>Object.prototype.hasOwnProperty.call(t,"contributes");function lt({config:t,children:o}){let{projectId:n}=useParams(),e=useMemo(()=>{let i=s=>[...s.filter(l=>l.name!==h.name&&l.name!==T.name),h,T];return t.map(s=>({...s,schema:i(s.schema)}))},[t]),r=useMemo(()=>m(["plugins"],e),[e]),u=useMemo(()=>m(["plugins"],e.filter(i=>i.projectId===n)),[e,n]),c=r.filter(i=>!b(i)&&C(i)),p=u.filter(i=>!b(i)&&C(i)),a=useMemo(()=>({contributions:{apps:x("apps",[],p)},currentProjectId:n,currentProjectSchema:e.find(i=>i.projectId===n)?.schema??[],getContributionPointConfig:(i,s=[])=>x(i,s,p),plugins:c,projects:r.filter(i=>b(i))}),[c,n,p,r]);return jsx(N.Provider,{value:{...a,contributions:{...a.contributions,apps:a.contributions.apps}},children:o})}function V(){return useContext(N)}function m(t,o){return Array.isArray(o)?o.reduce((n,e)=>path(t,e)?[...n,e,...m(t,path(t,e)??[])]:[...n,e],[]):[o]}function x(t,o=[],n){let e=["contributes",t,...o];return m(e.flat(),n).filter(r=>has("component",r))}function ut(t){let n=m(["plugins"],t).filter(e=>!b(e)&&C(e));return x("apps",[],n)}function bt(t,o){let{scope:n}=I(),{projects:e,currentProjectId:r}=V(),{schema:u,scopes:c$1}=find(propEq(r??"","projectId"))(e),p=c$1?.find(g=>g.isDefault)?.name??"default",a=o?.commonParams.q?JSON.stringify(o):null,{data:i,error:s,isLoading:d}=k(a,()=>fetch(c(t).search,{headers:{"Content-Type":"application/json"},body:JSON.stringify(o),method:"POST",mode:"cors"}).then(g=>g.json()));return {results:G(i?.results??[],t,u,n,p)??[],error:s,isLoading:d}}function B(t){return t.find(o=>o.isPrimary)?.name??t[0]?.name}function G(t,o,n,e,r){return t?.filter(u=>u?.hits?.length>0).map(u=>{let c=u,p=c.collection.replace(`${o}_`,"").replace(/_\d+$/,""),a=find(propEq(p,"plural"))(n);if(!a)return [];let i=B(a?.attributes??[]),s=a?.name??p;return c.hits.map(({document:d})=>{let l=d[i],F=(l&&typeof l!="string"?l[e]??l[r]:null)??d[i],L=Object.entries(d).reduce((O,[y,f])=>{if(y!==i&&y!=="id"&&y!=="_updatedAt"){let $=typeof f!="string"?f[e]??f[r]:f;O[y]=$;}return O},{});return {_id:d.id,_entityName:s,_entityNamePlural:p,[i]:F,...L}})}).flat()}export{J as a,Q as b,I as c,Z as d,h as e,T as f,lt as g,V as h,ut as i,bt as j};//# sourceMappingURL=chunk-7DMOGZE6.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-7DMOGZE6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/app-context.tsx","../src/entities/assets-schema.ts","../src/entities/tags-schema.ts","../src/core/config/config-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","assetSchema","tagSchema","ConfigContext","hasProjectIdProperty","configItem","hasContributesProperty","ConfigProvider","config","currentProjectId","useParams","enhancedConfig","useMemo","upsertReservedEntities","schema","entity","project","globalFlattenedConfig","flattenConfigByProperty","currentProjectFlattenedConfig","item","allPlugins","currentProjectPlugins","globalConfig","_getContributionPointConfig","contributionPoint","subPath","useConfig","property","acc","curr","path","pathArray","has","getApps","plugins","useSearch","projectId","searchRequest","scope","projects","scopes","find","propEq","defaultScope","s","swrKey","data","error","isLoading","useSWR","apiPaths","res","mapResults","getPrimaryAttributeName","schemaAttributes","attr","results","result","entityNamePlural","entitySchema","primaryAttributeName","entityName","document","primaryAttribute","primaryAttributeValue","attributes","key","value","scopedValue"],"mappings":"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","file":"chunk-7DMOGZE6.js","sourcesContent":["'use client';\n\nimport { createContext, useContext, useReducer } from 'react';\nimport type { Dispatch, 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","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: 280,\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: 80,\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: 80,\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: 'Last Updated',\n scope: 'global',\n options: {\n size: 140,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\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: 'Last Updated',\n scope: 'global',\n options: {\n size: 140,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\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 { 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 = globalFlattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[];\n const currentProjectPlugins = currentProjectFlattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[];\n\n const globalConfig = useMemo(\n () => ({\n contributions: {\n apps: _getContributionPointConfig('apps', [], currentProjectPlugins),\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, globalFlattenedConfig]\n );\n\n return (\n <ConfigContext.Provider\n value={{\n ...globalConfig,\n contributions: {\n ...globalConfig.contributions,\n apps: globalConfig.contributions.apps as AppOptions[] | [],\n },\n }}\n >\n {children}\n </ConfigContext.Provider>\n );\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","'use client';\n\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 = mapResults(data?.results ?? [], projectId, schema, scope, defaultScope);\n\n return { results: 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"]}
|
package/dist/chunk-7YBJLUUE.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import'./index.css';var s="flexkit.io",o=`https://${s}`,t=i=>i?`https://${i}.api.${s}`:o,r="https://flexkit.io/images/";function a(i=""){return {authProviders:`/api/flexkit/${i}/auth/providers`,completion:`/api/flexkit/${i}/completion`,currentUser:`/api/flexkit/${i}/users/me`,loginOtpConfirm:`${t(i)}/auth/otp/confirm`,loginOtpSend:`${t(i)}/auth/otp/send`,logout:n=>`/api/flexkit/${i}/auth/logout?redirect=/${n}/${i}`,search:`/api/flexkit/${i}/search`,sessionId:`${t(i)}/api/auth/login/session`,upload:`/api/flexkit/${i}/upload`}}
|
|
2
|
-
export{o as a,r as b,a as c};//# sourceMappingURL=chunk-7YBJLUUE.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-7YBJLUUE.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/api-paths.ts"],"names":["domain","baseApiUrl","baseProjectApiUrl","projectId","IMAGES_BASE_URL","apiPaths","basePath"],"mappings":"oBAAA,IAAMA,CAAAA,CAAS,YAAA,CACFC,CAAAA,CAAa,CAAA,QAAA,EAAWD,CAAM,CAAA,CAAA,CACrCE,CAAAA,CAAqBC,CAAAA,EACzBA,CAAAA,CAAY,CAAA,QAAA,EAAWA,CAAS,CAAA,KAAA,EAAQH,CAAM,GAAKC,CAAAA,CAcxCG,CAAAA,CAAkB,6BAExB,SAASC,CAAAA,CAASF,CAAAA,CAAY,EAAA,CAAc,CACjD,OAAO,CACL,aAAA,CAAe,CAAA,aAAA,EAAgBA,CAAS,kBACxC,UAAA,CAAY,CAAA,aAAA,EAAgBA,CAAS,CAAA,WAAA,CAAA,CACrC,YAAa,CAAA,aAAA,EAAgBA,CAAS,CAAA,SAAA,CAAA,CACtC,eAAA,CAAiB,CAAA,EAAGD,CAAAA,CAAkBC,CAAS,CAAC,oBAChD,YAAA,CAAc,CAAA,EAAGD,CAAAA,CAAkBC,CAAS,CAAC,CAAA,cAAA,CAAA,CAC7C,MAAA,CAASG,CAAAA,EAAqB,CAAA,aAAA,EAAgBH,CAAS,CAAA,uBAAA,EAA0BG,CAAQ,CAAA,CAAA,EAAIH,CAAS,CAAA,CAAA,CACtG,MAAA,CAAQ,CAAA,aAAA,EAAgBA,CAAS,UACjC,SAAA,CAAW,CAAA,EAAGD,CAAAA,CAAkBC,CAAS,CAAC,CAAA,uBAAA,CAAA,CAC1C,MAAA,CAAQ,CAAA,aAAA,EAAgBA,CAAS,SACnC,CACF","file":"chunk-7YBJLUUE.js","sourcesContent":["const domain = 'flexkit.io';\nexport const baseApiUrl = `https://${domain}`;\nconst baseProjectApiUrl = (projectId?: string): string =>\n projectId ? `https://${projectId}.api.${domain}` : baseApiUrl;\n\ninterface ApiPaths {\n authProviders: string;\n completion: string;\n currentUser: string;\n loginOtpConfirm: string;\n loginOtpSend: string;\n logout: (basePath: string) => string;\n search: string;\n sessionId: string;\n upload: string;\n}\n\nexport const IMAGES_BASE_URL = 'https://flexkit.io/images/';\n\nexport function apiPaths(projectId = ''): ApiPaths {\n return {\n authProviders: `/api/flexkit/${projectId}/auth/providers`,\n completion: `/api/flexkit/${projectId}/completion`,\n currentUser: `/api/flexkit/${projectId}/users/me`,\n loginOtpConfirm: `${baseProjectApiUrl(projectId)}/auth/otp/confirm`,\n loginOtpSend: `${baseProjectApiUrl(projectId)}/auth/otp/send`,\n logout: (basePath: string) => `/api/flexkit/${projectId}/auth/logout?redirect=/${basePath}/${projectId}`,\n search: `/api/flexkit/${projectId}/search`,\n sessionId: `${baseProjectApiUrl(projectId)}/api/auth/login/session`,\n upload: `/api/flexkit/${projectId}/upload`,\n };\n}\n"]}
|
package/dist/chunk-WA4EGOM4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import'./index.css';import {c}from'./chunk-7YBJLUUE.js';import {createContext,useState,useCallback,useEffect,useMemo,useContext}from'react';import {jsx}from'react/jsx-runtime';import _ from'swr';import {useParams}from'react-router-dom';var Q=["light","dark"],E="(prefers-color-scheme: dark)",C=createContext(void 0);function H({attribute:e="data-theme",children:r,defaultTheme:t,disableTransitionOnChange:u=false,enableColorScheme:h=true,enableSystem:o=true,forcedTheme:i,storageKey:f="theme",themes:d=Q,value:l}){let[c,L]=useState(()=>J(f,t,o)),[a,w]=useState(()=>O()),v=A(i??c,o,a),y=useCallback(n=>{if(!i&&(L(n),!!m()))try{window.localStorage.setItem(f,n);}catch{}},[i,f]);useEffect(()=>{if(!m()||!o)return;let n=window.matchMedia(E);function g(s){w(s.matches?"dark":"light");}return w(n.matches?"dark":"light"),n.addEventListener("change",g),()=>{n.removeEventListener("change",g);}},[o]),useEffect(()=>{if(!m())return;let n=window.document.documentElement,s=A(i??c??t,o,a);if(!s)return;let R=u?D():void 0,M=l?Object.values(l):d,P=l?.[s]??s;e==="class"&&(n.classList.remove(...M),n.classList.add(P)),e!=="class"&&n.setAttribute(e,P),h&&(s==="dark"||s==="light")&&(n.style.colorScheme=s),R?.();},[e,t,u,h,o,i,a,c,d,l]);let k=useMemo(()=>({forcedTheme:i,resolvedTheme:v,setTheme:y,systemTheme:a,theme:i??c,themes:o?[...d,"system"]:d}),[o,i,v,y,a,c,d]);return jsx(C.Provider,{value:k,children:r})}function W(){let e=useContext(C);if(!e)throw new Error("useTheme must be used within ThemeProvider");return e}function D(){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 J(e,r,t){if(!m())return r??(t?"system":"light");try{let u=window.localStorage.getItem(e);if(u)return u}catch{}return r??(t?"system":"light")}function O(){if(m())return window.matchMedia(E).matches?"dark":"light"}function m(){return typeof window<"u"}function A(e,r,t){if(e)return e!=="system"?e:r?t??"light":"light"}function T(){let{projectId:e}=useParams(),{data:r,isLoading:t}=_(c(e??"").currentUser,h=>fetch(h,{mode:"cors",credentials:"include"}).then(o=>o.json()));return [t,{user:r,logout:async()=>{await fetch(c(e??"").logout("/studio"),{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 re({children:e}){let[r,t]=T();return jsx(U.Provider,{value:[r,t],children:e})}function oe(){return useContext(U)}export{H as a,W as b,re as c,oe as d};//# sourceMappingURL=chunk-WA4EGOM4.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-WA4EGOM4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/theme-context.tsx","../src/auth/use-auth-service.ts","../src/auth/auth-context.tsx"],"names":["DEFAULT_THEMES","MEDIA_QUERY","ThemeContext","createContext","ThemeProvider","attribute","children","defaultTheme","disableTransitionOnChange","enableColorScheme","enableSystem","forcedTheme","storageKey","themes","value","theme","setThemeState","useState","getInitialTheme","systemTheme","setSystemTheme","getSystemTheme","resolvedTheme","resolveTheme","setTheme","useCallback","nextTheme","isBrowser","useEffect","mediaQuery","handleChange","event","root","nextResolvedTheme","cleanupTransitions","disableTransitions","themeValues","attributeValue","context","useMemo","jsx","useTheme","useContext","style","storedTheme","useAuthService","projectId","useParams","user","isLoadingUser","useSWR","apiPaths","url","res","AuthContext","AuthProvider","isLoading","auth","useAuth"],"mappings":"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","file":"chunk-WA4EGOM4.js","sourcesContent":["'use client';\n\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\ntype SystemTheme = 'dark' | 'light';\n\ninterface ThemeValue {\n [themeName: string]: string;\n}\n\nexport interface UseThemeProps {\n themes: string[];\n forcedTheme?: string;\n setTheme: (theme: string) => void;\n theme?: string;\n resolvedTheme?: string;\n systemTheme?: SystemTheme;\n}\n\nexport interface ThemeProviderProps {\n themes?: string[];\n forcedTheme?: string;\n enableSystem?: boolean;\n disableTransitionOnChange?: boolean;\n enableColorScheme?: boolean;\n storageKey?: string;\n defaultTheme?: string;\n attribute?: string | 'class';\n value?: ThemeValue;\n children?: React.ReactNode;\n}\n\nconst DEFAULT_THEMES = ['light', 'dark'];\nconst MEDIA_QUERY = '(prefers-color-scheme: dark)';\nconst ThemeContext = createContext<UseThemeProps | undefined>(undefined);\n\nexport function ThemeProvider({\n attribute = 'data-theme',\n children,\n defaultTheme,\n disableTransitionOnChange = false,\n enableColorScheme = true,\n enableSystem = true,\n forcedTheme,\n storageKey = 'theme',\n themes = DEFAULT_THEMES,\n value,\n}: ThemeProviderProps): JSX.Element {\n const [theme, setThemeState] = useState<string | undefined>(() => getInitialTheme(storageKey, defaultTheme, enableSystem));\n const [systemTheme, setSystemTheme] = useState<SystemTheme | undefined>(() => getSystemTheme());\n const resolvedTheme = resolveTheme(forcedTheme ?? theme, enableSystem, systemTheme);\n\n const setTheme = useCallback(\n (nextTheme: string) => {\n if (forcedTheme) {\n return;\n }\n\n setThemeState(nextTheme);\n\n if (!isBrowser()) {\n return;\n }\n\n try {\n window.localStorage.setItem(storageKey, nextTheme);\n } catch {\n //\n }\n },\n [forcedTheme, storageKey]\n );\n\n useEffect(() => {\n if (!isBrowser() || !enableSystem) {\n return;\n }\n\n const mediaQuery = window.matchMedia(MEDIA_QUERY);\n\n function handleChange(event: MediaQueryListEvent): void {\n setSystemTheme(event.matches ? 'dark' : 'light');\n }\n\n setSystemTheme(mediaQuery.matches ? 'dark' : 'light');\n mediaQuery.addEventListener('change', handleChange);\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange);\n };\n }, [enableSystem]);\n\n useEffect(() => {\n if (!isBrowser()) {\n return;\n }\n\n const root = window.document.documentElement;\n const selectedTheme = forcedTheme ?? theme ?? defaultTheme;\n const nextResolvedTheme = resolveTheme(selectedTheme, enableSystem, systemTheme);\n\n if (!nextResolvedTheme) {\n return;\n }\n\n const cleanupTransitions = disableTransitionOnChange ? disableTransitions() : undefined;\n const themeValues = value ? Object.values(value) : themes;\n const attributeValue = value?.[nextResolvedTheme] ?? nextResolvedTheme;\n\n if (attribute === 'class') {\n root.classList.remove(...themeValues);\n root.classList.add(attributeValue);\n }\n\n if (attribute !== 'class') {\n root.setAttribute(attribute, attributeValue);\n }\n\n if (enableColorScheme && (nextResolvedTheme === 'dark' || nextResolvedTheme === 'light')) {\n root.style.colorScheme = nextResolvedTheme;\n }\n\n cleanupTransitions?.();\n }, [\n attribute,\n defaultTheme,\n disableTransitionOnChange,\n enableColorScheme,\n enableSystem,\n forcedTheme,\n systemTheme,\n theme,\n themes,\n value,\n ]);\n\n const context = useMemo<UseThemeProps>(() => {\n return {\n forcedTheme,\n resolvedTheme,\n setTheme,\n systemTheme,\n theme: forcedTheme ?? theme,\n themes: enableSystem ? [...themes, 'system'] : themes,\n };\n }, [enableSystem, forcedTheme, resolvedTheme, setTheme, systemTheme, theme, themes]);\n\n return <ThemeContext.Provider value={context}>{children}</ThemeContext.Provider>;\n}\n\nexport function useTheme(): UseThemeProps {\n const context = useContext(ThemeContext);\n\n if (!context) {\n throw new Error('useTheme must be used within ThemeProvider');\n }\n\n return context;\n}\n\nfunction disableTransitions(): () => void {\n const style = window.document.createElement('style');\n style.appendChild(\n window.document.createTextNode(\n '*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}'\n )\n );\n window.document.head.appendChild(style);\n\n return () => {\n window.getComputedStyle(window.document.body);\n\n window.setTimeout(() => {\n style.remove();\n }, 0);\n };\n}\n\nfunction getInitialTheme(storageKey: string, defaultTheme: string | undefined, enableSystem: boolean): string {\n if (!isBrowser()) {\n return defaultTheme ?? (enableSystem ? 'system' : 'light');\n }\n\n try {\n const storedTheme = window.localStorage.getItem(storageKey);\n\n if (storedTheme) {\n return storedTheme;\n }\n } catch {\n //\n }\n\n return defaultTheme ?? (enableSystem ? 'system' : 'light');\n}\n\nfunction getSystemTheme(): SystemTheme | undefined {\n if (!isBrowser()) {\n return undefined;\n }\n\n return window.matchMedia(MEDIA_QUERY).matches ? 'dark' : 'light';\n}\n\nfunction isBrowser(): boolean {\n return typeof window !== 'undefined';\n}\n\nfunction resolveTheme(\n theme: string | undefined,\n enableSystem: boolean,\n systemTheme: SystemTheme | undefined\n): string | undefined {\n if (!theme) {\n return undefined;\n }\n\n if (theme !== 'system') {\n return theme;\n }\n\n if (!enableSystem) {\n return 'light';\n }\n\n return systemTheme ?? 'light';\n}\n","'use client';\n\nimport useSWR from 'swr';\nimport { useParams } from 'react-router-dom';\nimport { apiPaths } from '../core/api-paths';\nimport type { AuthService, User } from './types';\n\nexport default function useAuthService(): AuthService {\n const { projectId } = useParams();\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('/studio'), {\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, 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"]}
|
package/dist/chunk-WB6HSMJT.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import'./index.css';import {a,b as b$1,c,d as d$1,e}from'./chunk-RMSYYUQM.js';import {b}from'./chunk-7YBJLUUE.js';import {defaultStyles,FileIcon}from'react-file-icon';import {useMemo,useState,useEffect}from'react';import {jsx,jsxs}from'react/jsx-runtime';var y=250,P=25e5,r=new Map,k=new Map,v=new Set,U=new Map;function d(t){if(U.has(t))return;let e=new Image;e.decoding="async",e.src=t,U.set(t,e);}function g(t){let e=r.get(t);e&&r.set(t,{...e,lastUsedAt:Date.now()});}function L(){if(r.size<=y)return;let t=Array.from(r.entries()).sort((n,o)=>n[1].lastUsedAt-o[1].lastUsedAt),e=Math.max(1,Math.ceil(y*.1));for(let n=0;n<e&&n<t.length;n+=1){let[o,s]=t[n];r.delete(o),URL.revokeObjectURL(s.objectUrl);}}async function M(t){if(v.has(t)){d(t);return}if(r.has(t)){g(t);return}let e=k.get(t);if(e){await e;return}let n=(async()=>{try{let o=await fetch(t,{mode:"cors",cache:"force-cache"});if(!o.ok){d(t);return}let s=await o.blob();if(s.size>P)return;let c=URL.createObjectURL(s);r.set(t,{objectUrl:c,byteSize:s.size,lastUsedAt:Date.now()}),L();}catch(o){o instanceof TypeError&&v.add(t),d(t);}})();k.set(t,n),await n,k.delete(t);}function C(t){let e=useMemo(()=>{if(!t)return null;let s=r.get(t);return s?(g(t),s.objectUrl):null},[t]),[n,o]=useState(e);return useEffect(()=>{if(!t){o(null);return}if(v.has(t)){d(t),o(null);return}let s=r.get(t);if(s){g(t),o(s.objectUrl);return}o(null);let c=false;return M(t).then(()=>{let l=r.get(t);l&&(c||(g(t),o(l.objectUrl)));}),()=>{c=true;}},[t]),n}function O({value:t}){let e$1=t?.path??"",n=!!e$1,o=n&&/\.(png|jpe?g|gif|webp|avif|svg)$/i.test(e$1),s=f=>{let[m]=f.split("?"),T=m.split(".");return T.length>1?T.pop().toLowerCase():"file"},c$1=n?e$1.endsWith(".svg")?`${b}${e$1}`:`${b}${e$1}?w=84&h=84&f=webp`:null,l=n?e$1.endsWith(".svg")?`${b}${e$1}`:`${b}${e$1}?w=624&h=624&f=webp`:"",A=C(c$1);return n?jsx("div",{className:"fk-z-10",children:jsx(a,{children:o?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-bg-muted/40 fk-rounded-sm",decoding:"async",src:A??void 0})}),jsx(d$1,{children:jsx(e,{children:jsx("img",{alt:"asset",className:"fk-w-52 fk-h-52 fk-bg-muted/40 fk-rounded-sm",decoding:"async",src:l})})})]}):jsxs(b$1,{children:[jsx(c,{asChild:true,children:jsx("div",{className:"fk-w-7 fk-h-7 fk-rounded fk-bg-transparent fk-flex fk-items-center fk-justify-center [&>svg]:fk-h-full [&>svg]:fk-w-auto",children:(()=>{let f=s(e$1),m=defaultStyles[f];return jsx(FileIcon,{extension:f,...m||{}})})()})}),jsx(d$1,{children:jsx(e,{children:jsx("div",{className:"fk-text-sm fk-text-muted-foreground",children:"Preview not available"})})})]})})}):null}export{O as a};//# sourceMappingURL=chunk-WB6HSMJT.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-WB6HSMJT.js.map
|