@dyrected/vue 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +50 -0
- package/dist/bridge/react-in-vue.d.ts +21 -0
- package/dist/components/DyrectedAdmin.vue.d.ts +23 -0
- package/dist/components/DyrectedImage.vue.d.ts +10 -0
- package/dist/components/DyrectedMedia.vue.d.ts +20 -0
- package/dist/composables/useDyrected.d.ts +44 -0
- package/dist/composables/useDyrectedAuth.d.ts +32 -0
- package/dist/composables/useLivePreview.d.ts +24 -0
- package/dist/index.cjs +1 -0
- package/dist/index.css +2 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +313 -0
- package/package.json +58 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
Business Source License 1.1
|
|
2
|
+
|
|
3
|
+
Parameters
|
|
4
|
+
|
|
5
|
+
Licensor: Dyrected
|
|
6
|
+
Licensed Work: Dyrected
|
|
7
|
+
Additional Use Grant: Commercial use is permitted as long as it is not used to provide a hosted or managed service that competes with Dyrected.
|
|
8
|
+
Change Date: 2030-05-11
|
|
9
|
+
Change License: Apache License 2.0
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
Business Source License 1.1
|
|
14
|
+
|
|
15
|
+
License text copyright © 2024 MariaDB plc, All Rights Reserved.
|
|
16
|
+
“Business Source License” is a trademark of MariaDB plc.
|
|
17
|
+
|
|
18
|
+
### Terms
|
|
19
|
+
|
|
20
|
+
The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work. The Licensor may make an Additional Use Grant, above, permitting limited production use.
|
|
21
|
+
|
|
22
|
+
Effective on the Change Date, or the fourth anniversary of the first publicly available distribution of a specific version of the Licensed Work under this License, whichever comes first, the Licensor hereby grants you rights under the terms of the Change License, and the rights granted in the paragraph above terminate.
|
|
23
|
+
|
|
24
|
+
If your use of the Licensed Work does not comply with the requirements currently in effect as described in this License, you must purchase a commercial license from the Licensor, its affiliated entities, or authorized resellers, or you must refrain from using the Licensed Work.
|
|
25
|
+
|
|
26
|
+
All copies of the original and modified Licensed Work, and derivative works of the Licensed Work, are subject to this License. This License applies separately for each version of the Licensed Work and the Change Date may vary for each version of the Licensed Work released by Licensor.
|
|
27
|
+
|
|
28
|
+
You must conspicuously display this License on each original or modified copy of the Licensed Work. If you receive the Licensed Work in original or modified form from a third party, the terms and conditions set forth in this License apply to your use of that work.
|
|
29
|
+
|
|
30
|
+
Any use of the Licensed Work in violation of this License will automatically terminate your rights under this License for the current and all other versions of the Licensed Work.
|
|
31
|
+
|
|
32
|
+
This License does not grant you any right in any trademark or logo of Licensor or its affiliates (provided that you may use a trademark or logo of Licensor as expressly required by this License).
|
|
33
|
+
|
|
34
|
+
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
|
|
35
|
+
|
|
36
|
+
MariaDB hereby grants you permission to use this License’s text to license your works, and to refer to it using the trademark “Business Source License”, as long as you comply with the Covenants of Licensor below.
|
|
37
|
+
|
|
38
|
+
### Covenants of Licensor
|
|
39
|
+
|
|
40
|
+
In consideration of the right to use this License’s text and the “Business Source License” name and trademark, Licensor covenants to MariaDB, and to all other recipients of the licensed work to be provided by Licensor:
|
|
41
|
+
|
|
42
|
+
1. To specify as the Change License the GPL Version 2.0 or any later version, or a license that is compatible with GPL Version 2.0 or a later version, where “compatible” means that software provided under the Change License can be included in a program with software provided under GPL Version 2.0 or a later version. Licensor may specify additional Change Licenses without limitation.
|
|
43
|
+
|
|
44
|
+
2. To either: (a) specify an additional grant of rights to use that does not impose any additional restriction on the right granted in this License, as the Additional Use Grant; or (b) insert the text “None”.
|
|
45
|
+
|
|
46
|
+
3. Not to modify this License in any other way.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
The Business Source License (this document, or the “License”) is not an Open Source license. However, the Licensed Work will eventually be made available under an Open Source License, as stated in this License.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* wrapVueComponent — Higher-order component that wraps a Vue 3 component
|
|
5
|
+
* so it can be rendered within a React component tree.
|
|
6
|
+
*/
|
|
7
|
+
export declare function wrapVueComponent(VueComp: Component): {
|
|
8
|
+
(props: any): React.DetailedReactHTMLElement<{
|
|
9
|
+
ref: React.RefObject<HTMLDivElement | null>;
|
|
10
|
+
className: string;
|
|
11
|
+
style: {
|
|
12
|
+
display: "contents";
|
|
13
|
+
};
|
|
14
|
+
}, HTMLDivElement>;
|
|
15
|
+
displayName: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* wrapComponents — Recursively wraps all components in a nested object.
|
|
19
|
+
* Useful for the `components` prop in DyrectedAdmin.
|
|
20
|
+
*/
|
|
21
|
+
export declare function wrapComponents(components: any): any;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
/**
|
|
3
|
+
* The Dyrected configuration object.
|
|
4
|
+
*/
|
|
5
|
+
config: {
|
|
6
|
+
apiKey: string;
|
|
7
|
+
siteId: string;
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* The base path where the admin is mounted.
|
|
12
|
+
* @default "/admin"
|
|
13
|
+
*/
|
|
14
|
+
basename?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Custom components to inject into the Admin UI.
|
|
17
|
+
* Can be raw Vue components; they will be automatically wrapped.
|
|
18
|
+
*/
|
|
19
|
+
components?: any;
|
|
20
|
+
};
|
|
21
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
22
|
+
declare const _default: typeof __VLS_export;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Media } from '@dyrected/sdk';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
media: Media | string;
|
|
4
|
+
width?: number | string;
|
|
5
|
+
height?: number | string;
|
|
6
|
+
alt?: string;
|
|
7
|
+
};
|
|
8
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
9
|
+
declare const _default: typeof __VLS_export;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Media } from '@dyrected/sdk';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
media: Media | string;
|
|
4
|
+
width?: number | string;
|
|
5
|
+
height?: number | string;
|
|
6
|
+
alt?: string;
|
|
7
|
+
};
|
|
8
|
+
declare var __VLS_1: {};
|
|
9
|
+
type __VLS_Slots = {} & {
|
|
10
|
+
fallback?: (props: typeof __VLS_1) => any;
|
|
11
|
+
};
|
|
12
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
14
|
+
declare const _default: typeof __VLS_export;
|
|
15
|
+
export default _default;
|
|
16
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
17
|
+
new (): {
|
|
18
|
+
$slots: S;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Ref, InjectionKey } from 'vue';
|
|
2
|
+
import { DyrectedClient, BaseSchema } from '@dyrected/sdk';
|
|
3
|
+
export declare const DYRECTED_CLIENT_KEY: InjectionKey<DyrectedClient>;
|
|
4
|
+
/**
|
|
5
|
+
* useDyrectedClient — Returns the injected Dyrected client.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useDyrectedClient<TSchema extends BaseSchema = any>(): DyrectedClient<TSchema>;
|
|
8
|
+
/**
|
|
9
|
+
* provideDyrectedClient — Provides a Dyrected client to the Vue app.
|
|
10
|
+
*/
|
|
11
|
+
export declare function provideDyrectedClient(client: DyrectedClient): {
|
|
12
|
+
[x: number]: DyrectedClient<any>;
|
|
13
|
+
};
|
|
14
|
+
export interface UseDyrectedOptions {
|
|
15
|
+
depth?: number;
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* useDyrected — Reactive composable for fetching a single document.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useDyrected<T = any>(collection: string, idOrSlug: string, options?: UseDyrectedOptions): {
|
|
22
|
+
doc: Ref<T | null, T | null>;
|
|
23
|
+
pending: Ref<boolean, boolean>;
|
|
24
|
+
error: Ref<any, any>;
|
|
25
|
+
refresh: () => Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* useDyrectedCollection — Reactive composable for fetching a collection.
|
|
29
|
+
*/
|
|
30
|
+
export declare function useDyrectedCollection<T = any>(collection: string, options?: UseDyrectedOptions): {
|
|
31
|
+
docs: Ref<T[], T[]>;
|
|
32
|
+
pending: Ref<boolean, boolean>;
|
|
33
|
+
error: Ref<any, any>;
|
|
34
|
+
refresh: () => Promise<void>;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* useDyrectedGlobal — Reactive composable for fetching a global.
|
|
38
|
+
*/
|
|
39
|
+
export declare function useDyrectedGlobal<T = any>(slug: string, options?: UseDyrectedOptions): {
|
|
40
|
+
data: Ref<T | null, T | null>;
|
|
41
|
+
pending: Ref<boolean, boolean>;
|
|
42
|
+
error: Ref<any, any>;
|
|
43
|
+
refresh: () => Promise<void>;
|
|
44
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { DyrectedClient } from '@dyrected/sdk';
|
|
3
|
+
export interface DyrectedAuthUser {
|
|
4
|
+
id: string;
|
|
5
|
+
email: string;
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}
|
|
8
|
+
export interface UseDyrectedAuthOptions {
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
apiKey: string;
|
|
11
|
+
siteId?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Optional token storage. Defaults to localStorage.
|
|
14
|
+
*/
|
|
15
|
+
storage?: {
|
|
16
|
+
getItem: (key: string) => string | null;
|
|
17
|
+
setItem: (key: string, value: string) => void;
|
|
18
|
+
removeItem: (key: string) => void;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* useDyrectedAuth — Generic Vue composable for auth collections.
|
|
23
|
+
*/
|
|
24
|
+
export declare function useDyrectedAuth(collection: string, options: UseDyrectedAuthOptions): {
|
|
25
|
+
user: Ref<DyrectedAuthUser | null, DyrectedAuthUser | null>;
|
|
26
|
+
isLoggedIn: import('vue').ComputedRef<boolean>;
|
|
27
|
+
token: Ref<string | null, string | null>;
|
|
28
|
+
login: (email: string, password: string) => Promise<DyrectedAuthUser>;
|
|
29
|
+
logout: () => Promise<void>;
|
|
30
|
+
fetchMe: () => Promise<DyrectedAuthUser | null>;
|
|
31
|
+
client: DyrectedClient<any>;
|
|
32
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
export interface LivePreviewOptions<T> {
|
|
3
|
+
/**
|
|
4
|
+
* The initial data to show before any postMessage arrives.
|
|
5
|
+
*/
|
|
6
|
+
initialData: T;
|
|
7
|
+
/**
|
|
8
|
+
* The origin of the Dyrected Admin UI that will send preview messages.
|
|
9
|
+
* Defaults to '*' (accepts from any origin).
|
|
10
|
+
*/
|
|
11
|
+
serverURL?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* useLivePreview — Vue composable for Dyrected live preview (postMessage mode).
|
|
15
|
+
*
|
|
16
|
+
* Listen for postMessage events from the Admin UI and update data reactively.
|
|
17
|
+
* Supports inline edit mode: when the Admin sends 'dyrected-enter-edit-mode',
|
|
18
|
+
* elements with data-dy-path become clickable so the Admin sidebar scrolls to
|
|
19
|
+
* the matching field.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useLivePreview<T = any>(options: LivePreviewOptions<T>): {
|
|
22
|
+
data: Ref<T>;
|
|
23
|
+
isLive: Ref<boolean>;
|
|
24
|
+
};
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`vue`),l=require(`react`);l=s(l,1);let u=require(`@dyrected/sdk`);function d(e){let t=t=>{let n=(0,l.useRef)(null),r=(0,l.useRef)(null),i=(0,l.useRef)((0,c.ref)(t));return(0,l.useEffect)(()=>{i.current.value=t},[t]),(0,l.useEffect)(()=>{if(n.current){let t=(0,c.createApp)({setup(){return()=>(0,c.h)(e,i.current.value)}});t.mount(n.current),r.current=t}return()=>{r.current&&r.current.unmount()}},[]),l.default.createElement(`div`,{ref:n,className:`dyrected-vue-bridge-container`,style:{display:`contents`}})};return t.displayName=`VueWrapper(${e.name||`Component`})`,t}function f(e){if(!e)return e;let t={};for(let[n,r]of Object.entries(e))typeof r==`object`&&r&&!(`render`in r)&&!(`setup`in r)?t[n]=f(r):typeof r==`function`||typeof r==`object`&&r?t[n]=d(r):t[n]=r;return t}var p=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})((0,c.defineComponent)({__name:`DyrectedAdmin`,props:{config:{},basename:{},components:{}},setup(e){let t=e,n=(0,c.ref)(null),r=null,i=(0,c.computed)(()=>f(t.components)),a=async()=>{if(r&&r(),n.value)try{let{renderAdminUI:e}=await import(`@dyrected/admin`);r=e(n.value,{apiKey:t.config.apiKey,siteId:t.config.siteId,baseUrl:t.config.baseUrl,basename:t.basename||`/admin`,isEmbedded:!1,components:i.value})}catch(e){console.error(`[DyrectedAdmin] Failed to mount admin UI:`,e)}};return(0,c.onMounted)(async()=>{await(0,c.nextTick)(),await a()}),(0,c.watch)(()=>[t.config,t.components],a,{deep:!0}),(0,c.onUnmounted)(()=>{r&&r()}),(e,t)=>((0,c.openBlock)(),(0,c.createElementBlock)(`div`,{ref_key:`container`,ref:n,class:`dyrected-admin-wrapper`},null,512))}}),[[`__scopeId`,`data-v-aa7453b9`]]),m=[`src`,`width`,`height`,`alt`],h=[`src`,`width`,`height`,`alt`],g=(0,c.defineComponent)({__name:`DyrectedImage`,props:{media:{},width:{},height:{},alt:{}},setup(e){return(t,n)=>typeof e.media==`string`?((0,c.openBlock)(),(0,c.createElementBlock)(`img`,(0,c.mergeProps)({key:0,src:e.media,width:e.width||500,height:e.height||500,alt:e.alt||``},t.$attrs),null,16,m)):((0,c.openBlock)(),(0,c.createElementBlock)(`img`,(0,c.mergeProps)({key:1,src:e.media.url,width:e.width||e.media.width||500,height:e.height||e.media.height||500,alt:e.alt||e.media.filename},t.$attrs),null,16,h))}}),_={key:0,class:`dyrected-media-video`,style:{position:`relative`,"padding-bottom":`56.25%`,height:`0`}},v=[`src`],y=[`src`,`width`,`height`,`alt`],b=[`src`,`width`,`height`],x={key:3,class:`dyrected-media-file`},S=[`href`],C=(0,c.defineComponent)({__name:`DyrectedMedia`,props:{media:{},width:{},height:{},alt:{}},setup(e){let t=e,n=(0,c.computed)(()=>typeof t.media==`string`?t.media:t.media.url),r=(0,c.computed)(()=>typeof t.media==`string`?``:t.media.filename),i=(0,c.computed)(()=>typeof t.media==`string`?null:t.media.mimeType),a=(0,c.computed)(()=>{let e=n.value.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);return e&&e[2].length===11?e[2]:null}),o=(0,c.computed)(()=>i.value?.startsWith(`image/`)||n.value.match(/\.(jpg|jpeg|png|gif|webp|avif|svg)$/i)),s=(0,c.computed)(()=>i.value?.startsWith(`video/`)||n.value.match(/\.(mp4|webm|ogg)$/i));return(t,i)=>a.value?((0,c.openBlock)(),(0,c.createElementBlock)(`div`,_,[(0,c.createElementVNode)(`iframe`,{src:`https://www.youtube.com/embed/${a.value}`,frameborder:`0`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`,allowfullscreen:``,style:{position:`absolute`,top:`0`,left:`0`,width:`100%`,height:`100%`}},null,8,v)])):o.value?((0,c.openBlock)(),(0,c.createElementBlock)(`img`,(0,c.mergeProps)({key:1,src:n.value,width:e.width||500,height:e.height||500,alt:e.alt||r.value},t.$attrs),null,16,y)):s.value?((0,c.openBlock)(),(0,c.createElementBlock)(`video`,(0,c.mergeProps)({key:2,src:n.value,controls:``,width:e.width||500,height:e.height||500,class:`dyrected-media-video`},t.$attrs),null,16,b)):((0,c.openBlock)(),(0,c.createElementBlock)(`div`,x,[(0,c.renderSlot)(t.$slots,`fallback`,{},()=>[(0,c.createElementVNode)(`a`,{href:n.value,target:`_blank`,rel:`noopener noreferrer`,class:`dyrected-file-link`},` Download `+(0,c.toDisplayString)(r.value||`File`),9,S)])]))}}),w=Symbol(`dyrected-client`);function T(){let e=(0,c.inject)(w);if(!e)throw Error(`Dyrected client not found. Use provideDyrectedClient() or the DyrectedVue plugin.`);return e}function E(e){return{[w]:e}}function D(e,t,n={}){let r=T(),i=(0,c.ref)(null),a=(0,c.ref)(!0),o=(0,c.ref)(null),s=async()=>{a.value=!0;try{i.value=await r.findOne(e,t,n),o.value=null}catch(n){console.error(`[useDyrected] Error fetching ${e}:${t}`,n),o.value=n}finally{a.value=!1}};return(0,c.onMounted)(s),(0,c.watch)(()=>[e,t,JSON.stringify(n)],s),{doc:i,pending:a,error:o,refresh:s}}function O(e,t={}){let n=T(),r=(0,c.ref)([]),i=(0,c.ref)(!0),a=(0,c.ref)(null),o=async()=>{i.value=!0;try{r.value=(await n.collection(e).find(t).exec()).docs||[],a.value=null}catch(t){console.error(`[useDyrectedCollection] Error fetching ${e}`,t),a.value=t}finally{i.value=!1}};return(0,c.onMounted)(o),(0,c.watch)(()=>[e,JSON.stringify(t)],o),{docs:r,pending:i,error:a,refresh:o}}function k(e,t={}){let n=T(),r=(0,c.ref)(null),i=(0,c.ref)(!0),a=(0,c.ref)(null),o=async()=>{i.value=!0;try{r.value=await n.global(e).get(t),a.value=null}catch(t){console.error(`[useDyrectedGlobal] Error fetching ${e}`,t),a.value=t}finally{i.value=!1}};return(0,c.onMounted)(o),(0,c.watch)(()=>[e,JSON.stringify(t)],o),{data:r,pending:i,error:a,refresh:o}}function A(e){let t=(0,c.ref)(e.initialData),n=(0,c.ref)(!1),r=e.serverURL||`*`,i=null;function a(){let e=document.querySelectorAll(`[data-dy-path]`),t=Array.from(e).map(e=>{let t=e.dataset.dyPath,n=e=>{e.preventDefault(),e.stopPropagation(),window.parent.postMessage({type:`dyrected-element-clicked`,path:t},r)},i=()=>{e.style.outline=`2px solid rgba(99,102,241,0.7)`,e.style.outlineOffset=`2px`,e.style.cursor=`pointer`},a=()=>{e.style.outline=``,e.style.outlineOffset=``,e.style.cursor=``};return e.addEventListener(`click`,n,!0),e.addEventListener(`mouseenter`,i),e.addEventListener(`mouseleave`,a),()=>{e.removeEventListener(`click`,n,!0),e.removeEventListener(`mouseenter`,i),e.removeEventListener(`mouseleave`,a),e.style.outline=``,e.style.outlineOffset=``,e.style.cursor=``}});return()=>t.forEach(e=>e())}function o(e){if(r!==`*`&&e.origin!==r)return;let{type:o,data:s}=e.data||{};o===`dyrected-live-preview`&&(t.value=s,n.value=!0),o===`dyrected-live-preview-ready`&&window.parent.postMessage({type:`dyrected-live-preview-ack`},r),o===`dyrected-enter-edit-mode`&&(i?.(),i=a()),o===`dyrected-exit-edit-mode`&&(i?.(),i=null)}return(0,c.onMounted)(()=>{window.addEventListener(`message`,o),window.parent.postMessage({type:`dyrected-live-preview-ready`},r)}),(0,c.onUnmounted)(()=>{window.removeEventListener(`message`,o),i?.(),i=null}),{data:t,isLive:n}}function j(e,t){let n=t.storage||(typeof window<`u`?window.localStorage:null),r=`dyrected_token_${e}`,i=(0,c.ref)(n?.getItem(r)||null),a=(0,c.ref)(null),o=(0,c.computed)(()=>!!i.value),s=(0,u.createClient)({baseUrl:t.baseUrl,apiKey:t.apiKey,siteId:t.siteId});i.value&&s.setToken(i.value);async function l(t,o){let{token:c,user:l}=await s.collection(e).login(t,o);return i.value=c,a.value=l,n&&n.setItem(r,c),s.setToken(c),l}async function d(){if(i.value)try{await s.collection(e).logout()}catch{}i.value=null,a.value=null,n&&n.removeItem(r)}async function f(){if(!i.value)return null;try{let t=await s.collection(e).me();return a.value=t,t}catch{return i.value=null,a.value=null,n&&n.removeItem(r),null}}return{user:a,isLoggedIn:o,token:i,login:l,logout:d,fetchMe:f,client:s}}exports.DYRECTED_CLIENT_KEY=w,exports.DyrectedAdmin=p,exports.DyrectedImage=g,exports.DyrectedMedia=C,exports.provideDyrectedClient=E,exports.useDyrected=D,exports.useDyrectedAuth=j,exports.useDyrectedClient=T,exports.useDyrectedCollection=O,exports.useDyrectedGlobal=k,exports.useLivePreview=A,exports.wrapComponents=f,exports.wrapVueComponent=d;
|
package/dist/index.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@import "https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap";*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-sans), ui-sans-serif, system-ui, sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--font-sans:"DM Sans", ui-sans-serif, system-ui, sans-serif;--font-serif:"Instrument Serif", ui-serif, Georgia, serif;--background:60 17% 97%;--foreground:60 3% 6%;--card:60 10% 95%;--card-foreground:60 3% 6%;--popover:60 17% 97%;--popover-foreground:60 3% 6%;--primary:38 92% 50%;--primary-foreground:60 3% 6%;--secondary:60 10% 95%;--secondary-foreground:60 3% 6%;--muted:60 10% 95%;--muted-foreground:60 4% 40%;--accent:60 10% 95%;--accent-foreground:60 3% 6%;--destructive:0 84% 60%;--destructive-foreground:60 17% 97%;--border:60 7% 89%;--input:60 7% 89%;--ring:38 92% 50% / .15;--radius:.5rem;--sidebar-background:60 17% 97%;--sidebar-foreground:60 3% 6%;--sidebar-primary:38 92% 50%;--sidebar-primary-foreground:60 3% 6%;--sidebar-accent:60 10% 95%;--sidebar-accent-foreground:38 92% 50%;--sidebar-border:60 7% 89%;--sidebar-ring:38 92% 50%}.dy-admin-ui{--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-sans), ui-sans-serif, system-ui, sans-serif}.dy-admin-ui h1,.dy-admin-ui h2,.dy-admin-ui h3,.dy-admin-ui h4,.dy-admin-ui h5,.dy-admin-ui h6{font-family:var(--font-serif), ui-serif, Georgia, serif}.dy-admin-ui input,.dy-admin-ui select,.dy-admin-ui textarea{border-color:hsl(var(--border) / .6);background-color:#0000;transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-admin-ui input:focus,.dy-admin-ui select:focus,.dy-admin-ui textarea:focus{outline-offset:2px;outline:2px solid #0000}.dy-admin-ui input:focus-visible,.dy-admin-ui select:focus-visible,.dy-admin-ui textarea:focus-visible{outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000);--tw-ring-offset-width:0px;outline:2px solid #0000}.dy-admin-ui input:focus,.dy-admin-ui select:focus,.dy-admin-ui textarea:focus{border-color:hsl(var(--primary) / .5)}.dy-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dy-pointer-events-none{pointer-events:none}.dy-invisible{visibility:hidden}.dy-fixed{position:fixed}.dy-absolute{position:absolute}.dy-relative{position:relative}.dy-inset-0{inset:0}.dy-inset-x-0{left:0;right:0}.dy-inset-y-0{top:0;bottom:0}.dy-bottom-0{bottom:0}.dy-bottom-3{bottom:.75rem}.dy-bottom-8{bottom:2rem}.dy-left-0{left:0}.dy-left-2{left:.5rem}.dy-left-3{left:.75rem}.dy-left-3\.5{left:.875rem}.dy-left-4{left:1rem}.dy-left-\[50\%\]{left:50%}.dy-right-0{right:0}.dy-right-1{right:.25rem}.dy-right-2{right:.5rem}.dy-right-2\.5{right:.625rem}.dy-right-3{right:.75rem}.dy-right-4{right:1rem}.dy-right-8{right:2rem}.dy-top-0{top:0}.dy-top-1\.5{top:.375rem}.dy-top-1\/2{top:50%}.dy-top-2{top:.5rem}.dy-top-2\.5{top:.625rem}.dy-top-3\.5{top:.875rem}.dy-top-4{top:1rem}.dy-top-\[50\%\]{top:50%}.dy-z-0{z-index:0}.dy-z-10{z-index:10}.dy-z-20{z-index:20}.dy-z-30{z-index:30}.dy-z-40{z-index:40}.dy-z-50{z-index:50}.dy-z-\[100\]{z-index:100}.dy-col-span-7{grid-column:span 7/span 7}.dy-m-0{margin:0}.dy--mx-1{margin-left:-.25rem;margin-right:-.25rem}.dy--mx-2{margin-left:-.5rem;margin-right:-.5rem}.dy--mx-4{margin-left:-1rem;margin-right:-1rem}.dy-mx-1{margin-left:.25rem;margin-right:.25rem}.dy-mx-2{margin-left:.5rem;margin-right:.5rem}.dy-mx-3{margin-left:.75rem;margin-right:.75rem}.dy-mx-3\.5{margin-left:.875rem;margin-right:.875rem}.dy-mx-auto{margin-left:auto;margin-right:auto}.dy-my-1{margin-top:.25rem;margin-bottom:.25rem}.dy-my-2{margin-top:.5rem;margin-bottom:.5rem}.dy--ml-4{margin-left:-1rem}.dy--mt-4{margin-top:-1rem}.dy--mt-6{margin-top:-1.5rem}.dy-mb-0\.5{margin-bottom:.125rem}.dy-mb-1{margin-bottom:.25rem}.dy-mb-1\.5{margin-bottom:.375rem}.dy-mb-2{margin-bottom:.5rem}.dy-mb-3{margin-bottom:.75rem}.dy-mb-4{margin-bottom:1rem}.dy-mb-6{margin-bottom:1.5rem}.dy-mb-8{margin-bottom:2rem}.dy-ml-1{margin-left:.25rem}.dy-ml-1\.5{margin-left:.375rem}.dy-ml-2{margin-left:.5rem}.dy-ml-4{margin-left:1rem}.dy-ml-auto{margin-left:auto}.dy-mr-1{margin-right:.25rem}.dy-mr-1\.5{margin-right:.375rem}.dy-mr-2{margin-right:.5rem}.dy-mr-3{margin-right:.75rem}.dy-mr-4{margin-right:1rem}.dy-mt-0\.5{margin-top:.125rem}.dy-mt-1{margin-top:.25rem}.dy-mt-2{margin-top:.5rem}.dy-mt-4{margin-top:1rem}.dy-mt-8{margin-top:2rem}.dy-mt-auto{margin-top:auto}.dy-block{display:block}.dy-flex{display:flex}.dy-inline-flex{display:inline-flex}.dy-grid{display:grid}.dy-hidden{display:none}.dy-aspect-square{aspect-ratio:1}.dy-size-4{width:1rem;height:1rem}.dy-size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.dy-h-1\.5{height:.375rem}.dy-h-10{height:2.5rem}.dy-h-11{height:2.75rem}.dy-h-12{height:3rem}.dy-h-14{height:3.5rem}.dy-h-16{height:4rem}.dy-h-2{height:.5rem}.dy-h-2\.5{height:.625rem}.dy-h-20{height:5rem}.dy-h-24{height:6rem}.dy-h-3{height:.75rem}.dy-h-3\.5{height:.875rem}.dy-h-4{height:1rem}.dy-h-5{height:1.25rem}.dy-h-6{height:1.5rem}.dy-h-60{height:15rem}.dy-h-64{height:16rem}.dy-h-7{height:1.75rem}.dy-h-8{height:2rem}.dy-h-80{height:20rem}.dy-h-9{height:2.25rem}.dy-h-\[--cell-size\]{height:var(--cell-size)}.dy-h-\[15px\]{height:15px}.dy-h-\[17px\]{height:17px}.dy-h-\[1px\]{height:1px}.dy-h-\[240px\]{height:240px}.dy-h-\[300px\]{height:300px}.dy-h-\[400px\]{height:400px}.dy-h-\[650px\]{height:650px}.dy-h-\[calc\(100vh-0px\)\]{height:100vh}.dy-h-\[calc\(100vh-320px\)\]{height:calc(100vh - 320px)}.dy-h-auto{height:auto}.dy-h-full{height:100%}.dy-h-px{height:1px}.dy-h-screen{height:100vh}.dy-h-svh{height:100svh}.dy-max-h-0{max-height:0}.dy-max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.dy-max-h-\[1000px\]{max-height:1000px}.dy-max-h-\[240px\]{max-height:240px}.dy-max-h-\[300px\]{max-height:300px}.dy-max-h-\[400px\]{max-height:400px}.dy-max-h-full{max-height:100%}.dy-min-h-0{min-height:0}.dy-min-h-10{min-height:2.5rem}.dy-min-h-\[150px\]{min-height:150px}.dy-min-h-\[400px\]{min-height:400px}.dy-min-h-\[600px\]{min-height:600px}.dy-min-h-\[80px\]{min-height:80px}.dy-min-h-full{min-height:100%}.dy-min-h-screen{min-height:100vh}.dy-min-h-svh{min-height:100svh}.dy-w-0{width:0}.dy-w-1\.5{width:.375rem}.dy-w-10{width:2.5rem}.dy-w-11{width:2.75rem}.dy-w-12{width:3rem}.dy-w-14{width:3.5rem}.dy-w-16{width:4rem}.dy-w-2{width:.5rem}.dy-w-2\.5{width:.625rem}.dy-w-20{width:5rem}.dy-w-24{width:6rem}.dy-w-3{width:.75rem}.dy-w-3\.5{width:.875rem}.dy-w-3\/4{width:75%}.dy-w-4{width:1rem}.dy-w-5{width:1.25rem}.dy-w-6{width:1.5rem}.dy-w-7{width:1.75rem}.dy-w-72{width:18rem}.dy-w-8{width:2rem}.dy-w-80{width:20rem}.dy-w-9{width:2.25rem}.dy-w-\[--cell-size\]{width:var(--cell-size)}.dy-w-\[--sidebar-width\]{width:var(--sidebar-width)}.dy-w-\[15px\]{width:15px}.dy-w-\[17px\]{width:17px}.dy-w-\[1px\]{width:1px}.dy-w-\[220px\]{width:220px}.dy-w-\[340px\]{width:340px}.dy-w-\[400px\]{width:400px}.dy-w-\[56px\]{width:56px}.dy-w-auto{width:auto}.dy-w-fit{width:fit-content}.dy-w-full{width:100%}.dy-w-px{width:1px}.dy-min-w-0{min-width:0}.dy-min-w-10{min-width:2.5rem}.dy-min-w-11{min-width:2.75rem}.dy-min-w-5{min-width:1.25rem}.dy-min-w-9{min-width:2.25rem}.dy-min-w-\[--cell-size\]{min-width:var(--cell-size)}.dy-min-w-\[120px\]{min-width:120px}.dy-min-w-\[8rem\]{min-width:8rem}.dy-max-w-2xl{max-width:42rem}.dy-max-w-4xl{max-width:56rem}.dy-max-w-5xl{max-width:64rem}.dy-max-w-\[150px\]{max-width:150px}.dy-max-w-full{max-width:100%}.dy-max-w-lg{max-width:32rem}.dy-max-w-md{max-width:28rem}.dy-max-w-sm{max-width:24rem}.dy-max-w-xs{max-width:20rem}.dy-flex-1{flex:1}.dy-flex-shrink-0,.dy-shrink-0{flex-shrink:0}.dy-caption-bottom{caption-side:bottom}.dy-origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.dy-origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.dy-origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.dy-origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.dy--translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy--translate-x-full{--tw-translate-x:-100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy--translate-x-px{--tw-translate-x:-1px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy--translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-translate-x-\[-50\%\]{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-translate-x-px{--tw-translate-x:1px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-translate-y-2{--tw-translate-y:.5rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-translate-y-\[-50\%\]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-rotate-3{--tw-rotate:3deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-scale-75{--tw-scale-x:.75;--tw-scale-y:.75;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-scale-\[0\.98\]{--tw-scale-x:.98;--tw-scale-y:.98;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dy-transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes dy-bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.dy-animate-bounce{animation:1s infinite dy-bounce}@keyframes dy-pulse{50%{opacity:.5}}.dy-animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite dy-pulse}@keyframes dy-spin{to{transform:rotate(360deg)}}.dy-animate-spin{animation:1s linear infinite dy-spin}.dy-cursor-crosshair{cursor:crosshair}.dy-cursor-default{cursor:default}.dy-cursor-grab{cursor:grab}.dy-cursor-pointer{cursor:pointer}.dy-touch-none{touch-action:none}.dy-select-none{-webkit-user-select:none;user-select:none}.dy-select-all{-webkit-user-select:all;user-select:all}.dy-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.dy-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.dy-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.dy-flex-row{flex-direction:row}.dy-flex-col{flex-direction:column}.dy-flex-col-reverse{flex-direction:column-reverse}.dy-flex-wrap{flex-wrap:wrap}.dy-place-content-center{place-content:center}.dy-items-start{align-items:flex-start}.dy-items-end{align-items:flex-end}.dy-items-center{align-items:center}.dy-justify-start{justify-content:flex-start}.dy-justify-end{justify-content:flex-end}.dy-justify-center{justify-content:center}.dy-justify-between{justify-content:space-between}.dy-gap-0{gap:0}.dy-gap-1{gap:.25rem}.dy-gap-1\.5{gap:.375rem}.dy-gap-2{gap:.5rem}.dy-gap-2\.5{gap:.625rem}.dy-gap-3{gap:.75rem}.dy-gap-4{gap:1rem}.dy-gap-6{gap:1.5rem}.dy-gap-8{gap:2rem}.dy-gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.dy-gap-y-4{row-gap:1rem}.dy-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.dy-space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.dy-space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.dy-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.dy-space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.dy-space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.dy-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.dy-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.dy-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.dy-space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.dy-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.dy-space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.dy-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.dy-divide-border\/30>:not([hidden])~:not([hidden]){border-color:hsl(var(--border) / .3)}.dy-overflow-auto{overflow:auto}.dy-overflow-hidden{overflow:hidden}.dy-overflow-y-auto{overflow-y:auto}.dy-overflow-x-hidden{overflow-x:hidden}.dy-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dy-whitespace-nowrap{white-space:nowrap}.dy-whitespace-pre-wrap{white-space:pre-wrap}.dy-text-nowrap{text-wrap:nowrap}.dy-rounded{border-radius:.25rem}.dy-rounded-2xl{border-radius:1rem}.dy-rounded-3xl{border-radius:1.5rem}.dy-rounded-\[2\.5rem\]{border-radius:2.5rem}.dy-rounded-\[inherit\]{border-radius:inherit}.dy-rounded-full{border-radius:9999px}.dy-rounded-lg{border-radius:var(--radius)}.dy-rounded-md{border-radius:calc(var(--radius) - 2px)}.dy-rounded-none{border-radius:0}.dy-rounded-sm{border-radius:calc(var(--radius) - 4px)}.dy-rounded-xl{border-radius:.75rem}.dy-rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.dy-rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.dy-rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.dy-border{border-width:1px}.dy-border-2{border-width:2px}.dy-border-4{border-width:4px}.dy-border-b{border-bottom-width:1px}.dy-border-b-2{border-bottom-width:2px}.dy-border-l{border-left-width:1px}.dy-border-l-0{border-left-width:0}.dy-border-r{border-right-width:1px}.dy-border-t{border-top-width:1px}.dy-border-dashed{border-style:dashed}.dy-border-none{border-style:none}.dy-border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.dy-border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity,1))}.dy-border-border{border-color:hsl(var(--border))}.dy-border-border\/10{border-color:hsl(var(--border) / .1)}.dy-border-border\/30{border-color:hsl(var(--border) / .3)}.dy-border-border\/40{border-color:hsl(var(--border) / .4)}.dy-border-border\/50{border-color:hsl(var(--border) / .5)}.dy-border-border\/60{border-color:hsl(var(--border) / .6)}.dy-border-card{border-color:hsl(var(--card))}.dy-border-current{border-color:currentColor}.dy-border-destructive{border-color:hsl(var(--destructive))}.dy-border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.dy-border-input{border-color:hsl(var(--input))}.dy-border-muted{border-color:hsl(var(--muted))}.dy-border-muted\/20{border-color:hsl(var(--muted) / .2)}.dy-border-muted\/30{border-color:hsl(var(--muted) / .3)}.dy-border-primary{border-color:hsl(var(--primary))}.dy-border-primary\/10{border-color:hsl(var(--primary) / .1)}.dy-border-primary\/20{border-color:hsl(var(--primary) / .2)}.dy-border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity,1))}.dy-border-sidebar-border{border-color:hsl(var(--sidebar-border))}.dy-border-transparent{border-color:#0000}.dy-border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.dy-border-white\/10{border-color:#ffffff1a}.dy-border-white\/20{border-color:#fff3}.dy-border-white\/30{border-color:#ffffff4d}.dy-border-l-transparent{border-left-color:#0000}.dy-border-t-primary{border-top-color:hsl(var(--primary))}.dy-border-t-transparent{border-top-color:#0000}.dy-border-t-white{--tw-border-opacity:1;border-top-color:rgb(255 255 255/var(--tw-border-opacity,1))}.dy-bg-accent{background-color:hsl(var(--accent))}.dy-bg-accent\/50{background-color:hsl(var(--accent) / .5)}.dy-bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.dy-bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.dy-bg-background{background-color:hsl(var(--background))}.dy-bg-background\/50{background-color:hsl(var(--background) / .5)}.dy-bg-black\/20{background-color:#0003}.dy-bg-black\/30{background-color:#0000004d}.dy-bg-black\/40{background-color:#0006}.dy-bg-black\/60{background-color:#0009}.dy-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.dy-bg-blue-50\/50{background-color:#eff6ff80}.dy-bg-border{background-color:hsl(var(--border))}.dy-bg-border\/40{background-color:hsl(var(--border) / .4)}.dy-bg-border\/50{background-color:hsl(var(--border) / .5)}.dy-bg-card{background-color:hsl(var(--card))}.dy-bg-destructive{background-color:hsl(var(--destructive))}.dy-bg-destructive-foreground{background-color:hsl(var(--destructive-foreground))}.dy-bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.dy-bg-destructive\/5{background-color:hsl(var(--destructive) / .05)}.dy-bg-destructive\/90{background-color:hsl(var(--destructive) / .9)}.dy-bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.dy-bg-muted{background-color:hsl(var(--muted))}.dy-bg-muted\/10{background-color:hsl(var(--muted) / .1)}.dy-bg-muted\/20{background-color:hsl(var(--muted) / .2)}.dy-bg-muted\/30{background-color:hsl(var(--muted) / .3)}.dy-bg-muted\/40{background-color:hsl(var(--muted) / .4)}.dy-bg-muted\/5{background-color:hsl(var(--muted) / .05)}.dy-bg-muted\/50{background-color:hsl(var(--muted) / .5)}.dy-bg-muted\/60{background-color:hsl(var(--muted) / .6)}.dy-bg-popover{background-color:hsl(var(--popover))}.dy-bg-primary{background-color:hsl(var(--primary))}.dy-bg-primary\/10{background-color:hsl(var(--primary) / .1)}.dy-bg-primary\/5{background-color:hsl(var(--primary) / .05)}.dy-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.dy-bg-red-50\/50{background-color:#fef2f280}.dy-bg-secondary{background-color:hsl(var(--secondary))}.dy-bg-secondary\/10{background-color:hsl(var(--secondary) / .1)}.dy-bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.dy-bg-sidebar{background-color:hsl(var(--sidebar-background))}.dy-bg-sidebar-border{background-color:hsl(var(--sidebar-border))}.dy-bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity,1))}.dy-bg-transparent{background-color:#0000}.dy-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.dy-bg-white\/20{background-color:#fff3}.dy-bg-white\/40{background-color:#fff6}.dy-bg-white\/50{background-color:#ffffff80}.dy-bg-white\/90{background-color:#ffffffe6}.dy-bg-\[radial-gradient\(circle_at_center\,var\(--primary\)_0\%\,transparent_100\%\)\]{background-image:radial-gradient(circle at center,var(--primary) 0%,transparent 100%)}.dy-bg-gradient-to-br{background-image:linear-gradient(to bottom right, var(--tw-gradient-stops))}.dy-bg-gradient-to-t{background-image:linear-gradient(to top, var(--tw-gradient-stops))}.dy-from-black\/60{--tw-gradient-from:#0009 var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dy-from-black\/80{--tw-gradient-from:#000c var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dy-from-primary{--tw-gradient-from:hsl(var(--primary)) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dy-via-black\/40{--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #0006 var(--tw-gradient-via-position), var(--tw-gradient-to)}.dy-to-primary\/80{--tw-gradient-to:hsl(var(--primary) / .8) var(--tw-gradient-to-position)}.dy-to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.dy-fill-current{fill:currentColor}.dy-object-contain{-o-object-fit:contain;object-fit:contain}.dy-object-cover{-o-object-fit:cover;object-fit:cover}.dy-p-0{padding:0}.dy-p-1{padding:.25rem}.dy-p-1\.5{padding:.375rem}.dy-p-12{padding:3rem}.dy-p-2{padding:.5rem}.dy-p-2\.5{padding:.625rem}.dy-p-3{padding:.75rem}.dy-p-4{padding:1rem}.dy-p-6{padding:1.5rem}.dy-p-8{padding:2rem}.dy-p-\[1px\]{padding:1px}.dy-px-1{padding-left:.25rem;padding-right:.25rem}.dy-px-1\.5{padding-left:.375rem;padding-right:.375rem}.dy-px-10{padding-left:2.5rem;padding-right:2.5rem}.dy-px-2{padding-left:.5rem;padding-right:.5rem}.dy-px-2\.5{padding-left:.625rem;padding-right:.625rem}.dy-px-3{padding-left:.75rem;padding-right:.75rem}.dy-px-4{padding-left:1rem;padding-right:1rem}.dy-px-5{padding-left:1.25rem;padding-right:1.25rem}.dy-px-6{padding-left:1.5rem;padding-right:1.5rem}.dy-px-8{padding-left:2rem;padding-right:2rem}.dy-px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.dy-py-0{padding-top:0;padding-bottom:0}.dy-py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.dy-py-1{padding-top:.25rem;padding-bottom:.25rem}.dy-py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.dy-py-12{padding-top:3rem;padding-bottom:3rem}.dy-py-2{padding-top:.5rem;padding-bottom:.5rem}.dy-py-3{padding-top:.75rem;padding-bottom:.75rem}.dy-py-4{padding-top:1rem;padding-bottom:1rem}.dy-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.dy-py-8{padding-top:2rem;padding-bottom:2rem}.dy-pb-2{padding-bottom:.5rem}.dy-pb-20{padding-bottom:5rem}.dy-pb-3{padding-bottom:.75rem}.dy-pb-4{padding-bottom:1rem}.dy-pb-6{padding-bottom:1.5rem}.dy-pb-8{padding-bottom:2rem}.dy-pl-0{padding-left:0}.dy-pl-10{padding-left:2.5rem}.dy-pl-11{padding-left:2.75rem}.dy-pl-12{padding-left:3rem}.dy-pl-2{padding-left:.5rem}.dy-pl-8{padding-left:2rem}.dy-pr-1{padding-right:.25rem}.dy-pr-10{padding-right:2.5rem}.dy-pr-2{padding-right:.5rem}.dy-pr-24{padding-right:6rem}.dy-pr-3{padding-right:.75rem}.dy-pr-4{padding-right:1rem}.dy-pt-0{padding-top:0}.dy-pt-2{padding-top:.5rem}.dy-pt-4{padding-top:1rem}.dy-pt-6{padding-top:1.5rem}.dy-pt-8{padding-top:2rem}.dy-text-left{text-align:left}.dy-text-center{text-align:center}.dy-text-right{text-align:right}.dy-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.dy-font-serif{font-family:var(--font-serif), ui-serif, Georgia, serif}.dy-text-2xl{font-size:1.5rem;line-height:2rem}.dy-text-3xl{font-size:1.875rem;line-height:2.25rem}.dy-text-\[0\.8rem\]{font-size:.8rem}.dy-text-\[10px\]{font-size:10px}.dy-text-\[11px\]{font-size:11px}.dy-text-\[13px\]{font-size:13px}.dy-text-\[8px\]{font-size:8px}.dy-text-\[9px\]{font-size:9px}.dy-text-base{font-size:1rem;line-height:1.5rem}.dy-text-lg{font-size:1.125rem;line-height:1.75rem}.dy-text-sm{font-size:.875rem;line-height:1.25rem}.dy-text-xl{font-size:1.25rem;line-height:1.75rem}.dy-text-xs{font-size:.75rem;line-height:1rem}.dy-font-black{font-weight:900}.dy-font-bold{font-weight:700}.dy-font-medium{font-weight:500}.dy-font-normal{font-weight:400}.dy-font-semibold{font-weight:600}.dy-uppercase{text-transform:uppercase}.dy-capitalize{text-transform:capitalize}.dy-italic{font-style:italic}.dy-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.dy-leading-none{line-height:1}.dy-leading-relaxed{line-height:1.625}.dy-leading-tight{line-height:1.25}.dy-tracking-tight{letter-spacing:-.025em}.dy-tracking-wider{letter-spacing:.05em}.dy-tracking-widest{letter-spacing:.1em}.dy-text-accent-foreground{color:hsl(var(--accent-foreground))}.dy-text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.dy-text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.dy-text-background{color:hsl(var(--background))}.dy-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.dy-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.dy-text-blue-700\/70{color:#1d4ed8b3}.dy-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.dy-text-card-foreground{color:hsl(var(--card-foreground))}.dy-text-current{color:currentColor}.dy-text-destructive{color:hsl(var(--destructive))}.dy-text-destructive-foreground{color:hsl(var(--destructive-foreground))}.dy-text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.dy-text-foreground{color:hsl(var(--foreground))}.dy-text-foreground\/70{color:hsl(var(--foreground) / .7)}.dy-text-foreground\/80{color:hsl(var(--foreground) / .8)}.dy-text-foreground\/90{color:hsl(var(--foreground) / .9)}.dy-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.dy-text-muted-foreground{color:hsl(var(--muted-foreground))}.dy-text-muted-foreground\/20{color:hsl(var(--muted-foreground) / .2)}.dy-text-muted-foreground\/30{color:hsl(var(--muted-foreground) / .3)}.dy-text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.dy-text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.dy-text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.dy-text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.dy-text-muted-foreground\/80{color:hsl(var(--muted-foreground) / .8)}.dy-text-popover-foreground{color:hsl(var(--popover-foreground))}.dy-text-primary{color:hsl(var(--primary))}.dy-text-primary-foreground{color:hsl(var(--primary-foreground))}.dy-text-primary\/40{color:hsl(var(--primary) / .4)}.dy-text-primary\/60{color:hsl(var(--primary) / .6)}.dy-text-primary\/70{color:hsl(var(--primary) / .7)}.dy-text-purple-500\/70{color:#a855f7b3}.dy-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.dy-text-red-700\/70{color:#b91c1cb3}.dy-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.dy-text-secondary-foreground{color:hsl(var(--secondary-foreground))}.dy-text-sidebar-foreground{color:hsl(var(--sidebar-foreground))}.dy-text-sidebar-foreground\/70{color:hsl(var(--sidebar-foreground) / .7)}.dy-text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dy-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dy-text-white\/60{color:#fff9}.dy-underline-offset-2{text-underline-offset:2px}.dy-underline-offset-4{text-underline-offset:4px}.dy-opacity-0{opacity:0}.dy-opacity-100{opacity:1}.dy-opacity-20{opacity:.2}.dy-opacity-50{opacity:.5}.dy-opacity-60{opacity:.6}.dy-opacity-70{opacity:.7}.dy-opacity-80{opacity:.8}.dy-opacity-\[0\.03\]{opacity:.03}.dy-shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-\[0_8px_30px_rgb\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 8px 30px #0000004d;--tw-shadow-colored:0 8px 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-inner{--tw-shadow:inset 0 2px 4px 0 #0000000d;--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.dy-shadow-primary\/20{--tw-shadow-color:hsl(var(--primary) / .2);--tw-shadow:var(--tw-shadow-colored)}.dy-shadow-primary\/5{--tw-shadow-color:hsl(var(--primary) / .05);--tw-shadow:var(--tw-shadow-colored)}.dy-outline-none{outline-offset:2px;outline:2px solid #0000}.dy-ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.dy-ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.dy-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.dy-ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.dy-ring-inset{--tw-ring-inset:inset}.dy-ring-border\/50{--tw-ring-color:hsl(var(--border) / .5)}.dy-ring-primary{--tw-ring-color:hsl(var(--primary))}.dy-ring-primary\/10{--tw-ring-color:hsl(var(--primary) / .1)}.dy-ring-primary\/20{--tw-ring-color:hsl(var(--primary) / .2)}.dy-ring-sidebar-ring{--tw-ring-color:hsl(var(--sidebar-ring))}.dy-ring-offset-2{--tw-ring-offset-width:2px}.dy-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.dy-backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.dy-backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.dy-backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.dy-transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-\[left\,right\,width\]{transition-property:left,right,width;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-\[width\]{transition-property:width;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-delay-75{transition-delay:75ms}.dy-duration-150{transition-duration:.15s}.dy-duration-200{transition-duration:.2s}.dy-duration-300{transition-duration:.3s}.dy-duration-500{transition-duration:.5s}.dy-duration-700{transition-duration:.7s}.dy-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.dy-ease-linear{transition-timing-function:linear}.dy-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.dy-animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.dy-fade-in,.dy-fade-in-0{--tw-enter-opacity:0}.dy-zoom-in{--tw-enter-scale:0}.dy-zoom-in-95{--tw-enter-scale:.95}.dy-slide-in-from-bottom-2{--tw-enter-translate-y:.5rem}.dy-slide-in-from-bottom-4{--tw-enter-translate-y:1rem}.dy-slide-in-from-left-2{--tw-enter-translate-x:-.5rem}.dy-duration-150{animation-duration:.15s}.dy-duration-200{animation-duration:.2s}.dy-duration-300{animation-duration:.3s}.dy-duration-500{animation-duration:.5s}.dy-duration-700{animation-duration:.7s}.dy-delay-75{animation-delay:75ms}.dy-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.dy-ease-linear{animation-timing-function:linear}.dy-ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.dy-admin-ui .left-accent{border-left-width:2px;border-color:hsl(var(--primary) / .1);background-color:#0000;margin-left:-2rem;margin-right:-2rem;padding:1rem;transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation-duration:.2s}.dy-admin-ui .left-accent:hover{border-left-color:hsl(var(--primary));background-color:hsl(var(--primary) / .04)}.dy-admin-ui .left-accent .left-accent{margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem}.dy-admin-ui .left-accent .left-accent .left-accent{margin-left:0;margin-right:0;padding-left:1rem;padding-right:1rem}.dy-admin-ui .flat-container{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);background-color:#0000;border-style:none;padding:0}.\[--cell-size\:dy-2\.25rem\]{--cell-size:dy-2.25rem}.placeholder\:dy-text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:dy-text-muted-foreground\/60::placeholder{color:hsl(var(--muted-foreground) / .6)}.after\:dy-absolute:after{content:var(--tw-content);position:absolute}.after\:dy--inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:dy-inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:dy-left-1\/2:after{content:var(--tw-content);left:50%}.after\:dy-w-\[2px\]:after{content:var(--tw-content);width:2px}.first\:dy-pl-4:first-child{padding-left:1rem}.last\:dy-pr-4:last-child{padding-right:1rem}.even\:dy-bg-primary\/\[0\.03\]:nth-child(2n){background-color:hsl(var(--primary) / .03)}.hover\:dy-scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:dy-scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:dy-scale-\[1\.02\]:hover{--tw-scale-x:1.02;--tw-scale-y:1.02;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:dy-border-border:hover{border-color:hsl(var(--border))}.hover\:dy-border-border\/80:hover{border-color:hsl(var(--border) / .8)}.hover\:dy-border-primary\/20:hover{border-color:hsl(var(--primary) / .2)}.hover\:dy-border-primary\/40:hover{border-color:hsl(var(--primary) / .4)}.hover\:dy-border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:dy-bg-accent:hover{background-color:hsl(var(--accent))}.hover\:dy-bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:dy-bg-background:hover{background-color:hsl(var(--background))}.hover\:dy-bg-destructive:hover{background-color:hsl(var(--destructive))}.hover\:dy-bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:dy-bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:dy-bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:dy-bg-muted:hover{background-color:hsl(var(--muted))}.hover\:dy-bg-muted\/30:hover{background-color:hsl(var(--muted) / .3)}.hover\:dy-bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:dy-bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:dy-bg-primary\/20:hover{background-color:hsl(var(--primary) / .2)}.hover\:dy-bg-primary\/5:hover{background-color:hsl(var(--primary) / .05)}.hover\:dy-bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:dy-bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:dy-bg-primary\/\[0\.02\]:hover{background-color:hsl(var(--primary) / .02)}.hover\:dy-bg-primary\/\[0\.06\]:hover{background-color:hsl(var(--primary) / .06)}.hover\:dy-bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:dy-bg-sidebar-accent:hover{background-color:hsl(var(--sidebar-accent))}.hover\:dy-bg-transparent:hover{background-color:#0000}.hover\:dy-bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:dy-bg-white\/80:hover{background-color:#fffc}.hover\:dy-text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:dy-text-destructive:hover{color:hsl(var(--destructive))}.hover\:dy-text-foreground:hover{color:hsl(var(--foreground))}.hover\:dy-text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:dy-text-primary:hover{color:hsl(var(--primary))}.hover\:dy-text-sidebar-accent-foreground:hover{color:hsl(var(--sidebar-accent-foreground))}.hover\:dy-underline:hover{text-decoration-line:underline}.hover\:dy-opacity-100:hover{opacity:1}.hover\:dy-shadow-md:hover{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:dy-shadow-sm:hover{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:dy-shadow-xl:hover{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:after\:dy-bg-sidebar-border:hover:after{content:var(--tw-content);background-color:hsl(var(--sidebar-border))}.focus\:dy-bg-accent:focus{background-color:hsl(var(--accent))}.focus\:dy-bg-background:focus{background-color:hsl(var(--background))}.focus\:dy-bg-primary\/5:focus{background-color:hsl(var(--primary) / .05)}.focus\:dy-bg-white:focus{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.focus\:dy-text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:dy-text-destructive:focus{color:hsl(var(--destructive))}.focus\:dy-text-primary:focus{color:hsl(var(--primary))}.focus\:dy-outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:dy-ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:dy-ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:dy-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:dy-ring-primary\/20:focus{--tw-ring-color:hsl(var(--primary) / .2)}.focus\:dy-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:dy-ring-offset-0:focus{--tw-ring-offset-width:0px}.focus\:dy-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:dy-border-primary\/30:focus-visible{border-color:hsl(var(--primary) / .3)}.focus-visible\:dy-bg-white:focus-visible{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.focus-visible\:dy-shadow-md:focus-visible{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.focus-visible\:dy-outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:dy-ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:dy-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:dy-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:dy-ring-destructive:focus-visible{--tw-ring-color:hsl(var(--destructive))}.focus-visible\:dy-ring-primary\/20:focus-visible{--tw-ring-color:hsl(var(--primary) / .2)}.focus-visible\:dy-ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:dy-ring-sidebar-ring:focus-visible{--tw-ring-color:hsl(var(--sidebar-ring))}.focus-visible\:dy-ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.focus-visible\:dy-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:dy-ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.active\:dy-scale-90:active{--tw-scale-x:.9;--tw-scale-y:.9;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:dy-scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:dy-scale-\[0\.98\]:active{--tw-scale-x:.98;--tw-scale-y:.98;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:dy-bg-sidebar-accent:active{background-color:hsl(var(--sidebar-accent))}.active\:dy-text-sidebar-accent-foreground:active{color:hsl(var(--sidebar-accent-foreground))}.disabled\:dy-pointer-events-none:disabled{pointer-events:none}.disabled\:dy-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:dy-opacity-50:disabled{opacity:.5}.has-\[\[data-variant\=inset\]\]\:dy-bg-sidebar:has([data-variant=inset]){background-color:hsl(var(--sidebar-background))}.aria-disabled\:dy-pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:dy-opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:dy-text-muted-foreground\/40[aria-selected=true]{color:hsl(var(--muted-foreground) / .4)}.data-\[disabled\=true\]\:dy-pointer-events-none[data-disabled=true],.data-\[disabled\]\:dy-pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:dy-translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:dy--translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:dy-translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:dy--translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:dy-translate-x-5[data-state=checked]{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:dy-translate-x-0[data-state=unchecked]{--tw-translate-x:0px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[range-middle\=true\]\:dy-rounded-none[data-range-middle=true]{border-radius:0}.data-\[selected-single\=true\]\:dy-rounded-full[data-selected-single=true]{border-radius:9999px}.data-\[range-end\=true\]\:dy-rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:dy-rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[state\=checked\]\:dy-border-primary[data-state=checked]{border-color:hsl(var(--primary))}.data-\[active\=true\]\:dy-bg-sidebar-accent[data-active=true]{background-color:hsl(var(--sidebar-accent))}.data-\[range-end\=true\]\:dy-bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:dy-bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:dy-bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:dy-bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=\'true\'\]\:dy-bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:dy-bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:dy-bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=checked\]\:dy-bg-primary\/5[data-state=checked]{background-color:hsl(var(--primary) / .05)}.data-\[state\=on\]\:dy-bg-accent[data-state=on],.data-\[state\=open\]\:dy-bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:dy-bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:dy-bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:dy-bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[active\=true\]\:dy-font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:dy-text-sidebar-accent-foreground[data-active=true]{color:hsl(var(--sidebar-accent-foreground))}.data-\[placeholder\]\:dy-text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:dy-text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:dy-text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:dy-text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:dy-text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:dy-text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:dy-text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:dy-text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:dy-text-accent-foreground[data-state=on]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:dy-text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:dy-opacity-50[data-disabled=true],.data-\[disabled\]\:dy-opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:dy-opacity-100[data-state=open]{opacity:1}.data-\[selected-single\=true\]\:dy-shadow-lg[data-selected-single=true]{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.data-\[state\=active\]\:dy-shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.data-\[state\=closed\]\:dy-duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:dy-duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:dy-animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=closed\]\:dy-animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:dy-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:dy-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:dy-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:dy-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:dy-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:dy-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:dy-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:dy-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\[state\=closed\]\:dy-slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:dy-slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:dy-slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:dy-slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:dy-slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:dy-slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:dy-slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:dy-slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:dy-slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:dy-slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:dy-slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:dy-slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}.data-\[state\=closed\]\:dy-duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:dy-duration-500[data-state=open]{animation-duration:.5s}.data-\[state\=open\]\:hover\:dy-bg-sidebar-accent:hover[data-state=open]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=open\]\:hover\:dy-text-sidebar-accent-foreground:hover[data-state=open]{color:hsl(var(--sidebar-accent-foreground))}@media (width>=640px){.sm\:dy-flex{display:flex}.sm\:dy-max-w-\[600px\]{max-width:600px}.sm\:dy-max-w-\[900px\]{max-width:900px}.sm\:dy-max-w-md{max-width:28rem}.sm\:dy-max-w-sm{max-width:24rem}.sm\:dy-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:dy-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:dy-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:dy-flex-row{flex-direction:row}.sm\:dy-justify-end{justify-content:flex-end}.sm\:dy-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:dy-rounded-xl{border-radius:.75rem}.sm\:dy-text-left{text-align:left}}@media (width>=768px){.md\:dy-block{display:block}.md\:dy-flex{display:flex}.md\:dy-hidden{display:none}.md\:dy-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:dy-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:dy-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:dy-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:dy-flex-row{flex-direction:row}.md\:dy-text-sm{font-size:.875rem;line-height:1.25rem}.md\:dy-opacity-0{opacity:0}.after\:md\:dy-hidden:after{content:var(--tw-content);display:none}}@media (width>=1024px){.lg\:dy--mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.lg\:dy--mt-10{margin-top:-2.5rem}.lg\:dy-block{display:block}.lg\:dy-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:dy-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:dy-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:dy-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:dy-px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:dy-px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:dy-py-10{padding-top:2.5rem;padding-bottom:2.5rem}.lg\:dy-text-5xl{font-size:3rem;line-height:1}}@media (width>=1280px){.xl\:dy-max-w-3xl{max-width:48rem}.xl\:dy-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width>=1536px){.\32 xl\:dy-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}.\[\&\>button\]\:dy-hidden>button{display:none}.\[\&\>span\:last-child\]\:dy-truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>span\]\:dy-line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>svg\]\:dy-size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:dy-size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:dy-shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:dy-text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\]\:dy-text-sidebar-accent-foreground>svg{color:hsl(var(--sidebar-accent-foreground))}.\[\&\>tr\]\:last\:dy-border-b-0:last-child>tr{border-bottom-width:0}.\[\&_\[cmdk-group-heading\]\]\:dy-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:dy-py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:dy-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:dy-font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:dy-text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:dy-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:dy-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:dy-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:dy-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:dy-h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:dy-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:dy-py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:dy-h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:dy-w-5 [cmdk-item] svg{width:1.25rem}.\[\&_svg\]\:dy-pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:dy-size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:dy-shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:dy-border-0 tr:last-child{border-width:0}.\[\&_tr\]\:dy-border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:dy--right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:dy-cursor-e-resize{cursor:e-resize}[data-side=left] .\[\[data-side\=left\]_\&\]\:dy-cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:dy--left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:dy-cursor-w-resize{cursor:w-resize}[data-side=right] .\[\[data-side\=right\]_\&\]\:dy-cursor-e-resize{cursor:e-resize}.dyrected-admin-wrapper[data-v-aa7453b9]{width:100vw;height:100vh}
|
|
2
|
+
/*$vite$:1*/
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as DyrectedAdmin } from './components/DyrectedAdmin.vue';
|
|
2
|
+
export { default as DyrectedImage } from './components/DyrectedImage.vue';
|
|
3
|
+
export { default as DyrectedMedia } from './components/DyrectedMedia.vue';
|
|
4
|
+
export * from './composables/useDyrected';
|
|
5
|
+
export * from './composables/useLivePreview';
|
|
6
|
+
export * from './composables/useDyrectedAuth';
|
|
7
|
+
export * from './bridge/react-in-vue';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { computed as e, createApp as t, createElementBlock as n, createElementVNode as r, defineComponent as i, h as a, inject as o, mergeProps as s, nextTick as c, onMounted as l, onUnmounted as u, openBlock as d, ref as f, renderSlot as p, toDisplayString as m, watch as h } from "vue";
|
|
2
|
+
import g, { useEffect as _, useRef as v } from "react";
|
|
3
|
+
import { createClient as y } from "@dyrected/sdk";
|
|
4
|
+
//#region src/bridge/react-in-vue.ts
|
|
5
|
+
function b(e) {
|
|
6
|
+
let n = (n) => {
|
|
7
|
+
let r = v(null), i = v(null), o = v(f(n));
|
|
8
|
+
return _(() => {
|
|
9
|
+
o.current.value = n;
|
|
10
|
+
}, [n]), _(() => {
|
|
11
|
+
if (r.current) {
|
|
12
|
+
let n = t({ setup() {
|
|
13
|
+
return () => a(e, o.current.value);
|
|
14
|
+
} });
|
|
15
|
+
n.mount(r.current), i.current = n;
|
|
16
|
+
}
|
|
17
|
+
return () => {
|
|
18
|
+
i.current && i.current.unmount();
|
|
19
|
+
};
|
|
20
|
+
}, []), g.createElement("div", {
|
|
21
|
+
ref: r,
|
|
22
|
+
className: "dyrected-vue-bridge-container",
|
|
23
|
+
style: { display: "contents" }
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
return n.displayName = `VueWrapper(${e.name || "Component"})`, n;
|
|
27
|
+
}
|
|
28
|
+
function x(e) {
|
|
29
|
+
if (!e) return e;
|
|
30
|
+
let t = {};
|
|
31
|
+
for (let [n, r] of Object.entries(e)) typeof r == "object" && r && !("render" in r) && !("setup" in r) ? t[n] = x(r) : typeof r == "function" || typeof r == "object" && r ? t[n] = b(r) : t[n] = r;
|
|
32
|
+
return t;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/components/DyrectedAdmin.vue
|
|
36
|
+
var S = /* @__PURE__ */ ((e, t) => {
|
|
37
|
+
let n = e.__vccOpts || e;
|
|
38
|
+
for (let [e, r] of t) n[e] = r;
|
|
39
|
+
return n;
|
|
40
|
+
})(/* @__PURE__ */ i({
|
|
41
|
+
__name: "DyrectedAdmin",
|
|
42
|
+
props: {
|
|
43
|
+
config: {},
|
|
44
|
+
basename: {},
|
|
45
|
+
components: {}
|
|
46
|
+
},
|
|
47
|
+
setup(t) {
|
|
48
|
+
let r = t, i = f(null), a = null, o = e(() => x(r.components)), s = async () => {
|
|
49
|
+
if (a && a(), i.value) try {
|
|
50
|
+
let { renderAdminUI: e } = await import("@dyrected/admin");
|
|
51
|
+
a = e(i.value, {
|
|
52
|
+
apiKey: r.config.apiKey,
|
|
53
|
+
siteId: r.config.siteId,
|
|
54
|
+
baseUrl: r.config.baseUrl,
|
|
55
|
+
basename: r.basename || "/admin",
|
|
56
|
+
isEmbedded: !1,
|
|
57
|
+
components: o.value
|
|
58
|
+
});
|
|
59
|
+
} catch (e) {
|
|
60
|
+
console.error("[DyrectedAdmin] Failed to mount admin UI:", e);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return l(async () => {
|
|
64
|
+
await c(), await s();
|
|
65
|
+
}), h(() => [r.config, r.components], s, { deep: !0 }), u(() => {
|
|
66
|
+
a && a();
|
|
67
|
+
}), (e, t) => (d(), n("div", {
|
|
68
|
+
ref_key: "container",
|
|
69
|
+
ref: i,
|
|
70
|
+
class: "dyrected-admin-wrapper"
|
|
71
|
+
}, null, 512));
|
|
72
|
+
}
|
|
73
|
+
}), [["__scopeId", "data-v-aa7453b9"]]), C = [
|
|
74
|
+
"src",
|
|
75
|
+
"width",
|
|
76
|
+
"height",
|
|
77
|
+
"alt"
|
|
78
|
+
], w = [
|
|
79
|
+
"src",
|
|
80
|
+
"width",
|
|
81
|
+
"height",
|
|
82
|
+
"alt"
|
|
83
|
+
], T = /* @__PURE__ */ i({
|
|
84
|
+
__name: "DyrectedImage",
|
|
85
|
+
props: {
|
|
86
|
+
media: {},
|
|
87
|
+
width: {},
|
|
88
|
+
height: {},
|
|
89
|
+
alt: {}
|
|
90
|
+
},
|
|
91
|
+
setup(e) {
|
|
92
|
+
return (t, r) => typeof e.media == "string" ? (d(), n("img", s({
|
|
93
|
+
key: 0,
|
|
94
|
+
src: e.media,
|
|
95
|
+
width: e.width || 500,
|
|
96
|
+
height: e.height || 500,
|
|
97
|
+
alt: e.alt || ""
|
|
98
|
+
}, t.$attrs), null, 16, C)) : (d(), n("img", s({
|
|
99
|
+
key: 1,
|
|
100
|
+
src: e.media.url,
|
|
101
|
+
width: e.width || e.media.width || 500,
|
|
102
|
+
height: e.height || e.media.height || 500,
|
|
103
|
+
alt: e.alt || e.media.filename
|
|
104
|
+
}, t.$attrs), null, 16, w));
|
|
105
|
+
}
|
|
106
|
+
}), E = {
|
|
107
|
+
key: 0,
|
|
108
|
+
class: "dyrected-media-video",
|
|
109
|
+
style: {
|
|
110
|
+
position: "relative",
|
|
111
|
+
"padding-bottom": "56.25%",
|
|
112
|
+
height: "0"
|
|
113
|
+
}
|
|
114
|
+
}, D = ["src"], O = [
|
|
115
|
+
"src",
|
|
116
|
+
"width",
|
|
117
|
+
"height",
|
|
118
|
+
"alt"
|
|
119
|
+
], k = [
|
|
120
|
+
"src",
|
|
121
|
+
"width",
|
|
122
|
+
"height"
|
|
123
|
+
], A = {
|
|
124
|
+
key: 3,
|
|
125
|
+
class: "dyrected-media-file"
|
|
126
|
+
}, j = ["href"], M = /* @__PURE__ */ i({
|
|
127
|
+
__name: "DyrectedMedia",
|
|
128
|
+
props: {
|
|
129
|
+
media: {},
|
|
130
|
+
width: {},
|
|
131
|
+
height: {},
|
|
132
|
+
alt: {}
|
|
133
|
+
},
|
|
134
|
+
setup(t) {
|
|
135
|
+
let i = t, a = e(() => typeof i.media == "string" ? i.media : i.media.url), o = e(() => typeof i.media == "string" ? "" : i.media.filename), c = e(() => typeof i.media == "string" ? null : i.media.mimeType), l = e(() => {
|
|
136
|
+
let e = a.value.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);
|
|
137
|
+
return e && e[2].length === 11 ? e[2] : null;
|
|
138
|
+
}), u = e(() => c.value?.startsWith("image/") || a.value.match(/\.(jpg|jpeg|png|gif|webp|avif|svg)$/i)), f = e(() => c.value?.startsWith("video/") || a.value.match(/\.(mp4|webm|ogg)$/i));
|
|
139
|
+
return (e, i) => l.value ? (d(), n("div", E, [r("iframe", {
|
|
140
|
+
src: `https://www.youtube.com/embed/${l.value}`,
|
|
141
|
+
frameborder: "0",
|
|
142
|
+
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
143
|
+
allowfullscreen: "",
|
|
144
|
+
style: {
|
|
145
|
+
position: "absolute",
|
|
146
|
+
top: "0",
|
|
147
|
+
left: "0",
|
|
148
|
+
width: "100%",
|
|
149
|
+
height: "100%"
|
|
150
|
+
}
|
|
151
|
+
}, null, 8, D)])) : u.value ? (d(), n("img", s({
|
|
152
|
+
key: 1,
|
|
153
|
+
src: a.value,
|
|
154
|
+
width: t.width || 500,
|
|
155
|
+
height: t.height || 500,
|
|
156
|
+
alt: t.alt || o.value
|
|
157
|
+
}, e.$attrs), null, 16, O)) : f.value ? (d(), n("video", s({
|
|
158
|
+
key: 2,
|
|
159
|
+
src: a.value,
|
|
160
|
+
controls: "",
|
|
161
|
+
width: t.width || 500,
|
|
162
|
+
height: t.height || 500,
|
|
163
|
+
class: "dyrected-media-video"
|
|
164
|
+
}, e.$attrs), null, 16, k)) : (d(), n("div", A, [p(e.$slots, "fallback", {}, () => [r("a", {
|
|
165
|
+
href: a.value,
|
|
166
|
+
target: "_blank",
|
|
167
|
+
rel: "noopener noreferrer",
|
|
168
|
+
class: "dyrected-file-link"
|
|
169
|
+
}, " Download " + m(o.value || "File"), 9, j)])]));
|
|
170
|
+
}
|
|
171
|
+
}), N = Symbol("dyrected-client");
|
|
172
|
+
function P() {
|
|
173
|
+
let e = o(N);
|
|
174
|
+
if (!e) throw Error("Dyrected client not found. Use provideDyrectedClient() or the DyrectedVue plugin.");
|
|
175
|
+
return e;
|
|
176
|
+
}
|
|
177
|
+
function F(e) {
|
|
178
|
+
return { [N]: e };
|
|
179
|
+
}
|
|
180
|
+
function I(e, t, n = {}) {
|
|
181
|
+
let r = P(), i = f(null), a = f(!0), o = f(null), s = async () => {
|
|
182
|
+
a.value = !0;
|
|
183
|
+
try {
|
|
184
|
+
i.value = await r.findOne(e, t, n), o.value = null;
|
|
185
|
+
} catch (n) {
|
|
186
|
+
console.error(`[useDyrected] Error fetching ${e}:${t}`, n), o.value = n;
|
|
187
|
+
} finally {
|
|
188
|
+
a.value = !1;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
return l(s), h(() => [
|
|
192
|
+
e,
|
|
193
|
+
t,
|
|
194
|
+
JSON.stringify(n)
|
|
195
|
+
], s), {
|
|
196
|
+
doc: i,
|
|
197
|
+
pending: a,
|
|
198
|
+
error: o,
|
|
199
|
+
refresh: s
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function L(e, t = {}) {
|
|
203
|
+
let n = P(), r = f([]), i = f(!0), a = f(null), o = async () => {
|
|
204
|
+
i.value = !0;
|
|
205
|
+
try {
|
|
206
|
+
r.value = (await n.collection(e).find(t).exec()).docs || [], a.value = null;
|
|
207
|
+
} catch (t) {
|
|
208
|
+
console.error(`[useDyrectedCollection] Error fetching ${e}`, t), a.value = t;
|
|
209
|
+
} finally {
|
|
210
|
+
i.value = !1;
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
return l(o), h(() => [e, JSON.stringify(t)], o), {
|
|
214
|
+
docs: r,
|
|
215
|
+
pending: i,
|
|
216
|
+
error: a,
|
|
217
|
+
refresh: o
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function R(e, t = {}) {
|
|
221
|
+
let n = P(), r = f(null), i = f(!0), a = f(null), o = async () => {
|
|
222
|
+
i.value = !0;
|
|
223
|
+
try {
|
|
224
|
+
r.value = await n.global(e).get(t), a.value = null;
|
|
225
|
+
} catch (t) {
|
|
226
|
+
console.error(`[useDyrectedGlobal] Error fetching ${e}`, t), a.value = t;
|
|
227
|
+
} finally {
|
|
228
|
+
i.value = !1;
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
return l(o), h(() => [e, JSON.stringify(t)], o), {
|
|
232
|
+
data: r,
|
|
233
|
+
pending: i,
|
|
234
|
+
error: a,
|
|
235
|
+
refresh: o
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
//#endregion
|
|
239
|
+
//#region src/composables/useLivePreview.ts
|
|
240
|
+
function z(e) {
|
|
241
|
+
let t = f(e.initialData), n = f(!1), r = e.serverURL || "*", i = null;
|
|
242
|
+
function a() {
|
|
243
|
+
let e = document.querySelectorAll("[data-dy-path]"), t = Array.from(e).map((e) => {
|
|
244
|
+
let t = e.dataset.dyPath, n = (e) => {
|
|
245
|
+
e.preventDefault(), e.stopPropagation(), window.parent.postMessage({
|
|
246
|
+
type: "dyrected-element-clicked",
|
|
247
|
+
path: t
|
|
248
|
+
}, r);
|
|
249
|
+
}, i = () => {
|
|
250
|
+
e.style.outline = "2px solid rgba(99,102,241,0.7)", e.style.outlineOffset = "2px", e.style.cursor = "pointer";
|
|
251
|
+
}, a = () => {
|
|
252
|
+
e.style.outline = "", e.style.outlineOffset = "", e.style.cursor = "";
|
|
253
|
+
};
|
|
254
|
+
return e.addEventListener("click", n, !0), e.addEventListener("mouseenter", i), e.addEventListener("mouseleave", a), () => {
|
|
255
|
+
e.removeEventListener("click", n, !0), e.removeEventListener("mouseenter", i), e.removeEventListener("mouseleave", a), e.style.outline = "", e.style.outlineOffset = "", e.style.cursor = "";
|
|
256
|
+
};
|
|
257
|
+
});
|
|
258
|
+
return () => t.forEach((e) => e());
|
|
259
|
+
}
|
|
260
|
+
function o(e) {
|
|
261
|
+
if (r !== "*" && e.origin !== r) return;
|
|
262
|
+
let { type: o, data: s } = e.data || {};
|
|
263
|
+
o === "dyrected-live-preview" && (t.value = s, n.value = !0), o === "dyrected-live-preview-ready" && window.parent.postMessage({ type: "dyrected-live-preview-ack" }, r), o === "dyrected-enter-edit-mode" && (i?.(), i = a()), o === "dyrected-exit-edit-mode" && (i?.(), i = null);
|
|
264
|
+
}
|
|
265
|
+
return l(() => {
|
|
266
|
+
window.addEventListener("message", o), window.parent.postMessage({ type: "dyrected-live-preview-ready" }, r);
|
|
267
|
+
}), u(() => {
|
|
268
|
+
window.removeEventListener("message", o), i?.(), i = null;
|
|
269
|
+
}), {
|
|
270
|
+
data: t,
|
|
271
|
+
isLive: n
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
//#endregion
|
|
275
|
+
//#region src/composables/useDyrectedAuth.ts
|
|
276
|
+
function B(t, n) {
|
|
277
|
+
let r = n.storage || (typeof window < "u" ? window.localStorage : null), i = `dyrected_token_${t}`, a = f(r?.getItem(i) || null), o = f(null), s = e(() => !!a.value), c = y({
|
|
278
|
+
baseUrl: n.baseUrl,
|
|
279
|
+
apiKey: n.apiKey,
|
|
280
|
+
siteId: n.siteId
|
|
281
|
+
});
|
|
282
|
+
a.value && c.setToken(a.value);
|
|
283
|
+
async function l(e, n) {
|
|
284
|
+
let { token: s, user: l } = await c.collection(t).login(e, n);
|
|
285
|
+
return a.value = s, o.value = l, r && r.setItem(i, s), c.setToken(s), l;
|
|
286
|
+
}
|
|
287
|
+
async function u() {
|
|
288
|
+
if (a.value) try {
|
|
289
|
+
await c.collection(t).logout();
|
|
290
|
+
} catch {}
|
|
291
|
+
a.value = null, o.value = null, r && r.removeItem(i);
|
|
292
|
+
}
|
|
293
|
+
async function d() {
|
|
294
|
+
if (!a.value) return null;
|
|
295
|
+
try {
|
|
296
|
+
let e = await c.collection(t).me();
|
|
297
|
+
return o.value = e, e;
|
|
298
|
+
} catch {
|
|
299
|
+
return a.value = null, o.value = null, r && r.removeItem(i), null;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return {
|
|
303
|
+
user: o,
|
|
304
|
+
isLoggedIn: s,
|
|
305
|
+
token: a,
|
|
306
|
+
login: l,
|
|
307
|
+
logout: u,
|
|
308
|
+
fetchMe: d,
|
|
309
|
+
client: c
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
//#endregion
|
|
313
|
+
export { N as DYRECTED_CLIENT_KEY, S as DyrectedAdmin, T as DyrectedImage, M as DyrectedMedia, F as provideDyrectedClient, I as useDyrected, B as useDyrectedAuth, P as useDyrectedClient, L as useDyrectedCollection, R as useDyrectedGlobal, z as useLivePreview, x as wrapComponents, b as wrapVueComponent };
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dyrected/vue",
|
|
3
|
+
"version": "2.5.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.cjs",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs"
|
|
13
|
+
},
|
|
14
|
+
"./dist/*.css": "./dist/*.css",
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@dyrected/admin": "2.5.0",
|
|
22
|
+
"@dyrected/sdk": "2.4.2"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"react": ">=18.0.0",
|
|
26
|
+
"react-dom": ">=18.0.0",
|
|
27
|
+
"vue": "^3.0.0"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^25.8.0",
|
|
31
|
+
"@types/react": "^18.3.28",
|
|
32
|
+
"@types/react-dom": "^19.2.3",
|
|
33
|
+
"@vitejs/plugin-vue": "^6.0.6",
|
|
34
|
+
"react": "^18.3.1",
|
|
35
|
+
"react-dom": "^18.3.1",
|
|
36
|
+
"tsup": "^8.0.0",
|
|
37
|
+
"typescript": "^5.4.5",
|
|
38
|
+
"unplugin-vue": "^7.2.0",
|
|
39
|
+
"vite": "^8.0.10",
|
|
40
|
+
"vite-plugin-dts": "^5.0.0",
|
|
41
|
+
"vue": "^3.5.34"
|
|
42
|
+
},
|
|
43
|
+
"license": "BSL-1.1",
|
|
44
|
+
"author": "Busola Okeowo <busolaokemoney@gmail.com>",
|
|
45
|
+
"homepage": "https://dyrected.com",
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "git+https://github.com/she-WritesCode/dyrected.git"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"description": "Vue 3 integration for Dyrected CMS",
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "vite build",
|
|
56
|
+
"dev": "vite build --watch"
|
|
57
|
+
}
|
|
58
|
+
}
|