feat: widgets and ai chat

This commit is contained in:
Rotimi Best
2026-04-27 11:40:38 +01:00
parent ae1801f85f
commit 5717dd8004
391 changed files with 28177 additions and 22467 deletions
@@ -1,6 +1,6 @@
<script lang="ts">
import Button, { type ButtonElementProps } from '../../base/button/button.svelte';
import { useImageCropperCancel } from './image-cropper.svelte.js';
import { useImageCropperCancel } from './image-cropper-context.svelte';
import Trash2Icon from '@lucide/svelte/icons/trash-2';
let { ref = $bindable(null), variant = 'outline', size = 'sm', onclick, ...rest }: ButtonElementProps = $props();
@@ -1,6 +1,6 @@
<script lang="ts">
import Button, { type ButtonElementProps } from '../../base/button/button.svelte';
import { useImageCropperCrop } from './image-cropper.svelte.js';
import { useImageCropperCrop } from './image-cropper-context.svelte';
import CropIcon from '@lucide/svelte/icons/crop';
let { ref = $bindable(null), variant = 'default', size = 'sm', onclick, ...rest }: ButtonElementProps = $props();
@@ -1,7 +1,7 @@
<script lang="ts">
import Cropper from 'svelte-easy-crop';
import { useImageCropperCropper } from './image-cropper.svelte.js';
import type { ImageCropperCropperProps } from './types.js';
import { useImageCropperCropper } from './image-cropper-context.svelte';
import type { ImageCropperCropperProps } from './types';
let { cropShape = 'round', aspect = 1, showGrid = false, ...rest }: ImageCropperCropperProps = $props();
@@ -1,7 +1,7 @@
<script lang="ts">
import * as Dialog from '../../base/dialog';
import { cn } from '../../tools';
import { useImageCropperDialog } from './image-cropper.svelte.js';
import { useImageCropperDialog } from './image-cropper-context.svelte';
import type { ImageCropperDialogProps } from './types';
let { children, class: className, ...rest }: ImageCropperDialogProps = $props();
@@ -1,7 +1,7 @@
<script lang="ts">
import * as Avatar from '../../base/avatar';
import type { ImageCropperPreviewProps } from './types';
import { useImageCropperPreview } from './image-cropper.svelte.js';
import { useImageCropperPreview } from './image-cropper-context.svelte';
import UploadIcon from '@lucide/svelte/icons/upload';
import { cn } from '../../tools';
@@ -1,5 +1,5 @@
<script lang="ts">
import { useImageCropperTrigger } from './image-cropper.svelte.js';
import { useImageCropperTrigger } from './image-cropper-context.svelte';
import type { ImageCropperUploadTriggerProps } from './types';
import { cn } from '../../tools';
@@ -1,6 +1,6 @@
<script lang="ts">
import { box } from 'svelte-toolbelt';
import { useImageCropperRoot } from './image-cropper.svelte.js';
import { useImageCropperRoot } from './image-cropper-context.svelte';
import type { ImageCropperRootProps } from './types';
import { onDestroy } from 'svelte';
import { useId } from 'bits-ui';