@mhmo91/schmancy 0.10.38 → 0.10.40

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 (111) hide show
  1. package/dist/agent/schmancy.agent.js +19 -7
  2. package/dist/agent/schmancy.agent.js.map +1 -1
  3. package/dist/avatar.cjs +1 -1
  4. package/dist/avatar.js +1 -1
  5. package/dist/badge.cjs +1 -1
  6. package/dist/badge.js +1 -1
  7. package/dist/boat-BJPl_Jti.cjs +34 -0
  8. package/dist/boat-BJPl_Jti.cjs.map +1 -0
  9. package/dist/{boat-DmyG7y1V.js → boat-BeqA9_ms.js} +10 -5
  10. package/dist/boat-BeqA9_ms.js.map +1 -0
  11. package/dist/boat.cjs +1 -1
  12. package/dist/boat.js +1 -1
  13. package/dist/{button-WRmXlNyw.cjs → button-B9RfBt-n.cjs} +1 -0
  14. package/dist/button-B9RfBt-n.cjs.map +1 -0
  15. package/dist/{button-BQSOVnHn.js → button-D6LJC-HC.js} +1 -0
  16. package/dist/button-D6LJC-HC.js.map +1 -0
  17. package/dist/button.cjs +2 -1
  18. package/dist/button.cjs.map +1 -1
  19. package/dist/button.js +2 -1
  20. package/dist/button.js.map +1 -1
  21. package/dist/{chips-DAy6v93f.js → chips-BoZSpSh_.js} +1 -0
  22. package/dist/chips-BoZSpSh_.js.map +1 -0
  23. package/dist/{chips-B1jui8Pe.cjs → chips-wfJ7YtWv.cjs} +1 -0
  24. package/dist/chips-wfJ7YtWv.cjs.map +1 -0
  25. package/dist/chips.cjs +1 -1
  26. package/dist/chips.js +1 -1
  27. package/dist/content-drawer.cjs +1 -1
  28. package/dist/content-drawer.js +1 -1
  29. package/dist/{date-range-BUaPgbTZ.cjs → date-range-BHSzlwSL.cjs} +1 -1
  30. package/dist/{date-range-BUaPgbTZ.cjs.map → date-range-BHSzlwSL.cjs.map} +1 -1
  31. package/dist/{date-range-NTpoA1in.js → date-range-DJrdpzev.js} +1 -1
  32. package/dist/{date-range-NTpoA1in.js.map → date-range-DJrdpzev.js.map} +1 -1
  33. package/dist/date-range.cjs +1 -1
  34. package/dist/date-range.js +1 -1
  35. package/dist/{directives-Bb0S1DKZ.cjs → directives-BZIRQDBq.cjs} +1 -1
  36. package/dist/{directives-Bb0S1DKZ.cjs.map → directives-BZIRQDBq.cjs.map} +1 -1
  37. package/dist/{directives-Bfm1lkoy.js → directives-BvRTjCFa.js} +5 -3
  38. package/dist/{directives-Bfm1lkoy.js.map → directives-BvRTjCFa.js.map} +1 -1
  39. package/dist/directives.cjs +1 -1
  40. package/dist/directives.js +1 -1
  41. package/dist/fab.cjs +1 -0
  42. package/dist/fab.cjs.map +1 -1
  43. package/dist/fab.js +1 -0
  44. package/dist/fab.js.map +1 -1
  45. package/dist/form.cjs +1 -1
  46. package/dist/form.js +3 -3
  47. package/dist/handover/agent-runtime-followups.md +1 -1
  48. package/dist/handover/agent-runtime-v1.md +3 -3
  49. package/dist/index.cjs +1 -1
  50. package/dist/index.js +10 -10
  51. package/dist/{menu-CBAAJoHu.js → menu-Dvi_tQgH.js} +1 -1
  52. package/dist/{menu-CBAAJoHu.js.map → menu-Dvi_tQgH.js.map} +1 -1
  53. package/dist/{menu-DFQjJk3H.cjs → menu-GZARYp6I.cjs} +1 -1
  54. package/dist/{menu-DFQjJk3H.cjs.map → menu-GZARYp6I.cjs.map} +1 -1
  55. package/dist/menu.cjs +1 -1
  56. package/dist/menu.js +1 -1
  57. package/dist/nav-drawer.cjs +1 -1
  58. package/dist/nav-drawer.js +1 -1
  59. package/dist/navigation-bar.cjs +1 -1
  60. package/dist/navigation-bar.js +1 -1
  61. package/dist/{overlay-CWsihJ-E.js → overlay-DwJWVyk2.js} +2 -2
  62. package/dist/{overlay-CWsihJ-E.js.map → overlay-DwJWVyk2.js.map} +1 -1
  63. package/dist/{overlay-DkIX9Ig3.cjs → overlay-N0trD-4u.cjs} +1 -1
  64. package/dist/{overlay-DkIX9Ig3.cjs.map → overlay-N0trD-4u.cjs.map} +1 -1
  65. package/dist/overlay.cjs +1 -1
  66. package/dist/{overlay.confirm-body-DwTfiNlV.cjs → overlay.confirm-body-CtXIi421.cjs} +1 -1
  67. package/dist/{overlay.confirm-body-DwTfiNlV.cjs.map → overlay.confirm-body-CtXIi421.cjs.map} +1 -1
  68. package/dist/{overlay.confirm-body-CPqqPNks.js → overlay.confirm-body-DwzKhXxM.js} +1 -1
  69. package/dist/{overlay.confirm-body-CPqqPNks.js.map → overlay.confirm-body-DwzKhXxM.js.map} +1 -1
  70. package/dist/overlay.js +3 -3
  71. package/dist/{overlay.service-KTgBxjFb.js → overlay.service-BDLi0p5M.js} +2 -2
  72. package/dist/{overlay.service-KTgBxjFb.js.map → overlay.service-BDLi0p5M.js.map} +1 -1
  73. package/dist/{overlay.service-DU1nqh6A.cjs → overlay.service-Dbu5uP9E.cjs} +1 -1
  74. package/dist/{overlay.service-DU1nqh6A.cjs.map → overlay.service-Dbu5uP9E.cjs.map} +1 -1
  75. package/dist/{select-Cawz88lG.js → select-CGBsblDA.js} +1 -1
  76. package/dist/{select-Cawz88lG.js.map → select-CGBsblDA.js.map} +1 -1
  77. package/dist/{select-BWpV2iv-.cjs → select-LWdPs7b_.cjs} +1 -1
  78. package/dist/{select-BWpV2iv-.cjs.map → select-LWdPs7b_.cjs.map} +1 -1
  79. package/dist/select.cjs +1 -1
  80. package/dist/select.js +1 -1
  81. package/dist/skills/SKILL.md +10 -0
  82. package/dist/skills/chips.md +41 -1
  83. package/dist/skills/schmancy/SKILL.md +10 -0
  84. package/dist/skills/schmancy/chips.md +41 -1
  85. package/dist/{src-CIqAj3Eh.js → src-Dmqjtcmp.js} +9 -8
  86. package/dist/src-Dmqjtcmp.js.map +1 -0
  87. package/dist/{src-CYqBQTyt.cjs → src-SAXA4LEH.cjs} +2 -1
  88. package/dist/src-SAXA4LEH.cjs.map +1 -0
  89. package/dist/teleport.cjs +1 -1
  90. package/dist/teleport.js +1 -1
  91. package/package.json +2 -1
  92. package/skills/schmancy/SKILL.md +10 -0
  93. package/skills/schmancy/chips.md +41 -1
  94. package/src/badge/badge.ts +1 -0
  95. package/src/boat/boat.ts +20 -5
  96. package/src/button/button.ts +1 -0
  97. package/src/button/icon-button.ts +1 -0
  98. package/src/directives/reveal.ts +7 -1
  99. package/src/fab/fab.ts +1 -0
  100. package/src/form/fields/chips/filter-chip.ts +1 -0
  101. package/types/src/boat/boat.d.ts +1 -0
  102. package/types/src/directives/reveal.d.ts +2 -0
  103. package/dist/boat-DmyG7y1V.js.map +0 -1
  104. package/dist/boat-dB1_qLm0.cjs +0 -34
  105. package/dist/boat-dB1_qLm0.cjs.map +0 -1
  106. package/dist/button-BQSOVnHn.js.map +0 -1
  107. package/dist/button-WRmXlNyw.cjs.map +0 -1
  108. package/dist/chips-B1jui8Pe.cjs.map +0 -1
  109. package/dist/chips-DAy6v93f.js.map +0 -1
  110. package/dist/src-CIqAj3Eh.js.map +0 -1
  111. package/dist/src-CYqBQTyt.cjs.map +0 -1
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./directives-Bb0S1DKZ.cjs`),t=require(`./reduced-motion-Ds-HjMzn.cjs`),n=require(`./cursor-glow-Bulq-38P.cjs`),r=require(`./layout-DZ4dpLh9.cjs`),i=require(`./gravity-6pL6CfIr.cjs`),a=require(`./magnetic-DKtc4umC.cjs`);exports.DragDirective=e.h,exports.DropDirective=e.g,exports.aiBadge=e.O,exports.animateText=e.k,exports.art=e.D,exports.beta=e.C,exports.color=e.S,exports.confirmClick=e.x,exports.cursorGlow=n.t,exports.cycleText=e.b,exports.depthOfField=e.y,exports.drag=e._,exports.drop=e.v,exports.fill=e.m,exports.fromResizeObserver=r.t,exports.fullHeight=r.n,exports.fullWidth=r.r,exports.futureCell=e.E,exports.fyi=e.p,exports.gravity=i.t,exports.hummingbird=e.f,exports.intersect=e.d,exports.isBeta=e.w,exports.liquid=e.u,exports.livingBorder=e.l,exports.longPress=e.c,exports.magnetic=a.t,exports.missedPunch=e.s,exports.nebula=e.o,exports.overflowWithin=e.r,exports.reducedMotion$=t.t,exports.reveal=e.a,exports.ripple=e.i,exports.setBetaPredicate=e.T,exports.urgent=e.n,exports.workingSnake=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./directives-BZIRQDBq.cjs`),t=require(`./reduced-motion-Ds-HjMzn.cjs`),n=require(`./cursor-glow-Bulq-38P.cjs`),r=require(`./layout-DZ4dpLh9.cjs`),i=require(`./gravity-6pL6CfIr.cjs`),a=require(`./magnetic-DKtc4umC.cjs`);exports.DragDirective=e.h,exports.DropDirective=e.g,exports.aiBadge=e.O,exports.animateText=e.k,exports.art=e.D,exports.beta=e.C,exports.color=e.S,exports.confirmClick=e.x,exports.cursorGlow=n.t,exports.cycleText=e.b,exports.depthOfField=e.y,exports.drag=e._,exports.drop=e.v,exports.fill=e.m,exports.fromResizeObserver=r.t,exports.fullHeight=r.n,exports.fullWidth=r.r,exports.futureCell=e.E,exports.fyi=e.p,exports.gravity=i.t,exports.hummingbird=e.f,exports.intersect=e.d,exports.isBeta=e.w,exports.liquid=e.u,exports.livingBorder=e.l,exports.longPress=e.c,exports.magnetic=a.t,exports.missedPunch=e.s,exports.nebula=e.o,exports.overflowWithin=e.r,exports.reducedMotion$=t.t,exports.reveal=e.a,exports.ripple=e.i,exports.setBetaPredicate=e.T,exports.urgent=e.n,exports.workingSnake=e.t;
@@ -1,4 +1,4 @@
1
- import { C as e, D as t, E as n, O as r, S as i, T as a, _ as o, a as s, b as c, c as l, d as u, f as d, g as f, h as p, i as m, k as h, l as g, m as _, n as v, o as y, p as b, r as x, s as S, t as C, u as w, v as T, w as E, x as D, y as O } from "./directives-Bfm1lkoy.js";
1
+ import { C as e, D as t, E as n, O as r, S as i, T as a, _ as o, a as s, b as c, c as l, d as u, f as d, g as f, h as p, i as m, k as h, l as g, m as _, n as v, o as y, p as b, r as x, s as S, t as C, u as w, v as T, w as E, x as D, y as O } from "./directives-BvRTjCFa.js";
2
2
  import { t as k } from "./reduced-motion-D-L12p7G.js";
3
3
  import { t as A } from "./cursor-glow-Ah7VXSj7.js";
4
4
  import { n as j, r as M, t as N } from "./layout-CFiG3lNT.js";
package/dist/fab.cjs CHANGED
@@ -2,6 +2,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./ch
2
2
  :host {
3
3
  /* M3 FAB (medium) — 16dp shape, 24dp icon, resting level 3 */
4
4
  display: inline-flex;
5
+ flex-shrink: 0;
5
6
  position: relative;
6
7
  touch-action: manipulation;
7
8
  overflow: hidden;
package/dist/fab.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fab.cjs","names":[],"sources":["../src/fab/fab.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { magnetic } from '../directives/magnetic'\n\nexport type FabVariant = 'surface' | 'primary' | 'secondary' | 'tertiary'\nexport type FabSize = 'small' | 'medium' | 'large'\n\n/**\n * Material 3 Floating Action Button.\n *\n * Mirrors the `md-fab` reference implementation\n * (github.com/material-components/material-web) and the M3 spec\n * (m3.material.io/components/floating-action-button): four colour\n * variants, three container sizes, an extended form (set `label`),\n * and a `lowered` elevation register. Per M3 guidance a FAB is never\n * disabled, so there is no `disabled` property.\n *\n * Sizing, shape, icon size and elevation are M3 design tokens expressed\n * as `:host` rules (the same token-driven model as `md-fab`'s SCSS);\n * colour roles and the state layer are schmancy theme utilities. The\n * host shrink-wraps the inner button and clips its rounded shape.\n *\n * @element schmancy-fab\n * @slot - The icon (typically `<schmancy-icon>`).\n * @csspart base - The underlying native `<button>`.\n */\n@customElement('schmancy-fab')\nexport class SchmancyFab extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\t/* M3 FAB (medium) — 16dp shape, 24dp icon, resting level 3 */\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tposition: relative;\n\t\t\t\ttouch-action: manipulation;\n\t\t\t\toverflow: hidden;\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-3);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-4);\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransition:\n\t\t\t\t\tbox-shadow 280ms cubic-bezier(0.34, 1.56, 0.64, 1),\n\t\t\t\t\ttransform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\t\t\t}\n\t\t\t/* M3 small FAB — 12dp shape */\n\t\t\t:host([size='small']) {\n\t\t\t\tborder-radius: 12px;\n\t\t\t}\n\t\t\t/* M3 large FAB — 28dp shape, 36dp icon */\n\t\t\t:host([size='large']) {\n\t\t\t\tborder-radius: 28px;\n\t\t\t\t--_icon: 36px;\n\t\t\t}\n\t\t\t/* Extended FAB always uses the 16dp shape / 24dp icon */\n\t\t\t:host([extended]) {\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t}\n\t\t\t/* M3 lowered register — resting level 1, hover level 2 */\n\t\t\t:host([lowered]) {\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-1);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-2);\n\t\t\t}\n\t\t\t:host(:hover) {\n\t\t\t\tbox-shadow: var(--_elevation-hover);\n\t\t\t}\n\t\t\t:host(:active) {\n\t\t\t\t/* M3 pressed elevation == resting; schmancy spring press */\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransform: scale(0.96);\n\t\t\t\ttransition-duration: 100ms;\n\t\t\t}\n\t\t\t::slotted(*) {\n\t\t\t\tfont-size: var(--_icon);\n\t\t\t\twidth: var(--_icon);\n\t\t\t\theight: var(--_icon);\n\t\t\t}\n\t\t\t:host([extended]) ::slotted(*) {\n\t\t\t\tmargin-inline-end: 12px;\n\t\t\t}\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t:host {\n\t\t\t\t\ttransition: none;\n\t\t\t\t}\n\t\t\t\t:host(:active) {\n\t\t\t\t\ttransform: none;\n\t\t\t\t}\n\t\t\t}\n\t\t\t:host *,\n\t\t\t* {\n\t\t\t\ttouch-action: manipulation;\n\t\t\t}\n\t\t`,\n\t]\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate ariaLabelValue!: string\n\n\t/**\n\t * Colour variant. M3 maps each to a container + on-container role.\n\t * @attr\n\t * @default 'surface'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: FabVariant = 'surface'\n\n\t/**\n\t * Container size. Ignored while extended (extended is always 56dp tall).\n\t * @attr\n\t * @default 'medium'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic size: FabSize = 'medium'\n\n\t/**\n\t * Extended-FAB label. A non-empty value switches the FAB to its\n\t * extended form (icon + text), exactly as `md-fab` derives extended\n\t * from a truthy label.\n\t * @attr\n\t */\n\t@property({ type: String })\n\tpublic label = ''\n\n\t/**\n\t * Reflected mirror of \"label is non-empty\" so `:host([extended])`\n\t * can drive the extended geometry. Synced from `label`; read it,\n\t * don't set it.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic extended = false\n\n\t/**\n\t * Lowers the FAB's elevation register (M3 lowered FAB).\n\t * @attr\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic lowered = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this.ariaLabelValue\n\t\tthis.ariaLabelValue = value\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this.ariaLabelValue\n\t}\n\n\t/** Sets focus on the FAB. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the FAB. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected willUpdate(changed: Map<string, unknown>) {\n\t\tif (changed.has('label')) this.extended = this.label.length > 0\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'relative z-0 flex items-center justify-center overflow-hidden border-0 cursor-pointer outline-hidden focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-secondary-default':\n\t\t\t\ttrue,\n\t\t\t// M3 container — fixed square per size, content-width when extended\n\t\t\t'size-10': !this.extended && this.size === 'small',\n\t\t\t'size-14': !this.extended && this.size === 'medium',\n\t\t\t'size-24': !this.extended && this.size === 'large',\n\t\t\t'h-14 ps-4 pe-5 gap-3 text-sm font-medium leading-5': this.extended,\n\t\t\t// M3 container + on-container colour roles per variant\n\t\t\t'bg-surface-containerHigh text-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-container text-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-container text-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 z-0 opacity-0 transition-opacity duration-150 hover:opacity-8 focus-visible:opacity-10 active:opacity-10':\n\t\t\t\ttrue,\n\t\t\t'bg-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\t${magnetic({ strength: 3, radius: 60 })}\n\t\t\t\tpart=\"base\"\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t>\n\t\t\t\t<div class=\"${this.classMap(stateLayerClasses)}\"></div>\n\t\t\t\t<slot aria-hidden=${ifDefined(this.ariaLabel || this.label ? 'true' : undefined)}></slot>\n\t\t\t\t${when(this.extended, () => html`<span class=\"relative z-0\">${this.label}</span>`)}\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-fab': SchmancyFab\n\t}\n}\n"],"mappings":"mWA8BO,IAAA,EAAA,cAA0B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,QAsFH,UAAA,KAAA,KAQN,SAAA,KAAA,MASR,GAAA,KAAA,SAAA,CASG,EAAA,KAAA,QAAA,CAQD,CAAA,CAAA,OAAA,KAAA,OAvHD,CACf,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAmEiC,CAAA,GACjC,EAAA,WAAW,kBACd,KAAM,OACN,eAAA,CAAgB,CAAA,CAAA,CAkDjB,IAAA,UAA8B,EAAA,CAC7B,IAAM,EAAS,KAAK,eACpB,KAAK,eAAiB,EAClB,KAAK,aAAa,YAAA,GACrB,KAAK,gBAAgB,YAAA,EAEtB,KAAK,cAAc,YAAa,CAAA,CACjC,CAEA,IAAA,WACoB,CACnB,OAAO,KAAK,cACb,CAGA,MAAsB,EAAA,CACrB,KAAK,cAAc,MAAM,CAAA,CAC1B,CAGA,MAAA,CACC,KAAK,cAAc,KAAA,CACpB,CAEA,WAAqB,EAAA,CAChB,EAAQ,IAAI,OAAA,IAAU,KAAK,SAAW,KAAK,MAAM,OAAS,EAC/D,CAEA,QAAA,CACC,IAAM,EAAU,CACf,oNAAA,CACC,EAED,UAAA,CAAY,KAAK,UAAY,KAAK,OAAS,QAC3C,UAAA,CAAY,KAAK,UAAY,KAAK,OAAS,SAC3C,UAAA,CAAY,KAAK,UAAY,KAAK,OAAS,QAC3C,qDAAsD,KAAK,SAE3D,gDAAiD,KAAK,UAAY,UAClE,gDAAiD,KAAK,UAAY,UAClE,oDAAqD,KAAK,UAAY,YACtE,kDAAmD,KAAK,UAAY,UAAZ,EAGnD,EAAoB,CACzB,4HAAA,CACC,EACD,qBAAsB,KAAK,UAAY,UACvC,yBAA0B,KAAK,UAAY,UAC3C,2BAA4B,KAAK,UAAY,YAC7C,0BAA2B,KAAK,UAAY,UAAZ,EAGjC,MAAO,GAAA,IAAI;;MAEP,EAAA,EAAS,CAAE,SAAU,EAAG,OAAQ,EAAA,CAAA,EAAA;;;iCAGX,KAAK,SAAA,EAAA;aACnB,KAAK,SAAS,CAAA,EAAA;;kBAET,KAAK,SAAS,CAAA,EAAA;wCACE,KAAK,WAAa,KAAK,MAAQ,OAAA,IAAS,EAAA,EAAA;iBAC/D,KAAK,aAAgB,EAAA,IAAI,8BAA8B,KAAK,MAAA,QAAA,EAAA;;GAGtE,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAjHO,gBAAA,CAAiB,CAAA,CAAA,EAAI,EAAA,UAAA,gBAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAUlB,CAAE,QAAA,CAAS,EAAM,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,UAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAQ/B,CAAE,QAAA,CAAS,EAAM,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,OAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAS/B,CAAE,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAShB,CAAE,KAAM,QAAS,QAAA,CAAS,CAAA,CAAA,CAAA,EAAM,EAAA,UAAA,WAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAQhC,CAAE,KAAM,QAAS,QAAA,CAAS,CAAA,CAAA,CAAA,EAAM,EAAA,UAAA,UAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAYhC,CAAE,UAAW,YAAA,CAAA,CAAA,EAAc,EAAA,UAAA,YAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eApIvB,cAAA,CAAA,EAAc,CAAA,EAAA,OAAA,eAAA,QAAA,cAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"fab.cjs","names":[],"sources":["../src/fab/fab.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { magnetic } from '../directives/magnetic'\n\nexport type FabVariant = 'surface' | 'primary' | 'secondary' | 'tertiary'\nexport type FabSize = 'small' | 'medium' | 'large'\n\n/**\n * Material 3 Floating Action Button.\n *\n * Mirrors the `md-fab` reference implementation\n * (github.com/material-components/material-web) and the M3 spec\n * (m3.material.io/components/floating-action-button): four colour\n * variants, three container sizes, an extended form (set `label`),\n * and a `lowered` elevation register. Per M3 guidance a FAB is never\n * disabled, so there is no `disabled` property.\n *\n * Sizing, shape, icon size and elevation are M3 design tokens expressed\n * as `:host` rules (the same token-driven model as `md-fab`'s SCSS);\n * colour roles and the state layer are schmancy theme utilities. The\n * host shrink-wraps the inner button and clips its rounded shape.\n *\n * @element schmancy-fab\n * @slot - The icon (typically `<schmancy-icon>`).\n * @csspart base - The underlying native `<button>`.\n */\n@customElement('schmancy-fab')\nexport class SchmancyFab extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\t/* M3 FAB (medium) — 16dp shape, 24dp icon, resting level 3 */\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tposition: relative;\n\t\t\t\ttouch-action: manipulation;\n\t\t\t\toverflow: hidden;\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-3);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-4);\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransition:\n\t\t\t\t\tbox-shadow 280ms cubic-bezier(0.34, 1.56, 0.64, 1),\n\t\t\t\t\ttransform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\t\t\t}\n\t\t\t/* M3 small FAB — 12dp shape */\n\t\t\t:host([size='small']) {\n\t\t\t\tborder-radius: 12px;\n\t\t\t}\n\t\t\t/* M3 large FAB — 28dp shape, 36dp icon */\n\t\t\t:host([size='large']) {\n\t\t\t\tborder-radius: 28px;\n\t\t\t\t--_icon: 36px;\n\t\t\t}\n\t\t\t/* Extended FAB always uses the 16dp shape / 24dp icon */\n\t\t\t:host([extended]) {\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t}\n\t\t\t/* M3 lowered register — resting level 1, hover level 2 */\n\t\t\t:host([lowered]) {\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-1);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-2);\n\t\t\t}\n\t\t\t:host(:hover) {\n\t\t\t\tbox-shadow: var(--_elevation-hover);\n\t\t\t}\n\t\t\t:host(:active) {\n\t\t\t\t/* M3 pressed elevation == resting; schmancy spring press */\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransform: scale(0.96);\n\t\t\t\ttransition-duration: 100ms;\n\t\t\t}\n\t\t\t::slotted(*) {\n\t\t\t\tfont-size: var(--_icon);\n\t\t\t\twidth: var(--_icon);\n\t\t\t\theight: var(--_icon);\n\t\t\t}\n\t\t\t:host([extended]) ::slotted(*) {\n\t\t\t\tmargin-inline-end: 12px;\n\t\t\t}\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t:host {\n\t\t\t\t\ttransition: none;\n\t\t\t\t}\n\t\t\t\t:host(:active) {\n\t\t\t\t\ttransform: none;\n\t\t\t\t}\n\t\t\t}\n\t\t\t:host *,\n\t\t\t* {\n\t\t\t\ttouch-action: manipulation;\n\t\t\t}\n\t\t`,\n\t]\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate ariaLabelValue!: string\n\n\t/**\n\t * Colour variant. M3 maps each to a container + on-container role.\n\t * @attr\n\t * @default 'surface'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: FabVariant = 'surface'\n\n\t/**\n\t * Container size. Ignored while extended (extended is always 56dp tall).\n\t * @attr\n\t * @default 'medium'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic size: FabSize = 'medium'\n\n\t/**\n\t * Extended-FAB label. A non-empty value switches the FAB to its\n\t * extended form (icon + text), exactly as `md-fab` derives extended\n\t * from a truthy label.\n\t * @attr\n\t */\n\t@property({ type: String })\n\tpublic label = ''\n\n\t/**\n\t * Reflected mirror of \"label is non-empty\" so `:host([extended])`\n\t * can drive the extended geometry. Synced from `label`; read it,\n\t * don't set it.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic extended = false\n\n\t/**\n\t * Lowers the FAB's elevation register (M3 lowered FAB).\n\t * @attr\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic lowered = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this.ariaLabelValue\n\t\tthis.ariaLabelValue = value\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this.ariaLabelValue\n\t}\n\n\t/** Sets focus on the FAB. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the FAB. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected willUpdate(changed: Map<string, unknown>) {\n\t\tif (changed.has('label')) this.extended = this.label.length > 0\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'relative z-0 flex items-center justify-center overflow-hidden border-0 cursor-pointer outline-hidden focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-secondary-default':\n\t\t\t\ttrue,\n\t\t\t// M3 container — fixed square per size, content-width when extended\n\t\t\t'size-10': !this.extended && this.size === 'small',\n\t\t\t'size-14': !this.extended && this.size === 'medium',\n\t\t\t'size-24': !this.extended && this.size === 'large',\n\t\t\t'h-14 ps-4 pe-5 gap-3 text-sm font-medium leading-5': this.extended,\n\t\t\t// M3 container + on-container colour roles per variant\n\t\t\t'bg-surface-containerHigh text-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-container text-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-container text-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 z-0 opacity-0 transition-opacity duration-150 hover:opacity-8 focus-visible:opacity-10 active:opacity-10':\n\t\t\t\ttrue,\n\t\t\t'bg-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\t${magnetic({ strength: 3, radius: 60 })}\n\t\t\t\tpart=\"base\"\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t>\n\t\t\t\t<div class=\"${this.classMap(stateLayerClasses)}\"></div>\n\t\t\t\t<slot aria-hidden=${ifDefined(this.ariaLabel || this.label ? 'true' : undefined)}></slot>\n\t\t\t\t${when(this.extended, () => html`<span class=\"relative z-0\">${this.label}</span>`)}\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-fab': SchmancyFab\n\t}\n}\n"],"mappings":"mWA8BO,IAAA,EAAA,cAA0B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,QAuFH,UAAA,KAAA,KAQN,SAAA,KAAA,MASR,GAAA,KAAA,SAAA,CASG,EAAA,KAAA,QAAA,CAQD,CAAA,CAAA,OAAA,KAAA,OAxHD,CACf,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAoEiC,CAAA,GACjC,EAAA,WAAW,kBACd,KAAM,OACN,eAAA,CAAgB,CAAA,CAAA,CAkDjB,IAAA,UAA8B,EAAA,CAC7B,IAAM,EAAS,KAAK,eACpB,KAAK,eAAiB,EAClB,KAAK,aAAa,YAAA,GACrB,KAAK,gBAAgB,YAAA,EAEtB,KAAK,cAAc,YAAa,CAAA,CACjC,CAEA,IAAA,WACoB,CACnB,OAAO,KAAK,cACb,CAGA,MAAsB,EAAA,CACrB,KAAK,cAAc,MAAM,CAAA,CAC1B,CAGA,MAAA,CACC,KAAK,cAAc,KAAA,CACpB,CAEA,WAAqB,EAAA,CAChB,EAAQ,IAAI,OAAA,IAAU,KAAK,SAAW,KAAK,MAAM,OAAS,EAC/D,CAEA,QAAA,CACC,IAAM,EAAU,CACf,oNAAA,CACC,EAED,UAAA,CAAY,KAAK,UAAY,KAAK,OAAS,QAC3C,UAAA,CAAY,KAAK,UAAY,KAAK,OAAS,SAC3C,UAAA,CAAY,KAAK,UAAY,KAAK,OAAS,QAC3C,qDAAsD,KAAK,SAE3D,gDAAiD,KAAK,UAAY,UAClE,gDAAiD,KAAK,UAAY,UAClE,oDAAqD,KAAK,UAAY,YACtE,kDAAmD,KAAK,UAAY,UAAZ,EAGnD,EAAoB,CACzB,4HAAA,CACC,EACD,qBAAsB,KAAK,UAAY,UACvC,yBAA0B,KAAK,UAAY,UAC3C,2BAA4B,KAAK,UAAY,YAC7C,0BAA2B,KAAK,UAAY,UAAZ,EAGjC,MAAO,GAAA,IAAI;;MAEP,EAAA,EAAS,CAAE,SAAU,EAAG,OAAQ,EAAA,CAAA,EAAA;;;iCAGX,KAAK,SAAA,EAAA;aACnB,KAAK,SAAS,CAAA,EAAA;;kBAET,KAAK,SAAS,CAAA,EAAA;wCACE,KAAK,WAAa,KAAK,MAAQ,OAAA,IAAS,EAAA,EAAA;iBAC/D,KAAK,aAAgB,EAAA,IAAI,8BAA8B,KAAK,MAAA,QAAA,EAAA;;GAGtE,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAjHO,gBAAA,CAAiB,CAAA,CAAA,EAAI,EAAA,UAAA,gBAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAUlB,CAAE,QAAA,CAAS,EAAM,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,UAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAQ/B,CAAE,QAAA,CAAS,EAAM,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,OAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAS/B,CAAE,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAShB,CAAE,KAAM,QAAS,QAAA,CAAS,CAAA,CAAA,CAAA,EAAM,EAAA,UAAA,WAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAQhC,CAAE,KAAM,QAAS,QAAA,CAAS,CAAA,CAAA,CAAA,EAAM,EAAA,UAAA,UAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAYhC,CAAE,UAAW,YAAA,CAAA,CAAA,EAAc,EAAA,UAAA,YAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eArIvB,cAAA,CAAA,EAAc,CAAA,EAAA,OAAA,eAAA,QAAA,cAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}
package/dist/fab.js CHANGED
@@ -14,6 +14,7 @@ var d = class extends e {
14
14
  :host {
15
15
  /* M3 FAB (medium) — 16dp shape, 24dp icon, resting level 3 */
16
16
  display: inline-flex;
17
+ flex-shrink: 0;
17
18
  position: relative;
18
19
  touch-action: manipulation;
19
20
  overflow: hidden;
package/dist/fab.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fab.js","names":[],"sources":["../src/fab/fab.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { magnetic } from '../directives/magnetic'\n\nexport type FabVariant = 'surface' | 'primary' | 'secondary' | 'tertiary'\nexport type FabSize = 'small' | 'medium' | 'large'\n\n/**\n * Material 3 Floating Action Button.\n *\n * Mirrors the `md-fab` reference implementation\n * (github.com/material-components/material-web) and the M3 spec\n * (m3.material.io/components/floating-action-button): four colour\n * variants, three container sizes, an extended form (set `label`),\n * and a `lowered` elevation register. Per M3 guidance a FAB is never\n * disabled, so there is no `disabled` property.\n *\n * Sizing, shape, icon size and elevation are M3 design tokens expressed\n * as `:host` rules (the same token-driven model as `md-fab`'s SCSS);\n * colour roles and the state layer are schmancy theme utilities. The\n * host shrink-wraps the inner button and clips its rounded shape.\n *\n * @element schmancy-fab\n * @slot - The icon (typically `<schmancy-icon>`).\n * @csspart base - The underlying native `<button>`.\n */\n@customElement('schmancy-fab')\nexport class SchmancyFab extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\t/* M3 FAB (medium) — 16dp shape, 24dp icon, resting level 3 */\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tposition: relative;\n\t\t\t\ttouch-action: manipulation;\n\t\t\t\toverflow: hidden;\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-3);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-4);\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransition:\n\t\t\t\t\tbox-shadow 280ms cubic-bezier(0.34, 1.56, 0.64, 1),\n\t\t\t\t\ttransform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\t\t\t}\n\t\t\t/* M3 small FAB — 12dp shape */\n\t\t\t:host([size='small']) {\n\t\t\t\tborder-radius: 12px;\n\t\t\t}\n\t\t\t/* M3 large FAB — 28dp shape, 36dp icon */\n\t\t\t:host([size='large']) {\n\t\t\t\tborder-radius: 28px;\n\t\t\t\t--_icon: 36px;\n\t\t\t}\n\t\t\t/* Extended FAB always uses the 16dp shape / 24dp icon */\n\t\t\t:host([extended]) {\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t}\n\t\t\t/* M3 lowered register — resting level 1, hover level 2 */\n\t\t\t:host([lowered]) {\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-1);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-2);\n\t\t\t}\n\t\t\t:host(:hover) {\n\t\t\t\tbox-shadow: var(--_elevation-hover);\n\t\t\t}\n\t\t\t:host(:active) {\n\t\t\t\t/* M3 pressed elevation == resting; schmancy spring press */\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransform: scale(0.96);\n\t\t\t\ttransition-duration: 100ms;\n\t\t\t}\n\t\t\t::slotted(*) {\n\t\t\t\tfont-size: var(--_icon);\n\t\t\t\twidth: var(--_icon);\n\t\t\t\theight: var(--_icon);\n\t\t\t}\n\t\t\t:host([extended]) ::slotted(*) {\n\t\t\t\tmargin-inline-end: 12px;\n\t\t\t}\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t:host {\n\t\t\t\t\ttransition: none;\n\t\t\t\t}\n\t\t\t\t:host(:active) {\n\t\t\t\t\ttransform: none;\n\t\t\t\t}\n\t\t\t}\n\t\t\t:host *,\n\t\t\t* {\n\t\t\t\ttouch-action: manipulation;\n\t\t\t}\n\t\t`,\n\t]\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate ariaLabelValue!: string\n\n\t/**\n\t * Colour variant. M3 maps each to a container + on-container role.\n\t * @attr\n\t * @default 'surface'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: FabVariant = 'surface'\n\n\t/**\n\t * Container size. Ignored while extended (extended is always 56dp tall).\n\t * @attr\n\t * @default 'medium'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic size: FabSize = 'medium'\n\n\t/**\n\t * Extended-FAB label. A non-empty value switches the FAB to its\n\t * extended form (icon + text), exactly as `md-fab` derives extended\n\t * from a truthy label.\n\t * @attr\n\t */\n\t@property({ type: String })\n\tpublic label = ''\n\n\t/**\n\t * Reflected mirror of \"label is non-empty\" so `:host([extended])`\n\t * can drive the extended geometry. Synced from `label`; read it,\n\t * don't set it.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic extended = false\n\n\t/**\n\t * Lowers the FAB's elevation register (M3 lowered FAB).\n\t * @attr\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic lowered = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this.ariaLabelValue\n\t\tthis.ariaLabelValue = value\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this.ariaLabelValue\n\t}\n\n\t/** Sets focus on the FAB. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the FAB. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected willUpdate(changed: Map<string, unknown>) {\n\t\tif (changed.has('label')) this.extended = this.label.length > 0\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'relative z-0 flex items-center justify-center overflow-hidden border-0 cursor-pointer outline-hidden focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-secondary-default':\n\t\t\t\ttrue,\n\t\t\t// M3 container — fixed square per size, content-width when extended\n\t\t\t'size-10': !this.extended && this.size === 'small',\n\t\t\t'size-14': !this.extended && this.size === 'medium',\n\t\t\t'size-24': !this.extended && this.size === 'large',\n\t\t\t'h-14 ps-4 pe-5 gap-3 text-sm font-medium leading-5': this.extended,\n\t\t\t// M3 container + on-container colour roles per variant\n\t\t\t'bg-surface-containerHigh text-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-container text-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-container text-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 z-0 opacity-0 transition-opacity duration-150 hover:opacity-8 focus-visible:opacity-10 active:opacity-10':\n\t\t\t\ttrue,\n\t\t\t'bg-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\t${magnetic({ strength: 3, radius: 60 })}\n\t\t\t\tpart=\"base\"\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t>\n\t\t\t\t<div class=\"${this.classMap(stateLayerClasses)}\"></div>\n\t\t\t\t<slot aria-hidden=${ifDefined(this.ariaLabel || this.label ? 'true' : undefined)}></slot>\n\t\t\t\t${when(this.extended, () => html`<span class=\"relative z-0\">${this.label}</span>`)}\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-fab': SchmancyFab\n\t}\n}\n"],"mappings":";;;;;;;AA8BO,IAAA,IAAA,cAA0B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,UAsFH,WAAA,KAAA,OAQN,UAAA,KAAA,QASR,IAAA,KAAA,WAAA,CASG,GAAA,KAAA,UAAA,CAQD;CAAA;CAAA;EAAA,KAAA,SAvHD,CACf,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAmEiC;GAAA,GACjC,EAAW;GACd,MAAM;GACN,gBAAA,CAAgB;EAAA;CAAA;CAkDjB,IAAA,UAA8B,GAAA;EAC7B,IAAM,IAAS,KAAK;EACpB,KAAK,iBAAiB,GAClB,KAAK,aAAa,YAAA,KACrB,KAAK,gBAAgB,YAAA,GAEtB,KAAK,cAAc,aAAa,CAAA;CACjC;CAEA,IAAA,YACoB;EACnB,OAAO,KAAK;CACb;CAGA,MAAsB,GAAA;EACrB,KAAK,cAAc,MAAM,CAAA;CAC1B;CAGA,OAAA;EACC,KAAK,cAAc,KAAA;CACpB;CAEA,WAAqB,GAAA;EAChB,EAAQ,IAAI,OAAA,MAAU,KAAK,WAAW,KAAK,MAAM,SAAS;CAC/D;CAEA,SAAA;EACC,IAAM,IAAU;GACf,qNAAA,CACC;GAED,WAAA,CAAY,KAAK,YAAY,KAAK,SAAS;GAC3C,WAAA,CAAY,KAAK,YAAY,KAAK,SAAS;GAC3C,WAAA,CAAY,KAAK,YAAY,KAAK,SAAS;GAC3C,sDAAsD,KAAK;GAE3D,iDAAiD,KAAK,YAAY;GAClE,iDAAiD,KAAK,YAAY;GAClE,qDAAqD,KAAK,YAAY;GACtE,mDAAmD,KAAK,YAAY;EAAZ,GAGnD,IAAoB;GACzB,6HAAA,CACC;GACD,sBAAsB,KAAK,YAAY;GACvC,0BAA0B,KAAK,YAAY;GAC3C,4BAA4B,KAAK,YAAY;GAC7C,2BAA2B,KAAK,YAAY;EAAZ;EAGjC,OAAO,CAAI;;MAEP,EAAS;GAAE,UAAU;GAAG,QAAQ;EAAA,CAAA,EAAA;;;iBAGrB,EAAU,KAAK,SAAA,EAAA;aACnB,KAAK,SAAS,CAAA,EAAA;;kBAET,KAAK,SAAS,CAAA,EAAA;wBACR,EAAU,KAAK,aAAa,KAAK,QAAQ,SAAA,KAAS,CAAA,EAAA;MACpE,EAAK,KAAK,gBAAgB,CAAI,8BAA8B,KAAK,MAAA,QAAA,EAAA;;;CAGtE;AAAA;AAAA,EAAA,CAjHC,EAAM,mBAAA,CAAiB,CAAA,CAAA,GAAI,EAAA,WAAA,iBAAA,KAAA,CAAA,GAAA,EAAA,CAU3B,EAAS;CAAE,SAAA,CAAS;CAAM,MAAM;AAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,WAAA,KAAA,CAAA,GAAA,EAAA,CAQxC,EAAS;CAAE,SAAA,CAAS;CAAM,MAAM;AAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,QAAA,KAAA,CAAA,GAAA,EAAA,CASxC,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,EAAA,CASzB,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;AAAA,CAAA,CAAA,GAAM,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,EAAA,CAQzC,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;AAAA,CAAA,CAAA,GAAM,EAAA,WAAA,WAAA,KAAA,CAAA,GAAA,EAAA,CAYzC,EAAS,EAAE,WAAW,aAAA,CAAA,CAAA,GAAc,EAAA,WAAA,aAAA,IAAA,GAAA,IAAA,EAAA,CApIrC,EAAc,cAAA,CAAA,GAAc,CAAA;AAAA,SAAA,KAAA"}
1
+ {"version":3,"file":"fab.js","names":[],"sources":["../src/fab/fab.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { when } from 'lit/directives/when.js'\nimport { magnetic } from '../directives/magnetic'\n\nexport type FabVariant = 'surface' | 'primary' | 'secondary' | 'tertiary'\nexport type FabSize = 'small' | 'medium' | 'large'\n\n/**\n * Material 3 Floating Action Button.\n *\n * Mirrors the `md-fab` reference implementation\n * (github.com/material-components/material-web) and the M3 spec\n * (m3.material.io/components/floating-action-button): four colour\n * variants, three container sizes, an extended form (set `label`),\n * and a `lowered` elevation register. Per M3 guidance a FAB is never\n * disabled, so there is no `disabled` property.\n *\n * Sizing, shape, icon size and elevation are M3 design tokens expressed\n * as `:host` rules (the same token-driven model as `md-fab`'s SCSS);\n * colour roles and the state layer are schmancy theme utilities. The\n * host shrink-wraps the inner button and clips its rounded shape.\n *\n * @element schmancy-fab\n * @slot - The icon (typically `<schmancy-icon>`).\n * @csspart base - The underlying native `<button>`.\n */\n@customElement('schmancy-fab')\nexport class SchmancyFab extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\t/* M3 FAB (medium) — 16dp shape, 24dp icon, resting level 3 */\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tposition: relative;\n\t\t\t\ttouch-action: manipulation;\n\t\t\t\toverflow: hidden;\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-3);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-4);\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransition:\n\t\t\t\t\tbox-shadow 280ms cubic-bezier(0.34, 1.56, 0.64, 1),\n\t\t\t\t\ttransform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\t\t\t}\n\t\t\t/* M3 small FAB — 12dp shape */\n\t\t\t:host([size='small']) {\n\t\t\t\tborder-radius: 12px;\n\t\t\t}\n\t\t\t/* M3 large FAB — 28dp shape, 36dp icon */\n\t\t\t:host([size='large']) {\n\t\t\t\tborder-radius: 28px;\n\t\t\t\t--_icon: 36px;\n\t\t\t}\n\t\t\t/* Extended FAB always uses the 16dp shape / 24dp icon */\n\t\t\t:host([extended]) {\n\t\t\t\tborder-radius: 16px;\n\t\t\t\t--_icon: 24px;\n\t\t\t}\n\t\t\t/* M3 lowered register — resting level 1, hover level 2 */\n\t\t\t:host([lowered]) {\n\t\t\t\t--_elevation: var(--schmancy-sys-elevation-1);\n\t\t\t\t--_elevation-hover: var(--schmancy-sys-elevation-2);\n\t\t\t}\n\t\t\t:host(:hover) {\n\t\t\t\tbox-shadow: var(--_elevation-hover);\n\t\t\t}\n\t\t\t:host(:active) {\n\t\t\t\t/* M3 pressed elevation == resting; schmancy spring press */\n\t\t\t\tbox-shadow: var(--_elevation);\n\t\t\t\ttransform: scale(0.96);\n\t\t\t\ttransition-duration: 100ms;\n\t\t\t}\n\t\t\t::slotted(*) {\n\t\t\t\tfont-size: var(--_icon);\n\t\t\t\twidth: var(--_icon);\n\t\t\t\theight: var(--_icon);\n\t\t\t}\n\t\t\t:host([extended]) ::slotted(*) {\n\t\t\t\tmargin-inline-end: 12px;\n\t\t\t}\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t:host {\n\t\t\t\t\ttransition: none;\n\t\t\t\t}\n\t\t\t\t:host(:active) {\n\t\t\t\t\ttransform: none;\n\t\t\t\t}\n\t\t\t}\n\t\t\t:host *,\n\t\t\t* {\n\t\t\t\ttouch-action: manipulation;\n\t\t\t}\n\t\t`,\n\t]\n\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t@query('[part=\"base\"]', true)\n\tprivate nativeElement!: HTMLElement\n\n\tprivate ariaLabelValue!: string\n\n\t/**\n\t * Colour variant. M3 maps each to a container + on-container role.\n\t * @attr\n\t * @default 'surface'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic variant: FabVariant = 'surface'\n\n\t/**\n\t * Container size. Ignored while extended (extended is always 56dp tall).\n\t * @attr\n\t * @default 'medium'\n\t */\n\t@property({ reflect: true, type: String })\n\tpublic size: FabSize = 'medium'\n\n\t/**\n\t * Extended-FAB label. A non-empty value switches the FAB to its\n\t * extended form (icon + text), exactly as `md-fab` derives extended\n\t * from a truthy label.\n\t * @attr\n\t */\n\t@property({ type: String })\n\tpublic label = ''\n\n\t/**\n\t * Reflected mirror of \"label is non-empty\" so `:host([extended])`\n\t * can drive the extended geometry. Synced from `label`; read it,\n\t * don't set it.\n\t * @attr\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic extended = false\n\n\t/**\n\t * Lowers the FAB's elevation register (M3 lowered FAB).\n\t * @attr\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic lowered = false\n\n\tpublic override set ariaLabel(value: string) {\n\t\tconst oldVal = this.ariaLabelValue\n\t\tthis.ariaLabelValue = value\n\t\tif (this.hasAttribute('aria-label')) {\n\t\t\tthis.removeAttribute('aria-label')\n\t\t}\n\t\tthis.requestUpdate('ariaLabel', oldVal)\n\t}\n\n\t@property({ attribute: 'aria-label' })\n\tpublic override get ariaLabel() {\n\t\treturn this.ariaLabelValue\n\t}\n\n\t/** Sets focus on the FAB. */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.nativeElement.focus(options)\n\t}\n\n\t/** Removes focus from the FAB. */\n\tpublic override blur() {\n\t\tthis.nativeElement.blur()\n\t}\n\n\tprotected willUpdate(changed: Map<string, unknown>) {\n\t\tif (changed.has('label')) this.extended = this.label.length > 0\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'relative z-0 flex items-center justify-center overflow-hidden border-0 cursor-pointer outline-hidden focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 outline-secondary-default':\n\t\t\t\ttrue,\n\t\t\t// M3 container — fixed square per size, content-width when extended\n\t\t\t'size-10': !this.extended && this.size === 'small',\n\t\t\t'size-14': !this.extended && this.size === 'medium',\n\t\t\t'size-24': !this.extended && this.size === 'large',\n\t\t\t'h-14 ps-4 pe-5 gap-3 text-sm font-medium leading-5': this.extended,\n\t\t\t// M3 container + on-container colour roles per variant\n\t\t\t'bg-surface-containerHigh text-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-container text-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-container text-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-container text-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'absolute inset-0 z-0 opacity-0 transition-opacity duration-150 hover:opacity-8 focus-visible:opacity-10 active:opacity-10':\n\t\t\t\ttrue,\n\t\t\t'bg-primary-default': this.variant === 'surface',\n\t\t\t'bg-primary-onContainer': this.variant === 'primary',\n\t\t\t'bg-secondary-onContainer': this.variant === 'secondary',\n\t\t\t'bg-tertiary-onContainer': this.variant === 'tertiary',\n\t\t}\n\n\t\treturn html`\n\t\t\t<button\n\t\t\t\t${magnetic({ strength: 3, radius: 60 })}\n\t\t\t\tpart=\"base\"\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\tclass=\"${this.classMap(classes)}\"\n\t\t\t>\n\t\t\t\t<div class=\"${this.classMap(stateLayerClasses)}\"></div>\n\t\t\t\t<slot aria-hidden=${ifDefined(this.ariaLabel || this.label ? 'true' : undefined)}></slot>\n\t\t\t\t${when(this.extended, () => html`<span class=\"relative z-0\">${this.label}</span>`)}\n\t\t\t</button>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-fab': SchmancyFab\n\t}\n}\n"],"mappings":";;;;;;;AA8BO,IAAA,IAAA,cAA0B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,UAuFH,WAAA,KAAA,OAQN,UAAA,KAAA,QASR,IAAA,KAAA,WAAA,CASG,GAAA,KAAA,UAAA,CAQD;CAAA;CAAA;EAAA,KAAA,SAxHD,CACf,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAoEiC;GAAA,GACjC,EAAW;GACd,MAAM;GACN,gBAAA,CAAgB;EAAA;CAAA;CAkDjB,IAAA,UAA8B,GAAA;EAC7B,IAAM,IAAS,KAAK;EACpB,KAAK,iBAAiB,GAClB,KAAK,aAAa,YAAA,KACrB,KAAK,gBAAgB,YAAA,GAEtB,KAAK,cAAc,aAAa,CAAA;CACjC;CAEA,IAAA,YACoB;EACnB,OAAO,KAAK;CACb;CAGA,MAAsB,GAAA;EACrB,KAAK,cAAc,MAAM,CAAA;CAC1B;CAGA,OAAA;EACC,KAAK,cAAc,KAAA;CACpB;CAEA,WAAqB,GAAA;EAChB,EAAQ,IAAI,OAAA,MAAU,KAAK,WAAW,KAAK,MAAM,SAAS;CAC/D;CAEA,SAAA;EACC,IAAM,IAAU;GACf,qNAAA,CACC;GAED,WAAA,CAAY,KAAK,YAAY,KAAK,SAAS;GAC3C,WAAA,CAAY,KAAK,YAAY,KAAK,SAAS;GAC3C,WAAA,CAAY,KAAK,YAAY,KAAK,SAAS;GAC3C,sDAAsD,KAAK;GAE3D,iDAAiD,KAAK,YAAY;GAClE,iDAAiD,KAAK,YAAY;GAClE,qDAAqD,KAAK,YAAY;GACtE,mDAAmD,KAAK,YAAY;EAAZ,GAGnD,IAAoB;GACzB,6HAAA,CACC;GACD,sBAAsB,KAAK,YAAY;GACvC,0BAA0B,KAAK,YAAY;GAC3C,4BAA4B,KAAK,YAAY;GAC7C,2BAA2B,KAAK,YAAY;EAAZ;EAGjC,OAAO,CAAI;;MAEP,EAAS;GAAE,UAAU;GAAG,QAAQ;EAAA,CAAA,EAAA;;;iBAGrB,EAAU,KAAK,SAAA,EAAA;aACnB,KAAK,SAAS,CAAA,EAAA;;kBAET,KAAK,SAAS,CAAA,EAAA;wBACR,EAAU,KAAK,aAAa,KAAK,QAAQ,SAAA,KAAS,CAAA,EAAA;MACpE,EAAK,KAAK,gBAAgB,CAAI,8BAA8B,KAAK,MAAA,QAAA,EAAA;;;CAGtE;AAAA;AAAA,EAAA,CAjHC,EAAM,mBAAA,CAAiB,CAAA,CAAA,GAAI,EAAA,WAAA,iBAAA,KAAA,CAAA,GAAA,EAAA,CAU3B,EAAS;CAAE,SAAA,CAAS;CAAM,MAAM;AAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,WAAA,KAAA,CAAA,GAAA,EAAA,CAQxC,EAAS;CAAE,SAAA,CAAS;CAAM,MAAM;AAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,QAAA,KAAA,CAAA,GAAA,EAAA,CASxC,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,EAAA,CASzB,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;AAAA,CAAA,CAAA,GAAM,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,EAAA,CAQzC,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;AAAA,CAAA,CAAA,GAAM,EAAA,WAAA,WAAA,KAAA,CAAA,GAAA,EAAA,CAYzC,EAAS,EAAE,WAAW,aAAA,CAAA,CAAA,GAAc,EAAA,WAAA,aAAA,IAAA,GAAA,IAAA,EAAA,CArIrC,EAAc,cAAA,CAAA,GAAc,CAAA;AAAA,SAAA,KAAA"}
package/dist/form.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-C41uPa6l.cjs`);require(`./mixins-fIpzhVMd.cjs`),require(`./autocomplete-DMmxsvUe.cjs`);const t=require(`./input-chip-ChAgRCXZ.cjs`),n=require(`./checkbox-C4zeib84.cjs`),r=require(`./chips-B1jui8Pe.cjs`),i=require(`./date-range-BUaPgbTZ.cjs`),a=require(`./form-4GKROq2P.cjs`),o=require(`./input-Z-3N5JMv.cjs`);require(`./input.cjs`);const s=require(`./radio-group-BEtvCSS1.cjs`),c=require(`./range.cjs`),l=require(`./select-BWpV2iv-.cjs`),u=require(`./switch.cjs`);require(`./textarea-Brgi-vD2.cjs`);let d=require(`lit/decorators.js`),f=require(`lit`);var p=class extends e.t{constructor(...e){super(...e),this.bump=0,this.form=null}connectedCallback(){super.connectedCallback(),this.form=this.closest(`schmancy-form`),this.form&&(this.formObserver=new MutationObserver(()=>{this.bump++}),this.formObserver.observe(this.form,{attributes:!0,subtree:!0}),(async()=>{await this.form?.updateComplete;let e=this.form?.shadowRoot?.querySelector(`[role="status"]`);e&&this.formObserver?.observe(e,{childList:!0,characterData:!0,subtree:!0}),this.bump++})())}disconnectedCallback(){this.formObserver?.disconnect(),this.formObserver=void 0,super.disconnectedCallback()}readFormStatus(){return this.form?this.form.matches(`:state(error)`)?`error`:this.form.matches(`:state(submitting)`)?`submitting`:this.form.matches(`:state(success)`)?`success`:`idle`:`idle`}readFormMessage(){return(this.form?.shadowRoot?.querySelector(`[role="status"]`))?.textContent?.trim()??``}readInvalidFields(){if(!this.form)return[];let e=[];for(let t of Array.from(this.form.querySelectorAll(`*`))){if(!(t instanceof HTMLElement))continue;let n=!1;try{n=t.matches(`:state(invalid)`)}catch{continue}if(!n)continue;let r=t;e.push({id:r.id,label:r.label||r.name||`(field)`,message:r.validationMessage||`Invalid value`})}return e}render(){if(this.bump,this.readFormStatus()!==`error`)return f.nothing;let e=this.readFormMessage(),t=this.readInvalidFields(),n=t.length;return f.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-C41uPa6l.cjs`);require(`./mixins-fIpzhVMd.cjs`),require(`./autocomplete-DMmxsvUe.cjs`);const t=require(`./input-chip-ChAgRCXZ.cjs`),n=require(`./checkbox-C4zeib84.cjs`),r=require(`./chips-wfJ7YtWv.cjs`),i=require(`./date-range-BHSzlwSL.cjs`),a=require(`./form-4GKROq2P.cjs`),o=require(`./input-Z-3N5JMv.cjs`);require(`./input.cjs`);const s=require(`./radio-group-BEtvCSS1.cjs`),c=require(`./range.cjs`),l=require(`./select-LWdPs7b_.cjs`),u=require(`./switch.cjs`);require(`./textarea-Brgi-vD2.cjs`);let d=require(`lit/decorators.js`),f=require(`lit`);var p=class extends e.t{constructor(...e){super(...e),this.bump=0,this.form=null}connectedCallback(){super.connectedCallback(),this.form=this.closest(`schmancy-form`),this.form&&(this.formObserver=new MutationObserver(()=>{this.bump++}),this.formObserver.observe(this.form,{attributes:!0,subtree:!0}),(async()=>{await this.form?.updateComplete;let e=this.form?.shadowRoot?.querySelector(`[role="status"]`);e&&this.formObserver?.observe(e,{childList:!0,characterData:!0,subtree:!0}),this.bump++})())}disconnectedCallback(){this.formObserver?.disconnect(),this.formObserver=void 0,super.disconnectedCallback()}readFormStatus(){return this.form?this.form.matches(`:state(error)`)?`error`:this.form.matches(`:state(submitting)`)?`submitting`:this.form.matches(`:state(success)`)?`success`:`idle`:`idle`}readFormMessage(){return(this.form?.shadowRoot?.querySelector(`[role="status"]`))?.textContent?.trim()??``}readInvalidFields(){if(!this.form)return[];let e=[];for(let t of Array.from(this.form.querySelectorAll(`*`))){if(!(t instanceof HTMLElement))continue;let n=!1;try{n=t.matches(`:state(invalid)`)}catch{continue}if(!n)continue;let r=t;e.push({id:r.id,label:r.label||r.name||`(field)`,message:r.validationMessage||`Invalid value`})}return e}render(){if(this.bump,this.readFormStatus()!==`error`)return f.nothing;let e=this.readFormMessage(),t=this.readInvalidFields(),n=t.length;return f.html`
2
2
  <div role="alert" aria-labelledby="schmancy-form-summary-heading">
3
3
  <h2 id="schmancy-form-summary-heading">${this.heading??(n===0?`There is a problem with this form`:`There ${n===1?`is`:`are`} ${n} problem${n===1?``:`s`} with this form`)}</h2>
4
4
  ${e?f.html`<p>${e}</p>`:f.nothing}
package/dist/form.js CHANGED
@@ -3,14 +3,14 @@ import "./mixins-DGBI7YPO.js";
3
3
  import "./autocomplete-DWiEqlQf.js";
4
4
  import { t as n } from "./input-chip-BOrcKH-H.js";
5
5
  import { t as r } from "./checkbox-Ce0DlAdW.js";
6
- import { n as i, r as a, t as o } from "./chips-DAy6v93f.js";
7
- import { n as s, t as c } from "./date-range-NTpoA1in.js";
6
+ import { n as i, r as a, t as o } from "./chips-BoZSpSh_.js";
7
+ import { n as s, t as c } from "./date-range-DJrdpzev.js";
8
8
  import { n as l, t as u } from "./form-DxaV_Ose.js";
9
9
  import { n as d, t as f } from "./input-BCCHz6tB.js";
10
10
  import "./input.js";
11
11
  import { n as p, t as m } from "./radio-group-AHLvrN8O.js";
12
12
  import { SchmancyRange as h } from "./range.js";
13
- import { t as g } from "./select-Cawz88lG.js";
13
+ import { t as g } from "./select-CGBsblDA.js";
14
14
  import { SchmancySwitch as _ } from "./switch.js";
15
15
  import "./textarea-MPyrMi-S.js";
16
16
  import { customElement as v, property as y, state as b } from "lit/decorators.js";
@@ -203,7 +203,7 @@ The manifest already has everything needed; the package is just the JSON-RPC wra
203
203
 
204
204
  **Problem.** `handover/agent-runtime-v1.md` had `<PENDING>` placeholders that we manually replaced with `0.9.13` after the first publish. Future handover docs will have the same issue.
205
205
 
206
- **Fix.** A build step that substitutes `0.10.38` in `handover/**/*.md` against `package.json`'s `version` field on every build. `dist/handover/**/*.md` gets the rendered version; the source stays templated.
206
+ **Fix.** A build step that substitutes `0.10.40` in `handover/**/*.md` against `package.json`'s `version` field on every build. `dist/handover/**/*.md` gets the rendered version; the source stays templated.
207
207
 
208
208
  **Effort:** ~30 min (one sed step or a tiny script).
209
209
 
@@ -7,8 +7,8 @@
7
7
  ## The URLs you asked for
8
8
 
9
9
  ```
10
- https://esm.sh/@mhmo91/schmancy/agent@0.10.38
11
- https://esm.sh/@mhmo91/schmancy/agent/manifest@0.10.38
10
+ https://esm.sh/@mhmo91/schmancy/agent@0.10.40
11
+ https://esm.sh/@mhmo91/schmancy/agent/manifest@0.10.40
12
12
  ```
13
13
 
14
14
  `0.9.13` is the first release containing `/agent`; every subsequent publish serves the same subpath. `npm view @mhmo91/schmancy version` always returns the current pin if you want to float forward.
@@ -20,7 +20,7 @@ One script tag. No bundler, no bare specifiers, no npm install.
20
20
  ```html
21
21
  <!doctype html>
22
22
  <script type="module">
23
- import { $dialog, theme } from 'https://esm.sh/@mhmo91/schmancy/agent@0.10.38';
23
+ import { $dialog, theme } from 'https://esm.sh/@mhmo91/schmancy/agent@0.10.40';
24
24
  </script>
25
25
  <schmancy-theme root scheme="dark">
26
26
  <schmancy-surface type="solid" fill="all">
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-C41uPa6l.cjs`),t=require(`./area-2FrTZI_T.cjs`),n=require(`./lazy-C-7a4FAe.cjs`),r=require(`./state-BxDNox-2.cjs`),i=require(`./sound.service-D2GGaBXc.cjs`),a=require(`./audio-EaD0Ggfh.cjs`),o=require(`./search-DPKoC-dT.cjs`),s=require(`./input-chip-ChAgRCXZ.cjs`),c=require(`./animation-CCOIW4wJ.cjs`),l=require(`./directives-Bb0S1DKZ.cjs`),ee=require(`./reduced-motion-Ds-HjMzn.cjs`),u=require(`./cursor-glow-Bulq-38P.cjs`),d=require(`./theme.service-B15FdjOS.cjs`),f=require(`./layout-DZ4dpLh9.cjs`),te=require(`./overlay-stack-Bdr9lOqi.cjs`),ne=require(`./gravity-6pL6CfIr.cjs`),p=require(`./discovery.service-CIa3Eeuk.cjs`),m=require(`./magnetic-DKtc4umC.cjs`),h=require(`./src-CYqBQTyt.cjs`),g=require(`./overlay.service-DU1nqh6A.cjs`),_=require(`./boat-dB1_qLm0.cjs`),re=require(`./button-WRmXlNyw.cjs`),ie=require(`./button.cjs`),ae=require(`./checkbox-C4zeib84.cjs`),v=require(`./chips-B1jui8Pe.cjs`),y=require(`./connectivity.cjs`),b=require(`./date-range-BUaPgbTZ.cjs`),x=require(`./date-range-inline-D0I6k84h.cjs`),S=require(`./delay.cjs`),oe=require(`./details-DQNj2oaU.cjs`),C=require(`./dropdown.cjs`),w=require(`./surface-CWwYD_z2.cjs`),T=require(`./expand-CUF163mg.cjs`),se=require(`./fab.cjs`),E=require(`./window-BbBYjm7R.cjs`),D=require(`./float-OvqX0nqG.cjs`),O=require(`./form-4GKROq2P.cjs`),k=require(`./input-Z-3N5JMv.cjs`),A=require(`./radio-group-BEtvCSS1.cjs`),j=require(`./range.cjs`),M=require(`./theme.interface-CSt7JUBD.cjs`),N=require(`./select-BWpV2iv-.cjs`),P=require(`./switch.cjs`),F=require(`./form.cjs`),I=require(`./iframe-DpCv-QH2.cjs`),L=require(`./notification-B6yDL91t.cjs`),R=require(`./json.cjs`),z=require(`./layout.cjs`),B=require(`./lightbox-Dpwsn8Qr.cjs`),V=require(`./list-BhM-6dAi.cjs`),H=require(`./navigation-rail.cjs`),U=require(`./overlay-DkIX9Ig3.cjs`),W=require(`./typography-D4Fo1UGh.cjs`),G=require(`./overlay.confirm-body-DwTfiNlV.cjs`),K=require(`./rxjs-utils-Csnks202.cjs`),q=require(`./slider.cjs`),J=require(`./steps.cjs`),Y=require(`./table.cjs`),X=require(`./theme-BMbXoqi0.cjs`),ce=require(`./tooltip.cjs`),le=require(`./tree.cjs`),ue=require(`./types.cjs`),de=require(`./typewriter.cjs`),Z=require(`./utils-DTa3QHxk.cjs`),fe=require(`./avatar.cjs`),Q=require(`./breadcrumb.cjs`),pe=require(`./kbd.cjs`),me=require(`./skeleton.cjs`),he=require(`./visually-hidden.cjs`);let $=require(`@lit-labs/signals`);exports.$drawer=h.p,exports.$notify=L.r,exports.$sounds=a.t,exports.ANIMATION_CSS_VARS=c.t,exports.BLACKBIRD_EASING=c.n,exports.DISCOVER_EVENT=p.t,exports.DISCOVER_RESPONSE_EVENT=p.n,exports.DURATION_BACKDROP=c.r,exports.DURATION_ENTER=c.i,exports.DURATION_EXIT=c.a,exports.DragDirective=l.h,exports.DropDirective=l.g,exports.EASE_IN=c.o,exports.EASE_OUT=c.s,exports.EmotionalSoundGenerator=a.n,exports.FINDING_MORTIES=t.b,exports.GRID_ANIMATION_CSS=c.c,exports.HERE_RICKY=t.x,exports.HISTORY_STRATEGY=t.v,exports.HereMorty=h.n,Object.defineProperty(exports,`List`,{enumerable:!0,get:function(){return V.t}}),exports.Numbers=Z.t,Object.defineProperty(exports,`RadioButton`,{enumerable:!0,get:function(){return A.t}}),Object.defineProperty(exports,`RadioGroup`,{enumerable:!0,get:function(){return A.n}}),exports.SCHMANCY_EXPAND_REQUEST_CLOSE=T.t,exports.SPRING_BOUNCY=c.l,exports.SPRING_GENTLE=c.u,exports.SPRING_SMOOTH=c.d,exports.SPRING_SNAPPY=c.f,Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return h.w}}),Object.defineProperty(exports,`SchmancyArea`,{enumerable:!0,get:function(){return t._}}),Object.defineProperty(exports,`SchmancyAssistChip`,{enumerable:!0,get:function(){return v.r}}),Object.defineProperty(exports,`SchmancyAvatar`,{enumerable:!0,get:function(){return fe.SchmancyAvatar}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return h.T}}),exports.SchmancyBoat=_.t,Object.defineProperty(exports,`SchmancyBreadcrumb`,{enumerable:!0,get:function(){return Q.SchmancyBreadcrumb}}),Object.defineProperty(exports,`SchmancyBreadcrumbItem`,{enumerable:!0,get:function(){return Q.SchmancyBreadcrumbItem}}),Object.defineProperty(exports,`SchmancyButton`,{enumerable:!0,get:function(){return re.t}}),Object.defineProperty(exports,`SchmancyCheckbox`,{enumerable:!0,get:function(){return ae.t}}),exports.SchmancyChip=v.n,exports.SchmancyFilterChip=v.n,Object.defineProperty(exports,`SchmancyConnectivityStatus`,{enumerable:!0,get:function(){return y.SchmancyConnectivityStatus}}),Object.defineProperty(exports,`SchmancyContentDrawer`,{enumerable:!0,get:function(){return h._}}),exports.SchmancyContentDrawerID=h.v,Object.defineProperty(exports,`SchmancyContentDrawerMain`,{enumerable:!0,get:function(){return h.g}}),exports.SchmancyContentDrawerMaxHeight=h.y,exports.SchmancyContentDrawerMinWidth=h.b,Object.defineProperty(exports,`SchmancyContentDrawerSheet`,{enumerable:!0,get:function(){return h.h}}),exports.SchmancyContentDrawerSheetMode=h.x,exports.SchmancyContentDrawerSheetState=h.S,exports.SchmancyContext=r.s,Object.defineProperty(exports,`SchmancyDataTable`,{enumerable:!0,get:function(){return Y.SchmancyDataTable}}),Object.defineProperty(exports,`SchmancyDateRange`,{enumerable:!0,get:function(){return b.t}}),exports.SchmancyDateRangeInline=x.t,Object.defineProperty(exports,`SchmancyDelay`,{enumerable:!0,get:function(){return S.SchmancyDelay}}),exports.SchmancyDetails=oe.t,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return h.f}}),exports.SchmancyDrawerNavbarMode=h.l,exports.SchmancyDrawerNavbarState=h.u,Object.defineProperty(exports,`SchmancyDropdown`,{enumerable:!0,get:function(){return C.SchmancyDropdown}}),Object.defineProperty(exports,`SchmancyDropdownContent`,{enumerable:!0,get:function(){return C.SchmancyDropdownContent}}),exports.SchmancyEvents=ue.SchmancyEvents,Object.defineProperty(exports,`SchmancyExpandRoot`,{enumerable:!0,get:function(){return T.n}}),Object.defineProperty(exports,`SchmancyFab`,{enumerable:!0,get:function(){return se.SchmancyFab}}),exports.SchmancyFloat=D.t,exports.SchmancyForm=O.t,Object.defineProperty(exports,`SchmancyFormSummary`,{enumerable:!0,get:function(){return F.SchmancyFormSummary}}),exports.SchmancyGenerateMoodAudioEvent=X.n,exports.SchmancyIframe=I.t,exports.SchmancyInput=k.n,Object.defineProperty(exports,`SchmancyInputChip`,{enumerable:!0,get:function(){return s.t}}),Object.defineProperty(exports,`SchmancyInputCompat`,{enumerable:!0,get:function(){return k.t}}),Object.defineProperty(exports,`SchmancyJson`,{enumerable:!0,get:function(){return R.SchmancyJson}}),Object.defineProperty(exports,`SchmancyKbd`,{enumerable:!0,get:function(){return pe.SchmancyKbd}}),Object.defineProperty(exports,`SchmancyLightbox`,{enumerable:!0,get:function(){return B.i}}),Object.defineProperty(exports,`SchmancyListItem`,{enumerable:!0,get:function(){return V.n}}),exports.SchmancyListTypeContext=V.r,Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return h.a}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return h.o}}),Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return h.c}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return h.d}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return h.s}}),Object.defineProperty(exports,`SchmancyNavigationRail`,{enumerable:!0,get:function(){return H.SchmancyNavigationRail}}),Object.defineProperty(exports,`SchmancyNavigationRailItem`,{enumerable:!0,get:function(){return H.SchmancyNavigationRailItem}}),exports.SchmancyNotification=L.i,Object.defineProperty(exports,`SchmancyOverlay`,{enumerable:!0,get:function(){return U.t}}),Object.defineProperty(exports,`SchmancyOverlayPromptBody`,{enumerable:!0,get:function(){return G.t}}),Object.defineProperty(exports,`SchmancyRange`,{enumerable:!0,get:function(){return j.SchmancyRange}}),Object.defineProperty(exports,`SchmancyRoute`,{enumerable:!0,get:function(){return t.y}}),Object.defineProperty(exports,`SchmancyScroll`,{enumerable:!0,get:function(){return z.SchmancyScroll}}),Object.defineProperty(exports,`SchmancySelect`,{enumerable:!0,get:function(){return N.t}}),Object.defineProperty(exports,`SchmancySkeleton`,{enumerable:!0,get:function(){return me.SchmancySkeleton}}),Object.defineProperty(exports,`SchmancySlide`,{enumerable:!0,get:function(){return q.SchmancySlide}}),Object.defineProperty(exports,`SchmancySlider`,{enumerable:!0,get:function(){return q.SchmancySlider}}),Object.defineProperty(exports,`SchmancyStep`,{enumerable:!0,get:function(){return J.SchmancyStep}}),Object.defineProperty(exports,`SchmancySteps`,{enumerable:!0,get:function(){return J.SchmancySteps}}),Object.defineProperty(exports,`SchmancySuggestionChip`,{enumerable:!0,get:function(){return v.t}}),Object.defineProperty(exports,`SchmancySurface`,{enumerable:!0,get:function(){return w.t}}),exports.SchmancySurfaceTypeContext=w.n,Object.defineProperty(exports,`SchmancySwitch`,{enumerable:!0,get:function(){return P.SchmancySwitch}}),Object.defineProperty(exports,`SchmancyTableRow`,{enumerable:!0,get:function(){return Y.SchmancyTableRow}}),Object.defineProperty(exports,`SchmancyTeleportation`,{enumerable:!0,get:function(){return h.t}}),exports.SchmancyTheme=M.t,Object.defineProperty(exports,`SchmancyThemeAudioPlayer`,{enumerable:!0,get:function(){return X.r}}),Object.defineProperty(exports,`SchmancyThemeComponent`,{enumerable:!0,get:function(){return X.a}}),Object.defineProperty(exports,`SchmancyThemeController`,{enumerable:!0,get:function(){return X.i}}),Object.defineProperty(exports,`SchmancyThemeControllerBoat`,{enumerable:!0,get:function(){return X.t}}),Object.defineProperty(exports,`SchmancyTree`,{enumerable:!0,get:function(){return le.SchmancyTree}}),Object.defineProperty(exports,`SchmancyTypography`,{enumerable:!0,get:function(){return W.t}}),Object.defineProperty(exports,`SchmancyVisuallyHidden`,{enumerable:!0,get:function(){return he.SchmancyVisuallyHidden}}),exports.SchmancyWindow=E.t,Object.defineProperty(exports,`SchmnacyIconButton`,{enumerable:!0,get:function(){return ie.SchmnacyIconButton}}),Object.defineProperty(exports,`Signal`,{enumerable:!0,get:function(){return $.Signal}}),exports.StepsController=J.StepsController,exports.ThemeHereIAm=d.r,exports.ThemeWhereAreYou=d.i,exports.WhereAreYouRicky=h.r,exports._activeHost=e.r,exports.aiBadge=l.O,exports.animateText=l.k,exports.area=t.S,exports.art=l.D,exports.beta=l.C,exports.bindState=r.t,exports.buildQueryString=t.t,exports.color=l.S,exports.compareActiveRoutes=t.n,exports.compareCustomElementConstructors=t.r,exports.compareRouteActions=t.i,Object.defineProperty(exports,`computed`,{enumerable:!0,get:function(){return $.computed}}),exports.confirm=g.t,exports.confirmClick=l.x,exports.createAnimation=c.p,exports.createDarkTonalPaletteFromBaseColor=X.s,exports.createDismissAnimation=c.m,exports.createLightTonalPaletteFromBaseColor=X.c,exports.createRevealAnimation=c.h,exports.createRouteCacheKey=t.a,exports.createScaleAnimation=c.g,exports.cursorGlow=u.t,exports.cycleText=l.b,exports.debounce=t.o,exports.decodeData=t.h,exports.decodeRouteState=t.s,exports.deepMerge=t.c,exports.delayContext=S.delayContext,exports.depthOfField=l.y,exports.discover=p.r,exports.discoverAllElements=p.i,exports.discoverAnyComponent=p.a,exports.discoverComponent=p.o,exports.discoverElement=p.s,exports.dismissAll=g.n,exports.drag=l._,exports.drop=l.v,exports.effect=r.n,exports.encodeData=t.g,exports.encodeRouteState=t.l,exports.extractQueryParams=t.u,exports.fill=l.m,exports.flip=B.r,exports.formSubmitState=O.n,exports.formatTheme=X.l,exports.fromResizeObserver=f.t,exports.fullHeight=f.n,exports.fullWidth=f.r,exports.futureCell=l.E,exports.fyi=l.p,exports.getEasing=c._,exports.getTagName=t.d,exports.gravity=ne.t,exports.hummingbird=l.f,exports.intersect=l.d,exports.intersection$=Z.n,exports.isBeta=l.w,exports.isObject=t.f,exports.lazy=n.t,exports.lightbox=B.t,exports.lightboxDirective=B.n,exports.liquid=l.u,exports.livingBorder=l.l,exports.longPress=l.c,exports.magnetic=m.t,exports.missedPunch=l.s,exports.mutationObserver=K.t,exports.nebula=l.o,exports.normalizeTagName=t.p,exports.notify=L.t,exports.notifyProgress=L.n,exports.observe=r.r,exports.openOverlays$=g.r,exports.overflowWithin=l.r,exports.overlayEvents=g.i,exports.overlayStack=te.t,exports.prefersReducedMotion=c.v,exports.prompt=g.a,exports.reducedMotion$=ee.t,exports.reveal=l.a,exports.ripple=l.i,exports.routerHistory=t.C,exports.sanitizeRouteState=t.m,exports.schmancyContentDrawer=h.C,exports.schmancyContext=r.i,exports.schmancyNavDrawer=h.m,exports.schmancySound=i.t,exports.schmancyTheme=d.t,exports.setBetaPredicate=l.T,exports.show=g.o,exports.similarity=o.t,exports.sound=i.n,exports.state=r.a,exports.stateFromObservable=r.o,exports.stepsContext=J.stepsContext,exports.tailwindAnimations=c.y,exports.tailwindStyles=X.o,exports.teleport=h.i,exports.theme=d.n,exports.themeContext=e.d,exports.tooltip=ce.tooltip,exports.typewriter=de.typewriter,exports.urgent=l.n,exports.validateInitialDateRange=b.n,exports.windowManager=E.n,exports.workingSnake=l.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-C41uPa6l.cjs`),t=require(`./area-2FrTZI_T.cjs`),n=require(`./lazy-C-7a4FAe.cjs`),r=require(`./state-BxDNox-2.cjs`),i=require(`./sound.service-D2GGaBXc.cjs`),a=require(`./audio-EaD0Ggfh.cjs`),o=require(`./search-DPKoC-dT.cjs`),s=require(`./input-chip-ChAgRCXZ.cjs`),c=require(`./animation-CCOIW4wJ.cjs`),l=require(`./directives-BZIRQDBq.cjs`),ee=require(`./reduced-motion-Ds-HjMzn.cjs`),u=require(`./cursor-glow-Bulq-38P.cjs`),d=require(`./theme.service-B15FdjOS.cjs`),f=require(`./layout-DZ4dpLh9.cjs`),te=require(`./overlay-stack-Bdr9lOqi.cjs`),ne=require(`./gravity-6pL6CfIr.cjs`),p=require(`./discovery.service-CIa3Eeuk.cjs`),m=require(`./magnetic-DKtc4umC.cjs`),h=require(`./src-SAXA4LEH.cjs`),g=require(`./overlay.service-Dbu5uP9E.cjs`),_=require(`./boat-BJPl_Jti.cjs`),re=require(`./button-B9RfBt-n.cjs`),ie=require(`./button.cjs`),ae=require(`./checkbox-C4zeib84.cjs`),v=require(`./chips-wfJ7YtWv.cjs`),y=require(`./connectivity.cjs`),b=require(`./date-range-BHSzlwSL.cjs`),x=require(`./date-range-inline-D0I6k84h.cjs`),S=require(`./delay.cjs`),oe=require(`./details-DQNj2oaU.cjs`),C=require(`./dropdown.cjs`),w=require(`./surface-CWwYD_z2.cjs`),T=require(`./expand-CUF163mg.cjs`),se=require(`./fab.cjs`),E=require(`./window-BbBYjm7R.cjs`),D=require(`./float-OvqX0nqG.cjs`),O=require(`./form-4GKROq2P.cjs`),k=require(`./input-Z-3N5JMv.cjs`),A=require(`./radio-group-BEtvCSS1.cjs`),j=require(`./range.cjs`),M=require(`./theme.interface-CSt7JUBD.cjs`),N=require(`./select-LWdPs7b_.cjs`),P=require(`./switch.cjs`),F=require(`./form.cjs`),I=require(`./iframe-DpCv-QH2.cjs`),L=require(`./notification-B6yDL91t.cjs`),R=require(`./json.cjs`),z=require(`./layout.cjs`),B=require(`./lightbox-Dpwsn8Qr.cjs`),V=require(`./list-BhM-6dAi.cjs`),H=require(`./navigation-rail.cjs`),U=require(`./overlay-N0trD-4u.cjs`),W=require(`./typography-D4Fo1UGh.cjs`),G=require(`./overlay.confirm-body-CtXIi421.cjs`),K=require(`./rxjs-utils-Csnks202.cjs`),q=require(`./slider.cjs`),J=require(`./steps.cjs`),Y=require(`./table.cjs`),X=require(`./theme-BMbXoqi0.cjs`),ce=require(`./tooltip.cjs`),le=require(`./tree.cjs`),ue=require(`./types.cjs`),de=require(`./typewriter.cjs`),Z=require(`./utils-DTa3QHxk.cjs`),fe=require(`./avatar.cjs`),Q=require(`./breadcrumb.cjs`),pe=require(`./kbd.cjs`),me=require(`./skeleton.cjs`),he=require(`./visually-hidden.cjs`);let $=require(`@lit-labs/signals`);exports.$drawer=h.p,exports.$notify=L.r,exports.$sounds=a.t,exports.ANIMATION_CSS_VARS=c.t,exports.BLACKBIRD_EASING=c.n,exports.DISCOVER_EVENT=p.t,exports.DISCOVER_RESPONSE_EVENT=p.n,exports.DURATION_BACKDROP=c.r,exports.DURATION_ENTER=c.i,exports.DURATION_EXIT=c.a,exports.DragDirective=l.h,exports.DropDirective=l.g,exports.EASE_IN=c.o,exports.EASE_OUT=c.s,exports.EmotionalSoundGenerator=a.n,exports.FINDING_MORTIES=t.b,exports.GRID_ANIMATION_CSS=c.c,exports.HERE_RICKY=t.x,exports.HISTORY_STRATEGY=t.v,exports.HereMorty=h.n,Object.defineProperty(exports,`List`,{enumerable:!0,get:function(){return V.t}}),exports.Numbers=Z.t,Object.defineProperty(exports,`RadioButton`,{enumerable:!0,get:function(){return A.t}}),Object.defineProperty(exports,`RadioGroup`,{enumerable:!0,get:function(){return A.n}}),exports.SCHMANCY_EXPAND_REQUEST_CLOSE=T.t,exports.SPRING_BOUNCY=c.l,exports.SPRING_GENTLE=c.u,exports.SPRING_SMOOTH=c.d,exports.SPRING_SNAPPY=c.f,Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return h.w}}),Object.defineProperty(exports,`SchmancyArea`,{enumerable:!0,get:function(){return t._}}),Object.defineProperty(exports,`SchmancyAssistChip`,{enumerable:!0,get:function(){return v.r}}),Object.defineProperty(exports,`SchmancyAvatar`,{enumerable:!0,get:function(){return fe.SchmancyAvatar}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return h.T}}),exports.SchmancyBoat=_.t,Object.defineProperty(exports,`SchmancyBreadcrumb`,{enumerable:!0,get:function(){return Q.SchmancyBreadcrumb}}),Object.defineProperty(exports,`SchmancyBreadcrumbItem`,{enumerable:!0,get:function(){return Q.SchmancyBreadcrumbItem}}),Object.defineProperty(exports,`SchmancyButton`,{enumerable:!0,get:function(){return re.t}}),Object.defineProperty(exports,`SchmancyCheckbox`,{enumerable:!0,get:function(){return ae.t}}),exports.SchmancyChip=v.n,exports.SchmancyFilterChip=v.n,Object.defineProperty(exports,`SchmancyConnectivityStatus`,{enumerable:!0,get:function(){return y.SchmancyConnectivityStatus}}),Object.defineProperty(exports,`SchmancyContentDrawer`,{enumerable:!0,get:function(){return h._}}),exports.SchmancyContentDrawerID=h.v,Object.defineProperty(exports,`SchmancyContentDrawerMain`,{enumerable:!0,get:function(){return h.g}}),exports.SchmancyContentDrawerMaxHeight=h.y,exports.SchmancyContentDrawerMinWidth=h.b,Object.defineProperty(exports,`SchmancyContentDrawerSheet`,{enumerable:!0,get:function(){return h.h}}),exports.SchmancyContentDrawerSheetMode=h.x,exports.SchmancyContentDrawerSheetState=h.S,exports.SchmancyContext=r.s,Object.defineProperty(exports,`SchmancyDataTable`,{enumerable:!0,get:function(){return Y.SchmancyDataTable}}),Object.defineProperty(exports,`SchmancyDateRange`,{enumerable:!0,get:function(){return b.t}}),exports.SchmancyDateRangeInline=x.t,Object.defineProperty(exports,`SchmancyDelay`,{enumerable:!0,get:function(){return S.SchmancyDelay}}),exports.SchmancyDetails=oe.t,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return h.f}}),exports.SchmancyDrawerNavbarMode=h.l,exports.SchmancyDrawerNavbarState=h.u,Object.defineProperty(exports,`SchmancyDropdown`,{enumerable:!0,get:function(){return C.SchmancyDropdown}}),Object.defineProperty(exports,`SchmancyDropdownContent`,{enumerable:!0,get:function(){return C.SchmancyDropdownContent}}),exports.SchmancyEvents=ue.SchmancyEvents,Object.defineProperty(exports,`SchmancyExpandRoot`,{enumerable:!0,get:function(){return T.n}}),Object.defineProperty(exports,`SchmancyFab`,{enumerable:!0,get:function(){return se.SchmancyFab}}),exports.SchmancyFloat=D.t,exports.SchmancyForm=O.t,Object.defineProperty(exports,`SchmancyFormSummary`,{enumerable:!0,get:function(){return F.SchmancyFormSummary}}),exports.SchmancyGenerateMoodAudioEvent=X.n,exports.SchmancyIframe=I.t,exports.SchmancyInput=k.n,Object.defineProperty(exports,`SchmancyInputChip`,{enumerable:!0,get:function(){return s.t}}),Object.defineProperty(exports,`SchmancyInputCompat`,{enumerable:!0,get:function(){return k.t}}),Object.defineProperty(exports,`SchmancyJson`,{enumerable:!0,get:function(){return R.SchmancyJson}}),Object.defineProperty(exports,`SchmancyKbd`,{enumerable:!0,get:function(){return pe.SchmancyKbd}}),Object.defineProperty(exports,`SchmancyLightbox`,{enumerable:!0,get:function(){return B.i}}),Object.defineProperty(exports,`SchmancyListItem`,{enumerable:!0,get:function(){return V.n}}),exports.SchmancyListTypeContext=V.r,Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return h.a}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return h.o}}),Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return h.c}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return h.d}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return h.s}}),Object.defineProperty(exports,`SchmancyNavigationRail`,{enumerable:!0,get:function(){return H.SchmancyNavigationRail}}),Object.defineProperty(exports,`SchmancyNavigationRailItem`,{enumerable:!0,get:function(){return H.SchmancyNavigationRailItem}}),exports.SchmancyNotification=L.i,Object.defineProperty(exports,`SchmancyOverlay`,{enumerable:!0,get:function(){return U.t}}),Object.defineProperty(exports,`SchmancyOverlayPromptBody`,{enumerable:!0,get:function(){return G.t}}),Object.defineProperty(exports,`SchmancyRange`,{enumerable:!0,get:function(){return j.SchmancyRange}}),Object.defineProperty(exports,`SchmancyRoute`,{enumerable:!0,get:function(){return t.y}}),Object.defineProperty(exports,`SchmancyScroll`,{enumerable:!0,get:function(){return z.SchmancyScroll}}),Object.defineProperty(exports,`SchmancySelect`,{enumerable:!0,get:function(){return N.t}}),Object.defineProperty(exports,`SchmancySkeleton`,{enumerable:!0,get:function(){return me.SchmancySkeleton}}),Object.defineProperty(exports,`SchmancySlide`,{enumerable:!0,get:function(){return q.SchmancySlide}}),Object.defineProperty(exports,`SchmancySlider`,{enumerable:!0,get:function(){return q.SchmancySlider}}),Object.defineProperty(exports,`SchmancyStep`,{enumerable:!0,get:function(){return J.SchmancyStep}}),Object.defineProperty(exports,`SchmancySteps`,{enumerable:!0,get:function(){return J.SchmancySteps}}),Object.defineProperty(exports,`SchmancySuggestionChip`,{enumerable:!0,get:function(){return v.t}}),Object.defineProperty(exports,`SchmancySurface`,{enumerable:!0,get:function(){return w.t}}),exports.SchmancySurfaceTypeContext=w.n,Object.defineProperty(exports,`SchmancySwitch`,{enumerable:!0,get:function(){return P.SchmancySwitch}}),Object.defineProperty(exports,`SchmancyTableRow`,{enumerable:!0,get:function(){return Y.SchmancyTableRow}}),Object.defineProperty(exports,`SchmancyTeleportation`,{enumerable:!0,get:function(){return h.t}}),exports.SchmancyTheme=M.t,Object.defineProperty(exports,`SchmancyThemeAudioPlayer`,{enumerable:!0,get:function(){return X.r}}),Object.defineProperty(exports,`SchmancyThemeComponent`,{enumerable:!0,get:function(){return X.a}}),Object.defineProperty(exports,`SchmancyThemeController`,{enumerable:!0,get:function(){return X.i}}),Object.defineProperty(exports,`SchmancyThemeControllerBoat`,{enumerable:!0,get:function(){return X.t}}),Object.defineProperty(exports,`SchmancyTree`,{enumerable:!0,get:function(){return le.SchmancyTree}}),Object.defineProperty(exports,`SchmancyTypography`,{enumerable:!0,get:function(){return W.t}}),Object.defineProperty(exports,`SchmancyVisuallyHidden`,{enumerable:!0,get:function(){return he.SchmancyVisuallyHidden}}),exports.SchmancyWindow=E.t,Object.defineProperty(exports,`SchmnacyIconButton`,{enumerable:!0,get:function(){return ie.SchmnacyIconButton}}),Object.defineProperty(exports,`Signal`,{enumerable:!0,get:function(){return $.Signal}}),exports.StepsController=J.StepsController,exports.ThemeHereIAm=d.r,exports.ThemeWhereAreYou=d.i,exports.WhereAreYouRicky=h.r,exports._activeHost=e.r,exports.aiBadge=l.O,exports.animateText=l.k,exports.area=t.S,exports.art=l.D,exports.beta=l.C,exports.bindState=r.t,exports.buildQueryString=t.t,exports.color=l.S,exports.compareActiveRoutes=t.n,exports.compareCustomElementConstructors=t.r,exports.compareRouteActions=t.i,Object.defineProperty(exports,`computed`,{enumerable:!0,get:function(){return $.computed}}),exports.confirm=g.t,exports.confirmClick=l.x,exports.createAnimation=c.p,exports.createDarkTonalPaletteFromBaseColor=X.s,exports.createDismissAnimation=c.m,exports.createLightTonalPaletteFromBaseColor=X.c,exports.createRevealAnimation=c.h,exports.createRouteCacheKey=t.a,exports.createScaleAnimation=c.g,exports.cursorGlow=u.t,exports.cycleText=l.b,exports.debounce=t.o,exports.decodeData=t.h,exports.decodeRouteState=t.s,exports.deepMerge=t.c,exports.delayContext=S.delayContext,exports.depthOfField=l.y,exports.discover=p.r,exports.discoverAllElements=p.i,exports.discoverAnyComponent=p.a,exports.discoverComponent=p.o,exports.discoverElement=p.s,exports.dismissAll=g.n,exports.drag=l._,exports.drop=l.v,exports.effect=r.n,exports.encodeData=t.g,exports.encodeRouteState=t.l,exports.extractQueryParams=t.u,exports.fill=l.m,exports.flip=B.r,exports.formSubmitState=O.n,exports.formatTheme=X.l,exports.fromResizeObserver=f.t,exports.fullHeight=f.n,exports.fullWidth=f.r,exports.futureCell=l.E,exports.fyi=l.p,exports.getEasing=c._,exports.getTagName=t.d,exports.gravity=ne.t,exports.hummingbird=l.f,exports.intersect=l.d,exports.intersection$=Z.n,exports.isBeta=l.w,exports.isObject=t.f,exports.lazy=n.t,exports.lightbox=B.t,exports.lightboxDirective=B.n,exports.liquid=l.u,exports.livingBorder=l.l,exports.longPress=l.c,exports.magnetic=m.t,exports.missedPunch=l.s,exports.mutationObserver=K.t,exports.nebula=l.o,exports.normalizeTagName=t.p,exports.notify=L.t,exports.notifyProgress=L.n,exports.observe=r.r,exports.openOverlays$=g.r,exports.overflowWithin=l.r,exports.overlayEvents=g.i,exports.overlayStack=te.t,exports.prefersReducedMotion=c.v,exports.prompt=g.a,exports.reducedMotion$=ee.t,exports.reveal=l.a,exports.ripple=l.i,exports.routerHistory=t.C,exports.sanitizeRouteState=t.m,exports.schmancyContentDrawer=h.C,exports.schmancyContext=r.i,exports.schmancyNavDrawer=h.m,exports.schmancySound=i.t,exports.schmancyTheme=d.t,exports.setBetaPredicate=l.T,exports.show=g.o,exports.similarity=o.t,exports.sound=i.n,exports.state=r.a,exports.stateFromObservable=r.o,exports.stepsContext=J.stepsContext,exports.tailwindAnimations=c.y,exports.tailwindStyles=X.o,exports.teleport=h.i,exports.theme=d.n,exports.themeContext=e.d,exports.tooltip=ce.tooltip,exports.typewriter=de.typewriter,exports.urgent=l.n,exports.validateInitialDateRange=b.n,exports.windowManager=E.n,exports.workingSnake=l.t;
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import { n as P, t as F } from "./audio-D3gnp15Y.js";
7
7
  import { t as I } from "./search-MvIBA93K.js";
8
8
  import { t as L } from "./input-chip-BOrcKH-H.js";
9
9
  import { _ as R, a as z, c as B, d as V, f as H, g as U, h as W, i as G, l as K, m as q, n as J, o as Y, p as X, r as Z, s as re, t as ie, u as ae, v as oe, y as se } from "./animation-DCznELuT.js";
10
- import { C as ce, D as le, E as ue, O as de, S as fe, T as pe, _ as me, a as he, b as ge, c as _e, d as ve, f as ye, g as be, h as xe, i as Se, k as Ce, l as we, m as Te, n as Ee, o as De, p as Oe, r as ke, s as Ae, t as je, u as Me, v as Ne, w as Pe, x as Fe, y as Ie } from "./directives-Bfm1lkoy.js";
10
+ import { C as ce, D as le, E as ue, O as de, S as fe, T as pe, _ as me, a as he, b as ge, c as _e, d as ve, f as ye, g as be, h as xe, i as Se, k as Ce, l as we, m as Te, n as Ee, o as De, p as Oe, r as ke, s as Ae, t as je, u as Me, v as Ne, w as Pe, x as Fe, y as Ie } from "./directives-BvRTjCFa.js";
11
11
  import { t as Le } from "./reduced-motion-D-L12p7G.js";
12
12
  import { t as Re } from "./cursor-glow-Ah7VXSj7.js";
13
13
  import { i as ze, n as Be, r as Ve, t as He } from "./theme.service-7VkM-hVf.js";
@@ -16,15 +16,15 @@ import { t as Ke } from "./overlay-stack-D2rgxQLh.js";
16
16
  import { t as qe } from "./gravity-sVK3zGBF.js";
17
17
  import { a as Je, i as Ye, n as Xe, o as Ze, r as Qe, s as $e, t as et } from "./discovery.service-DZFxtRwW.js";
18
18
  import { t as tt } from "./magnetic-DaOOv5Dz.js";
19
- import { C as nt, S as rt, T as it, _ as at, a as ot, b as st, c as ct, d as lt, f as ut, g as dt, h as ft, i as pt, l as Q, m as mt, n as ht, o as gt, p as _t, r as vt, s as yt, t as bt, u as xt, v as St, w as Ct, x as wt, y as Tt } from "./src-CIqAj3Eh.js";
20
- import { a as Et, i as Dt, n as Ot, o as kt, r as At, t as jt } from "./overlay.service-KTgBxjFb.js";
21
- import { t as Mt } from "./boat-DmyG7y1V.js";
22
- import { t as Nt } from "./button-BQSOVnHn.js";
19
+ import { C as nt, S as rt, T as it, _ as at, a as ot, b as st, c as ct, d as lt, f as ut, g as dt, h as ft, i as pt, l as Q, m as mt, n as ht, o as gt, p as _t, r as vt, s as yt, t as bt, u as xt, v as St, w as Ct, x as wt, y as Tt } from "./src-Dmqjtcmp.js";
20
+ import { a as Et, i as Dt, n as Ot, o as kt, r as At, t as jt } from "./overlay.service-BDLi0p5M.js";
21
+ import { t as Mt } from "./boat-BeqA9_ms.js";
22
+ import { t as Nt } from "./button-D6LJC-HC.js";
23
23
  import { SchmnacyIconButton as Pt } from "./button.js";
24
24
  import { t as Ft } from "./checkbox-Ce0DlAdW.js";
25
- import { n as $, r as It, t as Lt } from "./chips-DAy6v93f.js";
25
+ import { n as $, r as It, t as Lt } from "./chips-BoZSpSh_.js";
26
26
  import { SchmancyConnectivityStatus as Rt } from "./connectivity.js";
27
- import { n as zt, t as Bt } from "./date-range-NTpoA1in.js";
27
+ import { n as zt, t as Bt } from "./date-range-DJrdpzev.js";
28
28
  import { t as Vt } from "./date-range-inline-DjRdMZ1z.js";
29
29
  import { SchmancyDelay as Ht, delayContext as Ut } from "./delay.js";
30
30
  import { t as Wt } from "./details-CY49XVfp.js";
@@ -39,7 +39,7 @@ import { n as rn, t as an } from "./input-BCCHz6tB.js";
39
39
  import { n as on, t as sn } from "./radio-group-AHLvrN8O.js";
40
40
  import { SchmancyRange as cn } from "./range.js";
41
41
  import { t as ln } from "./theme.interface-odQEpZZH.js";
42
- import { t as un } from "./select-Cawz88lG.js";
42
+ import { t as un } from "./select-CGBsblDA.js";
43
43
  import { SchmancySwitch as dn } from "./switch.js";
44
44
  import { SchmancyFormSummary as fn } from "./form.js";
45
45
  import { t as pn } from "./iframe-DWvN5nGB.js";
@@ -49,9 +49,9 @@ import { SchmancyScroll as yn } from "./layout.js";
49
49
  import { i as bn, n as xn, r as Sn, t as Cn } from "./lightbox-B7Y4Nij_.js";
50
50
  import { n as wn, r as Tn, t as En } from "./list-C5WVoIfJ.js";
51
51
  import { SchmancyNavigationRail as Dn, SchmancyNavigationRailItem as On } from "./navigation-rail.js";
52
- import { t as kn } from "./overlay-CWsihJ-E.js";
52
+ import { t as kn } from "./overlay-DwJWVyk2.js";
53
53
  import { t as An } from "./typography-SZhjb_4R.js";
54
- import { t as jn } from "./overlay.confirm-body-CPqqPNks.js";
54
+ import { t as jn } from "./overlay.confirm-body-DwzKhXxM.js";
55
55
  import { t as Mn } from "./rxjs-utils-d-ivVN84.js";
56
56
  import { SchmancySlide as Nn, SchmancySlider as Pn } from "./slider.js";
57
57
  import { SchmancyStep as Fn, SchmancySteps as In, StepsController as Ln, stepsContext as Rn } from "./steps.js";
@@ -1,6 +1,6 @@
1
1
  import { t as e, u as t } from "./SchmancyElement-BNnyBOwk.js";
2
2
  import "./mixins-DGBI7YPO.js";
3
- import { o as n } from "./overlay.service-KTgBxjFb.js";
3
+ import { o as n } from "./overlay.service-BDLi0p5M.js";
4
4
  import { takeUntil as r } from "rxjs";
5
5
  import { customElement as i, query as a } from "lit/decorators.js";
6
6
  import { css as o, html as s } from "lit";
@@ -1 +1 @@
1
- {"version":3,"file":"menu-CBAAJoHu.js","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in the overlay\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu = (event: MouseEvent): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree. The overlay\n\t\t// surface no longer ships padding, so the wrapper owns its breathing\n\t\t// room — menu items shouldn't collide with the surface edge.\n\t\tconst overlayContainer = document.createElement('div')\n\t\toverlayContainer.style.padding = '0.5rem'\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.forEach(item => this.appendChild(item)),\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":";;;;;;AAKe,IAAA,IAAA,cAA+B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,0BAAA;GAW5C,KAAK,cAAc,IAAI,YAAY,SAAS;IAAE,SAAA,CAAS;IAAM,UAAA,CAAU;GAAA,CAAA,CAAA;EAAA;CAAA;CAAA;EAAA,KAAA,SAVxD,CAAC,CAAG;;;;;;CAapB,SAAA;EACC,OAAO,CAAI;gCACmB,KAAK,kBAAA;;;;CAIpC;AAAA;AAAA,IAAA,EAAA,CArBA,EAAc,oBAAA,CAAA,GAAoB,CAAA;ACmCpB,IAAA,IAAA,cAA2B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,YAWrB,MAAA;GACnB,IAAM,IAAY,KAAK,UAAU,iBAAA,KAAsB,CAAA;GACvD,IAAI,EAAU,WAAW,GAAG;GAM5B,IAAM,IAAmB,SAAS,cAAc,KAAA;GAChD,EAAiB,MAAM,UAAU,UACjC,EAAU,SAAQ,MAAQ,EAAiB,YAAY,CAAA,CAAA,GAMvD,EAAK,GAAkB,EAAE,QAAQ,EAAA,CAAA,EAC/B,KAAK,EAAU,KAAK,aAAA,CAAA,EACpB,UAAU,EACV,gBAAgB,EAAU,SAAQ,MAAQ,KAAK,YAAY,CAAA,CAAA,EAAA,CAAA;EAAA;CAAA;CAAA;EAAA,KAAA,SA7B9C,CAAC,CAAG;;;;;;;CAiCpB,SAAA;EACC,OAAO,CAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;;CAQrC;AAAA;AAAA,EAAA,CArCC,EAAM,kBAAA,CAAA,GAAkB,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CATzB,EAAc,eAAA,CAAA,GAAe,CAAA"}
1
+ {"version":3,"file":"menu-Dvi_tQgH.js","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in the overlay\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu = (event: MouseEvent): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree. The overlay\n\t\t// surface no longer ships padding, so the wrapper owns its breathing\n\t\t// room — menu items shouldn't collide with the surface edge.\n\t\tconst overlayContainer = document.createElement('div')\n\t\toverlayContainer.style.padding = '0.5rem'\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.forEach(item => this.appendChild(item)),\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":";;;;;;AAKe,IAAA,IAAA,cAA+B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,0BAAA;GAW5C,KAAK,cAAc,IAAI,YAAY,SAAS;IAAE,SAAA,CAAS;IAAM,UAAA,CAAU;GAAA,CAAA,CAAA;EAAA;CAAA;CAAA;EAAA,KAAA,SAVxD,CAAC,CAAG;;;;;;CAapB,SAAA;EACC,OAAO,CAAI;gCACmB,KAAK,kBAAA;;;;CAIpC;AAAA;AAAA,IAAA,EAAA,CArBA,EAAc,oBAAA,CAAA,GAAoB,CAAA;ACmCpB,IAAA,IAAA,cAA2B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,YAWrB,MAAA;GACnB,IAAM,IAAY,KAAK,UAAU,iBAAA,KAAsB,CAAA;GACvD,IAAI,EAAU,WAAW,GAAG;GAM5B,IAAM,IAAmB,SAAS,cAAc,KAAA;GAChD,EAAiB,MAAM,UAAU,UACjC,EAAU,SAAQ,MAAQ,EAAiB,YAAY,CAAA,CAAA,GAMvD,EAAK,GAAkB,EAAE,QAAQ,EAAA,CAAA,EAC/B,KAAK,EAAU,KAAK,aAAA,CAAA,EACpB,UAAU,EACV,gBAAgB,EAAU,SAAQ,MAAQ,KAAK,YAAY,CAAA,CAAA,EAAA,CAAA;EAAA;CAAA;CAAA;EAAA,KAAA,SA7B9C,CAAC,CAAG;;;;;;;CAiCpB,SAAA;EACC,OAAO,CAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;;CAQrC;AAAA;AAAA,EAAA,CArCC,EAAM,kBAAA,CAAA,GAAkB,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CATzB,EAAc,eAAA,CAAA,GAAe,CAAA"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-C41uPa6l.cjs`);require(`./mixins-fIpzhVMd.cjs`);const t=require(`./overlay.service-DU1nqh6A.cjs`);let n=require(`rxjs`),r=require(`lit/decorators.js`),i=require(`lit`);var a=class extends e.t{constructor(...e){super(...e),this.dismissParentMenu=()=>{this.dispatchEvent(new CustomEvent(`close`,{bubbles:!0,composed:!0}))}}static{this.styles=[i.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-C41uPa6l.cjs`);require(`./mixins-fIpzhVMd.cjs`);const t=require(`./overlay.service-Dbu5uP9E.cjs`);let n=require(`rxjs`),r=require(`lit/decorators.js`),i=require(`lit`);var a=class extends e.t{constructor(...e){super(...e),this.dismissParentMenu=()=>{this.dispatchEvent(new CustomEvent(`close`,{bubbles:!0,composed:!0}))}}static{this.styles=[i.css`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu-DFQjJk3H.cjs","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in the overlay\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu = (event: MouseEvent): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree. The overlay\n\t\t// surface no longer ships padding, so the wrapper owns its breathing\n\t\t// room — menu items shouldn't collide with the surface edge.\n\t\tconst overlayContainer = document.createElement('div')\n\t\toverlayContainer.style.padding = '0.5rem'\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.forEach(item => this.appendChild(item)),\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":"2OAKe,IAAA,EAAA,cAA+B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,sBAAA,CAW5C,KAAK,cAAc,IAAI,YAAY,QAAS,CAAE,QAAA,CAAS,EAAM,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,KAAA,OAVxD,CAAC,EAAA,GAAG;;;;GAapB,QAAA,CACC,MAAO,GAAA,IAAI;gCACmB,KAAK,kBAAA;;;GAIpC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eArBc,oBAAA,CAAA,EAAoB,CAAA,ECmCpB,IAAA,EAAA,cAA2B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,SAWrB,GAAA,CACnB,IAAM,EAAY,KAAK,UAAU,iBAAA,GAAsB,CAAA,EACvD,GAAI,EAAU,SAAW,EAAG,OAM5B,IAAM,EAAmB,SAAS,cAAc,KAAA,EAChD,EAAiB,MAAM,QAAU,SACjC,EAAU,QAAQ,GAAQ,EAAiB,YAAY,CAAA,CAAA,EAMvD,EAAA,EAAK,EAAkB,CAAE,OAAQ,CAAA,CAAA,EAC/B,MAAA,EAAA,EAAA,WAAe,KAAK,aAAA,CAAA,EACpB,UAAU,CACV,aAAgB,EAAU,QAAQ,GAAQ,KAAK,YAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,KAAA,OA7B9C,CAAC,EAAA,GAAG;;;;;GAiCpB,QAAA,CACC,MAAO,GAAA,IAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;GAQrC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OArCO,kBAAA,CAAA,EAAkB,EAAA,UAAA,WAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eATX,eAAA,CAAA,EAAe,CAAA"}
1
+ {"version":3,"file":"menu-GZARYp6I.cjs","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in the overlay\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu = (event: MouseEvent): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree. The overlay\n\t\t// surface no longer ships padding, so the wrapper owns its breathing\n\t\t// room — menu items shouldn't collide with the surface edge.\n\t\tconst overlayContainer = document.createElement('div')\n\t\toverlayContainer.style.padding = '0.5rem'\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.forEach(item => this.appendChild(item)),\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":"2OAKe,IAAA,EAAA,cAA+B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,sBAAA,CAW5C,KAAK,cAAc,IAAI,YAAY,QAAS,CAAE,QAAA,CAAS,EAAM,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,KAAA,OAVxD,CAAC,EAAA,GAAG;;;;GAapB,QAAA,CACC,MAAO,GAAA,IAAI;gCACmB,KAAK,kBAAA;;;GAIpC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eArBc,oBAAA,CAAA,EAAoB,CAAA,ECmCpB,IAAA,EAAA,cAA2B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,SAWrB,GAAA,CACnB,IAAM,EAAY,KAAK,UAAU,iBAAA,GAAsB,CAAA,EACvD,GAAI,EAAU,SAAW,EAAG,OAM5B,IAAM,EAAmB,SAAS,cAAc,KAAA,EAChD,EAAiB,MAAM,QAAU,SACjC,EAAU,QAAQ,GAAQ,EAAiB,YAAY,CAAA,CAAA,EAMvD,EAAA,EAAK,EAAkB,CAAE,OAAQ,CAAA,CAAA,EAC/B,MAAA,EAAA,EAAA,WAAe,KAAK,aAAA,CAAA,EACpB,UAAU,CACV,aAAgB,EAAU,QAAQ,GAAQ,KAAK,YAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,KAAA,OA7B9C,CAAC,EAAA,GAAG;;;;;GAiCpB,QAAA,CACC,MAAO,GAAA,IAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;GAQrC,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OArCO,kBAAA,CAAA,EAAkB,EAAA,UAAA,WAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eATX,eAAA,CAAA,EAAe,CAAA"}
package/dist/menu.cjs CHANGED
@@ -1 +1 @@
1
- require(`./menu-DFQjJk3H.cjs`);
1
+ require(`./menu-GZARYp6I.cjs`);
package/dist/menu.js CHANGED
@@ -1 +1 @@
1
- import "./menu-CBAAJoHu.js";
1
+ import "./menu-Dvi_tQgH.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-CYqBQTyt.cjs`);exports.$drawer=e.p,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return e.f}}),exports.SchmancyDrawerNavbarMode=e.l,exports.SchmancyDrawerNavbarState=e.u,Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return e.c}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return e.d}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return e.s}}),exports.schmancyNavDrawer=e.m;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-SAXA4LEH.cjs`);exports.$drawer=e.p,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return e.f}}),exports.SchmancyDrawerNavbarMode=e.l,exports.SchmancyDrawerNavbarState=e.u,Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return e.c}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return e.d}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return e.s}}),exports.schmancyNavDrawer=e.m;
@@ -1,2 +1,2 @@
1
- import { c as e, d as t, f as n, l as r, m as i, p as a, s as o, u as s } from "./src-CIqAj3Eh.js";
1
+ import { c as e, d as t, f as n, l as r, m as i, p as a, s as o, u as s } from "./src-Dmqjtcmp.js";
2
2
  export { a as $drawer, n as SchmancyDrawerAppbar, r as SchmancyDrawerNavbarMode, s as SchmancyDrawerNavbarState, e as SchmancyNavigationDrawer, t as SchmancyNavigationDrawerContent, o as SchmancyNavigationDrawerSidebar, i as schmancyNavDrawer };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-CYqBQTyt.cjs`);Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return e.a}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return e.o}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-SAXA4LEH.cjs`);Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return e.a}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return e.o}});
@@ -1,2 +1,2 @@
1
- import { a as e, o as t } from "./src-CIqAj3Eh.js";
1
+ import { a as e, o as t } from "./src-Dmqjtcmp.js";
2
2
  export { e as SchmancyNavigationBar, t as SchmancyNavigationBarItem };
@@ -3,8 +3,8 @@ import "./mixins-DGBI7YPO.js";
3
3
  import { _ as n, d as r, f as i } from "./animation-DCznELuT.js";
4
4
  import { t as a } from "./reduced-motion-D-L12p7G.js";
5
5
  import { t as o } from "./layout-CFiG3lNT.js";
6
- import { s } from "./overlay.service-KTgBxjFb.js";
7
- import "./overlay.confirm-body-CPqqPNks.js";
6
+ import { s } from "./overlay.service-BDLi0p5M.js";
7
+ import "./overlay.confirm-body-DwzKhXxM.js";
8
8
  import { EMPTY as c, Observable as l, Subject as u, debounceTime as d, distinctUntilChanged as f, filter as p, fromEvent as m, map as h, merge as g, take as _, takeUntil as v, tap as y } from "rxjs";
9
9
  import { customElement as b, property as x, query as S, state as C } from "lit/decorators.js";
10
10
  import { css as w, html as T, render as E } from "lit";