@mastra/playground-ui 41.0.0-alpha.8 → 41.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +121 -0
- package/dist/{Button-5fzdHlD-.cjs → Button-B5RnKrGb.cjs} +9 -9
- package/dist/Button-B5RnKrGb.cjs.map +1 -0
- package/dist/{Button-kvmCIDtU.js → Button-Dh5CZ6Ir.js} +9 -9
- package/dist/Button-Dh5CZ6Ir.js.map +1 -0
- package/dist/{Notice-BRlBe-l1.cjs → Notice-WhHdy89l.cjs} +2 -2
- package/dist/{Notice-BRlBe-l1.cjs.map → Notice-WhHdy89l.cjs.map} +1 -1
- package/dist/{Notice-BxU85fW-.js → Notice-jmHNt3gS.js} +2 -2
- package/dist/{Notice-BxU85fW-.js.map → Notice-jmHNt3gS.js.map} +1 -1
- package/dist/{SessionExpired-JOcAj_uC.js → SessionExpired-C0PdcdCr.js} +2 -2
- package/dist/{SessionExpired-JOcAj_uC.js.map → SessionExpired-C0PdcdCr.js.map} +1 -1
- package/dist/{SessionExpired-CO21Bf-6.cjs → SessionExpired-DEJgiQcL.cjs} +2 -2
- package/dist/{SessionExpired-CO21Bf-6.cjs.map → SessionExpired-DEJgiQcL.cjs.map} +1 -1
- package/dist/{combobox-DDPl8dxY.cjs → combobox-54Hywnf9.cjs} +2 -2
- package/dist/{combobox-DDPl8dxY.cjs.map → combobox-54Hywnf9.cjs.map} +1 -1
- package/dist/{combobox-BtsIKo3E.js → combobox-CBvs2ZPx.js} +2 -2
- package/dist/{combobox-BtsIKo3E.js.map → combobox-CBvs2ZPx.js.map} +1 -1
- package/dist/components/AlertDialog.cjs.js +1 -1
- package/dist/components/AlertDialog.es.js +1 -1
- package/dist/components/Button.cjs.js +1 -1
- package/dist/components/Button.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +2 -2
- package/dist/components/CodeBlock.es.js +2 -2
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Columns.cjs.js +1 -1
- package/dist/components/Columns.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CopyButton.cjs.js +1 -1
- package/dist/components/CopyButton.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +2 -2
- package/dist/components/DataDetailsPanel.es.js +2 -2
- package/dist/components/DataFilter.cjs.js +1 -1
- package/dist/components/DataFilter.es.js +1 -1
- package/dist/components/DataList.cjs.js +1 -1
- package/dist/components/DataList.es.js +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +2 -2
- package/dist/components/DateTimePicker.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +1 -1
- package/dist/components/Dialog.es.js +1 -1
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
- package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
- package/dist/components/ErrorBoundary.cjs.js +1 -1
- package/dist/components/ErrorBoundary.es.js +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +2 -2
- package/dist/components/FormFieldBlocks.es.js +2 -2
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/MainSidebar.cjs.js +1 -1
- package/dist/components/MainSidebar.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +3 -3
- package/dist/components/PropertyFilter.es.js +4 -4
- package/dist/components/RuleBuilder.cjs.js +2 -2
- package/dist/components/RuleBuilder.es.js +2 -2
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SessionExpired.cjs.js +1 -1
- package/dist/components/SessionExpired.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +3 -3
- package/dist/components/SideDialog.es.js +3 -3
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +2 -2
- package/dist/components/ai/plan.es.js +2 -2
- package/dist/{copy-button-B9UiSp_k.js → copy-button-BuIpvUI7.js} +2 -2
- package/dist/{copy-button-B9UiSp_k.js.map → copy-button-BuIpvUI7.js.map} +1 -1
- package/dist/{copy-button-D7DI90kl.cjs → copy-button-DNR760m7.cjs} +2 -2
- package/dist/{copy-button-D7DI90kl.cjs.map → copy-button-DNR760m7.cjs.map} +1 -1
- package/dist/{data-code-section-BymL4M80.js → data-code-section-Crs5wpnX.js} +5 -5
- package/dist/{data-code-section-BymL4M80.js.map → data-code-section-Crs5wpnX.js.map} +1 -1
- package/dist/{data-code-section-Dhn_-HdD.cjs → data-code-section-DYy_n9I1.cjs} +5 -5
- package/dist/{data-code-section-Dhn_-HdD.cjs.map → data-code-section-DYy_n9I1.cjs.map} +1 -1
- package/dist/{data-list-D3lasVFc.cjs → data-list-BwGRWaNd.cjs} +2 -2
- package/dist/{data-list-D3lasVFc.cjs.map → data-list-BwGRWaNd.cjs.map} +1 -1
- package/dist/{data-list-ca5n2iko.js → data-list-By3xmGvT.js} +2 -2
- package/dist/{data-list-ca5n2iko.js.map → data-list-By3xmGvT.js.map} +1 -1
- package/dist/{data-panel-S97UH5_k.cjs → data-panel-CAbxKoPF.cjs} +4 -4
- package/dist/data-panel-CAbxKoPF.cjs.map +1 -0
- package/dist/{data-panel-CjRyBoxZ.js → data-panel-Otc4qdKL.js} +4 -4
- package/dist/data-panel-Otc4qdKL.js.map +1 -0
- package/dist/{date-time-range-picker-5JfHiJet.cjs → date-time-range-picker-BRQx-ox5.cjs} +3 -3
- package/dist/{date-time-range-picker-5JfHiJet.cjs.map → date-time-range-picker-BRQx-ox5.cjs.map} +1 -1
- package/dist/{date-time-range-picker-CibaB1uJ.js → date-time-range-picker-Cw4Ac_rW.js} +3 -3
- package/dist/{date-time-range-picker-CibaB1uJ.js.map → date-time-range-picker-Cw4Ac_rW.js.map} +1 -1
- package/dist/{dialog-DRUb4qxs.js → dialog-DhjOHEDT.js} +2 -2
- package/dist/{dialog-DRUb4qxs.js.map → dialog-DhjOHEDT.js.map} +1 -1
- package/dist/{dialog-ChTWWV3D.cjs → dialog-XVpF4nQ5.cjs} +2 -2
- package/dist/{dialog-ChTWWV3D.cjs.map → dialog-XVpF4nQ5.cjs.map} +1 -1
- package/dist/domains/logs/components/log-details-view.cjs.js +2 -2
- package/dist/domains/logs/components/log-details-view.es.js +2 -2
- package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +3 -3
- package/dist/domains/traces/components/trace-data-panel-view.es.js +3 -3
- package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
- package/dist/domains/traces/components/traces-error-content.es.js +1 -1
- package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
- package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
- package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -1
- package/dist/domains/traces/components/traces-toolbar.es.js +1 -1
- package/dist/{drawer-L7f8okAK.js → drawer-Djerm1Lo.js} +2 -2
- package/dist/{drawer-L7f8okAK.js.map → drawer-Djerm1Lo.js.map} +1 -1
- package/dist/{drawer-Bi8X9kfl.cjs → drawer-DtEZQBXj.cjs} +2 -2
- package/dist/{drawer-Bi8X9kfl.cjs.map → drawer-DtEZQBXj.cjs.map} +1 -1
- package/dist/ee/signals/components/signal-details-page.cjs.js +3 -3
- package/dist/ee/signals/components/signal-details-page.es.js +3 -3
- package/dist/ee/signals/components/signals-entity-filter.cjs.js +1 -1
- package/dist/ee/signals/components/signals-entity-filter.es.js +1 -1
- package/dist/ee/signals/components/signals-overview-page.cjs.js +1 -1
- package/dist/ee/signals/components/signals-overview-page.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
- package/dist/{input-group-BsfrvWxb.js → input-group-DZnJcY3U.js} +2 -2
- package/dist/{input-group-BsfrvWxb.js.map → input-group-DZnJcY3U.js.map} +1 -1
- package/dist/{input-group-9m8t2boV.cjs → input-group-QaBen5tC.cjs} +2 -2
- package/dist/{input-group-9m8t2boV.cjs.map → input-group-QaBen5tC.cjs.map} +1 -1
- package/dist/{markdown-renderer-ODBuGR65.cjs → markdown-renderer-DRnUrMmF.cjs} +2 -2
- package/dist/{markdown-renderer-ODBuGR65.cjs.map → markdown-renderer-DRnUrMmF.cjs.map} +1 -1
- package/dist/{markdown-renderer-BTM2Vqkn.js → markdown-renderer-ZzJcwfS3.js} +2 -2
- package/dist/{markdown-renderer-BTM2Vqkn.js.map → markdown-renderer-ZzJcwfS3.js.map} +1 -1
- package/dist/{property-filter-applied-BSsIaf1P.cjs → property-filter-applied-BYKTDczo.cjs} +2 -2
- package/dist/{property-filter-applied-BSsIaf1P.cjs.map → property-filter-applied-BYKTDczo.cjs.map} +1 -1
- package/dist/{property-filter-applied-JbZXAmHn.js → property-filter-applied-Ca0UdU5P.js} +2 -2
- package/dist/{property-filter-applied-JbZXAmHn.js.map → property-filter-applied-Ca0UdU5P.js.map} +1 -1
- package/dist/resize/panel-drawer.cjs.js +1 -1
- package/dist/resize/panel-drawer.es.js +1 -1
- package/dist/{search-field-block-8flkI50d.cjs → search-field-block-C4njnmUx.cjs} +2 -2
- package/dist/{search-field-block-8flkI50d.cjs.map → search-field-block-C4njnmUx.cjs.map} +1 -1
- package/dist/{search-field-block-4aXXVtxT.js → search-field-block-e9qthuwY.js} +2 -2
- package/dist/{search-field-block-4aXXVtxT.js.map → search-field-block-e9qthuwY.js.map} +1 -1
- package/dist/{select-ATiWQ2g_.cjs → select-CUMnhTBS.cjs} +2 -2
- package/dist/{select-ATiWQ2g_.cjs.map → select-CUMnhTBS.cjs.map} +1 -1
- package/dist/{select-H-ACsLRO.js → select-LyQqK1ph.js} +2 -2
- package/dist/{select-H-ACsLRO.js.map → select-LyQqK1ph.js.map} +1 -1
- package/dist/{select-field-block-BKL9EVuJ.js → select-field-block-BWuqWh4k.js} +2 -2
- package/dist/{select-field-block-BKL9EVuJ.js.map → select-field-block-BWuqWh4k.js.map} +1 -1
- package/dist/{select-field-block-DyoOt9Eh.cjs → select-field-block-dq1ZmZVb.cjs} +2 -2
- package/dist/{select-field-block-DyoOt9Eh.cjs.map → select-field-block-dq1ZmZVb.cjs.map} +1 -1
- package/dist/{time-picker-Bauf0dJP.js → time-picker-Dg78gQcJ.js} +2 -2
- package/dist/{time-picker-Bauf0dJP.js.map → time-picker-Dg78gQcJ.js.map} +1 -1
- package/dist/{time-picker-D272DZ2I.cjs → time-picker-kYaitcDa.cjs} +2 -2
- package/dist/{time-picker-D272DZ2I.cjs.map → time-picker-kYaitcDa.cjs.map} +1 -1
- package/package.json +9 -9
- package/dist/Button-5fzdHlD-.cjs.map +0 -1
- package/dist/Button-kvmCIDtU.js.map +0 -1
- package/dist/data-panel-CjRyBoxZ.js.map +0 -1
- package/dist/data-panel-S97UH5_k.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-L7f8okAK.js","sources":["../src/ds/components/Drawer/drawer.tsx"],"sourcesContent":["import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\n// Swipe/stack transforms live in drawer.css — unreadable as Tailwind arbitrary values.\nimport './drawer.css';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\nconst drawerBackdropVariants = cva('drawer-backdrop fixed inset-0 z-50', {\n variants: {\n overlay: {\n visible: 'bg-overlay backdrop-blur-xs',\n transparent: 'bg-transparent',\n none: 'hidden',\n },\n },\n defaultVariants: {\n overlay: 'visible',\n },\n});\n\nconst drawerViewportVariants = cva('fixed z-50 flex', {\n variants: {\n side: {\n top: 'items-start justify-center',\n bottom: 'items-end justify-center',\n left: 'items-stretch justify-start',\n right: 'items-stretch justify-end',\n },\n layout: {\n default: 'inset-0',\n floating: 'p-3 sm:p-4',\n floatingOverlay: 'inset-0 p-3 sm:p-4',\n },\n },\n compoundVariants: [\n {\n side: 'right',\n layout: 'floating',\n className: 'inset-y-0 right-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'left',\n layout: 'floating',\n className: 'inset-y-0 left-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'bottom',\n layout: 'floating',\n className: 'inset-x-0 bottom-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n {\n side: 'top',\n layout: 'floating',\n className: 'inset-x-0 top-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n layout: 'default',\n },\n});\n\n// `drawer-popup` hooks into drawer.css for swipe/stack transforms; `::after` dims under nested drawers.\nconst drawerPopupVariants = cva(\n cn(\n 'drawer-popup group/popup relative z-50 box-border flex flex-col overflow-y-auto overscroll-contain outline-none [touch-action:auto] will-change-transform',\n 'border-border1 bg-surface3 text-neutral5 shadow-dialog',\n 'data-[swiping]:select-none',\n \"after:pointer-events-none after:absolute after:inset-0 after:bg-transparent after:transition-[background-color] after:duration-[450ms] after:content-['']\",\n 'data-[nested-drawer-open]:after:bg-black/25',\n ),\n {\n variants: {\n side: {\n bottom: '',\n top: '',\n left: '',\n right: '',\n },\n variant: {\n default: '',\n floating: 'drawer-popup-floating pointer-events-auto rounded-lg border',\n },\n },\n compoundVariants: [\n {\n side: 'bottom',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mb-12 pb-12 rounded-t-xl border-x border-t',\n },\n {\n side: 'top',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mt-12 pt-12 rounded-b-xl border-x border-b',\n },\n {\n side: 'left',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-r-xl border-y border-r',\n },\n {\n side: 'right',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-l-xl border-y border-l',\n },\n {\n side: ['left', 'right'],\n variant: 'floating',\n className:\n 'h-[calc(100dvh-1.5rem)] w-[32rem] max-w-[calc(100vw-1.5rem)] sm:h-[calc(100dvh-2rem)] sm:max-w-[calc(100vw-2rem)]',\n },\n {\n side: ['top', 'bottom'],\n variant: 'floating',\n className:\n 'max-h-[calc(85dvh-1.5rem)] w-[calc(100vw-1.5rem)] sm:max-h-[calc(85dvh-2rem)] sm:w-[calc(100vw-2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n variant: 'default',\n },\n },\n);\n\ntype DrawerBackdropVariantsProps = VariantProps<typeof drawerBackdropVariants>;\ntype DrawerViewportClassVariantsProps = VariantProps<typeof drawerViewportVariants>;\ntype DrawerPopupVariantsProps = VariantProps<typeof drawerPopupVariants>;\nexport type DrawerVariant = NonNullable<DrawerPopupVariantsProps['variant']>;\ntype DrawerViewportLayout = NonNullable<DrawerViewportClassVariantsProps['layout']>;\ntype DrawerViewportVariantsProps = Pick<DrawerViewportClassVariantsProps, 'side'> & {\n variant?: DrawerVariant;\n};\nexport type DrawerOverlay = 'auto' | NonNullable<DrawerBackdropVariantsProps['overlay']>;\n\n// `side` = anchor edge; Base UI's `swipeDirection` = dismissal gesture (bottom sheet swipes `down`).\nconst sideToSwipeDirection: Record<DrawerSide, 'up' | 'down' | 'left' | 'right'> = {\n top: 'up',\n bottom: 'down',\n left: 'left',\n right: 'right',\n};\n\ntype DrawerContextValue = {\n side: DrawerSide;\n variant: DrawerVariant;\n resolvedOverlay: NonNullable<DrawerBackdropVariantsProps['overlay']>;\n};\n\nconst resolveDrawerOverlay = (\n overlay: DrawerOverlay,\n variant: DrawerVariant,\n): NonNullable<DrawerBackdropVariantsProps['overlay']> => {\n if (overlay !== 'auto') {\n return overlay;\n }\n\n return variant === 'floating' ? 'none' : 'visible';\n};\n\nconst DrawerContext = React.createContext<DrawerContextValue>({\n side: 'bottom',\n variant: 'default',\n resolvedOverlay: 'visible',\n});\n\nconst useDrawerContext = () => React.useContext(DrawerContext);\n\nexport const useDrawerSide = () => useDrawerContext().side;\n\nconst resolveDrawerViewportLayout = (\n variant: DrawerVariant,\n overlay: NonNullable<DrawerBackdropVariantsProps['overlay']>,\n): DrawerViewportLayout => {\n if (variant !== 'floating') {\n return 'default';\n }\n\n return overlay === 'none' ? 'floating' : 'floatingOverlay';\n};\n\nexport type DrawerProps<Payload = unknown> = Omit<DrawerPrimitive.Root.Props<Payload>, 'swipeDirection'> & {\n /** Edge the drawer is anchored to. Defaults to `bottom`. */\n side?: DrawerSide;\n /** Visual treatment for the drawer panel. Defaults to `default`. */\n variant?: DrawerVariant;\n /** Backdrop behavior. `auto` renders a visible backdrop for default drawers and no backdrop for floating drawers. */\n overlay?: DrawerOverlay;\n};\n\nfunction Drawer<Payload = unknown>({\n side = 'bottom',\n variant = 'default',\n overlay = 'auto',\n modal,\n disablePointerDismissal,\n children,\n ...props\n}: DrawerProps<Payload>) {\n const resolvedOverlay = resolveDrawerOverlay(overlay, variant);\n const resolvedModal = modal ?? (resolvedOverlay === 'none' ? false : undefined);\n const resolvedDisablePointerDismissal = disablePointerDismissal ?? (resolvedOverlay === 'none' ? true : undefined);\n const contextValue = React.useMemo<DrawerContextValue>(\n () => ({ side, variant, resolvedOverlay }),\n [side, variant, resolvedOverlay],\n );\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <DrawerPrimitive.Root\n swipeDirection={sideToSwipeDirection[side]}\n modal={resolvedModal}\n disablePointerDismissal={resolvedDisablePointerDismissal}\n {...props}\n >\n {children}\n </DrawerPrimitive.Root>\n </DrawerContext.Provider>\n );\n}\nDrawer.displayName = 'Drawer';\n\n// Generic (not `forwardRef`) so `handle` / `payload` stay type-safe on detached triggers.\ntype DrawerTriggerProps<Payload = unknown> = DrawerPrimitive.Trigger.Props<Payload> & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nfunction DrawerTrigger<Payload = unknown>({ asChild, children, ...props }: DrawerTriggerProps<Payload>) {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Trigger {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Trigger>\n );\n}\nDrawerTrigger.displayName = 'DrawerTrigger';\n\ntype DrawerCloseProps = DrawerPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DrawerClose = React.forwardRef<HTMLButtonElement, DrawerCloseProps>(({ asChild, children, ...props }, ref) => {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Close ref={ref} {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Close>\n );\n});\nDrawerClose.displayName = 'DrawerClose';\n\nconst DrawerPortal = DrawerPrimitive.Portal;\nconst DrawerProvider = DrawerPrimitive.Provider;\nconst DrawerIndent = DrawerPrimitive.Indent;\nconst DrawerIndentBackground = DrawerPrimitive.IndentBackground;\nconst DrawerSwipeArea = DrawerPrimitive.SwipeArea;\nconst createDrawerHandle = DrawerPrimitive.createHandle;\n// Inner region where pointer drags select text / scroll instead of swiping the drawer closed.\nconst DrawerInteractive = DrawerPrimitive.Content;\n\ntype DrawerBackdropProps = Omit<DrawerPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n} & DrawerBackdropVariantsProps;\n\n// The `drawer-backdrop` class (drawer.css) fades the overlay with the swipe gesture.\nconst DrawerBackdrop = React.forwardRef<HTMLDivElement, DrawerBackdropProps>(\n ({ className, overlay, ...props }, ref) => {\n const { resolvedOverlay } = useDrawerContext();\n const resolvedBackdropOverlay = overlay ?? resolvedOverlay;\n\n return (\n <DrawerPrimitive.Backdrop\n ref={ref}\n data-slot=\"drawer-backdrop\"\n data-overlay={resolvedBackdropOverlay}\n className={cn(drawerBackdropVariants({ overlay: resolvedBackdropOverlay }), className)}\n {...props}\n />\n );\n },\n);\nDrawerBackdrop.displayName = 'DrawerBackdrop';\n\ntype DrawerViewportProps = Omit<DrawerPrimitive.Viewport.Props, 'className'> & {\n className?: string;\n} & DrawerViewportVariantsProps;\n\n// Keep the viewport pointer-interactive: Base UI wires native drag-to-dismiss to it.\n// Floating drawers without an overlay constrain the viewport so the page behind stays interactive.\n// Floating drawers with an overlay keep a full-screen viewport so overlay-start drags stay native.\nconst DrawerViewport = React.forwardRef<HTMLDivElement, DrawerViewportProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n const layout = resolveDrawerViewportLayout(resolvedVariant, context.resolvedOverlay);\n\n return (\n <DrawerPrimitive.Viewport\n ref={ref}\n data-slot=\"drawer-viewport\"\n data-variant={resolvedVariant}\n className={cn(drawerViewportVariants({ side: resolvedSide, layout }), className)}\n {...props}\n />\n );\n },\n);\nDrawerViewport.displayName = 'DrawerViewport';\n\ntype DrawerPopupProps = Omit<DrawerPrimitive.Popup.Props, 'className'> & {\n className?: string;\n} & DrawerPopupVariantsProps;\n\nconst DrawerPopup = React.forwardRef<HTMLDivElement, DrawerPopupProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n\n return (\n <DrawerPrimitive.Popup\n ref={ref}\n data-slot=\"drawer-popup\"\n data-variant={resolvedVariant}\n className={cn(drawerPopupVariants({ side: resolvedSide, variant: resolvedVariant }), className)}\n {...props}\n />\n );\n },\n);\nDrawerPopup.displayName = 'DrawerPopup';\n\n// Inner-content fade while a nested drawer covers the parent. Off the popup itself so border/shadow stay crisp.\nconst nestedFadeClass = cn(\n 'transition-opacity duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:duration-0',\n 'group-data-[nested-drawer-open]/popup:opacity-0',\n);\n\nconst DrawerHandleBar = () => (\n <div\n aria-hidden\n data-slot=\"drawer-handle\"\n className={cn('mx-auto my-2 h-1 w-12 shrink-0 rounded-full bg-surface5', nestedFadeClass)}\n />\n);\nDrawerHandleBar.displayName = 'DrawerHandleBar';\n\ntype DrawerFloatingSideHandleProps = {\n side: DrawerSide;\n variant: DrawerVariant;\n};\n\nconst DrawerFloatingSideHandle = ({ side, variant }: DrawerFloatingSideHandleProps) => {\n if (variant !== 'floating' || (side !== 'left' && side !== 'right')) {\n return null;\n }\n\n return (\n <div\n aria-hidden\n data-slot=\"drawer-side-handle\"\n className={cn(\n 'absolute top-1/2 z-10 flex h-20 w-5 -translate-y-1/2 touch-none select-none items-center justify-center cursor-ew-resize lg:hidden',\n side === 'right' ? '-left-2' : '-right-2',\n )}\n >\n <div className=\"h-10 w-1 rounded-full bg-surface5/80 shadow-sm\" />\n </div>\n );\n};\nDrawerFloatingSideHandle.displayName = 'DrawerFloatingSideHandle';\n\ntype DrawerContentProps = Omit<DrawerPrimitive.Popup.Props, 'className' | 'children'> & {\n className?: string;\n children?: React.ReactNode;\n /** Shows the built-in top-right close button. Defaults to `true`. */\n showCloseButton?: boolean;\n} & Pick<DrawerPopupVariantsProps, 'variant'>;\n\n// Opinionated bundle: Portal + Backdrop + Viewport + Popup, with handle on top/bottom sheets.\n// Drop to the primitives for non-modal pages, custom portal targets, or chrome outside the popup.\nconst DrawerContent = React.forwardRef<HTMLDivElement, DrawerContentProps>(\n ({ className, children, variant, showCloseButton = true, ...props }, ref) => {\n const { side, variant: contextVariant, resolvedOverlay } = useDrawerContext();\n const resolvedVariant = variant ?? contextVariant;\n const showHandle = side === 'top' || side === 'bottom';\n\n return (\n <DrawerPortal>\n {resolvedOverlay !== 'none' && <DrawerBackdrop />}\n <DrawerViewport variant={resolvedVariant}>\n <DrawerPopup ref={ref} variant={resolvedVariant} className={className} {...props}>\n {showHandle && side === 'bottom' && <DrawerHandleBar />}\n <DrawerFloatingSideHandle side={side} variant={resolvedVariant} />\n <div data-slot=\"drawer-content\" className={cn('relative flex min-h-0 flex-1 flex-col', nestedFadeClass)}>\n {showCloseButton && <DrawerDefaultCloseButton />}\n {children}\n </div>\n {showHandle && side === 'top' && <DrawerHandleBar />}\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n );\n },\n);\nDrawerContent.displayName = 'DrawerContent';\n\nconst DrawerDefaultCloseButton = () => (\n <DrawerClose asChild>\n <Button type=\"button\" variant=\"ghost\" size=\"icon-sm\" className=\"absolute top-3 right-3 z-10\" aria-label=\"Close\">\n <XIcon />\n </Button>\n </DrawerClose>\n);\nDrawerDefaultCloseButton.displayName = 'DrawerDefaultCloseButton';\n\nconst DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-header\"\n className={cn('flex flex-col gap-0.5 px-4 py-3 pr-12 text-left', className)}\n {...props}\n />\n);\nDrawerHeader.displayName = 'DrawerHeader';\n\nconst DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col-reverse gap-1.5 px-4 py-3 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n);\nDrawerFooter.displayName = 'DrawerFooter';\n\nconst DrawerBody = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div data-slot=\"drawer-body\" className={cn('flex-1 px-4 py-3', className)} {...props} />\n);\nDrawerBody.displayName = 'DrawerBody';\n\ntype DrawerTitleProps = Omit<DrawerPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerTitle = React.forwardRef<HTMLHeadingElement, DrawerTitleProps>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title ref={ref} className={cn('text-ui-md font-medium text-neutral6', className)} {...props} />\n));\nDrawerTitle.displayName = 'DrawerTitle';\n\ntype DrawerDescriptionProps = Omit<DrawerPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerDescription = React.forwardRef<HTMLParagraphElement, DrawerDescriptionProps>(\n ({ className, ...props }, ref) => (\n <DrawerPrimitive.Description ref={ref} className={cn('text-ui-sm text-neutral3', className)} {...props} />\n ),\n);\nDrawerDescription.displayName = 'DrawerDescription';\n\nexport {\n Drawer,\n DrawerTrigger,\n DrawerClose,\n DrawerPortal,\n DrawerBackdrop,\n DrawerViewport,\n DrawerPopup,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerBody,\n DrawerTitle,\n DrawerDescription,\n DrawerProvider,\n DrawerIndent,\n DrawerIndentBackground,\n DrawerSwipeArea,\n DrawerInteractive,\n createDrawerHandle,\n};\n\nexport type {\n DrawerTriggerProps,\n DrawerCloseProps,\n DrawerBackdropProps,\n DrawerViewportProps,\n DrawerPopupProps,\n DrawerContentProps,\n DrawerTitleProps,\n DrawerDescriptionProps,\n};\n"],"names":["DrawerPrimitive"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"drawer-Djerm1Lo.js","sources":["../src/ds/components/Drawer/drawer.tsx"],"sourcesContent":["import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\n// Swipe/stack transforms live in drawer.css — unreadable as Tailwind arbitrary values.\nimport './drawer.css';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\nconst drawerBackdropVariants = cva('drawer-backdrop fixed inset-0 z-50', {\n variants: {\n overlay: {\n visible: 'bg-overlay backdrop-blur-xs',\n transparent: 'bg-transparent',\n none: 'hidden',\n },\n },\n defaultVariants: {\n overlay: 'visible',\n },\n});\n\nconst drawerViewportVariants = cva('fixed z-50 flex', {\n variants: {\n side: {\n top: 'items-start justify-center',\n bottom: 'items-end justify-center',\n left: 'items-stretch justify-start',\n right: 'items-stretch justify-end',\n },\n layout: {\n default: 'inset-0',\n floating: 'p-3 sm:p-4',\n floatingOverlay: 'inset-0 p-3 sm:p-4',\n },\n },\n compoundVariants: [\n {\n side: 'right',\n layout: 'floating',\n className: 'inset-y-0 right-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'left',\n layout: 'floating',\n className: 'inset-y-0 left-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'bottom',\n layout: 'floating',\n className: 'inset-x-0 bottom-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n {\n side: 'top',\n layout: 'floating',\n className: 'inset-x-0 top-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n layout: 'default',\n },\n});\n\n// `drawer-popup` hooks into drawer.css for swipe/stack transforms; `::after` dims under nested drawers.\nconst drawerPopupVariants = cva(\n cn(\n 'drawer-popup group/popup relative z-50 box-border flex flex-col overflow-y-auto overscroll-contain outline-none [touch-action:auto] will-change-transform',\n 'border-border1 bg-surface3 text-neutral5 shadow-dialog',\n 'data-[swiping]:select-none',\n \"after:pointer-events-none after:absolute after:inset-0 after:bg-transparent after:transition-[background-color] after:duration-[450ms] after:content-['']\",\n 'data-[nested-drawer-open]:after:bg-black/25',\n ),\n {\n variants: {\n side: {\n bottom: '',\n top: '',\n left: '',\n right: '',\n },\n variant: {\n default: '',\n floating: 'drawer-popup-floating pointer-events-auto rounded-lg border',\n },\n },\n compoundVariants: [\n {\n side: 'bottom',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mb-12 pb-12 rounded-t-xl border-x border-t',\n },\n {\n side: 'top',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mt-12 pt-12 rounded-b-xl border-x border-b',\n },\n {\n side: 'left',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-r-xl border-y border-r',\n },\n {\n side: 'right',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-l-xl border-y border-l',\n },\n {\n side: ['left', 'right'],\n variant: 'floating',\n className:\n 'h-[calc(100dvh-1.5rem)] w-[32rem] max-w-[calc(100vw-1.5rem)] sm:h-[calc(100dvh-2rem)] sm:max-w-[calc(100vw-2rem)]',\n },\n {\n side: ['top', 'bottom'],\n variant: 'floating',\n className:\n 'max-h-[calc(85dvh-1.5rem)] w-[calc(100vw-1.5rem)] sm:max-h-[calc(85dvh-2rem)] sm:w-[calc(100vw-2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n variant: 'default',\n },\n },\n);\n\ntype DrawerBackdropVariantsProps = VariantProps<typeof drawerBackdropVariants>;\ntype DrawerViewportClassVariantsProps = VariantProps<typeof drawerViewportVariants>;\ntype DrawerPopupVariantsProps = VariantProps<typeof drawerPopupVariants>;\nexport type DrawerVariant = NonNullable<DrawerPopupVariantsProps['variant']>;\ntype DrawerViewportLayout = NonNullable<DrawerViewportClassVariantsProps['layout']>;\ntype DrawerViewportVariantsProps = Pick<DrawerViewportClassVariantsProps, 'side'> & {\n variant?: DrawerVariant;\n};\nexport type DrawerOverlay = 'auto' | NonNullable<DrawerBackdropVariantsProps['overlay']>;\n\n// `side` = anchor edge; Base UI's `swipeDirection` = dismissal gesture (bottom sheet swipes `down`).\nconst sideToSwipeDirection: Record<DrawerSide, 'up' | 'down' | 'left' | 'right'> = {\n top: 'up',\n bottom: 'down',\n left: 'left',\n right: 'right',\n};\n\ntype DrawerContextValue = {\n side: DrawerSide;\n variant: DrawerVariant;\n resolvedOverlay: NonNullable<DrawerBackdropVariantsProps['overlay']>;\n};\n\nconst resolveDrawerOverlay = (\n overlay: DrawerOverlay,\n variant: DrawerVariant,\n): NonNullable<DrawerBackdropVariantsProps['overlay']> => {\n if (overlay !== 'auto') {\n return overlay;\n }\n\n return variant === 'floating' ? 'none' : 'visible';\n};\n\nconst DrawerContext = React.createContext<DrawerContextValue>({\n side: 'bottom',\n variant: 'default',\n resolvedOverlay: 'visible',\n});\n\nconst useDrawerContext = () => React.useContext(DrawerContext);\n\nexport const useDrawerSide = () => useDrawerContext().side;\n\nconst resolveDrawerViewportLayout = (\n variant: DrawerVariant,\n overlay: NonNullable<DrawerBackdropVariantsProps['overlay']>,\n): DrawerViewportLayout => {\n if (variant !== 'floating') {\n return 'default';\n }\n\n return overlay === 'none' ? 'floating' : 'floatingOverlay';\n};\n\nexport type DrawerProps<Payload = unknown> = Omit<DrawerPrimitive.Root.Props<Payload>, 'swipeDirection'> & {\n /** Edge the drawer is anchored to. Defaults to `bottom`. */\n side?: DrawerSide;\n /** Visual treatment for the drawer panel. Defaults to `default`. */\n variant?: DrawerVariant;\n /** Backdrop behavior. `auto` renders a visible backdrop for default drawers and no backdrop for floating drawers. */\n overlay?: DrawerOverlay;\n};\n\nfunction Drawer<Payload = unknown>({\n side = 'bottom',\n variant = 'default',\n overlay = 'auto',\n modal,\n disablePointerDismissal,\n children,\n ...props\n}: DrawerProps<Payload>) {\n const resolvedOverlay = resolveDrawerOverlay(overlay, variant);\n const resolvedModal = modal ?? (resolvedOverlay === 'none' ? false : undefined);\n const resolvedDisablePointerDismissal = disablePointerDismissal ?? (resolvedOverlay === 'none' ? true : undefined);\n const contextValue = React.useMemo<DrawerContextValue>(\n () => ({ side, variant, resolvedOverlay }),\n [side, variant, resolvedOverlay],\n );\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <DrawerPrimitive.Root\n swipeDirection={sideToSwipeDirection[side]}\n modal={resolvedModal}\n disablePointerDismissal={resolvedDisablePointerDismissal}\n {...props}\n >\n {children}\n </DrawerPrimitive.Root>\n </DrawerContext.Provider>\n );\n}\nDrawer.displayName = 'Drawer';\n\n// Generic (not `forwardRef`) so `handle` / `payload` stay type-safe on detached triggers.\ntype DrawerTriggerProps<Payload = unknown> = DrawerPrimitive.Trigger.Props<Payload> & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nfunction DrawerTrigger<Payload = unknown>({ asChild, children, ...props }: DrawerTriggerProps<Payload>) {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Trigger {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Trigger>\n );\n}\nDrawerTrigger.displayName = 'DrawerTrigger';\n\ntype DrawerCloseProps = DrawerPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DrawerClose = React.forwardRef<HTMLButtonElement, DrawerCloseProps>(({ asChild, children, ...props }, ref) => {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Close ref={ref} {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Close>\n );\n});\nDrawerClose.displayName = 'DrawerClose';\n\nconst DrawerPortal = DrawerPrimitive.Portal;\nconst DrawerProvider = DrawerPrimitive.Provider;\nconst DrawerIndent = DrawerPrimitive.Indent;\nconst DrawerIndentBackground = DrawerPrimitive.IndentBackground;\nconst DrawerSwipeArea = DrawerPrimitive.SwipeArea;\nconst createDrawerHandle = DrawerPrimitive.createHandle;\n// Inner region where pointer drags select text / scroll instead of swiping the drawer closed.\nconst DrawerInteractive = DrawerPrimitive.Content;\n\ntype DrawerBackdropProps = Omit<DrawerPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n} & DrawerBackdropVariantsProps;\n\n// The `drawer-backdrop` class (drawer.css) fades the overlay with the swipe gesture.\nconst DrawerBackdrop = React.forwardRef<HTMLDivElement, DrawerBackdropProps>(\n ({ className, overlay, ...props }, ref) => {\n const { resolvedOverlay } = useDrawerContext();\n const resolvedBackdropOverlay = overlay ?? resolvedOverlay;\n\n return (\n <DrawerPrimitive.Backdrop\n ref={ref}\n data-slot=\"drawer-backdrop\"\n data-overlay={resolvedBackdropOverlay}\n className={cn(drawerBackdropVariants({ overlay: resolvedBackdropOverlay }), className)}\n {...props}\n />\n );\n },\n);\nDrawerBackdrop.displayName = 'DrawerBackdrop';\n\ntype DrawerViewportProps = Omit<DrawerPrimitive.Viewport.Props, 'className'> & {\n className?: string;\n} & DrawerViewportVariantsProps;\n\n// Keep the viewport pointer-interactive: Base UI wires native drag-to-dismiss to it.\n// Floating drawers without an overlay constrain the viewport so the page behind stays interactive.\n// Floating drawers with an overlay keep a full-screen viewport so overlay-start drags stay native.\nconst DrawerViewport = React.forwardRef<HTMLDivElement, DrawerViewportProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n const layout = resolveDrawerViewportLayout(resolvedVariant, context.resolvedOverlay);\n\n return (\n <DrawerPrimitive.Viewport\n ref={ref}\n data-slot=\"drawer-viewport\"\n data-variant={resolvedVariant}\n className={cn(drawerViewportVariants({ side: resolvedSide, layout }), className)}\n {...props}\n />\n );\n },\n);\nDrawerViewport.displayName = 'DrawerViewport';\n\ntype DrawerPopupProps = Omit<DrawerPrimitive.Popup.Props, 'className'> & {\n className?: string;\n} & DrawerPopupVariantsProps;\n\nconst DrawerPopup = React.forwardRef<HTMLDivElement, DrawerPopupProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n\n return (\n <DrawerPrimitive.Popup\n ref={ref}\n data-slot=\"drawer-popup\"\n data-variant={resolvedVariant}\n className={cn(drawerPopupVariants({ side: resolvedSide, variant: resolvedVariant }), className)}\n {...props}\n />\n );\n },\n);\nDrawerPopup.displayName = 'DrawerPopup';\n\n// Inner-content fade while a nested drawer covers the parent. Off the popup itself so border/shadow stay crisp.\nconst nestedFadeClass = cn(\n 'transition-opacity duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:duration-0',\n 'group-data-[nested-drawer-open]/popup:opacity-0',\n);\n\nconst DrawerHandleBar = () => (\n <div\n aria-hidden\n data-slot=\"drawer-handle\"\n className={cn('mx-auto my-2 h-1 w-12 shrink-0 rounded-full bg-surface5', nestedFadeClass)}\n />\n);\nDrawerHandleBar.displayName = 'DrawerHandleBar';\n\ntype DrawerFloatingSideHandleProps = {\n side: DrawerSide;\n variant: DrawerVariant;\n};\n\nconst DrawerFloatingSideHandle = ({ side, variant }: DrawerFloatingSideHandleProps) => {\n if (variant !== 'floating' || (side !== 'left' && side !== 'right')) {\n return null;\n }\n\n return (\n <div\n aria-hidden\n data-slot=\"drawer-side-handle\"\n className={cn(\n 'absolute top-1/2 z-10 flex h-20 w-5 -translate-y-1/2 touch-none select-none items-center justify-center cursor-ew-resize lg:hidden',\n side === 'right' ? '-left-2' : '-right-2',\n )}\n >\n <div className=\"h-10 w-1 rounded-full bg-surface5/80 shadow-sm\" />\n </div>\n );\n};\nDrawerFloatingSideHandle.displayName = 'DrawerFloatingSideHandle';\n\ntype DrawerContentProps = Omit<DrawerPrimitive.Popup.Props, 'className' | 'children'> & {\n className?: string;\n children?: React.ReactNode;\n /** Shows the built-in top-right close button. Defaults to `true`. */\n showCloseButton?: boolean;\n} & Pick<DrawerPopupVariantsProps, 'variant'>;\n\n// Opinionated bundle: Portal + Backdrop + Viewport + Popup, with handle on top/bottom sheets.\n// Drop to the primitives for non-modal pages, custom portal targets, or chrome outside the popup.\nconst DrawerContent = React.forwardRef<HTMLDivElement, DrawerContentProps>(\n ({ className, children, variant, showCloseButton = true, ...props }, ref) => {\n const { side, variant: contextVariant, resolvedOverlay } = useDrawerContext();\n const resolvedVariant = variant ?? contextVariant;\n const showHandle = side === 'top' || side === 'bottom';\n\n return (\n <DrawerPortal>\n {resolvedOverlay !== 'none' && <DrawerBackdrop />}\n <DrawerViewport variant={resolvedVariant}>\n <DrawerPopup ref={ref} variant={resolvedVariant} className={className} {...props}>\n {showHandle && side === 'bottom' && <DrawerHandleBar />}\n <DrawerFloatingSideHandle side={side} variant={resolvedVariant} />\n <div data-slot=\"drawer-content\" className={cn('relative flex min-h-0 flex-1 flex-col', nestedFadeClass)}>\n {showCloseButton && <DrawerDefaultCloseButton />}\n {children}\n </div>\n {showHandle && side === 'top' && <DrawerHandleBar />}\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n );\n },\n);\nDrawerContent.displayName = 'DrawerContent';\n\nconst DrawerDefaultCloseButton = () => (\n <DrawerClose asChild>\n <Button type=\"button\" variant=\"ghost\" size=\"icon-sm\" className=\"absolute top-3 right-3 z-10\" aria-label=\"Close\">\n <XIcon />\n </Button>\n </DrawerClose>\n);\nDrawerDefaultCloseButton.displayName = 'DrawerDefaultCloseButton';\n\nconst DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-header\"\n className={cn('flex flex-col gap-0.5 px-4 py-3 pr-12 text-left', className)}\n {...props}\n />\n);\nDrawerHeader.displayName = 'DrawerHeader';\n\nconst DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col-reverse gap-1.5 px-4 py-3 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n);\nDrawerFooter.displayName = 'DrawerFooter';\n\nconst DrawerBody = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div data-slot=\"drawer-body\" className={cn('flex-1 px-4 py-3', className)} {...props} />\n);\nDrawerBody.displayName = 'DrawerBody';\n\ntype DrawerTitleProps = Omit<DrawerPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerTitle = React.forwardRef<HTMLHeadingElement, DrawerTitleProps>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title ref={ref} className={cn('text-ui-md font-medium text-neutral6', className)} {...props} />\n));\nDrawerTitle.displayName = 'DrawerTitle';\n\ntype DrawerDescriptionProps = Omit<DrawerPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerDescription = React.forwardRef<HTMLParagraphElement, DrawerDescriptionProps>(\n ({ className, ...props }, ref) => (\n <DrawerPrimitive.Description ref={ref} className={cn('text-ui-sm text-neutral3', className)} {...props} />\n ),\n);\nDrawerDescription.displayName = 'DrawerDescription';\n\nexport {\n Drawer,\n DrawerTrigger,\n DrawerClose,\n DrawerPortal,\n DrawerBackdrop,\n DrawerViewport,\n DrawerPopup,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerBody,\n DrawerTitle,\n DrawerDescription,\n DrawerProvider,\n DrawerIndent,\n DrawerIndentBackground,\n DrawerSwipeArea,\n DrawerInteractive,\n createDrawerHandle,\n};\n\nexport type {\n DrawerTriggerProps,\n DrawerCloseProps,\n DrawerBackdropProps,\n DrawerViewportProps,\n DrawerPopupProps,\n DrawerContentProps,\n DrawerTitleProps,\n DrawerDescriptionProps,\n};\n"],"names":["DrawerPrimitive"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ const drawer = require('@base-ui/react/drawer');
|
|
|
5
5
|
const index = require('./index-C-Lt4Bx_.cjs');
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
|
-
const Button = require('./Button-
|
|
8
|
+
const Button = require('./Button-B5RnKrGb.cjs');
|
|
9
9
|
const utils_cn = require('./cn-vA5sWo9W.cjs');
|
|
10
10
|
|
|
11
11
|
function _interopNamespaceDefault(e) {
|
|
@@ -363,4 +363,4 @@ exports.DrawerTrigger = DrawerTrigger;
|
|
|
363
363
|
exports.DrawerViewport = DrawerViewport;
|
|
364
364
|
exports.createDrawerHandle = createDrawerHandle;
|
|
365
365
|
exports.useDrawerSide = useDrawerSide;
|
|
366
|
-
//# sourceMappingURL=drawer-
|
|
366
|
+
//# sourceMappingURL=drawer-DtEZQBXj.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer-Bi8X9kfl.cjs","sources":["../src/ds/components/Drawer/drawer.tsx"],"sourcesContent":["import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\n// Swipe/stack transforms live in drawer.css — unreadable as Tailwind arbitrary values.\nimport './drawer.css';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\nconst drawerBackdropVariants = cva('drawer-backdrop fixed inset-0 z-50', {\n variants: {\n overlay: {\n visible: 'bg-overlay backdrop-blur-xs',\n transparent: 'bg-transparent',\n none: 'hidden',\n },\n },\n defaultVariants: {\n overlay: 'visible',\n },\n});\n\nconst drawerViewportVariants = cva('fixed z-50 flex', {\n variants: {\n side: {\n top: 'items-start justify-center',\n bottom: 'items-end justify-center',\n left: 'items-stretch justify-start',\n right: 'items-stretch justify-end',\n },\n layout: {\n default: 'inset-0',\n floating: 'p-3 sm:p-4',\n floatingOverlay: 'inset-0 p-3 sm:p-4',\n },\n },\n compoundVariants: [\n {\n side: 'right',\n layout: 'floating',\n className: 'inset-y-0 right-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'left',\n layout: 'floating',\n className: 'inset-y-0 left-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'bottom',\n layout: 'floating',\n className: 'inset-x-0 bottom-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n {\n side: 'top',\n layout: 'floating',\n className: 'inset-x-0 top-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n layout: 'default',\n },\n});\n\n// `drawer-popup` hooks into drawer.css for swipe/stack transforms; `::after` dims under nested drawers.\nconst drawerPopupVariants = cva(\n cn(\n 'drawer-popup group/popup relative z-50 box-border flex flex-col overflow-y-auto overscroll-contain outline-none [touch-action:auto] will-change-transform',\n 'border-border1 bg-surface3 text-neutral5 shadow-dialog',\n 'data-[swiping]:select-none',\n \"after:pointer-events-none after:absolute after:inset-0 after:bg-transparent after:transition-[background-color] after:duration-[450ms] after:content-['']\",\n 'data-[nested-drawer-open]:after:bg-black/25',\n ),\n {\n variants: {\n side: {\n bottom: '',\n top: '',\n left: '',\n right: '',\n },\n variant: {\n default: '',\n floating: 'drawer-popup-floating pointer-events-auto rounded-lg border',\n },\n },\n compoundVariants: [\n {\n side: 'bottom',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mb-12 pb-12 rounded-t-xl border-x border-t',\n },\n {\n side: 'top',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mt-12 pt-12 rounded-b-xl border-x border-b',\n },\n {\n side: 'left',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-r-xl border-y border-r',\n },\n {\n side: 'right',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-l-xl border-y border-l',\n },\n {\n side: ['left', 'right'],\n variant: 'floating',\n className:\n 'h-[calc(100dvh-1.5rem)] w-[32rem] max-w-[calc(100vw-1.5rem)] sm:h-[calc(100dvh-2rem)] sm:max-w-[calc(100vw-2rem)]',\n },\n {\n side: ['top', 'bottom'],\n variant: 'floating',\n className:\n 'max-h-[calc(85dvh-1.5rem)] w-[calc(100vw-1.5rem)] sm:max-h-[calc(85dvh-2rem)] sm:w-[calc(100vw-2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n variant: 'default',\n },\n },\n);\n\ntype DrawerBackdropVariantsProps = VariantProps<typeof drawerBackdropVariants>;\ntype DrawerViewportClassVariantsProps = VariantProps<typeof drawerViewportVariants>;\ntype DrawerPopupVariantsProps = VariantProps<typeof drawerPopupVariants>;\nexport type DrawerVariant = NonNullable<DrawerPopupVariantsProps['variant']>;\ntype DrawerViewportLayout = NonNullable<DrawerViewportClassVariantsProps['layout']>;\ntype DrawerViewportVariantsProps = Pick<DrawerViewportClassVariantsProps, 'side'> & {\n variant?: DrawerVariant;\n};\nexport type DrawerOverlay = 'auto' | NonNullable<DrawerBackdropVariantsProps['overlay']>;\n\n// `side` = anchor edge; Base UI's `swipeDirection` = dismissal gesture (bottom sheet swipes `down`).\nconst sideToSwipeDirection: Record<DrawerSide, 'up' | 'down' | 'left' | 'right'> = {\n top: 'up',\n bottom: 'down',\n left: 'left',\n right: 'right',\n};\n\ntype DrawerContextValue = {\n side: DrawerSide;\n variant: DrawerVariant;\n resolvedOverlay: NonNullable<DrawerBackdropVariantsProps['overlay']>;\n};\n\nconst resolveDrawerOverlay = (\n overlay: DrawerOverlay,\n variant: DrawerVariant,\n): NonNullable<DrawerBackdropVariantsProps['overlay']> => {\n if (overlay !== 'auto') {\n return overlay;\n }\n\n return variant === 'floating' ? 'none' : 'visible';\n};\n\nconst DrawerContext = React.createContext<DrawerContextValue>({\n side: 'bottom',\n variant: 'default',\n resolvedOverlay: 'visible',\n});\n\nconst useDrawerContext = () => React.useContext(DrawerContext);\n\nexport const useDrawerSide = () => useDrawerContext().side;\n\nconst resolveDrawerViewportLayout = (\n variant: DrawerVariant,\n overlay: NonNullable<DrawerBackdropVariantsProps['overlay']>,\n): DrawerViewportLayout => {\n if (variant !== 'floating') {\n return 'default';\n }\n\n return overlay === 'none' ? 'floating' : 'floatingOverlay';\n};\n\nexport type DrawerProps<Payload = unknown> = Omit<DrawerPrimitive.Root.Props<Payload>, 'swipeDirection'> & {\n /** Edge the drawer is anchored to. Defaults to `bottom`. */\n side?: DrawerSide;\n /** Visual treatment for the drawer panel. Defaults to `default`. */\n variant?: DrawerVariant;\n /** Backdrop behavior. `auto` renders a visible backdrop for default drawers and no backdrop for floating drawers. */\n overlay?: DrawerOverlay;\n};\n\nfunction Drawer<Payload = unknown>({\n side = 'bottom',\n variant = 'default',\n overlay = 'auto',\n modal,\n disablePointerDismissal,\n children,\n ...props\n}: DrawerProps<Payload>) {\n const resolvedOverlay = resolveDrawerOverlay(overlay, variant);\n const resolvedModal = modal ?? (resolvedOverlay === 'none' ? false : undefined);\n const resolvedDisablePointerDismissal = disablePointerDismissal ?? (resolvedOverlay === 'none' ? true : undefined);\n const contextValue = React.useMemo<DrawerContextValue>(\n () => ({ side, variant, resolvedOverlay }),\n [side, variant, resolvedOverlay],\n );\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <DrawerPrimitive.Root\n swipeDirection={sideToSwipeDirection[side]}\n modal={resolvedModal}\n disablePointerDismissal={resolvedDisablePointerDismissal}\n {...props}\n >\n {children}\n </DrawerPrimitive.Root>\n </DrawerContext.Provider>\n );\n}\nDrawer.displayName = 'Drawer';\n\n// Generic (not `forwardRef`) so `handle` / `payload` stay type-safe on detached triggers.\ntype DrawerTriggerProps<Payload = unknown> = DrawerPrimitive.Trigger.Props<Payload> & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nfunction DrawerTrigger<Payload = unknown>({ asChild, children, ...props }: DrawerTriggerProps<Payload>) {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Trigger {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Trigger>\n );\n}\nDrawerTrigger.displayName = 'DrawerTrigger';\n\ntype DrawerCloseProps = DrawerPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DrawerClose = React.forwardRef<HTMLButtonElement, DrawerCloseProps>(({ asChild, children, ...props }, ref) => {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Close ref={ref} {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Close>\n );\n});\nDrawerClose.displayName = 'DrawerClose';\n\nconst DrawerPortal = DrawerPrimitive.Portal;\nconst DrawerProvider = DrawerPrimitive.Provider;\nconst DrawerIndent = DrawerPrimitive.Indent;\nconst DrawerIndentBackground = DrawerPrimitive.IndentBackground;\nconst DrawerSwipeArea = DrawerPrimitive.SwipeArea;\nconst createDrawerHandle = DrawerPrimitive.createHandle;\n// Inner region where pointer drags select text / scroll instead of swiping the drawer closed.\nconst DrawerInteractive = DrawerPrimitive.Content;\n\ntype DrawerBackdropProps = Omit<DrawerPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n} & DrawerBackdropVariantsProps;\n\n// The `drawer-backdrop` class (drawer.css) fades the overlay with the swipe gesture.\nconst DrawerBackdrop = React.forwardRef<HTMLDivElement, DrawerBackdropProps>(\n ({ className, overlay, ...props }, ref) => {\n const { resolvedOverlay } = useDrawerContext();\n const resolvedBackdropOverlay = overlay ?? resolvedOverlay;\n\n return (\n <DrawerPrimitive.Backdrop\n ref={ref}\n data-slot=\"drawer-backdrop\"\n data-overlay={resolvedBackdropOverlay}\n className={cn(drawerBackdropVariants({ overlay: resolvedBackdropOverlay }), className)}\n {...props}\n />\n );\n },\n);\nDrawerBackdrop.displayName = 'DrawerBackdrop';\n\ntype DrawerViewportProps = Omit<DrawerPrimitive.Viewport.Props, 'className'> & {\n className?: string;\n} & DrawerViewportVariantsProps;\n\n// Keep the viewport pointer-interactive: Base UI wires native drag-to-dismiss to it.\n// Floating drawers without an overlay constrain the viewport so the page behind stays interactive.\n// Floating drawers with an overlay keep a full-screen viewport so overlay-start drags stay native.\nconst DrawerViewport = React.forwardRef<HTMLDivElement, DrawerViewportProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n const layout = resolveDrawerViewportLayout(resolvedVariant, context.resolvedOverlay);\n\n return (\n <DrawerPrimitive.Viewport\n ref={ref}\n data-slot=\"drawer-viewport\"\n data-variant={resolvedVariant}\n className={cn(drawerViewportVariants({ side: resolvedSide, layout }), className)}\n {...props}\n />\n );\n },\n);\nDrawerViewport.displayName = 'DrawerViewport';\n\ntype DrawerPopupProps = Omit<DrawerPrimitive.Popup.Props, 'className'> & {\n className?: string;\n} & DrawerPopupVariantsProps;\n\nconst DrawerPopup = React.forwardRef<HTMLDivElement, DrawerPopupProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n\n return (\n <DrawerPrimitive.Popup\n ref={ref}\n data-slot=\"drawer-popup\"\n data-variant={resolvedVariant}\n className={cn(drawerPopupVariants({ side: resolvedSide, variant: resolvedVariant }), className)}\n {...props}\n />\n );\n },\n);\nDrawerPopup.displayName = 'DrawerPopup';\n\n// Inner-content fade while a nested drawer covers the parent. Off the popup itself so border/shadow stay crisp.\nconst nestedFadeClass = cn(\n 'transition-opacity duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:duration-0',\n 'group-data-[nested-drawer-open]/popup:opacity-0',\n);\n\nconst DrawerHandleBar = () => (\n <div\n aria-hidden\n data-slot=\"drawer-handle\"\n className={cn('mx-auto my-2 h-1 w-12 shrink-0 rounded-full bg-surface5', nestedFadeClass)}\n />\n);\nDrawerHandleBar.displayName = 'DrawerHandleBar';\n\ntype DrawerFloatingSideHandleProps = {\n side: DrawerSide;\n variant: DrawerVariant;\n};\n\nconst DrawerFloatingSideHandle = ({ side, variant }: DrawerFloatingSideHandleProps) => {\n if (variant !== 'floating' || (side !== 'left' && side !== 'right')) {\n return null;\n }\n\n return (\n <div\n aria-hidden\n data-slot=\"drawer-side-handle\"\n className={cn(\n 'absolute top-1/2 z-10 flex h-20 w-5 -translate-y-1/2 touch-none select-none items-center justify-center cursor-ew-resize lg:hidden',\n side === 'right' ? '-left-2' : '-right-2',\n )}\n >\n <div className=\"h-10 w-1 rounded-full bg-surface5/80 shadow-sm\" />\n </div>\n );\n};\nDrawerFloatingSideHandle.displayName = 'DrawerFloatingSideHandle';\n\ntype DrawerContentProps = Omit<DrawerPrimitive.Popup.Props, 'className' | 'children'> & {\n className?: string;\n children?: React.ReactNode;\n /** Shows the built-in top-right close button. Defaults to `true`. */\n showCloseButton?: boolean;\n} & Pick<DrawerPopupVariantsProps, 'variant'>;\n\n// Opinionated bundle: Portal + Backdrop + Viewport + Popup, with handle on top/bottom sheets.\n// Drop to the primitives for non-modal pages, custom portal targets, or chrome outside the popup.\nconst DrawerContent = React.forwardRef<HTMLDivElement, DrawerContentProps>(\n ({ className, children, variant, showCloseButton = true, ...props }, ref) => {\n const { side, variant: contextVariant, resolvedOverlay } = useDrawerContext();\n const resolvedVariant = variant ?? contextVariant;\n const showHandle = side === 'top' || side === 'bottom';\n\n return (\n <DrawerPortal>\n {resolvedOverlay !== 'none' && <DrawerBackdrop />}\n <DrawerViewport variant={resolvedVariant}>\n <DrawerPopup ref={ref} variant={resolvedVariant} className={className} {...props}>\n {showHandle && side === 'bottom' && <DrawerHandleBar />}\n <DrawerFloatingSideHandle side={side} variant={resolvedVariant} />\n <div data-slot=\"drawer-content\" className={cn('relative flex min-h-0 flex-1 flex-col', nestedFadeClass)}>\n {showCloseButton && <DrawerDefaultCloseButton />}\n {children}\n </div>\n {showHandle && side === 'top' && <DrawerHandleBar />}\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n );\n },\n);\nDrawerContent.displayName = 'DrawerContent';\n\nconst DrawerDefaultCloseButton = () => (\n <DrawerClose asChild>\n <Button type=\"button\" variant=\"ghost\" size=\"icon-sm\" className=\"absolute top-3 right-3 z-10\" aria-label=\"Close\">\n <XIcon />\n </Button>\n </DrawerClose>\n);\nDrawerDefaultCloseButton.displayName = 'DrawerDefaultCloseButton';\n\nconst DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-header\"\n className={cn('flex flex-col gap-0.5 px-4 py-3 pr-12 text-left', className)}\n {...props}\n />\n);\nDrawerHeader.displayName = 'DrawerHeader';\n\nconst DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col-reverse gap-1.5 px-4 py-3 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n);\nDrawerFooter.displayName = 'DrawerFooter';\n\nconst DrawerBody = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div data-slot=\"drawer-body\" className={cn('flex-1 px-4 py-3', className)} {...props} />\n);\nDrawerBody.displayName = 'DrawerBody';\n\ntype DrawerTitleProps = Omit<DrawerPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerTitle = React.forwardRef<HTMLHeadingElement, DrawerTitleProps>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title ref={ref} className={cn('text-ui-md font-medium text-neutral6', className)} {...props} />\n));\nDrawerTitle.displayName = 'DrawerTitle';\n\ntype DrawerDescriptionProps = Omit<DrawerPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerDescription = React.forwardRef<HTMLParagraphElement, DrawerDescriptionProps>(\n ({ className, ...props }, ref) => (\n <DrawerPrimitive.Description ref={ref} className={cn('text-ui-sm text-neutral3', className)} {...props} />\n ),\n);\nDrawerDescription.displayName = 'DrawerDescription';\n\nexport {\n Drawer,\n DrawerTrigger,\n DrawerClose,\n DrawerPortal,\n DrawerBackdrop,\n DrawerViewport,\n DrawerPopup,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerBody,\n DrawerTitle,\n DrawerDescription,\n DrawerProvider,\n DrawerIndent,\n DrawerIndentBackground,\n DrawerSwipeArea,\n DrawerInteractive,\n createDrawerHandle,\n};\n\nexport type {\n DrawerTriggerProps,\n DrawerCloseProps,\n DrawerBackdropProps,\n DrawerViewportProps,\n DrawerPopupProps,\n DrawerContentProps,\n DrawerTitleProps,\n DrawerDescriptionProps,\n};\n"],"names":["cva","cn","React","jsx","DrawerPrimitive","jsxs","Button","XIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"drawer-DtEZQBXj.cjs","sources":["../src/ds/components/Drawer/drawer.tsx"],"sourcesContent":["import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\n// Swipe/stack transforms live in drawer.css — unreadable as Tailwind arbitrary values.\nimport './drawer.css';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\nconst drawerBackdropVariants = cva('drawer-backdrop fixed inset-0 z-50', {\n variants: {\n overlay: {\n visible: 'bg-overlay backdrop-blur-xs',\n transparent: 'bg-transparent',\n none: 'hidden',\n },\n },\n defaultVariants: {\n overlay: 'visible',\n },\n});\n\nconst drawerViewportVariants = cva('fixed z-50 flex', {\n variants: {\n side: {\n top: 'items-start justify-center',\n bottom: 'items-end justify-center',\n left: 'items-stretch justify-start',\n right: 'items-stretch justify-end',\n },\n layout: {\n default: 'inset-0',\n floating: 'p-3 sm:p-4',\n floatingOverlay: 'inset-0 p-3 sm:p-4',\n },\n },\n compoundVariants: [\n {\n side: 'right',\n layout: 'floating',\n className: 'inset-y-0 right-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'left',\n layout: 'floating',\n className: 'inset-y-0 left-0 w-[calc(32rem+1.5rem)] max-w-full sm:w-[calc(32rem+2rem)]',\n },\n {\n side: 'bottom',\n layout: 'floating',\n className: 'inset-x-0 bottom-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n {\n side: 'top',\n layout: 'floating',\n className: 'inset-x-0 top-0 h-[calc(85dvh+1.5rem)] max-h-full sm:h-[calc(85dvh+2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n layout: 'default',\n },\n});\n\n// `drawer-popup` hooks into drawer.css for swipe/stack transforms; `::after` dims under nested drawers.\nconst drawerPopupVariants = cva(\n cn(\n 'drawer-popup group/popup relative z-50 box-border flex flex-col overflow-y-auto overscroll-contain outline-none [touch-action:auto] will-change-transform',\n 'border-border1 bg-surface3 text-neutral5 shadow-dialog',\n 'data-[swiping]:select-none',\n \"after:pointer-events-none after:absolute after:inset-0 after:bg-transparent after:transition-[background-color] after:duration-[450ms] after:content-['']\",\n 'data-[nested-drawer-open]:after:bg-black/25',\n ),\n {\n variants: {\n side: {\n bottom: '',\n top: '',\n left: '',\n right: '',\n },\n variant: {\n default: '',\n floating: 'drawer-popup-floating pointer-events-auto rounded-lg border',\n },\n },\n compoundVariants: [\n {\n side: 'bottom',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mb-12 pb-12 rounded-t-xl border-x border-t',\n },\n {\n side: 'top',\n variant: 'default',\n className:\n 'h-[var(--drawer-height,auto)] max-h-[calc(85vh_+_3rem)] w-full -mt-12 pt-12 rounded-b-xl border-x border-b',\n },\n {\n side: 'left',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-r-xl border-y border-r',\n },\n {\n side: 'right',\n variant: 'default',\n className: 'h-full w-[20rem] max-w-[85vw] rounded-l-xl border-y border-l',\n },\n {\n side: ['left', 'right'],\n variant: 'floating',\n className:\n 'h-[calc(100dvh-1.5rem)] w-[32rem] max-w-[calc(100vw-1.5rem)] sm:h-[calc(100dvh-2rem)] sm:max-w-[calc(100vw-2rem)]',\n },\n {\n side: ['top', 'bottom'],\n variant: 'floating',\n className:\n 'max-h-[calc(85dvh-1.5rem)] w-[calc(100vw-1.5rem)] sm:max-h-[calc(85dvh-2rem)] sm:w-[calc(100vw-2rem)]',\n },\n ],\n defaultVariants: {\n side: 'bottom',\n variant: 'default',\n },\n },\n);\n\ntype DrawerBackdropVariantsProps = VariantProps<typeof drawerBackdropVariants>;\ntype DrawerViewportClassVariantsProps = VariantProps<typeof drawerViewportVariants>;\ntype DrawerPopupVariantsProps = VariantProps<typeof drawerPopupVariants>;\nexport type DrawerVariant = NonNullable<DrawerPopupVariantsProps['variant']>;\ntype DrawerViewportLayout = NonNullable<DrawerViewportClassVariantsProps['layout']>;\ntype DrawerViewportVariantsProps = Pick<DrawerViewportClassVariantsProps, 'side'> & {\n variant?: DrawerVariant;\n};\nexport type DrawerOverlay = 'auto' | NonNullable<DrawerBackdropVariantsProps['overlay']>;\n\n// `side` = anchor edge; Base UI's `swipeDirection` = dismissal gesture (bottom sheet swipes `down`).\nconst sideToSwipeDirection: Record<DrawerSide, 'up' | 'down' | 'left' | 'right'> = {\n top: 'up',\n bottom: 'down',\n left: 'left',\n right: 'right',\n};\n\ntype DrawerContextValue = {\n side: DrawerSide;\n variant: DrawerVariant;\n resolvedOverlay: NonNullable<DrawerBackdropVariantsProps['overlay']>;\n};\n\nconst resolveDrawerOverlay = (\n overlay: DrawerOverlay,\n variant: DrawerVariant,\n): NonNullable<DrawerBackdropVariantsProps['overlay']> => {\n if (overlay !== 'auto') {\n return overlay;\n }\n\n return variant === 'floating' ? 'none' : 'visible';\n};\n\nconst DrawerContext = React.createContext<DrawerContextValue>({\n side: 'bottom',\n variant: 'default',\n resolvedOverlay: 'visible',\n});\n\nconst useDrawerContext = () => React.useContext(DrawerContext);\n\nexport const useDrawerSide = () => useDrawerContext().side;\n\nconst resolveDrawerViewportLayout = (\n variant: DrawerVariant,\n overlay: NonNullable<DrawerBackdropVariantsProps['overlay']>,\n): DrawerViewportLayout => {\n if (variant !== 'floating') {\n return 'default';\n }\n\n return overlay === 'none' ? 'floating' : 'floatingOverlay';\n};\n\nexport type DrawerProps<Payload = unknown> = Omit<DrawerPrimitive.Root.Props<Payload>, 'swipeDirection'> & {\n /** Edge the drawer is anchored to. Defaults to `bottom`. */\n side?: DrawerSide;\n /** Visual treatment for the drawer panel. Defaults to `default`. */\n variant?: DrawerVariant;\n /** Backdrop behavior. `auto` renders a visible backdrop for default drawers and no backdrop for floating drawers. */\n overlay?: DrawerOverlay;\n};\n\nfunction Drawer<Payload = unknown>({\n side = 'bottom',\n variant = 'default',\n overlay = 'auto',\n modal,\n disablePointerDismissal,\n children,\n ...props\n}: DrawerProps<Payload>) {\n const resolvedOverlay = resolveDrawerOverlay(overlay, variant);\n const resolvedModal = modal ?? (resolvedOverlay === 'none' ? false : undefined);\n const resolvedDisablePointerDismissal = disablePointerDismissal ?? (resolvedOverlay === 'none' ? true : undefined);\n const contextValue = React.useMemo<DrawerContextValue>(\n () => ({ side, variant, resolvedOverlay }),\n [side, variant, resolvedOverlay],\n );\n\n return (\n <DrawerContext.Provider value={contextValue}>\n <DrawerPrimitive.Root\n swipeDirection={sideToSwipeDirection[side]}\n modal={resolvedModal}\n disablePointerDismissal={resolvedDisablePointerDismissal}\n {...props}\n >\n {children}\n </DrawerPrimitive.Root>\n </DrawerContext.Provider>\n );\n}\nDrawer.displayName = 'Drawer';\n\n// Generic (not `forwardRef`) so `handle` / `payload` stay type-safe on detached triggers.\ntype DrawerTriggerProps<Payload = unknown> = DrawerPrimitive.Trigger.Props<Payload> & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nfunction DrawerTrigger<Payload = unknown>({ asChild, children, ...props }: DrawerTriggerProps<Payload>) {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Trigger {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Trigger>\n );\n}\nDrawerTrigger.displayName = 'DrawerTrigger';\n\ntype DrawerCloseProps = DrawerPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DrawerClose = React.forwardRef<HTMLButtonElement, DrawerCloseProps>(({ asChild, children, ...props }, ref) => {\n const renderProps = asChild && React.isValidElement(children) ? { render: children as React.ReactElement } : {};\n\n return (\n <DrawerPrimitive.Close ref={ref} {...renderProps} {...props}>\n {asChild ? undefined : children}\n </DrawerPrimitive.Close>\n );\n});\nDrawerClose.displayName = 'DrawerClose';\n\nconst DrawerPortal = DrawerPrimitive.Portal;\nconst DrawerProvider = DrawerPrimitive.Provider;\nconst DrawerIndent = DrawerPrimitive.Indent;\nconst DrawerIndentBackground = DrawerPrimitive.IndentBackground;\nconst DrawerSwipeArea = DrawerPrimitive.SwipeArea;\nconst createDrawerHandle = DrawerPrimitive.createHandle;\n// Inner region where pointer drags select text / scroll instead of swiping the drawer closed.\nconst DrawerInteractive = DrawerPrimitive.Content;\n\ntype DrawerBackdropProps = Omit<DrawerPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n} & DrawerBackdropVariantsProps;\n\n// The `drawer-backdrop` class (drawer.css) fades the overlay with the swipe gesture.\nconst DrawerBackdrop = React.forwardRef<HTMLDivElement, DrawerBackdropProps>(\n ({ className, overlay, ...props }, ref) => {\n const { resolvedOverlay } = useDrawerContext();\n const resolvedBackdropOverlay = overlay ?? resolvedOverlay;\n\n return (\n <DrawerPrimitive.Backdrop\n ref={ref}\n data-slot=\"drawer-backdrop\"\n data-overlay={resolvedBackdropOverlay}\n className={cn(drawerBackdropVariants({ overlay: resolvedBackdropOverlay }), className)}\n {...props}\n />\n );\n },\n);\nDrawerBackdrop.displayName = 'DrawerBackdrop';\n\ntype DrawerViewportProps = Omit<DrawerPrimitive.Viewport.Props, 'className'> & {\n className?: string;\n} & DrawerViewportVariantsProps;\n\n// Keep the viewport pointer-interactive: Base UI wires native drag-to-dismiss to it.\n// Floating drawers without an overlay constrain the viewport so the page behind stays interactive.\n// Floating drawers with an overlay keep a full-screen viewport so overlay-start drags stay native.\nconst DrawerViewport = React.forwardRef<HTMLDivElement, DrawerViewportProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n const layout = resolveDrawerViewportLayout(resolvedVariant, context.resolvedOverlay);\n\n return (\n <DrawerPrimitive.Viewport\n ref={ref}\n data-slot=\"drawer-viewport\"\n data-variant={resolvedVariant}\n className={cn(drawerViewportVariants({ side: resolvedSide, layout }), className)}\n {...props}\n />\n );\n },\n);\nDrawerViewport.displayName = 'DrawerViewport';\n\ntype DrawerPopupProps = Omit<DrawerPrimitive.Popup.Props, 'className'> & {\n className?: string;\n} & DrawerPopupVariantsProps;\n\nconst DrawerPopup = React.forwardRef<HTMLDivElement, DrawerPopupProps>(\n ({ className, side, variant, ...props }, ref) => {\n const context = useDrawerContext();\n const resolvedSide = side ?? context.side;\n const resolvedVariant = variant ?? context.variant;\n\n return (\n <DrawerPrimitive.Popup\n ref={ref}\n data-slot=\"drawer-popup\"\n data-variant={resolvedVariant}\n className={cn(drawerPopupVariants({ side: resolvedSide, variant: resolvedVariant }), className)}\n {...props}\n />\n );\n },\n);\nDrawerPopup.displayName = 'DrawerPopup';\n\n// Inner-content fade while a nested drawer covers the parent. Off the popup itself so border/shadow stay crisp.\nconst nestedFadeClass = cn(\n 'transition-opacity duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:duration-0',\n 'group-data-[nested-drawer-open]/popup:opacity-0',\n);\n\nconst DrawerHandleBar = () => (\n <div\n aria-hidden\n data-slot=\"drawer-handle\"\n className={cn('mx-auto my-2 h-1 w-12 shrink-0 rounded-full bg-surface5', nestedFadeClass)}\n />\n);\nDrawerHandleBar.displayName = 'DrawerHandleBar';\n\ntype DrawerFloatingSideHandleProps = {\n side: DrawerSide;\n variant: DrawerVariant;\n};\n\nconst DrawerFloatingSideHandle = ({ side, variant }: DrawerFloatingSideHandleProps) => {\n if (variant !== 'floating' || (side !== 'left' && side !== 'right')) {\n return null;\n }\n\n return (\n <div\n aria-hidden\n data-slot=\"drawer-side-handle\"\n className={cn(\n 'absolute top-1/2 z-10 flex h-20 w-5 -translate-y-1/2 touch-none select-none items-center justify-center cursor-ew-resize lg:hidden',\n side === 'right' ? '-left-2' : '-right-2',\n )}\n >\n <div className=\"h-10 w-1 rounded-full bg-surface5/80 shadow-sm\" />\n </div>\n );\n};\nDrawerFloatingSideHandle.displayName = 'DrawerFloatingSideHandle';\n\ntype DrawerContentProps = Omit<DrawerPrimitive.Popup.Props, 'className' | 'children'> & {\n className?: string;\n children?: React.ReactNode;\n /** Shows the built-in top-right close button. Defaults to `true`. */\n showCloseButton?: boolean;\n} & Pick<DrawerPopupVariantsProps, 'variant'>;\n\n// Opinionated bundle: Portal + Backdrop + Viewport + Popup, with handle on top/bottom sheets.\n// Drop to the primitives for non-modal pages, custom portal targets, or chrome outside the popup.\nconst DrawerContent = React.forwardRef<HTMLDivElement, DrawerContentProps>(\n ({ className, children, variant, showCloseButton = true, ...props }, ref) => {\n const { side, variant: contextVariant, resolvedOverlay } = useDrawerContext();\n const resolvedVariant = variant ?? contextVariant;\n const showHandle = side === 'top' || side === 'bottom';\n\n return (\n <DrawerPortal>\n {resolvedOverlay !== 'none' && <DrawerBackdrop />}\n <DrawerViewport variant={resolvedVariant}>\n <DrawerPopup ref={ref} variant={resolvedVariant} className={className} {...props}>\n {showHandle && side === 'bottom' && <DrawerHandleBar />}\n <DrawerFloatingSideHandle side={side} variant={resolvedVariant} />\n <div data-slot=\"drawer-content\" className={cn('relative flex min-h-0 flex-1 flex-col', nestedFadeClass)}>\n {showCloseButton && <DrawerDefaultCloseButton />}\n {children}\n </div>\n {showHandle && side === 'top' && <DrawerHandleBar />}\n </DrawerPopup>\n </DrawerViewport>\n </DrawerPortal>\n );\n },\n);\nDrawerContent.displayName = 'DrawerContent';\n\nconst DrawerDefaultCloseButton = () => (\n <DrawerClose asChild>\n <Button type=\"button\" variant=\"ghost\" size=\"icon-sm\" className=\"absolute top-3 right-3 z-10\" aria-label=\"Close\">\n <XIcon />\n </Button>\n </DrawerClose>\n);\nDrawerDefaultCloseButton.displayName = 'DrawerDefaultCloseButton';\n\nconst DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-header\"\n className={cn('flex flex-col gap-0.5 px-4 py-3 pr-12 text-left', className)}\n {...props}\n />\n);\nDrawerHeader.displayName = 'DrawerHeader';\n\nconst DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col-reverse gap-1.5 px-4 py-3 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n);\nDrawerFooter.displayName = 'DrawerFooter';\n\nconst DrawerBody = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div data-slot=\"drawer-body\" className={cn('flex-1 px-4 py-3', className)} {...props} />\n);\nDrawerBody.displayName = 'DrawerBody';\n\ntype DrawerTitleProps = Omit<DrawerPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerTitle = React.forwardRef<HTMLHeadingElement, DrawerTitleProps>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title ref={ref} className={cn('text-ui-md font-medium text-neutral6', className)} {...props} />\n));\nDrawerTitle.displayName = 'DrawerTitle';\n\ntype DrawerDescriptionProps = Omit<DrawerPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DrawerDescription = React.forwardRef<HTMLParagraphElement, DrawerDescriptionProps>(\n ({ className, ...props }, ref) => (\n <DrawerPrimitive.Description ref={ref} className={cn('text-ui-sm text-neutral3', className)} {...props} />\n ),\n);\nDrawerDescription.displayName = 'DrawerDescription';\n\nexport {\n Drawer,\n DrawerTrigger,\n DrawerClose,\n DrawerPortal,\n DrawerBackdrop,\n DrawerViewport,\n DrawerPopup,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerBody,\n DrawerTitle,\n DrawerDescription,\n DrawerProvider,\n DrawerIndent,\n DrawerIndentBackground,\n DrawerSwipeArea,\n DrawerInteractive,\n createDrawerHandle,\n};\n\nexport type {\n DrawerTriggerProps,\n DrawerCloseProps,\n DrawerBackdropProps,\n DrawerViewportProps,\n DrawerPopupProps,\n DrawerContentProps,\n DrawerTitleProps,\n DrawerDescriptionProps,\n};\n"],"names":["cva","cn","React","jsx","DrawerPrimitive","jsxs","Button","XIcon"],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
|
-
const Button = require('../../../Button-
|
|
9
|
-
const dataList = require('../../../data-list-
|
|
10
|
-
const inputGroup = require('../../../input-group-
|
|
8
|
+
const Button = require('../../../Button-B5RnKrGb.cjs');
|
|
9
|
+
const dataList = require('../../../data-list-BwGRWaNd.cjs');
|
|
10
|
+
const inputGroup = require('../../../input-group-QaBen5tC.cjs');
|
|
11
11
|
const skeleton = require('../../../skeleton-C0zXt2_f.cjs');
|
|
12
12
|
const utils_cn = require('../../../cn-vA5sWo9W.cjs');
|
|
13
13
|
const ee_topics_components_topicsLayout = require('../../topics/components/topics-layout.cjs.js');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { SearchIcon } from 'lucide-react';
|
|
3
3
|
import { useMemo, useState } from 'react';
|
|
4
|
-
import { B as Button } from '../../../Button-
|
|
5
|
-
import { D as DataList } from '../../../data-list-
|
|
6
|
-
import { I as InputGroup, a as InputGroupAddon, c as InputGroupInput } from '../../../input-group-
|
|
4
|
+
import { B as Button } from '../../../Button-Dh5CZ6Ir.js';
|
|
5
|
+
import { D as DataList } from '../../../data-list-By3xmGvT.js';
|
|
6
|
+
import { I as InputGroup, a as InputGroupAddon, c as InputGroupInput } from '../../../input-group-DZnJcY3U.js';
|
|
7
7
|
import { S as Skeleton } from '../../../skeleton-C5-7V8Ni.js';
|
|
8
8
|
import { c as cn } from '../../../cn-BakJzhuv.js';
|
|
9
9
|
import { TopicsLayout } from '../../topics/components/topics-layout.es.js';
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const React = require('react');
|
|
7
|
-
const select = require('../../../select-
|
|
7
|
+
const select = require('../../../select-CUMnhTBS.cjs');
|
|
8
8
|
|
|
9
9
|
const AGENT_ENTITY_TYPE = "agent";
|
|
10
10
|
function SignalsEntityFilter({ entities, selected, onChange }) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../../../select-
|
|
3
|
+
import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../../../select-LyQqK1ph.js';
|
|
4
4
|
|
|
5
5
|
const AGENT_ENTITY_TYPE = "agent";
|
|
6
6
|
function SignalsEntityFilter({ entities, selected, onChange }) {
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const Badge = require('../../../Badge-BlJpI3fY.cjs');
|
|
8
|
-
const Button = require('../../../Button-
|
|
8
|
+
const Button = require('../../../Button-B5RnKrGb.cjs');
|
|
9
9
|
const EmptyState = require('../../../EmptyState-CDPLdgbs.cjs');
|
|
10
10
|
const skeleton = require('../../../skeleton-C0zXt2_f.cjs');
|
|
11
11
|
const spinner = require('../../../spinner-BBAmiRCS.cjs');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { ArrowUpRight, CircleSlashIcon, InboxIcon, MousePointerClickIcon } from 'lucide-react';
|
|
3
3
|
import { B as Badge } from '../../../Badge-woV6OD8k.js';
|
|
4
|
-
import { B as Button } from '../../../Button-
|
|
4
|
+
import { B as Button } from '../../../Button-Dh5CZ6Ir.js';
|
|
5
5
|
import { E as EmptyState } from '../../../EmptyState-C0TShKF9.js';
|
|
6
6
|
import { S as Skeleton } from '../../../skeleton-C5-7V8Ni.js';
|
|
7
7
|
import { S as Spinner } from '../../../spinner-HCsQgpaP.js';
|
|
@@ -6,9 +6,9 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const ee_topics_utils = require('../utils.cjs.js');
|
|
9
|
-
const Button = require('../../../Button-
|
|
10
|
-
const dataList = require('../../../data-list-
|
|
11
|
-
const inputGroup = require('../../../input-group-
|
|
9
|
+
const Button = require('../../../Button-B5RnKrGb.cjs');
|
|
10
|
+
const dataList = require('../../../data-list-BwGRWaNd.cjs');
|
|
11
|
+
const inputGroup = require('../../../input-group-QaBen5tC.cjs');
|
|
12
12
|
|
|
13
13
|
function TopicTraceSummaryList({
|
|
14
14
|
traces,
|
|
@@ -2,9 +2,9 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { SearchIcon } from 'lucide-react';
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { getVisibleTraceSummaries } from '../utils.es.js';
|
|
5
|
-
import { B as Button } from '../../../Button-
|
|
6
|
-
import { D as DataList } from '../../../data-list-
|
|
7
|
-
import { I as InputGroup, a as InputGroupAddon, c as InputGroupInput } from '../../../input-group-
|
|
5
|
+
import { B as Button } from '../../../Button-Dh5CZ6Ir.js';
|
|
6
|
+
import { D as DataList } from '../../../data-list-By3xmGvT.js';
|
|
7
|
+
import { I as InputGroup, a as InputGroupAddon, c as InputGroupInput } from '../../../input-group-DZnJcY3U.js';
|
|
8
8
|
|
|
9
9
|
function TopicTraceSummaryList({
|
|
10
10
|
traces,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { c as cva } from './index-CSm06eOE.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { B as Button } from './Button-
|
|
4
|
+
import { B as Button } from './Button-Dh5CZ6Ir.js';
|
|
5
5
|
import { controlHeight } from './primitives/control-size.es.js';
|
|
6
6
|
import { inputFocusBorderWithin, inputHoverBorderWithin } from './primitives/form-element.es.js';
|
|
7
7
|
import { transitions } from './primitives/transitions.es.js';
|
|
@@ -216,4 +216,4 @@ const InputGroupButton = React.forwardRef(
|
|
|
216
216
|
InputGroupButton.displayName = "InputGroupButton";
|
|
217
217
|
|
|
218
218
|
export { InputGroup as I, InputGroupAddon as a, InputGroupButton as b, InputGroupInput as c, InputGroupText as d, InputGroupTextarea as e };
|
|
219
|
-
//# sourceMappingURL=input-group-
|
|
219
|
+
//# sourceMappingURL=input-group-DZnJcY3U.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-group-BsfrvWxb.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-group-DZnJcY3U.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
const index = require('./index-C-Lt4Bx_.cjs');
|
|
5
5
|
const React = require('react');
|
|
6
|
-
const Button = require('./Button-
|
|
6
|
+
const Button = require('./Button-B5RnKrGb.cjs');
|
|
7
7
|
const primitives_controlSize = require('./primitives/control-size.cjs.js');
|
|
8
8
|
const primitives_formElement = require('./primitives/form-element.cjs.js');
|
|
9
9
|
const primitives_transitions = require('./primitives/transitions.cjs.js');
|
|
@@ -242,4 +242,4 @@ exports.InputGroupButton = InputGroupButton;
|
|
|
242
242
|
exports.InputGroupInput = InputGroupInput;
|
|
243
243
|
exports.InputGroupText = InputGroupText;
|
|
244
244
|
exports.InputGroupTextarea = InputGroupTextarea;
|
|
245
|
-
//# sourceMappingURL=input-group-
|
|
245
|
+
//# sourceMappingURL=input-group-QaBen5tC.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-group-9m8t2boV.cjs","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["cn","transitions","inputHoverBorderWithin","inputFocusBorderWithin","cva","React","jsx","controlHeight","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input-group-QaBen5tC.cjs","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["cn","transitions","inputHoverBorderWithin","inputFocusBorderWithin","cva","React","jsx","controlHeight","Button"],"mappings":"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"}
|