snice 2.3.0 → 2.4.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.
Files changed (75) hide show
  1. package/README.md +76 -4
  2. package/bin/templates/base/src/main.ts +3 -0
  3. package/bin/templates/base/src/pages/about-page.ts +10 -1
  4. package/bin/templates/base/src/pages/home-page.ts +10 -1
  5. package/bin/templates/base/src/router.ts +3 -2
  6. package/dist/components/drawer/snice-drawer.d.ts +4 -0
  7. package/dist/components/drawer/snice-drawer.js +58 -23
  8. package/dist/components/drawer/snice-drawer.js.map +1 -1
  9. package/dist/components/drawer/snice-drawer.types.d.ts +1 -0
  10. package/dist/components/layout/snice-layout-blog.d.ts +10 -1
  11. package/dist/components/layout/snice-layout-blog.js +47 -8
  12. package/dist/components/layout/snice-layout-blog.js.map +1 -1
  13. package/dist/components/layout/snice-layout-dashboard.d.ts +12 -1
  14. package/dist/components/layout/snice-layout-dashboard.js +92 -13
  15. package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
  16. package/dist/components/layout/snice-layout-landing.d.ts +10 -1
  17. package/dist/components/layout/snice-layout-landing.js +47 -8
  18. package/dist/components/layout/snice-layout-landing.js.map +1 -1
  19. package/dist/components/layout/snice-layout-sidebar.d.ts +13 -1
  20. package/dist/components/layout/snice-layout-sidebar.js +69 -28
  21. package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
  22. package/dist/components/layout/snice-layout.d.ts +9 -1
  23. package/dist/components/layout/snice-layout.js +35 -8
  24. package/dist/components/layout/snice-layout.js.map +1 -1
  25. package/dist/components/layout/snice-layout.types.d.ts +2 -1
  26. package/dist/components/nav/snice-nav.d.ts +16 -0
  27. package/dist/components/nav/snice-nav.js +158 -0
  28. package/dist/components/nav/snice-nav.js.map +1 -0
  29. package/dist/components/nav/snice-nav.types.d.ts +11 -0
  30. package/dist/index.cjs +243 -45
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.esm.js +242 -42
  33. package/dist/index.esm.js.map +1 -1
  34. package/dist/index.iife.js +243 -45
  35. package/dist/index.iife.js.map +1 -1
  36. package/dist/symbols.cjs.map +1 -1
  37. package/dist/symbols.esm.js +8 -2
  38. package/dist/symbols.esm.js.map +1 -1
  39. package/dist/transitions.esm.js +1 -1
  40. package/dist/types/controller.d.ts +1 -1
  41. package/dist/types/element.d.ts +70 -3
  42. package/dist/types/events.d.ts +2 -2
  43. package/dist/types/global.d.ts +1 -1
  44. package/dist/types/index.d.ts +3 -2
  45. package/dist/types/observe.d.ts +1 -1
  46. package/dist/types/request-response.d.ts +2 -2
  47. package/dist/types/router.d.ts +2 -2
  48. package/dist/types/symbols.d.ts +5 -0
  49. package/dist/types/testing.d.ts +1 -1
  50. package/dist/types/transitions.d.ts +1 -1
  51. package/dist/types/types/adopted-options.d.ts +4 -0
  52. package/dist/types/types/app-context.d.ts +81 -0
  53. package/dist/types/types/guard.d.ts +19 -0
  54. package/dist/types/types/index.d.ts +23 -17
  55. package/dist/types/types/moved-options.d.ts +4 -0
  56. package/dist/types/types/{PageOptions.d.ts → page-options.d.ts} +13 -4
  57. package/dist/types/types/placard.d.ts +90 -0
  58. package/dist/types/types/{PropertyOptions.d.ts → property-options.d.ts} +2 -2
  59. package/dist/types/types/route-params.d.ts +21 -0
  60. package/dist/types/types/{RouterInstance.d.ts → router-instance.d.ts} +5 -3
  61. package/dist/types/types/{RouterOptions.d.ts → router-options.d.ts} +1 -1
  62. package/package.json +3 -3
  63. /package/dist/types/types/{DispatchOptions.d.ts → dispatch-options.d.ts} +0 -0
  64. /package/dist/types/types/{IController.d.ts → i-controller.d.ts} +0 -0
  65. /package/dist/types/types/{ObserveOptions.d.ts → observe-options.d.ts} +0 -0
  66. /package/dist/types/types/{OnOptions.d.ts → on-options.d.ts} +0 -0
  67. /package/dist/types/types/{PartOptions.d.ts → part-options.d.ts} +0 -0
  68. /package/dist/types/types/{PropertyConverter.d.ts → property-converter.d.ts} +0 -0
  69. /package/dist/types/types/{QueryOptions.d.ts → query-options.d.ts} +0 -0
  70. /package/dist/types/types/{RequestOptions.d.ts → request-options.d.ts} +0 -0
  71. /package/dist/types/types/{RespondOptions.d.ts → respond-options.d.ts} +0 -0
  72. /package/dist/types/types/{SimpleArray.d.ts → simple-array.d.ts} +0 -0
  73. /package/dist/types/types/{SniceElement.d.ts → snice-element.d.ts} +0 -0
  74. /package/dist/types/types/{SniceGlobal.d.ts → snice-global.d.ts} +0 -0
  75. /package/dist/types/types/{Transition.d.ts → transition.d.ts} +0 -0
package/README.md CHANGED
@@ -538,13 +538,12 @@ class AdminPage extends HTMLElement {
538
538
  }
539
539
 
540
540
  // Guard that uses route params to check resource-specific permissions
541
- const canEditUser: Guard<AppContext> = async (ctx, params) => {
541
+ const canEditUser: Guard<AppContext> = (ctx, params) => {
542
542
  const user = ctx.getUser();
543
543
  if (!user) return false;
544
-
544
+
545
545
  // params.id comes from route '/users/:id/edit'
546
- const response = await fetch(`/api/permissions/users/${params.id}/can-edit`);
547
- return response.ok;
546
+ return ctx.hasPermission('users.edit', params.id);
548
547
  };
549
548
 
550
549
  // Guard that checks ownership
@@ -1028,6 +1027,79 @@ renderSearchResults() { /* ... */ }
1028
1027
 
1029
1028
  The `@part` decorator is ideal when you have components with multiple independent sections that update at different frequencies or from different data sources.
1030
1029
 
1030
+ ## Lifecycle Callbacks
1031
+
1032
+ Snice provides decorators for advanced DOM lifecycle events that go beyond basic connected/disconnected callbacks:
1033
+
1034
+ ### @moved Decorator
1035
+
1036
+ The `@moved` decorator runs methods when an element is moved within the DOM using `Element.moveBefore()`. This is useful for handling position changes without full disconnection/reconnection:
1037
+
1038
+ ```typescript
1039
+ @element('my-element')
1040
+ class MyElement extends HTMLElement {
1041
+ @moved()
1042
+ onElementMoved() {
1043
+ console.log('Element moved to new position');
1044
+ this.updatePosition();
1045
+ }
1046
+
1047
+ // With timing options
1048
+ @moved({ debounce: 100 })
1049
+ onMovedDebounced() {
1050
+ // Only called once after moves stop for 100ms
1051
+ this.recalculateLayout();
1052
+ }
1053
+
1054
+ @moved({ throttle: 500 })
1055
+ onMovedThrottled() {
1056
+ // Called at most once every 500ms during rapid moves
1057
+ this.optimizePerformance();
1058
+ }
1059
+ }
1060
+ ```
1061
+
1062
+ ### @adopted Decorator
1063
+
1064
+ The `@adopted` decorator runs methods when an element is moved to a new document (like iframes or document fragments):
1065
+
1066
+ ```typescript
1067
+ @element('portable-element')
1068
+ class PortableElement extends HTMLElement {
1069
+ @adopted()
1070
+ onAdoptedToNewDocument() {
1071
+ console.log('Element moved to new document');
1072
+ this.updateDocumentReferences();
1073
+ }
1074
+
1075
+ // With timing options
1076
+ @adopted({ debounce: 200 })
1077
+ onAdoptedDebounced() {
1078
+ // Debounced for performance during rapid document moves
1079
+ this.reinitializeForNewContext();
1080
+ }
1081
+ }
1082
+ ```
1083
+
1084
+ ### Timing Options
1085
+
1086
+ Both decorators support the same timing options as `@part`:
1087
+
1088
+ - **`debounce`** - Delays execution until after calls stop for the specified milliseconds
1089
+ - **`throttle`** - Limits execution to once per specified milliseconds
1090
+
1091
+ ```typescript
1092
+ // Examples of timing control
1093
+ @moved({ debounce: 150 }) // Wait 150ms after moves stop
1094
+ @adopted({ throttle: 300 }) // Maximum once per 300ms
1095
+ ```
1096
+
1097
+ These lifecycle callbacks are perfect for:
1098
+ - **Performance optimization** during rapid DOM changes
1099
+ - **Layout recalculation** when elements move
1100
+ - **Context updates** when elements move between documents
1101
+ - **Resource cleanup/setup** during document adoption
1102
+
1031
1103
  ## Documentation
1032
1104
 
1033
1105
  - [Elements API](./docs/elements.md) - Complete guide to creating elements with properties, queries, and styling
@@ -1,6 +1,9 @@
1
1
  import { initialize } from './router';
2
2
  import './styles/global.css';
3
3
 
4
+ // Import a layout
5
+ import 'snice/components/layout/snice-layout';
6
+
4
7
  // Import components
5
8
  import './components/counter-button';
6
9
 
@@ -1,6 +1,15 @@
1
1
  import { page } from '../router';
2
+ import type { Placard } from 'snice';
2
3
 
3
- @page({ tag: 'about-page', routes: ['/about'] })
4
+ const placard: Placard = {
5
+ name: 'about',
6
+ title: 'About',
7
+ icon: 'ℹ️',
8
+ show: true,
9
+ order: 2
10
+ };
11
+
12
+ @page({ tag: 'about-page', routes: ['/about'], placard })
4
13
  export class AboutPage extends HTMLElement {
5
14
  html() {
6
15
  return /*html*/`
@@ -1,6 +1,15 @@
1
1
  import { page } from '../router';
2
+ import type { Placard } from 'snice';
2
3
 
3
- @page({ tag: 'home-page', routes: ['/'] })
4
+ const placard: Placard = {
5
+ name: 'home',
6
+ title: 'Home',
7
+ icon: '🏠',
8
+ show: true,
9
+ order: 1
10
+ };
11
+
12
+ @page({ tag: 'home-page', routes: ['/'], placard })
4
13
  export class HomePage extends HTMLElement {
5
14
  html() {
6
15
  return /*html*/`
@@ -1,8 +1,9 @@
1
1
  import { Router } from 'snice';
2
2
 
3
- const { page, initialize, navigate } = Router({
4
- target: '#app',
3
+ const { page, initialize, navigate } = Router({
4
+ target: '#app',
5
5
  type: 'hash',
6
+ layout: 'snice-layout',
6
7
  transition: {
7
8
  mode: 'simultaneous',
8
9
  outDuration: 200,
@@ -9,6 +9,7 @@ export declare class SniceDrawer extends HTMLElement implements SniceDrawerEleme
9
9
  noFocusTrap: boolean;
10
10
  persistent: boolean;
11
11
  pushContent: boolean;
12
+ contained: boolean;
12
13
  drawerElement?: HTMLElement;
13
14
  backdropElement?: HTMLElement;
14
15
  closeButton?: HTMLButtonElement;
@@ -19,6 +20,7 @@ export declare class SniceDrawer extends HTMLElement implements SniceDrawerEleme
19
20
  html(): string;
20
21
  css(): string;
21
22
  init(): void;
23
+ private _isHandlingOpenChange;
22
24
  handleOpenChange(): void;
23
25
  handleBackdropClick(e: MouseEvent): void;
24
26
  handleCloseClick(e: MouseEvent): void;
@@ -28,6 +30,8 @@ export declare class SniceDrawer extends HTMLElement implements SniceDrawerEleme
28
30
  private handleClose;
29
31
  private updatePushContent;
30
32
  private getFocusableElements;
33
+ private _lastEventType;
34
+ private _lastEventTime;
31
35
  private dispatchOpenEvent;
32
36
  private dispatchCloseEvent;
33
37
  cleanup(): void;
@@ -1,7 +1,7 @@
1
1
  import { __runInitializers, __esDecorate } from 'tslib';
2
- import { element, property, query, ready, watch, on, dispatch, dispose } from 'snice';
2
+ import { element, property, query, ready, watch, on, dispose } from 'snice';
3
3
 
4
- var css = ":host {\n --drawer-width-small: 15rem; /* 240px */\n --drawer-width-medium: 20rem; /* 320px */\n --drawer-width-large: 30rem; /* 480px */\n --drawer-width-xl: 40rem; /* 640px */\n --drawer-width-xxl: 50rem; /* 800px */\n --drawer-width-xxxl: 60rem; /* 960px */\n --drawer-height-small: 12.5rem; /* 200px */\n --drawer-height-medium: 25rem; /* 400px */\n --drawer-height-large: 37.5rem; /* 600px */\n --drawer-height-xl: 70vh;\n --drawer-height-xxl: 80vh;\n --drawer-height-xxxl: 90vh;\n --drawer-bg: white;\n --drawer-shadow: 0 0 20px rgba(0, 0, 0, 0.2);\n --drawer-backdrop: rgba(0, 0, 0, 0.5);\n --drawer-transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n --drawer-z-index: 1000;\n \n display: block;\n}\n\n.drawer-backdrop {\n position: fixed;\n inset: 0;\n background: var(--drawer-backdrop);\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n z-index: var(--drawer-z-index);\n pointer-events: none;\n visibility: hidden;\n}\n\n:host([open]) .drawer-backdrop {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n\n:host([no-backdrop]) .drawer-backdrop {\n display: none;\n}\n\n.drawer {\n position: fixed;\n background: var(--drawer-bg);\n box-shadow: var(--drawer-shadow);\n transition: var(--drawer-transition);\n z-index: calc(var(--drawer-z-index) + 1);\n display: flex;\n flex-direction: column;\n outline: none;\n overflow: hidden;\n visibility: hidden;\n}\n\n:host([open]) .drawer {\n visibility: visible;\n}\n\n/* Default styles when no position attribute (defaults to left) */\n:host(:not([position])) .drawer {\n top: 0;\n left: 0;\n height: 100%;\n width: var(--drawer-width-medium);\n transform: translateX(-100%);\n}\n\n:host(:not([position])[open]) .drawer {\n transform: translateX(0);\n}\n\n/* Position: Left */\n:host([position=\"left\"]) .drawer {\n top: 0;\n left: 0;\n height: 100%;\n width: var(--drawer-width-medium); /* Default width */\n transform: translateX(-100%);\n}\n\n:host([position=\"left\"][size=\"small\"]) .drawer {\n width: var(--drawer-width-small);\n}\n\n:host([position=\"left\"][size=\"medium\"]) .drawer {\n width: var(--drawer-width-medium);\n}\n\n:host([position=\"left\"][size=\"large\"]) .drawer {\n width: var(--drawer-width-large);\n}\n\n:host([position=\"left\"][size=\"xl\"]) .drawer {\n width: var(--drawer-width-xl);\n}\n\n:host([position=\"left\"][size=\"xxl\"]) .drawer {\n width: var(--drawer-width-xxl);\n}\n\n:host([position=\"left\"][size=\"xxxl\"]) .drawer {\n width: var(--drawer-width-xxxl);\n}\n\n:host([position=\"left\"][size=\"full\"]) .drawer {\n width: 100%;\n}\n\n:host([position=\"left\"][open]) .drawer {\n transform: translateX(0);\n}\n\n/* Position: Right */\n:host([position=\"right\"]) .drawer {\n top: 0;\n right: 0;\n height: 100%;\n width: var(--drawer-width-medium); /* Default width */\n transform: translateX(100%);\n}\n\n:host([position=\"right\"][size=\"small\"]) .drawer {\n width: var(--drawer-width-small);\n}\n\n:host([position=\"right\"][size=\"medium\"]) .drawer {\n width: var(--drawer-width-medium);\n}\n\n:host([position=\"right\"][size=\"large\"]) .drawer {\n width: var(--drawer-width-large);\n}\n\n:host([position=\"right\"][size=\"xl\"]) .drawer {\n width: var(--drawer-width-xl);\n}\n\n:host([position=\"right\"][size=\"xxl\"]) .drawer {\n width: var(--drawer-width-xxl);\n}\n\n:host([position=\"right\"][size=\"xxxl\"]) .drawer {\n width: var(--drawer-width-xxxl);\n}\n\n:host([position=\"right\"][size=\"full\"]) .drawer {\n width: 100%;\n}\n\n:host([position=\"right\"][open]) .drawer {\n transform: translateX(0);\n}\n\n/* Position: Top */\n:host([position=\"top\"]) .drawer {\n top: 0;\n left: 0;\n width: 100%;\n height: var(--drawer-height-medium); /* Default height */\n transform: translateY(-100%);\n}\n\n:host([position=\"top\"][size=\"small\"]) .drawer {\n height: var(--drawer-height-small);\n}\n\n:host([position=\"top\"][size=\"medium\"]) .drawer {\n height: var(--drawer-height-medium);\n}\n\n:host([position=\"top\"][size=\"large\"]) .drawer {\n height: var(--drawer-height-large);\n}\n\n:host([position=\"top\"][size=\"xl\"]) .drawer {\n height: var(--drawer-height-xl);\n}\n\n:host([position=\"top\"][size=\"xxl\"]) .drawer {\n height: var(--drawer-height-xxl);\n}\n\n:host([position=\"top\"][size=\"xxxl\"]) .drawer {\n height: var(--drawer-height-xxxl);\n}\n\n:host([position=\"top\"][size=\"full\"]) .drawer {\n height: 100%;\n}\n\n:host([position=\"top\"][open]) .drawer {\n transform: translateY(0);\n}\n\n/* Position: Bottom */\n:host([position=\"bottom\"]) .drawer {\n bottom: 0;\n left: 0;\n width: 100%;\n height: var(--drawer-height-medium); /* Default height */\n transform: translateY(100%);\n}\n\n:host([position=\"bottom\"][size=\"small\"]) .drawer {\n height: var(--drawer-height-small);\n}\n\n:host([position=\"bottom\"][size=\"medium\"]) .drawer {\n height: var(--drawer-height-medium);\n}\n\n:host([position=\"bottom\"][size=\"large\"]) .drawer {\n height: var(--drawer-height-large);\n}\n\n:host([position=\"bottom\"][size=\"xl\"]) .drawer {\n height: var(--drawer-height-xl);\n}\n\n:host([position=\"bottom\"][size=\"xxl\"]) .drawer {\n height: var(--drawer-height-xxl);\n}\n\n:host([position=\"bottom\"][size=\"xxxl\"]) .drawer {\n height: var(--drawer-height-xxxl);\n}\n\n:host([position=\"bottom\"][size=\"full\"]) .drawer {\n height: 100%;\n}\n\n:host([position=\"bottom\"][open]) .drawer {\n transform: translateY(0);\n}\n\n/* Drawer Header */\n.drawer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.25rem; /* 16px 20px */\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.drawer-header:has(.drawer-title:empty):not(:has(.drawer-close)) {\n display: none;\n}\n\n.drawer-title {\n font-size: 1.125rem; /* 18px */\n font-weight: 600;\n margin: 0;\n color: #111827;\n}\n\n.drawer-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem; /* 32px */\n height: 2rem; /* 32px */\n border: none;\n background: transparent;\n border-radius: 6px;\n cursor: pointer;\n color: #6b7280;\n transition: all 0.2s;\n}\n\n.drawer-close:hover {\n background: #f3f4f6;\n color: #111827;\n}\n\n.drawer-close:focus-visible {\n outline: 2px solid #3b82f6;\n outline-offset: 2px;\n}\n\n/* Drawer Body */\n.drawer-body {\n flex: 1;\n padding: 1.25rem; /* 20px */\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* Drawer Footer */\n.drawer-footer {\n padding: 1rem 1.25rem; /* 16px 20px */\n border-top: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.drawer-footer:empty {\n display: none;\n}\n\n/* Animations */\n@media (prefers-reduced-motion: reduce) {\n .drawer,\n .drawer-backdrop {\n transition: none;\n }\n}\n\n/* Responsive */\n@media (max-width: 640px) {\n :host([position=\"left\"][size=\"medium\"]) .drawer,\n :host([position=\"left\"][size=\"large\"]) .drawer,\n :host([position=\"left\"][size=\"xl\"]) .drawer,\n :host([position=\"left\"][size=\"xxl\"]) .drawer,\n :host([position=\"left\"][size=\"xxxl\"]) .drawer,\n :host([position=\"right\"][size=\"medium\"]) .drawer,\n :host([position=\"right\"][size=\"large\"]) .drawer,\n :host([position=\"right\"][size=\"xl\"]) .drawer,\n :host([position=\"right\"][size=\"xxl\"]) .drawer,\n :host([position=\"right\"][size=\"xxxl\"]) .drawer {\n width: calc(100% - 2.5rem); /* 40px */\n }\n}\n\n/* Focus trap styles */\n.focus-trap-start,\n.focus-trap-end {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Push content mode */\n:host([push-content]) {\n --drawer-push-amount: 0px;\n}\n\n/* Left position push amounts */\n:host([push-content][position=\"left\"][open][size=\"small\"]) {\n --drawer-push-amount: var(--drawer-width-small);\n}\n\n:host([push-content][position=\"left\"][open][size=\"medium\"]) {\n --drawer-push-amount: var(--drawer-width-medium);\n}\n\n:host([push-content][position=\"left\"][open][size=\"large\"]) {\n --drawer-push-amount: var(--drawer-width-large);\n}\n\n:host([push-content][position=\"left\"][open][size=\"xl\"]) {\n --drawer-push-amount: var(--drawer-width-xl);\n}\n\n:host([push-content][position=\"left\"][open][size=\"xxl\"]) {\n --drawer-push-amount: var(--drawer-width-xxl);\n}\n\n:host([push-content][position=\"left\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: var(--drawer-width-xxxl);\n}\n\n:host([push-content][position=\"left\"][open][size=\"full\"]) {\n --drawer-push-amount: 100vw;\n}\n\n/* Also handle when no size is specified (defaults to medium) */\n:host([push-content][position=\"left\"][open]:not([size])) {\n --drawer-push-amount: var(--drawer-width-medium);\n}\n\n/* Right position push amounts */\n:host([push-content][position=\"right\"][open][size=\"small\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-small));\n}\n\n:host([push-content][position=\"right\"][open][size=\"medium\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\n}\n\n:host([push-content][position=\"right\"][open][size=\"large\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-large));\n}\n\n:host([push-content][position=\"right\"][open][size=\"xl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-xl));\n}\n\n:host([push-content][position=\"right\"][open][size=\"xxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxl));\n}\n\n:host([push-content][position=\"right\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxxl));\n}\n\n:host([push-content][position=\"right\"][open][size=\"full\"]) {\n --drawer-push-amount: -100vw;\n}\n\n:host([push-content][position=\"right\"][open]:not([size])) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\n}\n\n/* Top position push amounts */\n:host([push-content][position=\"top\"][open][size=\"small\"]) {\n --drawer-push-amount: var(--drawer-height-small);\n}\n\n:host([push-content][position=\"top\"][open][size=\"medium\"]) {\n --drawer-push-amount: var(--drawer-height-medium);\n}\n\n:host([push-content][position=\"top\"][open][size=\"large\"]) {\n --drawer-push-amount: var(--drawer-height-large);\n}\n\n:host([push-content][position=\"top\"][open][size=\"xl\"]) {\n --drawer-push-amount: var(--drawer-height-xl);\n}\n\n:host([push-content][position=\"top\"][open][size=\"xxl\"]) {\n --drawer-push-amount: var(--drawer-height-xxl);\n}\n\n:host([push-content][position=\"top\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: var(--drawer-height-xxxl);\n}\n\n:host([push-content][position=\"top\"][open][size=\"full\"]) {\n --drawer-push-amount: 100vh;\n}\n\n:host([push-content][position=\"top\"][open]:not([size])) {\n --drawer-push-amount: var(--drawer-height-medium);\n}\n\n/* Bottom position push amounts */\n:host([push-content][position=\"bottom\"][open][size=\"small\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-small));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"medium\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"large\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-large));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"xl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-xl));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"xxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxl));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxxl));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"full\"]) {\n --drawer-push-amount: -100vh;\n}\n\n:host([push-content][position=\"bottom\"][open]:not([size])) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\n}";
4
+ var css = ":host {\n /* Drawer sizes with theme integration and rem units */\n --drawer-width-small: var(--snice-size-drawer-small, 15rem); /* 240px */\n --drawer-width-medium: var(--snice-size-drawer-medium, 20rem); /* 320px */\n --drawer-width-large: var(--snice-size-drawer-large, 30rem); /* 480px */\n --drawer-width-xl: var(--snice-size-drawer-xl, 40rem); /* 640px */\n --drawer-width-xxl: var(--snice-size-drawer-xxl, 50rem); /* 800px */\n --drawer-width-xxxl: var(--snice-size-drawer-xxxl, 60rem); /* 960px */\n --drawer-height-small: var(--snice-size-drawer-height-small, 12.5rem); /* 200px */\n --drawer-height-medium: var(--snice-size-drawer-height-medium, 25rem); /* 400px */\n --drawer-height-large: var(--snice-size-drawer-height-large, 37.5rem); /* 600px */\n --drawer-height-xl: var(--snice-size-drawer-height-xl, 70vh);\n --drawer-height-xxl: var(--snice-size-drawer-height-xxl, 80vh);\n --drawer-height-xxxl: var(--snice-size-drawer-height-xxxl, 90vh);\n\n /* Theme-integrated colors and effects */\n --drawer-bg: var(--snice-color-background, white);\n --drawer-shadow: var(--snice-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1));\n --drawer-backdrop: var(--snice-color-backdrop, rgba(0, 0, 0, 0.5));\n --drawer-transition: transform var(--snice-transition-medium, 250ms) cubic-bezier(0.4, 0, 0.2, 1);\n --drawer-z-index: var(--snice-z-index-modal, 1050);\n\n /* Default: fixed positioning (modal behavior) */\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n pointer-events: none;\n isolation: isolate;\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);\n contain: layout style paint;\n}\n\n/* Contained variant - position within parent */\n:host([contained]) {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.drawer-backdrop {\n position: absolute;\n inset: 0;\n background: var(--drawer-backdrop);\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n z-index: var(--drawer-z-index);\n pointer-events: none;\n visibility: hidden;\n}\n\n:host([open]) {\n pointer-events: auto;\n}\n\n:host([open]) .drawer-backdrop {\n opacity: 1;\n pointer-events: auto;\n visibility: visible;\n}\n\n:host([no-backdrop]) .drawer-backdrop {\n display: none;\n}\n\n.drawer {\n position: absolute;\n background: var(--drawer-bg);\n box-shadow: var(--drawer-shadow);\n transition:\n transform var(--snice-transition-medium, 250ms) cubic-bezier(0.4, 0, 0.2, 1),\n opacity var(--snice-transition-medium, 250ms) cubic-bezier(0.2, 0, 0.8, 1);\n z-index: calc(var(--drawer-z-index) + 1);\n display: flex;\n flex-direction: column;\n outline: none;\n overflow: hidden;\n opacity: 0;\n pointer-events: auto;\n}\n\n:host([open]) .drawer {\n opacity: 1;\n}\n\n/* Default styles when no position attribute (defaults to left) */\n:host(:not([position])) .drawer {\n top: 0;\n left: 0;\n height: 100%;\n width: var(--drawer-width-medium);\n transform: translateX(-100%);\n}\n\n:host(:not([position])[open]) .drawer {\n transform: translateX(0);\n}\n\n/* Position: Left */\n:host([position=\"left\"]) .drawer {\n top: 0;\n left: 0;\n height: 100%;\n width: var(--drawer-width-medium); /* Default width */\n transform: translateX(-100%);\n}\n\n:host([position=\"left\"][size=\"small\"]) .drawer {\n width: var(--drawer-width-small);\n}\n\n:host([position=\"left\"][size=\"medium\"]) .drawer {\n width: var(--drawer-width-medium);\n}\n\n:host([position=\"left\"][size=\"large\"]) .drawer {\n width: var(--drawer-width-large);\n}\n\n:host([position=\"left\"][size=\"xl\"]) .drawer {\n width: var(--drawer-width-xl);\n}\n\n:host([position=\"left\"][size=\"xxl\"]) .drawer {\n width: var(--drawer-width-xxl);\n}\n\n:host([position=\"left\"][size=\"xxxl\"]) .drawer {\n width: var(--drawer-width-xxxl);\n}\n\n:host([position=\"left\"][size=\"full\"]) .drawer {\n width: 100%;\n}\n\n:host([position=\"left\"][open]) .drawer {\n transform: translateX(0);\n}\n\n/* Position: Right */\n:host([position=\"right\"]) .drawer {\n top: 0;\n right: 0;\n height: 100%;\n width: var(--drawer-width-medium); /* Default width */\n transform: translateX(100%);\n}\n\n:host([position=\"right\"][size=\"small\"]) .drawer {\n width: var(--drawer-width-small);\n}\n\n:host([position=\"right\"][size=\"medium\"]) .drawer {\n width: var(--drawer-width-medium);\n}\n\n:host([position=\"right\"][size=\"large\"]) .drawer {\n width: var(--drawer-width-large);\n}\n\n:host([position=\"right\"][size=\"xl\"]) .drawer {\n width: var(--drawer-width-xl);\n}\n\n:host([position=\"right\"][size=\"xxl\"]) .drawer {\n width: var(--drawer-width-xxl);\n}\n\n:host([position=\"right\"][size=\"xxxl\"]) .drawer {\n width: var(--drawer-width-xxxl);\n}\n\n:host([position=\"right\"][size=\"full\"]) .drawer {\n width: 100%;\n}\n\n:host([position=\"right\"][open]) .drawer {\n transform: translateX(0);\n}\n\n/* Position: Top */\n:host([position=\"top\"]) .drawer {\n top: 0;\n left: 0;\n width: 100%;\n height: var(--drawer-height-medium); /* Default height */\n transform: translateY(-100%);\n}\n\n:host([position=\"top\"][size=\"small\"]) .drawer {\n height: var(--drawer-height-small);\n}\n\n:host([position=\"top\"][size=\"medium\"]) .drawer {\n height: var(--drawer-height-medium);\n}\n\n:host([position=\"top\"][size=\"large\"]) .drawer {\n height: var(--drawer-height-large);\n}\n\n:host([position=\"top\"][size=\"xl\"]) .drawer {\n height: var(--drawer-height-xl);\n}\n\n:host([position=\"top\"][size=\"xxl\"]) .drawer {\n height: var(--drawer-height-xxl);\n}\n\n:host([position=\"top\"][size=\"xxxl\"]) .drawer {\n height: var(--drawer-height-xxxl);\n}\n\n:host([position=\"top\"][size=\"full\"]) .drawer {\n height: 100%;\n}\n\n:host([position=\"top\"][open]) .drawer {\n transform: translateY(0);\n}\n\n/* Position: Bottom */\n:host([position=\"bottom\"]) .drawer {\n bottom: 0;\n left: 0;\n width: 100%;\n height: var(--drawer-height-medium); /* Default height */\n transform: translateY(100%);\n}\n\n:host([position=\"bottom\"][size=\"small\"]) .drawer {\n height: var(--drawer-height-small);\n}\n\n:host([position=\"bottom\"][size=\"medium\"]) .drawer {\n height: var(--drawer-height-medium);\n}\n\n:host([position=\"bottom\"][size=\"large\"]) .drawer {\n height: var(--drawer-height-large);\n}\n\n:host([position=\"bottom\"][size=\"xl\"]) .drawer {\n height: var(--drawer-height-xl);\n}\n\n:host([position=\"bottom\"][size=\"xxl\"]) .drawer {\n height: var(--drawer-height-xxl);\n}\n\n:host([position=\"bottom\"][size=\"xxxl\"]) .drawer {\n height: var(--drawer-height-xxxl);\n}\n\n:host([position=\"bottom\"][size=\"full\"]) .drawer {\n height: 100%;\n}\n\n:host([position=\"bottom\"][open]) .drawer {\n transform: translateY(0);\n}\n\n/* Drawer Header */\n.drawer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem); /* 16px 20px */\n border-bottom: 1px solid var(--snice-color-border, rgb(229 231 235));\n background: var(--snice-color-background, white);\n flex-shrink: 0;\n}\n\n.drawer-header:has(.drawer-title:empty):not(:has(.drawer-close)) {\n display: none;\n}\n\n.drawer-title {\n font-size: var(--snice-font-size-lg, 1.125rem); /* 18px */\n font-weight: var(--snice-font-weight-semibold, 600);\n margin: 0;\n color: var(--snice-color-text, rgb(17 24 39));\n line-height: var(--snice-line-height-tight, 1.25);\n}\n\n.drawer-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--snice-size-control-md, 2rem); /* 32px */\n height: var(--snice-size-control-md, 2rem); /* 32px */\n border: none;\n background: transparent;\n border-radius: var(--snice-border-radius-md, 6px);\n cursor: pointer;\n color: var(--snice-color-text-secondary, rgb(107 114 128));\n transition: all var(--snice-transition-fast, 150ms) ease;\n}\n\n.drawer-close:hover {\n background: var(--snice-color-background-hover, rgb(243 244 246));\n color: var(--snice-color-text, rgb(17 24 39));\n}\n\n.drawer-close:focus-visible {\n outline: var(--snice-focus-ring-width, 2px) solid var(--snice-focus-ring-color, rgb(59 130 246));\n outline-offset: var(--snice-focus-ring-offset, 2px);\n}\n\n/* Drawer Body */\n.drawer-body {\n flex: 1;\n padding: var(--snice-spacing-lg, 1.25rem); /* 20px */\n overflow-y: auto;\n overflow-x: hidden;\n color: var(--snice-color-text, rgb(17 24 39));\n}\n\n/* Drawer Footer */\n.drawer-footer {\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem); /* 16px 20px */\n border-top: 1px solid var(--snice-color-border, rgb(229 231 235));\n background: var(--snice-color-background, white);\n flex-shrink: 0;\n}\n\n.drawer-footer:empty {\n display: none;\n}\n\n/* Animations */\n@media (prefers-reduced-motion: reduce) {\n .drawer,\n .drawer-backdrop {\n transition: none;\n }\n}\n\n/* Responsive */\n@media (max-width: 640px) {\n :host([position=\"left\"][size=\"medium\"]) .drawer,\n :host([position=\"left\"][size=\"large\"]) .drawer,\n :host([position=\"left\"][size=\"xl\"]) .drawer,\n :host([position=\"left\"][size=\"xxl\"]) .drawer,\n :host([position=\"left\"][size=\"xxxl\"]) .drawer,\n :host([position=\"right\"][size=\"medium\"]) .drawer,\n :host([position=\"right\"][size=\"large\"]) .drawer,\n :host([position=\"right\"][size=\"xl\"]) .drawer,\n :host([position=\"right\"][size=\"xxl\"]) .drawer,\n :host([position=\"right\"][size=\"xxxl\"]) .drawer {\n width: calc(100% - 2.5rem); /* 40px */\n }\n}\n\n/* Focus trap styles */\n.focus-trap-start,\n.focus-trap-end {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Push content mode */\n:host([push-content]) {\n --drawer-push-amount: 0px;\n}\n\n/* Left position push amounts */\n:host([push-content][position=\"left\"][open][size=\"small\"]) {\n --drawer-push-amount: var(--drawer-width-small);\n}\n\n:host([push-content][position=\"left\"][open][size=\"medium\"]) {\n --drawer-push-amount: var(--drawer-width-medium);\n}\n\n:host([push-content][position=\"left\"][open][size=\"large\"]) {\n --drawer-push-amount: var(--drawer-width-large);\n}\n\n:host([push-content][position=\"left\"][open][size=\"xl\"]) {\n --drawer-push-amount: var(--drawer-width-xl);\n}\n\n:host([push-content][position=\"left\"][open][size=\"xxl\"]) {\n --drawer-push-amount: var(--drawer-width-xxl);\n}\n\n:host([push-content][position=\"left\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: var(--drawer-width-xxxl);\n}\n\n:host([push-content][position=\"left\"][open][size=\"full\"]) {\n --drawer-push-amount: 100vw;\n}\n\n/* Also handle when no size is specified (defaults to medium) */\n:host([push-content][position=\"left\"][open]:not([size])) {\n --drawer-push-amount: var(--drawer-width-medium);\n}\n\n/* Right position push amounts */\n:host([push-content][position=\"right\"][open][size=\"small\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-small));\n}\n\n:host([push-content][position=\"right\"][open][size=\"medium\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\n}\n\n:host([push-content][position=\"right\"][open][size=\"large\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-large));\n}\n\n:host([push-content][position=\"right\"][open][size=\"xl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-xl));\n}\n\n:host([push-content][position=\"right\"][open][size=\"xxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxl));\n}\n\n:host([push-content][position=\"right\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxxl));\n}\n\n:host([push-content][position=\"right\"][open][size=\"full\"]) {\n --drawer-push-amount: -100vw;\n}\n\n:host([push-content][position=\"right\"][open]:not([size])) {\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\n}\n\n/* Top position push amounts */\n:host([push-content][position=\"top\"][open][size=\"small\"]) {\n --drawer-push-amount: var(--drawer-height-small);\n}\n\n:host([push-content][position=\"top\"][open][size=\"medium\"]) {\n --drawer-push-amount: var(--drawer-height-medium);\n}\n\n:host([push-content][position=\"top\"][open][size=\"large\"]) {\n --drawer-push-amount: var(--drawer-height-large);\n}\n\n:host([push-content][position=\"top\"][open][size=\"xl\"]) {\n --drawer-push-amount: var(--drawer-height-xl);\n}\n\n:host([push-content][position=\"top\"][open][size=\"xxl\"]) {\n --drawer-push-amount: var(--drawer-height-xxl);\n}\n\n:host([push-content][position=\"top\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: var(--drawer-height-xxxl);\n}\n\n:host([push-content][position=\"top\"][open][size=\"full\"]) {\n --drawer-push-amount: 100vh;\n}\n\n:host([push-content][position=\"top\"][open]:not([size])) {\n --drawer-push-amount: var(--drawer-height-medium);\n}\n\n/* Bottom position push amounts */\n:host([push-content][position=\"bottom\"][open][size=\"small\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-small));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"medium\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"large\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-large));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"xl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-xl));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"xxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxl));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"xxxl\"]) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxxl));\n}\n\n:host([push-content][position=\"bottom\"][open][size=\"full\"]) {\n --drawer-push-amount: -100vh;\n}\n\n:host([push-content][position=\"bottom\"][open]:not([size])) {\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\n}";
5
5
 
6
6
  let SniceDrawer = (() => {
7
7
  let _classDecorators = [element('snice-drawer')];
@@ -37,6 +37,9 @@ let SniceDrawer = (() => {
37
37
  let _pushContent_decorators;
38
38
  let _pushContent_initializers = [];
39
39
  let _pushContent_extraInitializers = [];
40
+ let _contained_decorators;
41
+ let _contained_initializers = [];
42
+ let _contained_extraInitializers = [];
40
43
  let _drawerElement_decorators;
41
44
  let _drawerElement_initializers = [];
42
45
  let _drawerElement_extraInitializers = [];
@@ -58,8 +61,6 @@ let SniceDrawer = (() => {
58
61
  let _handleCloseClick_decorators;
59
62
  let _handleFocusTrapStart_decorators;
60
63
  let _handleFocusTrapEnd_decorators;
61
- let _dispatchOpenEvent_decorators;
62
- let _dispatchCloseEvent_decorators;
63
64
  let _cleanup_decorators;
64
65
  (class extends _classSuper {
65
66
  static { _classThis = this; }
@@ -74,12 +75,16 @@ let SniceDrawer = (() => {
74
75
  this.noFocusTrap = (__runInitializers(this, _noEscapeDismiss_extraInitializers), __runInitializers(this, _noFocusTrap_initializers, false));
75
76
  this.persistent = (__runInitializers(this, _noFocusTrap_extraInitializers), __runInitializers(this, _persistent_initializers, false));
76
77
  this.pushContent = (__runInitializers(this, _persistent_extraInitializers), __runInitializers(this, _pushContent_initializers, false));
77
- this.drawerElement = (__runInitializers(this, _pushContent_extraInitializers), __runInitializers(this, _drawerElement_initializers, void 0));
78
+ this.contained = (__runInitializers(this, _pushContent_extraInitializers), __runInitializers(this, _contained_initializers, false));
79
+ this.drawerElement = (__runInitializers(this, _contained_extraInitializers), __runInitializers(this, _drawerElement_initializers, void 0));
78
80
  this.backdropElement = (__runInitializers(this, _drawerElement_extraInitializers), __runInitializers(this, _backdropElement_initializers, void 0));
79
81
  this.closeButton = (__runInitializers(this, _backdropElement_extraInitializers), __runInitializers(this, _closeButton_initializers, void 0));
80
82
  this.focusTrapStart = (__runInitializers(this, _closeButton_extraInitializers), __runInitializers(this, _focusTrapStart_initializers, void 0));
81
83
  this.focusTrapEnd = (__runInitializers(this, _focusTrapStart_extraInitializers), __runInitializers(this, _focusTrapEnd_initializers, void 0));
82
84
  this.previousFocus = __runInitializers(this, _focusTrapEnd_extraInitializers);
85
+ this._isHandlingOpenChange = false;
86
+ this._lastEventType = null;
87
+ this._lastEventTime = 0;
83
88
  }
84
89
  static {
85
90
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -92,6 +97,7 @@ let SniceDrawer = (() => {
92
97
  _noFocusTrap_decorators = [property({ type: Boolean, attribute: 'no-focus-trap', })];
93
98
  _persistent_decorators = [property({ type: Boolean, })];
94
99
  _pushContent_decorators = [property({ type: Boolean, attribute: 'push-content', })];
100
+ _contained_decorators = [property({ type: Boolean, })];
95
101
  _drawerElement_decorators = [query('.drawer')];
96
102
  _backdropElement_decorators = [query('.drawer-backdrop')];
97
103
  _closeButton_decorators = [query('.drawer-close')];
@@ -103,8 +109,6 @@ let SniceDrawer = (() => {
103
109
  _handleCloseClick_decorators = [on('click', '.drawer-close')];
104
110
  _handleFocusTrapStart_decorators = [on('focus', '.focus-trap-start')];
105
111
  _handleFocusTrapEnd_decorators = [on('focus', '.focus-trap-end')];
106
- _dispatchOpenEvent_decorators = [dispatch('drawer-open', { bubbles: true, composed: true })];
107
- _dispatchCloseEvent_decorators = [dispatch('drawer-close', { bubbles: true, composed: true })];
108
112
  _cleanup_decorators = [dispose()];
109
113
  __esDecorate(this, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: obj => "init" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);
110
114
  __esDecorate(this, null, _handleOpenChange_decorators, { kind: "method", name: "handleOpenChange", static: false, private: false, access: { has: obj => "handleOpenChange" in obj, get: obj => obj.handleOpenChange }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -112,8 +116,6 @@ let SniceDrawer = (() => {
112
116
  __esDecorate(this, null, _handleCloseClick_decorators, { kind: "method", name: "handleCloseClick", static: false, private: false, access: { has: obj => "handleCloseClick" in obj, get: obj => obj.handleCloseClick }, metadata: _metadata }, null, _instanceExtraInitializers);
113
117
  __esDecorate(this, null, _handleFocusTrapStart_decorators, { kind: "method", name: "handleFocusTrapStart", static: false, private: false, access: { has: obj => "handleFocusTrapStart" in obj, get: obj => obj.handleFocusTrapStart }, metadata: _metadata }, null, _instanceExtraInitializers);
114
118
  __esDecorate(this, null, _handleFocusTrapEnd_decorators, { kind: "method", name: "handleFocusTrapEnd", static: false, private: false, access: { has: obj => "handleFocusTrapEnd" in obj, get: obj => obj.handleFocusTrapEnd }, metadata: _metadata }, null, _instanceExtraInitializers);
115
- __esDecorate(this, null, _dispatchOpenEvent_decorators, { kind: "method", name: "dispatchOpenEvent", static: false, private: false, access: { has: obj => "dispatchOpenEvent" in obj, get: obj => obj.dispatchOpenEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
116
- __esDecorate(this, null, _dispatchCloseEvent_decorators, { kind: "method", name: "dispatchCloseEvent", static: false, private: false, access: { has: obj => "dispatchCloseEvent" in obj, get: obj => obj.dispatchCloseEvent }, metadata: _metadata }, null, _instanceExtraInitializers);
117
119
  __esDecorate(this, null, _cleanup_decorators, { kind: "method", name: "cleanup", static: false, private: false, access: { has: obj => "cleanup" in obj, get: obj => obj.cleanup }, metadata: _metadata }, null, _instanceExtraInitializers);
118
120
  __esDecorate(null, null, _open_decorators, { kind: "field", name: "open", static: false, private: false, access: { has: obj => "open" in obj, get: obj => obj.open, set: (obj, value) => { obj.open = value; } }, metadata: _metadata }, _open_initializers, _open_extraInitializers);
119
121
  __esDecorate(null, null, _position_decorators, { kind: "field", name: "position", static: false, private: false, access: { has: obj => "position" in obj, get: obj => obj.position, set: (obj, value) => { obj.position = value; } }, metadata: _metadata }, _position_initializers, _position_extraInitializers);
@@ -124,6 +126,7 @@ let SniceDrawer = (() => {
124
126
  __esDecorate(null, null, _noFocusTrap_decorators, { kind: "field", name: "noFocusTrap", static: false, private: false, access: { has: obj => "noFocusTrap" in obj, get: obj => obj.noFocusTrap, set: (obj, value) => { obj.noFocusTrap = value; } }, metadata: _metadata }, _noFocusTrap_initializers, _noFocusTrap_extraInitializers);
125
127
  __esDecorate(null, null, _persistent_decorators, { kind: "field", name: "persistent", static: false, private: false, access: { has: obj => "persistent" in obj, get: obj => obj.persistent, set: (obj, value) => { obj.persistent = value; } }, metadata: _metadata }, _persistent_initializers, _persistent_extraInitializers);
126
128
  __esDecorate(null, null, _pushContent_decorators, { kind: "field", name: "pushContent", static: false, private: false, access: { has: obj => "pushContent" in obj, get: obj => obj.pushContent, set: (obj, value) => { obj.pushContent = value; } }, metadata: _metadata }, _pushContent_initializers, _pushContent_extraInitializers);
129
+ __esDecorate(null, null, _contained_decorators, { kind: "field", name: "contained", static: false, private: false, access: { has: obj => "contained" in obj, get: obj => obj.contained, set: (obj, value) => { obj.contained = value; } }, metadata: _metadata }, _contained_initializers, _contained_extraInitializers);
127
130
  __esDecorate(null, null, _drawerElement_decorators, { kind: "field", name: "drawerElement", static: false, private: false, access: { has: obj => "drawerElement" in obj, get: obj => obj.drawerElement, set: (obj, value) => { obj.drawerElement = value; } }, metadata: _metadata }, _drawerElement_initializers, _drawerElement_extraInitializers);
128
131
  __esDecorate(null, null, _backdropElement_decorators, { kind: "field", name: "backdropElement", static: false, private: false, access: { has: obj => "backdropElement" in obj, get: obj => obj.backdropElement, set: (obj, value) => { obj.backdropElement = value; } }, metadata: _metadata }, _backdropElement_initializers, _backdropElement_extraInitializers);
129
132
  __esDecorate(null, null, _closeButton_decorators, { kind: "field", name: "closeButton", static: false, private: false, access: { has: obj => "closeButton" in obj, get: obj => obj.closeButton, set: (obj, value) => { obj.closeButton = value; } }, metadata: _metadata }, _closeButton_initializers, _closeButton_extraInitializers);
@@ -191,12 +194,21 @@ let SniceDrawer = (() => {
191
194
  }
192
195
  }
193
196
  handleOpenChange() {
194
- this.setAttribute('aria-hidden', String(!this.open));
195
- if (this.open) {
196
- this.handleOpen();
197
+ // Prevent duplicate handling
198
+ if (this._isHandlingOpenChange)
199
+ return;
200
+ this._isHandlingOpenChange = true;
201
+ try {
202
+ this.setAttribute('aria-hidden', String(!this.open));
203
+ if (this.open) {
204
+ this.handleOpen();
205
+ }
206
+ else {
207
+ this.handleClose();
208
+ }
197
209
  }
198
- else {
199
- this.handleClose();
210
+ finally {
211
+ this._isHandlingOpenChange = false;
200
212
  }
201
213
  }
202
214
  handleBackdropClick(e) {
@@ -240,17 +252,17 @@ let SniceDrawer = (() => {
240
252
  };
241
253
  document.addEventListener('keydown', this.boundHandleEscape);
242
254
  }
243
- // Prevent body scroll
244
- document.body.style.overflow = 'hidden';
255
+ // REMOVED: No longer manipulating document.body.style.overflow
256
+ // The drawer is now contained and doesn't need to prevent body scroll
245
257
  // Focus management
246
258
  if (!this.noFocusTrap) {
247
259
  requestAnimationFrame(() => {
248
260
  if (this.drawerElement) {
249
- this.drawerElement.focus();
261
+ this.drawerElement.focus({ preventScroll: true });
250
262
  }
251
263
  });
252
264
  }
253
- // Push content if enabled
265
+ // Push content if enabled (still supported for those who need it)
254
266
  if (this.pushContent) {
255
267
  this.updatePushContent();
256
268
  }
@@ -262,8 +274,7 @@ let SniceDrawer = (() => {
262
274
  document.removeEventListener('keydown', this.boundHandleEscape);
263
275
  this.boundHandleEscape = undefined;
264
276
  }
265
- // Restore body scroll
266
- document.body.style.overflow = '';
277
+ // REMOVED: No longer manipulating document.body.style.overflow
267
278
  // Restore focus
268
279
  if (this.previousFocus && this.previousFocus.focus) {
269
280
  this.previousFocus.focus();
@@ -308,16 +319,40 @@ let SniceDrawer = (() => {
308
319
  '[tabindex]:not([tabindex="-1"])');
309
320
  }
310
321
  dispatchOpenEvent() {
311
- return { drawer: this };
322
+ // Prevent duplicate events within 100ms
323
+ const now = Date.now();
324
+ if (this._lastEventType === 'open' && (now - this._lastEventTime) < 100) {
325
+ return;
326
+ }
327
+ this._lastEventType = 'open';
328
+ this._lastEventTime = now;
329
+ // Manually dispatch event
330
+ this.dispatchEvent(new CustomEvent('@snice/drawer-open', {
331
+ bubbles: true,
332
+ composed: true,
333
+ detail: { drawer: this }
334
+ }));
312
335
  }
313
336
  dispatchCloseEvent() {
314
- return { drawer: this };
337
+ // Prevent duplicate events within 100ms
338
+ const now = Date.now();
339
+ if (this._lastEventType === 'close' && (now - this._lastEventTime) < 100) {
340
+ return;
341
+ }
342
+ this._lastEventType = 'close';
343
+ this._lastEventTime = now;
344
+ // Manually dispatch event
345
+ this.dispatchEvent(new CustomEvent('@snice/drawer-close', {
346
+ bubbles: true,
347
+ composed: true,
348
+ detail: { drawer: this }
349
+ }));
315
350
  }
316
351
  cleanup() {
317
352
  if (this.boundHandleEscape) {
318
353
  document.removeEventListener('keydown', this.boundHandleEscape);
319
354
  }
320
- document.body.style.overflow = '';
355
+ // REMOVED: No longer manipulating document.body.style.overflow
321
356
  }
322
357
  // Public API
323
358
  show() {
@@ -1 +1 @@
1
- {"version":3,"file":"snice-drawer.js","sources":["../../../components/drawer/snice-drawer.css?inline","../../../../components/drawer/snice-drawer.ts"],"sourcesContent":["export default \":host {\\n --drawer-width-small: 15rem; /* 240px */\\n --drawer-width-medium: 20rem; /* 320px */\\n --drawer-width-large: 30rem; /* 480px */\\n --drawer-width-xl: 40rem; /* 640px */\\n --drawer-width-xxl: 50rem; /* 800px */\\n --drawer-width-xxxl: 60rem; /* 960px */\\n --drawer-height-small: 12.5rem; /* 200px */\\n --drawer-height-medium: 25rem; /* 400px */\\n --drawer-height-large: 37.5rem; /* 600px */\\n --drawer-height-xl: 70vh;\\n --drawer-height-xxl: 80vh;\\n --drawer-height-xxxl: 90vh;\\n --drawer-bg: white;\\n --drawer-shadow: 0 0 20px rgba(0, 0, 0, 0.2);\\n --drawer-backdrop: rgba(0, 0, 0, 0.5);\\n --drawer-transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\\n --drawer-z-index: 1000;\\n \\n display: block;\\n}\\n\\n.drawer-backdrop {\\n position: fixed;\\n inset: 0;\\n background: var(--drawer-backdrop);\\n opacity: 0;\\n transition: opacity 0.3s ease-in-out;\\n z-index: var(--drawer-z-index);\\n pointer-events: none;\\n visibility: hidden;\\n}\\n\\n:host([open]) .drawer-backdrop {\\n opacity: 1;\\n pointer-events: auto;\\n visibility: visible;\\n}\\n\\n:host([no-backdrop]) .drawer-backdrop {\\n display: none;\\n}\\n\\n.drawer {\\n position: fixed;\\n background: var(--drawer-bg);\\n box-shadow: var(--drawer-shadow);\\n transition: var(--drawer-transition);\\n z-index: calc(var(--drawer-z-index) + 1);\\n display: flex;\\n flex-direction: column;\\n outline: none;\\n overflow: hidden;\\n visibility: hidden;\\n}\\n\\n:host([open]) .drawer {\\n visibility: visible;\\n}\\n\\n/* Default styles when no position attribute (defaults to left) */\\n:host(:not([position])) .drawer {\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: var(--drawer-width-medium);\\n transform: translateX(-100%);\\n}\\n\\n:host(:not([position])[open]) .drawer {\\n transform: translateX(0);\\n}\\n\\n/* Position: Left */\\n:host([position=\\\"left\\\"]) .drawer {\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: var(--drawer-width-medium); /* Default width */\\n transform: translateX(-100%);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"small\\\"]) .drawer {\\n width: var(--drawer-width-small);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"medium\\\"]) .drawer {\\n width: var(--drawer-width-medium);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"large\\\"]) .drawer {\\n width: var(--drawer-width-large);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"xl\\\"]) .drawer {\\n width: var(--drawer-width-xl);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"xxl\\\"]) .drawer {\\n width: var(--drawer-width-xxl);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"xxxl\\\"]) .drawer {\\n width: var(--drawer-width-xxxl);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"full\\\"]) .drawer {\\n width: 100%;\\n}\\n\\n:host([position=\\\"left\\\"][open]) .drawer {\\n transform: translateX(0);\\n}\\n\\n/* Position: Right */\\n:host([position=\\\"right\\\"]) .drawer {\\n top: 0;\\n right: 0;\\n height: 100%;\\n width: var(--drawer-width-medium); /* Default width */\\n transform: translateX(100%);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"small\\\"]) .drawer {\\n width: var(--drawer-width-small);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"medium\\\"]) .drawer {\\n width: var(--drawer-width-medium);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"large\\\"]) .drawer {\\n width: var(--drawer-width-large);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"xl\\\"]) .drawer {\\n width: var(--drawer-width-xl);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"xxl\\\"]) .drawer {\\n width: var(--drawer-width-xxl);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"xxxl\\\"]) .drawer {\\n width: var(--drawer-width-xxxl);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"full\\\"]) .drawer {\\n width: 100%;\\n}\\n\\n:host([position=\\\"right\\\"][open]) .drawer {\\n transform: translateX(0);\\n}\\n\\n/* Position: Top */\\n:host([position=\\\"top\\\"]) .drawer {\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: var(--drawer-height-medium); /* Default height */\\n transform: translateY(-100%);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"small\\\"]) .drawer {\\n height: var(--drawer-height-small);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"medium\\\"]) .drawer {\\n height: var(--drawer-height-medium);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"large\\\"]) .drawer {\\n height: var(--drawer-height-large);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"xl\\\"]) .drawer {\\n height: var(--drawer-height-xl);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"xxl\\\"]) .drawer {\\n height: var(--drawer-height-xxl);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"xxxl\\\"]) .drawer {\\n height: var(--drawer-height-xxxl);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"full\\\"]) .drawer {\\n height: 100%;\\n}\\n\\n:host([position=\\\"top\\\"][open]) .drawer {\\n transform: translateY(0);\\n}\\n\\n/* Position: Bottom */\\n:host([position=\\\"bottom\\\"]) .drawer {\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: var(--drawer-height-medium); /* Default height */\\n transform: translateY(100%);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"small\\\"]) .drawer {\\n height: var(--drawer-height-small);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"medium\\\"]) .drawer {\\n height: var(--drawer-height-medium);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"large\\\"]) .drawer {\\n height: var(--drawer-height-large);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"xl\\\"]) .drawer {\\n height: var(--drawer-height-xl);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"xxl\\\"]) .drawer {\\n height: var(--drawer-height-xxl);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"xxxl\\\"]) .drawer {\\n height: var(--drawer-height-xxxl);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"full\\\"]) .drawer {\\n height: 100%;\\n}\\n\\n:host([position=\\\"bottom\\\"][open]) .drawer {\\n transform: translateY(0);\\n}\\n\\n/* Drawer Header */\\n.drawer-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 1rem 1.25rem; /* 16px 20px */\\n border-bottom: 1px solid #e5e7eb;\\n flex-shrink: 0;\\n}\\n\\n.drawer-header:has(.drawer-title:empty):not(:has(.drawer-close)) {\\n display: none;\\n}\\n\\n.drawer-title {\\n font-size: 1.125rem; /* 18px */\\n font-weight: 600;\\n margin: 0;\\n color: #111827;\\n}\\n\\n.drawer-close {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 2rem; /* 32px */\\n height: 2rem; /* 32px */\\n border: none;\\n background: transparent;\\n border-radius: 6px;\\n cursor: pointer;\\n color: #6b7280;\\n transition: all 0.2s;\\n}\\n\\n.drawer-close:hover {\\n background: #f3f4f6;\\n color: #111827;\\n}\\n\\n.drawer-close:focus-visible {\\n outline: 2px solid #3b82f6;\\n outline-offset: 2px;\\n}\\n\\n/* Drawer Body */\\n.drawer-body {\\n flex: 1;\\n padding: 1.25rem; /* 20px */\\n overflow-y: auto;\\n overflow-x: hidden;\\n}\\n\\n/* Drawer Footer */\\n.drawer-footer {\\n padding: 1rem 1.25rem; /* 16px 20px */\\n border-top: 1px solid #e5e7eb;\\n flex-shrink: 0;\\n}\\n\\n.drawer-footer:empty {\\n display: none;\\n}\\n\\n/* Animations */\\n@media (prefers-reduced-motion: reduce) {\\n .drawer,\\n .drawer-backdrop {\\n transition: none;\\n }\\n}\\n\\n/* Responsive */\\n@media (max-width: 640px) {\\n :host([position=\\\"left\\\"][size=\\\"medium\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"large\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"xl\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"xxl\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"xxxl\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"medium\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"large\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"xl\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"xxl\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"xxxl\\\"]) .drawer {\\n width: calc(100% - 2.5rem); /* 40px */\\n }\\n}\\n\\n/* Focus trap styles */\\n.focus-trap-start,\\n.focus-trap-end {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border: 0;\\n}\\n\\n/* Push content mode */\\n:host([push-content]) {\\n --drawer-push-amount: 0px;\\n}\\n\\n/* Left position push amounts */\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: var(--drawer-width-small);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: var(--drawer-width-medium);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: var(--drawer-width-large);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: var(--drawer-width-xl);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: var(--drawer-width-xxl);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: var(--drawer-width-xxxl);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: 100vw;\\n}\\n\\n/* Also handle when no size is specified (defaults to medium) */\\n:host([push-content][position=\\\"left\\\"][open]:not([size])) {\\n --drawer-push-amount: var(--drawer-width-medium);\\n}\\n\\n/* Right position push amounts */\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-small));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-large));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-xl));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxl));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxxl));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: -100vw;\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open]:not([size])) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\\n}\\n\\n/* Top position push amounts */\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: var(--drawer-height-small);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: var(--drawer-height-medium);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: var(--drawer-height-large);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: var(--drawer-height-xl);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: var(--drawer-height-xxl);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: var(--drawer-height-xxxl);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: 100vh;\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open]:not([size])) {\\n --drawer-push-amount: var(--drawer-height-medium);\\n}\\n\\n/* Bottom position push amounts */\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-small));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-large));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-xl));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxl));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxxl));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: -100vh;\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open]:not([size])) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\\n}\";",null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snice-drawer.js","sources":["../../../components/drawer/snice-drawer.css?inline","../../../../components/drawer/snice-drawer.ts"],"sourcesContent":["export default \":host {\\n /* Drawer sizes with theme integration and rem units */\\n --drawer-width-small: var(--snice-size-drawer-small, 15rem); /* 240px */\\n --drawer-width-medium: var(--snice-size-drawer-medium, 20rem); /* 320px */\\n --drawer-width-large: var(--snice-size-drawer-large, 30rem); /* 480px */\\n --drawer-width-xl: var(--snice-size-drawer-xl, 40rem); /* 640px */\\n --drawer-width-xxl: var(--snice-size-drawer-xxl, 50rem); /* 800px */\\n --drawer-width-xxxl: var(--snice-size-drawer-xxxl, 60rem); /* 960px */\\n --drawer-height-small: var(--snice-size-drawer-height-small, 12.5rem); /* 200px */\\n --drawer-height-medium: var(--snice-size-drawer-height-medium, 25rem); /* 400px */\\n --drawer-height-large: var(--snice-size-drawer-height-large, 37.5rem); /* 600px */\\n --drawer-height-xl: var(--snice-size-drawer-height-xl, 70vh);\\n --drawer-height-xxl: var(--snice-size-drawer-height-xxl, 80vh);\\n --drawer-height-xxxl: var(--snice-size-drawer-height-xxxl, 90vh);\\n\\n /* Theme-integrated colors and effects */\\n --drawer-bg: var(--snice-color-background, white);\\n --drawer-shadow: var(--snice-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1));\\n --drawer-backdrop: var(--snice-color-backdrop, rgba(0, 0, 0, 0.5));\\n --drawer-transition: transform var(--snice-transition-medium, 250ms) cubic-bezier(0.4, 0, 0.2, 1);\\n --drawer-z-index: var(--snice-z-index-modal, 1050);\\n\\n /* Default: fixed positioning (modal behavior) */\\n display: block;\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100vw;\\n height: 100vh;\\n pointer-events: none;\\n isolation: isolate;\\n font-family: var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);\\n contain: layout style paint;\\n}\\n\\n/* Contained variant - position within parent */\\n:host([contained]) {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.drawer-backdrop {\\n position: absolute;\\n inset: 0;\\n background: var(--drawer-backdrop);\\n opacity: 0;\\n transition: opacity 0.3s ease-in-out;\\n z-index: var(--drawer-z-index);\\n pointer-events: none;\\n visibility: hidden;\\n}\\n\\n:host([open]) {\\n pointer-events: auto;\\n}\\n\\n:host([open]) .drawer-backdrop {\\n opacity: 1;\\n pointer-events: auto;\\n visibility: visible;\\n}\\n\\n:host([no-backdrop]) .drawer-backdrop {\\n display: none;\\n}\\n\\n.drawer {\\n position: absolute;\\n background: var(--drawer-bg);\\n box-shadow: var(--drawer-shadow);\\n transition:\\n transform var(--snice-transition-medium, 250ms) cubic-bezier(0.4, 0, 0.2, 1),\\n opacity var(--snice-transition-medium, 250ms) cubic-bezier(0.2, 0, 0.8, 1);\\n z-index: calc(var(--drawer-z-index) + 1);\\n display: flex;\\n flex-direction: column;\\n outline: none;\\n overflow: hidden;\\n opacity: 0;\\n pointer-events: auto;\\n}\\n\\n:host([open]) .drawer {\\n opacity: 1;\\n}\\n\\n/* Default styles when no position attribute (defaults to left) */\\n:host(:not([position])) .drawer {\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: var(--drawer-width-medium);\\n transform: translateX(-100%);\\n}\\n\\n:host(:not([position])[open]) .drawer {\\n transform: translateX(0);\\n}\\n\\n/* Position: Left */\\n:host([position=\\\"left\\\"]) .drawer {\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: var(--drawer-width-medium); /* Default width */\\n transform: translateX(-100%);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"small\\\"]) .drawer {\\n width: var(--drawer-width-small);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"medium\\\"]) .drawer {\\n width: var(--drawer-width-medium);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"large\\\"]) .drawer {\\n width: var(--drawer-width-large);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"xl\\\"]) .drawer {\\n width: var(--drawer-width-xl);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"xxl\\\"]) .drawer {\\n width: var(--drawer-width-xxl);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"xxxl\\\"]) .drawer {\\n width: var(--drawer-width-xxxl);\\n}\\n\\n:host([position=\\\"left\\\"][size=\\\"full\\\"]) .drawer {\\n width: 100%;\\n}\\n\\n:host([position=\\\"left\\\"][open]) .drawer {\\n transform: translateX(0);\\n}\\n\\n/* Position: Right */\\n:host([position=\\\"right\\\"]) .drawer {\\n top: 0;\\n right: 0;\\n height: 100%;\\n width: var(--drawer-width-medium); /* Default width */\\n transform: translateX(100%);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"small\\\"]) .drawer {\\n width: var(--drawer-width-small);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"medium\\\"]) .drawer {\\n width: var(--drawer-width-medium);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"large\\\"]) .drawer {\\n width: var(--drawer-width-large);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"xl\\\"]) .drawer {\\n width: var(--drawer-width-xl);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"xxl\\\"]) .drawer {\\n width: var(--drawer-width-xxl);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"xxxl\\\"]) .drawer {\\n width: var(--drawer-width-xxxl);\\n}\\n\\n:host([position=\\\"right\\\"][size=\\\"full\\\"]) .drawer {\\n width: 100%;\\n}\\n\\n:host([position=\\\"right\\\"][open]) .drawer {\\n transform: translateX(0);\\n}\\n\\n/* Position: Top */\\n:host([position=\\\"top\\\"]) .drawer {\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: var(--drawer-height-medium); /* Default height */\\n transform: translateY(-100%);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"small\\\"]) .drawer {\\n height: var(--drawer-height-small);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"medium\\\"]) .drawer {\\n height: var(--drawer-height-medium);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"large\\\"]) .drawer {\\n height: var(--drawer-height-large);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"xl\\\"]) .drawer {\\n height: var(--drawer-height-xl);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"xxl\\\"]) .drawer {\\n height: var(--drawer-height-xxl);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"xxxl\\\"]) .drawer {\\n height: var(--drawer-height-xxxl);\\n}\\n\\n:host([position=\\\"top\\\"][size=\\\"full\\\"]) .drawer {\\n height: 100%;\\n}\\n\\n:host([position=\\\"top\\\"][open]) .drawer {\\n transform: translateY(0);\\n}\\n\\n/* Position: Bottom */\\n:host([position=\\\"bottom\\\"]) .drawer {\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: var(--drawer-height-medium); /* Default height */\\n transform: translateY(100%);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"small\\\"]) .drawer {\\n height: var(--drawer-height-small);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"medium\\\"]) .drawer {\\n height: var(--drawer-height-medium);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"large\\\"]) .drawer {\\n height: var(--drawer-height-large);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"xl\\\"]) .drawer {\\n height: var(--drawer-height-xl);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"xxl\\\"]) .drawer {\\n height: var(--drawer-height-xxl);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"xxxl\\\"]) .drawer {\\n height: var(--drawer-height-xxxl);\\n}\\n\\n:host([position=\\\"bottom\\\"][size=\\\"full\\\"]) .drawer {\\n height: 100%;\\n}\\n\\n:host([position=\\\"bottom\\\"][open]) .drawer {\\n transform: translateY(0);\\n}\\n\\n/* Drawer Header */\\n.drawer-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem); /* 16px 20px */\\n border-bottom: 1px solid var(--snice-color-border, rgb(229 231 235));\\n background: var(--snice-color-background, white);\\n flex-shrink: 0;\\n}\\n\\n.drawer-header:has(.drawer-title:empty):not(:has(.drawer-close)) {\\n display: none;\\n}\\n\\n.drawer-title {\\n font-size: var(--snice-font-size-lg, 1.125rem); /* 18px */\\n font-weight: var(--snice-font-weight-semibold, 600);\\n margin: 0;\\n color: var(--snice-color-text, rgb(17 24 39));\\n line-height: var(--snice-line-height-tight, 1.25);\\n}\\n\\n.drawer-close {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: var(--snice-size-control-md, 2rem); /* 32px */\\n height: var(--snice-size-control-md, 2rem); /* 32px */\\n border: none;\\n background: transparent;\\n border-radius: var(--snice-border-radius-md, 6px);\\n cursor: pointer;\\n color: var(--snice-color-text-secondary, rgb(107 114 128));\\n transition: all var(--snice-transition-fast, 150ms) ease;\\n}\\n\\n.drawer-close:hover {\\n background: var(--snice-color-background-hover, rgb(243 244 246));\\n color: var(--snice-color-text, rgb(17 24 39));\\n}\\n\\n.drawer-close:focus-visible {\\n outline: var(--snice-focus-ring-width, 2px) solid var(--snice-focus-ring-color, rgb(59 130 246));\\n outline-offset: var(--snice-focus-ring-offset, 2px);\\n}\\n\\n/* Drawer Body */\\n.drawer-body {\\n flex: 1;\\n padding: var(--snice-spacing-lg, 1.25rem); /* 20px */\\n overflow-y: auto;\\n overflow-x: hidden;\\n color: var(--snice-color-text, rgb(17 24 39));\\n}\\n\\n/* Drawer Footer */\\n.drawer-footer {\\n padding: var(--snice-spacing-md, 1rem) var(--snice-spacing-lg, 1.25rem); /* 16px 20px */\\n border-top: 1px solid var(--snice-color-border, rgb(229 231 235));\\n background: var(--snice-color-background, white);\\n flex-shrink: 0;\\n}\\n\\n.drawer-footer:empty {\\n display: none;\\n}\\n\\n/* Animations */\\n@media (prefers-reduced-motion: reduce) {\\n .drawer,\\n .drawer-backdrop {\\n transition: none;\\n }\\n}\\n\\n/* Responsive */\\n@media (max-width: 640px) {\\n :host([position=\\\"left\\\"][size=\\\"medium\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"large\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"xl\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"xxl\\\"]) .drawer,\\n :host([position=\\\"left\\\"][size=\\\"xxxl\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"medium\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"large\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"xl\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"xxl\\\"]) .drawer,\\n :host([position=\\\"right\\\"][size=\\\"xxxl\\\"]) .drawer {\\n width: calc(100% - 2.5rem); /* 40px */\\n }\\n}\\n\\n/* Focus trap styles */\\n.focus-trap-start,\\n.focus-trap-end {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border: 0;\\n}\\n\\n/* Push content mode */\\n:host([push-content]) {\\n --drawer-push-amount: 0px;\\n}\\n\\n/* Left position push amounts */\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: var(--drawer-width-small);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: var(--drawer-width-medium);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: var(--drawer-width-large);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: var(--drawer-width-xl);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: var(--drawer-width-xxl);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: var(--drawer-width-xxxl);\\n}\\n\\n:host([push-content][position=\\\"left\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: 100vw;\\n}\\n\\n/* Also handle when no size is specified (defaults to medium) */\\n:host([push-content][position=\\\"left\\\"][open]:not([size])) {\\n --drawer-push-amount: var(--drawer-width-medium);\\n}\\n\\n/* Right position push amounts */\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-small));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-large));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-xl));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxl));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-xxxl));\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: -100vw;\\n}\\n\\n:host([push-content][position=\\\"right\\\"][open]:not([size])) {\\n --drawer-push-amount: calc(-1 * var(--drawer-width-medium));\\n}\\n\\n/* Top position push amounts */\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: var(--drawer-height-small);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: var(--drawer-height-medium);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: var(--drawer-height-large);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: var(--drawer-height-xl);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: var(--drawer-height-xxl);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: var(--drawer-height-xxxl);\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: 100vh;\\n}\\n\\n:host([push-content][position=\\\"top\\\"][open]:not([size])) {\\n --drawer-push-amount: var(--drawer-height-medium);\\n}\\n\\n/* Bottom position push amounts */\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"small\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-small));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"medium\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"large\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-large));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"xl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-xl));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"xxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxl));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"xxxl\\\"]) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-xxxl));\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open][size=\\\"full\\\"]) {\\n --drawer-push-amount: -100vh;\\n}\\n\\n:host([push-content][position=\\\"bottom\\\"][open]:not([size])) {\\n --drawer-push-amount: calc(-1 * var(--drawer-height-medium));\\n}\";",null],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export interface SniceDrawerElement extends HTMLElement {
4
4
  open: boolean;
5
5
  position: DrawerPosition;
6
6
  size: DrawerSize;
7
+ contained: boolean;
7
8
  noBackdrop: boolean;
8
9
  noBackdropDismiss: boolean;
9
10
  noEscapeDismiss: boolean;
@@ -1,4 +1,13 @@
1
- export declare class SniceLayoutBlog extends HTMLElement {
1
+ import type { AppContext, Placard, RouteParams, Layout } from 'snice';
2
+ import '../nav/snice-nav.ts';
3
+ import type { SniceNav } from '../nav/snice-nav.ts';
4
+ export declare class SniceLayoutBlog extends HTMLElement implements Layout {
5
+ navElement?: SniceNav;
6
+ useNav: boolean;
7
+ private placards;
8
+ private currentRoute;
2
9
  html(): string;
3
10
  css(): string;
11
+ update(_appContext: AppContext, placards: Placard[], currentRoute: string, _routeParams: RouteParams): void;
12
+ renderNav(): string;
4
13
  }