@abhivarde/svelte-drawer 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +31 -17
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -463,31 +463,34 @@ Automatically save and restore drawer state across page reloads.
463
463
 
464
464
  ### Auto Height (AI & Dynamic Content)
465
465
 
466
- Use `autoHeight` on `DrawerContent` when your drawer content changes height at runtime AI streaming responses, multi-step forms, search results, or any dynamic list.
466
+ Use `autoHeight` on `DrawerContent` when your drawer content changes height at runtime like AI streaming responses, multi-step forms, search results, or dynamic lists.
467
467
 
468
468
  ```svelte
469
469
  <script>
470
- import { Drawer, DrawerOverlay, DrawerContent, DrawerHandle } from '@abhivarde/svelte-drawer';
470
+ import {
471
+ Drawer,
472
+ DrawerOverlay,
473
+ DrawerContent,
474
+ DrawerHandle
475
+ } from '@abhivarde/svelte-drawer';
471
476
 
472
477
  let open = $state(false);
473
478
  let streaming = $state(false);
474
479
  let text = $state('');
475
480
 
476
- const lines = [
477
- 'Sure! Here is what autoHeight does.',
478
- '\n\nIt watches your content as it changes.',
479
- '\n\nWhen content grows, the drawer follows automatically.',
480
- '\n\nNo magic numbers. No hardcoded heights. Just works.',
481
- ];
482
-
483
481
  async function simulate() {
484
482
  open = true;
485
483
  streaming = true;
486
484
  text = '';
487
- for (const line of lines) {
488
- await new Promise(r => setTimeout(r, 500));
489
- text += line;
485
+
486
+ const content =
487
+ 'Sure! Here is what autoHeight does. It watches your content with a ResizeObserver. When content grows, the drawer follows automatically. No magic numbers, no hardcoded heights, it just works smoothly with streaming UI like AI chat apps.';
488
+
489
+ for (let i = 0; i < content.length; i++) {
490
+ text += content[i];
491
+ await new Promise(r => setTimeout(r, 18));
490
492
  }
493
+
491
494
  streaming = false;
492
495
  }
493
496
  </script>
@@ -496,12 +499,22 @@ Use `autoHeight` on `DrawerContent` when your drawer content changes height at r
496
499
 
497
500
  <Drawer bind:open>
498
501
  <DrawerOverlay />
499
- <DrawerContent autoHeight class="bg-gray-100 flex flex-col rounded-t-[10px] fixed bottom-0 left-0 right-0 outline-none">
502
+
503
+ <DrawerContent
504
+ autoHeight
505
+ class="bg-gray-100 flex flex-col rounded-t-[10px] fixed bottom-0 left-0 right-0 outline-none"
506
+ >
500
507
  <div class="p-4 bg-white rounded-t-[10px]">
501
508
  <DrawerHandle class="mb-8" />
502
- <p class="font-medium mb-2 text-gray-900">AI Response</p>
509
+
510
+ <p class="font-medium mb-2 text-gray-900">
511
+ AI Response
512
+ </p>
513
+
503
514
  {#if text}
504
- <p class="text-sm text-gray-600 whitespace-pre-wrap leading-relaxed">{text}{streaming ? '▌' : ''}</p>
515
+ <p class="text-sm text-gray-600 leading-relaxed">
516
+ {text}{streaming ? '▌' : ''}
517
+ </p>
505
518
  {/if}
506
519
  </div>
507
520
  </DrawerContent>
@@ -512,8 +525,9 @@ Use `autoHeight` on `DrawerContent` when your drawer content changes height at r
512
525
 
513
526
  - `height: auto` is applied to the drawer when `autoHeight` is true
514
527
  - The drawer grows and shrinks naturally as content changes
515
- - The slide-in animation is unaffected since it runs via CSS transform separately
516
- - Fully compatible with snap points, portals, and all existing props
528
+ - Perfect for AI streaming, dynamic lists, forms, and async content
529
+ - The slide animation remains smooth since it uses CSS transforms separately
530
+ - Fully compatible with snap points, portals, and existing props
517
531
  - Zero impact on drawers that do not use `autoHeight` (opt-in, default `false`)
518
532
 
519
533
  ## Variants
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abhivarde/svelte-drawer",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "A drawer component for Svelte 5, inspired by Vaul",
5
5
  "author": "Abhi Varde",
6
6
  "license": "MIT",