@vireo-ai/trellis-ui 0.1.37 → 0.1.38

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 (53) hide show
  1. package/package.json +1 -1
  2. package/packages/client/types/runtime/engine/request.d.ts +1 -5
  3. package/packages/client/types/runtime/engine/stream.d.ts +3 -1
  4. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +202 -202
  5. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +1 -1
  6. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +1 -1
  7. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-CHT-6DKB.js → capability-motion-C2a-uH0K.js} +2 -2
  8. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-motion-CHT-6DKB.js.map → capability-motion-C2a-uH0K.js.map} +1 -1
  9. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-CIC0ACle.js → capability-sortable-BggRHN-z.js} +3 -3
  10. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{capability-sortable-CIC0ACle.js.map → capability-sortable-BggRHN-z.js.map} +1 -1
  11. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-RGsAqnkU.js +2 -0
  12. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-RGsAqnkU.js.map +1 -0
  13. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-1CSz8kEV.js → entry.generated-B9dB25_X.js} +2 -2
  14. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-1CSz8kEV.js.map → entry.generated-B9dB25_X.js.map} +1 -1
  15. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-B-DK_TD9.js → entry.generated-BJ-tHyRS.js} +2 -2
  16. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-B-DK_TD9.js.map → entry.generated-BJ-tHyRS.js.map} +1 -1
  17. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CaapC7Ct.js → entry.generated-Bs8R7q-k.js} +2 -2
  18. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CaapC7Ct.js.map → entry.generated-Bs8R7q-k.js.map} +1 -1
  19. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-IfKkAqoN.js → entry.generated-DACv4vt_.js} +2 -2
  20. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-IfKkAqoN.js.map → entry.generated-DACv4vt_.js.map} +1 -1
  21. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CMEyTYos.js → entry.generated-Dbx3mzKF.js} +2 -2
  22. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-CMEyTYos.js.map → entry.generated-Dbx3mzKF.js.map} +1 -1
  23. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated--6MGmLYe.js → entry.generated-DlB7q_hp.js} +2 -2
  24. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated--6MGmLYe.js.map → entry.generated-DlB7q_hp.js.map} +1 -1
  25. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-GsY6gpiw.js → entry.generated-Iyuixnaf.js} +2 -2
  26. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-GsY6gpiw.js.map → entry.generated-Iyuixnaf.js.map} +1 -1
  27. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DeIdrz3R.js → entry.generated-WW2h_4VQ.js} +2 -2
  28. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-DeIdrz3R.js.map → entry.generated-WW2h_4VQ.js.map} +1 -1
  29. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cj3Cx01k.js → entry.generated-fIISM6Ej.js} +2 -2
  30. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-Cj3Cx01k.js.map → entry.generated-fIISM6Ej.js.map} +1 -1
  31. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-Dmm9SoIv.js → motion-Elnp-CNK.js} +2 -2
  32. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{motion-Dmm9SoIv.js.map → motion-Elnp-CNK.js.map} +1 -1
  33. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BClfiP2G.js +4 -0
  34. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-BClfiP2G.js.map +1 -0
  35. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  36. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  37. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  38. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +1 -1
  39. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  40. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  41. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  42. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  43. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  44. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  45. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  46. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  47. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +71 -71
  48. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +8 -8
  49. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +8 -8
  50. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-D8VKfoWC.js +0 -2
  51. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-D8VKfoWC.js.map +0 -1
  52. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-DQwcal8k.js +0 -4
  53. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-DQwcal8k.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"entry.generated-CMEyTYos.js","names":[],"sources":["../../../../../../../../client/src/runtime/shell-breakpoint.ts","../../../../../../../../client/src/components/sidebar/contract.ts","../../../../../../../../client/src/components/sidebar/machine.ts","../../../../../../../../client/src/components/sidebar/styles.ts","../../../../../../../../client/src/components/sidebar/index.ts","../../../../../../../../client/src/components/sidebar/entry.generated.ts"],"sourcesContent":["const shellBreakpointPixels = (reference: HTMLElement): number => {\n const value = getComputedStyle(reference).getPropertyValue('--ui-shell-sidebar-breakpoint');\n const pixels = Number.parseFloat(value);\n return Number.isFinite(pixels) ? pixels : Number.POSITIVE_INFINITY;\n};\n\nexport {shellBreakpointPixels};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ELEVATION_REFERENCES,\n SURFACE_REFERENCES,\n type ElevationReference,\n type SurfaceReference,\n} from '../common';\n\nconst SIDEBAR_SIDES = ['left', 'right'] as const;\nconst SIDEBAR_PLACEMENTS = ['side', 'top'] as const;\nconst SIDEBAR_COLLAPSES = ['none', 'mobile', 'desktop', 'both'] as const;\nconst SIDEBAR_TOGGLE_ACTIONS = ['toggle', 'open', 'close', 'stash', 'expand'] as const;\nconst SIDEBAR_ITEM_AS = ['a', 'button'] as const;\nconst SIDEBAR_ITEM_VARIANTS = ['ghost', 'surface'] as const;\nconst SIDEBAR_ITEM_COLORS = ['neutral', 'accent'] as const;\nconst SIDEBAR_SURFACES = SURFACE_REFERENCES;\nconst SIDEBAR_ELEVATIONS = ELEVATION_REFERENCES;\n\nconst sidebarSchema = {\n id: string.default('ui-sidebar'),\n placement: oneOf(SIDEBAR_PLACEMENTS, 'side'),\n side: oneOf(SIDEBAR_SIDES, 'left'),\n surface: oneOf(SIDEBAR_SURFACES, 'inherit'),\n elevation: oneOf(SIDEBAR_ELEVATIONS, 'none'),\n drawerElevation: oneOf(SIDEBAR_ELEVATIONS, '2'),\n divider: bool.default(true),\n sticky: bool.default(true),\n collapse: oneOf(SIDEBAR_COLLAPSES, 'mobile'),\n open: bool,\n stashed: bool,\n persist: bool.default(true),\n edgeReveal: bool.default(true),\n resizable: bool,\n class: string,\n};\n\nconst sidebarItemSchema = {\n as: oneOf(SIDEBAR_ITEM_AS, 'a'),\n variant: oneOf(SIDEBAR_ITEM_VARIANTS, 'ghost'),\n color: oneOf(SIDEBAR_ITEM_COLORS, 'neutral'),\n href: string,\n current: bool,\n disabled: bool,\n icon: string,\n iconTrailing: string,\n badge: string,\n class: string,\n};\n\nconst sidebarGroupSchema = {\n heading: string,\n expandable: bool,\n expanded: bool.default(true),\n icon: string,\n class: string,\n};\n\nconst sidebarToggleSchema = {\n target: string,\n icon: string.default('side_panel'),\n label: string.default('Toggle sidebar'),\n action: oneOf(SIDEBAR_TOGGLE_ACTIONS, 'toggle'),\n class: string,\n};\n\nconst sidebarPanelSchema = {\n class: string,\n};\n\nconst sidebarNavSchema = {\n label: string,\n labelled: string,\n class: string,\n};\n\ntype SidebarProps = SchemaToProps<typeof sidebarSchema>;\ntype SidebarToggleAction = typeof SIDEBAR_TOGGLE_ACTIONS[number];\ntype SidebarCollapse = typeof SIDEBAR_COLLAPSES[number];\ntype SidebarItemColor = typeof SIDEBAR_ITEM_COLORS[number];\ntype SidebarItemVariant = typeof SIDEBAR_ITEM_VARIANTS[number];\ntype SidebarSide = typeof SIDEBAR_SIDES[number];\ntype SidebarPlacement = typeof SIDEBAR_PLACEMENTS[number];\ntype SidebarSurface = SurfaceReference;\ntype SidebarElevation = ElevationReference;\n\nexport {\n SIDEBAR_COLLAPSES,\n SIDEBAR_ITEM_AS,\n SIDEBAR_ITEM_COLORS,\n SIDEBAR_ITEM_VARIANTS,\n SIDEBAR_ELEVATIONS,\n SIDEBAR_SIDES,\n SIDEBAR_PLACEMENTS,\n SIDEBAR_TOGGLE_ACTIONS,\n SIDEBAR_SURFACES,\n sidebarGroupSchema,\n sidebarItemSchema,\n sidebarNavSchema,\n sidebarPanelSchema,\n sidebarSchema,\n sidebarToggleSchema,\n};\nexport type {\n SidebarCollapse,\n SidebarElevation,\n SidebarItemColor,\n SidebarItemVariant,\n SidebarPlacement,\n SidebarProps,\n SidebarSide,\n SidebarSurface,\n SidebarToggleAction,\n};\n","import {createMachine, type Machine, type MachineEventObject} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SidebarPlacement, SidebarProps} from './contract';\n\ntype SidebarMode = 'mobile' | 'desktop';\ntype SidebarPresentation = 'drawer' | 'layout';\ntype SidebarTarget = 'mobileClosed' | 'mobileOpen' | 'desktopExpanded' | 'desktopStashed' | 'desktopDrawer' | 'desktopTop';\n\ntype SidebarContext = {\n responsive: {mode: SidebarMode};\n layout: {desktopStashed: boolean; desktopDrawerOpen: boolean; width: string; height: string};\n transition: {target: SidebarTarget; presentation: SidebarPresentation};\n};\n\ntype SidebarMachineEffects = {\n prepareOpen(): void;\n finishOpen(): void;\n prepareClose(): void;\n finishClose(): void;\n sync(): void;\n syncProps(): void;\n};\n\ntype CreateSidebarMachineOptions = {\n props: SidebarProps;\n mode: SidebarMode;\n desktopStashed: boolean;\n effects: SidebarMachineEffects;\n};\n\nconst projectTransition = ({context}: {context: Readonly<SidebarContext>}) => ({\n mode: context.responsive.mode,\n presentation: context.transition.presentation,\n width: context.layout.width,\n height: context.layout.height,\n});\n\ntype SidebarTransitionData = ReturnType<typeof projectTransition>;\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: projectTransition,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: projectTransition,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'closing'>);\n\nconst sidebarHooks = [openingHook, closingHook] as const;\n\nconst targetFrom = (event: MachineEventObject, fallback: SidebarTarget): SidebarTarget => (\n typeof event.target === 'string' ? event.target as SidebarTarget : fallback\n);\nconst presentationFrom = (event: MachineEventObject): SidebarPresentation => event.presentation === 'layout' ? 'layout' : 'drawer';\n\nconst createSidebarMachine = ({props, mode, desktopStashed, effects}: CreateSidebarMachineOptions): Machine<SidebarContext, SidebarProps> => {\n const initial: SidebarTarget = mode === 'mobile'\n ? props.open ? 'mobileOpen' : 'mobileClosed'\n : props.placement === 'top' ? 'desktopTop' : desktopStashed ? 'desktopStashed' : 'desktopExpanded';\n\n const beginOpen = {target: 'opening', reduce: 'beginOpen', effects: 'prepareOpen'} as const;\n const beginClose = {target: 'closing', reduce: 'beginClose', effects: 'prepareClose'} as const;\n const syncProps = {reduce: 'replaceProps', effects: 'syncProps'} as const;\n\n return createMachine<SidebarContext, SidebarProps>({\n initial,\n on: {\n MODE: [\n {target: 'desktopTop', guard: 'toTop', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopDrawer', guard: 'toDesktopDrawer', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopStashed', guard: 'toDesktopStashed', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopExpanded', guard: 'toDesktop', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileOpen', guard: 'toMobileOpen', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileClosed', reduce: 'setMode', effects: 'sync'},\n ],\n RESIZE: {reduce: 'resize', effects: 'sync'},\n },\n states: {\n mobileClosed: {tags: ['mobile', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n mobileOpen: {tags: ['mobile', 'visible', 'expanded', 'open'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, PROPS_CHANGED: syncProps}},\n desktopExpanded: {tags: ['desktop', 'visible', 'expanded', 'open', 'layout'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, OPEN: {}, EXPAND: {}, PROPS_CHANGED: syncProps}},\n desktopStashed: {tags: ['desktop', 'stashed', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, TOGGLE: beginOpen, PROPS_CHANGED: syncProps}},\n desktopDrawer: {tags: ['desktop', 'stashed', 'visible', 'expanded', 'open', 'drawer'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n desktopTop: {tags: ['desktop', 'top', 'visible', 'expanded', 'open', 'layout'], on: {PROPS_CHANGED: syncProps}},\n opening: {\n tags: ['visible', 'expanded', 'transitioning'],\n on: {\n OPENING_DONE: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n OPENING_ERROR: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n CLOSE: beginClose,\n STASH: beginClose,\n TOGGLE: beginClose,\n PROPS_CHANGED: syncProps,\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n CLOSING_ERROR: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n OPEN: beginOpen,\n EXPAND: beginOpen,\n TOGGLE: beginOpen,\n PROPS_CHANGED: syncProps,\n },\n },\n },\n }, {\n props,\n context: {\n responsive: {mode},\n layout: {\n desktopStashed,\n desktopDrawerOpen: false,\n width: 'var(--spacing-sidebar-width)',\n height: '',\n },\n transition: {target: initial, presentation: initial === 'desktopExpanded' || initial === 'desktopTop' ? 'layout' : 'drawer'},\n },\n reducers: {\n beginOpen: ({context, event}) => {\n const target = targetFrom(event, 'mobileOpen');\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopDrawer'\n ? true\n : target === 'desktopExpanded' ? false : context.layout.desktopStashed,\n desktopDrawerOpen: target === 'desktopDrawer'\n || (target === 'mobileOpen' && context.layout.desktopStashed),\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n beginClose: ({context, event}) => {\n const target = targetFrom(event, 'mobileClosed');\n const closesDesktopDrawer = target === 'desktopStashed'\n || (target === 'mobileClosed' && context.layout.desktopStashed);\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopStashed' ? true : context.layout.desktopStashed,\n desktopDrawerOpen: closesDesktopDrawer ? false : context.layout.desktopDrawerOpen,\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n setMode: ({context, event}) => ({context: {...context, responsive: {mode: event.mode === 'desktop' ? 'desktop' : 'mobile'}}}),\n replaceProps: ({context, event}) => ({\n props: event.props as SidebarProps,\n context,\n }),\n resize: ({context, event}) => ({context: {\n ...context,\n layout: {\n ...context.layout,\n width: typeof event.width === 'string' ? event.width : context.layout.width,\n height: typeof event.height === 'string' ? event.height : context.layout.height,\n },\n }}),\n },\n guards: {\n toTop: ({event}) => event.mode === 'desktop' && event.placement === 'top',\n toDesktopDrawer: ({event}) => event.mode === 'desktop' && event.stashed === true && event.open === true,\n toDesktopStashed: ({event}) => event.mode === 'desktop' && event.stashed === true,\n toDesktop: ({event}) => event.mode === 'desktop',\n toMobileOpen: ({event}) => event.mode === 'mobile' && event.open === true,\n targetsMobileOpen: ({context}) => context.transition.target === 'mobileOpen',\n targetsMobileClosed: ({context}) => context.transition.target === 'mobileClosed',\n targetsDesktopDrawer: ({context}) => context.transition.target === 'desktopDrawer',\n targetsDesktopTop: ({context}) => context.transition.target === 'desktopTop',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n sync: effects.sync,\n syncProps: effects.syncProps,\n },\n });\n};\n\nexport {createSidebarMachine, sidebarHooks};\nexport type {CreateSidebarMachineOptions, SidebarContext, SidebarMachineEffects, SidebarMode, SidebarPresentation, SidebarTarget};\n","import {defineStyles} from '../../runtime';\nimport {elevationReferenceClasses} from '../common';\n\nconst SIDEBAR_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-resting-elevation');\nconst SIDEBAR_DRAWER_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-drawer-elevation');\n\nconst sidebarStyles = defineStyles({definition: {\n component: 'ui.sidebar',\n parts: {\n root: {\n base: [\n 'fixed inset-y-2 z-dialog flex min-h-0 w-[var(--spacing-sidebar-drawer-width)] flex-col overflow-hidden rounded-overlay-md',\n 'border-separator outline-none',\n 'data-[drawer-state=open]:bg-surface',\n 'data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:z-auto data-[responsive-mode=desktop]:w-[var(--ui-sidebar-width,var(--spacing-sidebar-width))] data-[responsive-mode=desktop]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=closed]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:data-[desktop-state=expanded]:inset-y-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:w-full data-[responsive-mode=desktop]:data-[desktop-state=expanded]:rounded-none',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:z-dialog data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:h-auto',\n '[grid-area:sidebar]',\n 'data-[placement=top]:data-[responsive-mode=desktop]:relative data-[placement=top]:data-[responsive-mode=desktop]:inset-auto data-[placement=top]:data-[responsive-mode=desktop]:z-auto data-[placement=top]:data-[responsive-mode=desktop]:h-[var(--ui-sidebar-height,auto)] data-[placement=top]:data-[responsive-mode=desktop]:w-full data-[placement=top]:data-[responsive-mode=desktop]:max-w-none data-[placement=top]:data-[responsive-mode=desktop]:translate-x-0 data-[placement=top]:data-[responsive-mode=desktop]:flex-row data-[placement=top]:data-[responsive-mode=desktop]:overflow-visible',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:flex-1',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]>[data-ui-scroll-area]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-item]]:w-auto',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:items-center',\n ],\n variants: {\n elevation: SIDEBAR_ELEVATION_CLASSES,\n drawerElevation: SIDEBAR_DRAWER_ELEVATION_CLASSES,\n divider: {\n true: 'data-[placement=side][data-side=left]:border-r-edge-divider data-[placement=side][data-side=right]:border-l-edge-divider data-[placement=top]:border-b-edge-divider',\n false: '',\n },\n side: {\n left: 'left-2 border-r-edge-divider data-[responsive-mode=desktop]:data-[desktop-state=expanded]:left-auto',\n right: 'right-2 border-l-edge-divider data-[mobile-state=closed]:translate-x-full data-[mobile-state=open]:translate-x-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:right-auto',\n },\n sticky: {\n true: 'data-[responsive-mode=desktop]:sticky data-[responsive-mode=desktop]:h-screen',\n false: 'data-[responsive-mode=desktop]:relative data-[responsive-mode=desktop]:h-auto data-[responsive-mode=desktop]:data-[sticky=false]:relative data-[responsive-mode=desktop]:data-[sticky=False]:relative data-[responsive-mode=desktop]:data-[sticky=false]:h-auto data-[responsive-mode=desktop]:data-[sticky=False]:h-auto',\n },\n },\n defaults: {\n elevation: 'none',\n drawerElevation: '2',\n divider: true,\n side: 'left',\n sticky: true,\n },\n },\n header: {\n base: 'flex min-h-control-xlg shrink-0 items-center gap-sidebar-header-gap px-sidebar-header-padding-inline py-sidebar-header-padding-block',\n },\n content: {\n base: [\n 'min-h-0 flex-1 overflow-hidden',\n ],\n },\n contentInner: {\n base: [\n 'grid min-w-0 content-start gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n '[&>[data-ui-separator]]:-mx-sidebar-content-padding-inline [&>[data-ui-separator]]:w-auto',\n ],\n },\n footer: {\n base: 'grid shrink-0 gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n },\n nav: {\n base: 'grid gap-sidebar-content-gap',\n },\n item: {\n base: [\n 'group/sidebar-item flex h-control-md w-full min-w-0 select-none items-center gap-2 rounded-control-md px-2',\n 'border border-transparent text-left text-sm font-medium outline-none',\n 'cursor-default',\n 'data-disabled:pointer-events-none',\n ],\n variants: {\n variant: {\n ghost: '',\n surface: 'data-current:border-transparent data-current:shadow-none',\n },\n color: {\n neutral: '',\n accent: '',\n },\n withActions: {\n true: 'pr-9',\n false: '',\n },\n },\n defaults: {\n variant: 'ghost',\n color: 'neutral',\n withActions: false,\n },\n },\n itemRow: {\n base: 'group/sidebar-item-row relative min-w-0',\n },\n itemIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon',\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n itemLabel: {\n base: 'min-w-0 flex-1',\n },\n itemBadge: {\n base: 'ml-auto shrink-0 rounded-control-sm bg-interaction-hover px-1.5 py-0.5 text-xs text-surface-ink-muted',\n },\n itemActions: {\n base: 'absolute right-1 top-1/2 z-10 flex -translate-y-1/2 items-center gap-1',\n },\n group: {\n base: 'relative grid gap-sidebar-content-gap',\n },\n groupSummary: {\n base: [\n 'block h-control-md cursor-default select-none list-none rounded-control-md text-xs font-medium text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n '[&::-webkit-details-marker]:hidden',\n ],\n variants: {\n hasActions: {\n true: '',\n false: '',\n },\n },\n defaults: {\n hasActions: false,\n },\n },\n groupSummaryInner: {\n base: 'flex h-full min-w-0 items-center gap-2 px-2',\n },\n groupHeading: {\n base: 'flex min-h-control-md min-w-0 select-none items-center gap-2 px-2 py-1 cursor-default',\n },\n groupIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon group-open/sidebar-group:rotate-90',\n },\n groupLabel: {\n base: 'min-w-0 flex-1',\n },\n groupHeadingLabel: {\n base: 'min-w-0 flex-1',\n },\n groupActions: {\n base: 'ml-auto flex shrink-0 items-center gap-1',\n },\n groupContent: {\n base: 'grid gap-sidebar-content-gap',\n },\n toggle: {\n base: [\n 'inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-control-md text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n ],\n },\n toggleIcon: {\n base: 'size-icon fill-current text-current',\n },\n edge: {\n base: [\n 'fixed inset-y-0 z-30 hidden w-4 bg-transparent outline-none data-[state=visible]:block',\n 'focus-visible:ui-focus-ring-inset',\n 'data-[state=hidden]:hidden',\n ],\n variants: {\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n resizeHandle: {\n base: [\n 'absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none border-transparent outline-none group-data-[responsive-mode=desktop]/sidebar:block',\n 'hover:border-intent-neutral-edge-hover',\n 'focus-visible:ui-focus-ring-inset',\n 'data-disabled:hidden',\n 'group-data-[placement=top]/sidebar:inset-x-0 group-data-[placement=top]/sidebar:bottom-0 group-data-[placement=top]/sidebar:top-auto group-data-[placement=top]/sidebar:h-3 group-data-[placement=top]/sidebar:w-auto group-data-[placement=top]/sidebar:cursor-row-resize group-data-[placement=top]/sidebar:border-b-edge-divider group-data-[placement=top]/sidebar:border-r-0 group-data-[placement=top]/sidebar:border-l-0',\n ],\n variants: {\n side: {\n left: 'right-0 border-r-edge-divider',\n right: 'left-0 border-l-edge-divider',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n },\n}});\n\nexport {sidebarStyles};\n","import type Alpine from 'alpinejs';\nimport {animate, motionValue} from 'motion';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {decodeProps, type SchemaToProps} from '@client/runtime/codecs';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {type ResizeEvent} from '@client/runtime/drag-and-drop';\nimport {focusFirst, trapFocus} from '@client/runtime/focus-scope';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {lockDocumentScroll, unlockDocumentScroll} from '@client/runtime/scroll-lock';\nimport {shellBreakpointPixels} from '@client/runtime/shell-breakpoint';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {\n createMotionPlan,\n shouldReduceMotion,\n speeds,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {ownMotion} from '@client/motion/owned';\nimport {replaceMotion} from '@client/motion/registry';\nimport {addListener, dispatch, type CleanupStack} from '@client/utils';\nimport {sidebarSchema, sidebarToggleSchema, type SidebarProps, type SidebarToggleAction} from './contract';\nimport {createSidebarMachine, sidebarHooks, type SidebarContext, type SidebarMode, type SidebarTarget} from './machine';\nimport {sidebarStyles} from './styles';\n\ntype SidebarTransitionName = (typeof sidebarHooks)[number]['name'];\ntype SidebarTransition<TName extends SidebarTransitionName = SidebarTransitionName> = TransitionForHook<\n Extract<(typeof sidebarHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype SidebarController = {\n readonly id: string;\n isExpanded(): boolean;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n};\n\ntype SidebarEventDetail = {id?: string; action?: SidebarToggleAction; trigger?: HTMLElement | null};\nconst togglePropsSchema = {target: sidebarToggleSchema.target, action: sidebarToggleSchema.action, class: sidebarToggleSchema.class};\ntype SidebarToggleProps = SchemaToProps<typeof togglePropsSchema>;\ntype SidebarEdgeProps = SidebarToggleProps;\n\n/** Public Alpine API for `ui.sidebar`. @public */\ninterface UiSidebarApi {\n /** Sidebar id used by external controls. */\n readonly id: string;\n /** Whether the sidebar is fully open or currently opening. */\n readonly isOpen: boolean;\n /** Whether the observed shell is at or above the theme-generated shell breakpoint. */\n readonly isDesktop: boolean;\n /** Whether side placement is persistently stashed on desktop. */\n readonly isStashed: boolean;\n /** Current side-placement track width. */\n readonly width: string;\n /** Current top-placement track height. */\n readonly height: string;\n /** Opens the responsive drawer or temporarily reveals a stashed desktop sidebar. */\n open(event?: Event): void;\n /** Closes the responsive drawer or stashes an expanded desktop sidebar. */\n close(event?: Event): void;\n /** Reverses the current visibility intent, including an in-flight transition. */\n toggle(event?: Event): void;\n /** Permanently removes side placement from the desktop layout track. */\n stash(event?: Event): void;\n /** Permanently restores side placement to the desktop layout track. */\n expand(event?: Event): void;\n}\n\ntype SidebarData = AlpineMachine<SidebarContext, SidebarProps, typeof sidebarHooks> & UiSidebarApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n isExpanded(): boolean;\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle;\n};\n\ntype SidebarMotionTransition = MotionTransitionSubject & Readonly<{\n data: {mode: SidebarMode; presentation: 'drawer' | 'layout'};\n to: string;\n}>;\n\nconst controllers = new Set<SidebarController>();\n\nconst eventDetail = (event: Event): SidebarEventDetail => event instanceof CustomEvent && event.detail && typeof event.detail === 'object'\n ? event.detail as SidebarEventDetail\n : {};\n\nconst registerDocumentListeners = (() => {\n let registered = false;\n return (): void => {\n if (registered || typeof document === 'undefined') return;\n const route = (action: SidebarToggleAction) => (event: Event): void => {\n if (event.target instanceof Element && event.target.hasAttribute('data-ui-sidebar')) return;\n const detail = eventDetail(event);\n controllers.forEach((controller) => {\n if (!detail.id || detail.id === controller.id) controller.perform(detail.action ?? action, detail.trigger);\n });\n };\n document.addEventListener('ui:sidebar-open', route('open'));\n document.addEventListener('ui:sidebar-close', route('close'));\n document.addEventListener('ui:sidebar-toggle', route('toggle'));\n registered = true;\n };\n})();\n\nconst UiSidebar = (): TrellisAlpineComponent<SidebarData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupStack = [];\n let resizeObserver: ResizeObserver | null = null;\n let responsiveMode: SidebarMode = 'mobile';\n let activeTrigger: HTMLElement | null = null;\n let hasScrollLock = false;\n let layoutTrackFrom: number | null = null;\n let layoutTrackTo: number | null = null;\n let holdingLayout = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Sidebar has not been initialized.');\n return rootEl;\n };\n const appEl = (): HTMLElement | null => root().closest<HTMLElement>('[data-ui-app]');\n const backdropEl = (): HTMLElement | null => appEl()?.querySelector<HTMLElement>('[data-ui-app-backdrop]') ?? null;\n const currentProps = (): Readonly<SidebarProps> => bridge.getSnapshot().props;\n const context = (): Readonly<SidebarContext> => bridge.getSnapshot().context;\n const target = (): SidebarTarget => context().transition.target;\n const isDrawer = (): boolean => bridge.hasTag('visible') && (\n bridge.hasTag('drawer')\n || responsiveMode === 'mobile'\n || (bridge.hasTag('transitioning') && context().transition.presentation === 'drawer')\n );\n const isModalDrawer = (): boolean => isDrawer() && responsiveMode === 'mobile';\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isMobileDrawerClosing = (): boolean => responsiveMode === 'mobile' && bridge.matches('closing');\n\n const storageKey = (): string => `trellis-ui-sidebar:${root().id || currentProps().id}:stashed`;\n const storedStashed = (props: SidebarProps): boolean | null => {\n if (!props.persist) return null;\n try {\n const value = localStorage.getItem(`trellis-ui-sidebar:${root().id || props.id}:stashed`);\n return value === null ? null : value === 'true';\n } catch { return null; }\n };\n const persist = (): void => {\n const props = currentProps();\n if (!props.persist || props.placement === 'top') return;\n try { localStorage.setItem(storageKey(), context().layout.desktopStashed ? 'true' : 'false'); } catch { /* storage is optional */ }\n };\n\n const restoreFocus = (): void => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !root().contains(active)) return;\n const fallback = activeTrigger ?? Array.from(document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle]'))\n .find((el) => !root().contains(el) && (!el.dataset.target || el.dataset.target === root().id));\n if (fallback && document.contains(fallback)) fallback.focus({preventScroll: true});\n else active.blur();\n };\n\n const syncToggles = (): void => {\n const expanded = isExpanded();\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]').forEach((el) => {\n if (el.dataset.target && el.dataset.target !== root().id) return;\n if (!el.matches('[data-ui-sidebar-edge]')) el.dataset.state = expanded ? 'open' : 'closed';\n if (el.matches('[data-ui-sidebar-toggle], [data-ui-sidebar-edge]')) {\n el.setAttribute('aria-controls', root().id);\n el.setAttribute('aria-expanded', String(expanded));\n }\n });\n };\n\n const sync = ({reflectControlled = true}: {reflectControlled?: boolean} = {}): void => {\n const props = currentProps();\n const visible = bridge.hasTag('visible');\n const expanded = isExpanded();\n const stashed = context().layout.desktopStashed;\n const drawer = isDrawer();\n const el = root();\n if (reflectControlled) {\n if (responsiveMode === 'mobile') {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'open', value: expanded});\n } else {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'stashed', value: stashed});\n }\n }\n el.dataset.state = expanded ? 'open' : 'closed';\n el.dataset.mobileState = responsiveMode === 'mobile' && (expanded || isMobileDrawerClosing()) ? 'open' : 'closed';\n el.dataset.desktopState = stashed ? 'stashed' : 'expanded';\n el.dataset.drawerState = drawer ? 'open' : 'closed';\n el.dataset.responsiveMode = responsiveMode;\n el.dataset.placement = props.placement;\n el.dataset.side = props.side;\n el.hidden = !visible && !(responsiveMode === 'desktop' && props.placement === 'top');\n el.toggleAttribute('inert', !expanded);\n if (expanded) el.removeAttribute('aria-hidden'); else el.setAttribute('aria-hidden', 'true');\n const resizeDisabled = !props.resizable || responsiveMode !== 'desktop' || drawer;\n el.toggleAttribute('data-resize-disabled', resizeDisabled);\n const resizeHandle = el.querySelector<HTMLElement>('[data-ui-sidebar-resize-handle]');\n resizeHandle?.toggleAttribute('data-disabled', resizeDisabled);\n resizeHandle?.setAttribute('aria-disabled', String(resizeDisabled));\n el.style.setProperty('--ui-sidebar-width', context().layout.width);\n if (context().layout.height) el.style.setProperty('--ui-sidebar-height', context().layout.height);\n\n const app = appEl();\n if (app) {\n app.style.setProperty('--ui-app-sidebar-width', context().layout.width);\n if (context().layout.height) app.style.setProperty('--ui-app-sidebar-height', context().layout.height);\n app.dataset.sidebarState = stashed ? 'stashed' : 'expanded';\n app.dataset.sidebarSide = props.side;\n if (!holdingLayout && !bridge.hasTag('transitioning')) app.style.gridTemplateColumns = '';\n }\n const backdrop = backdropEl();\n if (backdrop) {\n const modalDrawer = isModalDrawer();\n backdrop.hidden = !modalDrawer;\n backdrop.dataset.state = modalDrawer ? 'open' : 'closed';\n }\n if (!drawer && !bridge.hasTag('transitioning')) {\n replaceMotion(el);\n el.style.opacity = '';\n el.style.transform = '';\n if (backdrop) {\n replaceMotion(backdrop);\n backdrop.style.opacity = '';\n }\n }\n const modalDrawer = isModalDrawer();\n if (modalDrawer && !hasScrollLock) { lockDocumentScroll(); hasScrollLock = true; }\n if (!modalDrawer && hasScrollLock) { unlockDocumentScroll(); hasScrollLock = false; }\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-edge]').forEach((edge) => {\n if (edge.dataset.target && edge.dataset.target !== root().id) return;\n const ownsEdgeReveal = drawer && activeTrigger === edge;\n const show = props.edgeReveal && responsiveMode === 'desktop' && props.placement === 'side' && stashed && (!drawer || ownsEdgeReveal);\n edge.dataset.state = show ? 'visible' : 'hidden';\n edge.hidden = !show;\n });\n syncToggles();\n persist();\n };\n\n const captureLayout = (stashed: boolean, presentation?: unknown): void => {\n const app = appEl();\n if (presentation !== 'layout' || !app) {\n holdingLayout = false;\n layoutTrackFrom = null;\n layoutTrackTo = null;\n return;\n }\n const columns = getComputedStyle(app).gridTemplateColumns;\n holdingLayout = true;\n const tracks = columns.split(' ').map(Number.parseFloat);\n if (tracks.length !== 3 || tracks.some((track) => !Number.isFinite(track))) {\n layoutTrackFrom = null;\n layoutTrackTo = null;\n return;\n }\n const [first = 0, second = 0] = tracks;\n const width = Number.parseFloat(getComputedStyle(root()).width);\n layoutTrackFrom = currentProps().side === 'right' ? second : first;\n layoutTrackTo = stashed ? 0 : Number.isFinite(width) ? width : root().getBoundingClientRect().width;\n const track = `${layoutTrackFrom}px`;\n app.style.gridTemplateColumns = currentProps().side === 'right'\n ? `minmax(0, 1fr) ${track} min-content`\n : `${track} minmax(0, 1fr) min-content`;\n void app.offsetWidth;\n };\n const prepareOpen = (scope?: {event?: {presentation?: unknown}}): void => {\n captureLayout(false, scope?.event?.presentation ?? (isDrawer() ? 'drawer' : 'layout'));\n root().hidden = false;\n sync();\n if (isModalDrawer()) queueMicrotask(() => { if (isModalDrawer()) focusFirst(root()); });\n };\n const finishOpen = (): void => {\n holdingLayout = false;\n sync();\n dispatch({el: root(), name: 'ui:sidebar-open', detail: {id: root().id}});\n };\n const prepareClose = (scope?: {event?: {presentation?: unknown}}): void => {\n captureLayout(true, scope?.event?.presentation ?? (isDrawer() ? 'drawer' : 'layout'));\n restoreFocus();\n sync();\n };\n const finishClose = (): void => {\n holdingLayout = false;\n sync();\n dispatch({el: root(), name: 'ui:sidebar-close', detail: {id: root().id}});\n activeTrigger = null;\n };\n\n const syncProps = (): void => {\n sync({reflectControlled: false});\n queueMicrotask(() => {\n const next = currentProps();\n if (responsiveMode === 'desktop') {\n if (next.placement === 'top') {\n if (!bridge.hasTag('top')) bridge.send({type: 'MODE', mode: 'desktop', placement: 'top', stashed: false, open: true});\n } else if (next.stashed !== context().layout.desktopStashed) {\n if (next.stashed) stash(); else expand();\n }\n } else if (next.open !== isExpanded()) {\n if (next.open) open(); else close();\n }\n });\n };\n\n const initialProps = (): SidebarProps => decodeProps({el: root(), schema: sidebarSchema});\n const bridge = createAlpineMachine({\n schema: sidebarSchema,\n hooks: sidebarHooks,\n createMachine: ({props}) => createSidebarMachine({\n props,\n mode: responsiveMode,\n desktopStashed: storedStashed(props) ?? props.stashed,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, sync, syncProps},\n }),\n });\n\n const desiredOpenTarget = (): {target: SidebarTarget; presentation: 'drawer' | 'layout'} | null => {\n const props = currentProps();\n if (responsiveMode === 'mobile') return {target: 'mobileOpen', presentation: 'drawer'};\n if (props.placement === 'top') return null;\n return context().layout.desktopStashed\n ? {target: 'desktopDrawer', presentation: 'drawer'}\n : {target: 'desktopExpanded', presentation: 'layout'};\n };\n const open = (event?: Event): void => {\n event?.preventDefault();\n if (event?.currentTarget instanceof HTMLElement) activeTrigger = event.currentTarget;\n const desired = desiredOpenTarget();\n if (desired) bridge.send({type: 'OPEN', ...desired});\n };\n const close = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n bridge.send({type: 'CLOSE', target: responsiveMode === 'mobile' ? 'mobileClosed' : 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const expand = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { open(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'EXPAND', target: 'desktopExpanded', presentation: 'layout'});\n };\n const stash = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { close(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'STASH', target: 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const toggle = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n if (responsiveMode === 'desktop' && currentProps().placement === 'side' && context().layout.desktopStashed && !isDrawer()) { expand(event); return; }\n if (isExpanded()) close(event); else open(event);\n };\n\n const reconcileMode = (width: number): void => {\n const props = currentProps();\n const observed = appEl() ?? root();\n const next: SidebarMode = width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n if (next === responsiveMode) return;\n responsiveMode = next;\n const desktopStashed = context().layout.desktopStashed;\n bridge.send({\n type: 'MODE',\n mode: next,\n placement: props.placement,\n stashed: desktopStashed,\n open: next === 'desktop' && desktopStashed && context().layout.desktopDrawerOpen,\n });\n };\n\n const handleResize = (event: Event): void => {\n const detail = event instanceof CustomEvent ? event.detail as ResizeEvent : null;\n if (!detail || responsiveMode !== 'desktop' || isDrawer()) return;\n const props = currentProps();\n if (props.placement === 'top' && Number.isFinite(detail.height)) {\n bridge.send({type: 'RESIZE', height: `${Math.round(detail.height)}px`});\n root().style.setProperty('--ui-sidebar-height', `${Math.round(detail.height)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-height', `${Math.round(detail.height)}px`);\n } else if (Number.isFinite(detail.width)) {\n bridge.send({type: 'RESIZE', width: `${Math.round(detail.width)}px`});\n root().style.setProperty('--ui-sidebar-width', `${Math.round(detail.width)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-width', `${Math.round(detail.width)}px`);\n }\n };\n\n const closeEdgeReveal = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (responsiveMode !== 'desktop' || !isDrawer()) return;\n if (!activeTrigger?.matches('[data-ui-sidebar-edge]')) return;\n const next = event.relatedTarget;\n if (next instanceof Node && (root().contains(next) || activeTrigger.contains(next))) return;\n close(event);\n };\n\n let component!: TrellisAlpineComponent<SidebarData>;\n component = {\n ...bridge,\n get id() { return root().id || currentProps().id; },\n get isOpen() { return isExpanded(); },\n get isDesktop() { return responsiveMode === 'desktop'; },\n get isStashed() { return context().layout.desktopStashed; },\n get width() { return context().layout.width; },\n get height() { return context().layout.height; },\n init(): void {\n rootEl = this.$el;\n const observed = appEl() ?? root();\n responsiveMode = observed.getBoundingClientRect().width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n bridge.connect(this.$el, this.snapshot);\n root().id ||= currentProps().id;\n controllers.add(component);\n registerDocumentListeners();\n resizeObserver = new ResizeObserver((entries) => reconcileMode(entries[0]?.contentRect.width ?? observed.clientWidth));\n resizeObserver.observe(observed);\n cleanup.push(addDismissableLayer({isEnabled: isDrawer, roots: () => [root()], onDismiss: close}));\n addListener({target: document, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || !isDrawer()) return;\n if (event.key === 'Escape') close(event);\n else if (isModalDrawer()) trapFocus(event, root());\n }, cleanup});\n addListener({target: root(), event: 'ui:resize', handler: handleResize, cleanup});\n addListener({target: root(), event: 'ui:resize-end', handler: handleResize, cleanup});\n addListener({target: root(), event: 'pointerleave', handler: closeEdgeReveal, cleanup});\n root().querySelectorAll<HTMLDetailsElement>('details[data-ui-sidebar-group]').forEach((group) => addListener({target: group, event: 'toggle', handler: () => {\n group.dataset.state = group.open ? 'open' : 'closed';\n dispatch({el: group, name: 'ui:sidebar-group-change', detail: {open: group.open}});\n }, cleanup}));\n sync();\n },\n destroy(): void {\n controllers.delete(component);\n resizeObserver?.disconnect();\n resizeObserver = null;\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n if (hasScrollLock) unlockDocumentScroll();\n hasScrollLock = false;\n bridge.disconnect();\n rootEl = null;\n },\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle {\n if (transition.data.presentation === 'layout') {\n const app = appEl();\n const from = layoutTrackFrom;\n const to = layoutTrackTo;\n layoutTrackFrom = null;\n layoutTrackTo = null;\n if (!app || from === null || to === null) return noopHandle();\n if (shouldReduceMotion()) {\n app.style.gridTemplateColumns = '';\n return noopHandle();\n }\n if (from === to) return noopHandle();\n let unbind = (): void => {};\n return ownMotion(app, () => {\n const value = motionValue(from);\n const apply = (track: number): void => {\n const width = `${track}px`;\n app.style.gridTemplateColumns = currentProps().side === 'right'\n ? `minmax(0, 1fr) ${width} min-content`\n : `${width} minmax(0, 1fr) min-content`;\n };\n unbind = value.on('change', apply);\n apply(from);\n return animate(value, to, {\n duration: speeds.moderate.duration,\n ease: [0.77, 0, 0.175, 1],\n });\n }, new Set(['layout']), transition.signal, () => {\n unbind();\n app.style.gridTemplateColumns = '';\n });\n }\n\n const side = root().dataset.side === 'right' ? 1 : -1;\n const opening = transition.to === 'opening';\n const outside = side === 1\n ? 'translateX(calc(100% + 0.5rem))'\n : 'translateX(calc(-100% - 0.5rem))';\n let plan = createMotionPlan(transition).animate({\n opacity: opening ? [0, 1] : 1,\n transform: opening ? [outside, 'none'] : outside,\n }).speed('moderate');\n const backdrop = backdropEl();\n if (backdrop && transition.data.mode === 'mobile') plan = plan.with(backdrop, {\n opacity: opening ? [0, 1] : 0,\n }).speed('fast');\n return plan.play();\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? initialProps();\n return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.root, props, className: props.class}), {'data-ui-sidebar': ''}]});\n },\n open, close, toggle, stash, expand,\n isExpanded,\n perform(action, trigger) {\n activeTrigger = trigger ?? null;\n ({open, close, toggle, stash, expand})[action]?.();\n },\n syncToggles,\n };\n return component;\n};\n\nconst UiSidebarToggle = (): TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}> => {\n let props = {} as SidebarToggleProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.toggle, props: {}, className: props.class}), {'data-ui-sidebar-toggle': '', ':data-target': () => props.target, ':data-action': () => props.action, '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-toggle', {detail: {id: props.target || 'ui-sidebar', action: props.action, trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}>;\n};\n\nconst UiSidebarEdge = (): TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}> => {\n let props = {} as SidebarEdgeProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.edge, props: {side: this.$el.dataset.side || 'left'}, className: props.class}), {'data-ui-sidebar-edge': '', ':data-target': () => props.target, '@pointerenter': (event: Event) => this.trigger(event), '@pointerleave': (event: Event) => this.leave(event), '@focus': (event: Event) => this.trigger(event), '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-open', {detail: {id: props.target || 'ui-sidebar', action: 'open', trigger: this.$el}}));\n },\n leave(event?: Event) {\n const next = event instanceof PointerEvent ? event.relatedTarget : null;\n const sidebar = document.getElementById(props.target || 'ui-sidebar');\n if (next instanceof Node && sidebar?.contains(next)) return;\n document.dispatchEvent(new CustomEvent('ui:sidebar-close', {detail: {id: props.target || 'ui-sidebar', action: 'close', trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}>;\n};\n\nconst registerSidebar = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiSidebar', UiSidebar)(AlpineInstance);\n defineAlpineData('UiSidebarEdge', UiSidebarEdge)(AlpineInstance);\n defineAlpineData('UiSidebarToggle', UiSidebarToggle)(AlpineInstance);\n};\n\nexport {registerSidebar, UiSidebar, UiSidebarEdge, UiSidebarToggle};\nexport type {SidebarController, SidebarData, SidebarTransition, UiSidebarApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerResizableCapability} from '../../capabilities/resizable';\nimport {registerSidebar as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSidebar = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSidebar};\nexport default registerSidebar;\nexport * from './index';\n"],"mappings":"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"}
1
+ {"version":3,"file":"entry.generated-Dbx3mzKF.js","names":[],"sources":["../../../../../../../../client/src/runtime/shell-breakpoint.ts","../../../../../../../../client/src/components/sidebar/contract.ts","../../../../../../../../client/src/components/sidebar/machine.ts","../../../../../../../../client/src/components/sidebar/styles.ts","../../../../../../../../client/src/components/sidebar/index.ts","../../../../../../../../client/src/components/sidebar/entry.generated.ts"],"sourcesContent":["const shellBreakpointPixels = (reference: HTMLElement): number => {\n const value = getComputedStyle(reference).getPropertyValue('--ui-shell-sidebar-breakpoint');\n const pixels = Number.parseFloat(value);\n return Number.isFinite(pixels) ? pixels : Number.POSITIVE_INFINITY;\n};\n\nexport {shellBreakpointPixels};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ELEVATION_REFERENCES,\n SURFACE_REFERENCES,\n type ElevationReference,\n type SurfaceReference,\n} from '../common';\n\nconst SIDEBAR_SIDES = ['left', 'right'] as const;\nconst SIDEBAR_PLACEMENTS = ['side', 'top'] as const;\nconst SIDEBAR_COLLAPSES = ['none', 'mobile', 'desktop', 'both'] as const;\nconst SIDEBAR_TOGGLE_ACTIONS = ['toggle', 'open', 'close', 'stash', 'expand'] as const;\nconst SIDEBAR_ITEM_AS = ['a', 'button'] as const;\nconst SIDEBAR_ITEM_VARIANTS = ['ghost', 'surface'] as const;\nconst SIDEBAR_ITEM_COLORS = ['neutral', 'accent'] as const;\nconst SIDEBAR_SURFACES = SURFACE_REFERENCES;\nconst SIDEBAR_ELEVATIONS = ELEVATION_REFERENCES;\n\nconst sidebarSchema = {\n id: string.default('ui-sidebar'),\n placement: oneOf(SIDEBAR_PLACEMENTS, 'side'),\n side: oneOf(SIDEBAR_SIDES, 'left'),\n surface: oneOf(SIDEBAR_SURFACES, 'inherit'),\n elevation: oneOf(SIDEBAR_ELEVATIONS, 'none'),\n drawerElevation: oneOf(SIDEBAR_ELEVATIONS, '2'),\n divider: bool.default(true),\n sticky: bool.default(true),\n collapse: oneOf(SIDEBAR_COLLAPSES, 'mobile'),\n open: bool,\n stashed: bool,\n persist: bool.default(true),\n edgeReveal: bool.default(true),\n resizable: bool,\n class: string,\n};\n\nconst sidebarItemSchema = {\n as: oneOf(SIDEBAR_ITEM_AS, 'a'),\n variant: oneOf(SIDEBAR_ITEM_VARIANTS, 'ghost'),\n color: oneOf(SIDEBAR_ITEM_COLORS, 'neutral'),\n href: string,\n current: bool,\n disabled: bool,\n icon: string,\n iconTrailing: string,\n badge: string,\n class: string,\n};\n\nconst sidebarGroupSchema = {\n heading: string,\n expandable: bool,\n expanded: bool.default(true),\n icon: string,\n class: string,\n};\n\nconst sidebarToggleSchema = {\n target: string,\n icon: string.default('side_panel'),\n label: string.default('Toggle sidebar'),\n action: oneOf(SIDEBAR_TOGGLE_ACTIONS, 'toggle'),\n class: string,\n};\n\nconst sidebarPanelSchema = {\n class: string,\n};\n\nconst sidebarNavSchema = {\n label: string,\n labelled: string,\n class: string,\n};\n\ntype SidebarProps = SchemaToProps<typeof sidebarSchema>;\ntype SidebarToggleAction = typeof SIDEBAR_TOGGLE_ACTIONS[number];\ntype SidebarCollapse = typeof SIDEBAR_COLLAPSES[number];\ntype SidebarItemColor = typeof SIDEBAR_ITEM_COLORS[number];\ntype SidebarItemVariant = typeof SIDEBAR_ITEM_VARIANTS[number];\ntype SidebarSide = typeof SIDEBAR_SIDES[number];\ntype SidebarPlacement = typeof SIDEBAR_PLACEMENTS[number];\ntype SidebarSurface = SurfaceReference;\ntype SidebarElevation = ElevationReference;\n\nexport {\n SIDEBAR_COLLAPSES,\n SIDEBAR_ITEM_AS,\n SIDEBAR_ITEM_COLORS,\n SIDEBAR_ITEM_VARIANTS,\n SIDEBAR_ELEVATIONS,\n SIDEBAR_SIDES,\n SIDEBAR_PLACEMENTS,\n SIDEBAR_TOGGLE_ACTIONS,\n SIDEBAR_SURFACES,\n sidebarGroupSchema,\n sidebarItemSchema,\n sidebarNavSchema,\n sidebarPanelSchema,\n sidebarSchema,\n sidebarToggleSchema,\n};\nexport type {\n SidebarCollapse,\n SidebarElevation,\n SidebarItemColor,\n SidebarItemVariant,\n SidebarPlacement,\n SidebarProps,\n SidebarSide,\n SidebarSurface,\n SidebarToggleAction,\n};\n","import {createMachine, type Machine, type MachineEventObject} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SidebarPlacement, SidebarProps} from './contract';\n\ntype SidebarMode = 'mobile' | 'desktop';\ntype SidebarPresentation = 'drawer' | 'layout';\ntype SidebarTarget = 'mobileClosed' | 'mobileOpen' | 'desktopExpanded' | 'desktopStashed' | 'desktopDrawer' | 'desktopTop';\n\ntype SidebarContext = {\n responsive: {mode: SidebarMode};\n layout: {desktopStashed: boolean; desktopDrawerOpen: boolean; width: string; height: string};\n transition: {target: SidebarTarget; presentation: SidebarPresentation};\n};\n\ntype SidebarMachineEffects = {\n prepareOpen(): void;\n finishOpen(): void;\n prepareClose(): void;\n finishClose(): void;\n sync(): void;\n syncProps(): void;\n};\n\ntype CreateSidebarMachineOptions = {\n props: SidebarProps;\n mode: SidebarMode;\n desktopStashed: boolean;\n effects: SidebarMachineEffects;\n};\n\nconst projectTransition = ({context}: {context: Readonly<SidebarContext>}) => ({\n mode: context.responsive.mode,\n presentation: context.transition.presentation,\n width: context.layout.width,\n height: context.layout.height,\n});\n\ntype SidebarTransitionData = ReturnType<typeof projectTransition>;\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: projectTransition,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: projectTransition,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'closing'>);\n\nconst sidebarHooks = [openingHook, closingHook] as const;\n\nconst targetFrom = (event: MachineEventObject, fallback: SidebarTarget): SidebarTarget => (\n typeof event.target === 'string' ? event.target as SidebarTarget : fallback\n);\nconst presentationFrom = (event: MachineEventObject): SidebarPresentation => event.presentation === 'layout' ? 'layout' : 'drawer';\n\nconst createSidebarMachine = ({props, mode, desktopStashed, effects}: CreateSidebarMachineOptions): Machine<SidebarContext, SidebarProps> => {\n const initial: SidebarTarget = mode === 'mobile'\n ? props.open ? 'mobileOpen' : 'mobileClosed'\n : props.placement === 'top' ? 'desktopTop' : desktopStashed ? 'desktopStashed' : 'desktopExpanded';\n\n const beginOpen = {target: 'opening', reduce: 'beginOpen', effects: 'prepareOpen'} as const;\n const beginClose = {target: 'closing', reduce: 'beginClose', effects: 'prepareClose'} as const;\n const syncProps = {reduce: 'replaceProps', effects: 'syncProps'} as const;\n\n return createMachine<SidebarContext, SidebarProps>({\n initial,\n on: {\n MODE: [\n {target: 'desktopTop', guard: 'toTop', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopDrawer', guard: 'toDesktopDrawer', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopStashed', guard: 'toDesktopStashed', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopExpanded', guard: 'toDesktop', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileOpen', guard: 'toMobileOpen', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileClosed', reduce: 'setMode', effects: 'sync'},\n ],\n RESIZE: {reduce: 'resize', effects: 'sync'},\n },\n states: {\n mobileClosed: {tags: ['mobile', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n mobileOpen: {tags: ['mobile', 'visible', 'expanded', 'open'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, PROPS_CHANGED: syncProps}},\n desktopExpanded: {tags: ['desktop', 'visible', 'expanded', 'open', 'layout'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, OPEN: {}, EXPAND: {}, PROPS_CHANGED: syncProps}},\n desktopStashed: {tags: ['desktop', 'stashed', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, TOGGLE: beginOpen, PROPS_CHANGED: syncProps}},\n desktopDrawer: {tags: ['desktop', 'stashed', 'visible', 'expanded', 'open', 'drawer'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n desktopTop: {tags: ['desktop', 'top', 'visible', 'expanded', 'open', 'layout'], on: {PROPS_CHANGED: syncProps}},\n opening: {\n tags: ['visible', 'expanded', 'transitioning'],\n on: {\n OPENING_DONE: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n OPENING_ERROR: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n CLOSE: beginClose,\n STASH: beginClose,\n TOGGLE: beginClose,\n PROPS_CHANGED: syncProps,\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n CLOSING_ERROR: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n OPEN: beginOpen,\n EXPAND: beginOpen,\n TOGGLE: beginOpen,\n PROPS_CHANGED: syncProps,\n },\n },\n },\n }, {\n props,\n context: {\n responsive: {mode},\n layout: {\n desktopStashed,\n desktopDrawerOpen: false,\n width: 'var(--spacing-sidebar-width)',\n height: '',\n },\n transition: {target: initial, presentation: initial === 'desktopExpanded' || initial === 'desktopTop' ? 'layout' : 'drawer'},\n },\n reducers: {\n beginOpen: ({context, event}) => {\n const target = targetFrom(event, 'mobileOpen');\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopDrawer'\n ? true\n : target === 'desktopExpanded' ? false : context.layout.desktopStashed,\n desktopDrawerOpen: target === 'desktopDrawer'\n || (target === 'mobileOpen' && context.layout.desktopStashed),\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n beginClose: ({context, event}) => {\n const target = targetFrom(event, 'mobileClosed');\n const closesDesktopDrawer = target === 'desktopStashed'\n || (target === 'mobileClosed' && context.layout.desktopStashed);\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopStashed' ? true : context.layout.desktopStashed,\n desktopDrawerOpen: closesDesktopDrawer ? false : context.layout.desktopDrawerOpen,\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n setMode: ({context, event}) => ({context: {...context, responsive: {mode: event.mode === 'desktop' ? 'desktop' : 'mobile'}}}),\n replaceProps: ({context, event}) => ({\n props: event.props as SidebarProps,\n context,\n }),\n resize: ({context, event}) => ({context: {\n ...context,\n layout: {\n ...context.layout,\n width: typeof event.width === 'string' ? event.width : context.layout.width,\n height: typeof event.height === 'string' ? event.height : context.layout.height,\n },\n }}),\n },\n guards: {\n toTop: ({event}) => event.mode === 'desktop' && event.placement === 'top',\n toDesktopDrawer: ({event}) => event.mode === 'desktop' && event.stashed === true && event.open === true,\n toDesktopStashed: ({event}) => event.mode === 'desktop' && event.stashed === true,\n toDesktop: ({event}) => event.mode === 'desktop',\n toMobileOpen: ({event}) => event.mode === 'mobile' && event.open === true,\n targetsMobileOpen: ({context}) => context.transition.target === 'mobileOpen',\n targetsMobileClosed: ({context}) => context.transition.target === 'mobileClosed',\n targetsDesktopDrawer: ({context}) => context.transition.target === 'desktopDrawer',\n targetsDesktopTop: ({context}) => context.transition.target === 'desktopTop',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n sync: effects.sync,\n syncProps: effects.syncProps,\n },\n });\n};\n\nexport {createSidebarMachine, sidebarHooks};\nexport type {CreateSidebarMachineOptions, SidebarContext, SidebarMachineEffects, SidebarMode, SidebarPresentation, SidebarTarget};\n","import {defineStyles} from '../../runtime';\nimport {elevationReferenceClasses} from '../common';\n\nconst SIDEBAR_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-resting-elevation');\nconst SIDEBAR_DRAWER_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-drawer-elevation');\n\nconst sidebarStyles = defineStyles({definition: {\n component: 'ui.sidebar',\n parts: {\n root: {\n base: [\n 'fixed inset-y-2 z-dialog flex min-h-0 w-[var(--spacing-sidebar-drawer-width)] flex-col overflow-hidden rounded-overlay-md',\n 'border-separator outline-none',\n 'data-[drawer-state=open]:bg-surface',\n 'data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:z-auto data-[responsive-mode=desktop]:w-[var(--ui-sidebar-width,var(--spacing-sidebar-width))] data-[responsive-mode=desktop]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=closed]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:data-[desktop-state=expanded]:inset-y-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:w-full data-[responsive-mode=desktop]:data-[desktop-state=expanded]:rounded-none',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:z-dialog data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:h-auto',\n '[grid-area:sidebar]',\n 'data-[placement=top]:data-[responsive-mode=desktop]:relative data-[placement=top]:data-[responsive-mode=desktop]:inset-auto data-[placement=top]:data-[responsive-mode=desktop]:z-auto data-[placement=top]:data-[responsive-mode=desktop]:h-[var(--ui-sidebar-height,auto)] data-[placement=top]:data-[responsive-mode=desktop]:w-full data-[placement=top]:data-[responsive-mode=desktop]:max-w-none data-[placement=top]:data-[responsive-mode=desktop]:translate-x-0 data-[placement=top]:data-[responsive-mode=desktop]:flex-row data-[placement=top]:data-[responsive-mode=desktop]:overflow-visible',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:flex-1',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]>[data-ui-scroll-area]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-item]]:w-auto',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:items-center',\n ],\n variants: {\n elevation: SIDEBAR_ELEVATION_CLASSES,\n drawerElevation: SIDEBAR_DRAWER_ELEVATION_CLASSES,\n divider: {\n true: 'data-[placement=side][data-side=left]:border-r-edge-divider data-[placement=side][data-side=right]:border-l-edge-divider data-[placement=top]:border-b-edge-divider',\n false: '',\n },\n side: {\n left: 'left-2 border-r-edge-divider data-[responsive-mode=desktop]:data-[desktop-state=expanded]:left-auto',\n right: 'right-2 border-l-edge-divider data-[mobile-state=closed]:translate-x-full data-[mobile-state=open]:translate-x-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:right-auto',\n },\n sticky: {\n true: 'data-[responsive-mode=desktop]:sticky data-[responsive-mode=desktop]:h-screen',\n false: 'data-[responsive-mode=desktop]:relative data-[responsive-mode=desktop]:h-auto data-[responsive-mode=desktop]:data-[sticky=false]:relative data-[responsive-mode=desktop]:data-[sticky=False]:relative data-[responsive-mode=desktop]:data-[sticky=false]:h-auto data-[responsive-mode=desktop]:data-[sticky=False]:h-auto',\n },\n },\n defaults: {\n elevation: 'none',\n drawerElevation: '2',\n divider: true,\n side: 'left',\n sticky: true,\n },\n },\n header: {\n base: 'flex min-h-control-xlg shrink-0 items-center gap-sidebar-header-gap px-sidebar-header-padding-inline py-sidebar-header-padding-block',\n },\n content: {\n base: [\n 'min-h-0 flex-1 overflow-hidden',\n ],\n },\n contentInner: {\n base: [\n 'grid min-w-0 content-start gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n '[&>[data-ui-separator]]:-mx-sidebar-content-padding-inline [&>[data-ui-separator]]:w-auto',\n ],\n },\n footer: {\n base: 'grid shrink-0 gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n },\n nav: {\n base: 'grid gap-sidebar-content-gap',\n },\n item: {\n base: [\n 'group/sidebar-item flex h-control-md w-full min-w-0 select-none items-center gap-2 rounded-control-md px-2',\n 'border border-transparent text-left text-sm font-medium outline-none',\n 'cursor-default',\n 'data-disabled:pointer-events-none',\n ],\n variants: {\n variant: {\n ghost: '',\n surface: 'data-current:border-transparent data-current:shadow-none',\n },\n color: {\n neutral: '',\n accent: '',\n },\n withActions: {\n true: 'pr-9',\n false: '',\n },\n },\n defaults: {\n variant: 'ghost',\n color: 'neutral',\n withActions: false,\n },\n },\n itemRow: {\n base: 'group/sidebar-item-row relative min-w-0',\n },\n itemIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon',\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n itemLabel: {\n base: 'min-w-0 flex-1',\n },\n itemBadge: {\n base: 'ml-auto shrink-0 rounded-control-sm bg-interaction-hover px-1.5 py-0.5 text-xs text-surface-ink-muted',\n },\n itemActions: {\n base: 'absolute right-1 top-1/2 z-10 flex -translate-y-1/2 items-center gap-1',\n },\n group: {\n base: 'relative grid gap-sidebar-content-gap',\n },\n groupSummary: {\n base: [\n 'block h-control-md cursor-default select-none list-none rounded-control-md text-xs font-medium text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n '[&::-webkit-details-marker]:hidden',\n ],\n variants: {\n hasActions: {\n true: '',\n false: '',\n },\n },\n defaults: {\n hasActions: false,\n },\n },\n groupSummaryInner: {\n base: 'flex h-full min-w-0 items-center gap-2 px-2',\n },\n groupHeading: {\n base: 'flex min-h-control-md min-w-0 select-none items-center gap-2 px-2 py-1 cursor-default',\n },\n groupIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon group-open/sidebar-group:rotate-90',\n },\n groupLabel: {\n base: 'min-w-0 flex-1',\n },\n groupHeadingLabel: {\n base: 'min-w-0 flex-1',\n },\n groupActions: {\n base: 'ml-auto flex shrink-0 items-center gap-1',\n },\n groupContent: {\n base: 'grid gap-sidebar-content-gap',\n },\n toggle: {\n base: [\n 'inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-control-md text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n ],\n },\n toggleIcon: {\n base: 'size-icon fill-current text-current',\n },\n edge: {\n base: [\n 'fixed inset-y-0 z-30 hidden w-4 bg-transparent outline-none data-[state=visible]:block',\n 'focus-visible:ui-focus-ring-inset',\n 'data-[state=hidden]:hidden',\n ],\n variants: {\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n resizeHandle: {\n base: [\n 'absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none border-transparent outline-none group-data-[responsive-mode=desktop]/sidebar:block',\n 'hover:border-intent-neutral-edge-hover',\n 'focus-visible:ui-focus-ring-inset',\n 'data-disabled:hidden',\n 'group-data-[placement=top]/sidebar:inset-x-0 group-data-[placement=top]/sidebar:bottom-0 group-data-[placement=top]/sidebar:top-auto group-data-[placement=top]/sidebar:h-3 group-data-[placement=top]/sidebar:w-auto group-data-[placement=top]/sidebar:cursor-row-resize group-data-[placement=top]/sidebar:border-b-edge-divider group-data-[placement=top]/sidebar:border-r-0 group-data-[placement=top]/sidebar:border-l-0',\n ],\n variants: {\n side: {\n left: 'right-0 border-r-edge-divider',\n right: 'left-0 border-l-edge-divider',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n },\n}});\n\nexport {sidebarStyles};\n","import type Alpine from 'alpinejs';\nimport {animate, motionValue} from 'motion';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {decodeProps, type SchemaToProps} from '@client/runtime/codecs';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {type ResizeEvent} from '@client/runtime/drag-and-drop';\nimport {focusFirst, trapFocus} from '@client/runtime/focus-scope';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {lockDocumentScroll, unlockDocumentScroll} from '@client/runtime/scroll-lock';\nimport {shellBreakpointPixels} from '@client/runtime/shell-breakpoint';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {\n createMotionPlan,\n shouldReduceMotion,\n speeds,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {ownMotion} from '@client/motion/owned';\nimport {replaceMotion} from '@client/motion/registry';\nimport {addListener, dispatch, type CleanupStack} from '@client/utils';\nimport {sidebarSchema, sidebarToggleSchema, type SidebarProps, type SidebarToggleAction} from './contract';\nimport {createSidebarMachine, sidebarHooks, type SidebarContext, type SidebarMode, type SidebarTarget} from './machine';\nimport {sidebarStyles} from './styles';\n\ntype SidebarTransitionName = (typeof sidebarHooks)[number]['name'];\ntype SidebarTransition<TName extends SidebarTransitionName = SidebarTransitionName> = TransitionForHook<\n Extract<(typeof sidebarHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype SidebarController = {\n readonly id: string;\n isExpanded(): boolean;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n};\n\ntype SidebarEventDetail = {id?: string; action?: SidebarToggleAction; trigger?: HTMLElement | null};\nconst togglePropsSchema = {target: sidebarToggleSchema.target, action: sidebarToggleSchema.action, class: sidebarToggleSchema.class};\ntype SidebarToggleProps = SchemaToProps<typeof togglePropsSchema>;\ntype SidebarEdgeProps = SidebarToggleProps;\n\n/** Public Alpine API for `ui.sidebar`. @public */\ninterface UiSidebarApi {\n /** Sidebar id used by external controls. */\n readonly id: string;\n /** Whether the sidebar is fully open or currently opening. */\n readonly isOpen: boolean;\n /** Whether the observed shell is at or above the theme-generated shell breakpoint. */\n readonly isDesktop: boolean;\n /** Whether side placement is persistently stashed on desktop. */\n readonly isStashed: boolean;\n /** Current side-placement track width. */\n readonly width: string;\n /** Current top-placement track height. */\n readonly height: string;\n /** Opens the responsive drawer or temporarily reveals a stashed desktop sidebar. */\n open(event?: Event): void;\n /** Closes the responsive drawer or stashes an expanded desktop sidebar. */\n close(event?: Event): void;\n /** Reverses the current visibility intent, including an in-flight transition. */\n toggle(event?: Event): void;\n /** Permanently removes side placement from the desktop layout track. */\n stash(event?: Event): void;\n /** Permanently restores side placement to the desktop layout track. */\n expand(event?: Event): void;\n}\n\ntype SidebarData = AlpineMachine<SidebarContext, SidebarProps, typeof sidebarHooks> & UiSidebarApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n isExpanded(): boolean;\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle;\n};\n\ntype SidebarMotionTransition = MotionTransitionSubject & Readonly<{\n data: {mode: SidebarMode; presentation: 'drawer' | 'layout'};\n to: string;\n}>;\n\nconst controllers = new Set<SidebarController>();\n\nconst eventDetail = (event: Event): SidebarEventDetail => event instanceof CustomEvent && event.detail && typeof event.detail === 'object'\n ? event.detail as SidebarEventDetail\n : {};\n\nconst registerDocumentListeners = (() => {\n let registered = false;\n return (): void => {\n if (registered || typeof document === 'undefined') return;\n const route = (action: SidebarToggleAction) => (event: Event): void => {\n if (event.target instanceof Element && event.target.hasAttribute('data-ui-sidebar')) return;\n const detail = eventDetail(event);\n controllers.forEach((controller) => {\n if (!detail.id || detail.id === controller.id) controller.perform(detail.action ?? action, detail.trigger);\n });\n };\n document.addEventListener('ui:sidebar-open', route('open'));\n document.addEventListener('ui:sidebar-close', route('close'));\n document.addEventListener('ui:sidebar-toggle', route('toggle'));\n registered = true;\n };\n})();\n\nconst UiSidebar = (): TrellisAlpineComponent<SidebarData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupStack = [];\n let resizeObserver: ResizeObserver | null = null;\n let responsiveMode: SidebarMode = 'mobile';\n let activeTrigger: HTMLElement | null = null;\n let hasScrollLock = false;\n let layoutTrackFrom: number | null = null;\n let layoutTrackTo: number | null = null;\n let holdingLayout = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Sidebar has not been initialized.');\n return rootEl;\n };\n const appEl = (): HTMLElement | null => root().closest<HTMLElement>('[data-ui-app]');\n const backdropEl = (): HTMLElement | null => appEl()?.querySelector<HTMLElement>('[data-ui-app-backdrop]') ?? null;\n const currentProps = (): Readonly<SidebarProps> => bridge.getSnapshot().props;\n const context = (): Readonly<SidebarContext> => bridge.getSnapshot().context;\n const target = (): SidebarTarget => context().transition.target;\n const isDrawer = (): boolean => bridge.hasTag('visible') && (\n bridge.hasTag('drawer')\n || responsiveMode === 'mobile'\n || (bridge.hasTag('transitioning') && context().transition.presentation === 'drawer')\n );\n const isModalDrawer = (): boolean => isDrawer() && responsiveMode === 'mobile';\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isMobileDrawerClosing = (): boolean => responsiveMode === 'mobile' && bridge.matches('closing');\n\n const storageKey = (): string => `trellis-ui-sidebar:${root().id || currentProps().id}:stashed`;\n const storedStashed = (props: SidebarProps): boolean | null => {\n if (!props.persist) return null;\n try {\n const value = localStorage.getItem(`trellis-ui-sidebar:${root().id || props.id}:stashed`);\n return value === null ? null : value === 'true';\n } catch { return null; }\n };\n const persist = (): void => {\n const props = currentProps();\n if (!props.persist || props.placement === 'top') return;\n try { localStorage.setItem(storageKey(), context().layout.desktopStashed ? 'true' : 'false'); } catch { /* storage is optional */ }\n };\n\n const restoreFocus = (): void => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !root().contains(active)) return;\n const fallback = activeTrigger ?? Array.from(document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle]'))\n .find((el) => !root().contains(el) && (!el.dataset.target || el.dataset.target === root().id));\n if (fallback && document.contains(fallback)) fallback.focus({preventScroll: true});\n else active.blur();\n };\n\n const syncToggles = (): void => {\n const expanded = isExpanded();\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]').forEach((el) => {\n if (el.dataset.target && el.dataset.target !== root().id) return;\n if (!el.matches('[data-ui-sidebar-edge]')) el.dataset.state = expanded ? 'open' : 'closed';\n if (el.matches('[data-ui-sidebar-toggle], [data-ui-sidebar-edge]')) {\n el.setAttribute('aria-controls', root().id);\n el.setAttribute('aria-expanded', String(expanded));\n }\n });\n };\n\n const sync = ({reflectControlled = true}: {reflectControlled?: boolean} = {}): void => {\n const props = currentProps();\n const visible = bridge.hasTag('visible');\n const expanded = isExpanded();\n const stashed = context().layout.desktopStashed;\n const drawer = isDrawer();\n const el = root();\n if (reflectControlled) {\n if (responsiveMode === 'mobile') {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'open', value: expanded});\n } else {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'stashed', value: stashed});\n }\n }\n el.dataset.state = expanded ? 'open' : 'closed';\n el.dataset.mobileState = responsiveMode === 'mobile' && (expanded || isMobileDrawerClosing()) ? 'open' : 'closed';\n el.dataset.desktopState = stashed ? 'stashed' : 'expanded';\n el.dataset.drawerState = drawer ? 'open' : 'closed';\n el.dataset.responsiveMode = responsiveMode;\n el.dataset.placement = props.placement;\n el.dataset.side = props.side;\n el.hidden = !visible && !(responsiveMode === 'desktop' && props.placement === 'top');\n el.toggleAttribute('inert', !expanded);\n if (expanded) el.removeAttribute('aria-hidden'); else el.setAttribute('aria-hidden', 'true');\n const resizeDisabled = !props.resizable || responsiveMode !== 'desktop' || drawer;\n el.toggleAttribute('data-resize-disabled', resizeDisabled);\n const resizeHandle = el.querySelector<HTMLElement>('[data-ui-sidebar-resize-handle]');\n resizeHandle?.toggleAttribute('data-disabled', resizeDisabled);\n resizeHandle?.setAttribute('aria-disabled', String(resizeDisabled));\n el.style.setProperty('--ui-sidebar-width', context().layout.width);\n if (context().layout.height) el.style.setProperty('--ui-sidebar-height', context().layout.height);\n\n const app = appEl();\n if (app) {\n app.style.setProperty('--ui-app-sidebar-width', context().layout.width);\n if (context().layout.height) app.style.setProperty('--ui-app-sidebar-height', context().layout.height);\n app.dataset.sidebarState = stashed ? 'stashed' : 'expanded';\n app.dataset.sidebarSide = props.side;\n if (!holdingLayout && !bridge.hasTag('transitioning')) app.style.gridTemplateColumns = '';\n }\n const backdrop = backdropEl();\n if (backdrop) {\n const modalDrawer = isModalDrawer();\n backdrop.hidden = !modalDrawer;\n backdrop.dataset.state = modalDrawer ? 'open' : 'closed';\n }\n if (!drawer && !bridge.hasTag('transitioning')) {\n replaceMotion(el);\n el.style.opacity = '';\n el.style.transform = '';\n if (backdrop) {\n replaceMotion(backdrop);\n backdrop.style.opacity = '';\n }\n }\n const modalDrawer = isModalDrawer();\n if (modalDrawer && !hasScrollLock) { lockDocumentScroll(); hasScrollLock = true; }\n if (!modalDrawer && hasScrollLock) { unlockDocumentScroll(); hasScrollLock = false; }\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-edge]').forEach((edge) => {\n if (edge.dataset.target && edge.dataset.target !== root().id) return;\n const ownsEdgeReveal = drawer && activeTrigger === edge;\n const show = props.edgeReveal && responsiveMode === 'desktop' && props.placement === 'side' && stashed && (!drawer || ownsEdgeReveal);\n edge.dataset.state = show ? 'visible' : 'hidden';\n edge.hidden = !show;\n });\n syncToggles();\n persist();\n };\n\n const captureLayout = (stashed: boolean, presentation?: unknown): void => {\n const app = appEl();\n if (presentation !== 'layout' || !app) {\n holdingLayout = false;\n layoutTrackFrom = null;\n layoutTrackTo = null;\n return;\n }\n const columns = getComputedStyle(app).gridTemplateColumns;\n holdingLayout = true;\n const tracks = columns.split(' ').map(Number.parseFloat);\n if (tracks.length !== 3 || tracks.some((track) => !Number.isFinite(track))) {\n layoutTrackFrom = null;\n layoutTrackTo = null;\n return;\n }\n const [first = 0, second = 0] = tracks;\n const width = Number.parseFloat(getComputedStyle(root()).width);\n layoutTrackFrom = currentProps().side === 'right' ? second : first;\n layoutTrackTo = stashed ? 0 : Number.isFinite(width) ? width : root().getBoundingClientRect().width;\n const track = `${layoutTrackFrom}px`;\n app.style.gridTemplateColumns = currentProps().side === 'right'\n ? `minmax(0, 1fr) ${track} min-content`\n : `${track} minmax(0, 1fr) min-content`;\n void app.offsetWidth;\n };\n const prepareOpen = (scope?: {event?: {presentation?: unknown}}): void => {\n captureLayout(false, scope?.event?.presentation ?? (isDrawer() ? 'drawer' : 'layout'));\n root().hidden = false;\n sync();\n if (isModalDrawer()) queueMicrotask(() => { if (isModalDrawer()) focusFirst(root()); });\n };\n const finishOpen = (): void => {\n holdingLayout = false;\n sync();\n dispatch({el: root(), name: 'ui:sidebar-open', detail: {id: root().id}});\n };\n const prepareClose = (scope?: {event?: {presentation?: unknown}}): void => {\n captureLayout(true, scope?.event?.presentation ?? (isDrawer() ? 'drawer' : 'layout'));\n restoreFocus();\n sync();\n };\n const finishClose = (): void => {\n holdingLayout = false;\n sync();\n dispatch({el: root(), name: 'ui:sidebar-close', detail: {id: root().id}});\n activeTrigger = null;\n };\n\n const syncProps = (): void => {\n sync({reflectControlled: false});\n queueMicrotask(() => {\n const next = currentProps();\n if (responsiveMode === 'desktop') {\n if (next.placement === 'top') {\n if (!bridge.hasTag('top')) bridge.send({type: 'MODE', mode: 'desktop', placement: 'top', stashed: false, open: true});\n } else if (next.stashed !== context().layout.desktopStashed) {\n if (next.stashed) stash(); else expand();\n }\n } else if (next.open !== isExpanded()) {\n if (next.open) open(); else close();\n }\n });\n };\n\n const initialProps = (): SidebarProps => decodeProps({el: root(), schema: sidebarSchema});\n const bridge = createAlpineMachine({\n schema: sidebarSchema,\n hooks: sidebarHooks,\n createMachine: ({props}) => createSidebarMachine({\n props,\n mode: responsiveMode,\n desktopStashed: storedStashed(props) ?? props.stashed,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, sync, syncProps},\n }),\n });\n\n const desiredOpenTarget = (): {target: SidebarTarget; presentation: 'drawer' | 'layout'} | null => {\n const props = currentProps();\n if (responsiveMode === 'mobile') return {target: 'mobileOpen', presentation: 'drawer'};\n if (props.placement === 'top') return null;\n return context().layout.desktopStashed\n ? {target: 'desktopDrawer', presentation: 'drawer'}\n : {target: 'desktopExpanded', presentation: 'layout'};\n };\n const open = (event?: Event): void => {\n event?.preventDefault();\n if (event?.currentTarget instanceof HTMLElement) activeTrigger = event.currentTarget;\n const desired = desiredOpenTarget();\n if (desired) bridge.send({type: 'OPEN', ...desired});\n };\n const close = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n bridge.send({type: 'CLOSE', target: responsiveMode === 'mobile' ? 'mobileClosed' : 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const expand = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { open(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'EXPAND', target: 'desktopExpanded', presentation: 'layout'});\n };\n const stash = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { close(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'STASH', target: 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const toggle = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n if (responsiveMode === 'desktop' && currentProps().placement === 'side' && context().layout.desktopStashed && !isDrawer()) { expand(event); return; }\n if (isExpanded()) close(event); else open(event);\n };\n\n const reconcileMode = (width: number): void => {\n const props = currentProps();\n const observed = appEl() ?? root();\n const next: SidebarMode = width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n if (next === responsiveMode) return;\n responsiveMode = next;\n const desktopStashed = context().layout.desktopStashed;\n bridge.send({\n type: 'MODE',\n mode: next,\n placement: props.placement,\n stashed: desktopStashed,\n open: next === 'desktop' && desktopStashed && context().layout.desktopDrawerOpen,\n });\n };\n\n const handleResize = (event: Event): void => {\n const detail = event instanceof CustomEvent ? event.detail as ResizeEvent : null;\n if (!detail || responsiveMode !== 'desktop' || isDrawer()) return;\n const props = currentProps();\n if (props.placement === 'top' && Number.isFinite(detail.height)) {\n bridge.send({type: 'RESIZE', height: `${Math.round(detail.height)}px`});\n root().style.setProperty('--ui-sidebar-height', `${Math.round(detail.height)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-height', `${Math.round(detail.height)}px`);\n } else if (Number.isFinite(detail.width)) {\n bridge.send({type: 'RESIZE', width: `${Math.round(detail.width)}px`});\n root().style.setProperty('--ui-sidebar-width', `${Math.round(detail.width)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-width', `${Math.round(detail.width)}px`);\n }\n };\n\n const closeEdgeReveal = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (responsiveMode !== 'desktop' || !isDrawer()) return;\n if (!activeTrigger?.matches('[data-ui-sidebar-edge]')) return;\n const next = event.relatedTarget;\n if (next instanceof Node && (root().contains(next) || activeTrigger.contains(next))) return;\n close(event);\n };\n\n let component!: TrellisAlpineComponent<SidebarData>;\n component = {\n ...bridge,\n get id() { return root().id || currentProps().id; },\n get isOpen() { return isExpanded(); },\n get isDesktop() { return responsiveMode === 'desktop'; },\n get isStashed() { return context().layout.desktopStashed; },\n get width() { return context().layout.width; },\n get height() { return context().layout.height; },\n init(): void {\n rootEl = this.$el;\n const observed = appEl() ?? root();\n responsiveMode = observed.getBoundingClientRect().width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n bridge.connect(this.$el, this.snapshot);\n root().id ||= currentProps().id;\n controllers.add(component);\n registerDocumentListeners();\n resizeObserver = new ResizeObserver((entries) => reconcileMode(entries[0]?.contentRect.width ?? observed.clientWidth));\n resizeObserver.observe(observed);\n cleanup.push(addDismissableLayer({isEnabled: isDrawer, roots: () => [root()], onDismiss: close}));\n addListener({target: document, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || !isDrawer()) return;\n if (event.key === 'Escape') close(event);\n else if (isModalDrawer()) trapFocus(event, root());\n }, cleanup});\n addListener({target: root(), event: 'ui:resize', handler: handleResize, cleanup});\n addListener({target: root(), event: 'ui:resize-end', handler: handleResize, cleanup});\n addListener({target: root(), event: 'pointerleave', handler: closeEdgeReveal, cleanup});\n root().querySelectorAll<HTMLDetailsElement>('details[data-ui-sidebar-group]').forEach((group) => addListener({target: group, event: 'toggle', handler: () => {\n group.dataset.state = group.open ? 'open' : 'closed';\n dispatch({el: group, name: 'ui:sidebar-group-change', detail: {open: group.open}});\n }, cleanup}));\n sync();\n },\n destroy(): void {\n controllers.delete(component);\n resizeObserver?.disconnect();\n resizeObserver = null;\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n if (hasScrollLock) unlockDocumentScroll();\n hasScrollLock = false;\n bridge.disconnect();\n rootEl = null;\n },\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle {\n if (transition.data.presentation === 'layout') {\n const app = appEl();\n const from = layoutTrackFrom;\n const to = layoutTrackTo;\n layoutTrackFrom = null;\n layoutTrackTo = null;\n if (!app || from === null || to === null) return noopHandle();\n if (shouldReduceMotion()) {\n app.style.gridTemplateColumns = '';\n return noopHandle();\n }\n if (from === to) return noopHandle();\n let unbind = (): void => {};\n return ownMotion(app, () => {\n const value = motionValue(from);\n const apply = (track: number): void => {\n const width = `${track}px`;\n app.style.gridTemplateColumns = currentProps().side === 'right'\n ? `minmax(0, 1fr) ${width} min-content`\n : `${width} minmax(0, 1fr) min-content`;\n };\n unbind = value.on('change', apply);\n apply(from);\n return animate(value, to, {\n duration: speeds.moderate.duration,\n ease: [0.77, 0, 0.175, 1],\n });\n }, new Set(['layout']), transition.signal, () => {\n unbind();\n app.style.gridTemplateColumns = '';\n });\n }\n\n const side = root().dataset.side === 'right' ? 1 : -1;\n const opening = transition.to === 'opening';\n const outside = side === 1\n ? 'translateX(calc(100% + 0.5rem))'\n : 'translateX(calc(-100% - 0.5rem))';\n let plan = createMotionPlan(transition).animate({\n opacity: opening ? [0, 1] : 1,\n transform: opening ? [outside, 'none'] : outside,\n }).speed('moderate');\n const backdrop = backdropEl();\n if (backdrop && transition.data.mode === 'mobile') plan = plan.with(backdrop, {\n opacity: opening ? [0, 1] : 0,\n }).speed('fast');\n return plan.play();\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? initialProps();\n return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.root, props, className: props.class}), {'data-ui-sidebar': ''}]});\n },\n open, close, toggle, stash, expand,\n isExpanded,\n perform(action, trigger) {\n activeTrigger = trigger ?? null;\n ({open, close, toggle, stash, expand})[action]?.();\n },\n syncToggles,\n };\n return component;\n};\n\nconst UiSidebarToggle = (): TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}> => {\n let props = {} as SidebarToggleProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.toggle, props: {}, className: props.class}), {'data-ui-sidebar-toggle': '', ':data-target': () => props.target, ':data-action': () => props.action, '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-toggle', {detail: {id: props.target || 'ui-sidebar', action: props.action, trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}>;\n};\n\nconst UiSidebarEdge = (): TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}> => {\n let props = {} as SidebarEdgeProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.edge, props: {side: this.$el.dataset.side || 'left'}, className: props.class}), {'data-ui-sidebar-edge': '', ':data-target': () => props.target, '@pointerenter': (event: Event) => this.trigger(event), '@pointerleave': (event: Event) => this.leave(event), '@focus': (event: Event) => this.trigger(event), '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-open', {detail: {id: props.target || 'ui-sidebar', action: 'open', trigger: this.$el}}));\n },\n leave(event?: Event) {\n const next = event instanceof PointerEvent ? event.relatedTarget : null;\n const sidebar = document.getElementById(props.target || 'ui-sidebar');\n if (next instanceof Node && sidebar?.contains(next)) return;\n document.dispatchEvent(new CustomEvent('ui:sidebar-close', {detail: {id: props.target || 'ui-sidebar', action: 'close', trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}>;\n};\n\nconst registerSidebar = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiSidebar', UiSidebar)(AlpineInstance);\n defineAlpineData('UiSidebarEdge', UiSidebarEdge)(AlpineInstance);\n defineAlpineData('UiSidebarToggle', UiSidebarToggle)(AlpineInstance);\n};\n\nexport {registerSidebar, UiSidebar, UiSidebarEdge, UiSidebarToggle};\nexport type {SidebarController, SidebarData, SidebarTransition, UiSidebarApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerResizableCapability} from '../../capabilities/resizable';\nimport {registerSidebar as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSidebar = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSidebar};\nexport default registerSidebar;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./capability-motion-CHT-6DKB.js";import{c as t,f as n,l as r,n as i,u as a}from"./codecs-Cb1ns_47.js";import{n as o,r as s}from"./dom-qAeVl7dc.js";import{i as c,t as l}from"./alpine-machine-BS13dbK4.js";import{t as u}from"./alpine-data-CytyCyfk.js";import{n as d}from"./anchored-popover-BXEMsLrA.js";import{t as f}from"./collection-navigation-CtNDGKcQ.js";import{n as p,t as m}from"./styles-TfvwVPGw.js";import{t as h}from"./merge-bindings-C8ewA_FD.js";import{t as g}from"./machine-Dqut4h89.js";import{t as _}from"./dismissable-layer-BROE-Ln2.js";import{S as v,T as y,b,t as x,w as S}from"./common-BOd_thC-.js";import{t as C}from"./controlled-open-Hy4-OT-6.js";var w=m({definition:{component:`ui.menu`,parts:{menu:{base:[S,`auto-rows-min content-start min-w-48 gap-1 overflow-hidden rounded-overlay-sm p-popover-padding`]},item:{base:[v],variants:{variant:{default:``,subtle:``,filled:``,ghost:``},color:{neutral:``,accent:``,success:``,warning:``,danger:``}},defaults:{variant:`default`,color:`neutral`}},itemLabel:{base:`min-w-0 flex-1`},itemMeta:{base:`ml-auto font-metadata text-metadata [font-weight:var(--font-weight-metadata)] text-current opacity-70`},itemIcon:{base:b,variants:{position:{leading:``,trailing:`ml-auto`}},defaults:{position:`leading`}},group:{base:`grid auto-rows-min content-start gap-1`},label:{base:`px-menu-item-padding-inline py-1 font-label text-label [font-weight:var(--font-weight-label)]`},separatorRoot:{variants:{orientation:{vertical:`self-stretch self-center`,horizontal:`-mx-popover my-popover h-[var(--border-width-edge-separator)]`}},defaults:{orientation:`horizontal`}},separatorRule:{variants:{orientation:{vertical:`h-full w-[var(--border-width-edge-separator)] border-0`,horizontal:`h-[var(--border-width-edge-separator)] w-full border-0`}},defaults:{orientation:`horizontal`}}}}}),T=y,E=x,D={side:r(T,`bottom`),align:r(E,`start`),offset:t.clamp(-100,100).default(0),gap:t.clamp(0,50).default(4),open:i,disabled:i,class:n},O=[c({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),c({name:`closing`,state:`closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],k=C(),A=e=>e.focus===`first`?`first`:`menu`,j=e=>e.restoreFocus===!0,M=({props:e,effects:t})=>g({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:k.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`expanded`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:[{target:`closing`,guard:k.shouldClose,reduce:`replaceProps`,effects:[`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:[{target:`closing`,guard:k.shouldClose,reduce:`replaceProps`,effects:[`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:k.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{},props:e,reducers:{replaceProps:k.replace},guards:{canOpen:({props:e})=>!e.disabled},effects:{prepareOpen:({event:e})=>t.prepareOpen(A(e)),finishOpen:t.finishOpen,prepareClose:({event:e})=>t.prepareClose(j(e),e.type!==`PROPS_CHANGED`),finishClose:t.finishClose,syncProps:t.syncProps}}),N=m({definition:{component:`ui.dropdown`,parts:{root:{base:`contents`}}}}),P=()=>{let e=null,t=!1,n=!0,r=``,i=``,c=null,u=null,m=null,g=[],v=()=>{if(!e)throw Error(`Dropdown has not been initialized.`);return e},y=()=>{let e=Array.from(v().children).find(e=>e instanceof HTMLElement&&!e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a trigger element before the menu.`);return e},b=()=>{let e=v().querySelector(`[data-ui-menu]`);if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a menu element.`);return e},x=()=>H.getSnapshot().props,S=()=>H.hasTag(`expanded`),C=()=>H.hasTag(`visible`),T=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-menu-item]`);return t&&b().contains(t)?t:null},E=e=>o({value:e.dataset.disabled})||e.getAttribute(`aria-disabled`)===`true`||e.hasAttribute(`disabled`),k=()=>{if(!u)throw Error(`Dropdown navigation has not been initialized.`);return u},A=()=>{k().allItems().forEach(e=>{e.setAttribute(`role`,`menuitem`),e.tabIndex=-1,E(e)&&e.setAttribute(`aria-disabled`,`true`)})},j=()=>{let e=y(),t=e.getAttribute(`tabindex`);c={ariaDisabled:e.getAttribute(`aria-disabled`),dataDisabled:e.getAttribute(`data-disabled`),disabled:e instanceof HTMLButtonElement?e.disabled:null,tabIndex:t??(e.tabIndex<0?`0`:null)}},P=(e,t,n)=>{n===null?e.removeAttribute(t):e.setAttribute(t,n)},F=()=>{t&&(S()||n)&&a({el:v(),schema:D,key:`open`,value:S()});let e=y(),o=c;if(o){if(e.id||=r,e.setAttribute(`data-ui-dropdown-trigger`,``),e.setAttribute(`aria-expanded`,S()?`true`:`false`),e.setAttribute(`aria-controls`,i),e.setAttribute(`data-state`,S()?`open`:`closed`),x().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e.tabIndex=-1,e instanceof HTMLButtonElement&&(e.disabled=!0);return}P(e,`aria-disabled`,o.ariaDisabled),P(e,`data-disabled`,o.dataDisabled),P(e,`tabindex`,o.tabIndex),e instanceof HTMLButtonElement&&o.disabled!==null&&(e.disabled=o.disabled)}},I=()=>{let e=b();e.id=i,e.setAttribute(`popover`,`manual`),e.setAttribute(`role`,`menu`),e.tabIndex=-1,e.hidden=!C(),e.setAttribute(`data-state`,S()?`open`:`closed`),A()},L=e=>{n=!0,F(),I(),m?.open(),queueMicrotask(()=>{H.hasTag(`interactive`)&&(e===`first`?k().focusFirst():b().focus({preventScroll:!0}))})},R=()=>{F(),I(),s({el:v(),name:`ui:open`})},z=(e,t)=>{n=t,k().clearActiveItem(),F(),I(),e&&y().focus({preventScroll:!0})},B=()=>{m?.close(),F(),I(),n=!0,s({el:v(),name:`ui:close`})},V=()=>{F(),I(),m?.sync()},H=l({schema:D,hooks:O,createMachine:({props:e})=>M({props:e,effects:{prepareOpen:L,finishOpen:R,prepareClose:z,finishClose:B,syncProps:V}})}),U=(e=`menu`,t)=>{if(t?.preventDefault(),!x().disabled){if(H.hasTag(`expanded`)){e===`first`&&k().focusFirst();return}H.send({type:`OPEN`,focus:e})}},W=(e,t)=>{t?.preventDefault(),H.send({type:`CLOSE`,restoreFocus:e})},G=(e,t)=>{if(E(e)){t.preventDefault();return}let n=o({value:b().dataset.keepOpen});(e.dataset.keepOpen===void 0||e.dataset.keepOpen===``?n:o({value:e.dataset.keepOpen}))||W(!1)},K=e=>{let t=T(e.target);if(t){G(t,e);return}let n=e.target;n instanceof Node&&y().contains(n)&&(e.preventDefault(),x().disabled||H.send(`TOGGLE`))},q=e=>{if(!(e instanceof KeyboardEvent))return;if(e.key===`Escape`&&C()){e.preventDefault(),e.stopPropagation(),W(!0);return}let t=e.target;if(t instanceof Node&&y().contains(t)){if(e.key===`ArrowDown`){U(`first`,e);return}let t=y();!(t instanceof HTMLButtonElement)&&!(t instanceof HTMLAnchorElement)&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),x().disabled||H.send(`TOGGLE`));return}b().contains(e.target)&&k().handleKeydown({event:e})},J=e=>{let t=T(e.target);t&&!E(t)&&k().activateItem({el:t})},Y=e=>{let t=T(e.target);t&&!E(t)&&k().activateItem({el:t})},X=e=>{if(`newState`in e){if(e.newState===`open`){C()||H.send(`OPEN`);return}C()&&H.send(`CLOSE`)}},Z;return Z={...H,get isOpen(){return this.snapshot.current?.tags.includes(`expanded`)??!1},init(){e=this.$el,H.connect(this.$el,this.snapshot),r=y().id||this.$id(`dropdown-trigger`),i=b().id||this.$id(`dropdown-menu`),j(),u=f({root:()=>b(),itemSelector:`[data-ui-menu-item]`,isDisabled:E,loop:()=>o({value:b().dataset.loop})}),m=d({reference:y,floating:b,position:()=>x().side,align:()=>x().align,gap:()=>x().gap,offset:()=>x().offset}),g.push(_({isEnabled:()=>H.hasTag(`interactive`),roots:()=>[v(),b()],onDismiss:()=>W(!1)})),F(),I(),t=!0,x().open&&queueMicrotask(()=>H.send(`OPEN`))},destroy(){g.forEach(e=>e()),g=[],H.disconnect(),m?.destroy(),m=null,u=null,c=null,e=null},get root(){let e=this.snapshot.current?.props??x();return h({inputs:[p({part:N.parts.root,props:e,className:e.class}),{"data-ui-dropdown":``,":data-state":()=>H.hasTag(`expanded`)?`open`:`closed`,"@click":K,"@keydown":q,"@focusin":J,"@pointerover":Y}]})},get menu(){let e=b();return h({inputs:[p({part:w.parts.menu,props:{},className:e.dataset.class}),{id:i,popover:`manual`,role:`menu`,tabindex:`-1`,"data-ui-menu":``,":hidden":()=>!H.hasTag(`visible`),":data-state":()=>H.hasTag(`expanded`)?`open`:`closed`,"@toggle":X}]})},open(e){U(`menu`,e)},close(e){W(e instanceof KeyboardEvent,e)},toggle(e){e?.preventDefault(),!x().disabled&&H.send({type:`TOGGLE`,restoreFocus:e instanceof KeyboardEvent})}},Z},F=u(`UiDropdown`,P),I=new WeakSet,L=t=>{I.has(t)||(I.add(t),e(t),F(t))};export{P as n,L as t};
2
- //# sourceMappingURL=entry.generated--6MGmLYe.js.map
1
+ import{t as e}from"./capability-motion-C2a-uH0K.js";import{c as t,f as n,l as r,n as i,u as a}from"./codecs-Cb1ns_47.js";import{n as o,r as s}from"./dom-qAeVl7dc.js";import{i as c,t as l}from"./alpine-machine-BS13dbK4.js";import{t as u}from"./alpine-data-CytyCyfk.js";import{n as d}from"./anchored-popover-BXEMsLrA.js";import{t as f}from"./collection-navigation-CtNDGKcQ.js";import{n as p,t as m}from"./styles-TfvwVPGw.js";import{t as h}from"./merge-bindings-C8ewA_FD.js";import{t as g}from"./machine-Dqut4h89.js";import{t as _}from"./dismissable-layer-BROE-Ln2.js";import{S as v,T as y,b,t as x,w as S}from"./common-BOd_thC-.js";import{t as C}from"./controlled-open-Hy4-OT-6.js";var w=m({definition:{component:`ui.menu`,parts:{menu:{base:[S,`auto-rows-min content-start min-w-48 gap-1 overflow-hidden rounded-overlay-sm p-popover-padding`]},item:{base:[v],variants:{variant:{default:``,subtle:``,filled:``,ghost:``},color:{neutral:``,accent:``,success:``,warning:``,danger:``}},defaults:{variant:`default`,color:`neutral`}},itemLabel:{base:`min-w-0 flex-1`},itemMeta:{base:`ml-auto font-metadata text-metadata [font-weight:var(--font-weight-metadata)] text-current opacity-70`},itemIcon:{base:b,variants:{position:{leading:``,trailing:`ml-auto`}},defaults:{position:`leading`}},group:{base:`grid auto-rows-min content-start gap-1`},label:{base:`px-menu-item-padding-inline py-1 font-label text-label [font-weight:var(--font-weight-label)]`},separatorRoot:{variants:{orientation:{vertical:`self-stretch self-center`,horizontal:`-mx-popover my-popover h-[var(--border-width-edge-separator)]`}},defaults:{orientation:`horizontal`}},separatorRule:{variants:{orientation:{vertical:`h-full w-[var(--border-width-edge-separator)] border-0`,horizontal:`h-[var(--border-width-edge-separator)] w-full border-0`}},defaults:{orientation:`horizontal`}}}}}),T=y,E=x,D={side:r(T,`bottom`),align:r(E,`start`),offset:t.clamp(-100,100).default(0),gap:t.clamp(0,50).default(4),open:i,disabled:i,class:n},O=[c({name:`opening`,state:`opening`,project:()=>({}),onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),c({name:`closing`,state:`closing`,project:()=>({}),onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],k=C(),A=e=>e.focus===`first`?`first`:`menu`,j=e=>e.restoreFocus===!0,M=({props:e,effects:t})=>g({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:k.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`expanded`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:[{target:`closing`,guard:k.shouldClose,reduce:`replaceProps`,effects:[`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:[{target:`closing`,guard:k.shouldClose,reduce:`replaceProps`,effects:[`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:k.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{},props:e,reducers:{replaceProps:k.replace},guards:{canOpen:({props:e})=>!e.disabled},effects:{prepareOpen:({event:e})=>t.prepareOpen(A(e)),finishOpen:t.finishOpen,prepareClose:({event:e})=>t.prepareClose(j(e),e.type!==`PROPS_CHANGED`),finishClose:t.finishClose,syncProps:t.syncProps}}),N=m({definition:{component:`ui.dropdown`,parts:{root:{base:`contents`}}}}),P=()=>{let e=null,t=!1,n=!0,r=``,i=``,c=null,u=null,m=null,g=[],v=()=>{if(!e)throw Error(`Dropdown has not been initialized.`);return e},y=()=>{let e=Array.from(v().children).find(e=>e instanceof HTMLElement&&!e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a trigger element before the menu.`);return e},b=()=>{let e=v().querySelector(`[data-ui-menu]`);if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a menu element.`);return e},x=()=>H.getSnapshot().props,S=()=>H.hasTag(`expanded`),C=()=>H.hasTag(`visible`),T=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-menu-item]`);return t&&b().contains(t)?t:null},E=e=>o({value:e.dataset.disabled})||e.getAttribute(`aria-disabled`)===`true`||e.hasAttribute(`disabled`),k=()=>{if(!u)throw Error(`Dropdown navigation has not been initialized.`);return u},A=()=>{k().allItems().forEach(e=>{e.setAttribute(`role`,`menuitem`),e.tabIndex=-1,E(e)&&e.setAttribute(`aria-disabled`,`true`)})},j=()=>{let e=y(),t=e.getAttribute(`tabindex`);c={ariaDisabled:e.getAttribute(`aria-disabled`),dataDisabled:e.getAttribute(`data-disabled`),disabled:e instanceof HTMLButtonElement?e.disabled:null,tabIndex:t??(e.tabIndex<0?`0`:null)}},P=(e,t,n)=>{n===null?e.removeAttribute(t):e.setAttribute(t,n)},F=()=>{t&&(S()||n)&&a({el:v(),schema:D,key:`open`,value:S()});let e=y(),o=c;if(o){if(e.id||=r,e.setAttribute(`data-ui-dropdown-trigger`,``),e.setAttribute(`aria-expanded`,S()?`true`:`false`),e.setAttribute(`aria-controls`,i),e.setAttribute(`data-state`,S()?`open`:`closed`),x().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e.tabIndex=-1,e instanceof HTMLButtonElement&&(e.disabled=!0);return}P(e,`aria-disabled`,o.ariaDisabled),P(e,`data-disabled`,o.dataDisabled),P(e,`tabindex`,o.tabIndex),e instanceof HTMLButtonElement&&o.disabled!==null&&(e.disabled=o.disabled)}},I=()=>{let e=b();e.id=i,e.setAttribute(`popover`,`manual`),e.setAttribute(`role`,`menu`),e.tabIndex=-1,e.hidden=!C(),e.setAttribute(`data-state`,S()?`open`:`closed`),A()},L=e=>{n=!0,F(),I(),m?.open(),queueMicrotask(()=>{H.hasTag(`interactive`)&&(e===`first`?k().focusFirst():b().focus({preventScroll:!0}))})},R=()=>{F(),I(),s({el:v(),name:`ui:open`})},z=(e,t)=>{n=t,k().clearActiveItem(),F(),I(),e&&y().focus({preventScroll:!0})},B=()=>{m?.close(),F(),I(),n=!0,s({el:v(),name:`ui:close`})},V=()=>{F(),I(),m?.sync()},H=l({schema:D,hooks:O,createMachine:({props:e})=>M({props:e,effects:{prepareOpen:L,finishOpen:R,prepareClose:z,finishClose:B,syncProps:V}})}),U=(e=`menu`,t)=>{if(t?.preventDefault(),!x().disabled){if(H.hasTag(`expanded`)){e===`first`&&k().focusFirst();return}H.send({type:`OPEN`,focus:e})}},W=(e,t)=>{t?.preventDefault(),H.send({type:`CLOSE`,restoreFocus:e})},G=(e,t)=>{if(E(e)){t.preventDefault();return}let n=o({value:b().dataset.keepOpen});(e.dataset.keepOpen===void 0||e.dataset.keepOpen===``?n:o({value:e.dataset.keepOpen}))||W(!1)},K=e=>{let t=T(e.target);if(t){G(t,e);return}let n=e.target;n instanceof Node&&y().contains(n)&&(e.preventDefault(),x().disabled||H.send(`TOGGLE`))},q=e=>{if(!(e instanceof KeyboardEvent))return;if(e.key===`Escape`&&C()){e.preventDefault(),e.stopPropagation(),W(!0);return}let t=e.target;if(t instanceof Node&&y().contains(t)){if(e.key===`ArrowDown`){U(`first`,e);return}let t=y();!(t instanceof HTMLButtonElement)&&!(t instanceof HTMLAnchorElement)&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),x().disabled||H.send(`TOGGLE`));return}b().contains(e.target)&&k().handleKeydown({event:e})},J=e=>{let t=T(e.target);t&&!E(t)&&k().activateItem({el:t})},Y=e=>{let t=T(e.target);t&&!E(t)&&k().activateItem({el:t})},X=e=>{if(`newState`in e){if(e.newState===`open`){C()||H.send(`OPEN`);return}C()&&H.send(`CLOSE`)}},Z;return Z={...H,get isOpen(){return this.snapshot.current?.tags.includes(`expanded`)??!1},init(){e=this.$el,H.connect(this.$el,this.snapshot),r=y().id||this.$id(`dropdown-trigger`),i=b().id||this.$id(`dropdown-menu`),j(),u=f({root:()=>b(),itemSelector:`[data-ui-menu-item]`,isDisabled:E,loop:()=>o({value:b().dataset.loop})}),m=d({reference:y,floating:b,position:()=>x().side,align:()=>x().align,gap:()=>x().gap,offset:()=>x().offset}),g.push(_({isEnabled:()=>H.hasTag(`interactive`),roots:()=>[v(),b()],onDismiss:()=>W(!1)})),F(),I(),t=!0,x().open&&queueMicrotask(()=>H.send(`OPEN`))},destroy(){g.forEach(e=>e()),g=[],H.disconnect(),m?.destroy(),m=null,u=null,c=null,e=null},get root(){let e=this.snapshot.current?.props??x();return h({inputs:[p({part:N.parts.root,props:e,className:e.class}),{"data-ui-dropdown":``,":data-state":()=>H.hasTag(`expanded`)?`open`:`closed`,"@click":K,"@keydown":q,"@focusin":J,"@pointerover":Y}]})},get menu(){let e=b();return h({inputs:[p({part:w.parts.menu,props:{},className:e.dataset.class}),{id:i,popover:`manual`,role:`menu`,tabindex:`-1`,"data-ui-menu":``,":hidden":()=>!H.hasTag(`visible`),":data-state":()=>H.hasTag(`expanded`)?`open`:`closed`,"@toggle":X}]})},open(e){U(`menu`,e)},close(e){W(e instanceof KeyboardEvent,e)},toggle(e){e?.preventDefault(),!x().disabled&&H.send({type:`TOGGLE`,restoreFocus:e instanceof KeyboardEvent})}},Z},F=u(`UiDropdown`,P),I=new WeakSet,L=t=>{I.has(t)||(I.add(t),e(t),F(t))};export{P as n,L as t};
2
+ //# sourceMappingURL=entry.generated-DlB7q_hp.js.map