@reforma/components 0.0.0 → 0.1.1
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/dist/Alert/Alert.module.css +1 -1
- package/dist/Alert/Alert.module.css.js +6 -6
- package/dist/AngleControl/AngleControl.module.css +1 -1
- package/dist/AngleControl/AngleControl.module.css.js +6 -6
- package/dist/Autocomplete/Autocomplete.module.css +1 -1
- package/dist/Autocomplete/Autocomplete.module.css.js +1 -1
- package/dist/Avatar/Avatar.module.css +1 -1
- package/dist/Avatar/Avatar.module.css.js +6 -6
- package/dist/Box/Box.module.css +1 -1
- package/dist/Box/Box.module.css.js +1 -1
- package/dist/Breadcrumb/Breadcrumb.module.css +1 -1
- package/dist/Breadcrumb/Breadcrumb.module.css.js +2 -2
- package/dist/Button/Button.module.css +1 -1
- package/dist/Button/Button.module.css.js +1 -1
- package/dist/Card/Card.module.css +1 -1
- package/dist/Card/Card.module.css.js +1 -1
- package/dist/Checkbox/Checkbox.module.css +1 -1
- package/dist/Checkbox/Checkbox.module.css.js +4 -4
- package/dist/Checkbox/CheckboxGroup.module.css +1 -1
- package/dist/Checkbox/CheckboxGroup.module.css.js +1 -1
- package/dist/CodeHighlighter/CodeHighlighter.module.css +1 -1
- package/dist/CodeHighlighter/CodeHighlighter.module.css.js +4 -4
- package/dist/CodeTextarea/CodeTextarea.module.css +1 -1
- package/dist/CodeTextarea/CodeTextarea.module.css.js +1 -1
- package/dist/ColorArea/ColorArea.module.css +1 -1
- package/dist/ColorArea/ColorArea.module.css.js +2 -2
- package/dist/ColorInput/ColorInput.module.css +1 -1
- package/dist/ColorInput/ColorInput.module.css.js +7 -7
- package/dist/ColorSlider/ColorSlider.module.css +1 -1
- package/dist/ColorSlider/ColorSlider.module.css.js +1 -1
- package/dist/ConfirmButton/ConfirmButton.module.css +1 -1
- package/dist/ConfirmButton/ConfirmButton.module.css.js +5 -5
- package/dist/ControlGroup/ControlGroup.module.css +1 -1
- package/dist/ControlGroup/ControlGroup.module.css.js +1 -1
- package/dist/CopyButton/CopyButton.d.ts.map +1 -1
- package/dist/CopyButton/CopyButton.js +58 -58
- package/dist/CopyButton/CopyButton.js.map +1 -1
- package/dist/CopyButton/CopyButton.module.css +1 -1
- package/dist/CopyButton/CopyButton.module.css.js +2 -2
- package/dist/CreateComposer/CreateComposer.module.css +1 -1
- package/dist/CreateComposer/CreateComposer.module.css.js +1 -1
- package/dist/FileDropOverlay/FileDropOverlay.module.css +1 -1
- package/dist/FileDropOverlay/FileDropOverlay.module.css.js +1 -1
- package/dist/FileUploadZone/FileUploadZone.module.css +1 -1
- package/dist/FileUploadZone/FileUploadZone.module.css.js +1 -1
- package/dist/FormField/FormField.module.css +1 -1
- package/dist/FormField/FormField.module.css.js +4 -4
- package/dist/GradientStopRange/GradientStopRange.module.css +1 -1
- package/dist/GradientStopRange/GradientStopRange.module.css.js +1 -1
- package/dist/Hotkey/Hotkey.module.css +1 -1
- package/dist/Hotkey/Hotkey.module.css.js +1 -1
- package/dist/HoverCard/HoverCard.module.css +1 -1
- package/dist/HoverCard/HoverCard.module.css.js +1 -1
- package/dist/Input/Input.module.css +1 -1
- package/dist/Input/Input.module.css.js +1 -1
- package/dist/Input/UnitInput.module.css +1 -1
- package/dist/Input/UnitInput.module.css.js +1 -1
- package/dist/LayoutGridControl/LayoutGridControl.module.css +1 -1
- package/dist/LayoutGridControl/LayoutGridControl.module.css.js +1 -1
- package/dist/Lightbox/Lightbox.module.css +1 -1
- package/dist/Lightbox/Lightbox.module.css.js +6 -6
- package/dist/List/ListBox.d.ts.map +1 -1
- package/dist/List/ListBox.js +71 -69
- package/dist/List/ListBox.js.map +1 -1
- package/dist/List/ListBox.module.css +1 -1
- package/dist/List/ListBox.module.css.js +12 -12
- package/dist/List/useListHoverHighlight.d.ts.map +1 -1
- package/dist/List/useListHoverHighlight.js +72 -67
- package/dist/List/useListHoverHighlight.js.map +1 -1
- package/dist/Loader/Loader.module.css +1 -1
- package/dist/Loader/Loader.module.css.js +1 -1
- package/dist/Marker/Marker.module.css +1 -1
- package/dist/Marker/Marker.module.css.js +2 -2
- package/dist/Modal/styles/Modal.module.css +1 -1
- package/dist/Modal/styles/Modal.module.css.js +5 -5
- package/dist/Modal/styles/Overlay.module.css +1 -1
- package/dist/Modal/styles/Overlay.module.css.js +1 -1
- package/dist/Popover/Popover.module.css +1 -1
- package/dist/Popover/Popover.module.css.js +1 -1
- package/dist/PreviewInput/PreviewInput.module.css +1 -1
- package/dist/PreviewInput/PreviewInput.module.css.js +1 -1
- package/dist/Radio/Radio.module.css +1 -1
- package/dist/Radio/Radio.module.css.js +1 -1
- package/dist/Radio/RadioGroup.module.css +1 -1
- package/dist/Radio/RadioGroup.module.css.js +1 -1
- package/dist/Resizable/Resizable.module.css +1 -1
- package/dist/Resizable/Resizable.module.css.js +1 -1
- package/dist/RichInput/RichInput.module.css +1 -1
- package/dist/RichInput/RichInput.module.css.js +1 -1
- package/dist/RichInput/RichInputTriggerMenu.module.css +1 -1
- package/dist/RichInput/RichInputTriggerMenu.module.css.js +1 -1
- package/dist/Scrollable/Scrollable.module.css +1 -1
- package/dist/Scrollable/Scrollable.module.css.js +11 -11
- package/dist/Select/Select.module.css +1 -1
- package/dist/Select/Select.module.css.js +7 -7
- package/dist/Separator/Separator.module.css +1 -1
- package/dist/Separator/Separator.module.css.js +1 -1
- package/dist/SettingsField/SettingsField.module.css +1 -1
- package/dist/SettingsField/SettingsField.module.css.js +4 -4
- package/dist/SettingsLayout/SettingsLayout.module.css +1 -1
- package/dist/SettingsLayout/SettingsLayout.module.css.js +8 -8
- package/dist/Shimmer/Shimmer.module.css +1 -1
- package/dist/Shimmer/Shimmer.module.css.js +2 -2
- package/dist/SortableList/SortableList.module.css +1 -1
- package/dist/SortableList/SortableList.module.css.js +1 -1
- package/dist/Spinner/Spinner.module.css +1 -1
- package/dist/Spinner/Spinner.module.css.js +12 -12
- package/dist/Swatch/Swatch.module.css +1 -1
- package/dist/Swatch/Swatch.module.css.js +4 -4
- package/dist/Switch/Switch.module.css +1 -1
- package/dist/Switch/Switch.module.css.js +5 -5
- package/dist/Table/Table.module.css +1 -1
- package/dist/Table/Table.module.css.js +12 -12
- package/dist/Tag/Tag.module.css +1 -1
- package/dist/Tag/Tag.module.css.js +12 -12
- package/dist/Terminal/Terminal.module.css +1 -1
- package/dist/Terminal/Terminal.module.css.js +7 -7
- package/dist/Text/Text.module.css +1 -1
- package/dist/Text/Text.module.css.js +12 -12
- package/dist/Textarea/Textarea.module.css +1 -1
- package/dist/Textarea/Textarea.module.css.js +1 -1
- package/dist/Toast/Toast.module.css +1 -1
- package/dist/Toast/Toast.module.css.js +1 -1
- package/dist/ToggleButtonGroup/ToggleButtonGroup.module.css +1 -1
- package/dist/ToggleButtonGroup/ToggleButtonGroup.module.css.js +5 -5
- package/dist/Tooltip/HelpTip.module.css +1 -1
- package/dist/Tooltip/HelpTip.module.css.js +1 -1
- package/dist/Tooltip/Tooltip.module.css +1 -1
- package/dist/Tooltip/Tooltip.module.css.js +2 -2
- package/dist/Xterm/Xterm.module.css +1 -1
- package/dist/Xterm/Xterm.module.css.js +1 -1
- package/dist/chat/Approval/Approval.module.css +1 -1
- package/dist/chat/Approval/Approval.module.css.js +1 -1
- package/dist/chat/Attachment/Attachment.module.css +1 -1
- package/dist/chat/Attachment/Attachment.module.css.js +12 -12
- package/dist/chat/Chip/Chip.module.css +1 -1
- package/dist/chat/Chip/Chip.module.css.js +7 -7
- package/dist/chat/Chip/ChipContent.module.css +1 -1
- package/dist/chat/Chip/ChipContent.module.css.js +5 -5
- package/dist/chat/ComposerBanner/ComposerBanner.module.css +1 -1
- package/dist/chat/ComposerBanner/ComposerBanner.module.css.js +1 -1
- package/dist/chat/Conversation/Conversation.module.css +1 -1
- package/dist/chat/Conversation/Conversation.module.css.js +9 -9
- package/dist/chat/Conversation/ConversationPendingLoader.module.css +1 -1
- package/dist/chat/Conversation/ConversationPendingLoader.module.css.js +2 -2
- package/dist/chat/Message/segments/MessagePhaseSection.module.css +1 -1
- package/dist/chat/Message/segments/MessagePhaseSection.module.css.js +5 -5
- package/dist/chat/Message/turn/Message.module.css +1 -1
- package/dist/chat/Message/turn/Message.module.css.js +10 -10
- package/dist/chat/Sources/Sources.module.css +1 -1
- package/dist/chat/Sources/Sources.module.css.js +6 -6
- package/dist/chat/Tool/agent/AgentTool.module.css +1 -1
- package/dist/chat/Tool/agent/AgentTool.module.css.js +1 -1
- package/dist/chat/Tool/ask-user-question/AskUserQuestionTool.module.css +1 -1
- package/dist/chat/Tool/ask-user-question/AskUserQuestionTool.module.css.js +17 -17
- package/dist/chat/Tool/bash/BashTool.module.css +1 -1
- package/dist/chat/Tool/bash/BashTool.module.css.js +2 -2
- package/dist/chat/Tool/choose-design-direction/ChooseDesignDirectionTool.module.css +1 -1
- package/dist/chat/Tool/choose-design-direction/ChooseDesignDirectionTool.module.css.js +16 -16
- package/dist/chat/Tool/default/Default.module.css +1 -1
- package/dist/chat/Tool/default/Default.module.css.js +1 -1
- package/dist/chat/Tool/edit/EditTool.module.css +1 -1
- package/dist/chat/Tool/edit/EditTool.module.css.js +1 -1
- package/dist/chat/Tool/grep/GrepTool.module.css +1 -1
- package/dist/chat/Tool/grep/GrepTool.module.css.js +1 -1
- package/dist/chat/Tool/image-asset/ImageAssetTool.module.css +1 -1
- package/dist/chat/Tool/image-asset/ImageAssetTool.module.css.js +12 -12
- package/dist/chat/Tool/integration-card/IntegrationActionCard.module.css +1 -1
- package/dist/chat/Tool/integration-card/IntegrationActionCard.module.css.js +1 -1
- package/dist/chat/Tool/plan/CreatePlanTool.module.css.js +5 -5
- package/dist/chat/Tool/scaffold-project/ScaffoldProjectTool.module.css +1 -1
- package/dist/chat/Tool/scaffold-project/ScaffoldProjectTool.module.css.js +1 -1
- package/dist/chat/Tool/shell/ToolHoverCard.module.css +1 -1
- package/dist/chat/Tool/shell/ToolHoverCard.module.css.js +8 -8
- package/dist/chat/Tool/shell/ToolLineCounts.module.css +1 -1
- package/dist/chat/Tool/shell/ToolLineCounts.module.css.js +1 -1
- package/dist/chat/Tool/shell/ToolPathListHoverCard.module.css +1 -1
- package/dist/chat/Tool/shell/ToolPathListHoverCard.module.css.js +5 -5
- package/dist/chat/Tool/shell/ToolShell.module.css +1 -1
- package/dist/chat/Tool/shell/ToolShell.module.css.js +1 -1
- package/dist/chat/Tool/shell/ToolShellCard.module.css +1 -1
- package/dist/chat/Tool/shell/ToolShellCard.module.css.js +1 -1
- package/dist/chat/Tool/shell/ToolSummaryBadge.module.css +1 -1
- package/dist/chat/Tool/shell/ToolSummaryBadge.module.css.js +4 -4
- package/dist/index.css +0 -0
- package/package.json +6 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const o = "
|
|
1
|
+
const o = "LayoutGridControl_root_vjOvyd", t = "LayoutGridControl_cell_2mHxBF", l = "LayoutGridControl_glyph_DD6P0z", r = "LayoutGridControl_previewGlyph_RjMUxO", y = "LayoutGridControl_dot_3tAGuU", e = "LayoutGridControl_glyphItem_9FVJxh", n = "LayoutGridControl_overlay_FgZwpS", a = "LayoutGridControl_overlayBox_KbTfWf", _ = {
|
|
2
2
|
root: o,
|
|
3
3
|
cell: t,
|
|
4
4
|
glyph: l,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
.Lightbox_overlay_34X83O:before{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.Lightbox_overlay_34X83O[data-modal-overlay].Lightbox_overlay_34X83O{--lightbox-inset: var(--spacing-xl);--lightbox-image-max-height: calc(100dvh - 2 * var(--lightbox-inset) - var(--modal-title-height));padding:var(--lightbox-inset);overflow:hidden}.Lightbox_overlay_34X83O[data-modal-overlay] .Lightbox_window_DLp2ZB[data-modal-window]{width:-moz-fit-content;width:fit-content;max-width:100%;height:auto;max-height:100%}.Lightbox_overlay_34X83O[data-modal-overlay] [data-modal-data]{min-width:0;max-width:100%;height:auto;max-height:none}.Lightbox_window_DLp2ZB[data-modal-window]{--modal-border: 0;outline:2px solid var(--color-secondary-muted-border);overflow:hidden}.Lightbox_window_DLp2ZB [data-modal-title]{width:0;min-width:100%}.Lightbox_window_DLp2ZB [data-modal-title]>:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Lightbox_image_QqCcRQ{display:block;background-image:repeating-conic-gradient(color-mix(in srgb,var(--color-black) 14%,transparent) 0% 25%,transparent 0% 50%);background-size:1rem 1rem;background-color:var(--color-white);width:auto;max-width:100%;height:auto;max-height:var(--lightbox-image-max-height)}@media(max-width:639px){.Lightbox_overlay_34X83O[data-modal-overlay].Lightbox_overlay_34X83O{--lightbox-inset: var(--spacing-sm)}}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const o = "
|
|
1
|
+
const o = "Lightbox_overlay_34X83O", t = "Lightbox_window_DLp2ZB", e = "Lightbox_image_QqCcRQ", i = {
|
|
2
2
|
overlay: o,
|
|
3
|
-
window:
|
|
4
|
-
image:
|
|
3
|
+
window: t,
|
|
4
|
+
image: e
|
|
5
5
|
};
|
|
6
6
|
export {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
i as default,
|
|
8
|
+
e as image,
|
|
9
9
|
o as overlay,
|
|
10
|
-
|
|
10
|
+
t as window
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=Lightbox.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListBox.d.ts","sourceRoot":"","sources":["../../src/List/ListBox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAKH,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,GAAG,EACR,KAAK,mBAAmB,EACxB,KAAK,YAAY,IAAI,eAAe,EACvC,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5D,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,mBAAmB;aAC5B,SAAS,EAAE,YAAY;aACvB,YAAY,EAAE,eAAe;aAC7B,QAAQ,EAAE,WAAW;IACrB,wCAAwC;aACxC,QAAQ,EAAE,WAAW;CACf,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAE/F,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAC7E,gBAAgB,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEJ,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;IAC9G,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,sGAAsG;IACtG,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"ListBox.d.ts","sourceRoot":"","sources":["../../src/List/ListBox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAKH,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,GAAG,EACR,KAAK,mBAAmB,EACxB,KAAK,YAAY,IAAI,eAAe,EACvC,MAAM,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5D,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,mBAAmB;aAC5B,SAAS,EAAE,YAAY;aACvB,YAAY,EAAE,eAAe;aAC7B,QAAQ,EAAE,WAAW;IACrB,wCAAwC;aACxC,QAAQ,EAAE,WAAW;CACf,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAE/F,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAC7E,gBAAgB,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEJ,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;IAC9G,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,sGAAsG;IACtG,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAgBD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,EACtC,SAAS,EACT,IAAW,EACX,aAAsB,EACtB,YAAY,EACZ,iBAA0B,EAC1B,WAAkB,EAClB,GAAG,EACH,GAAG,KAAK,EACX,EAAE,qBAAqB,CAAC,CAAC,CAAC,+BAuB1B;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,EAC1C,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACX,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;CAAE,+BAuBrD;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,+BAEhH;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BAE/F"}
|
package/dist/List/ListBox.js
CHANGED
|
@@ -1,100 +1,102 @@
|
|
|
1
|
-
import { toSet as
|
|
2
|
-
import { useRef as
|
|
3
|
-
import { ListBox as
|
|
1
|
+
import { toSet as y, cn as f, mergeRefs as S } from "@reforma/lib";
|
|
2
|
+
import { useRef as B, useState as p } from "react";
|
|
3
|
+
import { ListBox as v, Header as H, ListBoxItem as I, ListBoxSection as R } from "react-aria-components";
|
|
4
4
|
import o from "./ListBox.module.css.js";
|
|
5
|
-
import { renderListRowItemContent as
|
|
6
|
-
import { useListHoverHighlight as
|
|
7
|
-
import { useScrollActiveListItem as
|
|
5
|
+
import { renderListRowItemContent as h } from "./listRowItemContent.js";
|
|
6
|
+
import { useListHoverHighlight as K } from "./useListHoverHighlight.js";
|
|
7
|
+
import { useScrollActiveListItem as g } from "./useScrollActiveListItem.js";
|
|
8
8
|
import { jsx as l } from "react/jsx-runtime";
|
|
9
|
-
const
|
|
9
|
+
const A = {
|
|
10
10
|
itemHover: "item-hover",
|
|
11
11
|
itemSelected: "item-selected",
|
|
12
12
|
itemBoth: "item-both",
|
|
13
13
|
/** Visible until the row is hovered. */
|
|
14
14
|
itemRest: "item-rest"
|
|
15
15
|
};
|
|
16
|
+
function N(e, t) {
|
|
17
|
+
if (e.size !== t.size)
|
|
18
|
+
return !1;
|
|
19
|
+
for (const s of e)
|
|
20
|
+
if (!t.has(s))
|
|
21
|
+
return !1;
|
|
22
|
+
return !0;
|
|
23
|
+
}
|
|
16
24
|
function C({
|
|
17
|
-
className:
|
|
18
|
-
size:
|
|
19
|
-
selectionMode:
|
|
20
|
-
selectedKeys:
|
|
21
|
-
escapeKeyBehavior:
|
|
22
|
-
interactive:
|
|
25
|
+
className: e,
|
|
26
|
+
size: t = "sm",
|
|
27
|
+
selectionMode: s = "none",
|
|
28
|
+
selectedKeys: u,
|
|
29
|
+
escapeKeyBehavior: x = "none",
|
|
30
|
+
interactive: i = !0,
|
|
23
31
|
ref: r,
|
|
24
|
-
...
|
|
32
|
+
...d
|
|
25
33
|
}) {
|
|
26
|
-
const
|
|
27
|
-
return N(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
selectionMode: i,
|
|
37
|
-
selectedKeys: a,
|
|
38
|
-
escapeKeyBehavior: f,
|
|
39
|
-
"data-size": e,
|
|
40
|
-
"data-interactive": s || void 0,
|
|
41
|
-
...u
|
|
34
|
+
const a = B(null), m = y(u), [n, c] = p(m);
|
|
35
|
+
return N(n, m) || c(m), K(a, i), /* @__PURE__ */ l(v, {
|
|
36
|
+
ref: S(a, r),
|
|
37
|
+
className: f(o.list, e),
|
|
38
|
+
selectionMode: s,
|
|
39
|
+
selectedKeys: n,
|
|
40
|
+
escapeKeyBehavior: x,
|
|
41
|
+
"data-size": t,
|
|
42
|
+
"data-interactive": i || void 0,
|
|
43
|
+
...d
|
|
42
44
|
});
|
|
43
45
|
}
|
|
44
|
-
function
|
|
45
|
-
startAffix:
|
|
46
|
-
icon:
|
|
47
|
-
text:
|
|
48
|
-
description:
|
|
49
|
-
endAffix:
|
|
50
|
-
stacked:
|
|
46
|
+
function q({
|
|
47
|
+
startAffix: e,
|
|
48
|
+
icon: t,
|
|
49
|
+
text: s,
|
|
50
|
+
description: u,
|
|
51
|
+
endAffix: x,
|
|
52
|
+
stacked: i,
|
|
51
53
|
children: r,
|
|
52
|
-
className:
|
|
53
|
-
isDanger:
|
|
54
|
-
ref:
|
|
55
|
-
...
|
|
54
|
+
className: d,
|
|
55
|
+
isDanger: a,
|
|
56
|
+
ref: m,
|
|
57
|
+
...n
|
|
56
58
|
}) {
|
|
57
|
-
const
|
|
58
|
-
return
|
|
59
|
-
ref:
|
|
60
|
-
className:
|
|
59
|
+
const c = B(null), L = s || n.textValue || (typeof r == "string" ? r : void 0);
|
|
60
|
+
return g(c), /* @__PURE__ */ l(I, {
|
|
61
|
+
ref: S(c, m),
|
|
62
|
+
className: f(o.item, i && o.itemStacked, a && o.itemDanger, d),
|
|
61
63
|
textValue: L,
|
|
62
|
-
...
|
|
63
|
-
children:
|
|
64
|
-
icon:
|
|
65
|
-
description:
|
|
66
|
-
startAffix:
|
|
67
|
-
endAffix:
|
|
68
|
-
stacked:
|
|
64
|
+
...n,
|
|
65
|
+
children: h(r, {
|
|
66
|
+
icon: t,
|
|
67
|
+
description: u,
|
|
68
|
+
startAffix: e,
|
|
69
|
+
endAffix: x,
|
|
70
|
+
stacked: i,
|
|
69
71
|
textValue: L
|
|
70
72
|
})
|
|
71
73
|
});
|
|
72
74
|
}
|
|
73
|
-
function
|
|
74
|
-
className:
|
|
75
|
-
sticky:
|
|
76
|
-
...
|
|
75
|
+
function E({
|
|
76
|
+
className: e,
|
|
77
|
+
sticky: t,
|
|
78
|
+
...s
|
|
77
79
|
}) {
|
|
78
|
-
return /* @__PURE__ */ l(
|
|
79
|
-
className:
|
|
80
|
-
...
|
|
81
|
-
"data-sticky":
|
|
80
|
+
return /* @__PURE__ */ l(H, {
|
|
81
|
+
className: f(o.sectionHeader, e),
|
|
82
|
+
...s,
|
|
83
|
+
"data-sticky": t || void 0
|
|
82
84
|
});
|
|
83
85
|
}
|
|
84
|
-
function
|
|
85
|
-
className:
|
|
86
|
-
...
|
|
86
|
+
function F({
|
|
87
|
+
className: e,
|
|
88
|
+
...t
|
|
87
89
|
}) {
|
|
88
90
|
return /* @__PURE__ */ l(R, {
|
|
89
|
-
className:
|
|
90
|
-
...
|
|
91
|
+
className: f(o.section, e),
|
|
92
|
+
...t
|
|
91
93
|
});
|
|
92
94
|
}
|
|
93
95
|
export {
|
|
94
96
|
C as ListBox,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
E as ListBoxHeader,
|
|
98
|
+
q as ListBoxItem,
|
|
99
|
+
F as ListBoxSection,
|
|
100
|
+
A as listBoxItemDataShow
|
|
99
101
|
};
|
|
100
102
|
//# sourceMappingURL=ListBox.js.map
|
package/dist/List/ListBox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListBox.js","sources":["../../src/List/ListBox.tsx"],"sourcesContent":["import { cn, mergeRefs, toSet, type SelectionInput } from '@reforma/lib';\nimport {
|
|
1
|
+
{"version":3,"file":"ListBox.js","sources":["../../src/List/ListBox.tsx"],"sourcesContent":["import { cn, mergeRefs, toSet, type SelectionInput } from '@reforma/lib';\nimport { useRef, useState } from 'react';\nimport {\n Header as AriaHeader,\n ListBox as AriaListBox,\n ListBoxItem as AriaListBoxItem,\n ListBoxSection as AriaListBoxSection,\n type ListBoxItemProps as AriaListBoxItemProps,\n type Key,\n type ListBoxSectionProps,\n type ListBoxProps as RACListBoxProps,\n} from 'react-aria-components';\n\nimport styles from './ListBox.module.css';\nimport { renderListRowItemContent } from './listRowItemContent';\nimport { useListHoverHighlight } from './useListHoverHighlight';\nimport { useScrollActiveListItem } from './useScrollActiveListItem';\n\nimport type { HTMLAttributes, ReactNode, Ref } from 'react';\n\nexport type { ListBoxProps, ListBoxSectionProps } from 'react-aria-components';\n\nexport type ListBoxSize = 'sm' | 'md' | 'lg';\n\n/**\n * Valid `data-show` values on any descendant of a shared list row (e.g. a control in `endAffix`).\n * {@link GridListItem} and {@link ListBoxItem} both use `ListBox.module.css` (`.item`); name is historical.\n */\nexport const listBoxItemDataShow = {\n itemHover: 'item-hover',\n itemSelected: 'item-selected',\n itemBoth: 'item-both',\n /** Visible until the row is hovered. */\n itemRest: 'item-rest',\n} as const;\n\nexport type ListBoxItemDataShow = typeof listBoxItemDataShow[keyof typeof listBoxItemDataShow];\n\nexport interface ListBoxItemSlots {\n icon?: ReactNode;\n description?: ReactNode;\n startAffix?: ReactNode;\n endAffix?: ReactNode;\n stacked?: boolean;\n}\n\nexport type ListBoxItemProps<T extends object = object> = AriaListBoxItemProps<T>\n & ListBoxItemSlots & {\n text?: string;\n isDanger?: boolean;\n };\n\nexport interface ListBoxComponentProps<T extends object = object> extends Omit<RACListBoxProps<T>, 'selectedKeys'> {\n ref?: Ref<HTMLDivElement>;\n size?: ListBoxSize;\n /** Selected key(s). Pass a single Key, array, or Iterable (e.g. Set). */\n selectedKeys?: SelectionInput<Key>;\n /** When false, items do not show hover background. Use for plain/display-only lists. Default true. */\n interactive?: boolean;\n}\n\nfunction sameKeys<T>(left: Set<T>, right: Set<T>): boolean {\n if (left.size !== right.size) {\n return false;\n }\n\n for (const key of left) {\n if (!right.has(key)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * **List surface for option-like rows** (arrow-key listbox UX, ComboBox / Select overlays). Rows should not contain nested widgets that require Tab —\n * use {@link GridList} with `keyboardNavigationBehavior=\"tab\"` instead.\n *\n * Styled like {@link GridList} via shared `ListBox.module.css`; choose by interaction model and RAC composition (Select renders `ListBox`, not GridList).\n */\nexport function ListBox<T extends object>({\n className,\n size = 'sm',\n selectionMode = 'none',\n selectedKeys,\n escapeKeyBehavior = 'none',\n interactive = true,\n ref,\n ...props\n}: ListBoxComponentProps<T>) {\n const listRef = useRef<HTMLDivElement>(null);\n const nextKeys = toSet(selectedKeys);\n const [ selectedKeysSet, setSelectedKeysSet ] = useState(nextKeys);\n\n if (!sameKeys(selectedKeysSet, nextKeys)) {\n setSelectedKeysSet(nextKeys);\n }\n\n useListHoverHighlight(listRef, interactive);\n\n return (\n <AriaListBox\n ref={ mergeRefs(listRef, ref as Ref<HTMLDivElement>) }\n className={ cn(styles.list, className) }\n selectionMode={ selectionMode }\n selectedKeys={ selectedKeysSet }\n escapeKeyBehavior={ escapeKeyBehavior }\n data-size={ size }\n data-interactive={ interactive || undefined }\n { ...props }\n />\n );\n}\n\nexport function ListBoxItem<T extends object>({\n startAffix,\n icon,\n text,\n description,\n endAffix,\n stacked,\n children,\n className,\n isDanger,\n ref,\n ...props\n}: ListBoxItemProps<T> & { ref?: Ref<HTMLDivElement> }) {\n const itemRef = useRef<HTMLDivElement>(null);\n const textValue = text || props.textValue || (typeof children === 'string' ? children : undefined);\n\n useScrollActiveListItem(itemRef);\n\n return (\n <AriaListBoxItem\n ref={ mergeRefs(itemRef, ref) }\n className={ cn(styles.item, stacked && styles.itemStacked, isDanger && styles.itemDanger, className) }\n textValue={ textValue }\n { ...props }\n >\n { renderListRowItemContent(children, {\n icon,\n description,\n startAffix,\n endAffix,\n stacked,\n textValue,\n }) }\n </AriaListBoxItem>\n );\n}\n\nexport function ListBoxHeader({ className, sticky, ...props }: HTMLAttributes<HTMLElement> & { sticky?: boolean }) {\n return <AriaHeader className={ cn(styles.sectionHeader, className) } { ...props } data-sticky={ sticky || undefined } />;\n}\n\nexport function ListBoxSection<T extends object>({ className, ...props }: ListBoxSectionProps<T>) {\n return <AriaListBoxSection className={ cn(styles.section, className) } { ...props } />;\n}\n"],"names":["listBoxItemDataShow","sameKeys","left","right","key","ListBox","className","size","selectionMode","selectedKeys","escapeKeyBehavior","interactive","ref","props","listRef","useRef","nextKeys","toSet","selectedKeysSet","setSelectedKeysSet","useState","useListHoverHighlight","AriaListBox","mergeRefs","cn","styles","ListBoxItem","startAffix","icon","text","description","endAffix","stacked","children","isDanger","itemRef","textValue","useScrollActiveListItem","AriaListBoxItem","renderListRowItemContent","ListBoxHeader","sticky","AriaHeader","ListBoxSection","AriaListBoxSection"],"mappings":";;;;;;;;AAYO,MAAMA,IAAsB;AAAA,EACjC,WAAW;AAAA,EACX,cAAc;AAAA,EACd,UAAU;AAAA;AAAA,EAEV,UAAU;AACZ;AACA,SAASC,EAASC,GAAMC,GAAO;AAC7B,MAAID,EAAK,SAASC,EAAM;AACtB,WAAO;AAET,aAAWC,KAAOF;AAChB,QAAI,CAACC,EAAM,IAAIC,CAAG;AAChB,aAAO;AAGX,SAAO;AACT;AAQO,SAASC,EAAQ;AAAA,EACtB,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,eAAAC,IAAgB;AAAA,EAChB,cAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,aAAAC,IAAc;AAAA,EACd,KAAAC;AAAA,EACA,GAAGC;AACL,GAAG;AACD,QAAMC,IAAUC,EAAO,IAAI,GACrBC,IAAWC,EAAMR,CAAY,GAC7B,CAACS,GAAiBC,CAAkB,IAAIC,EAASJ,CAAQ;AAC/D,SAAKf,EAASiB,GAAiBF,CAAQ,KACrCG,EAAmBH,CAAQ,GAE7BK,EAAsBP,GAASH,CAAW,qBACjBW,GAAa;AAAA,IACpC,KAAKC,EAAUT,GAASF,CAAG;AAAA,IAC3B,WAAWY,EAAGC,EAAO,MAAMnB,CAAS;AAAA,IACpC,eAAAE;AAAA,IACA,cAAcU;AAAA,IACd,mBAAAR;AAAA,IACA,aAAaH;AAAA,IACb,oBAAoBI,KAAe;AAAA,IACnC,GAAGE;AAAA,EAAA,CACJ;AACH;AACO,SAASa,EAAY;AAAA,EAC1B,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAA3B;AAAA,EACA,UAAA4B;AAAA,EACA,KAAAtB;AAAA,EACA,GAAGC;AACL,GAAG;AACD,QAAMsB,IAAUpB,EAAO,IAAI,GACrBqB,IAAYP,KAAQhB,EAAM,cAAc,OAAOoB,KAAa,WAAWA,IAAW;AACxF,SAAAI,EAAwBF,CAAO,qBACNG,GAAiB;AAAA,IACxC,KAAKf,EAAUY,GAASvB,CAAG;AAAA,IAC3B,WAAWY,EAAGC,EAAO,MAAMO,KAAWP,EAAO,aAAaS,KAAYT,EAAO,YAAYnB,CAAS;AAAA,IAClG,WAAA8B;AAAA,IACA,GAAGvB;AAAA,IACH,UAAU0B,EAAyBN,GAAU;AAAA,MAC3C,MAAAL;AAAA,MACA,aAAAE;AAAA,MACA,YAAAH;AAAA,MACA,UAAAI;AAAA,MACA,SAAAC;AAAA,MACA,WAAAI;AAAA,IAAA,CACD;AAAA,EAAA,CACF;AACH;AACO,SAASI,EAAc;AAAA,EAC5B,WAAAlC;AAAA,EACA,QAAAmC;AAAA,EACA,GAAG5B;AACL,GAAG;AACD,2BAAyB6B,GAAY;AAAA,IACnC,WAAWlB,EAAGC,EAAO,eAAenB,CAAS;AAAA,IAC7C,GAAGO;AAAA,IACH,eAAe4B,KAAU;AAAA,EAAA,CAC1B;AACH;AACO,SAASE,EAAe;AAAA,EAC7B,WAAArC;AAAA,EACA,GAAGO;AACL,GAAG;AACD,2BAAyB+B,GAAoB;AAAA,IAC3C,WAAWpB,EAAGC,EAAO,SAASnB,CAAS;AAAA,IACvC,GAAGO;AAAA,EAAA,CACJ;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.
|
|
1
|
+
@layer components{.ListBox_list_JpvdtZ{--reforma-listbox-gap: var(--spacing-xxs);--reforma-listbox-item-radius: var(--radius-sm);--reforma-listbox-item-height: var(--spacing-30);--reforma-listbox-item-padding-inline: var(--spacing-lg);--reforma-listbox-item-padding: var(--spacing-sm) var(--reforma-listbox-item-padding-inline);--reforma-listbox-item-color: var(--color-text);--reforma-listbox-item-color--hover: var(--color-text);--reforma-listbox-item-bg--hover: var(--color-secondary-muted-light);--reforma-listbox-item-bg--selected: var(--color-secondary-muted);--reforma-listbox-item-color--selected: var(--color-secondary-content);--reforma-listbox-highlight-top: 0px;--reforma-listbox-highlight-left: 0px;--reforma-listbox-highlight-width: 0px;--reforma-listbox-highlight-height: 0px;--reforma-listbox-highlight-opacity: 0;--reforma-listbox-highlight-ease: cubic-bezier(.16, 1, .3, 1);--reforma-menu-separator-space: var(--spacing-xs);display:flex;position:relative;flex-direction:column;gap:var(--reforma-listbox-gap);width:100%}.ListBox_list_JpvdtZ[data-interactive]:before{position:absolute;top:var(--reforma-listbox-highlight-top);left:var(--reforma-listbox-highlight-left);opacity:var(--reforma-listbox-highlight-opacity);border-radius:calc(var(--reforma-listbox-item-radius) * var(--squircle-radius-factor));width:var(--reforma-listbox-highlight-width);height:var(--reforma-listbox-highlight-height);content:"";corner-shape:superellipse(var(--squircle-value));z-index:0;transition:opacity .1s;background-color:var(--reforma-listbox-item-bg--hover);pointer-events:none}.ListBox_list_JpvdtZ[data-interactive][data-highlight-ready]:before{transition:top var(--transition-duration-fast) var(--reforma-listbox-highlight-ease),left var(--transition-duration-fast) var(--reforma-listbox-highlight-ease),width var(--transition-duration-fast) var(--reforma-listbox-highlight-ease),height var(--transition-duration-fast) var(--reforma-listbox-highlight-ease),opacity .1s}.ListBox_list_JpvdtZ[data-interactive][data-highlight-danger]:before{background-color:var(--color-danger-muted-light)}.ListBox_scrollableContainer_geIIr1{width:100%}.ListBox_menuList_sQN3eW{outline:none}.ListBox_list_JpvdtZ[data-empty]{justify-content:center;align-items:center;padding:var(--spacing-md) var(--spacing-lg);min-height:var(--reforma-listbox-item-height);color:var(--color-secondary-muted-text);font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm);font-family:Onest,sans-serif;letter-spacing:0;text-align:center}.ListBox_item_8cmHfh{display:flex;position:relative;align-items:center;gap:var(--spacing-10);border-radius:calc(var(--reforma-listbox-item-radius) * var(--squircle-radius-factor));padding:var(--reforma-listbox-item-padding);width:100%;min-width:0;min-height:var(--reforma-listbox-item-height);corner-shape:superellipse(var(--squircle-value));z-index:1;cursor:pointer;outline:none;color:var(--reforma-listbox-item-color);-webkit-user-select:none;-moz-user-select:none;isolation:isolate;user-select:none;text-decoration:none}.ListBox_item_8cmHfh:has([data-hotkey]){padding-inline-end:var(--spacing-sm)}.ListBox_item_8cmHfh:has([slot=endAffix] button){padding-inline-end:calc((var(--reforma-listbox-item-height) - var(--spacing-24)) / 2)}.ListBox_item_8cmHfh:before{position:absolute;inset:0;border-radius:inherit;content:"";corner-shape:inherit;z-index:-1;transition:background-color var(--transition-duration-fast),border-radius var(--transition-duration-fast)}.ListBox_list_JpvdtZ[data-size=sm]{--reforma-listbox-item-radius: var(--radius-sm);--reforma-listbox-item-height: var(--spacing-30);--reforma-listbox-item-padding-inline: var(--spacing-lg);--reforma-listbox-item-padding: var(--spacing-sm) var(--reforma-listbox-item-padding-inline)}.ListBox_list_JpvdtZ[data-size=sm] .ListBox_itemLabel_ctFOvE{font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm);font-family:Onest,sans-serif;letter-spacing:0}.ListBox_list_JpvdtZ[data-size=md]{--reforma-listbox-item-radius: var(--radius-md);--reforma-listbox-item-height: var(--spacing-36);--reforma-listbox-item-padding-inline: var(--spacing-lg);--reforma-listbox-item-padding: var(--spacing-sm) var(--reforma-listbox-item-padding-inline)}.ListBox_list_JpvdtZ[data-size=md] .ListBox_itemLabel_ctFOvE{font-weight:400;font-size:var(--text-md);line-height:var(--leading-md);font-family:Onest,sans-serif;letter-spacing:0}.ListBox_list_JpvdtZ[data-size=lg]{--reforma-listbox-item-radius: var(--radius-lg);--reforma-listbox-item-height: var(--spacing-56);--reforma-listbox-item-padding-inline: var(--spacing-16);--reforma-listbox-item-padding: var(--spacing-10) var(--reforma-listbox-item-padding-inline)}.ListBox_list_JpvdtZ[data-size=lg] .ListBox_item_8cmHfh:has([data-hotkey]){padding-inline-end:var(--spacing-10)}.ListBox_list_JpvdtZ[data-size=lg] .ListBox_itemLabel_ctFOvE{font-weight:400;font-size:var(--text-lg);line-height:var(--leading-lg);font-family:Onest,sans-serif;letter-spacing:0}.ListBox_list_JpvdtZ[data-interactive] .ListBox_item_8cmHfh:hover:not([data-disabled]):not([data-selected]):not([data-highlighted]),.ListBox_item_8cmHfh:is([data-hovered],[data-focus-visible]):not([data-disabled]):not([data-selected]):not([data-highlighted]),.ListBox_item_8cmHfh[data-open]:not([data-disabled]):not([data-selected]):not([data-highlighted]){color:var(--reforma-listbox-item-color--hover)}.ListBox_item_8cmHfh[data-selected]:before,.ListBox_item_8cmHfh[data-highlighted]:before{background-color:var(--reforma-listbox-item-bg--selected)}.ListBox_item_8cmHfh[data-selected],.ListBox_item_8cmHfh[data-highlighted]{color:var(--reforma-listbox-item-color--selected)}.ListBox_list_JpvdtZ .ListBox_item_8cmHfh[data-selected]+.ListBox_item_8cmHfh[data-selected]{border-start-start-radius:0;border-start-end-radius:0}:is(.ListBox_list_JpvdtZ .ListBox_item_8cmHfh[data-selected]+.ListBox_item_8cmHfh[data-selected]):before{top:-1px}.ListBox_list_JpvdtZ .ListBox_item_8cmHfh[data-selected]:has(+.ListBox_item_8cmHfh[data-selected]){border-end-start-radius:0;border-end-end-radius:0}:is(.ListBox_list_JpvdtZ .ListBox_item_8cmHfh[data-selected]:has(+.ListBox_item_8cmHfh[data-selected])):before{bottom:-1px}.ListBox_item_8cmHfh[data-disabled]{opacity:var(--opacity-disabled);cursor:default}.ListBox_item_8cmHfh[data-focus-visible]{outline:none}.ListBox_item_8cmHfh[data-dragging]{display:none}.ListBox_list_JpvdtZ .react-aria-DropIndicator{margin-block:calc(var(--reforma-listbox-gap) * -1);padding:0;height:0;min-height:0;overflow:visible;pointer-events:none}.ListBox_itemDanger_ttnXKb{--reforma-listbox-item-color: var(--color-danger-text);--reforma-listbox-item-color--hover: var(--color-danger-text);--reforma-listbox-item-bg--hover: var(--color-danger-muted-light)}.ListBox_itemStart_2AUJbr{display:flex;flex:1 1 0;align-items:center;gap:var(--spacing-md);min-width:0}.ListBox_itemStacked_Quxi99{padding-block:var(--spacing-8);min-height:auto}.ListBox_itemStacked_Quxi99 .ListBox_itemStart_2AUJbr{align-items:flex-start}.ListBox_itemCopy_GCZhjt{display:flex;flex-direction:column;gap:1px;width:100%;min-width:0}.ListBox_itemCopy_GCZhjt .ListBox_itemLabel_ctFOvE{flex:0 1 auto;width:100%}.ListBox_itemEnd_o6zHrW{display:flex;flex:0 1 auto;justify-content:flex-end;align-items:center;gap:var(--spacing-md);min-width:0;max-width:60%}.ListBox_itemEnd_o6zHrW:empty{display:none}.ListBox_itemLabel_ctFOvE{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ListBox_itemDescription_SoJbTP{min-width:0;overflow:hidden;color:var(--color-secondary-muted-text);font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm);font-family:Onest,sans-serif;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.ListBox_itemStartAffix_BjHXOp{display:flex;flex-shrink:0;align-items:center;margin-left:calc(var(--spacing-md) * -1)}.ListBox_itemEnd_o6zHrW>*:not(button):not(:has(button)){min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ListBox_item_8cmHfh [data-show=item-hover],.ListBox_item_8cmHfh [data-show=item-selected],.ListBox_item_8cmHfh [data-show=item-both]{opacity:0;transition:opacity var(--transition-duration-fast) ease;pointer-events:none}.ListBox_item_8cmHfh [data-show=item-rest]{transition:opacity var(--transition-duration-fast) ease}.ListBox_item_8cmHfh[data-hovered] [data-show=item-hover],.ListBox_item_8cmHfh:hover [data-show=item-hover]{opacity:1;pointer-events:auto}.ListBox_item_8cmHfh[data-hovered] [data-show=item-rest],.ListBox_item_8cmHfh:hover [data-show=item-rest]{opacity:0;pointer-events:none}.ListBox_item_8cmHfh[data-selected] [data-show=item-selected]{opacity:1;pointer-events:auto}.ListBox_item_8cmHfh[data-hovered] [data-show=item-both],.ListBox_item_8cmHfh:hover [data-show=item-both],.ListBox_item_8cmHfh[data-selected] [data-show=item-both],.ListBox_item_8cmHfh:focus-within [data-show=item-both],.ListBox_item_8cmHfh[data-open] [data-show=item-both]{opacity:1;pointer-events:auto}.ListBox_menuSeparator_6r56jX{flex-shrink:0;margin-block:calc(var(--reforma-menu-separator-space) - var(--reforma-listbox-gap));border:none;background-color:var(--color-secondary-muted);padding:0;width:100%;height:1px}.ListBox_section_fHSjC3{display:flex;flex-direction:column;gap:var(--reforma-listbox-gap)}.ListBox_section_fHSjC3+.ListBox_section_fHSjC3{margin-top:var(--spacing-md)}.ListBox_sectionHeader_iHoMut{cursor:default;padding-inline:var(--reforma-listbox-item-padding-inline);padding-block:var(--spacing-6) var(--spacing-4);color:var(--color-secondary-muted-text);font-weight:400;font-weight:500;font-size:var(--text-xs);line-height:var(--leading-xs);font-family:Onest,sans-serif;letter-spacing:0}.ListBox_sectionHeader_iHoMut[data-sticky]{position:sticky;top:0;z-index:var(--z-raised);border-radius:calc(var(--radius-sm) * var(--squircle-radius-factor));background-color:var(--color-surface);corner-shape:superellipse(var(--squircle-value))}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const t = "
|
|
1
|
+
const t = "ListBox_list_JpvdtZ", e = "ListBox_scrollableContainer_geIIr1", i = "ListBox_menuList_sQN3eW", o = "ListBox_item_8cmHfh", s = "ListBox_itemLabel_ctFOvE", n = "ListBox_itemDanger_ttnXKb", m = "ListBox_itemStart_2AUJbr", c = "ListBox_itemStacked_Quxi99", a = "ListBox_itemCopy_GCZhjt", r = "ListBox_itemEnd_o6zHrW", _ = "ListBox_itemDescription_SoJbTP", L = "ListBox_itemStartAffix_BjHXOp", x = "ListBox_menuSeparator_6r56jX", l = "ListBox_section_fHSjC3", B = "ListBox_sectionHeader_iHoMut", S = {
|
|
2
2
|
list: t,
|
|
3
3
|
scrollableContainer: e,
|
|
4
4
|
menuList: i,
|
|
@@ -6,31 +6,31 @@ const t = "ListBox_list_Nv3ml2", e = "ListBox_scrollableContainer_aaQIbE", i = "
|
|
|
6
6
|
itemLabel: s,
|
|
7
7
|
itemDanger: n,
|
|
8
8
|
itemStart: m,
|
|
9
|
-
itemStacked:
|
|
10
|
-
itemCopy:
|
|
9
|
+
itemStacked: c,
|
|
10
|
+
itemCopy: a,
|
|
11
11
|
itemEnd: r,
|
|
12
12
|
itemDescription: _,
|
|
13
|
-
itemStartAffix:
|
|
14
|
-
menuSeparator:
|
|
13
|
+
itemStartAffix: L,
|
|
14
|
+
menuSeparator: x,
|
|
15
15
|
section: l,
|
|
16
|
-
sectionHeader:
|
|
16
|
+
sectionHeader: B
|
|
17
17
|
};
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
S as default,
|
|
20
20
|
o as item,
|
|
21
|
-
|
|
21
|
+
a as itemCopy,
|
|
22
22
|
n as itemDanger,
|
|
23
23
|
_ as itemDescription,
|
|
24
24
|
r as itemEnd,
|
|
25
25
|
s as itemLabel,
|
|
26
|
-
|
|
26
|
+
c as itemStacked,
|
|
27
27
|
m as itemStart,
|
|
28
|
-
|
|
28
|
+
L as itemStartAffix,
|
|
29
29
|
t as list,
|
|
30
30
|
i as menuList,
|
|
31
|
-
|
|
31
|
+
x as menuSeparator,
|
|
32
32
|
e as scrollableContainer,
|
|
33
33
|
l as section,
|
|
34
|
-
|
|
34
|
+
B as sectionHeader
|
|
35
35
|
};
|
|
36
36
|
//# sourceMappingURL=ListBox.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useListHoverHighlight.d.ts","sourceRoot":"","sources":["../../src/List/useListHoverHighlight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useListHoverHighlight.d.ts","sourceRoot":"","sources":["../../src/List/useListHoverHighlight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA0BlD,KAAK,UAAU,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;AAUrE;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,OAAO,EAChB,YAAY,GAAE,MAAqB,QA8OtC"}
|
|
@@ -1,92 +1,97 @@
|
|
|
1
|
-
import { useEffect as
|
|
2
|
-
import
|
|
3
|
-
const
|
|
4
|
-
function
|
|
5
|
-
|
|
1
|
+
import { useEffect as X } from "react";
|
|
2
|
+
import F from "./ListBox.module.css.js";
|
|
3
|
+
const k = `.${F.item}`, R = 16, q = 150;
|
|
4
|
+
function D(o) {
|
|
5
|
+
let l = o.parentElement;
|
|
6
|
+
for (; l && l !== document.documentElement; ) {
|
|
7
|
+
const s = getComputedStyle(l).overflowY;
|
|
8
|
+
if (s === "auto" || s === "scroll")
|
|
9
|
+
return l;
|
|
10
|
+
l = l.parentElement;
|
|
11
|
+
}
|
|
12
|
+
return o;
|
|
6
13
|
}
|
|
7
|
-
function H(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
function H(o) {
|
|
15
|
+
return o instanceof HTMLElement ? o : o?.current ?? null;
|
|
16
|
+
}
|
|
17
|
+
function O(o, l, s = k) {
|
|
18
|
+
const Y = o instanceof HTMLElement ? o : null;
|
|
19
|
+
X(() => {
|
|
20
|
+
const t = H(o);
|
|
21
|
+
if (!t || !l)
|
|
12
22
|
return;
|
|
13
|
-
let
|
|
14
|
-
const
|
|
23
|
+
let u = !1, c = !1, m = 0, n = null, g = 0, p = 0, d = !1;
|
|
24
|
+
const v = (e) => {
|
|
15
25
|
if (!(e instanceof Element))
|
|
16
26
|
return null;
|
|
17
|
-
const r = e.closest(
|
|
27
|
+
const r = e.closest(s);
|
|
18
28
|
return !r || !t.contains(r) ? null : r;
|
|
19
|
-
},
|
|
20
|
-
if (!
|
|
29
|
+
}, $ = (e) => e.hasAttribute("data-disabled") || e.hasAttribute("data-selected") || e.hasAttribute("data-highlighted") || e.hasAttribute("data-nested-selected"), E = () => t.querySelector(`${s}[data-focus-visible]`), C = (e, r) => {
|
|
30
|
+
if (!n)
|
|
21
31
|
return !1;
|
|
22
|
-
const
|
|
23
|
-
return e >=
|
|
24
|
-
},
|
|
25
|
-
const r = t.getBoundingClientRect(),
|
|
26
|
-
t.style.setProperty("--reforma-listbox-highlight-top", `${
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
if (!e ||
|
|
31
|
-
|
|
32
|
+
const i = n.getBoundingClientRect();
|
|
33
|
+
return e >= i.left && e <= i.right && r >= i.top - R && r <= i.bottom + R;
|
|
34
|
+
}, M = (e) => {
|
|
35
|
+
const r = t.getBoundingClientRect(), i = e.getBoundingClientRect();
|
|
36
|
+
t.style.setProperty("--reforma-listbox-highlight-top", `${i.top - r.top + t.scrollTop}px`), t.style.setProperty("--reforma-listbox-highlight-left", `${i.left - r.left + t.scrollLeft}px`), t.style.setProperty("--reforma-listbox-highlight-width", `${i.width}px`), t.style.setProperty("--reforma-listbox-highlight-height", `${i.height}px`);
|
|
37
|
+
}, h = () => {
|
|
38
|
+
n = null, t.style.setProperty("--reforma-listbox-highlight-opacity", "0"), t.removeAttribute("data-highlight-ready"), t.removeAttribute("data-highlight-danger");
|
|
39
|
+
}, a = (e) => {
|
|
40
|
+
if (!e || $(e)) {
|
|
41
|
+
h();
|
|
32
42
|
return;
|
|
33
43
|
}
|
|
34
|
-
const r =
|
|
35
|
-
r && t.removeAttribute("data-highlight-ready"),
|
|
36
|
-
|
|
44
|
+
const r = n == null;
|
|
45
|
+
r && t.removeAttribute("data-highlight-ready"), n = e, M(e), t.toggleAttribute("data-highlight-danger", e.classList.contains(F.itemDanger)), t.style.setProperty("--reforma-listbox-highlight-opacity", "1"), r && requestAnimationFrame(() => {
|
|
46
|
+
n && t.setAttribute("data-highlight-ready", "");
|
|
37
47
|
});
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
|
|
48
|
+
}, L = (e, r, i) => {
|
|
49
|
+
u = !1;
|
|
50
|
+
const b = v(e);
|
|
51
|
+
if (b) {
|
|
52
|
+
b !== n && a(b);
|
|
43
53
|
return;
|
|
44
54
|
}
|
|
45
|
-
|
|
46
|
-
}, E = (e) => {
|
|
47
|
-
c = e.clientX, d = e.clientY, u = !0, v(e.target, e.clientX, e.clientY);
|
|
48
|
-
}, L = (e) => {
|
|
49
|
-
c = e.clientX, d = e.clientY, u = !0, v(document.elementFromPoint(e.clientX, e.clientY), e.clientX, e.clientY);
|
|
55
|
+
C(r, i) || h();
|
|
50
56
|
}, P = (e) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
g = e.clientX, p = e.clientY, d = !0, !c && L(e.target, e.clientX, e.clientY);
|
|
58
|
+
}, w = (e) => {
|
|
59
|
+
g = e.clientX, p = e.clientY, d = !0, !c && L(document.elementFromPoint(e.clientX, e.clientY), e.clientX, e.clientY);
|
|
60
|
+
}, x = (e) => {
|
|
61
|
+
if (!(e.relatedTarget instanceof Node && t.contains(e.relatedTarget)) && (d = !1, !n?.hasAttribute("data-open"))) {
|
|
62
|
+
if (u) {
|
|
63
|
+
a(E());
|
|
54
64
|
return;
|
|
55
65
|
}
|
|
56
|
-
|
|
66
|
+
h();
|
|
57
67
|
}
|
|
58
|
-
}, x = () => {
|
|
59
|
-
h = !0, requestAnimationFrame(() => {
|
|
60
|
-
h && l(p());
|
|
61
|
-
});
|
|
62
68
|
}, A = () => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
i && b(i);
|
|
75
|
-
}, w = () => {
|
|
76
|
-
i && t.setAttribute("data-highlight-ready", "");
|
|
77
|
-
}, F = new MutationObserver(() => {
|
|
78
|
-
i && l(i);
|
|
69
|
+
u = !0, requestAnimationFrame(() => {
|
|
70
|
+
u && a(E());
|
|
71
|
+
});
|
|
72
|
+
}, S = () => {
|
|
73
|
+
c = !1, d && a(v(document.elementFromPoint(g, p)));
|
|
74
|
+
}, f = () => {
|
|
75
|
+
window.clearTimeout(m), c || (c = !0, h()), m = window.setTimeout(S, q);
|
|
76
|
+
}, T = new MutationObserver(() => {
|
|
77
|
+
n && a(n);
|
|
79
78
|
});
|
|
80
|
-
|
|
79
|
+
T.observe(t, {
|
|
81
80
|
subtree: !0,
|
|
82
81
|
attributes: !0,
|
|
83
82
|
attributeFilter: ["data-selected", "data-disabled", "data-highlighted", "data-nested-selected"]
|
|
84
|
-
})
|
|
85
|
-
|
|
83
|
+
});
|
|
84
|
+
const y = D(t);
|
|
85
|
+
return t.addEventListener("pointerenter", w), t.addEventListener("pointermove", P), t.addEventListener("pointerleave", x), t.addEventListener("keydown", A), t.addEventListener("scroll", f, {
|
|
86
|
+
passive: !0
|
|
87
|
+
}), y !== t && y.addEventListener("scroll", f, {
|
|
88
|
+
passive: !0
|
|
89
|
+
}), a(t.querySelector(`${s}:hover`)), () => {
|
|
90
|
+
T.disconnect(), window.clearTimeout(m), t.removeEventListener("pointerenter", w), t.removeEventListener("pointermove", P), t.removeEventListener("pointerleave", x), t.removeEventListener("keydown", A), t.removeEventListener("scroll", f), y.removeEventListener("scroll", f), h(), t.style.removeProperty("--reforma-listbox-highlight-top"), t.style.removeProperty("--reforma-listbox-highlight-left"), t.style.removeProperty("--reforma-listbox-highlight-width"), t.style.removeProperty("--reforma-listbox-highlight-height"), t.style.removeProperty("--reforma-listbox-highlight-opacity");
|
|
86
91
|
};
|
|
87
|
-
}, [
|
|
92
|
+
}, [l, s, o, Y]);
|
|
88
93
|
}
|
|
89
94
|
export {
|
|
90
|
-
|
|
95
|
+
O as useListHoverHighlight
|
|
91
96
|
};
|
|
92
97
|
//# sourceMappingURL=useListHoverHighlight.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useListHoverHighlight.js","sources":["../../src/List/useListHoverHighlight.ts"],"sourcesContent":["import { useEffect, type RefObject } from 'react';\n\nimport styles from './ListBox.module.css';\n\nconst DEFAULT_ITEM = `.${ styles.item }`;\n\n/** Keep the plate across the few pixels between rows. Empty space is farther than this. */\nconst ROW_GAP = 16;\n\ntype ListTarget = RefObject<HTMLElement | null> | HTMLElement | null;\n\nfunction resolveList(target: ListTarget): HTMLElement | null {\n if (target instanceof HTMLElement) {\n return target;\n }\n\n return target?.current ?? null;\n}\n\n/**\n * Slides one highlight plate across list/menu rows (hover + keyboard), instead of painting each row.\n */\nexport function useListHoverHighlight(\n list: ListTarget,\n enabled: boolean,\n itemSelector: string = DEFAULT_ITEM\n) {\n const listEl = list instanceof HTMLElement ? list : null;\n\n useEffect(() => {\n const root = resolveList(list);\n\n if (!root || !enabled) {\n return;\n }\n\n let followKeyboard = false;\n let current: HTMLElement | null = null;\n let pointerX = 0;\n let pointerY = 0;\n let hasPointer = false;\n\n const rowFrom = (target: EventTarget | null) => {\n if (!(target instanceof Element)) {\n return null;\n }\n\n const row = target.closest<HTMLElement>(itemSelector);\n\n if (!row || !root.contains(row)) {\n return null;\n }\n\n return row;\n };\n\n const blocked = (row: HTMLElement) => (\n row.hasAttribute('data-disabled')\n || row.hasAttribute('data-selected')\n || row.hasAttribute('data-highlighted')\n || row.hasAttribute('data-nested-selected')\n );\n\n const keyboardRow = () => (\n root.querySelector<HTMLElement>(`${ itemSelector }[data-focus-visible]`)\n );\n\n const besideCurrent = (x: number, y: number) => {\n if (!current) {\n return false;\n }\n\n const box = current.getBoundingClientRect();\n\n return x >= box.left && x <= box.right\n && y >= box.top - ROW_GAP && y <= box.bottom + ROW_GAP;\n };\n\n const setGeometry = (row: HTMLElement) => {\n const listRect = root.getBoundingClientRect();\n const rowRect = row.getBoundingClientRect();\n\n root.style.setProperty('--reforma-listbox-highlight-top', `${ rowRect.top - listRect.top + root.scrollTop }px`);\n root.style.setProperty('--reforma-listbox-highlight-left', `${ rowRect.left - listRect.left + root.scrollLeft }px`);\n root.style.setProperty('--reforma-listbox-highlight-width', `${ rowRect.width }px`);\n root.style.setProperty('--reforma-listbox-highlight-height', `${ rowRect.height }px`);\n };\n\n const hide = () => {\n current = null;\n root.style.setProperty('--reforma-listbox-highlight-opacity', '0');\n root.removeAttribute('data-highlight-ready');\n root.removeAttribute('data-highlight-danger');\n };\n\n const show = (row: HTMLElement | null) => {\n if (!row || blocked(row)) {\n hide();\n\n return;\n }\n\n const appeared = current == null;\n\n if (appeared) {\n root.removeAttribute('data-highlight-ready');\n }\n\n current = row;\n setGeometry(row);\n root.toggleAttribute('data-highlight-danger', row.classList.contains(styles.itemDanger));\n root.style.setProperty('--reforma-listbox-highlight-opacity', '1');\n\n if (appeared) {\n requestAnimationFrame(() => {\n if (current) {\n root.setAttribute('data-highlight-ready', '');\n }\n });\n }\n };\n\n const followPointer = (target: EventTarget | null, x: number, y: number) => {\n followKeyboard = false;\n const row = rowFrom(target);\n\n if (row) {\n if (row !== current) {\n show(row);\n }\n\n return;\n }\n\n if (!besideCurrent(x, y)) {\n hide();\n }\n };\n\n const onPointerMove = (event: PointerEvent) => {\n pointerX = event.clientX;\n pointerY = event.clientY;\n hasPointer = true;\n followPointer(event.target, event.clientX, event.clientY);\n };\n\n const onPointerEnter = (event: PointerEvent) => {\n pointerX = event.clientX;\n pointerY = event.clientY;\n hasPointer = true;\n followPointer(\n document.elementFromPoint(event.clientX, event.clientY),\n event.clientX,\n event.clientY\n );\n };\n\n const onPointerLeave = (event: PointerEvent) => {\n if (event.relatedTarget instanceof Node && root.contains(event.relatedTarget)) {\n return;\n }\n\n hasPointer = false;\n\n if (current?.hasAttribute('data-open')) {\n return;\n }\n\n if (followKeyboard) {\n show(keyboardRow());\n\n return;\n }\n\n hide();\n };\n\n const onKeyDown = () => {\n followKeyboard = true;\n requestAnimationFrame(() => {\n if (followKeyboard) {\n show(keyboardRow());\n }\n });\n };\n\n const onScroll = () => {\n root.removeAttribute('data-highlight-ready');\n\n // Virtualized lists recycle the hovered node; re-hit-test instead of following `current`.\n if (hasPointer) {\n const row = rowFrom(document.elementFromPoint(pointerX, pointerY));\n\n if (row) {\n show(row);\n\n return;\n }\n\n if (!besideCurrent(pointerX, pointerY)) {\n hide();\n\n return;\n }\n }\n\n if (current) {\n setGeometry(current);\n }\n };\n\n const onScrollEnd = () => {\n if (current) {\n root.setAttribute('data-highlight-ready', '');\n }\n };\n\n // Selection lands after pointerup. Re-run show so a blocked row drops the plate.\n const rowState = new MutationObserver(() => {\n if (current) {\n show(current);\n }\n });\n\n rowState.observe(root, {\n subtree: true,\n attributes: true,\n attributeFilter: ['data-selected', 'data-disabled', 'data-highlighted', 'data-nested-selected'],\n });\n\n root.addEventListener('pointerenter', onPointerEnter);\n root.addEventListener('pointermove', onPointerMove);\n root.addEventListener('pointerleave', onPointerLeave);\n root.addEventListener('keydown', onKeyDown);\n root.addEventListener('scroll', onScroll);\n root.addEventListener('scrollend', onScrollEnd);\n\n show(root.querySelector<HTMLElement>(`${ itemSelector }:hover`));\n\n return () => {\n rowState.disconnect();\n root.removeEventListener('pointerenter', onPointerEnter);\n root.removeEventListener('pointermove', onPointerMove);\n root.removeEventListener('pointerleave', onPointerLeave);\n root.removeEventListener('keydown', onKeyDown);\n root.removeEventListener('scroll', onScroll);\n root.removeEventListener('scrollend', onScrollEnd);\n hide();\n root.style.removeProperty('--reforma-listbox-highlight-top');\n root.style.removeProperty('--reforma-listbox-highlight-left');\n root.style.removeProperty('--reforma-listbox-highlight-width');\n root.style.removeProperty('--reforma-listbox-highlight-height');\n root.style.removeProperty('--reforma-listbox-highlight-opacity');\n };\n }, [enabled, itemSelector, list, listEl]);\n}\n"],"names":["DEFAULT_ITEM","styles","ROW_GAP","resolveList","target","useListHoverHighlight","list","enabled","itemSelector","listEl","useEffect","root","followKeyboard","current","pointerX","pointerY","hasPointer","rowFrom","row","blocked","keyboardRow","besideCurrent","x","y","box","setGeometry","listRect","rowRect","hide","show","appeared","followPointer","onPointerMove","event","onPointerEnter","onPointerLeave","onKeyDown","onScroll","onScrollEnd","rowState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useListHoverHighlight.js","sources":["../../src/List/useListHoverHighlight.ts"],"sourcesContent":["import { useEffect, type RefObject } from 'react';\n\nimport styles from './ListBox.module.css';\n\nconst DEFAULT_ITEM = `.${ styles.item }`;\n\n/** Keep the plate across the few pixels between rows. Empty space is farther than this. */\nconst ROW_GAP = 16;\nconst SCROLL_IDLE_MS = 150;\n\nfunction scrollPort(node: HTMLElement): HTMLElement {\n let current = node.parentElement;\n\n while (current && current !== document.documentElement) {\n const overflow = getComputedStyle(current).overflowY;\n\n if (overflow === 'auto' || overflow === 'scroll') {\n return current;\n }\n\n current = current.parentElement;\n }\n\n return node;\n}\n\ntype ListTarget = RefObject<HTMLElement | null> | HTMLElement | null;\n\nfunction resolveList(target: ListTarget): HTMLElement | null {\n if (target instanceof HTMLElement) {\n return target;\n }\n\n return target?.current ?? null;\n}\n\n/**\n * Slides one highlight plate across list/menu rows (hover + keyboard), instead of painting each row.\n */\nexport function useListHoverHighlight(\n list: ListTarget,\n enabled: boolean,\n itemSelector: string = DEFAULT_ITEM\n) {\n const listEl = list instanceof HTMLElement ? list : null;\n\n useEffect(() => {\n const root = resolveList(list);\n\n if (!root || !enabled) {\n return;\n }\n\n let followKeyboard = false;\n let scrolling = false;\n let scrollTimer = 0;\n let current: HTMLElement | null = null;\n let pointerX = 0;\n let pointerY = 0;\n let hasPointer = false;\n\n const rowFrom = (target: EventTarget | null) => {\n if (!(target instanceof Element)) {\n return null;\n }\n\n const row = target.closest<HTMLElement>(itemSelector);\n\n if (!row || !root.contains(row)) {\n return null;\n }\n\n return row;\n };\n\n const blocked = (row: HTMLElement) => (\n row.hasAttribute('data-disabled')\n || row.hasAttribute('data-selected')\n || row.hasAttribute('data-highlighted')\n || row.hasAttribute('data-nested-selected')\n );\n\n const keyboardRow = () => (\n root.querySelector<HTMLElement>(`${ itemSelector }[data-focus-visible]`)\n );\n\n const besideCurrent = (x: number, y: number) => {\n if (!current) {\n return false;\n }\n\n const box = current.getBoundingClientRect();\n\n return x >= box.left && x <= box.right\n && y >= box.top - ROW_GAP && y <= box.bottom + ROW_GAP;\n };\n\n const setGeometry = (row: HTMLElement) => {\n const listRect = root.getBoundingClientRect();\n const rowRect = row.getBoundingClientRect();\n\n root.style.setProperty('--reforma-listbox-highlight-top', `${ rowRect.top - listRect.top + root.scrollTop }px`);\n root.style.setProperty('--reforma-listbox-highlight-left', `${ rowRect.left - listRect.left + root.scrollLeft }px`);\n root.style.setProperty('--reforma-listbox-highlight-width', `${ rowRect.width }px`);\n root.style.setProperty('--reforma-listbox-highlight-height', `${ rowRect.height }px`);\n };\n\n const hide = () => {\n current = null;\n root.style.setProperty('--reforma-listbox-highlight-opacity', '0');\n root.removeAttribute('data-highlight-ready');\n root.removeAttribute('data-highlight-danger');\n };\n\n const show = (row: HTMLElement | null) => {\n if (!row || blocked(row)) {\n hide();\n\n return;\n }\n\n const appeared = current == null;\n\n if (appeared) {\n root.removeAttribute('data-highlight-ready');\n }\n\n current = row;\n setGeometry(row);\n root.toggleAttribute('data-highlight-danger', row.classList.contains(styles.itemDanger));\n root.style.setProperty('--reforma-listbox-highlight-opacity', '1');\n\n if (appeared) {\n requestAnimationFrame(() => {\n if (current) {\n root.setAttribute('data-highlight-ready', '');\n }\n });\n }\n };\n\n const followPointer = (target: EventTarget | null, x: number, y: number) => {\n followKeyboard = false;\n const row = rowFrom(target);\n\n if (row) {\n if (row !== current) {\n show(row);\n }\n\n return;\n }\n\n if (!besideCurrent(x, y)) {\n hide();\n }\n };\n\n const onPointerMove = (event: PointerEvent) => {\n pointerX = event.clientX;\n pointerY = event.clientY;\n hasPointer = true;\n\n if (scrolling) {\n return;\n }\n\n followPointer(event.target, event.clientX, event.clientY);\n };\n\n const onPointerEnter = (event: PointerEvent) => {\n pointerX = event.clientX;\n pointerY = event.clientY;\n hasPointer = true;\n\n if (scrolling) {\n return;\n }\n\n followPointer(\n document.elementFromPoint(event.clientX, event.clientY),\n event.clientX,\n event.clientY\n );\n };\n\n const onPointerLeave = (event: PointerEvent) => {\n if (event.relatedTarget instanceof Node && root.contains(event.relatedTarget)) {\n return;\n }\n\n hasPointer = false;\n\n if (current?.hasAttribute('data-open')) {\n return;\n }\n\n if (followKeyboard) {\n show(keyboardRow());\n\n return;\n }\n\n hide();\n };\n\n const onKeyDown = () => {\n followKeyboard = true;\n requestAnimationFrame(() => {\n if (followKeyboard) {\n show(keyboardRow());\n }\n });\n };\n\n const finishScroll = () => {\n scrolling = false;\n\n if (!hasPointer) {\n return;\n }\n\n show(rowFrom(document.elementFromPoint(pointerX, pointerY)));\n };\n\n const onScroll = () => {\n window.clearTimeout(scrollTimer);\n\n if (!scrolling) {\n scrolling = true;\n hide();\n }\n\n scrollTimer = window.setTimeout(finishScroll, SCROLL_IDLE_MS);\n };\n\n // Selection lands after pointerup. Re-run show so a blocked row drops the plate.\n const rowState = new MutationObserver(() => {\n if (current) {\n show(current);\n }\n });\n\n rowState.observe(root, {\n subtree: true,\n attributes: true,\n attributeFilter: ['data-selected', 'data-disabled', 'data-highlighted', 'data-nested-selected'],\n });\n\n const port = scrollPort(root);\n\n root.addEventListener('pointerenter', onPointerEnter);\n root.addEventListener('pointermove', onPointerMove);\n root.addEventListener('pointerleave', onPointerLeave);\n root.addEventListener('keydown', onKeyDown);\n root.addEventListener('scroll', onScroll, { passive: true });\n\n if (port !== root) {\n port.addEventListener('scroll', onScroll, { passive: true });\n }\n\n show(root.querySelector<HTMLElement>(`${ itemSelector }:hover`));\n\n return () => {\n rowState.disconnect();\n window.clearTimeout(scrollTimer);\n root.removeEventListener('pointerenter', onPointerEnter);\n root.removeEventListener('pointermove', onPointerMove);\n root.removeEventListener('pointerleave', onPointerLeave);\n root.removeEventListener('keydown', onKeyDown);\n root.removeEventListener('scroll', onScroll);\n port.removeEventListener('scroll', onScroll);\n hide();\n root.style.removeProperty('--reforma-listbox-highlight-top');\n root.style.removeProperty('--reforma-listbox-highlight-left');\n root.style.removeProperty('--reforma-listbox-highlight-width');\n root.style.removeProperty('--reforma-listbox-highlight-height');\n root.style.removeProperty('--reforma-listbox-highlight-opacity');\n };\n }, [enabled, itemSelector, list, listEl]);\n}\n"],"names":["DEFAULT_ITEM","styles","ROW_GAP","SCROLL_IDLE_MS","scrollPort","node","current","overflow","resolveList","target","useListHoverHighlight","list","enabled","itemSelector","listEl","useEffect","root","followKeyboard","scrolling","scrollTimer","pointerX","pointerY","hasPointer","rowFrom","row","blocked","keyboardRow","besideCurrent","x","y","box","setGeometry","listRect","rowRect","hide","show","appeared","followPointer","onPointerMove","event","onPointerEnter","onPointerLeave","onKeyDown","finishScroll","onScroll","rowState","port"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.
|
|
1
|
+
@layer components{.Loader_root_aWwNUZ{--loader-size: 1em;display:flex;flex-shrink:0;justify-content:center;align-items:center;width:var(--loader-size);height:var(--loader-size);color:var(--color-text-secondary)}.Loader_root_aWwNUZ svg{width:100%;height:100%}.Loader_root_aWwNUZ[data-size=xxs]{--loader-size: var(--spacing-12)}.Loader_root_aWwNUZ[data-size=xs]{--loader-size: var(--spacing-16)}.Loader_root_aWwNUZ[data-size=sm]{--loader-size: var(--spacing-20)}.Loader_root_aWwNUZ[data-size=md]{--loader-size: var(--spacing-24)}.Loader_root_aWwNUZ[data-size=lg]{--loader-size: var(--spacing-28)}.Loader_root_aWwNUZ[data-size=xl]{--loader-size: var(--spacing-32)}.Loader_root_aWwNUZ[data-size=xxl]{--loader-size: var(--spacing-36)}}
|